{"id":"60700750-57e2-4619-9c85-f422c087be14","shortId":"qrUgUw","kind":"skill","title":"pmstudio-nfr","tagline":"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-lev","description":"# NFR Tracker — Operational Readiness Auditor\n\n## Purpose\n\nMeta-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.\n\n## Process\n\n### Step 1: Detect Project Context\n\nRead these files to understand the project:\n\n1. **`CLAUDE.local.md`** — project name, type, architecture, folder structure\n2. **`.sync-watch.json`** — registered documents and watch directories\n3. Run `ls -R` on the project root to discover all files\n\nDetermine the **product lifecycle stage** from context:\n- **Ideate/Build** — pre-production (DR/IRP not yet required)\n- **Production** — live product (DR/IRP required)\n- **Mixed** — some components live, some building (e.g., ProductA production + ProductB ideate)\n\n### Step 2: Scan Document Registry\n\nCheck for each document type. For each, record: exists (Y/N), path, last modified date, stale (Y/N based on threshold).\n\n**Document registry:**\n\n| Document Type | Source Skill | File Pattern | Required When | Staleness |\n|---------------|-------------|-------------|---------------|-----------|\n| PRD | `/prd-generator` | `PRD/*.html`, `PRD/*.md` | Always | 30 days |\n| Project Memory | (auto) | `CLAUDE.local.md` | Always | 7 days |\n| Presentation | `/project-docs` | `Presentations/*.html` | Recommended | 30 days |\n| Architecture Map | `/project-docs` | `Architecture/*.html`, `*Architecture*.html` | If PRD has architecture section | 60 days |\n| Stakeholder Directory | `/project-docs` | `Data/Stakeholder*.xlsx`, `Data/Stakeholder*.md` | If >5 stakeholders | 30 days |\n| Change Log | `/change-log` | `Data/Change-Log*.md` | Recommended | 14 days |\n| ARB Presentation | `/arb-review` | `Presentations/ARB-*.html` | Before architecture review | 90 days |\n| DR Plan | `/dr-plan` | `Operational/DR-Plan*.html` | Production | 180 days |\n| Incident Response Plan | `/irp` | `Operational/IRP-*.html` | Production | 180 days |\n| Recovery Procedures | `/recovery-plan` | `Operational/Recovery-*.html` | If DR Plan exists | 180 days |\n| Verification Report | `/project-docs` | `Verification/*.md` | Before milestones | 60 days |\n\n**Staleness calculation:** Compare file modification date to today. If `(today - last_modified) > threshold`, mark as STALE.\n\n**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/`.\n\n### Step 3: Assess Completeness (Optional Deep Check)\n\nIf `--deep` flag or user requests \"thorough check\":\n\nFor each FOUND document, open it and check for key sections:\n\n- **PRD**: Has executive summary, requirements, timeline, risks? Missing sections = partial.\n- **DR Plan**: Has RTO/RPO targets, scenarios, procedures? Missing = partial.\n- **IRP**: Has severity matrix, escalation contacts, playbooks? Missing = partial.\n\nWithout `--deep`, existence + freshness is sufficient.\n\n### Step 4: Generate Recommendations\n\nPrioritize missing/stale documents:\n\n**Priority logic:**\n1. **CRITICAL** — Production product missing DR or IRP\n2. **HIGH** — Any required document missing or stale >2x threshold\n3. **MEDIUM** — Recommended document missing or stale >1x threshold\n4. **LOW** — Optional document missing\n\nEach recommendation includes:\n- What to create/update\n- Why it matters\n- The slash command to run\n\n### Step 5: Output Report\n\n**Console output (default):**\n\n```\n━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n NFR TRACKER ► READINESS REPORT — {Project Name}\n━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n\nLifecycle: {Production / Ideate / Mixed}\nScanned: {timestamp}\n\n| Document              | Status  | Path              | Updated    | Stale? |\n|-----------------------|---------|-------------------|------------|--------|\n| ...                   | FOUND   | ...               | YYYY-MM-DD | No     |\n| ...                   | MISSING | —                 | —          | —      |\n| ...                   | FOUND   | ...               | YYYY-MM-DD | STALE  |\n\nCoverage: N/M ({pct}%)    Stale: N    Missing: N\n\nRecommendations:\n1. [{priority}] {description}\n   → Run: /{command}\n...\n━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n```\n\n**Markdown file output (with `--format md`):**\n\nWrite to `Operational/Readiness-Report-{YYYY-MM-DD}.md` with the same content plus a header with project metadata.\n\n## Modes\n\n- `/nfr-tracker` — Full audit, console output\n- `/nfr-tracker --format md` — Write report to file\n- `/nfr-tracker --deep` — Check document completeness, not just existence\n- `/nfr-tracker --scope {name}` — Filter to a specific product/instance within the project\n\n## Critical Rules\n\n1. **Read-only.** This skill never creates or modifies documents. It only reports.\n2. **Adapt paths.** Don't assume standard folder structure. Read CLAUDE.local.md for actual paths.\n3. **No false positives.** Only mark FOUND if the file has real content (>100 bytes). Empty scaffolds don't count.\n4. **Date accuracy.** Use file system modification date, not content parsing, for freshness checks.","tags":["nfr","tracker","coco","rkz91","agent-skills","agents-md","ai-agents","claude-code","codex","cursor","developer-tools","llm-tools"],"capabilities":["skill","source-rkz91","skill-nfr-tracker","topic-agent-skills","topic-agents-md","topic-ai-agents","topic-claude-code","topic-codex","topic-cursor","topic-developer-tools","topic-llm-tools","topic-mcp","topic-pm-tools","topic-product-management","topic-productivity"],"categories":["coco"],"synonyms":[],"warnings":[],"endpointUrl":"https://skills.sh/rkz91/coco/nfr-tracker","protocol":"skill","transport":"skills-sh","auth":{"type":"none","details":{"cli":"npx skills add rkz91/coco","source_repo":"https://github.com/rkz91/coco","install_from":"skills.sh"}},"qualityScore":"0.453","qualityRationale":"deterministic score 0.45 from registry signals: · indexed on github topic:agent-skills · 7 github stars · SKILL.md body (5,162 chars)","verified":false,"liveness":"unknown","lastLivenessCheck":null,"agentReviews":{"count":0,"score_avg":null,"cost_usd_avg":null,"success_rate":null,"latency_p50_ms":null,"narrative_summary":null,"summary_updated_at":null},"enrichmentModel":"deterministic:skill-github:v1","enrichmentVersion":1,"enrichedAt":"2026-05-18T19:14:07.708Z","embedding":null,"createdAt":"2026-05-18T13:21:40.259Z","updatedAt":"2026-05-18T19:14:07.708Z","lastSeenAt":"2026-05-18T19:14:07.708Z","tsv":"'/arb-review':247 '/change-log':239 '/dr-plan':257 '/irp':266 '/nfr-tracker':537,542,549,557 '/pmstudio':40 '/prd':344 '/prd-generator':189 '/project-docs':205,213,227,285 '/recovery-plan':274 '1':84,95,416,507,570 '100':611 '14':243 '180':261,270,281 '1x':441 '2':103,154,424,584 '2x':432 '3':110,348,434,598 '30':195,209,235 '4':408,443,618 '5':233,463 '60':223,290 '7':202 '90':253 'accuraci':620 'actual':596 'adapt':326,585 'alway':194,201 'arb':245 'architectur':100,211,214,216,221,251 'ask':14 'assess':349 'assum':589 'audit':6,20,539 'auditor':53 'auto':199 'base':174 'build':147 'byte':612 'calcul':293 'chang':237 'check':24,63,158,353,361,369,551,631 'claude.local.md':96,200,323,594 'command':37,57,459,511 'compar':294 'complet':5,350,553 'compon':144 'consol':466,540 'contact':397 'content':529,610,627 'context':87,128 'control':342 'count':617 'coverag':499 'creat':78,577 'create/update':453 'critic':417,568 'dashboard':71 'data/change-log':240 'data/stakeholder':228,230 'date':171,297,619,625 'day':196,203,210,224,236,244,254,262,271,282,291 'dd':490,497,524 'deep':352,355,402,550 'default':337,468 'descript':509 'detail':4 'detect':85 'determin':122 'directori':109,226 'discov':59,119 'doc':22 'document':10,44,62,106,156,161,177,179,365,413,428,437,446,481,552,580 'dr':255,278,383,421 'dr/irp':133,140 'e.g':148 'empti':613 'escal':396 'everi':43 'exampl':329 'execut':375 'exist':64,166,280,403,556 'fals':600 'file':90,121,183,295,513,548,607,622 'filter':560 'first':313 'flag':356 'folder':101,324,591 'format':516,543 'found':364,486,493,604 'framework':343 'fresh':66,404,630 'full':538 'generat':409 'glob':311 'header':532 'high':425 'html':191,207,215,217,249,259,268,276 'ideat':152,477 'ideate/build':129 'incid':263 'includ':450 'instead':41 'irp':392,423 'key':371 'last':169,302 'lev':48 'lifecycl':125,475 'like':339 'list':38 'live':138,145 'log':238 'logic':415 'low':444 'ls':112 'map':212 'mark':305,603 'markdown':512 'matrix':395 'matter':456 'md':193,231,241,287,517,525,544 'medium':435 'memori':198 'meta':56 'meta-command':55 'metadata':535 'mileston':289 'miss':30,380,390,399,420,429,438,447,492,504 'missing/stale':412 'mix':142,478 'mm':489,496,523 'mode':536 'modif':296,624 'modifi':170,303,579 'n':503,505 'n/m':500 'name':98,474,559 'never':576 'next':81 'nfr':3,25,49,469 'non':319,336 'non-default':335 'non-standard':318 'open':366 'oper':51 'operational/dr-plan':258 'operational/irp-':267 'operational/readiness-report-':520 'operational/recovery-':275 'option':351,445 'output':464,467,514,541 'pars':628 'partial':382,391,400 'path':168,321,338,483,586,597 'pattern':184,312 'pct':501 'plan':256,265,279,384 'playbook':398 'plus':530 'pmstudio':2 'pmstudio-nfr':1 'posit':601 'prd':188,190,192,219,346,373 'prds':333 'pre':131 'pre-product':130 'present':204,206,246 'presentations/arb-':248 'priorit':73,411 'prioriti':414,508 'procedur':273,389 'process':82 'produc':68 'product':19,124,132,137,139,150,260,269,418,419,476 'product/instance':564 'producta':149 'productb':151,341 'productb-control-framework':340 'project':9,61,86,94,97,116,197,316,331,473,534,567 'purpos':54 'quick':36 'r':113 'read':88,572,593 'read-on':571 'readi':17,23,52,70,471 'real':609 'recommend':74,208,242,410,436,449,506 'record':165 'recoveri':272 'regist':105 'registri':157,178 'report':284,465,472,546,583 'request':359 'requir':136,141,185,377,427 'respons':264 'review':252 'risk':379 'root':117 'rto/rpo':386 'rule':569 'run':111,461,510 'scaffold':614 'scan':42,155,479 'scenario':388 'scope':558 'search':308,328 'section':47,222,372,381 'section-lev':46 'sever':394 'skill':182,575 'skill-nfr-tracker' 'slash':458 'someon':13 'sourc':181 'source-rkz91' 'specif':563 'stage':126 'stakehold':225,234 'stale':172,187,292,307,431,440,485,498,502 'standard':320,590 'status':482 'step':83,153,347,407,462 'store':332 'strategi':309 'structur':102,325,592 'suffici':406 'summari':376 'sync-watch.json':104 'system':623 'target':387 'thorough':360 'threshold':176,304,433,442 'timelin':378 'timestamp':480 'today':299,301 'topic-agent-skills' 'topic-agents-md' 'topic-ai-agents' 'topic-claude-code' 'topic-codex' 'topic-cursor' 'topic-developer-tools' 'topic-llm-tools' 'topic-mcp' 'topic-pm-tools' 'topic-product-management' 'topic-productivity' 'tracker':26,50,470 'type':99,162,180 'understand':92 'updat':80,484 'use':11,33,39,310,317,621 'user':358 'verif':283,286 'watch':108 'within':565 'without':401 'write':518,545 'xlsx':229 'y/n':167,173 'yet':135 'yyyi':488,495,522 'yyyy-mm-dd':487,494,521","prices":[{"id":"7f2e70ad-d85a-44e8-a5fc-28cf9910238d","listingId":"60700750-57e2-4619-9c85-f422c087be14","amountUsd":"0","unit":"free","nativeCurrency":null,"nativeAmount":null,"chain":null,"payTo":null,"paymentMethod":"skill-free","isPrimary":true,"details":{"org":"rkz91","category":"coco","install_from":"skills.sh"},"createdAt":"2026-05-18T13:21:40.259Z"}],"sources":[{"listingId":"60700750-57e2-4619-9c85-f422c087be14","source":"github","sourceId":"rkz91/coco/nfr-tracker","sourceUrl":"https://github.com/rkz91/coco/tree/main/skills/nfr-tracker","isPrimary":false,"firstSeenAt":"2026-05-18T13:21:40.259Z","lastSeenAt":"2026-05-18T19:14:07.708Z"}],"details":{"listingId":"60700750-57e2-4619-9c85-f422c087be14","quickStartSnippet":null,"exampleRequest":null,"exampleResponse":null,"schema":null,"openapiUrl":null,"agentsTxtUrl":null,"citations":[],"useCases":[],"bestFor":[],"notFor":[],"kindDetails":{"org":"rkz91","slug":"nfr-tracker","github":{"repo":"rkz91/coco","stars":7,"topics":["agent-skills","agents-md","ai","ai-agents","claude-code","codex","cursor","developer-tools","llm-tools","mcp","pm-tools","product-management","productivity","prompt-engineering","workflow-automation"],"license":"mit","html_url":"https://github.com/rkz91/coco","pushed_at":"2026-04-26T01:51:27Z","description":"Open-source library of AI superpowers — 59 skills, 34 commands, 10 agents + 24 GSD subagents, 3 system bundles. An entire team, wherever your AI lives. Vendor-neutral across Claude Code, Cursor, Codex, and any AGENTS.md tool.","skill_md_sha":"986916592513a3e5114e5fb4be9fbdbe01c848f1","skill_md_path":"skills/nfr-tracker/SKILL.md","default_branch":"main","skill_tree_url":"https://github.com/rkz91/coco/tree/main/skills/nfr-tracker"},"layout":"multi","source":"github","category":"coco","frontmatter":{"name":"pmstudio-nfr","description":"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."},"skills_sh_url":"https://skills.sh/rkz91/coco/nfr-tracker"},"updatedAt":"2026-05-18T19:14:07.708Z"}}