kramme-cc-workflow/skills/kramme:siw:product-audit/SKILL.md
(experimental) Product audit of SIW specs and plans before implementation. Evaluates target user clarity, problem/solution fit, user state modeling, critical moments coverage, scope correctness, success criteria quality, and prioritization quality. Infers likely user goals and non-goals when the spec is incomplete. Not for code review or implementation auditing. Supports inline report output with --inline.
npx skillsauth add abildtoft/kramme-cc-workflow kramme:siw:product-auditInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Critique specification documents from a product perspective before implementation begins. This is a spec-only analysis — no codebase code is read or compared.
IMPORTANT: This is a thorough product critique. Do not return early. Do not assume a section is well-designed without reading it carefully. Evaluate whether the spec will actually solve the right problem for the right users. A clean report is suspicious, not reassuring.
/kramme:siw:product-audit [spec-file-path(s) | 'siw'] [--auto] [--inline]
|
v
[Step 1: Resolve Spec Files] -> Parse args or auto-detect from siw/
|
v
[Step 2: Read Specs Fully] -> Read every file, extract product elements
|
v
[Step 3: Check for Previous Audit] -> Parse existing PRODUCT_AUDIT.md
|
v
[Step 4: Launch Product Reviewer Agent] -> Explore agent for product critique
|
v
[Step 5: Classify and Deduplicate Findings] -> Severity, cross-reference issues
|
v
[Step 6: Write Report] -> siw/PRODUCT_AUDIT.md
|
v
[Step 7: Optionally Create SIW Issues] -> Convert findings to issues
|
v
[Step 8: Report Summary] -> Stats and next steps
references/product-reviewer-prompt.md - read during Step 4 for the full product reviewer agent prompt, product dimensions, severity guides, output format, and audit rules.references/product-element-extraction.md - read during Step 2.3 for the full element extraction table.references/issue-creation.md - read during Step 7 for SIW issue prompt, preflight, file creation, overview, and log update details.references/report-summary.md - read during Step 8 for the final summary template.$ARGUMENTS contains the spec file path(s) or keyword.
Extract control flags first:
$ARGUMENTS contains --auto, set AUTO_MODE=true and remove the flag before processing remaining arguments.$ARGUMENTS contains --inline, set INLINE_MODE=true and remove the flag before processing remaining arguments.--auto means:
--inline means:
siw/PRODUCT_AUDIT.mdOPEN_ISSUES_OVERVIEW.md updates, no LOG.md updatesDetection rules:
/ or ends in .md, .txtsiw: Explicitly requests auto-detection$ARGUMENTS as shell-style arguments so quoted paths stay intact.
ls {path}find {path} -maxdepth 2 -type f -name "*.md" 2> /dev/null
spec_files.If no valid files remain after verification:
Error: No valid specification files found at the provided path(s).
Provided: {arguments}
Action: Abort.
siw KeywordAuto-detect spec files from the siw/ directory:
Check if siw/ exists:
ls siw/ 2> /dev/null
Find spec files (exclude workflow files):
siw/*.mdLOG.md, OPEN_ISSUES_OVERVIEW.md, DISCOVERY_BRIEF.md, SPEC_STRENGTHENING_PLAN.md, AUDIT_*.md, PRODUCT_AUDIT.md, SIW_*.md.siw/*.md file as a spec. When the filter excludes every candidate, report the excluded filenames and ask for an explicit spec path instead of silently proceeding.Find supporting specs:
siw/supporting-specs/*.mdsiw/contracts/*.mdCheck for linked external specs:
siw/*.md, siw/supporting-specs/*.md, and siw/contracts/*.md candidates).Use all found spec files by default. Only ask the user to select if there are files that look unrelated to each other (e.g., specs for entirely different features). Do NOT ask when the files are clearly parts of the same specification (main spec + supporting specs + contract specs).
Store files as spec_files.
If auto-detection found no spec files because every top-level siw/*.md candidate was excluded by the workflow-artifact filter, report the excluded filenames and ask the user for explicit spec path(s). Validate provided paths with the explicit-path flow from Step 1.2 and continue when valid. If the user provides no path, then emit the generic error below and abort.
Error: No specification files found.
Expected locations:
- siw/*.md (SIW spec files)
- siw/supporting-specs/*.md (supporting specifications)
- siw/contracts/*.md (contract specifications)
Or provide file path(s) directly:
/kramme:siw:product-audit path/to/spec.md
/kramme:siw:product-audit docs/spec1.md docs/spec2.md
To initialize a workflow with a spec, run /kramme:siw:init
Action: Abort.
Read each spec file completely. Do not skim. Understand the full picture before launching the product audit.
After reading all spec files, look for a ## Work Context section in the spec files:
work_contextRead references/product-element-extraction.md, then identify and extract every listed product element from each spec file. Capture source file, heading hierarchy, and a brief content summary for each element.
Product Audit Scope
Sources:
- {spec_file_1}
- {spec_file_2}
Product elements identified: {count}
Target user defined: {yes/no}
Problem statement found: {yes/no}
Why now documented: {yes/no}
Non-goals documented: {yes/no}
User flows documented: {count}
If work_context.work_type is Prototype or Refactor:
If AUTO_MODE=true, stop here and suggest /kramme:siw:spec-audit instead.
Otherwise:
Use AskUserQuestion:
header: "Work Context: {work_type}"
question: "This spec's Work Context is '{work_type}'. A product audit evaluates user-facing concerns that may not apply. The spec audit (/kramme:siw:spec-audit) may be more useful."
options:
- label: "Skip product audit"
description: "Abort — product audit is not relevant for this work type"
- label: "Proceed anyway"
description: "Run the full product audit regardless"
If "Skip product audit": Stop and suggest /kramme:siw:spec-audit instead.
For all other work types, continue to Step 2.6.
Before checking previous audits, load optional product-loop context:
STRATEGY.md exists, read it and extract target problem, approach, who it is for, key metrics, active tracks, milestones if present, and non-goals.last_updated frontmatter is older than 90 days, mark relevant context as STALE: in the report.docs/pulse-reports/ exists, read the 1-3 most recent reports and extract usage, quality, error, performance, customer-signal, and followup highlights that relate to the audited spec.Store the result as PRODUCT_LOOP_CONTEXT for the reviewer agent and final report.
If siw/PRODUCT_AUDIT.md (or PRODUCT_AUDIT.md in project root) exists:
previous_max_id and note which findings are marked addressed or resolved versus still open.previous_max_id + 1 (see Step 5.3).Read references/product-reviewer-prompt.md, fill in the placeholders, including PRODUCT_LOOP_CONTEXT, and run one product-reviewer pass with that prompt. Use the current host runtime's subagent mechanism when it exposes the kramme:product-reviewer reviewer; otherwise perform the same review inline in the main thread. No relevance validation step is needed because the entire spec set is the audit scope.
Gather all findings from the reviewer agent. Assign final severity using:
| Severity | Criteria | | --- | --- | | Critical | Would lead to building the wrong thing or shipping something users can't use. Missing target user, solution doesn't fit problem, no error recovery, undeliverable scope. | | Major | Risks a poor user experience or significant rework. Missing states, weak success criteria, phasing that delays value, gaps in critical moments. | | Minor | Low-risk product concerns. Missing edge states, suboptimal naming, cosmetic flow issues. |
If multiple dimensions flagged the same issue, merge into one finding and note all affected dimensions.
PROD-NNN IDs. New findings get sequential IDs starting at previous_max_id + 1, ordered by severity (Critical first, then Major, then Minor).PROD-001, PROD-002, etc. in severity order.This keeps IDs stable across re-runs so commits, SIW issues, and external references stay valid.
Only if siw/OPEN_ISSUES_OVERVIEW.md exists:
Read siw/OPEN_ISSUES_OVERVIEW.md and siw/issues/*.md to check if any product findings already have open issues. Mark these findings with a note: Existing issue: {issue-id}. Step 7.3 must skip only annotations that still resolve to an existing issue file instead of creating a duplicate issue.
siw/ directory exists: siw/PRODUCT_AUDIT.mdsiw/ directory: PRODUCT_AUDIT.md in project rootIf INLINE_MODE=true, skip this overwrite step because no report file will be written.
Otherwise, if a previous report exists at the target path:
If AUTO_MODE=true, choose Replace automatically and record the prior report's date so Step 8 can surface that a replacement happened.
Otherwise:
header: "Existing Product Audit"
question: "A previous product audit exists. How should I proceed?"
options:
- label: "Replace"
description: "Overwrite with new audit results"
- label: "Append"
description: "Add new audit as a dated section (preserves history)"
- label: "Abort"
description: "Cancel — keep existing audit"
Use the report format template from assets/product-audit-report-format.md.
If INLINE_MODE=true:
siw/PRODUCT_AUDIT.md or PRODUCT_AUDIT.mdOtherwise, after writing:
Product audit written to: {path}
Skip this step entirely if INLINE_MODE=true. Inline mode means no file writes — that includes issue files, OPEN_ISSUES_OVERVIEW.md, and LOG.md. Proceed to Step 8.
Otherwise, only if ALL of these conditions are met:
siw/OPEN_ISSUES_OVERVIEW.md exists (SIW workflow is active)siw/issues/ exists or can be createdsiw/LOG.md exists or can be createdSynced SIW issue-state contract (keep aligned across SIW issue creators): every SIW issue creation or tracker-visible issue update keeps the issue file, siw/OPEN_ISSUES_OVERVIEW.md, and siw/LOG.md synchronized as one issue-state change; partial write failures must be surfaced instead of accepted silently.
Read references/issue-creation.md and follow its prompt, SIW path preflight, issue-file creation, overview update, report annotation, and log update procedure. Apply its partial-write warning rule if any issue-state file update fails after creation starts.
Read references/report-summary.md and display the populated summary. Include report destination, replacement note when applicable, finding counts, issues created, evaluated dimensions, and suggested next steps.
STOP HERE. Wait for the user's next instruction.
siw/./kramme:siw:product-audit
/kramme:siw:product-audit siw
/kramme:siw:product-audit docs/my-spec.md
/kramme:siw:product-audit --inline
tools
Requires Linear MCP. Implements one Linear issue end to end, selects applicable code-review, convention, and PR-refactor gates, runs them to bounded convergence, verifies, and optionally opens the PR and iterates on CI and review feedback until green. Use when the user wants a single Linear issue taken from implementation through a clean Pull Request. Not for implementation-only work, SIW-tracked issues, stacked PRs, existing PR updates, or post-merge rollout.
development
Reviews PR and local changes for convention drift and overcaution against documented rules and mined peer-file practice. Use for new patterns, dependencies, abstractions, or defensive complexity that departs from established practice; every finding cites evidence. Supports --inline. Not for general code quality (use kramme:pr:code-review) or spec review (use kramme:siw:spec-audit --team).
testing
Charts huge or foggy initiatives into a local `.context` decision map and resolves one typed frontier ticket per session until the work is ready for SIW or another execution workflow. Use when the route to a destination cannot fit in one agent session or parallel workspaces need coordinated planning state. Not for clear specs, ordinary issue decomposition, implementation, or Linear-native tracking.
development
Investigates a question against primary sources and saves one cited Markdown artifact. Use for reading legwork: official docs/API facts, source-code or spec checks, standards, and first-party service behavior before planning or implementation. Not for making product or architecture decisions, implementing code, broad web search, secondary blog summaries, or uncited answers.