Contributing to SpecMarket
SpecMarket is built with specs. The entire platform — CLI, backend, web frontend — was generated by Ralph Loops running against structured specifications. Contributing follows the same pattern: define what you want to build, validate it, and ship it.
There are four ways to contribute, ordered by impact.
1. Publish Specs
The highest-impact contribution is publishing specs that replace SaaS tools. Every published spec with a solid success rate directly reduces someone’s monthly software bill.
What makes a good spec:
- Replaces a real SaaS product people are paying for
- Has clear, testable success criteria (not vague goals)
- Includes infrastructure requirements so the output runs in production
- Targets an 80%+ success rate across multiple runs
- Honestly describes what percentage of the SaaS it replaces
Quick start:
specmarket init --name my-spec
# Edit the generated files
specmarket validate ./my-spec
specmarket run ./my-spec # Test it locally
specmarket publish ./my-specSee the Publishing Guide for the full 9-step workflow with code examples for every file.
Earning from specs: When users run your spec through managed cloud runs, you earn 30% of the margin. Specs with high success rates and many runs generate ongoing income. The platform tracks creator reputation based on cumulative run quality.
2. Fund and Claim Bounties
Bounties connect demand with supply. If you need a SaaS replacement that doesn’t exist as a spec yet, fund a bounty. If you’re a spec creator looking for high-value targets, claim one.
Funding a bounty:
Browse open bounties at specmarket.dev/bounties or create a new one. Contributions go through Stripe checkout. Multiple people can fund the same bounty — the total grows as more people want the same replacement.
Claiming a bounty:
- Find an open bounty that matches your skills
- Submit a spec that meets the bounty’s requirements
- The community evaluates submissions based on success rate and completeness
- The bounty creator approves a winner
- Funds are distributed to the winning spec creator
Current top bounties are listed on the bounties page. The most requested categories: project management tools, design-to-code workflows, and billing systems.
3. Report Issues and Improve Docs
Reporting bugs:
- For CLI issues: include the command you ran, the error output, and your Node.js version
- For spec issues: include the spec ID, run ID, and which success criteria failed
- For platform issues: include browser, OS, and steps to reproduce
File issues on GitHub. Include the specmarket report <run-id> output when relevant.
Improving documentation:
Documentation lives in apps/web/src/content/docs/ as Markdown files. Every doc page has a lastVerified field — if you find something outdated, update it.
To contribute a doc fix:
git checkout -b docs/fix-description
# Edit the relevant file in apps/web/src/content/docs/
git add apps/web/src/content/docs/your-file.md
git commit -m "docs: fix description of the change"
git push -u origin docs/fix-description
gh pr create --title "docs: fix description" --body "What was wrong and what this fixes"4. Run Specs and Submit Telemetry
Every run with telemetry enabled helps the community. Run reports contribute to:
- Success rate tracking — Helps other users know which specs work
- Cost benchmarking — Real cost data across models and specs
- Stall detection — Identifies specs that need improvement
- Model comparison — Which models work best for which spec types
Enable telemetry:
specmarket config set telemetry trueNo source code is ever transmitted. Only metadata: spec ID, model, tokens, cost, time, status, and success criteria pass/fail. You can delete all your data at any time with specmarket config delete-telemetry.
Development Setup
If you’re contributing to the platform itself (CLI, backend, or web frontend):
Prerequisites:
- Node.js 20+
- pnpm 8+
Clone and install:
git clone https://github.com/specmarket/specmarket.git
cd specmarket
pnpm installProject structure:
specmarket/
├── packages/cli/ # CLI tool (@specmarket/cli)
├── packages/convex/ # Convex backend (@specmarket/convex)
├── packages/shared/ # Shared validators and types (@specmarket/shared)
└── apps/web/ # Astro + React web frontend
Build and test:
# Shared library (build first — CLI and Convex depend on it)
pnpm --filter @specmarket/shared build
pnpm --filter @specmarket/shared test # 17 tests
# CLI
pnpm --filter @specmarket/cli build
pnpm --filter @specmarket/cli test # 20 tests
# Convex backend
pnpm --filter @specmarket/convex typecheck
pnpm --filter @specmarket/convex test # 292 tests
# Web frontend
pnpm --filter @specmarket/web dev # Local dev server
pnpm --filter @specmarket/web build # Production buildTotal: 329 tests across 14 test files. All tests must pass before submitting a PR.
Convex testing notes:
Tests use convex-test with the anyApi proxy for function references. If your mutation schedules follow-up functions, use vi.useFakeTimers() in beforeEach and drain with t.finishAllScheduledFunctions(vi.runAllTimers).
Code of Conduct
- Be helpful. Answer questions. Share what you know.
- Be honest. Don’t fabricate metrics or claim specs replace SaaS features they don’t cover.
- Be respectful. Critique code and specs, not people.
- Don’t spam. If your contribution is primarily self-promotion, it will be removed.
Related
- Publishing Your First Spec — Full creator onboarding guide
- Spec Format Reference — Complete spec.yaml schema
- CLI Command Reference — All 12 commands documented
- Security & Trust — How specs are scanned and sandboxed