Skip to main content

Contributing

Start with the right repo

SPECTER work currently spans two codebases:

RepoWhat belongs there
Product repoRust backend, frontend app, GitHub issues, CI, and product implementation work
This Mintlify docs repoPublic 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:

  1. Open or comment on a GitHub issue.
  2. Describe the exact scope you plan to take.
  3. Keep the PR focused on one problem or one tightly related set of changes.

Contribution flow

01

Choose a scoped problem

Pick an existing GitHub issue or open a new one with a clear acceptance target.

02

Set up the workspace

Follow Development Setup for the product repo and run the docs site locally if your change affects documentation.

03

Implement and verify

Add tests, run local checks, and avoid mixing unrelated refactors into the same PR.

04

Update the docs

If behavior changed, update the relevant guide, reference page, and Verification Matrix.

05

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 fmt before 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

AreaPrimary pathsTypical work
Backend APIspecter/specter-api/Routes, DTOs, middleware, handlers
Protocol corespecter/specter-crypto/, specter/specter-stealth/, specter/specter-scanner/Cryptography, discovery, scanning
Persistencespecter/specter-registry/Announcement storage, scan state, registry backends
Name services and IPFSspecter/specter-ens/, specter/specter-suins/, specter/specter-ipfs/ENS, SuiNS, meta-address retrieval
Yellow integrationspecter/specter-yellow/Channel-related integration work
FrontendSPECTER-web/src/UI, browser key handling, API client, wallet flows
DocsThis Mintlify repoInformation architecture, guides, reference pages, diagrams

Documentation update rules

If you change a feature, update the docs in the same pass.

Change typeMinimum docs follow-up
API route or payload changeUpdate the affected API page, quickstart/integration guide if needed, and the verification matrix
Security or status changeUpdate Security Boundaries, FAQ, and roadmap/status notes
Yellow integration behaviorUpdate Yellow endpoints and the related use-case page
Contributor workflow or repo layoutUpdate 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.