feed-the-machine 1.5.0 → 1.6.0

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.
Files changed (224) hide show
  1. package/LICENSE +21 -21
  2. package/README.md +170 -170
  3. package/bin/generate-manifest.mjs +463 -463
  4. package/bin/install.mjs +491 -491
  5. package/docs/HOOKS.md +243 -243
  6. package/docs/INBOX.md +233 -233
  7. package/ftm/SKILL.md +122 -122
  8. package/ftm-audit/SKILL.md +623 -541
  9. package/ftm-audit/references/protocols/PROJECT-PATTERNS.md +91 -91
  10. package/ftm-audit/references/protocols/RUNTIME-WIRING.md +66 -66
  11. package/ftm-audit/references/protocols/WIRING-CONTRACTS.md +135 -135
  12. package/ftm-audit/references/strategies/AUTO-FIX-STRATEGIES.md +69 -69
  13. package/ftm-audit/references/templates/REPORT-FORMAT.md +96 -96
  14. package/ftm-audit/scripts/run-knip.sh +23 -23
  15. package/ftm-audit.yml +2 -2
  16. package/ftm-brainstorm/SKILL.md +498 -498
  17. package/ftm-brainstorm/evals/evals.json +100 -100
  18. package/ftm-brainstorm/evals/promptfoo.yaml +109 -109
  19. package/ftm-brainstorm/references/agent-prompts.md +224 -224
  20. package/ftm-brainstorm/references/plan-template.md +121 -121
  21. package/ftm-brainstorm.yml +2 -2
  22. package/ftm-browse/SKILL.md +454 -454
  23. package/ftm-browse/daemon/browser-manager.ts +206 -206
  24. package/ftm-browse/daemon/bun.lock +30 -30
  25. package/ftm-browse/daemon/cli.ts +347 -347
  26. package/ftm-browse/daemon/commands.ts +410 -410
  27. package/ftm-browse/daemon/main.ts +357 -357
  28. package/ftm-browse/daemon/package.json +17 -17
  29. package/ftm-browse/daemon/server.ts +189 -189
  30. package/ftm-browse/daemon/snapshot.ts +519 -519
  31. package/ftm-browse/daemon/tsconfig.json +22 -22
  32. package/ftm-browse.yml +4 -4
  33. package/ftm-capture/SKILL.md +370 -370
  34. package/ftm-capture.yml +4 -4
  35. package/ftm-codex-gate/SKILL.md +361 -361
  36. package/ftm-codex-gate.yml +2 -2
  37. package/ftm-config/SKILL.md +345 -345
  38. package/ftm-config.default.yml +82 -80
  39. package/ftm-config.yml +2 -2
  40. package/ftm-council/SKILL.md +416 -416
  41. package/ftm-council/references/prompts/CLAUDE-INVESTIGATION.md +60 -60
  42. package/ftm-council/references/prompts/CODEX-INVESTIGATION.md +58 -58
  43. package/ftm-council/references/prompts/GEMINI-INVESTIGATION.md +58 -58
  44. package/ftm-council/references/prompts/REBUTTAL-TEMPLATE.md +57 -57
  45. package/ftm-council/references/protocols/PREREQUISITES.md +47 -47
  46. package/ftm-council/references/protocols/STEP-0-FRAMING.md +46 -46
  47. package/ftm-council.yml +2 -2
  48. package/ftm-dashboard/SKILL.md +163 -163
  49. package/ftm-dashboard.yml +4 -4
  50. package/ftm-debug/SKILL.md +1037 -1037
  51. package/ftm-debug/references/phases/PHASE-0-INTAKE.md +58 -58
  52. package/ftm-debug/references/phases/PHASE-1-TRIAGE.md +46 -46
  53. package/ftm-debug/references/phases/PHASE-2-WAR-ROOM-AGENTS.md +279 -279
  54. package/ftm-debug/references/phases/PHASE-3-TO-6-EXECUTION.md +436 -436
  55. package/ftm-debug/references/protocols/BLACKBOARD.md +86 -86
  56. package/ftm-debug/references/protocols/EDGE-CASES.md +103 -103
  57. package/ftm-debug.yml +2 -2
  58. package/ftm-diagram/SKILL.md +277 -277
  59. package/ftm-diagram.yml +2 -2
  60. package/ftm-executor/SKILL.md +777 -767
  61. package/ftm-executor/references/STYLE-TEMPLATE.md +73 -73
  62. package/ftm-executor/references/phases/PHASE-0-VERIFICATION.md +62 -62
  63. package/ftm-executor/references/phases/PHASE-2-AGENT-ASSEMBLY.md +34 -34
  64. package/ftm-executor/references/phases/PHASE-3-WORKTREES.md +38 -38
  65. package/ftm-executor/references/phases/PHASE-4-5-AUDIT.md +72 -72
  66. package/ftm-executor/references/phases/PHASE-4-DISPATCH.md +66 -66
  67. package/ftm-executor/references/phases/PHASE-5-5-CODEX-GATE.md +73 -73
  68. package/ftm-executor/references/protocols/DOCUMENTATION-BOOTSTRAP.md +36 -36
  69. package/ftm-executor/references/protocols/MODEL-PROFILE.md +59 -44
  70. package/ftm-executor/references/protocols/PROGRESS-TRACKING.md +66 -66
  71. package/ftm-executor/runtime/ftm-runtime.mjs +252 -252
  72. package/ftm-executor/runtime/package.json +8 -8
  73. package/ftm-executor.yml +2 -2
  74. package/ftm-git/SKILL.md +441 -441
  75. package/ftm-git/evals/evals.json +26 -26
  76. package/ftm-git/evals/promptfoo.yaml +75 -75
  77. package/ftm-git/hooks/post-commit-experience.sh +92 -92
  78. package/ftm-git/references/patterns/SECRET-PATTERNS.md +104 -104
  79. package/ftm-git/references/protocols/REMEDIATION.md +139 -139
  80. package/ftm-git/scripts/pre-commit-secrets.sh +110 -110
  81. package/ftm-git.yml +2 -2
  82. package/ftm-inbox/backend/adapters/_retry.py +64 -64
  83. package/ftm-inbox/backend/adapters/base.py +230 -230
  84. package/ftm-inbox/backend/adapters/freshservice.py +104 -104
  85. package/ftm-inbox/backend/adapters/gmail.py +125 -125
  86. package/ftm-inbox/backend/adapters/jira.py +136 -136
  87. package/ftm-inbox/backend/adapters/registry.py +192 -192
  88. package/ftm-inbox/backend/adapters/slack.py +110 -110
  89. package/ftm-inbox/backend/db/connection.py +54 -54
  90. package/ftm-inbox/backend/db/schema.py +78 -78
  91. package/ftm-inbox/backend/executor/__init__.py +7 -7
  92. package/ftm-inbox/backend/executor/engine.py +149 -149
  93. package/ftm-inbox/backend/executor/step_runner.py +98 -98
  94. package/ftm-inbox/backend/main.py +103 -103
  95. package/ftm-inbox/backend/models/__init__.py +1 -1
  96. package/ftm-inbox/backend/models/unified_task.py +36 -36
  97. package/ftm-inbox/backend/planner/__init__.py +6 -6
  98. package/ftm-inbox/backend/planner/generator.py +127 -127
  99. package/ftm-inbox/backend/planner/schema.py +34 -34
  100. package/ftm-inbox/backend/requirements.txt +5 -5
  101. package/ftm-inbox/backend/routes/execute.py +186 -186
  102. package/ftm-inbox/backend/routes/health.py +52 -52
  103. package/ftm-inbox/backend/routes/inbox.py +68 -68
  104. package/ftm-inbox/backend/routes/plan.py +271 -271
  105. package/ftm-inbox/bin/launchagent.mjs +91 -91
  106. package/ftm-inbox/bin/setup.mjs +188 -188
  107. package/ftm-inbox/bin/start.sh +10 -10
  108. package/ftm-inbox/bin/status.sh +17 -17
  109. package/ftm-inbox/bin/stop.sh +8 -8
  110. package/ftm-inbox/config.example.yml +55 -55
  111. package/ftm-inbox/package-lock.json +2898 -2898
  112. package/ftm-inbox/package.json +26 -26
  113. package/ftm-inbox/postcss.config.js +6 -6
  114. package/ftm-inbox/src/app.css +199 -199
  115. package/ftm-inbox/src/app.html +18 -18
  116. package/ftm-inbox/src/lib/api.ts +166 -166
  117. package/ftm-inbox/src/lib/components/ExecutionLog.svelte +81 -81
  118. package/ftm-inbox/src/lib/components/InboxFeed.svelte +143 -143
  119. package/ftm-inbox/src/lib/components/PlanStep.svelte +271 -271
  120. package/ftm-inbox/src/lib/components/PlanView.svelte +206 -206
  121. package/ftm-inbox/src/lib/components/StreamPanel.svelte +99 -99
  122. package/ftm-inbox/src/lib/components/TaskCard.svelte +190 -190
  123. package/ftm-inbox/src/lib/components/ui/EmptyState.svelte +63 -63
  124. package/ftm-inbox/src/lib/components/ui/KawaiiCard.svelte +86 -86
  125. package/ftm-inbox/src/lib/components/ui/PillButton.svelte +106 -106
  126. package/ftm-inbox/src/lib/components/ui/StatusBadge.svelte +67 -67
  127. package/ftm-inbox/src/lib/components/ui/StreamDrawer.svelte +149 -149
  128. package/ftm-inbox/src/lib/components/ui/ThemeToggle.svelte +80 -80
  129. package/ftm-inbox/src/lib/theme.ts +47 -47
  130. package/ftm-inbox/src/routes/+layout.svelte +76 -76
  131. package/ftm-inbox/src/routes/+page.svelte +401 -401
  132. package/ftm-inbox/svelte.config.js +12 -12
  133. package/ftm-inbox/tailwind.config.ts +63 -63
  134. package/ftm-inbox/tsconfig.json +13 -13
  135. package/ftm-inbox/vite.config.ts +6 -6
  136. package/ftm-intent/SKILL.md +241 -241
  137. package/ftm-intent.yml +2 -2
  138. package/ftm-manifest.json +3794 -3794
  139. package/ftm-map/SKILL.md +291 -291
  140. package/ftm-map/scripts/db.py +712 -712
  141. package/ftm-map/scripts/index.py +415 -415
  142. package/ftm-map/scripts/parser.py +224 -224
  143. package/ftm-map/scripts/queries/go-tags.scm +20 -20
  144. package/ftm-map/scripts/queries/javascript-tags.scm +35 -35
  145. package/ftm-map/scripts/queries/python-tags.scm +31 -31
  146. package/ftm-map/scripts/queries/ruby-tags.scm +19 -19
  147. package/ftm-map/scripts/queries/rust-tags.scm +37 -37
  148. package/ftm-map/scripts/queries/typescript-tags.scm +41 -41
  149. package/ftm-map/scripts/query.py +301 -301
  150. package/ftm-map/scripts/ranker.py +377 -377
  151. package/ftm-map/scripts/requirements.txt +5 -5
  152. package/ftm-map/scripts/setup-hooks.sh +27 -27
  153. package/ftm-map/scripts/setup.sh +56 -56
  154. package/ftm-map/scripts/test_db.py +364 -364
  155. package/ftm-map/scripts/test_parser.py +174 -174
  156. package/ftm-map/scripts/test_query.py +183 -183
  157. package/ftm-map/scripts/test_ranker.py +199 -199
  158. package/ftm-map/scripts/views.py +591 -591
  159. package/ftm-map.yml +2 -2
  160. package/ftm-mind/SKILL.md +1943 -1943
  161. package/ftm-mind/evals/promptfoo.yaml +142 -142
  162. package/ftm-mind/references/blackboard-schema.md +328 -328
  163. package/ftm-mind/references/complexity-guide.md +110 -110
  164. package/ftm-mind/references/event-registry.md +319 -319
  165. package/ftm-mind/references/mcp-inventory.md +296 -296
  166. package/ftm-mind/references/protocols/COMPLEXITY-SIZING.md +72 -72
  167. package/ftm-mind/references/protocols/MCP-HEURISTICS.md +32 -32
  168. package/ftm-mind/references/protocols/PLAN-APPROVAL.md +80 -80
  169. package/ftm-mind/references/reflexion-protocol.md +249 -249
  170. package/ftm-mind/references/routing/SCENARIOS.md +22 -22
  171. package/ftm-mind/references/routing-scenarios.md +35 -35
  172. package/ftm-mind.yml +2 -2
  173. package/ftm-pause/SKILL.md +395 -395
  174. package/ftm-pause/references/protocols/SKILL-RESTORE-PROTOCOLS.md +186 -186
  175. package/ftm-pause/references/protocols/VALIDATION.md +80 -80
  176. package/ftm-pause.yml +2 -2
  177. package/ftm-researcher/SKILL.md +275 -275
  178. package/ftm-researcher/evals/agent-diversity.yaml +17 -17
  179. package/ftm-researcher/evals/synthesis-quality.yaml +12 -12
  180. package/ftm-researcher/evals/trigger-accuracy.yaml +39 -39
  181. package/ftm-researcher/references/adaptive-search.md +116 -116
  182. package/ftm-researcher/references/agent-prompts.md +193 -193
  183. package/ftm-researcher/references/council-integration.md +193 -193
  184. package/ftm-researcher/references/output-format.md +203 -203
  185. package/ftm-researcher/references/synthesis-pipeline.md +165 -165
  186. package/ftm-researcher/scripts/score_credibility.py +234 -234
  187. package/ftm-researcher/scripts/validate_research.py +92 -92
  188. package/ftm-researcher.yml +2 -2
  189. package/ftm-resume/SKILL.md +518 -518
  190. package/ftm-resume/references/protocols/VALIDATION.md +172 -172
  191. package/ftm-resume.yml +2 -2
  192. package/ftm-retro/SKILL.md +380 -380
  193. package/ftm-retro/references/protocols/SCORING-RUBRICS.md +89 -89
  194. package/ftm-retro/references/templates/REPORT-FORMAT.md +109 -109
  195. package/ftm-retro.yml +2 -2
  196. package/ftm-routine/SKILL.md +170 -170
  197. package/ftm-routine.yml +4 -4
  198. package/ftm-state/blackboard/capabilities.json +5 -5
  199. package/ftm-state/blackboard/capabilities.schema.json +27 -27
  200. package/ftm-state/blackboard/context.json +23 -23
  201. package/ftm-state/blackboard/experiences/index.json +9 -9
  202. package/ftm-state/blackboard/patterns.json +6 -6
  203. package/ftm-state/schemas/context.schema.json +130 -130
  204. package/ftm-state/schemas/experience-index.schema.json +77 -77
  205. package/ftm-state/schemas/experience.schema.json +78 -78
  206. package/ftm-state/schemas/patterns.schema.json +44 -44
  207. package/ftm-upgrade/SKILL.md +194 -194
  208. package/ftm-upgrade/scripts/check-version.sh +76 -76
  209. package/ftm-upgrade/scripts/upgrade.sh +143 -143
  210. package/ftm-upgrade.yml +2 -2
  211. package/ftm-verify.yml +2 -2
  212. package/ftm.yml +2 -2
  213. package/hooks/ftm-blackboard-enforcer.sh +93 -93
  214. package/hooks/ftm-discovery-reminder.sh +90 -90
  215. package/hooks/ftm-drafts-gate.sh +61 -61
  216. package/hooks/ftm-event-logger.mjs +107 -107
  217. package/hooks/ftm-map-autodetect.sh +79 -79
  218. package/hooks/ftm-pending-sync-check.sh +22 -22
  219. package/hooks/ftm-plan-gate.sh +92 -92
  220. package/hooks/ftm-post-commit-trigger.sh +57 -57
  221. package/hooks/settings-template.json +81 -81
  222. package/install.sh +363 -363
  223. package/package.json +84 -84
  224. package/uninstall.sh +25 -25
