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)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})
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.
development
Runs kramme:pr:code-review as a closeout review loop for local or PR branch changes before commit, ship, or final response. Use when the user asks for autoreview, second-model review, or a final code-review pass after non-trivial edits. Not for UX, visual, accessibility, or product review.
development
Guides topic-level understanding verification for a PR, branch, feature, document, spec, design decision, bug fix, or other concrete subject. Use when the user asks to confirm, quiz, drill, teach-and-check, or verify that they understand a topic. Maintains a topic-specific checklist artifact and requires demonstrated understanding before marking the topic complete. Not for ordinary explanations without verification, end-of-session summaries, or code/test correctness checks.
testing
Design a CI/CD pipeline with quality gates, a <10-minute budget, feature-flag lifecycle, and an exit checklist. Use when adding a new CI pipeline, changing gate configuration, or planning a rollout for a new service. Complementary to kramme:pr:fix-ci (which fixes failures in an existing pipeline). Covers gate ordering, secrets storage, branch protection, rollback mechanism, and staged-rollout guardrails — not a rollout-execution runbook.
tools
--- name: kramme:visual:demo-reel description: Capture local demo evidence for observable product behavior: screenshots, before/after image sets, browser reels, terminal recordings, and short GIF/video proof. Use when shipping UI changes, CLI features, or any change where PR reviewers would benefit from visual or behavioral evidence. argument-hint: "[what to capture] [--url <url>|auto] [--tier static|before-after|browser-reel|terminal-recording]" disable-model-invocation: true user-invocable: tr