@slamb2k/mad-skills 2.0.57 → 2.0.59

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "mad-skills",
3
3
  "description": "AI-assisted planning, development and governance tools",
4
- "version": "2.0.57",
4
+ "version": "2.0.59",
5
5
  "author": {
6
6
  "name": "slamb2k",
7
7
  "url": "https://github.com/slamb2k"
package/hooks/hooks.json CHANGED
@@ -4,7 +4,7 @@
4
4
  "matcher": "startup|clear|compact",
5
5
  "hooks": [
6
6
  { "type": "command", "command": "_R=\"${CLAUDE_PLUGIN_ROOT}\"; [ -z \"$_R\" ] && _R=\"$HOME/.claude/plugins/marketplaces/slamb2k\"; node \"$_R/hooks/session-guard.cjs\" check", "timeout": 30 },
7
- { "type": "command", "command": "_R=\"${CLAUDE_PLUGIN_ROOT}\"; [ -z \"$_R\" ] && _R=\"$HOME/.claude/plugins/marketplaces/slamb2k\"; bash \"$_R/skills/handover/scripts/handover.sh\" load", "timeout": 10 }
7
+ { "type": "command", "command": "_R=\"${CLAUDE_PLUGIN_ROOT}\"; [ -z \"$_R\" ] && _R=\"$HOME/.claude/plugins/marketplaces/slamb2k\"; bash \"$_R/skills/ferry/scripts/ferry.sh\" load", "timeout": 10 }
8
8
  ]
9
9
  }],
