repo-signal
What problem does this solve?
You have a local repo — maybe a prototype, a side project, or a tool in progress.
It works, but the README is thin, the docs are missing, the version is out of sync,
and you don't know if it's actually ready to publish. repo-signal tells you exactly
what's wrong and what to fix next.
Who is this for? Developers who build small tools and want structured signals for when something is actually ready. Works standalone or as a backend contract for AI agent workflows.
repo-signal turns local repository state into clear analysis reports,
publish-readiness signals, and machine-readable JSON contracts for AI-assisted
development workflows.
MQ stack architecture
repo-signal is part of the MQ stack. It produces repo intelligence and
observations; it does not own durable memory. Whole-stack architecture and
the memory loop are documented in mqobsidian (source of truth):
docs/architecture/mq-stack.md.
Install
Recommended for the MQ stack:
uv tool install repo-signal
Verify the CLI is available:
repo-signal --version
If the uv tool bin directory is not on PATH, run:
uv tool update-shell
pipx install repo-signal remains a supported alternative.
Current local development install:
git clone https://github.com/MCamner/repo-signal.git
cd repo-signal
python3 -m venv .venv
source .venv/bin/activate
pip install -e ".[ai]"
See PyPI publishing guide for the release workflow.
Usage
Use repo-signal from the root of any local Git repository. The normal loop is:
repo-signal analyze # orient around repo type, stack and focus areas
repo-signal inspect # fast status and recommended next commit
repo-signal review-export . # write repo-review.v1 to mqobsidian/reviews
repo-signal doctor # full repo health, docs, release and AI-readiness check
repo-signal publish-checklist . # public release-readiness gate
For automation, prefer JSON outputs such as repo-signal inspect --json,
repo-signal doctor --json, and repo-signal publish-checklist . --format json.
Try this in 60 seconds
# Get a high-level overview
repo-signal analyze
# Fast status report and next commit suggestion
repo-signal inspect
# Machine-readable status for integrations
repo-signal inspect --json
# Full readiness diagnosis
repo-signal doctor
# Check public-readiness signals
repo-signal publish-checklist .
Command Surface
Stable commands:
repo-signal
├── analyze # Front-door orientation
├── inspect # Fast status and next commit
├── inspect --json # Machine-readable inspect.v1 contract
├── doctor # Full readiness diagnosis
├── publish-checklist # Public signal quality gate
├── report # Unified report — inspect + publish-checklist in one
├── report --json # Machine-readable report.v1 contract
├── suggest # Safe patch suggestions — read-only, no mutations
├── suggest --json # Machine-readable suggest.v1 contract
├── repoaware # AI context export
└── demo # Generate example reports
Stable JSON contracts: inspect.v1 · doctor.v1 · report.v1 · suggest.v1
See the Command Reference and Roadmap for full details.
Screenshots
Examples
- Report (text)
- Report (JSON — report.v1)
- Suggest (text)
- Suggest (JSON — suggest.v1)
- Inspect (text)
- Inspect (JSON — inspect.v1)
- Doctor (text)
- Doctor (JSON — doctor.v1)
- Analyze
Generate your own local demo reports:
repo-signal demo --generate
Use with AI agents
repo-signal is designed as a backend contract for AI agent workflows.
All stable commands have JSON output that agent tools can consume safely:
# Check schema before parsing
repo-signal inspect --json . | python3 -c "
import json, sys
d=json.load(sys.stdin)
assert d['schema'] == 'inspect.v1'
print(d['recommended_next_commit'])
"
See Integrations for mqlaunch, mq-agent, mq-mcp, and mq-hal patterns.
Documentation
Live docs: mcamner.github.io/repo-signal
Contracts:
- Inspect Schema —
inspect.v1field reference - Doctor Schema —
doctor.v1field reference - Report Schema —
report.v1field reference - Suggest Schema —
suggest.v1field reference, no-mutation guarantee - Review Export Schema —
repo-review.v1Markdown contract - Memory Observation Schema —
memory-observation.v1producer fields - mqobsidian Boundary — who owns what across both export paths, and how each fails
Usage:
- Command Reference — Detailed CLI usage and flags
- Integrations — How mqlaunch, mq-mcp, mq-hal, and Bridget consume JSON contracts
- RepoAware — High-signal AI context ranking and export
- Semantic Memory — Uploading symbol maps to vector stores
Publishing:
- Packaging — PyPI / CLI tool readiness plan and packaging smoke tests
- PyPI — Real PyPI publishing guide and Trusted Publisher values
- Generated Examples — How examples are generated and verified before release
- Roadmap — Release direction and stability checklist
Roadmap
Current focus is keeping the v1.x contracts stable while improving the quality of repo-aware context for AI tools. Near-term work:
- keep
inspect.v1,doctor.v1,report.v1, andsuggest.v1stable - exclude generated noise such as backup folders from entrypoint detection
- improve symbol extraction for non-Python repos, especially PowerShell-heavy tools
- keep examples and generated reports current for downstream agents
See ROADMAP.md for the full roadmap.
Contributing
Contributions should preserve the stable JSON contracts and keep commands safe for automation. Before opening a PR, run:
pytest
repo-signal doctor . --json
repo-signal publish-checklist . --format json
When changing CLI output, update the matching docs and examples so agent integrations keep a reliable contract.
v1.7.1 status
- 4 stable JSON contracts:
inspect.v1,doctor.v1,report.v1,suggest.v1 - 2 documented export contracts:
repo-review.v1,memory-observation.v1 - Full test suite passes —
388 passed, 219 subtestson Python 3.11, 3.12 and 3.14, and from a checkout directory that is not namedrepo-signal - Schema checks in
release.shfor all four stable contracts, plus anmqobsidian export contractssection covering both export paths - Contract docs:
INSPECT_SCHEMA.md,DOCTOR_SCHEMA.md,REPORT_SCHEMA.md,SUGGEST_SCHEMA.md,REVIEW_EXPORT_SCHEMA.md,MEMORY_OBSERVATION_SCHEMA.md - Generated examples:
examples/report/,examples/suggest/,examples/inspect/,examples/doctor/,examples/review-export/ - No machine-local path reaches an exported artifact — a shape invariant in
repo_signal/redaction.py, not a convention - A scan describes the repository, not the machine: it asks git what belongs to the repo, so gitignored local tool directories cannot reach a generated example. Held by a test that asks git for the ignored set rather than hard-coding it
- The mqobsidian boundary is proven end to end against a temporary vault:
ownership, both export paths, and what each does when the vault is missing,
unwritable or the wrong shape —
docs/MQOBSIDIAN_BOUNDARY.md - The 26 top-level commands are declared once in
repo_signal/commands.py; help, the unknown-command fallback anddocs/COMMANDS.mdare held to it - CLI surface frozen for v1.x
- GitHub Actions green (Tests on 3.11 and 3.12, the renamed-checkout run, Docs consistency, Packaging, Generated examples, Publish checklist)
-
.markdownlint.jsonconfigured
See CHANGELOG.md for full release history.
Author
Mattias Camner
Infrastructure / Platform Architect
Builder of command surfaces, endpoint readiness prototypes, and structured
workflow systems.
License
MIT
Metadata
Release files for repo-signal 1.7.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| repo_signal-1.7.1.tar.gz | 125.2 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| repo_signal-1.7.1-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 227.1 kB
Release files / repo_signal-1.7.1.tar.gz
| Download URL | repo_signal-1.7.1.tar.gz |
|---|---|
| Size | 125.2 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
0358e32ef6c65700cfb9037fdbbf9c987e1519b6c3fa1cbc8cba28408c7c28c9
|
|
BLAKE2b-256 checksum How to use checksums |
2991d65788b25fd55bb0f5ff768f7adc2a18f7797a82a004ff07370e4d5e7aba
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Release files / repo_signal-1.7.1-py3-none-any.whl
| Download URL | repo_signal-1.7.1-py3-none-any.whl |
|---|---|
| Size | 101.9 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
34d1e6e234e1e4fce4e0f2d4db50e7abfac84844a9581d3e614597db4a3df0a1
|
|
BLAKE2b-256 checksum How to use checksums |
40f751b1df61d85b6bbfcd4c13f4af00e40a12b920365932573e7acaa5e57aeb
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|