Skip to main content

repo-signal

Tests PyPI publish Release Version

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

inspect

publish-checklist

inspect --json


Examples

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:

Usage:

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, and suggest.v1 stable
  • 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 subtests on Python 3.11, 3.12 and 3.14, and from a checkout directory that is not named repo-signal
  • Schema checks in release.sh for all four stable contracts, plus an mqobsidian export contracts section 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 and docs/COMMANDS.md are 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.json configured

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)

Source distribution for repo-signal 1.7.1
File Size Uploaded
repo_signal-1.7.1.tar.gz 125.2 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for repo-signal 1.7.1
File Interpreter ABI Platform
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

Release history Release notifications | RSS feed

This release

1.7.1 This release

2 release files

1.0.0

2 release files

0.2.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page