From cairn
Use when the SessionStart context indicated `attention_count > 0` — pending DEC drafts in `_inbox/`, baseline sensor findings, or drift detected during the last GC sweep. Surfaces each item inline as A/B/C and resolves it through `cairn_resolve_attention`. Skip when the operator is in flight on a task; resume at the next idle moment.
How this skill is triggered — by the user, by Claude, or both
Slash command
/cairn:cairn-attentionThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
You are surfacing Cairn's pending-attention queue inline so the
You are surfacing Cairn's pending-attention queue inline so the
operator can resolve drafts and findings without leaving the chat. Spec:
docs/PLUGIN_ARCHITECTURE.md §11.
Only fire when:
attention_count > 0, OR/cairn-attention (escape hatch — slash command
not yet wired; for now treat any "show me pending" / "what's in the
inbox" message as a manual trigger).Skip when:
cairn-direction task is in flight for this session.[c] "later" on this skill — wait
until the next session.Run these in parallel. Use the MCP tools exclusively for DEC content;
never cat, Read, or otherwise inline-read draft files — that
wastes thousands of tokens on body text the operator never sees.
Bash: ls .cairn/ground/decisions/_inbox/*.draft.md 2>/dev/nullcairn_decision_get({path: "<path>"}) — returns
parsed {id, title, source_file, status, capture_source}. Use that
to build the surface tuple. Do not Read/cat the draft body.Bash: ls -1t .cairn/baseline/sensor-audit-*.yaml | head -1cairn_search({query: "drift"}) against the staleness
log if any..cairn/events/*.json newer than last_polled_ts.For each item, build a tuple {kind, id, title, source, severity} from
the MCP responses.
Sort by:
Surface at most 3 items per turn. After three picks, prompt:
3 resolved. Continue with the next batch?
[a]yes[b]later
For each item, render an inline question. Examples:
DEC draft:
DEC-0042 (draft) — "Switch payment processor from Stripe to Adyen" source: docs/billing.md ingestion · proposed: 2026-05-04
[a]accept (move to canonical)[b]reject (delete draft)[c]edit before accepting
Baseline finding:
Sensor
stub_catalog_hitsflagged 4 violations inservices/auth/— stub strings ("TODO", "FIXME") in production paths.[a]triage now (open file)[b]accept as baseline (suppress)[c]defer
Invalidation event:
A modified DEC-0019 (which you're using). Source: another session at 2026-05-04T20:14.
[a]refresh in-scope[b]continue under old[c]abort current task
Use AskUserQuestion with the labels. After the operator picks, call
the resolver:
cairn_resolve_attention({kind: "decision_draft", item_id: "DEC-0042", choice: "a"})
The tool dispatches by kind: decision_draft for accept/reject/edit,
baseline_finding for triage/suppress/defer, invalidation_event for
refresh/continue/abort, bypass and review for Stop-hook surfaces.
On decision_draft + a, the tool also strips the originating source
comment and replaces it with a // See DEC-NNNN citation when the DEC
came from init-source-comments.
After draining cross-session invalidation events, advance the per- session marker so the next Stop hook poll only sees newer events:
Bash: node -e "const x = require('@isaacriehm/cairn-core'); x.stampEventsPoll({repoRoot: process.cwd(), sessionId: process.env.CLAUDE_SESSION_ID, ts: Date.now()})"
(The stampEventsPoll runtime helper lives in cairn-core/session;
the Stop hook also calls it on every assistant turn end. Calling it
here keeps the cursor fresh after the operator drains attention.)
npx claudepluginhub isaacriehm/cairn --plugin cairnProvides behavioral guidelines to reduce common LLM coding mistakes, focusing on simplicity, surgical changes, assumption surfacing, and verifiable success criteria.
Searches, retrieves, and installs Agent Skills from prompts.chat registry using MCP tools like search_skills and get_skill. Activates for finding skills, browsing catalogs, or extending Claude.
Creates, edits, and optimizes skills for Claude Code, including drafting, evaluating with test prompts, iterating on performance, and improving skill descriptions for better triggering accuracy.