oss-signal --format json writes a machine-readable report for automation, dashboards, release gates, and repository inventory scripts.
Generate a report:
oss-signal owner/repo --format json --output oss-signal-report.json
The single-repository JSON schema is published at:
Current example fixture:
Important fields:
| Field | Type | Notes |
|---|---|---|
tool |
string | Always oss-signal. |
version |
string | CLI version that generated the report. |
root |
string | Local path or GitHub repository URL. |
source |
object | local or github source metadata. |
generatedAt |
string | ISO timestamp for the report. |
score |
integer | Maintainer-readiness score from 0 to 100. |
grade |
string | A, B, C, D, or F. |
summary |
object | Total, passed, and failed check counts. |
checks |
array | Full rule results with evidence, rationale, and fix text. |
recommendations |
array | Failed checks sorted by weight. Empty when score is 100. |
Inventory mode has a different top-level shape because it reports several repositories:
oss-signal --inventory docs/examples/inventory-targets.txt --format json --output inventory-report.json
Inventory JSON includes:
count, averageScore, averageGrade, minScore, maxScore, and failedTotal.repositories[] with one summary per target.repositories[].topRecommendations[] with the highest-impact missing checks for each target.Inventory JSON intentionally summarizes each repository instead of embedding every full check result. Use single-repository JSON when a consumer needs rule-level detail.
The JSON output is designed for automation, but oss-signal is still pre-1.0. Treat the current schema as the public contract for 0.6.x. If a future release removes or renames fields, it should document the change in CHANGELOG.md and the release notes.
Stable for 0.6.x:
tool, version, root, source, generatedAt, score, grade, summary, checks, and recommendations.id, label, weight, passed, evidence, why, and fix.id, label, weight, why, and fix.Not stable:
why and fix.