/goal-clear
Stop and archive the currently active goalkeeper goal. Use when the user invokes /goal-clear to abandon or finalize a goal. Files are moved to .claude/goals/_archive/, never deleted.
$ npx -y skills add bonfire-systems/goalkeeper --skill goal-clear --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
- Fires itselfAuto-invocation. Claude auto-loads it when your prompt matches the work.
- You can call itInvoke it directly when you want it.
- Slash command
/goal-clear
Context preview
The summary Claude sees to decide when to auto-load this skill.
Stop and archive the currently active goalkeeper goal. Use when the user invokes /goal-clear to abandon or finalize a goal. Files are moved to .claude/goals/_archive/, never deleted.
SKILL.md
goal-clear.SKILL.mdname: goal-clear
description: Stop and archive the currently active goalkeeper goal. Use when the user invokes /goal-clear to abandon or finalize a goal. Files are moved to .claude/goals/_archive/, never deleted.
You are operating the **goal-clear** skill.
Flow
1. Read `.claude/goals/active.json`. If no active goal, tell the user and stop. 2. Read `.claude/goals/<slug>/state.json` to capture final status. 3. **Confirm via AskUserQuestion** before archiving (unless the goal is already `done`):
- **Archive and clear (Recommended)** — proceed.
- **Cancel** — abort, no changes.
4. Append a final log entry:
## <ISO8601> — cleared
Final status before clear: <status>. Rejection count: <n>. Archived.
5. **Move** (not copy) `.claude/goals/<slug>/` to `.claude/goals/_archive/<slug>-<YYYYMMDD-HHMMSS>/`. Use `mv` via Bash to preserve files atomically. 6. Set `.claude/goals/active.json` to the canonical terminal shape (see goal.md "Canonical state shapes"):
{
"slug": null,
"ended_at": "<ISO8601 now>",
"ended_reason": "cleared",
"previous_slug": "<the slug just cleared>"
}If a chain was active, also include `"previous_chain": "<chain-name>"`. 7. **If a chain is active** (`.claude/goals/chain.json` exists with `status == "active"` and contains the cleared slug), set `chain.json.status = "aborted"` and `chain.json.completed_at = <ISO8601 now>`. Append a `## <ISO8601> — chain aborted` entry to the cleared slug's `log.md` (chain-level events are reconstructible from per-link logs + chain.json — there is no separate chain-log file). Do NOT advance to the next goal — clearing kills the chain. Do NOT modify the contracts or state of unreached chain links — their `contract.md` files stay in place for re-use.
If `chain.json.status` is already `done` or `aborted` (chain not currently active), leave `chain.json` untouched — the cleared goal is being archived after the chain finished, not aborting an in-flight chain.
The active.json `ended_reason` stays `"cleared"` (not `"aborted"`) — `aborted` is a chain-level signal carried in chain.json, while the user's clear action on the goal is per-goal terminal context. 8. Tell the user: "Cleared goal `<slug>`. Archived to `.claude/goals/_archive/<dir>/`. Run /goal or /goal-prep to start a new one."
Hard rules
- **Never delete files.** Always move to `_archive/`. The user may want to inspect the contract or log later.
- **Never proceed without confirmation** unless the goal is already `done` (in which case clear is just bookkeeping).
- **Clearing kills any active chain** — chains are not auto-resumed mid-stream.
- The log entry is append-only.
Read more
name: goal-clear description: Stop and archive the currently active goalkeeper goal. Use when the user invokes /goal-clear to abandon or finalize a goal. Files are moved to .claude/goals/_archive/, never deleted.
You are operating the **goal-clear** skill.
Flow
1. Read `.claude/goals/active.json`. If no active goal, tell the user and stop. 2. Read `.claude/goals/<slug>/state.json` to capture final status. 3. **Confirm via AskUserQuestion** before archiving (unless the goal is already `done`):
- **Archive and clear (Recommended)** — proceed.
- **Cancel** — abort, no changes.
4. Append a final log entry:
## <ISO8601> — cleared Final status before clear: <status>. Rejection count: <n>. Archived.
5. **Move** (not copy) `.claude/goals/<slug>/` to `.claude/goals/_archive/<slug>-<YYYYMMDD-HHMMSS>/`. Use `mv` via Bash to preserve files atomically. 6. Set `.claude/goals/active.json` to the canonical terminal shape (see goal.md "Canonical state shapes"):
{
"slug": null,
"ended_at": "<ISO8601 now>",
"ended_reason": "cleared",
"previous_slug": "<the slug just cleared>"
}If a chain was active, also include `"previous_chain": "<chain-name>"`. 7. **If a chain is active** (`.claude/goals/chain.json` exists with `status == "active"` and contains the cleared slug), set `chain.json.status = "aborted"` and `chain.json.completed_at = <ISO8601 now>`. Append a `## <ISO8601> — chain aborted` entry to the cleared slug's `log.md` (chain-level events are reconstructible from per-link logs + chain.json — there is no separate chain-log file). Do NOT advance to the next goal — clearing kills the chain. Do NOT modify the contracts or state of unreached chain links — their `contract.md` files stay in place for re-use.
If `chain.json.status` is already `done` or `aborted` (chain not currently active), leave `chain.json` untouched — the cleared goal is being archived after the chain finished, not aborting an in-flight chain.
The active.json `ended_reason` stays `"cleared"` (not `"aborted"`) — `aborted` is a chain-level signal carried in chain.json, while the user's clear action on the goal is per-goal terminal context. 8. Tell the user: "Cleared goal `<slug>`. Archived to `.claude/goals/_archive/<dir>/`. Run /goal or /goal-prep to start a new one."
Hard rules
- **Never delete files.** Always move to `_archive/`. The user may want to inspect the contract or log later.
- **Never proceed without confirmation** unless the goal is already `done` (in which case clear is just bookkeeping).
- **Clearing kills any active chain** — chains are not auto-resumed mid-stream.
- The log entry is append-only.
Durable contract-driven goal execution for Claude Code. A subagent judge gates completion against an explicit Definition of Done.
Repo: bonfire-systems/goalkeeper
Other skills on goalkeeper.
- /goal-chain
Run a linear sequence of goalkeeper goals where the judge gates progression between them. Use when the user invokes /goal-chain "<file>" to start a chain. Also auto-invoked by the judge skill on approval to advance the chain cursor.
Open skill - /goal-judge
The gate. Reviews the active goalkeeper goal against its definition-of-done and either approves (advance / mark done) or rejects (with a structured fix-list). Auto-fired by the goal skill when the validator passes (inline mode), or invoked by the goal-chain orchestrator after
Open skill - /goal-pause
Pause the currently active goalkeeper goal without losing state. Use when the user invokes /goal-pause. The goal can later be resumed with /goal-resume.
Open skill - /goal-prep
Interactively draft a goalkeeper contract before executing. Use this skill when the user invokes /goal-prep "<rough idea>", or when /goal is called for a slug that has no contract yet. Produces a well-formed contract.md with explicit objective, definition-of-done, validator
Open skill - /goal-resume
Resume a paused or needs_human goalkeeper goal. Use when the user invokes /goal-resume after they've manually unblocked the goal (e.g. fixed a problem the judge flagged).
Open skill - /goal-supervisor
The mission-level supervisor. One level above goals. Reads the user's mission charter and the most-recently-completed goal's artifacts, then decides whether to PROCEED (draft + activate the next goal), declare the mission DONE, or ESCALATE to the user. Use this skill when the
Open skill

