pm-audit
Workspace health check - scans Pureinn artifacts against framework conventions, fixes drift, surfaces strategic contradictions
/pm-audit▊When to use
- After
pm-reconcileorpm-reverse-extract, as a verification pass - When a workspace was built with an older Pureinn version
- Before continuing work after a long break, to confirm internal consistency
- After a strategic pivot, to check whether the strategy layer still agrees with itself
What it produces
- Audit Report (
audit/audit_report.md) - findings by severity (P0-P3), scored - Mechanical fixes applied in place - with a diff summary
- AskUserQuestion round - for every judgment call that cannot be auto-fixed
How to invoke
/pm-audit # whole workspace (Tier 1 + Tier 2)
/pm-audit domain # domain/entities.md + domain-model.md only (Tier 1)
/pm-audit rules # business_rules.md + decision_models.md only (Tier 1)
/pm-audit features # feature_list.md + features/cards/ only (Tier 1)
/pm-audit open-questions # domain/open_questions.md only (Tier 1) - ID hygiene, no duplication elsewhere
/pm-audit strategy # strategic layer only (Tier 2 - read-only)
/pm-audit [artifact-name] # any specific artifact named by the user
/pm-audit --agent # autonomous full-workspace audit
Two tiers
Tier 1 - Form (mechanical): Naming, IDs, cross-references, lifecycle validity, schema conformance, metadata completeness, framework-version drift. Tier 1 findings are auto-fixed in place. No judgment calls - pure structural integrity.
Checks include:
-
BR-ID and TBL-ID format compliance
-
Feature Card frontmatter completeness and lifecycle state validity
-
Feature Set naming convention (FS-NN format)
-
Cross-reference resolution (does every BR-ID reference in a Feature Card resolve in
business_rules.md?) -
Framework version drift (artifacts missing fields introduced in newer Pureinn versions)
-
Edge Case Coverage - a card at
2_Spec_Doneor later without the table (pre-5.62.0) is reported and routed to/pm-feature-design [FEAT-ID] --edge-cases, active cards first; the audit never writes the missing ACs itself. For cards that have the table: exactly the 6 canonical rows, no empty/TBD cell from3_Ready_to_Buildon, noN/Awithout a feature-specific reason, and every AC-ID / OQ-ID in it resolves (a dangling one is P0, same as a BR-ID) -
Open questions hygiene - open items have exactly one home,
domain/open_questions.md(Live Register 5). Flags an "Open Questions" section reappearing in PRD/Roadmap/Feature Cards/reconcile reports, duplicated open-item text, or anOQ-/DIV-/BLK-ID that doesn't resolve to a register entry. -
Prototype hygiene - report-and-route, never auto-fixed. Runs on a whole-workspace run and on
/pm-audit features; skipped when there is noprototypes/folder. Four checks, each routed to/pm-prototype:- a prototype folder whose
meta.mdsaysDecision: open, reported with its purpose and its age from theCreateddate (no date - no age, never estimated) - P2 - a
PRT-ID in a production register (feature_list.md, a Feature Cardid/ file name / dependency, business rules, decision models, entities). It must never be there; the only legitimate places are a card'spromoted_from:value and the prototype reference path - P1 - a Feature Card whose
promoted_from:names aPRT-ID or prototype folder that does not exist - P1 - a workbench prototype (
Purpose: workbench) with abuiltfeature that has no phase while others have one - P2. A workbench where no built feature has a phase yet is still diverging and is only noted
The audit never closes a prototype decision, never turns a
PRT-ID into an inventedFEAT-ID, never deletes apromoted_from:line and never assigns a phase - those decisions belong to/pm-prototype. - a prototype folder whose
Tier 2 - Substance (strategic - read-only): Does the strategic layer agree with itself and with the research it was built on? PRD target customer vs. personas, value proposition vs. validated pains, roadmap phases vs. feature phases, pricing vs. willingness to pay signal.
Tier 2 is read-only. It surfaces each contradiction as [CONFLICT] and routes the fix to the authoring skill (pm-prd, pm-product-roadmap, pm-business-model, ...) in delta mode. The skill never edits strategic content - that is a business decision.
| Area argument | Tiers run |
|---|---|
| (none - default) | Both |
domain, rules, features | Tier 1 only |
strategy | Tier 2 only |
Severity levels
| Level | Meaning | Action |
|---|---|---|
| P0 | Blocker - artifact cannot be used safely | Auto-fix where possible; flag where not |
| P1 | Structural error - convention violated | Auto-fix |
| P2 | Drift - valid but inconsistent with current standard | Auto-fix with diff |
| P3 | Warning - low impact, judgment call | AskUserQuestion |
Position vs. related skills
| Skill | What it reads | What it does |
|---|---|---|
pm-reconcile | Codebase vs. legacy docs | Reconciled rebuild |
pm-reverse-extract | Codebase | Feature inventory |
| pm-audit | Pureinn artifacts vs. Pureinn conventions | Drift / error fix |
pm-reconcile and pm-reverse-extract hand off to pm-audit as their verification step. pm-audit does not read the codebase or legacy documents.
Dependencies
Required:
- A Pureinn workspace exists:
pureinn-workspace/[project-slug]/with at leaststate.jsonand some artifacts
If no workspace is found: tell the user to run /pureinn (greenfield) or /pm-reverse-extract / /pm-reconcile (existing product) first.
Related skills: pm-reconcile, pm-reverse-extract, pm-feature-card, pm-features-list, pm-stripe, pm-open-questions, pm-prototype