reflect:errors-ack

Triage and acknowledge entries in the reflect errors sink (~/.reflect/errors.json). Invoked from the statusline ⚠N badge when pipeline errors accumulate (drain poison, parser crashes, ingest failures, hook timeouts).

Best use case

reflect:errors-ack is best used when you need a repeatable AI agent workflow instead of a one-off prompt.

Triage and acknowledge entries in the reflect errors sink (~/.reflect/errors.json). Invoked from the statusline ⚠N badge when pipeline errors accumulate (drain poison, parser crashes, ingest failures, hook timeouts).

Teams using reflect:errors-ack should expect a more consistent output, faster repeated execution, less prompt rewriting.

When to use this skill

  • You want a reusable workflow that can be run more than once with consistent structure.

When not to use this skill

  • You only need a quick one-off answer and do not need a reusable workflow.
  • You cannot install or maintain the underlying files, dependencies, or repository context.

Installation

Claude Code / Cursor / Codex

$curl -o ~/.claude/skills/errors-ack/SKILL.md --create-dirs "https://raw.githubusercontent.com/stevengonsalvez/agents-in-a-box/main/plugins/reflect/skills/errors-ack/SKILL.md"

Manual Installation

  1. Download SKILL.md from GitHub
  2. Place it in .claude/skills/errors-ack/SKILL.md inside your project
  3. Restart your AI agent — it will auto-discover the skill

How reflect:errors-ack Compares

Feature / Agentreflect:errors-ackStandard Approach
Platform SupportNot specifiedLimited / Varies
Context Awareness High Baseline
Installation ComplexityUnknownN/A

Frequently Asked Questions

What does this skill do?

Triage and acknowledge entries in the reflect errors sink (~/.reflect/errors.json). Invoked from the statusline ⚠N badge when pipeline errors accumulate (drain poison, parser crashes, ingest failures, hook timeouts).

Where can I find the source code?

You can find the source code on GitHub using the link provided at the top of the page.

SKILL.md Source

# Reflect: Errors Ack

Triages unacknowledged entries in `~/.reflect/errors.json` and
acknowledges them (individually or in bulk). The statusline `⚠N
/reflect:errors-ack` badge is the entry point — clicking the badge or
typing `/reflect:errors-ack` lands here.

## When to Use

- Statusline shows `⚠N /reflect:errors-ack` badge
- User asks "what are the reflect errors", "what's broken in reflect"
- After a known fix has landed and user wants to clear stale errors
- Periodic triage of accumulated pipeline noise

## What This Skill Does

1. Load `~/.reflect/errors.json` and filter to unacked entries
2. Render a triage table (id · ts · source · kind · short message)
3. Group entries by `kind` so repeats are obvious
4. Ask the user (via `AskUserQuestion`):
   - **Ack all** — wipe the badge, suitable when the user has already
     fixed the root cause
   - **Ack by kind** — clear a specific failure class while keeping
     others visible (e.g. ack all `drain_poison` after fixing the parser)
   - **Show details** — print the full message + traceback for an entry
   - **Leave alone** — exit without changes
5. Run `reflect errors ack [ids...]` and report the count
   of records flipped to `acked: true`

## Triage table format

```
id           when     source   kind             message (first 80 chars)
─────────────────────────────────────────────────────────────────────────
err-b177eb   05-17    drain    drain_poison     poison after 3 retries: …
err-614742   05-17    drain    drain_poison     poison after 3 retries: …
err-579ed4   05-17    drain    drain_no_output  claude -p produced no out…
err-c942a3   05-17    drain    drain_poison     poison after 3 retries: …
```

Group repeats by kind in the prompt: "4 drain_poison + 1 drain_no_output
— ack all? ack just drain_poison? show one in detail?"

## Backend commands

Use the installed `reflect` CLI (from `uv tool install reflect-kb`). If `reflect`
isn't on `$PATH`, self-bootstrap with `uv run --with reflect-kb python -m
reflect_kb.errors <args>` — the bare `python3 -m reflect_kb.errors` form only
works when reflect_kb is importable by *system* python3, which it usually isn't.

```bash
# Count of unacked entries (what the statusline badge reads)
reflect errors count

# Ack all unacked entries
reflect errors ack

# Ack specific entries by ID
reflect errors ack err-b177eb err-614742

# Append a new error (used by hooks/scripts, not user)
reflect errors append \
  --source drain --kind drain_poison --message "…" --context '{}'
```

The store at `~/.reflect/errors.json` is locked via `fcntl` so it's
safe to ack and append concurrently. Entries are deduplicated within a
short window (same kind + same hash) to prevent loops from flooding it.

## Implementation

When invoked:

```bash
# 1. show the count + table
reflect errors count
python3 <<'PY'
import json, datetime
with open('/Users/stevengonsalvez/.reflect/errors.json') as f:
    d = json.load(f)
