@slamb2k/mad-skills 2.0.58 → 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.58",
4
+ "version": "2.0.59",
5
5
  "author": {
6
6
  "name": "slamb2k",
7
7
  "url": "https://github.com/slamb2k"
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@slamb2k/mad-skills",
3
- "version": "2.0.58",
3
+ "version": "2.0.59",
4
4
  "description": "Claude Code skills collection — full lifecycle development tools",
5
5
  "type": "module",
6
6
  "repository": {
@@ -208,7 +208,7 @@ 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** — ferry the state across (write a cargo doc),
211
+ - **Hand off to a clean session** — ferry the state across (write a waybill),
212
212
  arm the resume signal, and let a fresh session run the *same* `/build` with its
213
213
  own subagents.
214
214
 
@@ -230,9 +230,9 @@ the run-now decision.
230
230
  orchestrator would start bloated. A fresh `/build` invocation in an empty
231
231
  session does not need this — just run here now.
232
232
  - **Plan is self-contained** — PLAN is a spec file or a complete written plan
233
- that a cargo doc can capture losslessly. If the plan leans on nuance from
233
+ that a waybill can capture losslessly. If the plan leans on nuance from
234
234
  *this* conversation (decisions made live, things looked at together), the
235
- cargo is lossy — prefer run-here-now so that context isn't thrown away.
235
+ waybill is lossy — prefer run-here-now so that context isn't thrown away.
236
236
 
237
237
  If **both** hold, ask via `AskUserQuestion`:
238
238
  ```
@@ -246,7 +246,7 @@ the run-now decision.
246
246
  If either condition fails, don't ask — run here now.
247
247
 
248
248
  **If handing off:** capture the resolved PLAN and any Stage-2 clarifications
249
- gathered so far, then invoke the `ferry` skill. The cargo document's
249
+ gathered so far, then invoke the `ferry` skill. The waybill's
250
250
  "next steps" MUST be a single resume action: re-run this exact build in the
251
251
  fresh session, e.g. `/build {original PLAN argument}` (plus any active flags,
252
252
  minus `--handoff`). Include the resolved plan content and PROJECT_CONFIG so the
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: ferry
3
- description: Ferry a session's live state across a context reset — persist a cargo 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 cargo.md, arms a one-shot signal, and tells the user to /clear so the next session auto-loads it.
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
  ---
@@ -23,10 +23,10 @@ CRITICAL: Reproduce the banner EXACTLY character-for-character, preserving all l
23
23
  ```
24
24
 
25
25
  Taglines:
26
- - ⛴️ Loading the cargo for the crossing...
26
+ - 📋 Filing the waybill for the crossing...
27
27
  - 🧳 All aboard — carrying the context across!
28
- - 🤝 Passing the manifest to a fresh crew!
29
- - 📦 Cargo secured, casting off to a clean session!
28
+ - 🤝 Passing the waybill to a fresh crew!
29
+ - 📋 Waybill stamped, casting off to a clean session!
30
30
  - 🌊 Ferrying the thread over calm water!
31
31
  - 🛟 Nobody's work goes overboard on my watch!
32
32
  - 🌅 New session on the far shore, same voyage!
@@ -36,24 +36,24 @@ Taglines:
36
36
  ## What this does
37
37
 
38
38
  Ferry the live state of this session across a context reset: capture it into a
39
- **cargo document** (`cargo.md`), arm a one-shot signal, and hand the user off to
40
- a clean session that will automatically resume from the cargo. The point is to
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
41
  **reset the context window without losing the thread** — the next session starts
42
42
  lean but fully briefed.
43
43
 
44
44
  Long sessions accumulate noise: dead ends, superseded plans, stale file reads. A
45
45
  fresh session is faster and sharper, but naively starting over loses hard-won
46
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 cargo on
47
+ signals that session to pick it up — once. It will not re-read old waybill on
48
48
  unrelated future sessions, because the signal is consumed on first read.
49
49
 
50
50
  ## Usage
51
51
 
52
52
  ```
53
- /ferry # default: cargo.md in repo root, kept OUT of git
53
+ /ferry # default: waybill.md in repo root, kept OUT of git
54
54
  /ferry repo # same as default (explicit)
55
55
  /ferry tmp # write under /tmp — never touches the repo at all
56
- /ferry commit # write docs/ferry/cargo-<timestamp>.md, meant to be committed
56
+ /ferry commit # write docs/ferry/waybill-<timestamp>.md, meant to be committed
57
57
  ```
58
58
 
59
59
  Read the argument from what the user typed. If none given, use `repo`.
@@ -88,24 +88,24 @@ date +%Y-%m-%d-%H%M
88
88
 
89
89
  Then pick the path based on the argument:
90
90
 
91
- - **`repo`** (default): `<repo_root>/cargo.md`. If not inside a git repo, use the
91
+ - **`repo`** (default): `<repo_root>/waybill.md`. If not inside a git repo, use the
92
92
  current working directory instead. After writing, keep it out of version control
93
- by appending `cargo.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
94
94
  and not already listed there. This is a *local* ignore — it never modifies the
95
95
  tracked `.gitignore`, so it won't show up in anyone else's checkout or your diffs.
96
- - **`tmp`**: `/tmp/claude-ferry/<key>/cargo.md` where `<key>` is
96
+ - **`tmp`**: `/tmp/claude-ferry/<key>/waybill.md` where `<key>` is
97
97
  `printf '%s' "$(pwd)" | cksum | cut -d' ' -f1`. Create the directory first.
98
98
  Nothing is written inside the repo.
99
- - **`commit`**: `<repo_root>/docs/ferry/cargo-<timestamp>.md`. Create the
99
+ - **`commit`**: `<repo_root>/docs/ferry/waybill-<timestamp>.md`. Create the
100
100
  `docs/ferry/` directory if needed. Do **not** ignore it — this variant exists
101
- precisely so the cargo lands in git history as a durable checkpoint. Mention to
101
+ precisely so the waybill lands in git history as a durable checkpoint. Mention to
102
102
  the user that they'll want to commit it.
103
103
 
104
- ### 2. Write the cargo document
104
+ ### 2. Write the waybill document
105
105
 
106
106
  This is the core of the skill — the document quality determines whether the next
107
107
  session is productive or lost. Follow the structure in
108
- `references/cargo-template.md`. Read that file now if you haven't.
108
+ `references/waybill-template.md`. Read that file now if you haven't.
109
109
 
110
110
  Fill it from the **actual conversation and repo state**, not generic boilerplate.
111
111
  Be concrete: real file paths, real function names, real commands, real decisions.
@@ -129,22 +129,22 @@ dead end is a genuine landmine worth a warning.
129
129
  After the document is written, run (using the `PLUGIN_ROOT` resolved in pre-flight):
130
130
 
131
131
  ```bash
132
- bash "$PLUGIN_ROOT/skills/ferry/scripts/ferry.sh" signal "<absolute_path_to_cargo>"
132
+ bash "$PLUGIN_ROOT/skills/ferry/scripts/ferry.sh" signal "<absolute_path_to_waybill>"
133
133
  ```
134
134
 
135
135
  This drops a signal keyed to the current project directory. The next session's
136
136
  `SessionStart` hook — shipped with this plugin in `hooks/hooks.json` — detects it,
137
- injects the cargo 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.
138
138
  Use the **absolute** path.
139
139
 
140
140
  ### 4. Hand off to a fresh session
141
141
 
142
- Tell the user plainly that the cargo is ready and they should start the fresh
142
+ Tell the user plainly that the waybill is ready and they should start the fresh
143
143
  session themselves. You **cannot** trigger `/clear` programmatically — it is a
144
144
  user-only command — so the final step is theirs. Say something like:
145
145
 
146
- > Cargo written to `<path>` and the next session is armed. Type **`/clear`**
147
- > (or **`/new`**) now — the fresh session will automatically load this cargo 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
148
148
  > pick up where we left off. Nothing else gets auto-loaded; the signal is consumed
149
149
  > on first read.
150
150
 
@@ -156,8 +156,8 @@ need to take.
156
156
  - **`/clear` is the user's to type.** No skill, hook, or command can clear the
157
157
  context window automatically. Always end by asking them to do it.
158
158
  - **The signal is one-shot and project-scoped.** It's keyed to the working
159
- directory and deleted on first read, so cargo never leaks into unrelated
160
- sessions. A `cargo.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.
161
161
  - **Don't pollute git by default.** Only the `commit` variant is meant to be
162
162
  tracked. `repo` mode relies on `.git/info/exclude`; `tmp` mode stays entirely
163
163
  outside the repo.
@@ -1,4 +1,4 @@
1
- # Cargo 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 cargo worth carrying. 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
- # Cargo — <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 cargo 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,14 +1,14 @@
1
1
  #!/usr/bin/env bash
2
2
  # ferry.sh — companion to the `ferry` skill.
3
3
  #
4
- # ferry.sh signal <abs_cargo_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 cargo document. The next session's SessionStart hook consumes it.
6
+ # the waybill document. The next session's SessionStart hook consumes it.
7
7
  #
8
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 cargo as additionalContext and deletes
11
- # the signal (one-shot — a stale cargo.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
@@ -26,12 +26,12 @@ cmd="${1:-load}"
26
26
 
27
27
  case "$cmd" in
28
28
  signal)
29
- cargo_path="${2:?usage: ferry.sh signal <abs_cargo_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' "$cargo_path" > "$SIGNAL_DIR/$key.signal"
34
- printf 'ferry: signal armed for %s -> %s\n' "$cwd" "$cargo_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 cargo pending — silent no-op
49
+ [ -f "$signal" ] || exit 0 # no waybill pending — silent no-op
50
50
 
51
- cargo_path="$(head -n1 "$signal")"
51
+ waybill_path="$(head -n1 "$signal")"
52
52
  rm -f "$signal" # one-shot: consume the signal
53
- [ -f "$cargo_path" ] || exit 0 # document vanished — nothing to inject
53
+ [ -f "$waybill_path" ] || exit 0 # document vanished — nothing to inject
54
54
 
55
- content="$(cat "$cargo_path")"
56
- preamble="The previous session left a cargo document at ${cargo_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 cargo 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" \
@@ -6,7 +6,7 @@
6
6
  "prompt": "/ferry",
7
7
  "expect_skill": "ferry",
8
8
  "assertions": [
9
- "Writes a cargo document to cargo.md in the repo root by default",
9
+ "Writes a waybill document to waybill.md in the repo root by default",
10
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
  ]
@@ -26,7 +26,7 @@
26
26
  "prompt": "/ferry commit",
27
27
  "expect_skill": "ferry",
28
28
  "assertions": [
29
- "Writes to docs/ferry/cargo-<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-07T09:55:45.144Z",
2
+ "generated": "2026-07-07T11:12:00.649Z",
3
3
  "count": 13,
4
4
  "skills": [
5
5
  {
@@ -45,7 +45,7 @@
45
45
  {
46
46
  "name": "ferry",
47
47
  "directory": "ferry",
48
- "description": "Ferry a session's live state across a context reset — persist a cargo 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 cargo.md, arms a one-shot signal, and tells the user to /clear so the next session auto-loads it.",
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
49
  "lines": 166,
50
50
  "hasScripts": true,
51
51
  "hasReferences": true,