# Capture

> Harmonia capture stage - record learnings into the right memory tier, then ship structured commits. Use ONLY when explicitly invoked as /harmonia:capture.

- Skill: `foliveira/capture` (Agent Skill)
- Install (CLI): `npx skillmds@latest add foliveira/capture`
- Raw SKILL.md: https://api.skillmd.com/api/skills/foliveira/capture/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: foliveira (https://skillmd.com/u/foliveira)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/foliveira/capture

---


Your working contract is the 4 rules; their digest is injected at session start - read `${CLAUDE_PLUGIN_ROOT}/core/RULES.md` in full only if that digest is not in your context.
Read the `capture` stage from `${CLAUDE_PLUGIN_ROOT}/core/lifecycle.yaml` - its agent sequence ends with the committer by contract; do not hardcode.

1. Workspace: `bash ${CLAUDE_PLUGIN_ROOT}/bin/workspace.sh resolve --repo .` (later stage: never mints; surface ambiguity or no-active-task and stop).
2. Acceptance gate: capture requires the `acceptance` in-artifact (`workspace:accepted`), written only by the developer after they exercised the built behavior and it matches intent. Verify it: `bash ${CLAUDE_PLUGIN_ROOT}/bin/workspace.sh verify-acceptance --repo .`. Gate on the exit: any non-zero exit means refuse - surface the script's own message verbatim and stop, do not dispatch the curator; only a zero exit proceeds. The message states the remedy: no marker means the developer records acceptance via `/harmonia:accept`; a stale digest mismatch means the diff moved after acceptance, so the developer exercises the current behavior and re-accepts via `/harmonia:accept` (the marker must digest the diff it attests); a live rejection clears via `/harmonia:accept` or `/harmonia:abandon`. Never run accept on the developer's behalf - acceptance is a human act.
3. Dispatch the knowledge curator with the verdict, scope, and diff-summary paths. It drafts learnings and writes each through `bash ${CLAUDE_PLUGIN_ROOT}/bin/memory/capture.sh` with an explicit `--tier` decision and `--client` flag where applicable - client content never reaches the global tier (R21).
4. Dispatch the committer with `boundary.md`, `diff-summary.md`, and the verdict: structured, single-concern commits whose messages communicate intent (R6); nothing outside the boundary, never workspace files.
5. Close the task: `bash ${CLAUDE_PLUGIN_ROOT}/bin/workspace.sh complete --repo .` (writes the completion marker so resolution skips this workspace).

Pass workspace paths, not prose recaps (R8). Orchestrate only (R9).