10
10
  "UserPromptSubmit": [{
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@slamb2k/mad-skills",
3
- "version": "2.0.57",
3
+ "version": "2.0.59",
4
4
  "description": "Claude Code skills collection — full lifecycle development tools",
5
5
  "type": "module",
6
6
  "repository": {
@@ -93,7 +93,7 @@ Before starting, check all dependencies in this table:
93
93
  | feature-dev:code-architect | agent | — | no | fallback | Uses general-purpose agent |
94
94
  | feature-dev:code-reviewer | agent | — | no | fallback | Uses general-purpose agent |
95
95
  | superpowers | plugin | on-disk glob via scripts/lib/superpowers.js | no | fallback | Routes Stage 4 impl core to superpowers:executing-plans / subagent-driven-development when present; see references/superpowers-deferral.md |
96
- | handover | skill | `ls .claude/skills/handover/SKILL.md ~/.claude/skills/handover/SKILL.md ~/.claude/plugins/marketplaces/slamb2k/skills/handover/SKILL.md 2>/dev/null` | no | fallback | Powers the "hand off to a clean session" execution mode; ships with mad-skills, so normally present |
96
+ | ferry | skill | `ls .claude/skills/ferry/SKILL.md ~/.claude/skills/ferry/SKILL.md ~/.claude/plugins/marketplaces/slamb2k/skills/ferry/SKILL.md 2>/dev/null` | no | fallback | Powers the "hand off to a clean session" execution mode; ships with mad-skills, so normally present |
97
97
 
98
98
  For each row, in order:
99
99
  1. Run the Check command (for cli/npm) or test file existence (for agent/skill)
@@ -208,19 +208,20 @@ So there is exactly one execution-mode decision, and subagents are always on
208
208
  underneath either choice:
209
209
 
210
210
  - **Run here now** — orchestrate the build in this session, stages in subagents.
211
- - **Hand off to a clean session** — write a handover, arm the resume signal, and
212
- let a fresh session run the *same* `/build` with its own subagents.
211
+ - **Hand off to a clean session** — ferry the state across (write a waybill),
212
+ arm the resume signal, and let a fresh session run the *same* `/build` with its
213
+ own subagents.
213
214
 
214
215
  These are mutually exclusive — one stops here, one continues here. Do **not**
215
- offer a "clear? yes/no" toggle on top of run-now; the handover mode *replaces*
216
+ offer a "clear? yes/no" toggle on top of run-now; the hand-off mode *replaces*
216
217
  the run-now decision.
217
218
 
218
219
  **Resolve the mode:**
219
220
 
220
221
  1. If `--no-handoff` → run here now. Skip to Stage 1.
221
- 2. If `--handoff` → hand off (only if the handover skill exists; else warn it's
222
+ 2. If `--handoff` → hand off (only if the `ferry` skill exists; else warn it's
222
223
  unavailable and run here now).
223
- 3. If the handover skill is **not** installed (pre-flight) → run here now
224
+ 3. If the `ferry` skill is **not** installed (pre-flight) → run here now
224
225
  silently. No question.
225
226
  4. Otherwise, decide whether to *offer* the hand-off at all. Only offer it when a
226
227
  clean start would actually help **and** the plan can survive the reset:
@@ -229,9 +230,9 @@ the run-now decision.
229
230
  orchestrator would start bloated. A fresh `/build` invocation in an empty
230
231
  session does not need this — just run here now.
231
232
  - **Plan is self-contained** — PLAN is a spec file or a complete written plan
232
- that a handover doc can capture losslessly. If the plan leans on nuance from
233
- *this* conversation (decisions made live, things looked at together), a
234
- handover is lossy — prefer run-here-now so that context isn't thrown away.
233
+ that a waybill can capture losslessly. If the plan leans on nuance from
234
+ *this* conversation (decisions made live, things looked at together), the
235
+ waybill is lossy — prefer run-here-now so that context isn't thrown away.
235
236
 
236
237
  If **both** hold, ask via `AskUserQuestion`:
237
238
  ```
@@ -245,11 +246,11 @@ the run-now decision.
245
246
  If either condition fails, don't ask — run here now.
246
247
 
247
248
  **If handing off:** capture the resolved PLAN and any Stage-2 clarifications
248
- gathered so far, then invoke the `handover` skill. The handover document's
249
+ gathered so far, then invoke the `ferry` skill. The waybill's
249
250
  "next steps" MUST be a single resume action: re-run this exact build in the
250
251
  fresh session, e.g. `/build {original PLAN argument}` (plus any active flags,
251
252
  minus `--handoff`). Include the resolved plan content and PROJECT_CONFIG so the
252
- fresh session doesn't re-derive them. The handover skill arms the one-shot
253
+ fresh session doesn't re-derive them. The `ferry` skill arms the one-shot
253
254
  signal and tells the user to `/clear`. **Stop here** — do not run Stage 1; the
254
255
  fresh session does.
255
256
 
@@ -1,11 +1,11 @@
1
1
  ---
2
- name: handover
3
- description: Persist a session handover document and signal the next fresh session to resume from it. Use when the user types /handover, says they want to hand off, checkpoint, wrap up, clear context, or start fresh while preserving state, or asks to carry work into a new session with clean optimised context. Captures everything a brand-new session needs — task, status, next steps, key files, decisions, gotchas, git state — writes it to disk, arms a one-shot signal, and tells the user to /clear so the next session auto-loads it.
2
+ name: ferry
3
+ description: Ferry a session's live state across a context reset — persist a waybill document and signal the next fresh session to resume from it. Use when the user types /ferry, says they want to hand off, checkpoint, wrap up, clear context, or start fresh while preserving state, or asks to carry work into a new session with clean optimised context. Captures everything a brand-new session needs — task, status, next steps, key files, decisions, gotchas, git state — writes it to disk as waybill.md, arms a one-shot signal, and tells the user to /clear so the next session auto-loads it.
4
4
  argument-hint: repo, tmp, commit (optional target; default repo)
5
5
  allowed-tools: Bash, Read, Write
6
6
  ---
7
7
 
8
- # Handover - Clean-Context Session Handoff
8
+ # Ferry - Clean-Context Session Handoff
9
9
 
10
10
  When this skill is invoked, IMMEDIATELY output the banner below before doing anything else.
11
11
  Pick ONE tagline at random — vary your choice each time.
@@ -14,45 +14,46 @@ CRITICAL: Reproduce the banner EXACTLY character-for-character, preserving all l
14
14
  ```
15
15
  {tagline}
16
16
 
17
- ██╗ ██╗ █████╗ ███╗ ██╗██████╗ ██████╗ ██╗ ██╗███████╗██████╗
18
- ██║ ██║██╔══██╗████╗ ██║██╔══██╗██╔═══██╗██║ ██║██╔════╝██╔══██╗
19
- ███████║███████║██╔██╗ ██║██║ ██║██║ ██║██║ ██║█████╗ ██████╔╝
20
- ██╔══██║██╔══██║██║╚██╗██║██║ ██║██║ ██║╚██╗ ██╔╝██╔══╝ ██╔══██╗
21
- ██║ ██║██║ ██║██║ ╚████║██████╔╝╚██████╔╝ ╚████╔╝ ███████╗██║ ██║
22
- ╚═╝ ╚═╝╚═╝ ╚═╝╚═╝ ╚═══╝╚═════╝ ╚═════╝ ╚═══╝ ╚══════╝╚═╝ ╚═╝
17
+ ███████╗███████╗██████╗ ██████╗ ██╗ ██╗
18
+ ██╔════╝██╔════╝██╔══██╗██╔══██╗╚██╗ ██╔╝
19
+ █████╗ █████╗ ██████╔╝██████╔╝ ╚████╔╝
20
+ ██╔══╝ ██╔══╝ ██╔══██╗██╔══██╗ ╚██╔╝
21
+ ██║ ███████╗██║ ██║██║ ██║ ██║
22
+ ╚═╝ ╚══════╝╚═╝ ╚═╝╚═╝ ╚═╝ ╚═╝
23
23
  ```
24
24
 
25
25
  Taglines:
26
- - 🪂 Packing the parachute for a clean landing...
27
- - 🧳 Bagging up the context, checking out...
28
- - 🤝 Passing the baton to a fresh runner!
29
- - 📦 Boxing up everything the next session needs!
30
- - 🧹 Clearing the desk, leaving a tidy note!
31
- - 🛟 Nobody loses the thread on my watch!
32
- - 🌅 Fresh session, same mission!
26
+ - 📋 Filing the waybill for the crossing...
27
+ - 🧳 All aboard — carrying the context across!
28
+ - 🤝 Passing the waybill to a fresh crew!
29
+ - 📋 Waybill stamped, casting off to a clean session!
30
+ - 🌊 Ferrying the thread over calm water!
31
+ - 🛟 Nobody's work goes overboard on my watch!
32
+ - 🌅 New session on the far shore, same voyage!
33
33
 
34
34
  ---
35
35
 
36
36
  ## What this does
37
37
 
38
- Capture the live state of this session into a handover document, arm a one-shot
39
- signal, and hand the user off to a clean session that will automatically resume
40
- from the document. The point is to **reset the context window without losing the
41
- thread** — the next session starts lean but fully briefed.
38
+ Ferry the live state of this session across a context reset: capture it into a
39
+ **waybill document** (`waybill.md`), arm a one-shot signal, and hand the user off to
40
+ a clean session that will automatically resume from the waybill. The point is to
41
+ **reset the context window without losing the thread** — the next session starts
42
+ lean but fully briefed.
42
43
 
43
44
  Long sessions accumulate noise: dead ends, superseded plans, stale file reads. A
44
45
  fresh session is faster and sharper, but naively starting over loses hard-won
45
- context. `/handover` distills only what the *next* session needs, persists it, and
46
- signals that session to pick it up — once. It will not re-read old handovers on
46
+ context. `/ferry` distills only what the *next* session needs, persists it, and
47
+ signals that session to pick it up — once. It will not re-read old waybill on
47
48
  unrelated future sessions, because the signal is consumed on first read.
48
49
 
49
50
  ## Usage
50
51
 
51
52
  ```
52
- /handover # default: HANDOVER.md in repo root, kept OUT of git
53
- /handover repo # same as default (explicit)
54
- /handover tmp # write under /tmp — never touches the repo at all
55
- /handover commit # write docs/handovers/HANDOVER-<timestamp>.md, meant to be committed
53
+ /ferry # default: waybill.md in repo root, kept OUT of git
54
+ /ferry repo # same as default (explicit)
55
+ /ferry tmp # write under /tmp — never touches the repo at all
56
+ /ferry commit # write docs/ferry/waybill-<timestamp>.md, meant to be committed
56
57
  ```
57
58
 
58
59
  Read the argument from what the user typed. If none given, use `repo`.
@@ -87,24 +88,24 @@ date +%Y-%m-%d-%H%M
87
88
 
88
89
  Then pick the path based on the argument:
89
90
 
90
- - **`repo`** (default): `<repo_root>/HANDOVER.md`. If not inside a git repo, use the
91
+ - **`repo`** (default): `<repo_root>/waybill.md`. If not inside a git repo, use the
91
92
  current working directory instead. After writing, keep it out of version control
92
- by appending `HANDOVER.md` to `<repo_root>/.git/info/exclude` if it's a git repo
93
+ by appending `waybill.md` to `<repo_root>/.git/info/exclude` if it's a git repo
93
94
  and not already listed there. This is a *local* ignore — it never modifies the
94
95
  tracked `.gitignore`, so it won't show up in anyone else's checkout or your diffs.
95
- - **`tmp`**: `/tmp/claude-handover/<key>/HANDOVER.md` where `<key>` is
96
+ - **`tmp`**: `/tmp/claude-ferry/<key>/waybill.md` where `<key>` is
96
97
  `printf '%s' "$(pwd)" | cksum | cut -d' ' -f1`. Create the directory first.
97
98
  Nothing is written inside the repo.
98
- - **`commit`**: `<repo_root>/docs/handovers/HANDOVER-<timestamp>.md`. Create the
99
- `docs/handovers/` directory if needed. Do **not** ignore it — this variant exists
100
- precisely so the handover lands in git history as a durable checkpoint. Mention to
99
+ - **`commit`**: `<repo_root>/docs/ferry/waybill-<timestamp>.md`. Create the
100
+ `docs/ferry/` directory if needed. Do **not** ignore it — this variant exists
101
+ precisely so the waybill lands in git history as a durable checkpoint. Mention to
101
102
  the user that they'll want to commit it.
102
103
 
103
- ### 2. Write the handover document
104
+ ### 2. Write the waybill document
104
105
 
105
106
  This is the core of the skill — the document quality determines whether the next
106
107
  session is productive or lost. Follow the structure in
107
- `references/handover-template.md`. Read that file now if you haven't.
108
+ `references/waybill-template.md`. Read that file now if you haven't.
108
109
 
109
110
  Fill it from the **actual conversation and repo state**, not generic boilerplate.
110
111
  Be concrete: real file paths, real function names, real commands, real decisions.
@@ -128,22 +129,22 @@ dead end is a genuine landmine worth a warning.
128
129
  After the document is written, run (using the `PLUGIN_ROOT` resolved in pre-flight):
129
130
 
130
131
  ```bash
131
- bash "$PLUGIN_ROOT/skills/handover/scripts/handover.sh" signal "<absolute_path_to_handover>"
132
+ bash "$PLUGIN_ROOT/skills/ferry/scripts/ferry.sh" signal "<absolute_path_to_waybill>"
132
133
  ```
133
134
 
134
135
  This drops a signal keyed to the current project directory. The next session's
135
136
  `SessionStart` hook — shipped with this plugin in `hooks/hooks.json` — detects it,
136
- injects the handover as context, and deletes the signal so it fires exactly once.
137
+ injects the waybill as context, and deletes the signal so it fires exactly once.
137
138
  Use the **absolute** path.
138
139
 
139
140
  ### 4. Hand off to a fresh session
140
141
 
141
- Tell the user plainly that the handover is ready and they should start the fresh
142
+ Tell the user plainly that the waybill is ready and they should start the fresh
142
143
  session themselves. You **cannot** trigger `/clear` programmatically — it is a
143
144
  user-only command — so the final step is theirs. Say something like:
144
145
 
145
- > Handover written to `<path>` and the next session is armed. Type **`/clear`**
146
- > (or **`/new`**) now — the fresh session will automatically load this handover and
146
+ > Waybill written to `<path>` and the next session is armed. Type **`/clear`**
147
+ > (or **`/new`**) now — the fresh session will automatically load this waybill and
147
148
  > pick up where we left off. Nothing else gets auto-loaded; the signal is consumed
148
149
  > on first read.
149
150
 
@@ -155,10 +156,10 @@ need to take.
155
156
  - **`/clear` is the user's to type.** No skill, hook, or command can clear the
156
157
  context window automatically. Always end by asking them to do it.
157
158
  - **The signal is one-shot and project-scoped.** It's keyed to the working
158
- directory and deleted on first read, so handovers never leak into unrelated
159
- sessions. A `HANDOVER.md` left sitting in a repo is inert unless re-armed.
159
+ directory and deleted on first read, so waybill never leaks into unrelated
160
+ sessions. A `waybill.md` left sitting in a repo is inert unless re-armed.
160
161
  - **Don't pollute git by default.** Only the `commit` variant is meant to be
161
162
  tracked. `repo` mode relies on `.git/info/exclude`; `tmp` mode stays entirely
162
163
  outside the repo.
163
- - **If `/handover` is run again later**, overwrite the existing document and
164
+ - **If `/ferry` is run again later**, overwrite the existing document and
164
165
  re-arm the signal — the latest state wins.
@@ -1,4 +1,4 @@
1
- # Handover document template
1
+ # Waybill document template
2
2
 
3
3
  Fill every section that applies. Drop sections that genuinely don't (e.g. no open
4
4
  questions). Lead with what unblocks action; a fresh session should be able to make
@@ -6,12 +6,12 @@ its **next move within the first minute** of reading this.
6
6
 
7
7
  Write concretely. "Fix the bug in the parser" is useless; "`parseImportFile()` in
8
8
  `src/import.js:42` throws on empty `days` — needs a guard before the `Object.entries`
9
- loop" is a handover. Prefer absolute or repo-relative file paths with line numbers.
9
+ loop" is waybill worth carrying. Prefer absolute or repo-relative file paths with line numbers.
10
10
 
11
11
  ---
12
12
 
13
13
  ```markdown
14
- # Handover — <short task title>
14
+ # Waybill — <short task title>
15
15
 
16
16
  **Date:** <YYYY-MM-DD HH:MM> · **Branch:** <git branch> · **Repo:** <path>
17
17
 
@@ -83,7 +83,7 @@ ticket numbers, people involved.
83
83
  think it works but didn't check, say "assumed — not yet run". A fresh session has
84
84
  no way to tell otherwise and false confidence is expensive.
85
85
  - **Link, don't paste:** point to files and line ranges rather than dumping large
86
- code blocks. The next session can read them on demand; bloating the handover just
86
+ code blocks. The next session can read them on demand; bloating the waybill just
87
87
  refills the context window you're trying to clear.
88
88
  - **Keep it skimmable:** headers, short bullets, code spans for paths/commands. A
89
89
  wall of prose defeats the purpose.
@@ -1,21 +1,21 @@
1
1
  #!/usr/bin/env bash
2
- # handover.sh — companion to the `handover` skill.
2
+ # ferry.sh — companion to the `ferry` skill.
3
3
  #
4
- # handover.sh signal <abs_handover_path> [cwd]
4
+ # ferry.sh signal <abs_waybill_path> [cwd]
5
5
  # Drop a one-shot signal keyed to the current project (cwd) pointing at
6
- # the handover document. The next session's SessionStart hook consumes it.
6
+ # the waybill document. The next session's SessionStart hook consumes it.
7
7
  #
8
- # handover.sh load
8
+ # ferry.sh load
9
9
  # SessionStart hook entrypoint. Reads the event JSON on stdin; if a signal
10
- # exists for this cwd, emits the handover as additionalContext and deletes
11
- # the signal (one-shot — a stale HANDOVER.md is never re-injected).
10
+ # exists for this cwd, emits the waybill as additionalContext and deletes
11
+ # the signal (one-shot — a stale waybill.md is never re-injected).
12
12
  #
13
13
  # The signal is keyed on the working directory, NOT the session id, because the
14
14
  # session id changes after /clear. cwd is stable across a clear, so the fresh
15
15
  # session finds the signal its predecessor left.
16
16
  set -euo pipefail
17
17
 
18
- SIGNAL_DIR="/tmp/claude-handover"
18
+ SIGNAL_DIR="/tmp/claude-ferry"
19
19
 
20
20
  _key() {
21
21
  # Stable, dependency-free hash of a directory path. cksum is POSIX.
@@ -26,12 +26,12 @@ cmd="${1:-load}"
26
26
 
27
27
  case "$cmd" in
28
28
  signal)
29
- handover_path="${2:?usage: handover.sh signal <abs_handover_path> [cwd]}"
29
+ waybill_path="${2:?usage: ferry.sh signal <abs_waybill_path> [cwd]}"
30
30
  cwd="${3:-$(pwd)}"
31
31
  mkdir -p "$SIGNAL_DIR"
32
32
  key="$(_key "$cwd")"
33
- printf '%s\n' "$handover_path" > "$SIGNAL_DIR/$key.signal"
34
- printf 'handover: signal armed for %s -> %s\n' "$cwd" "$handover_path"
33
+ printf '%s\n' "$waybill_path" > "$SIGNAL_DIR/$key.signal"
34
+ printf 'ferry: signal armed for %s -> %s\n' "$cwd" "$waybill_path"
35
35
  ;;
36
36
 
37
37
  load)
@@ -46,14 +46,14 @@ case "$cmd" in
46
46
 
47
47
  key="$(_key "$cwd")"
48
48
  signal="$SIGNAL_DIR/$key.signal"
49
- [ -f "$signal" ] || exit 0 # no handover pending — silent no-op
49
+ [ -f "$signal" ] || exit 0 # no waybill pending — silent no-op
50
50
 
51
- handover_path="$(head -n1 "$signal")"
51
+ waybill_path="$(head -n1 "$signal")"
52
52
  rm -f "$signal" # one-shot: consume the signal
53
- [ -f "$handover_path" ] || exit 0 # document vanished — nothing to inject
53
+ [ -f "$waybill_path" ] || exit 0 # document vanished — nothing to inject
54
54
 
55
- content="$(cat "$handover_path")"
56
- preamble="The previous session left a handover document at ${handover_path} and signalled that this session should resume from it. Treat it as your primary context for continuing the work. Read any files it references before acting. This is one-shot: do not seek out or re-read handover documents in future sessions unless signalled again."
55
+ content="$(cat "$waybill_path")"
56
+ preamble="The previous session left a waybill document at ${waybill_path} and signalled that this session should resume from it. Treat it as your primary context for continuing the work. Read any files it references before acting. This is one-shot: do not seek out or re-read waybill documents in future sessions unless signalled again."
57
57
 
58
58
  if command -v jq >/dev/null 2>&1; then
59
59
  jq -n --arg pre "$preamble" --arg body "$content" \
@@ -65,7 +65,7 @@ case "$cmd" in
65
65
  ;;
66
66
 
67
67
  *)
68
- printf 'handover.sh: unknown command "%s" (expected: signal | load)\n' "$cmd" >&2
68
+ printf 'ferry.sh: unknown command "%s" (expected: signal | load)\n' "$cmd" >&2
69
69
  exit 1
70
70
  ;;
71
71
  esac
@@ -1,20 +1,20 @@
1
1
  {
2
- "skill": "handover",
2
+ "skill": "ferry",
3
3
  "cases": [
4
4
  {
5
5
  "name": "explicit slash invocation",
6
- "prompt": "/handover",
7
- "expect_skill": "handover",
6
+ "prompt": "/ferry",
7
+ "expect_skill": "ferry",
8
8
  "assertions": [
9
- "Writes a handover document to HANDOVER.md in the repo root by default",
10
- "Arms the one-shot signal via scripts/handover.sh signal with an absolute path",
9
+ "Writes a waybill document to waybill.md in the repo root by default",
10
+ "Arms the one-shot signal via scripts/ferry.sh signal with an absolute path",
11
11
  "Tells the user to type /clear to start the fresh session themselves"
12
12
  ]
13
13
  },
14
14
  {
15
15
  "name": "natural language wrap-up",
16
16
  "prompt": "Let's wrap up and start fresh with a clean context window without losing where we are.",
17
- "expect_skill": "handover",
17
+ "expect_skill": "ferry",
18
18
  "assertions": [
19
19
  "Recognizes the intent to reset context while preserving state",
20
20
  "Captures task, status, next steps, key files, decisions, and git state",
@@ -23,10 +23,10 @@
23
23
  },
24
24
  {
25
25
  "name": "committed checkpoint variant",
26
- "prompt": "/handover commit",
27
- "expect_skill": "handover",
26
+ "prompt": "/ferry commit",
27
+ "expect_skill": "ferry",
28
28
  "assertions": [
29
- "Writes to docs/handovers/HANDOVER-<timestamp>.md instead of the ignored repo-root file",
29
+ "Writes to docs/ferry/waybill-<timestamp>.md instead of the ignored repo-root file",
30
30
  "Does not add the file to .git/info/exclude",
31
31
  "Notes the user will want to commit the checkpoint"
32
32
  ]
@@ -1,5 +1,5 @@
1
1
  {
2
- "generated": "2026-07-07T07:32:19.484Z",
2
+ "generated": "2026-07-07T11:12:00.649Z",
3
3
  "count": 13,
4
4
  "skills": [
5
5
  {
@@ -16,7 +16,7 @@
16
16
  "name": "build",
17
17
  "directory": "build",
18
18
  "description": "Context-isolated feature development pipeline. Takes a detailed design/plan as argument and executes the full feature-dev lifecycle (explore, question, architect, implement, review, ship) inside subagents so the primary conversation stays compact. Use when you have a well-defined plan and want autonomous execution with minimal context window consumption.",
19
- "lines": 532,
19
+ "lines": 533,
20
20
  "hasScripts": false,
21
21
  "hasReferences": true,
22
22
  "hasAssets": false,
@@ -43,10 +43,10 @@
43
43
  "hasTests": true
44
44
  },
45
45
  {
46
- "name": "handover",
47
- "directory": "handover",
48
- "description": "Persist a session handover document and signal the next fresh session to resume from it. Use when the user types /handover, says they want to hand off, checkpoint, wrap up, clear context, or start fresh while preserving state, or asks to carry work into a new session with clean optimised context. Captures everything a brand-new session needs — task, status, next steps, key files, decisions, gotchas, git state — writes it to disk, arms a one-shot signal, and tells the user to /clear so the next session auto-loads it.",
49
- "lines": 165,
46
+ "name": "ferry",
47
+ "directory": "ferry",
48
+ "description": "Ferry a session's live state across a context reset — persist a waybill document and signal the next fresh session to resume from it. Use when the user types /ferry, says they want to hand off, checkpoint, wrap up, clear context, or start fresh while preserving state, or asks to carry work into a new session with clean optimised context. Captures everything a brand-new session needs — task, status, next steps, key files, decisions, gotchas, git state — writes it to disk as waybill.md, arms a one-shot signal, and tells the user to /clear so the next session auto-loads it.",
49
+ "lines": 166,
50
50
  "hasScripts": true,
51
51
  "hasReferences": true,
52
52
  "hasAssets": false,