narrate-project — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited narrate-project (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
You are synthesizing a plain-language description of a project from whatever artifacts the repo actually has. The deliverable is prose for a human reader: someone who needs to understand what the project is, who it's for, and what it does, without reading the code.
This skill is the cross-project default in rad-explain. It works on any repo whether or not rad-planner is in use. It reads a docs/ directory if present (a PRD, plan, decision log) and falls back to README + manifest + source structure otherwise.
Both rules are enforced by validators at the end of generation. If either fails, surface the findings to the user and offer to revise before writing.
check-grounding.py validator runs against the output before it's finalized.check-overpromise.py validator runs against the output.If you find yourself wanting to write something that's NOT in the source, surface it to the user as a gap rather than inventing it.
Try these in order. Stop reading once you have enough material for the chosen audience.
| Priority | Source | Why |
|---|---|---|
| 1 | docs/vision.md / docs/architecture.md / docs/planning/current.md / docs/status.md / docs/decisions/*.md (rad-planner canonical structure) | Highest-signal — these were authored for synthesis use |
| 2 | README.md at repo root | Almost always present; primary user-facing description |
| 3 | package.json description field, pyproject.toml description, similar manifests | One-line product summary |
| 4 | AGENTS.md / CLAUDE.md | Operating-manual content; secondary signal |
| 5 | CHANGELOG.md / docs/roadmap.md | What's been built and what's next |
| 6 | Source structure: top-level directories, file names | What the codebase is shaped to do |
| 7 | Source content: imports, exports, public APIs | What the codebase actually exposes |
| 8 | tests/ or __tests__/ directories | What's verified to work |
If a docs/ directory is present (a PRD, plan, decision log), read it for richer, source-grounded coverage; otherwise fall back to README + manifest + source structure.
Adapt the narrative depth, vocabulary, and section emphasis based on the audience.
non-dev (default if not specified)For someone who isn't a developer: a family member, a stakeholder, a friend, a marketing partner.
Sections:
investorFor someone evaluating commercial potential.
Sections:
future-selfFor the project author returning after time away.
Sections:
status.md or recent commits)decisions/ or commit history)new-collaboratorFor someone joining the project who needs to ramp up.
AGENTS.md / CLAUDE.md / CONTRIBUTING.md)Sections:
If --audience was passed, use it. Otherwise ask:
Who is this narrative for?
1. Non-dev / general audience (default)
2. Investor / commercial evaluator
3. Future-self / working note
4. New collaborator / onboardingIf --output was passed, use it. Otherwise offer:
PROJECT-NARRATIVE.md at repo root (temporary share)docs/narrative.md (in-repo persistence)In parallel, gather what's available. Always read README.md, package.json / pyproject.toml / Cargo.toml / equivalent manifest. If present, also read the rad-planner canonical doc set, AGENTS.md / CLAUDE.md, CHANGELOG.md, top-level directory structure.
If a docs/ directory is present (a PRD, plan, decision log), read those for richer, source-grounded coverage.
For each section:
Before writing the final output:
# Use /tmp/draft.md as a temporary location
python3 ${CLAUDE_PLUGIN_ROOT}/scripts/check-grounding.py /tmp/draft.md --repo <repo-root> --json
python3 ${CLAUDE_PLUGIN_ROOT}/scripts/check-overpromise.py /tmp/draft.md --jsonIf either validator returns findings:
Single Markdown file. No frontmatter. H2 section headings.
Add a footer:
*Generated by /rad-explain:narrate-project on YYYY-MM-DD. Audience: {audience}.
Grounding: {N claims traced} / {M total}. Overpromise scan: {clean | N findings}.
Sources used: {file list}.*A 5-line summary to the user:
Project narrative written to {path}.
Audience: {audience}
Sources read: {comma-separated list of files}
Validators: grounding {pass|N flagged}, overpromise {pass|N flagged}
Sections written: {list}README.md or vision.md itself uses it.docs/ directory if present; otherwise works from README + manifest + source structure.check-grounding.py and check-overpromise.py) live in this plugin's scripts/ dir; they can be invoked by other plugins too.~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.