mcpbeat

Pmstudio Nfr

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.

9k tokens
context cost
the whole folder, loaded on every use
7
files
instructions only
0
copies elsewhere
how many repositories repackaged it
196
stars on the repo
on the repository, not the skill itself

Install

one command, takes just this skill from the repository
npx skills add https://github.com/coco-research/coco --skill pmstudio-nfr

The instruction itself

10 sections, as written by the author

NFR Tracker — Operational Readiness Auditor

Purpose

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.

Process

Step 1: Detect Project Context

Read these files to understand the project:

  • CLAUDE.local.md — project name, type, architecture, folder structure
  • .sync-watch.json — registered documents and watch directories
  • Run ls -R on the project root to discover all files

Determine the product lifecycle stage from context:

  • Ideate/Build — pre-production (DR/IRP not yet required)
  • Production — live product (DR/IRP required)
  • Mixed — some components live, some building (e.g., ProductA production + ProductB ideate)

Step 2: Scan Document Registry

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/.

Step 3: Assess Completeness (Optional Deep Check)

If --deep flag or user requests "thorough check":

For each FOUND document, open it and check for key sections:

  • PRD: Has executive summary, requirements, timeline, risks? Missing sections = partial.
  • DR Plan: Has RTO/RPO targets, scenarios, procedures? Missing = partial.
  • IRP: Has severity matrix, escalation contacts, playbooks? Missing = partial.

Without --deep, existence + freshness is sufficient.

Step 4: Generate Recommendations

Prioritize missing/stale documents:

Priority logic:

  • CRITICAL — Production product missing DR or IRP
  • HIGH — Any required document missing or stale >2x threshold
  • MEDIUM — Recommended document missing or stale >1x threshold
  • LOW — Optional document missing

Each recommendation includes:

  • What to create/update
  • Why it matters
  • The slash command to run

Step 5: Output Report

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.

Modes

  • /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 project

Critical Rules

  • Read-only. This skill never creates or modifies documents. It only reports.
  • Adapt paths. Don't assume standard folder structure. Read CLAUDE.local.md for actual paths.
  • No false positives. Only mark FOUND if the file has real content (>100 bytes). Empty scaffolds don't count.
  • Date accuracy. Use file system modification date, not content parsing, for freshness checks.

How to use it

Copy the folder

Take coco-research/pmstudio-nfr from the repository into ~/.claude/skills for personal use, or into .claude/skills inside a project.

Check the name does not clash

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.