Zero-Config Derivation
Philosophy
Whenever a value can be derived automatically, derive it.
Only ask the developer for information that genuinely cannot be inferred.
Auto-Derived Values
| Value | Source |
|---|---|
| Repository owner | Git remote origin / GitHub API |
| Repository name | Git remote origin / GitHub API |
| Repository URL | Git remote origin |
| Git provider | Git remote hostname |
| Current commit | git rev-parse HEAD |
| Releases | Git tags matching v* |
| Default branch | git symbolic-ref refs/remotes/origin/HEAD |
| Package name | package.json / Cargo.toml / pyproject.toml |
What You Still Configure
Only configure what cannot be derived:
yaml
# reposell.yml - minimal required
version: 1
product:
name: "My Product" # Required for listing
description: "Description" # Required for listing
category: "developer-tools" # Optional
tags: ["cli", "typescript"] # Optional
pricing:
amount: 5000 # In minor units (cents)
currency: "USD"
model: "one_time" # one_time | subscription | pay_what_you_want
releases:
mode: "all" # "selected" | "all"
selected: [] # Only if mode: "selected"
payment:
provider: "stripe"
listing:
enabled: true
auto_register: true
git:
provider: "github"
signing:
# Keys NEVER in config - use env/keychain
# Private key: ${REPOSELL_SIGNING_KEY}
# Public key: committed to config/reposell/verification-key.pub
ci:
generate_workflows: true
workflows:
- "reposell.yml"
- "reposell-release.yml"
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
What You Never Configure
❌ Never in config:
- Private keys (use env/keychain)
- Stripe secret keys (GitHub Actions secrets)
- Webhook secrets (not used - no webhooks)
- GitHub tokens (CI provides
GITHUB_TOKEN) - Repository metadata (auto-derived)
- Release lists (auto-detected from tags)
Configuration Precedence
- Defaults (zero-config derivation)
- reposell.yml (explicit config)
- Environment variables (overrides)
- CLI flags (highest priority)
Configuration File Discovery
Commands look for config in order:
--configflagREPOSELL_CONFIGenv varreposell.ymlin current directoryreposell.ymlin parent directories.reposell.ymlin home directory
Validation
bash
# Validate configuration
reposell doctor
# Auto-fix safe issues
reposell doctor --fix
1
2
3
4
5
2
3
4
5
Schema
JSON Schema: https://reposell.dev/schemas/reposell-config-v1.json
Validate with:
bash
npx ajv validate -s schema.json -d reposell.yml
1