create-audit · git:20260307.3d067a8 · 2026-03-07 · sha256 25bb02745bdef737

create-audit git:20260307.3d067a8A

Immutable. This exact content is served forever at /api/v1/blob/25bb02745bdef737.

---
name: create-audit
description: Use when running a criteria-based review (health check, security audit, accessibility review, pen test, bug bash, spec compliance). Creates an Audit document with findings and presents them to the user for triage.
---

```
AUDITS DOCUMENT FINDINGS. THEY DON'T FIX THEM.
```

Present findings to the user. Let them decide what to act on.

<HARD-GATE>
Do NOT create iterations from findings. The audit produces a findings report
that the user triages. Only after the user selects findings to act on should
`/create-iteration` be used, and that is a separate skill invocation.
</HARD-GATE>

## Forbidden Actions

<NEVER>
- Do NOT write document files directly. Use `lazyspec create` to create documents and `lazyspec link` to create relationships.
- Do NOT edit a document you haven't read. Always `lazyspec show <id>` or `Read` a file before modifying it.
- Do NOT create iterations from audit findings. Present findings to the user for triage.
- Do NOT fix issues found during the audit. Document them only.
</NEVER>

## CLI Reference

Before using any `lazyspec` command, run `lazyspec help` to see all available
commands, and `lazyspec help <subcommand>` to see the full usage for that
command. Do not assume you know the flags or arguments -- verify with `--help`.

Always pass `--json` when the command supports it. This gives you structured,
parseable output. Only omit `--json` when presenting output directly to the user.

If a `lazyspec` command fails, run `lazyspec help <subcommand>` to check
the correct usage before retrying. Do not guess at fixes or retry the same
command blindly.

# Create Audit

## Workflow Position

Audits sit outside the main pipeline. They feed findings into the pipeline
via user triage.

```d2
create-audit -> findings -> user triage -> create-iteration

create-audit.style.fill: "#4A9EFF"
create-audit.style.font-color: "#FFFFFF"
findings.style.opacity: 0.4
user triage.style.opacity: 0.4
create-iteration.style.opacity: 0.4
```

## Workflow

```d2
Define scope and criteria -> Create audit doc -> Review codebase -> Document findings -> Validate -> Present to user

Present to user -> User triages findings -> Use /create-iteration skill: for selected findings

Present to user.shape: diamond
Use /create-iteration skill.shape: double_circle
```

## Preflight

1. Understand what's being audited (scope) and against what criteria
2. Search for existing audits on the same topic: `lazyspec search "<topic>" --json`
3. If auditing against stories, read them: `lazyspec show <story-id> --json`

## Subagent Dispatch

| Tier | Model | Use for |
|------|-------|---------|
| Light | Haiku | Parsing frontmatter, extracting structured data, simple validation |
| Medium | Sonnet | Codebase exploration, searching for patterns, reading and summarizing documents |
| Heavy | Opus | Implementation, complex reasoning, multi-file changes, review |

| Operation | Agent Type | Tier | Context to provide |
|-----------|-----------|------|-------------------|
| Discover relevant code | Explore | Medium | Audit scope, criteria, file paths |
| Review code against criteria | Explore | Medium | Specific criterion, file paths to check |

## Steps

1. **Define scope and criteria:** Work with the user to establish what is being audited and the criteria to audit against. This could be a checklist, a set of standards, or specific story ACs.

2. **Create the audit:** Run `lazyspec help create` to confirm usage, then: `lazyspec create audit "<title>" --author <name>`

3. **Link to related documents:** If auditing against existing stories or RFCs, run `lazyspec help link` to confirm usage, then: `lazyspec link <audit-path> related-to <target-path>`. Link to every document the audit references.

4. **Review the codebase:** Use Explore subagents to discover and review code against the criteria. Dispatch one subagent per area of the codebase or per criterion, depending on audit scope.

5. **Document findings:** Edit the audit document. Each finding must include:
   - **Severity:** critical, high, medium, low, or info
   - **Location:** file path or component
   - **Description:** what was found
   - **Recommendation:** what should be done

6. **Validate:** Run `lazyspec validate --json` to ensure all links resolve.

7. **Present to user:** Show the complete findings to the user, grouped by severity. Do NOT create iterations. The user decides which findings to act on and when.

## Red Flags

| Red Flag | Reality |
|----------|---------|
| "I'll fix this while I'm in here" | Audits document. They don't fix. |
| "This finding is obvious, I'll skip documenting it" | If it's worth noticing, it's worth recording. |
| "I'll create an iteration for the critical findings" | The user triages findings. Not you. |
| "I don't need to link to the stories I'm auditing" | Link to everything the audit references. Traceability matters. |

## Verification

Before claiming this skill is complete:

- [ ] `lazyspec validate --json` passes
- [ ] Every finding has severity, location, description, recommendation
- [ ] Audit links to relevant stories/RFCs (if applicable)
- [ ] Findings presented to user
- [ ] No iterations created without user direction

## Rules

- Audits document findings, they don't fix them
- Present findings to the user for triage, not automatic iteration creation
- Each finding must have a severity rating (critical, high, medium, low, info)
- Link to stories/RFCs being audited when they exist
- Group findings by severity when presenting to the user