unacked = [e for e in d.get('errors', []) if not e.get('acked')]
for e in unacked[:20]:
    eid = e.get('id', '?')
    ts = e.get('timestamp', e.get('ts', '?'))[:10]
    src = (e.get('source') or '?')[:10]
    kind = (e.get('kind') or '?')[:18]
    msg = (e.get('message') or '')[:80]
    print(f"{eid:12} {ts:10} {src:10} {kind:18} {msg}")
PY

# 2. ask user via AskUserQuestion (ack all / ack by kind / show detail / leave)

# 3. run ack
reflect errors ack [optional-ids]
```

After ack the badge disappears on next statusline refresh (10s cache).

## Output template

```
Found N unacked errors in ~/.reflect/errors.json.

By kind:
  drain_poison      ×4
  drain_no_output   ×1

Acked M entries. Badge will clear within 10s.
```

## When NOT to use this skill

- Don't ack errors blindly — at least skim the kinds. Repeated
  `parser_typeerror` or `ingest_*` failures usually point at a real bug
  that needs fixing before acking (otherwise the same error returns
  next session).
- Don't delete `~/.reflect/errors.json` to clear the badge — that loses
  the history. Always ack.

## Related

- `/reflect-status` — broader system health view
- `/reflect:recall` — search learnings (separate concern, not errors)
- The errors sink itself: `~/.reflect/errors.json`
- Statusline badge: `⚠N /reflect:errors-ack` (rendered red, only when
  `count > 0`)

Related Skills

reflect

8
from stevengonsalvez/agents-in-a-box

Full conversation scan for self-improvement. Detects behavioral corrections and knowledge signals, classifies them, proposes agent updates and knowledge notes with entity sidecars for GraphRAG indexing. Correct once, never again.

reflect-status

8
from stevengonsalvez/agents-in-a-box

Show reflection metrics, pending reviews, sidecar coverage, and GraphRAG health. Read-only views into the reflect system state. Can also approve/reject pending low-confidence items.

reflect:recall

8
from stevengonsalvez/agents-in-a-box

Retrieve relevant prior learnings from the global knowledge base. Hybrid vector + graph search over 170+ indexed learnings, reranked by confidence, recency, and tag overlap. Use when starting work, debugging a recurring problem, or before implementing a feature that may have prior art.

reflect:ingest

8
from stevengonsalvez/agents-in-a-box

The global knowledge indexer. Harvests ALL memory sources across all tools (Claude, Codex, Copilot, Gemini) and all project types into the unified GraphRAG + QMD knowledge base. Archives originals, generates entity sidecars, and dual-indexes for future retrieval. This is THE command that makes the knowledge base comprehensive.

reflect:cost

8
from stevengonsalvez/agents-in-a-box

Report reflect drain spend over a time window — tokens split by cached (cache_read), uncached writes (cache_creation), and io (input+output), with a $ estimate, grouped by day / outcome / model / transcript. Reads the drainer's cost log and surfaces outlier runs and cache-reuse health (the 41.5M-token failure mode = low cache reuse + high cache writes). Use to answer "what is reflection costing me" for the last day / week.

reflect:consolidate

8
from stevengonsalvez/agents-in-a-box

Project-level memory consolidation. Merges orphaned worktree memory directories into a single .agents/MEMORY.md for the current project. Deduplicates, sections, and proposes cleanup of orphan dirs. Does NOT index into the global knowledge base — use reflect:ingest for that.

workflow

8
from stevengonsalvez/agents-in-a-box

Guide through structured delivery workflow with plan, implement, validate phases

webapp-testing

8
from stevengonsalvez/agents-in-a-box

Toolkit for interacting with and testing local web applications using Playwright. Supports verifying frontend functionality, debugging UI behavior, capturing browser screenshots, and viewing browser logs.

validate

8
from stevengonsalvez/agents-in-a-box

Verify implementation against specifications

ui-ux-pro-max

8
from stevengonsalvez/agents-in-a-box

UI/UX design intelligence. 67 styles, 96 palettes, 57 font pairings, 25 charts, 13 stacks (React, Next.js, Vue, Svelte, Astro, Nuxt, SwiftUI, React Native, Flutter, Tailwind, shadcn/ui, Jetpack Compose). Actions: plan, build, create, design, implement, review, fix, improve, optimize, enhance, refactor, check UI/UX code. Projects: website, landing page, dashboard, admin panel, e-commerce, SaaS, portfolio, blog, mobile app, .html, .tsx, .vue, .svelte. Elements: button, modal, navbar, sidebar, card, table, form, chart. Styles: glassmorphism, claymorphism, minimalism, brutalism, neumorphism, bento grid, dark mode, responsive, skeuomorphism, flat design. Topics: color palette, accessibility, animation, layout, typography, font pairing, spacing, hover, shadow, gradient.

tui-style-guide

8
from stevengonsalvez/agents-in-a-box

TUI style guide for consistent terminal interface design

token-usage

8
from stevengonsalvez/agents-in-a-box

Show Claude Code token usage across sessions — daily, weekly, per-project, and per-session breakdowns. Parses {{HOME_TOOL_DIR}}/projects/**/*.jsonl for consumption data. Use when the user asks about token usage, costs, how many tokens were used, session statistics, or wants a usage report.