coco-research/pmstudio-nfr
Detailed completeness audit of all project documents. Use when someone asks "are we ready for production", "audit our docs", "readiness check", "nfr tracker", or "what's missing". Do NOT use for a quick command listing — use /pmstudio instead. Scans every document for section-level completeness, reports staleness, and gives prioritized gap-closure recommendations.
npx skills add https://github.com/coco-research/coco --skill pmstudio-nfr
Meta-command that discovers all project documents, checks existence and freshness, and produces a readiness dashboard with prioritized recommendations for what to create or update next.
Read these files to understand the project:
CLAUDE.local.md — project name, type, architecture, folder structure.sync-watch.json — registered documents and watch directoriesls -R on the project root to discover all filesDetermine the product lifecycle stage from context:
Check for each document type. For each, record: exists (Y/N), path, last modified date, stale (Y/N based on threshold).
Document registry:
| Document Type | Source Skill | File Pattern | Required When | Staleness |
|---------------|-------------|-------------|---------------|-----------|
| PRD | /prd-generator | PRD/*.html, PRD/*.md | Always | 30 days |
| Project Memory | (auto) | CLAUDE.local.md | Always | 7 days |
| Presentation | /project-docs | Presentations/*.html | Recommended | 30 days |
| Architecture Map | /project-docs | Architecture/*.html, *Architecture*.html | If PRD has architecture section | 60 days |
| Stakeholder Directory | /project-docs | Data/Stakeholder*.xlsx, Data/Stakeholder*.md | If >5 stakeholders | 30 days |
| Change Log | /change-log | Data/Change-Log*.md | Recommended | 14 days |
| ARB Presentation | /arb-review | Presentations/ARB-*.html | Before architecture review | 90 days |
| DR Plan | /dr-plan | Operational/DR-Plan*.html | Production | 180 days |
| Incident Response Plan | /irp | Operational/IRP-*.html | Production | 180 days |
| Recovery Procedures | /recovery-plan | Operational/Recovery-*.html | If DR Plan exists | 180 days |
| Verification Report | /project-docs | Verification/*.md | Before milestones | 60 days |
Staleness calculation: Compare file modification date to today. If (today - last_modified) > threshold, mark as STALE.
Search strategy: Use glob patterns first. If the project uses non-standard paths (from CLAUDE.local.md folder structure), adapt the search. Example: Some projects store PRDs in non-default paths like ProductB-Control-Framework/PRD/ not PRD/.
If --deep flag or user requests "thorough check":
For each FOUND document, open it and check for key sections:
Without --deep, existence + freshness is sufficient.
Prioritize missing/stale documents:
Priority logic:
Each recommendation includes:
Console output (default):
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
NFR TRACKER ► READINESS REPORT — {Project Name}
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Lifecycle: {Production / Ideate / Mixed}
Scanned: {timestamp}
| Document | Status | Path | Updated | Stale? |
|-----------------------|---------|-------------------|------------|--------|
| ... | FOUND | ... | YYYY-MM-DD | No |
| ... | MISSING | — | — | — |
| ... | FOUND | ... | YYYY-MM-DD | STALE |
Coverage: N/M ({pct}%) Stale: N Missing: N
Recommendations:
1. [{priority}] {description}
→ Run: /{command}
...
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Markdown file output (with --format md):
Write to Operational/Readiness-Report-{YYYY-MM-DD}.md with the same content plus a header with project metadata.
/nfr-tracker — Full audit, console output/nfr-tracker --format md — Write report to file/nfr-tracker --deep — Check document completeness, not just existence/nfr-tracker --scope {name} — Filter to a specific product/instance within the projectTake coco-research/pmstudio-nfr from the repository into ~/.claude/skills for personal
use, or into .claude/skills inside a project.
The agent identifies a skill by the name field in its header. Two skills with the
same name cannot sit side by side — one of them will be ignored.