Contributing
Start with the right repo
SPECTER work currently spans two codebases:
| Repo | What belongs there |
|---|---|
| Product repo | Rust backend, frontend app, GitHub issues, CI, and product implementation work |
| This Mintlify docs repo | Public documentation structure, copy, charts, and source-backed explanation pages |
If your change affects product behavior, you will usually need updates in both places.
Start with an issue
Use Contribution Opportunities to review the current GitHub backlog before you start coding.
If no issue matches your work:
- Open or comment on a GitHub issue.
- Describe the exact scope you plan to take.
- Keep the PR focused on one problem or one tightly related set of changes.
Contribution flow
Choose a scoped problem
Pick an existing GitHub issue or open a new one with a clear acceptance target.
Set up the workspace
Follow Development Setup for the product repo and run the docs site locally if your change affects documentation.
Implement and verify
Add tests, run local checks, and avoid mixing unrelated refactors into the same PR.
Update the docs
If behavior changed, update the relevant guide, reference page, and Verification Matrix.
Open the PR
Explain what changed, what you verified, and which issue it resolves.
Quality bar
- No unsafe code. The Rust crates enforce
#![forbid(unsafe_code)]. - Formatting. Run
cargo fmtbefore committing. - Linting. Run
cargo clippy -- -D warnings. - Tests. New behavior needs tests. Bug fixes need regression coverage.
- Documentation. Document only verified behavior. Move aspirational items to Roadmap.
- Small PRs. Prefer reviewable changes over broad cleanup sweeps.
What to verify locally
For product repo changes:
cargo fmt
cargo clippy -- -D warnings
cargo test
For docs repo changes:
mint dev
mint broken-links
If the Mintlify CLI is not installed yet, install it first in your local environment before running the docs checks.
Repo map
| Area | Primary paths | Typical work |
|---|---|---|
| Backend API | specter/specter-api/ | Routes, DTOs, middleware, handlers |
| Protocol core | specter/specter-crypto/, specter/specter-stealth/, specter/specter-scanner/ | Cryptography, discovery, scanning |
| Persistence | specter/specter-registry/ | Announcement storage, scan state, registry backends |
| Name services and IPFS | specter/specter-ens/, specter/specter-suins/, specter/specter-ipfs/ | ENS, SuiNS, meta-address retrieval |
| Yellow integration | specter/specter-yellow/ | Channel-related integration work |
| Frontend | SPECTER-web/src/ | UI, browser key handling, API client, wallet flows |
| Docs | This Mintlify repo | Information architecture, guides, reference pages, diagrams |
Documentation update rules
If you change a feature, update the docs in the same pass.
| Change type | Minimum docs follow-up |
|---|---|
| API route or payload change | Update the affected API page, quickstart/integration guide if needed, and the verification matrix |
| Security or status change | Update Security Boundaries, FAQ, and roadmap/status notes |
| Yellow integration behavior | Update Yellow endpoints and the related use-case page |
| Contributor workflow or repo layout | Update this page and Contribution Opportunities |
Review criteria
Reviewers will look for:
- Correctness
- Security and secret-handling hygiene
- API compatibility
- Test coverage
- Clear docs for behavior changes
Need a place to start?
Go to Contribution Opportunities for the live GitHub issue snapshot and direct links into the open backlog.