pm-audit
Automates consistency checks and version migrations for Pureinn project workspaces.
Install
mkdir -p .claude/skills/pm-audit && curl -L -o skill.zip "https://agentskills.codes/api/skills/download/17011" && unzip -o skill.zip -d .claude/skills/pm-audit && rm skill.zipInstalls to .claude/skills/pm-audit
Activation
This is the description your AI agent reads to decide when to run this skill — the better it matches your request, the more reliably it fires.
Health check for an existing Pureinn workspace. Scans the framework's own artifacts - the 4 Live Registers, feature_list, Feature Cards, roadmap, glossary, state.json - against the current Pureinn conventions, finds inconsistencies, drift, and errors, then fixes the mechanical ones and asks about the judgment calls. Detects framework-version drift (artifacts produced by an older Pureinn version) and offers to migrate them. Use when a workspace was built with an older version, after pm-reconcile or pm-reverse-extract, or any time you want to confirm the workspace is internally consistent before continuing. Takes an optional area argument to scope the audit (/pm-audit domain | rules | features), or audits the whole workspace by default. Distinct from pm-reconcile (code vs legacy docs) and pm-reverse-extract (code to inventory) - this checks Pureinn artifacts against Pureinn conventions (Tier 1: form) and cross-checks the strategic layer (PRD, roadmap, personas, market, business model) for semantic consistency, surfacing contradictions read-only and routing each fix to its authoring skill (Tier 2: substance).Key capabilities
- →Scan Pureinn workspace artifacts for inconsistencies
- →Detect framework-version drift in artifacts
- →Fix mechanical inconsistencies in place
- →Surface strategic contradictions for user review
- →Generate an audit report with findings by severity
How it works
The skill scans Pureinn workspace artifacts against current framework conventions, identifies inconsistencies and version drift, automatically fixes mechanical issues, and reports strategic contradictions for user decision.
Inputs & outputs
When to use pm-audit
- →Verifying workspace consistency
- →Fixing framework version drift
- →Auditing product management artifacts
About this skill
PM - Audit (Workspace Health Check)
Agent mode (--agent)
Supports --agent: runs autonomously in a subagent, drafts the artifact from existing inputs, and returns a short summary + coverage note.
- No flag → interactive (default); if inputs are heavy, offer agent mode.
--agent→ obey. First check inputs are complete. Anything missing: do NOT invent it - mark[ASSUMED - what/why]in the output and summary. Never hallucinate to fill a gap.
What this skill does
Scans an existing Pureinn workspace and reports - then fixes - where its own artifacts drifted from the current framework conventions. It is the productized version of a manual consistency pass: ID and naming integrity, cross-reference resolution, structural conformance, lifecycle validity, completeness, and framework-version drift (artifacts from an older Pureinn version that miss newer fields or use old names).
Two tiers, two different jobs:
- Tier 1 - Form. Naming, IDs, cross-refs, lifecycle, schema, metadata parity. Mechanical - auto-fixed in place. This is the classic audit.
- Tier 2 - Strategic consistency (substance). Does the strategic layer still agree with itself and with the research it was built on - PRD Target Customer vs. personas, value prop vs. research pains, roadmap phases vs. feature phases, pricing vs. WTP? This tier is read-only: it never auto-edits strategic content (that is a business decision). It surfaces each contradiction as
[CONFLICT]and routes the fix to the authoring skill (pm-prd,pm-product-roadmap,pm-business-model, ...), which re-runs in delta mode. Run Tier 2 after a research injection or strategic pivot, and before a build commitment or pitch.
Run it when:
- A workspace was built with an older Pureinn version and you want it brought current
- Right after
pm-reconcileorpm-reverse-extract, as a verification pass - Any time before continuing work, to confirm the workspace is internally consistent
Produces:
audit/audit_report.md- findings by severity (P0-P3), scored- Mechanical fixes applied in place (with a diff summary)
- A short AskUserQuestion round for every judgment call
It checks Pureinn artifacts against Pureinn conventions - it does not read the codebase or legacy docs (that is pm-reconcile / pm-reverse-extract).
Position vs. related skills
| Skill | Input → output |
|---|---|
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.
What this skill does NOT do
- Read the codebase or legacy documents (that is reconcile / reverse-extract)
- Change business decisions or rule values - only structure, naming, references, and conformance. Tier 2 may report a strategic contradiction, but it never resolves it - resolving means choosing between two business claims, which belongs to the authoring skill in delta mode.
- Generate new artifacts that do not exist - it audits what is there (a missing artifact is a finding, not something it invents)
Dependencies
- A Pureinn workspace exists:
pureinn-workspace/[project-slug]/with at leaststate.jsonand some artifacts.
If no workspace is found, do not guess. Tell the user to run /pureinn first (greenfield) or /pm-reverse-extract / /pm-reconcile (existing product).
Scope (whole workspace or one area)
pm-audit takes an optional area argument, mirroring pm-reconcile's per-area model:
| Command | Audits |
|---|---|
/pm-audit | Whole workspace (default) - all artifacts |
/pm-audit domain | domain/entities.md + domain/domain-model.md (structure, entity/state naming, ERD ↔ entities consistency) |
/pm-audit rules | domain/business_rules.md + domain/decision_models.md (BR/TBL IDs, rule↔entity refs, decision-table completeness) |
/pm-audit features | features/feature_list.md + features/cards/ (card structure, FS-NN, Section-1 BR-ID refs resolve, lifecycle status) |
/pm-audit open-questions | domain/open_questions.md (ID hygiene, Type↔prefix match, no duplication of open-item text elsewhere in the workspace) |
/pm-audit strategy | Tier 2 only - cross-artifact strategic consistency (PRD ↔ personas ↔ roadmap ↔ market ↔ business model ↔ feature phases). Read-only, routes fixes to authoring skills. |
/pm-audit [other] | any single artifact the user names |
Tier scoping: area scopes (domain, rules, features, open-questions) run Tier 1 only. strategy runs Tier 2 only. The default whole-workspace run does both tiers.
When an area is given, scan and report only that area's artifacts (plus their direct cross-references - e.g. features checks that BR-IDs in cards resolve into business_rules.md, without auditing the rules themselves). When no area is given, audit everything. If the user states a scope in plain language, honour it (per the Adaptive-execution standard).
Step 0: Locate workspace + detect version
Determine the scope first (from the argument or the user's request - default whole workspace). Then find the workspace and inventory the artifacts in scope:
| Artifact | Present? |
|---|---|
| state.json | |
| domain/entities.md, business_rules.md, decision_models.md | |
| features/feature_list.md + features/cards/ | |
| product/PRD_master.md | |
| roadmap, glossary |
Version-drift signals (detect an older-framework workspace). This is the concrete migration checklist - an artifact produced by an older Pureinn version will carry one or more of these; scan for each literally, not just "convention drift" in the abstract:
- Old lifecycle state names (
1_Walkthrough,2_Design,3_Design_Inspection_Passed,4_Build,5_Code_Inspection,6_Promoted_to_Build) - Old hierarchy terms (
Subject Area,Major Feature Set) or bareFS-IDwithoutFS-NN: Name - Missing newer Feature Card fields (
feature_set,estimate) or the## Subtaskssection - Notion cache key
notion.*instead ofnotion_ids.* - Feature Card
prd_refpointing at the old PRD path -prd_ref: /product/PRD.md#...(or the missing-slash variantsproduct/PRD.md#.../ barePRD.md#...). Older versions saved the PRD asPRD.md; the canonical save path is nowproduct/PRD_master.md, so every old card carries a dead reference to a file that no longer exists. Migrate toprd_ref: /product/PRD_master.md#...(preserve the#sectionanchor). Initiative-PRD refs (/initiatives/[slug]/prd.md#bc-...) are a separate valid form - leave them. - A separate MVP-membership field (
mvp: true/false,roadmap_phase:, or an "MVP" column) instead of the single canonicalphaseaxis layer: fullstackinstead of the explicit layer set (frontend,backend,system)- Reconcile-reality words (
Built/In Progress/Backlog) sitting in astatus/Statusfield instead of a canonical lifecycle value
Interaction: Group related questions (2-4 per round) and confirm before moving on. For any A/B/C/D choice, use the AskUserQuestion tool with one option marked (Recommended) - never print options as plain text. Keep open-ended questions free-text (don't fake options). If the user is unsure, propose 3-4 concrete options plus "Other". Surface an assumption the moment you make one; never fabricate to fill a gap. (Full standard: CLAUDE.md.)
Step 1: Scan
Read every artifact in scope (Step 0) and run the checks below - for an area scope, only that area's artifacts and their direct cross-references; for whole-workspace, all of them. Collect findings; do not fix yet.
| Dimension | What is checked |
|---|---|
| Structure | Feature Cards match the canonical template (sections 1-4 + Subtasks; frontmatter: id, title, status, stripe, feature_set, actor, owner, priority, estimate, prd_ref, feature_flag, flag_default). Registers match current format and header. |
| ID & naming | FEAT/BR/TBL/FS IDs well-formed (FEAT-[DOMAIN]-NNN, BR-[DOMAIN]-NNN, TBL-[DOMAIN]-NN, FS-NN) and unique. The naming check is mandatory and must actually run over every feature name - report its result explicitly (even "0 anti-patterns found") so a silent skip is visible. Each name must be <action verb> <result> <object> with a strong verb and an object = a domain entity. Flag every violation: (a) vague/banned verbs Process / Manage / Handle (and similar non-specific verbs); (b) technical objects - the object is an implementation construct not a domain entity (e.g. "...state machine", "...FSM", "...queue", "...flag", "...handler"); (c) the other FDD anti-patterns (bundled multi-op, missing object, CRUD-as-feature, etc.). A naming anti-pattern on an active feature is a P1 finding. Report each as [FEAT-ID] "name" → [which anti-pattern] → suggested rename. |
| Cross-references | Every BR-ID / TBL-ID / entity link in a Feature Card resolves to the register. feature_set matches feature_list. stripe is a real stripe. prd_ref resolves - it must point at product/PRD_master.md (or an /initiatives/[slug]/prd.md for an Initiative PRD); a prd_ref still pointing at /product/PRD.md (or product/PRD.md / bare PRD.md) is a dead reference to the old PRD path and is drift (P1 - JIT design reads this file). No dangling links. |
| Lifecycle | status is one of the canonical states (1_Backlog, 2_Spec_Done, 2b_In_Design, 3_Ready_to_Build, 4_In_Build, 5_In_Review, 6_Shipped) everywhere - frontmatter, feature_list, and Notion use the same single vocabulary. No orphaned or invalid states. 2b_In_Design is valid only for a feature whose layer includes frontend - a pure backend/system feature in 2b_In_Design is drift (P2: it has no UI to design). **Reconcile-reality words |
Content truncated.
When not to use it
- →When the user needs to read the codebase or legacy documents
- →When the user needs to change business decisions or rule values
- →When the user needs to generate new artifacts that do not exist
Prerequisites
Limitations
- →Does not read the codebase or legacy documents
- →Does not change business decisions or rule values
- →Does not generate new artifacts that do not exist
How it compares
This skill provides a specialized health check for Pureinn workspaces, focusing on internal consistency and framework versioning, unlike general code reconciliation or inventory extraction tools.
Compared to similar skills
pm-audit side by side with the closest alternatives in the catalog.
| Skill | Installs | Updated | Safety | Difficulty |
|---|---|---|---|---|
| pm-audit (this skill) | 0 | 1mo | No flags | Intermediate |
| docx | 93 | 5mo | Review | Advanced |
| notion-knowledge-capture | 10 | 9mo | No flags | Intermediate |
| session-handoff | 13 | 2mo | Review | Beginner |
Try saying
Example prompts that trigger this skill in your AI assistant.
You might also like
docx
anthropics
Comprehensive document creation, editing, and analysis with support for tracked changes, comments, formatting preservation, and text extraction. When Claude needs to work with professional documents (.docx files) for: (1) Creating new documents, (2) Modifying or editing content, (3) Working with tracked changes, (4) Adding comments, or any other document tasks
notion-knowledge-capture
makenotion
Transforms conversations and discussions into structured documentation pages in Notion. Captures insights, decisions, and knowledge from chat context, formats appropriately, and saves to wikis or databases with proper organization and linking for easy discovery.
session-handoff
davila7
Creates comprehensive handoff documents for seamless AI agent session transfers. Triggered when: (1) user requests handoff/memory/context save, (2) context window approaches capacity, (3) major task milestone completed, (4) work session ending, (5) user says 'save state', 'create handoff', 'I need to pause', 'context is getting full', (6) resuming work with 'load handoff', 'resume from', 'continue where we left off'. Proactively suggests handoffs after substantial work (multiple file edits, complex debugging, architecture decisions). Solves long-running agent context exhaustion by enabling fresh agents to continue with zero ambiguity.
feishu-doc
openclaw
Feishu document read/write operations. Activate when user mentions Feishu docs, cloud docs, or docx links.
spec-to-backlog
atlassian
Automatically convert Confluence specification documents into structured Jira backlogs with Epics and implementation tickets. When Claude needs to: (1) Create Jira tickets from a Confluence page, (2) Generate a backlog from a specification, (3) Break down a spec into implementation tasks, or (4) Convert requirements into Jira issues. Handles reading Confluence pages, analyzing specifications, creating Epics with proper structure, and generating detailed implementation tickets linked to the Epic.
marker
benchflow-ai
Convert PDF documents to Markdown using marker_single. Use when Claude needs to extract text content from PDFs while preserving LaTeX formulas, equations, and document structure. Ideal for academic papers and technical documents containing mathematical notation.