Use when presenting audit discrepancies to user for decision (HITL). For each discrepancy show file path, diff (template vs actual), and ask user what to do - [1] apply template, [2] update template (PR), [3] ignore, or [4] custom instruction. Records decisions for remediation phase.
This skill inherits all available tools. When active, it can use any tool Claude has access to.
Purpose: Present audit discrepancies to user and capture decisions for each finding (HITL).
Use when: Investigation phase has completed and you have audit discrepancies that need user decisions before remediation.
Critical: This is a HITL skill - EVERY discrepancy requires a user decision. NO auto-fixes.
Present Summary
Sort Discrepancies
For Each Discrepancy (Loop)
| Aspect | Template | Actual |
|---|---|---|
| field | expected | found |
Present Decision Options
[1] Apply template - Fix file to match template
[2] Update template - Template is wrong, create PR to update it
[3] Ignore - Accept this deviation
[4] Custom - Provide specific instruction
Capture User Decision
Record All Decisions
From /skill audit-investigation:
{
discrepancies: [
{
id: string, // Unique identifier
file: string, // Absolute path
line: number, // Line number
field: string, // Config field name
expected: string, // Template value
actual: string, // Current value
severity: "critical" | "warning" | "info",
agent: string, // Config agent that found it
template_source: string // Path to template file
}
],
summary: {
files_audited: number,
total_discrepancies: number,
by_severity: {
critical: number,
warning: number,
info: number
}
}
}
{
decisions: [
{
discrepancy_id: string,
action: "apply" | "update_template" | "ignore" | "custom",
custom_instruction?: string, // Only if action === "custom"
discrepancy: { // Copy of original discrepancy
file: string,
line: number,
field: string,
expected: string,
actual: string,
severity: string,
agent: string,
template_source: string
}
}
],
summary: {
total_discrepancies: number,
apply_count: number,
update_template_count: number,
ignore_count: number,
custom_count: number
}
}
## Audit Results Summary
- Files audited: {files_audited}
- Total discrepancies: {total_discrepancies}
- Critical: {critical_count}
- Warning: {warning_count}
- Info: {info_count}
I will now walk through each discrepancy for your decision.
---
### Discrepancy {n}/{total} [{severity}]
**File:** `{file}`
**Line:** {line}
**Field:** `{field}`
**Agent:** {agent}
**Difference:**
| Aspect | Template | Actual |
|--------|----------|--------|
| {field} | {expected} | {actual} |
**Template source:** `{template_source}`
**What should I do?**
1. Apply template - Fix file to match template
2. Update template - Template is wrong, create PR to update it
3. Ignore - Accept this deviation
4. Custom - Provide specific instruction
Your choice (1-4):
## Resolution Summary
Decisions captured for {total_discrepancies} discrepancies:
- Apply template: {apply_count}
- Update template: {update_template_count}
- Ignore: {ignore_count}
- Custom: {custom_count}
Proceeding to remediation phase.
Input:
{
"discrepancies": [
{
"id": "disc-001",
"file": "/path/to/eslint.config.js",
"line": 23,
"field": "rules.no-console",
"expected": "error",
"actual": "warn",
"severity": "warning",
"agent": "eslint-agent",
"template_source": "plugins/metasaver-core/skills/config/eslint/templates/base.js"
}
],
"summary": {
"files_audited": 1,
"total_discrepancies": 1,
"by_severity": {
"critical": 0,
"warning": 1,
"info": 0
}
}
}
Presentation:
## Audit Results Summary
- Files audited: 1
- Total discrepancies: 1
- Critical: 0
- Warning: 1
- Info: 0
I will now walk through each discrepancy for your decision.
---
### Discrepancy 1/1 [WARNING]
**File:** `/path/to/eslint.config.js`
**Line:** 23
**Field:** `rules.no-console`
**Agent:** eslint-agent
**Difference:**
| Aspect | Template | Actual |
|--------|----------|--------|
| rules.no-console | error | warn |
**Template source:** `plugins/metasaver-core/skills/config/eslint/templates/base.js`
**What should I do?**
1. Apply template - Fix file to match template
2. Update template - Template is wrong, create PR to update it
3. Ignore - Accept this deviation
4. Custom - Provide specific instruction
Your choice (1-4):
User response: 1
Output:
{
"decisions": [
{
"discrepancy_id": "disc-001",
"action": "apply",
"discrepancy": {
"file": "/path/to/eslint.config.js",
"line": 23,
"field": "rules.no-console",
"expected": "error",
"actual": "warn",
"severity": "warning",
"agent": "eslint-agent",
"template_source": "plugins/metasaver-core/skills/config/eslint/templates/base.js"
}
}
],
"summary": {
"total_discrepancies": 1,
"apply_count": 1,
"update_template_count": 0,
"ignore_count": 0,
"custom_count": 0
}
}
| Scenario | Behavior |
|---|---|
| Zero discrepancies | Skip this phase, proceed to report |
| User enters invalid choice | Re-prompt with error message |
| User enters [4] without instruction | Prompt for instruction text |
| Same file multiple discrepancies | Present each separately, allow different decisions |
| Critical severity | Highlight in presentation, but still user decides |
Inputs from: /skill audit-investigation
Outputs to: /skill audit-remediation, /skill template-update
Phase order: