kramme-cc-workflow/skills/kramme:siw:resolve-audit/SKILL.md
Resolve audit findings one-by-one with executive summaries, alternatives, recommendation, and SIW issue creation
npx skillsauth add abildtoft/kramme-cc-workflow kramme:siw:resolve-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.
Turn an audit report into decision-ready SIW issues by walking findings one at a time with clear options and a recommended path.
Flag: --auto — Skip the per-finding AskUserQuestion step and automatically choose the best resolution option for each finding based on spec alignment, maintenance cost, delivery risk, and follow-up effort. If multiple audit reports exist and you want to stay scoped to one of them, pass that report path explicitly.
This command triages audit findings and creates planning issues.
Implementation stays separate and should happen later via /kramme:siw:issue-implement.
One finding at a time, every time. Each finding completes its full cycle — executive summary → alternatives → recommendation → resolution → SIW issue — before the next finding is presented. Never batch, group, summarize, or preview multiple findings in a single message during Steps 4–6.
Default mode: the per-finding AskUserQuestion (Step 4.4) is mandatory. STOP after asking and wait for the user's response before creating the issue or advancing.
--auto mode: do not ask the user to choose. Select the strongest option, create the issue, continue.
For every finding, follow this structure:
--auto)/kramme:siw:resolve-audit [audit-report-path] [finding-id(s)] [--auto]
↓
[Locate and read audit report]
↓
[Extract actionable findings: DIV-*, EXT-*, SPEC-*, PROD-* (plus legacy DISC-*/MISS-*)]
↓
[Optionally filter to user-selected finding IDs; skip findings already linked to a G-* issue]
↓
[Process one finding at a time]
↓
[Create SIW issue for chosen option]
↓
[Repeat until all selected findings are handled]
↓
[Report summary + next implement issue]
$ARGUMENTS first:
--auto as an optional control flag, not a path or finding idDIV-*, EXT-*, DISC-*, MISS-*, SPEC-*, and PROD-* tokens are finding filterssiw/AUDIT_IMPLEMENTATION_REPORT.mdsiw/AUDIT_SPEC_REPORT.mdsiw/PRODUCT_AUDIT.mdAUDIT_IMPLEMENTATION_REPORT.md (project root)AUDIT_SPEC_REPORT.md (project root)PRODUCT_AUDIT.md (project root)--auto, ask which to resolve before continuing. Build the options list from the reports that were actually found (omit unavailable ones); include "All" only when two or more were found:header: "Choose Audit Type"
question: "Multiple audit reports were found. Which findings should I resolve?"
options:
- label: "Implementation audit (Recommended when available)"
description: "Resolve DIV-*/EXT-* findings from AUDIT_IMPLEMENTATION_REPORT.md (also supports legacy DISC-*/MISS-*)"
- label: "Spec quality audit"
description: "Resolve SPEC-* findings from AUDIT_SPEC_REPORT.md"
- label: "Product audit"
description: "Resolve PROD-* findings from PRODUCT_AUDIT.md"
- label: "All"
description: "Resolve findings from every available report in one run"
- With `--auto`, resolve every available report in one run, in this order: implementation findings, spec findings, product findings.
5. If only one report exists, use it automatically.
6. If no report exists, stop and instruct the user to run /kramme:siw:implementation-audit, /kramme:siw:spec-audit, or /kramme:siw:product-audit first.
7. If a selected report contains multiple appended top-level report blocks, isolate the last block only and treat it as the active audit run. Ignore earlier appended runs.
Extract actionable findings from the active audit run headings:
### DIV-NNN: ...### EXT-NNN: ...### DISC-NNN: ... (legacy)### MISS-NNN: ... (legacy)### SPEC-NNN: ...### PROD-NNN: ...For each finding, collect:
AUDIT_IMPLEMENTATION_REPORT.md, AUDIT_SPEC_REPORT.md, or PRODUCT_AUDIT.md)Ignore:
**Status:** [Auto-fixed] (already resolved by /kramme:siw:spec-audit:auto-fix)**Status:** [Applied directly] (already resolved by /kramme:siw:spec-audit --apply)If the parsed arguments include finding ids (example: DIV-002 EXT-001 SPEC-003), process only those. Otherwise, process all actionable findings in severity order:
Severity Note says from CriticalSeverity Note says from MajorSeverity-inheritance rule (referenced by issue templates): map a SPEC/PROD finding's effective priority from its Severity Note — from Critical → High, from Major → Medium, otherwise the finding's own severity.
Standard handled-finding skip rule. Before creating an issue for a finding, skip it if any of these are true:
Existing issue: annotation that references a G-* / ISSUE-G-* issue and that issue resolves to an existing file under siw/issues/ (for example, G-012 resolves to siw/issues/ISSUE-G-012*.md).**Status:** [Auto-fixed].**Status:** [Applied directly].siw/issues/ISSUE-G-*-{finding-id}-*.md exists.Drop skipped findings from the queue and report each skip with the matched verified issue file, status marker, or issue file in the Step 7 summary under "Skipped - already handled". If an Existing issue: annotation points to no file on disk, treat it as stale metadata, keep the finding in the queue, and mention the stale annotation in the summary. This keeps re-runs idempotent across resolve-audit, spec-audit apply, and auto-fix without suppressing unresolved findings.
Unknown finding ids. For each DIV-*/EXT-*/SPEC-*/PROD-*/legacy id passed in $ARGUMENTS that does not appear in the active report, list it in the Step 7 summary under "Skipped — not in report". If none of the requested ids match any finding, stop before Step 4 with a clear error naming the missing ids and the report path.
Detect the finding type from its ID prefix and use the matching Step 4.1–4.3 style below. Step 4.4 (resolution selection) is shared by all finding types.
Legacy DISC-* and MISS-* findings use this same flow.
Provide 2-3 concrete options. Include at least:
For each option include:
State a clear recommendation and justify it with:
Provide 2-3 concrete options for revising the spec. Include at least:
For each option include:
State a clear recommendation and justify it with:
Provide 2-3 concrete options. Include at least:
For each option include:
State a clear recommendation and justify it with:
Without --auto, use AskUserQuestion to choose an option before creating an issue:
header: "Choose Resolution"
question: "{finding_id}: Which option should become the SIW issue?"
options:
- label: "Option B (Recommended)"
description: "{one-line why}"
- label: "Option A"
description: "{one-line tradeoff}"
- label: "Option C"
description: "{one-line tradeoff}"
Send this AskUserQuestion as a standalone message immediately after Step 4.3 (recommendation), with no additional surrounding content. STOP and wait for the user's response before doing anything else (see Hard Constraints).
If the user asks to modify options, refine and re-ask before creating the issue. Once they pick, proceed to Step 5 for this finding only.
With --auto:
Selected resolution: Option X — {one-line why} immediately after the recommendationPrerequisites:
siw/OPEN_ISSUES_OVERVIEW.md exists. If missing, stop with: "SIW workflow not initialized. Run /kramme:siw:init before resolving audit findings." Do not create issues without it.siw/issues/ exists (create if missing)siw/LOG.md exists (create minimal file with a ## Current Progress section if missing)Synced 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.
Issue creation:
Re-check the standard handled-finding skip rule for this finding. If it now matches, do not create an issue; report the matched artifact in the completion message and Step 7 summary.
Determine the next G- issue number: parse siw/OPEN_ISSUES_OVERVIEW.md for the highest G- number, compute candidate = highest + 1 (padded to 3 digits), then verify no on-disk collision by globbing siw/issues/ISSUE-G-{candidate}-*.md. If any file matches, the tracker is out of sync with siw/issues/; increment the candidate and re-check until no file matches, then warn that the tracker may need /kramme:siw:issue-reindex.
Create file:
siw/issues/ISSUE-G-{NNN}-resolve-{finding-id}-{slug}.mdUse the matching template based on finding type (read the template file and substitute placeholders):
assets/issue-div-ext.md.templateassets/issue-spec.md.templateassets/issue-prod.md.templateSeverity Note, copy it verbatim into the issue body and apply the severity-inheritance rule from Step 3 to set Priority.Mode field. Default AUTO. Most resolutions an autonomous agent can implement and verify are AUTO. Set HITL — <one-line reason> only when the chosen option carries a concrete human-input requirement: an unsettled architectural/product decision, design review, a judgment call, manual testing that can't be automated, or external-system access. When unclear, choose AUTO. (A finding's severity does not by itself make it HITL.)Add row to siw/OPEN_ISSUES_OVERVIEW.md with status READY.
For a brand-new modern section, use the 7-column modern schema including the Mode column; the Mode cell is AUTO or HITL (the reason lives in the issue body, not the table):
**Parallelization:** {Safe to parallelize | Must be sequential | Needs coordination | Mixed — see issue files}
| G-{NNN} | {Title} | READY | {Size} | {Priority} | {AUTO | HITL} | Audit Report |
When a section already exists, match its column count exactly (legacy 5-col / pre-Mode 6-col / modern 7-col) and preserve it in place — do not migrate layouts or add a Mode column to a section that lacks one.
If ## General already has a section-level **Parallelization:** line, treat it as a roll-up summary for the whole section rather than a per-issue mirror.
Recompute it from all real G-* issue files after adding the new issue: if every issue shares the same section-level category/gating note, keep that shared summary; otherwise set it to Mixed — see issue files for exact guidance.
If the General section is still in its empty placeholder state (_None_ row / no real issues yet), replace the default summary from siw:init with the first real issue's category.
If an existing legacy General section has no **Parallelization:** line, preserve that absence instead of inserting one.
Annotate the source report entry for this finding with the created issue:
Existing issue: G-{NNN}
Add the annotation in the finding block after any status or severity metadata. If the active source is inline content or the report cannot be edited, do not fail the run; include a warning in the final summary naming the finding and created issue.
Append a one-line entry to siw/LOG.md under the ## Current Progress section (in ### Last Completed). Include finding id, selected option, and created issue id. Example:
- {YYYY-MM-DD} G-{NNN}: resolved {finding_id} via Option {X} ({one-line option name})
If any issue file, overview, source-report annotation, or log write fails after issue creation starts, surface the partial state in the completion summary and offer rollback guidance instead of reporting the issue as cleanly created.
After creating the SIW issue for one finding:
--auto, continue immediately after the completion message without waiting for user inputNEVER process the next finding without completing the full cycle (Steps 4 through 5) for the current one.
STOP only when all selected findings are handled or the user asks to stop.
At the end, report:
G-xxx list)Existing issue, status marker, or issue file)This final summary is allowed only after all selected findings complete the full Steps 4-5 cycle.
Then stop and wait for user instruction.
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.