From auto-context
Review pending convention candidates. Approve, reject, or edit each candidate before it reaches CLAUDE.md.
How this skill is triggered — by the user, by Claude, or both
Slash command
/auto-context:ac-reviewThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Review candidates that have been promoted to `review_pending` status. No convention reaches CLAUDE.md without explicit user approval through this skill.
Review candidates that have been promoted to review_pending status. No convention reaches CLAUDE.md without explicit user approval through this skill.
Important rules:
jq for all JSON operations (atomic writes with tmp+mv pattern).jq -nc for JSONL changelog entries.Read .auto-context/candidates.json in the project root.
Filter for entries where stage == "review_pending":
jq '[.[] | select(.stage == "review_pending")]' .auto-context/candidates.json
If no review_pending candidates found, tell the user:
No candidates pending review. Candidates need 3+ observations across 2+ sessions to qualify. Run
/ac-statusto see the current pipeline.
And stop.
If candidates exist, display: "Found N candidates ready for review."
For each review_pending candidate, present in this format:
### Candidate N of M
**Convention:** {text}
**Confidence:** {confidence}
**Observations:** {observations} across {sessions_seen length} sessions
**First seen:** {created_at}
**Evidence:**
- `{file}:{line}` -- {snippet}
(for each item in evidence array)
**Action:** approve / reject / edit
Wait for the user's response after each candidate. Do NOT present the next candidate until the current one is processed and written to disk.
.auto-context/conventions.jsonsession_count from .auto-context/lifecycle.json:
jq -r '.session_count // 0' .auto-context/lifecycle.json
If lifecycle.json is missing or corrupt, use 0 as fallback.text: candidate's text (unchanged)confidence: 0.7 (promoted extraction confidence)source: "extraction" (preserve original source)stage: "active"created_at: candidate's created_at (preserve original)approved_at: current ISO 8601 timestampsession_id: candidate's session_id (preserve original)last_referenced_session: session_count from lifecycle.jsonobservations: candidate's observations countsessions_seen: candidate's sessions_seen arrayconventions.json atomically (jq + tmp + mv)candidates.json atomically (filter by text match).auto-context/changelog.jsonl:
jq -nc --arg ts "$(date -u +%Y-%m-%dT%H:%M:%SZ)" --arg text "{text}" \
'{ts:$ts, action:"approved", text:$text, reason:"user approved via /ac-review", from_stage:"review_pending", to_stage:"active"}' \
>> .auto-context/changelog.jsonl
.auto-context/candidates.json atomically.auto-context/changelog.jsonl with action: "rejected", reason: "user rejected via /ac-review", from_stage: "review_pending", to_stage: "rejected"action: "approved_edited" and include both original and modified text in the reason fieldAfter all candidates are reviewed, show a summary:
Review complete: N approved, M rejected, K edited
If any were approved:
Approved conventions will appear in CLAUDE.md at next session start. Run
/ac-statusto see current pipeline state.
npx claudepluginhub tumblecat44/auto-context --plugin auto-contextAudits and optimizes context loading for Candid code reviews, covering Technical.md efficiency, exclude patterns, decision register, and config tuning.
Extract conventions and implicit knowledge from session data into .claude/rules/local/ files. USE WHEN repeated patterns are found across sessions.
Reconciles session learnings into .claude/rules/ entries on demand via /reconcile. Uses same engine as automatic session-end phase. Proposes rules for operator approval before writing.