@@ -1,518 +1,518 @@
1
- ---
2
- name: ftm-resume
3
- description: Resume a previously paused ftm skill session from saved state. Use when user says "resume", "continue where we left off", "ftm resume", "pick up", or starts a new conversation wanting to continue previous ftm work.
4
- ---
5
-
6
- ## Events
7
-
8
- ### Emits
9
- - `session_resumed` — when a saved session state has been validated and the appropriate ftm skill is re-invoked with restored context
10
- - `task_completed` — when the resume workflow finishes (skill re-invoked and state file archived)
11
-
12
- ### Listens To
13
- (none — ftm-resume is explicitly invoked by the user and does not respond to events)
14
-
15
- # FTM Resume — Session State Restoration
16
-
17
- Read a saved ftm session state file and seamlessly continue the workflow in a fresh conversation. The user should feel like they never left — same context, same decisions, same progress, picking up at exactly the right step.
18
-
19
- ## Why This Exists
20
-
21
- FTM skills are long-running, multi-phase workflows. A brainstorm session might span 10+ turns of research and questioning. An executor session might be mid-way through wave 2 of a 5-wave plan. A debug war room might have 4 investigation agents completed and a solver mid-attempt. When these sessions end — whether by choice, crash, or context exhaustion — the work shouldn't be lost. This skill reads the state file that ftm-pause saved and reconstructs the session so the appropriate ftm skill can continue exactly where it stopped.
22
-
23
- ## Step 1: Read the State File
24
-
25
- Read `~/.claude/ftm-state/STATE.md`.
26
-
27
- If the file doesn't exist:
28
- ```
29
- No saved ftm session found at ~/.claude/ftm-state/STATE.md
30
-
31
- To save a session mid-workflow, use /ftm-pause during any active ftm skill.
32
- ```
33
- Stop here.
34
-
35
- If the file exists but can't be parsed (missing frontmatter, malformed YAML):
36
- ```
37
- Found state file but it appears corrupted — missing required frontmatter fields.
38
- Expected fields: skill, phase, timestamp, project_dir
39
-
40
- Would you like me to try to extract what I can from the file, or should we start fresh?
41
- ```
42
-
43
- ## Step 2: Parse the Frontmatter
44
-
45
- Extract the YAML frontmatter fields:
46
-
47
- | Field | Required | Purpose |
48
- |-------|----------|---------|
49
- | `skill` | Yes | Which ftm skill to resume (brainstorm, executor, debug, council, audit) |
50
- | `phase` | Yes | Which phase the skill was in |
51
- | `phase_detail` | No | Human-readable detail about position within the phase |
52
- | `timestamp` | Yes | When the session was saved |
53
- | `project_dir` | Yes | The project directory the session was working in |
54
- | `git_branch` | No | The git branch at time of save |
55
- | `git_commit` | No | The HEAD commit at time of save |
56
-
57
- ## Step 3: Validate the Environment
58
-
59
- Run these checks before attempting to resume. Each check either passes, warns, or blocks.
60
-
61
- ### Check 1: Project directory exists
62
-
63
- ```bash
64
- test -d "{project_dir}" && echo "EXISTS" || echo "MISSING"
65
- ```
66
-
67
- - **EXISTS**: Pass. Continue.
68
- - **MISSING**: Block. "The project directory `{project_dir}` no longer exists. Cannot resume — the codebase isn't available. Did the project move?"
69
-
70
- ### Check 2: Git state (if git fields present)
71
-
72
- ```bash
73
- cd "{project_dir}" && git branch --show-current && git rev-parse --short HEAD
74
- ```
75
-
76
- Compare current branch and commit against saved values.
77
-
78
- - **Same branch, same commit**: Perfect — nothing changed.
79
- - **Same branch, different commit**: Warn. "The codebase has been modified since the session was saved. {N} new commits on `{branch}` since `{saved_commit}`." Show the commit log between saved and current. Ask the user if they want to continue anyway or review changes first.
80
- - **Different branch**: Warn. "You're now on branch `{current}` but the session was saved on `{saved_branch}`. Would you like to switch back to `{saved_branch}`, or continue on `{current}`?"
81
-
82
- ### Check 3: Worktree branches (for executor and debug)
83
-
84
- If the state file references worktree branches:
85
-
86
- ```bash
87
- cd "{project_dir}" && git worktree list
88
- git branch --list "plan-exec/*" "debug/*"
89
- ```
90
-
91
- - **All referenced branches exist**: Pass.
92
- - **Some missing**: Warn. List which branches are missing. "These worktree branches from the saved session no longer exist: {list}. Tasks associated with these branches may need to be re-executed."
93
- - **All missing**: Warn more strongly. "All worktree branches from the saved session have been cleaned up. Completed task work may have been merged already. In-progress tasks will need to restart."
94
-
95
- ### Check 4: Plan files (for executor)
96
-
97
- If the state references a plan file:
98
-
99
- ```bash
100
- test -f "{plan_path}" && echo "EXISTS" || echo "MISSING"
101
- ```
102
-
103
- - **EXISTS**: Pass.
104
- - **MISSING**: Block (for executor). "The plan file `{plan_path}` no longer exists. Cannot resume executor without a plan. Do you have the plan elsewhere?"
105
-
106
- ### Check 5: Research/investigation files (for debug)
107
-
108
- Check for any referenced artifact files (RESEARCH-FINDINGS.md, HYPOTHESES.md, REPRODUCTION.md, etc.):
109
-
110
- ```bash
111
- for f in {artifact_paths}; do test -f "$f" && echo "$f: EXISTS" || echo "$f: MISSING"; done
112
- ```
113
-
114
- - **All exist**: Pass.
115
- - **Some missing**: Warn. The state file should contain the key content from these files, so they're reconstructible. Note which are missing.
116
-
117
- ### Check 6: Staleness (all skills)
118
-
119
- Calculate the age of the saved state:
120
-
121
- ```bash
122
- # Compare saved timestamp to current time
123
- ```
124
-
125
- - **< 24 hours**: Fresh. No warning needed.
126
- - **1-7 days**: Mild staleness. Note it but proceed: "This session is {N} days old. The codebase may have changed — check the git log above."
127
- - **> 7 days**: Stale warning. Present explicitly:
128
- ```
129
- This session was saved 12 days ago. The codebase has likely changed significantly.
130
-
131
- Options:
132
- 1. Resume anyway — I'll use the saved context but some references may be outdated
133
- 2. Resume with a fresh repo scan — I'll re-run Phase 0 to update project context, then continue from where you left off
134
- 3. Start fresh — discard this state and begin a new session
135
-
136
- Which would you prefer?
137
- ```
138
-
139
- If the user picks option 2, run Phase 0 of the relevant skill (repo scan for brainstorm, plan re-read for executor, codebase reconnaissance for debug) with fresh data, then merge the new scan with the saved state — keeping all decisions, answers, and progress but updating the project context.
140
-
141
- ## Step 4: Present the Resume Summary
142
-
143
- After all validation checks pass (or the user acknowledges warnings), present the resume:
144
-
145
- ### For ftm-brainstorm:
146
- ```
147
- Resuming ftm-brainstorm session from {timestamp}
148
- Project: {project_dir}
149
-
150
- Where we left off:
151
- Phase: {phase} — {phase_detail}
152
- Path: {A or B}
153
- Research sprints completed: {N}
154
- Challenge turns completed: {N}
155
- Decisions locked: {N}
156
- - {decision 1}
157
- - {decision 2}
158
- - ...
159
- Open questions: {N}
160
- - {question 1}
161
- - {question 2}
162
-
163
- Next step:
164
- {next_step from state file}
165
-
166
- Ready to continue? (or type new context to add information before resuming)
167
- ```
168
-
169
- ### For ftm-executor:
170
- ```
171
- Resuming ftm-executor session from {timestamp}
172
- Project: {project_dir}
173
- Plan: {plan_path}
174
-
175
- Where we left off:
176
- Wave: {current_wave} of {total_waves}
177
- Tasks: {completed}/{total} complete
178
- Done: {list of completed task numbers and titles}
179
- In progress: {list with agent assignments}
180
- Pending: {list}
181
- Failed/Blocked: {list with reasons}
182
- Worktrees: {N active}
183
- Last audit: {result}
184
-
185
- Next step:
186
- {next_step from state file}
187
-
188
- Ready to continue? (or type new context to add information before resuming)
189
- ```
190
-
191
- ### For ftm-debug:
192
- ```
193
- Resuming ftm-debug war room from {timestamp}
194
- Project: {project_dir}
195
-
196
- Where we left off:
197
- Phase: {phase} — {phase_detail}
198
- Problem: {one-line problem summary}
199
- Investigation status:
200
- Instrumenter: {complete/pending} {brief finding if complete}
201
- Researcher: {complete/pending} {brief finding if complete}
202
- Reproducer: {complete/pending} {brief finding if complete}
203
- Hypothesizer: {complete/pending} {top hypothesis if complete}
204
- Solver attempts: {N}
205
- Reviewer verdict: {if any}
206
- Worktrees: {list with status}
207
-
208
- Next step:
209
- {next_step from state file}
210
-
211
- Ready to continue? (or type new context to add information before resuming)
212
- ```
213
-
214
- ### For ftm-council:
215
- ```
216
- Resuming ftm-council session from {timestamp}
217
- Project: {project_dir}
218
-
219
- Where we left off:
220
- Council prompt: {brief summary}
221
- Round: {N} of 5
222
- Positions:
223
- Claude: {one-line position}
224
- Codex: {one-line position}
225
- Gemini: {one-line position}
226
- Consensus: {Yes — X and Y agree / No — still diverging}
227
-
228
- Next step:
229
- {next_step from state file}
230
-
231
- Ready to continue? (or type new context to add information before resuming)
232
- ```
233
-
234
- ### For ftm-audit:
235
- ```
236
- Resuming ftm-audit session from {timestamp}
237
- Project: {project_dir}
238
-
239
- Where we left off:
240
- Trigger: {what triggered the audit}
241
- Phase 0 (patterns): {complete/pending}
242
- Layer 1 (knip): {complete — N findings / pending}
243
- Layer 2 (adversarial): {complete — N findings / pending}
244
- Layer 3 (auto-fix): {N fixed, N manual / pending}
245
- Status: {PASS/FAIL/in-progress}
246
-
247
- Next step:
248
- {next_step from state file}
249
-
250
- Ready to continue? (or type new context to add information before resuming)
251
- ```
252
-
253
- ## Step 5: Handle User Response
254
-
255
- The user can respond in three ways:
256
-
257
- ### "Yes" / "Continue" / "Go"
258
- Proceed directly to Step 6 (invoke the skill).
259
-
260
- ### New context / additional information
261
- The user may say "yes, but also..." or provide new information (the bug now has a new symptom, requirements changed, they thought of something overnight). Capture this new context and incorporate it into the state before invoking the skill. Add it to the "Context Snapshot" as a "Post-pause update" section.
262
-
263
- ### "Start fresh" / "Never mind"
264
- Archive the state file (see Step 7) and tell the user: "State archived. You can start a fresh session with /ftm-{skill}."
265
-
266
- ## Step 6: Invoke the Appropriate Panda Skill
267
-
268
- This is the critical step. You need to invoke the ftm skill with the full saved context injected so it picks up exactly where it left off, not from the beginning.
269
-
270
- **How to do this:** Construct a comprehensive context injection that tells the skill exactly where it is. The skill will receive this as its starting context instead of starting from scratch.
271
-
272
- ### For ftm-brainstorm:
273
-
274
- Invoke the ftm-brainstorm skill with the following context preamble:
275
-
276
- ```
277
- RESUMING FROM SAVED STATE — DO NOT START FROM PHASE 0.
278
-
279
- This is a resumed session. All prior phases and turns have been completed as described below.
280
- Pick up at exactly the point described in "Next Step." Do not re-ask questions that have
281
- already been answered. Do not re-run research sprints that have already completed. Do not
282
- re-present suggestions the user has already responded to.
283
-
284
- PROJECT CONTEXT (from Phase 0 scan — already completed):
285
- {paste full Phase 0 results from state}
286
-
287
- INTAKE COMPLETE (Phase 1 — already completed):
288
- {paste all rounds, answers, and research sprint results from state}
289
-
290
- RESEARCH TURNS COMPLETED (Phase 2 — {N} turns done):
291
- {paste each turn's suggestions, challenges, user responses, and direction from state}
292
-
293
- ACCUMULATED DECISIONS:
294
- {paste decisions list from state}
295
-
296
- OPEN QUESTIONS:
297
- {paste open questions from state}
298
-
299
- CURRENT DIRECTION:
300
- {paste current direction from state}
301
-
302
- NEXT STEP:
303
- {paste next step from state — this is where you pick up}
304
-
305
- {if post-pause update exists: POST-PAUSE UPDATE FROM USER: {new context}}
306
- ```
307
-
308
- Then invoke `/ftm-brainstorm` via the Skill tool. The brainstorm skill will see this context and should continue from the specified point — running the next research sprint, asking the next question, or generating the next section of the plan.
309
-
310
- ### For ftm-executor:
311
-
312
- ```
313
- RESUMING FROM SAVED STATE — DO NOT START FROM PHASE 1.
314
-
315
- Plan file: {plan_path}
316
- Plan has been analyzed. Agent team has been assembled. Execution is in progress.
317
-
318
- COMPLETED TASKS:
319
- {for each completed task: task number, title, status, commits, audit result}
320
-
321
- IN-PROGRESS TASKS:
322
- {task details, agent assignments, what's been done}
323
-
324
- PENDING TASKS:
325
- {task list}
326
-
327
- FAILED/BLOCKED TASKS:
328
- {task details with error information}
329
-
330
- ACTIVE WORKTREES:
331
- {branch names, paths, status}
332
-
333
- CURRENT WAVE: {N}
334
- NEXT STEP: {what to do next — dispatch next wave, retry failed task, merge completed work, etc.}
335
-
336
- {if post-pause update: POST-PAUSE UPDATE FROM USER: {new context}}
337
- ```
338
-
339
- Then invoke `/ftm-executor {plan_path}` via the Skill tool.
340
-
341
- ### For ftm-debug:
342
-
343
- ```
344
- RESUMING FROM SAVED STATE — DO NOT START FROM PHASE 0.
345
-
346
- PROBLEM STATEMENT:
347
- {original problem from state}
348
-
349
- CODEBASE RECONNAISSANCE (Phase 0 — already completed):
350
- {full recon results from state}
351
-
352
- INVESTIGATION PLAN:
353
- {the plan from state}
354
-
355
- INVESTIGATION RESULTS (Phase 1):
356
- Instrumenter: {full report or "not yet run"}
357
- Researcher: {full report or "not yet run"}
358
- Reproducer: {full report or "not yet run"}
359
- Hypothesizer: {full report or "not yet run"}
360
-
361
- SYNTHESIS (Phase 2):
362
- {cross-reference analysis if completed}
363
-
364
- SOLVER ATTEMPTS:
365
- {list of attempts, hypotheses tried, commits, outcomes}
366
-
367
- REVIEWER VERDICTS:
368
- {list of verdicts if any}
369
-
370
- ACTIVE WORKTREES:
371
- {branch names, paths, status}
372
-
373
- NEXT STEP: {what to do — run remaining investigation agents, synthesize, solve, review, etc.}
374
-
375
- {if post-pause update: POST-PAUSE UPDATE FROM USER: {new context}}
376
- ```
377
-
378
- Then invoke `/ftm-debug` via the Skill tool.
379
-
380
- ### For ftm-council:
381
-
382
- ```
383
- RESUMING FROM SAVED STATE — DO NOT START FROM STEP 0.
384
-
385
- COUNCIL PROMPT:
386
- {the framed problem}
387
-
388
- COMPLETED ROUNDS:
389
- {for each round: each model's full research, position, reasoning, concerns, confidence}
390
- {for rebuttal rounds: updated positions, new evidence, responses}
391
-
392
- ALIGNMENT STATUS:
393
- {agreement areas, divergence points, majority forming?}
394
-
395
- CURRENT ROUND: {N}
396
- NEXT STEP: {run next rebuttal round, check consensus, present verdict, etc.}
397
-
398
- {if post-pause update: POST-PAUSE UPDATE FROM USER: {new context}}
399
- ```
400
-
401
- Then invoke `/ftm-council` via the Skill tool.
402
-
403
- ### For ftm-audit:
404
-
405
- ```
406
- RESUMING FROM SAVED STATE — DO NOT START FROM PHASE 0.
407
-
408
- AUDIT TRIGGER: {what triggered it}
409
- SCOPE: {files/project}
410
-
411
- PROJECT PATTERNS (Phase 0 — already completed):
412
- {detected framework, dimensions, configuration}
413
-
414
- LAYER 1 RESULTS:
415
- {knip findings if completed, or "not yet run"}
416
-
417
- LAYER 2 RESULTS:
418
- {adversarial findings if completed, or "not yet run"}
419
-
420
- LAYER 3 RESULTS:
421
- {fixes applied, manual items, iteration count}
422
-
423
- NEXT STEP: {run remaining layers, apply fixes, re-verify, etc.}
424
-
425
- {if post-pause update: POST-PAUSE UPDATE FROM USER: {new context}}
426
- ```
427
-
428
- Then invoke `/ftm-audit` via the Skill tool.
429
-
430
- ## Step 7: Archive the State File
431
-
432
- After the skill has been successfully invoked and the user is continuing their work, archive the consumed state file so it doesn't interfere with future pause/resume cycles.
433
-
434
- ```bash
435
- mkdir -p ~/.claude/ftm-state/archive
436
- mv ~/.claude/ftm-state/STATE.md ~/.claude/ftm-state/archive/STATE-$(date +%Y%m%d-%H%M%S).md
437
- ```
438
-
439
- Do this immediately after the skill is invoked, not after the full session completes. The state has been consumed — if the user needs to pause again, ftm-pause will create a new STATE.md from the current (now-continued) session.
440
-
441
- ## Edge Cases
442
-
443
- ### State file references a skill that isn't installed
444
- If the state says `skill: ftm-debug` but ftm-debug isn't in the skills directory, tell the user: "The saved session requires ftm-debug but that skill isn't available. Install it and try again."
445
-
446
- ### User wants to resume but also change direction
447
- If the user says something like "resume, but actually I want to go with option 2 instead of the microservices approach we chose," add this as a post-pause update and let the skill handle the direction change. Don't try to edit the state — just pass the new context along and the skill's natural conversation flow will handle it.
448
-
449
- ### Multiple state files
450
- If both `STATE.md` and `STATE-ftm-brainstorm.md` exist (from a session where multiple skills were paused), ask the user which one to resume. List them with their skill type and timestamp.
451
-
452
- ### Corrupted or incomplete state
453
- If the state file is missing critical sections (no "Next Step," no "Context Snapshot"), warn the user: "The state file is incomplete — it may have been saved during an error. I can try to resume with what's available, but some context may be missing. Alternatively, we can start fresh."
454
-
455
- ### The user runs /ftm-resume but there's nothing to resume
456
- If `~/.claude/ftm-state/` doesn't exist or contains no STATE.md:
457
- ```
458
- No saved ftm session found.
459
-
460
- To save a session for later:
461
- 1. Start any ftm skill (/ftm-brainstorm, /ftm-executor, /ftm-debug, /ftm-council, /ftm-audit)
462
- 2. When you need to stop, use /ftm-pause
463
- 3. In a new conversation, use /ftm-resume to continue
464
- ```
465
-
466
- ### Archived states
467
- If the user asks "do I have any old sessions?" or "what sessions have I saved?", check the archive:
468
- ```bash
469
- ls -la ~/.claude/ftm-state/archive/
470
- ```
471
- List the archived states with their skill type, timestamp, and phase. Offer to restore any of them (copy from archive to STATE.md, then run the normal resume flow).
472
-
473
- ## Requirements
474
-
475
- - reference: `~/.claude/ftm-state/STATE.md` | required | saved session state file from ftm-pause
476
- - reference: `../ftm-pause/references/protocols/SKILL-RESTORE-PROTOCOLS.md` | required | per-skill state field restoration instructions
477
- - reference: `../ftm-pause/references/protocols/VALIDATION.md` | required | validation protocol for state file integrity
478
- - reference: `~/.claude/ftm-state/archive/` | optional | archived prior state files
479
- - tool: `git` | optional | checking git state drift since session was paused
480
-
481
- ## Risk
482
-
483
- - level: low_write
484
- - scope: archives STATE.md by moving it to ~/.claude/ftm-state/archive/; invokes the target ftm skill with restored context; does not modify project source files
485
- - rollback: copy archived STATE.md back from archive if restoration was incorrect
486
-
487
- ## Approval Gates
488
-
489
- - trigger: validation finds warnings (git drift, stale state, missing artifacts) | action: present consolidated validation summary and require user acknowledgment before proceeding
490
- - trigger: validation finds block-level failure | action: stop and report failure; do not invoke target skill
491
- - trigger: user provides new context along with "yes" | action: capture as post-pause update and inject into skill invocation
492
- - complexity_routing: micro → auto | small → auto | medium → auto | large → auto | xl → auto
493
-
494
- ## Fallbacks
495
-
496
- - condition: STATE.md not found | action: report "No saved ftm session found" with instructions for saving sessions
497
- - condition: STATE.md frontmatter missing required fields | action: report validation failure with specific missing fields
498
- - condition: multiple STATE.md files (STATE.md + STATE-*.md) | action: ask user which to resume, list each with skill type and timestamp
499
- - condition: state is >7 days old | action: flag as potentially stale with warning, require user acknowledgment
500
-
501
- ## Capabilities
502
-
503
- - cli: `git` | optional | branch and commit state validation
504
- - env: none required
505
-
506
- ## Event Payloads
507
-
508
- ### session_resumed
509
- - skill: string — "ftm-resume"
510
- - resumed_skill: string — the ftm skill that was re-invoked
511
- - phase: string — phase the session is resuming at
512
- - state_age_hours: number — how long ago the session was paused
513
- - post_pause_update: boolean — whether user provided new context
514
-
515
- ### task_completed
516
- - skill: string — "ftm-resume"
517
- - resumed_skill: string — the ftm skill re-invoked
518
- - state_file_archived: string — path where STATE.md was archived
1
+ ---
2
+ name: ftm-resume
3
+ description: Resume a previously paused ftm skill session from saved state. Use when user says "resume", "continue where we left off", "ftm resume", "pick up", or starts a new conversation wanting to continue previous ftm work.
4
+ ---
5
+
6
+ ## Events
7
+
8
+ ### Emits
9
+ - `session_resumed` — when a saved session state has been validated and the appropriate ftm skill is re-invoked with restored context
10
+ - `task_completed` — when the resume workflow finishes (skill re-invoked and state file archived)
11
+
12
+ ### Listens To
13
+ (none — ftm-resume is explicitly invoked by the user and does not respond to events)
14
+
15
+ # FTM Resume — Session State Restoration
16
+
17
+ Read a saved ftm session state file and seamlessly continue the workflow in a fresh conversation. The user should feel like they never left — same context, same decisions, same progress, picking up at exactly the right step.
18
+
19
+ ## Why This Exists
20
+
21
+ FTM skills are long-running, multi-phase workflows. A brainstorm session might span 10+ turns of research and questioning. An executor session might be mid-way through wave 2 of a 5-wave plan. A debug war room might have 4 investigation agents completed and a solver mid-attempt. When these sessions end — whether by choice, crash, or context exhaustion — the work shouldn't be lost. This skill reads the state file that ftm-pause saved and reconstructs the session so the appropriate ftm skill can continue exactly where it stopped.
22
+
23
+ ## Step 1: Read the State File
24
+
25
+ Read `~/.claude/ftm-state/STATE.md`.
26
+
27
+ If the file doesn't exist:
28
+ ```
29
+ No saved ftm session found at ~/.claude/ftm-state/STATE.md
30
+
31
+ To save a session mid-workflow, use /ftm-pause during any active ftm skill.
32
+ ```
33
+ Stop here.
34
+
35
+ If the file exists but can't be parsed (missing frontmatter, malformed YAML):
36
+ ```
37
+ Found state file but it appears corrupted — missing required frontmatter fields.
38
+ Expected fields: skill, phase, timestamp, project_dir
39
+
40
+ Would you like me to try to extract what I can from the file, or should we start fresh?
41
+ ```
42
+
43
+ ## Step 2: Parse the Frontmatter
44
+
45
+ Extract the YAML frontmatter fields:
46
+
47
+ | Field | Required | Purpose |
48
+ |-------|----------|---------|
49
+ | `skill` | Yes | Which ftm skill to resume (brainstorm, executor, debug, council, audit) |
50
+ | `phase` | Yes | Which phase the skill was in |
51
+ | `phase_detail` | No | Human-readable detail about position within the phase |
52
+ | `timestamp` | Yes | When the session was saved |
53
+ | `project_dir` | Yes | The project directory the session was working in |
54
+ | `git_branch` | No | The git branch at time of save |
55
+ | `git_commit` | No | The HEAD commit at time of save |
56
+
57
+ ## Step 3: Validate the Environment
58
+
59
+ Run these checks before attempting to resume. Each check either passes, warns, or blocks.
60
+
61
+ ### Check 1: Project directory exists
62
+
63
+ ```bash
64
+ test -d "{project_dir}" && echo "EXISTS" || echo "MISSING"
65
+ ```
66
+
67
+ - **EXISTS**: Pass. Continue.
68
+ - **MISSING**: Block. "The project directory `{project_dir}` no longer exists. Cannot resume — the codebase isn't available. Did the project move?"
69
+
70
+ ### Check 2: Git state (if git fields present)
71
+
72
+ ```bash
73
+ cd "{project_dir}" && git branch --show-current && git rev-parse --short HEAD
74
+ ```
75
+
76
+ Compare current branch and commit against saved values.
77
+
78
+ - **Same branch, same commit**: Perfect — nothing changed.
79
+ - **Same branch, different commit**: Warn. "The codebase has been modified since the session was saved. {N} new commits on `{branch}` since `{saved_commit}`." Show the commit log between saved and current. Ask the user if they want to continue anyway or review changes first.
80
+ - **Different branch**: Warn. "You're now on branch `{current}` but the session was saved on `{saved_branch}`. Would you like to switch back to `{saved_branch}`, or continue on `{current}`?"
81
+
82
+ ### Check 3: Worktree branches (for executor and debug)
83
+
84
+ If the state file references worktree branches:
85
+
86
+ ```bash
87
+ cd "{project_dir}" && git worktree list
88
+ git branch --list "plan-exec/*" "debug/*"
89
+ ```
90
+
91
+ - **All referenced branches exist**: Pass.
92
+ - **Some missing**: Warn. List which branches are missing. "These worktree branches from the saved session no longer exist: {list}. Tasks associated with these branches may need to be re-executed."
93
+ - **All missing**: Warn more strongly. "All worktree branches from the saved session have been cleaned up. Completed task work may have been merged already. In-progress tasks will need to restart."
94
+
95
+ ### Check 4: Plan files (for executor)
96
+
97
+ If the state references a plan file:
98
+
99
+ ```bash
100
+ test -f "{plan_path}" && echo "EXISTS" || echo "MISSING"
101
+ ```
102
+
103
+ - **EXISTS**: Pass.
104
+ - **MISSING**: Block (for executor). "The plan file `{plan_path}` no longer exists. Cannot resume executor without a plan. Do you have the plan elsewhere?"
105
+
106
+ ### Check 5: Research/investigation files (for debug)
107
+
108
+ Check for any referenced artifact files (RESEARCH-FINDINGS.md, HYPOTHESES.md, REPRODUCTION.md, etc.):
109
+
110
+ ```bash
111
+ for f in {artifact_paths}; do test -f "$f" && echo "$f: EXISTS" || echo "$f: MISSING"; done
112
+ ```
113
+
114
+ - **All exist**: Pass.
115
+ - **Some missing**: Warn. The state file should contain the key content from these files, so they're reconstructible. Note which are missing.
116
+
117
+ ### Check 6: Staleness (all skills)
118
+
119
+ Calculate the age of the saved state:
120
+
121
+ ```bash
122
+ # Compare saved timestamp to current time
123
+ ```
124
+
125
+ - **< 24 hours**: Fresh. No warning needed.
126
+ - **1-7 days**: Mild staleness. Note it but proceed: "This session is {N} days old. The codebase may have changed — check the git log above."
127
+ - **> 7 days**: Stale warning. Present explicitly:
128
+ ```
129
+ This session was saved 12 days ago. The codebase has likely changed significantly.
130
+
131
+ Options:
132
+ 1. Resume anyway — I'll use the saved context but some references may be outdated
133
+ 2. Resume with a fresh repo scan — I'll re-run Phase 0 to update project context, then continue from where you left off
134
+ 3. Start fresh — discard this state and begin a new session
135
+
136
+ Which would you prefer?
137
+ ```
138
+
139
+ If the user picks option 2, run Phase 0 of the relevant skill (repo scan for brainstorm, plan re-read for executor, codebase reconnaissance for debug) with fresh data, then merge the new scan with the saved state — keeping all decisions, answers, and progress but updating the project context.
140
+
141
+ ## Step 4: Present the Resume Summary
142
+
143
+ After all validation checks pass (or the user acknowledges warnings), present the resume:
144
+
145
+ ### For ftm-brainstorm:
146
+ ```
147
+ Resuming ftm-brainstorm session from {timestamp}
148
+ Project: {project_dir}
149
+
150
+ Where we left off:
151
+ Phase: {phase} — {phase_detail}
152
+ Path: {A or B}
153
+ Research sprints completed: {N}
154
+ Challenge turns completed: {N}
155
+ Decisions locked: {N}
156
+ - {decision 1}
157
+ - {decision 2}
158
+ - ...
159
+ Open questions: {N}
160
+ - {question 1}
161
+ - {question 2}
162
+
163
+ Next step:
164
+ {next_step from state file}
165
+
166
+ Ready to continue? (or type new context to add information before resuming)
167
+ ```
168
+
169
+ ### For ftm-executor:
170
+ ```
171
+ Resuming ftm-executor session from {timestamp}
172
+ Project: {project_dir}
173
+ Plan: {plan_path}
174
+
175
+ Where we left off:
176
+ Wave: {current_wave} of {total_waves}
177
+ Tasks: {completed}/{total} complete
178
+ Done: {list of completed task numbers and titles}
179
+ In progress: {list with agent assignments}
180
+ Pending: {list}
181
+ Failed/Blocked: {list with reasons}
182
+ Worktrees: {N active}
183
+ Last audit: {result}
184
+
185
+ Next step:
186
+ {next_step from state file}
187
+
188
+ Ready to continue? (or type new context to add information before resuming)
189
+ ```
190
+
191
+ ### For ftm-debug:
192
+ ```
193
+ Resuming ftm-debug war room from {timestamp}
194
+ Project: {project_dir}
195
+
196
+ Where we left off:
197
+ Phase: {phase} — {phase_detail}
198
+ Problem: {one-line problem summary}
199
+ Investigation status:
200
+ Instrumenter: {complete/pending} {brief finding if complete}
201
+ Researcher: {complete/pending} {brief finding if complete}
202
+ Reproducer: {complete/pending} {brief finding if complete}
203
+ Hypothesizer: {complete/pending} {top hypothesis if complete}
204
+ Solver attempts: {N}
205
+ Reviewer verdict: {if any}
206
+ Worktrees: {list with status}
207
+
208
+ Next step:
209
+ {next_step from state file}
210
+
211
+ Ready to continue? (or type new context to add information before resuming)
212
+ ```
213
+
214
+ ### For ftm-council:
215
+ ```
216
+ Resuming ftm-council session from {timestamp}
217
+ Project: {project_dir}
218
+
219
+ Where we left off:
220
+ Council prompt: {brief summary}
221
+ Round: {N} of 5
222
+ Positions:
223
+ Claude: {one-line position}
224
+ Codex: {one-line position}
225
+ Gemini: {one-line position}
226
+ Consensus: {Yes — X and Y agree / No — still diverging}
227
+
228
+ Next step:
229
+ {next_step from state file}
230
+
231
+ Ready to continue? (or type new context to add information before resuming)
232
+ ```
233
+
234
+ ### For ftm-audit:
235
+ ```
236
+ Resuming ftm-audit session from {timestamp}
237
+ Project: {project_dir}
238
+
239
+ Where we left off:
240
+ Trigger: {what triggered the audit}
241
+ Phase 0 (patterns): {complete/pending}
242
+ Layer 1 (knip): {complete — N findings / pending}
243
+ Layer 2 (adversarial): {complete — N findings / pending}
244
+ Layer 3 (auto-fix): {N fixed, N manual / pending}
245
+ Status: {PASS/FAIL/in-progress}
246
+
247
+ Next step:
248
+ {next_step from state file}
249
+
250
+ Ready to continue? (or type new context to add information before resuming)
251
+ ```
252
+
253
+ ## Step 5: Handle User Response
254
+
255
+ The user can respond in three ways:
256
+
257
+ ### "Yes" / "Continue" / "Go"
258
+ Proceed directly to Step 6 (invoke the skill).
259
+
260
+ ### New context / additional information
261
+ The user may say "yes, but also..." or provide new information (the bug now has a new symptom, requirements changed, they thought of something overnight). Capture this new context and incorporate it into the state before invoking the skill. Add it to the "Context Snapshot" as a "Post-pause update" section.
262
+
263
+ ### "Start fresh" / "Never mind"
264
+ Archive the state file (see Step 7) and tell the user: "State archived. You can start a fresh session with /ftm-{skill}."
265
+
266
+ ## Step 6: Invoke the Appropriate Panda Skill
267
+
268
+ This is the critical step. You need to invoke the ftm skill with the full saved context injected so it picks up exactly where it left off, not from the beginning.
269
+
270
+ **How to do this:** Construct a comprehensive context injection that tells the skill exactly where it is. The skill will receive this as its starting context instead of starting from scratch.
271
+
272
+ ### For ftm-brainstorm:
273
+
274
+ Invoke the ftm-brainstorm skill with the following context preamble:
275
+
276
+ ```
277
+ RESUMING FROM SAVED STATE — DO NOT START FROM PHASE 0.
278
+
279
+ This is a resumed session. All prior phases and turns have been completed as described below.
280
+ Pick up at exactly the point described in "Next Step." Do not re-ask questions that have
281
+ already been answered. Do not re-run research sprints that have already completed. Do not
282
+ re-present suggestions the user has already responded to.
283
+
284
+ PROJECT CONTEXT (from Phase 0 scan — already completed):
285
+ {paste full Phase 0 results from state}
286
+
287
+ INTAKE COMPLETE (Phase 1 — already completed):
288
+ {paste all rounds, answers, and research sprint results from state}
289
+
290
+ RESEARCH TURNS COMPLETED (Phase 2 — {N} turns done):
291
+ {paste each turn's suggestions, challenges, user responses, and direction from state}
292
+
293
+ ACCUMULATED DECISIONS:
294
+ {paste decisions list from state}
295
+
296
+ OPEN QUESTIONS:
297
+ {paste open questions from state}
298
+
299
+ CURRENT DIRECTION:
300
+ {paste current direction from state}
301
+
302
+ NEXT STEP:
303
+ {paste next step from state — this is where you pick up}
304
+
305
+ {if post-pause update exists: POST-PAUSE UPDATE FROM USER: {new context}}
306
+ ```
307
+
308
+ Then invoke `/ftm-brainstorm` via the Skill tool. The brainstorm skill will see this context and should continue from the specified point — running the next research sprint, asking the next question, or generating the next section of the plan.
309
+
310
+ ### For ftm-executor:
311
+
312
+ ```
313
+ RESUMING FROM SAVED STATE — DO NOT START FROM PHASE 1.
314
+
315
+ Plan file: {plan_path}
316
+ Plan has been analyzed. Agent team has been assembled. Execution is in progress.
317
+
318
+ COMPLETED TASKS:
319
+ {for each completed task: task number, title, status, commits, audit result}
320
+
321
+ IN-PROGRESS TASKS:
322
+ {task details, agent assignments, what's been done}
323
+
324
+ PENDING TASKS:
325
+ {task list}
326
+
327
+ FAILED/BLOCKED TASKS:
328
+ {task details with error information}
329
+
330
+ ACTIVE WORKTREES:
331
+ {branch names, paths, status}
332
+
333
+ CURRENT WAVE: {N}
334
+ NEXT STEP: {what to do next — dispatch next wave, retry failed task, merge completed work, etc.}
335
+
336
+ {if post-pause update: POST-PAUSE UPDATE FROM USER: {new context}}
337
+ ```
338
+
339
+ Then invoke `/ftm-executor {plan_path}` via the Skill tool.
340
+
341
+ ### For ftm-debug:
342
+
343
+ ```
344
+ RESUMING FROM SAVED STATE — DO NOT START FROM PHASE 0.
345
+
346
+ PROBLEM STATEMENT:
347
+ {original problem from state}
348
+
349
+ CODEBASE RECONNAISSANCE (Phase 0 — already completed):
350
+ {full recon results from state}
351
+
352
+ INVESTIGATION PLAN:
353
+ {the plan from state}
354
+
355
+ INVESTIGATION RESULTS (Phase 1):
356
+ Instrumenter: {full report or "not yet run"}
357
+ Researcher: {full report or "not yet run"}
358
+ Reproducer: {full report or "not yet run"}
359
+ Hypothesizer: {full report or "not yet run"}
360
+
361
+ SYNTHESIS (Phase 2):
362
+ {cross-reference analysis if completed}
363
+
364
+ SOLVER ATTEMPTS:
365
+ {list of attempts, hypotheses tried, commits, outcomes}
366
+
367
+ REVIEWER VERDICTS:
368
+ {list of verdicts if any}
369
+
370
+ ACTIVE WORKTREES:
371
+ {branch names, paths, status}
372
+
373
+ NEXT STEP: {what to do — run remaining investigation agents, synthesize, solve, review, etc.}
374
+
375
+ {if post-pause update: POST-PAUSE UPDATE FROM USER: {new context}}
376
+ ```
377
+
378
+ Then invoke `/ftm-debug` via the Skill tool.
379
+
380
+ ### For ftm-council:
381
+
382
+ ```
383
+ RESUMING FROM SAVED STATE — DO NOT START FROM STEP 0.
384
+
385
+ COUNCIL PROMPT:
386
+ {the framed problem}
387
+
388
+ COMPLETED ROUNDS:
389
+ {for each round: each model's full research, position, reasoning, concerns, confidence}
390
+ {for rebuttal rounds: updated positions, new evidence, responses}
391
+
392
+ ALIGNMENT STATUS:
393
+ {agreement areas, divergence points, majority forming?}
394
+
395
+ CURRENT ROUND: {N}
396
+ NEXT STEP: {run next rebuttal round, check consensus, present verdict, etc.}
397
+
398
+ {if post-pause update: POST-PAUSE UPDATE FROM USER: {new context}}
399
+ ```
400
+
401
+ Then invoke `/ftm-council` via the Skill tool.
402
+
403
+ ### For ftm-audit:
404
+
405
+ ```
406
+ RESUMING FROM SAVED STATE — DO NOT START FROM PHASE 0.
407
+
408
+ AUDIT TRIGGER: {what triggered it}
409
+ SCOPE: {files/project}
410
+
411
+ PROJECT PATTERNS (Phase 0 — already completed):
412
+ {detected framework, dimensions, configuration}
413
+
414
+ LAYER 1 RESULTS:
415
+ {knip findings if completed, or "not yet run"}
416
+
417
+ LAYER 2 RESULTS:
418
+ {adversarial findings if completed, or "not yet run"}
419
+
420
+ LAYER 3 RESULTS:
421
+ {fixes applied, manual items, iteration count}
422
+
423
+ NEXT STEP: {run remaining layers, apply fixes, re-verify, etc.}
424
+
425
+ {if post-pause update: POST-PAUSE UPDATE FROM USER: {new context}}
426
+ ```
427
+
428
+ Then invoke `/ftm-audit` via the Skill tool.
429
+
430
+ ## Step 7: Archive the State File
431
+
432
+ After the skill has been successfully invoked and the user is continuing their work, archive the consumed state file so it doesn't interfere with future pause/resume cycles.
433
+
434
+ ```bash
435
+ mkdir -p ~/.claude/ftm-state/archive
436
+ mv ~/.claude/ftm-state/STATE.md ~/.claude/ftm-state/archive/STATE-$(date +%Y%m%d-%H%M%S).md
437
+ ```
438
+
439
+ Do this immediately after the skill is invoked, not after the full session completes. The state has been consumed — if the user needs to pause again, ftm-pause will create a new STATE.md from the current (now-continued) session.
440
+
441
+ ## Edge Cases
442
+
443
+ ### State file references a skill that isn't installed
444
+ If the state says `skill: ftm-debug` but ftm-debug isn't in the skills directory, tell the user: "The saved session requires ftm-debug but that skill isn't available. Install it and try again."
445
+
446
+ ### User wants to resume but also change direction
447
+ If the user says something like "resume, but actually I want to go with option 2 instead of the microservices approach we chose," add this as a post-pause update and let the skill handle the direction change. Don't try to edit the state — just pass the new context along and the skill's natural conversation flow will handle it.
448
+
449
+ ### Multiple state files
450
+ If both `STATE.md` and `STATE-ftm-brainstorm.md` exist (from a session where multiple skills were paused), ask the user which one to resume. List them with their skill type and timestamp.
451
+
452
+ ### Corrupted or incomplete state
453
+ If the state file is missing critical sections (no "Next Step," no "Context Snapshot"), warn the user: "The state file is incomplete — it may have been saved during an error. I can try to resume with what's available, but some context may be missing. Alternatively, we can start fresh."
454
+
455
+ ### The user runs /ftm-resume but there's nothing to resume
456
+ If `~/.claude/ftm-state/` doesn't exist or contains no STATE.md:
457
+ ```
458
+ No saved ftm session found.
459
+
460
+ To save a session for later:
461
+ 1. Start any ftm skill (/ftm-brainstorm, /ftm-executor, /ftm-debug, /ftm-council, /ftm-audit)
462
+ 2. When you need to stop, use /ftm-pause
463
+ 3. In a new conversation, use /ftm-resume to continue
464
+ ```
465
+
466
+ ### Archived states
467
+ If the user asks "do I have any old sessions?" or "what sessions have I saved?", check the archive:
468
+ ```bash
469
+ ls -la ~/.claude/ftm-state/archive/
470
+ ```
471
+ List the archived states with their skill type, timestamp, and phase. Offer to restore any of them (copy from archive to STATE.md, then run the normal resume flow).
472
+
473
+ ## Requirements
474
+
475
+ - reference: `~/.claude/ftm-state/STATE.md` | required | saved session state file from ftm-pause
476
+ - reference: `../ftm-pause/references/protocols/SKILL-RESTORE-PROTOCOLS.md` | required | per-skill state field restoration instructions
477
+ - reference: `../ftm-pause/references/protocols/VALIDATION.md` | required | validation protocol for state file integrity
478
+ - reference: `~/.claude/ftm-state/archive/` | optional | archived prior state files
479
+ - tool: `git` | optional | checking git state drift since session was paused
480
+
481
+ ## Risk
482
+
483
+ - level: low_write
484
+ - scope: archives STATE.md by moving it to ~/.claude/ftm-state/archive/; invokes the target ftm skill with restored context; does not modify project source files
485
+ - rollback: copy archived STATE.md back from archive if restoration was incorrect
486
+
487
+ ## Approval Gates
488
+
489
+ - trigger: validation finds warnings (git drift, stale state, missing artifacts) | action: present consolidated validation summary and require user acknowledgment before proceeding
490
+ - trigger: validation finds block-level failure | action: stop and report failure; do not invoke target skill
491
+ - trigger: user provides new context along with "yes" | action: capture as post-pause update and inject into skill invocation
492
+ - complexity_routing: micro → auto | small → auto | medium → auto | large → auto | xl → auto
493
+
494
+ ## Fallbacks
495
+
496
+ - condition: STATE.md not found | action: report "No saved ftm session found" with instructions for saving sessions
497
+ - condition: STATE.md frontmatter missing required fields | action: report validation failure with specific missing fields
498
+ - condition: multiple STATE.md files (STATE.md + STATE-*.md) | action: ask user which to resume, list each with skill type and timestamp
499
+ - condition: state is >7 days old | action: flag as potentially stale with warning, require user acknowledgment
500
+
501
+ ## Capabilities
502
+
503
+ - cli: `git` | optional | branch and commit state validation
504
+ - env: none required
505
+
506
+ ## Event Payloads
507
+
508
+ ### session_resumed
509
+ - skill: string — "ftm-resume"
510
+ - resumed_skill: string — the ftm skill that was re-invoked
511
+ - phase: string — phase the session is resuming at
512
+ - state_age_hours: number — how long ago the session was paused
513
+ - post_pause_update: boolean — whether user provided new context
514
+
515
+ ### task_completed
516
+ - skill: string — "ftm-resume"
517
+ - resumed_skill: string — the ftm skill re-invoked
518
+ - state_file_archived: string — path where STATE.md was archived