feed-the-machine 1.6.0 → 1.7.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 (269) hide show
  1. package/LICENSE +21 -21
  2. package/README.md +170 -170
  3. package/bin/brain.py +1340 -0
  4. package/bin/convert_claude_skills_to_codex.py +490 -0
  5. package/bin/generate-manifest.mjs +463 -463
  6. package/bin/harden_codex_skills.py +141 -0
  7. package/bin/install.mjs +491 -491
  8. package/bin/migrate-eng-buddy-data.py +875 -0
  9. package/bin/playbook_engine/__init__.py +1 -0
  10. package/bin/playbook_engine/conftest.py +8 -0
  11. package/bin/playbook_engine/extractor.py +33 -0
  12. package/bin/playbook_engine/manager.py +102 -0
  13. package/bin/playbook_engine/models.py +84 -0
  14. package/bin/playbook_engine/registry.py +35 -0
  15. package/bin/playbook_engine/test_extractor.py +72 -0
  16. package/bin/playbook_engine/test_integration.py +129 -0
  17. package/bin/playbook_engine/test_manager.py +85 -0
  18. package/bin/playbook_engine/test_models.py +166 -0
  19. package/bin/playbook_engine/test_registry.py +67 -0
  20. package/bin/playbook_engine/test_tracer.py +86 -0
  21. package/bin/playbook_engine/tracer.py +93 -0
  22. package/bin/tasks_db.py +456 -0
  23. package/docs/HOOKS.md +243 -243
  24. package/docs/INBOX.md +233 -233
  25. package/ftm/SKILL.md +125 -122
  26. package/ftm-audit/SKILL.md +623 -623
  27. package/ftm-audit/references/protocols/PROJECT-PATTERNS.md +91 -91
  28. package/ftm-audit/references/protocols/RUNTIME-WIRING.md +66 -66
  29. package/ftm-audit/references/protocols/WIRING-CONTRACTS.md +135 -135
  30. package/ftm-audit/references/strategies/AUTO-FIX-STRATEGIES.md +69 -69
  31. package/ftm-audit/references/templates/REPORT-FORMAT.md +96 -96
  32. package/ftm-audit/scripts/run-knip.sh +23 -23
  33. package/ftm-audit.yml +2 -2
  34. package/ftm-brainstorm/SKILL.md +1003 -498
  35. package/ftm-brainstorm/evals/evals.json +180 -100
  36. package/ftm-brainstorm/evals/promptfoo.yaml +109 -109
  37. package/ftm-brainstorm/references/agent-prompts.md +552 -224
  38. package/ftm-brainstorm/references/plan-template.md +209 -121
  39. package/ftm-brainstorm.yml +2 -2
  40. package/ftm-browse/SKILL.md +454 -454
  41. package/ftm-browse/daemon/browser-manager.ts +206 -206
  42. package/ftm-browse/daemon/bun.lock +30 -30
  43. package/ftm-browse/daemon/cli.ts +347 -347
  44. package/ftm-browse/daemon/commands.ts +410 -410
  45. package/ftm-browse/daemon/main.ts +357 -357
  46. package/ftm-browse/daemon/package.json +17 -17
  47. package/ftm-browse/daemon/server.ts +189 -189
  48. package/ftm-browse/daemon/snapshot.ts +519 -519
  49. package/ftm-browse/daemon/tsconfig.json +22 -22
  50. package/ftm-browse.yml +4 -4
  51. package/ftm-capture/SKILL.md +370 -370
  52. package/ftm-capture.yml +4 -4
  53. package/ftm-codex-gate/SKILL.md +361 -361
  54. package/ftm-codex-gate.yml +2 -2
  55. package/ftm-config/SKILL.md +422 -345
  56. package/ftm-config.default.yml +125 -82
  57. package/ftm-config.yml +44 -2
  58. package/ftm-council/SKILL.md +416 -416
  59. package/ftm-council/references/prompts/CLAUDE-INVESTIGATION.md +60 -60
  60. package/ftm-council/references/prompts/CODEX-INVESTIGATION.md +58 -58
  61. package/ftm-council/references/prompts/GEMINI-INVESTIGATION.md +58 -58
  62. package/ftm-council/references/prompts/REBUTTAL-TEMPLATE.md +57 -57
  63. package/ftm-council/references/protocols/PREREQUISITES.md +47 -47
  64. package/ftm-council/references/protocols/STEP-0-FRAMING.md +46 -46
  65. package/ftm-council.yml +2 -2
  66. package/ftm-dashboard/SKILL.md +163 -163
  67. package/ftm-dashboard.yml +4 -4
  68. package/ftm-debug/SKILL.md +1037 -1037
  69. package/ftm-debug/references/phases/PHASE-0-INTAKE.md +58 -58
  70. package/ftm-debug/references/phases/PHASE-1-TRIAGE.md +46 -46
  71. package/ftm-debug/references/phases/PHASE-2-WAR-ROOM-AGENTS.md +279 -279
  72. package/ftm-debug/references/phases/PHASE-3-TO-6-EXECUTION.md +436 -436
  73. package/ftm-debug/references/protocols/BLACKBOARD.md +86 -86
  74. package/ftm-debug/references/protocols/EDGE-CASES.md +103 -103
  75. package/ftm-debug.yml +2 -2
  76. package/ftm-diagram/SKILL.md +277 -277
  77. package/ftm-diagram.yml +2 -2
  78. package/ftm-executor/SKILL.md +777 -777
  79. package/ftm-executor/references/STYLE-TEMPLATE.md +73 -73
  80. package/ftm-executor/references/phases/PHASE-0-VERIFICATION.md +62 -62
  81. package/ftm-executor/references/phases/PHASE-2-AGENT-ASSEMBLY.md +34 -34
  82. package/ftm-executor/references/phases/PHASE-3-WORKTREES.md +38 -38
  83. package/ftm-executor/references/phases/PHASE-4-5-AUDIT.md +72 -72
  84. package/ftm-executor/references/phases/PHASE-4-DISPATCH.md +66 -66
  85. package/ftm-executor/references/phases/PHASE-5-5-CODEX-GATE.md +73 -73
  86. package/ftm-executor/references/protocols/DOCUMENTATION-BOOTSTRAP.md +36 -36
  87. package/ftm-executor/references/protocols/MODEL-PROFILE.md +59 -59
  88. package/ftm-executor/references/protocols/PROGRESS-TRACKING.md +66 -66
  89. package/ftm-executor/runtime/ftm-runtime.mjs +252 -252
  90. package/ftm-executor/runtime/package.json +8 -8
  91. package/ftm-executor.yml +2 -2
  92. package/ftm-git/SKILL.md +441 -441
  93. package/ftm-git/evals/evals.json +26 -26
  94. package/ftm-git/evals/promptfoo.yaml +75 -75
  95. package/ftm-git/hooks/post-commit-experience.sh +92 -92
  96. package/ftm-git/references/patterns/SECRET-PATTERNS.md +104 -104
  97. package/ftm-git/references/protocols/REMEDIATION.md +139 -139
  98. package/ftm-git/scripts/pre-commit-secrets.sh +110 -110
  99. package/ftm-git.yml +2 -2
  100. package/ftm-inbox/backend/__pycache__/main.cpython-314.pyc +0 -0
  101. package/ftm-inbox/backend/adapters/_retry.py +64 -64
  102. package/ftm-inbox/backend/adapters/base.py +230 -230
  103. package/ftm-inbox/backend/adapters/freshservice.py +104 -104
  104. package/ftm-inbox/backend/adapters/gmail.py +125 -125
  105. package/ftm-inbox/backend/adapters/jira.py +136 -136
  106. package/ftm-inbox/backend/adapters/registry.py +192 -192
  107. package/ftm-inbox/backend/adapters/slack.py +110 -110
  108. package/ftm-inbox/backend/db/connection.py +54 -54
  109. package/ftm-inbox/backend/db/schema.py +78 -78
  110. package/ftm-inbox/backend/executor/__init__.py +7 -7
  111. package/ftm-inbox/backend/executor/engine.py +149 -149
  112. package/ftm-inbox/backend/executor/step_runner.py +98 -98
  113. package/ftm-inbox/backend/main.py +103 -103
  114. package/ftm-inbox/backend/models/__init__.py +1 -1
  115. package/ftm-inbox/backend/models/unified_task.py +36 -36
  116. package/ftm-inbox/backend/planner/__init__.py +6 -6
  117. package/ftm-inbox/backend/planner/__pycache__/__init__.cpython-314.pyc +0 -0
  118. package/ftm-inbox/backend/planner/__pycache__/generator.cpython-314.pyc +0 -0
  119. package/ftm-inbox/backend/planner/__pycache__/schema.cpython-314.pyc +0 -0
  120. package/ftm-inbox/backend/planner/generator.py +127 -127
  121. package/ftm-inbox/backend/planner/schema.py +34 -34
  122. package/ftm-inbox/backend/requirements.txt +5 -5
  123. package/ftm-inbox/backend/routes/__pycache__/plan.cpython-314.pyc +0 -0
  124. package/ftm-inbox/backend/routes/execute.py +186 -186
  125. package/ftm-inbox/backend/routes/health.py +52 -52
  126. package/ftm-inbox/backend/routes/inbox.py +68 -68
  127. package/ftm-inbox/backend/routes/plan.py +271 -271
  128. package/ftm-inbox/bin/launchagent.mjs +91 -91
  129. package/ftm-inbox/bin/setup.mjs +188 -188
  130. package/ftm-inbox/bin/start.sh +10 -10
  131. package/ftm-inbox/bin/status.sh +17 -17
  132. package/ftm-inbox/bin/stop.sh +8 -8
  133. package/ftm-inbox/config.example.yml +55 -55
  134. package/ftm-inbox/package-lock.json +2898 -2898
  135. package/ftm-inbox/package.json +26 -26
  136. package/ftm-inbox/postcss.config.js +6 -6
  137. package/ftm-inbox/src/app.css +199 -199
  138. package/ftm-inbox/src/app.html +18 -18
  139. package/ftm-inbox/src/lib/api.ts +166 -166
  140. package/ftm-inbox/src/lib/components/ExecutionLog.svelte +81 -81
  141. package/ftm-inbox/src/lib/components/InboxFeed.svelte +143 -143
  142. package/ftm-inbox/src/lib/components/PlanStep.svelte +271 -271
  143. package/ftm-inbox/src/lib/components/PlanView.svelte +206 -206
  144. package/ftm-inbox/src/lib/components/StreamPanel.svelte +99 -99
  145. package/ftm-inbox/src/lib/components/TaskCard.svelte +190 -190
  146. package/ftm-inbox/src/lib/components/ui/EmptyState.svelte +63 -63
  147. package/ftm-inbox/src/lib/components/ui/KawaiiCard.svelte +86 -86
  148. package/ftm-inbox/src/lib/components/ui/PillButton.svelte +106 -106
  149. package/ftm-inbox/src/lib/components/ui/StatusBadge.svelte +67 -67
  150. package/ftm-inbox/src/lib/components/ui/StreamDrawer.svelte +149 -149
  151. package/ftm-inbox/src/lib/components/ui/ThemeToggle.svelte +80 -80
  152. package/ftm-inbox/src/lib/theme.ts +47 -47
  153. package/ftm-inbox/src/routes/+layout.svelte +76 -76
  154. package/ftm-inbox/src/routes/+page.svelte +401 -401
  155. package/ftm-inbox/svelte.config.js +12 -12
  156. package/ftm-inbox/tailwind.config.ts +63 -63
  157. package/ftm-inbox/tsconfig.json +13 -13
  158. package/ftm-inbox/vite.config.ts +6 -6
  159. package/ftm-intent/SKILL.md +241 -241
  160. package/ftm-intent.yml +2 -2
  161. package/ftm-manifest.json +3794 -3794
  162. package/ftm-map/SKILL.md +291 -291
  163. package/ftm-map/scripts/db.py +712 -712
  164. package/ftm-map/scripts/index.py +415 -415
  165. package/ftm-map/scripts/parser.py +224 -224
  166. package/ftm-map/scripts/queries/go-tags.scm +20 -20
  167. package/ftm-map/scripts/queries/javascript-tags.scm +35 -35
  168. package/ftm-map/scripts/queries/python-tags.scm +31 -31
  169. package/ftm-map/scripts/queries/ruby-tags.scm +19 -19
  170. package/ftm-map/scripts/queries/rust-tags.scm +37 -37
  171. package/ftm-map/scripts/queries/typescript-tags.scm +41 -41
  172. package/ftm-map/scripts/query.py +301 -301
  173. package/ftm-map/scripts/ranker.py +377 -377
  174. package/ftm-map/scripts/requirements.txt +5 -5
  175. package/ftm-map/scripts/setup-hooks.sh +27 -27
  176. package/ftm-map/scripts/setup.sh +56 -56
  177. package/ftm-map/scripts/test_db.py +364 -364
  178. package/ftm-map/scripts/test_parser.py +174 -174
  179. package/ftm-map/scripts/test_query.py +183 -183
  180. package/ftm-map/scripts/test_ranker.py +199 -199
  181. package/ftm-map/scripts/views.py +591 -591
  182. package/ftm-map.yml +2 -2
  183. package/ftm-mind/SKILL.md +201 -1943
  184. package/ftm-mind/evals/promptfoo.yaml +142 -142
  185. package/ftm-mind/references/blackboard-protocol.md +110 -0
  186. package/ftm-mind/references/blackboard-schema.md +328 -328
  187. package/ftm-mind/references/complexity-guide.md +110 -110
  188. package/ftm-mind/references/complexity-sizing.md +138 -0
  189. package/ftm-mind/references/decide-act-protocol.md +172 -0
  190. package/ftm-mind/references/direct-execution.md +51 -0
  191. package/ftm-mind/references/environment-discovery.md +77 -0
  192. package/ftm-mind/references/event-registry.md +319 -319
  193. package/ftm-mind/references/mcp-inventory.md +300 -296
  194. package/ftm-mind/references/ops-routing.md +47 -0
  195. package/ftm-mind/references/orient-protocol.md +234 -0
  196. package/ftm-mind/references/personality.md +40 -0
  197. package/ftm-mind/references/protocols/COMPLEXITY-SIZING.md +72 -72
  198. package/ftm-mind/references/protocols/MCP-HEURISTICS.md +32 -32
  199. package/ftm-mind/references/protocols/PLAN-APPROVAL.md +80 -80
  200. package/ftm-mind/references/reflexion-protocol.md +249 -249
  201. package/ftm-mind/references/routing/SCENARIOS.md +22 -22
  202. package/ftm-mind/references/routing-scenarios.md +35 -35
  203. package/ftm-mind.yml +2 -2
  204. package/ftm-ops.yml +4 -0
  205. package/ftm-pause/SKILL.md +395 -395
  206. package/ftm-pause/references/protocols/SKILL-RESTORE-PROTOCOLS.md +186 -186
  207. package/ftm-pause/references/protocols/VALIDATION.md +80 -80
  208. package/ftm-pause.yml +2 -2
  209. package/ftm-researcher/SKILL.md +275 -275
  210. package/ftm-researcher/evals/agent-diversity.yaml +17 -17
  211. package/ftm-researcher/evals/synthesis-quality.yaml +12 -12
  212. package/ftm-researcher/evals/trigger-accuracy.yaml +39 -39
  213. package/ftm-researcher/references/adaptive-search.md +116 -116
  214. package/ftm-researcher/references/agent-prompts.md +193 -193
  215. package/ftm-researcher/references/council-integration.md +193 -193
  216. package/ftm-researcher/references/output-format.md +203 -203
  217. package/ftm-researcher/references/synthesis-pipeline.md +165 -165
  218. package/ftm-researcher/scripts/score_credibility.py +234 -234
  219. package/ftm-researcher/scripts/validate_research.py +92 -92
  220. package/ftm-researcher.yml +2 -2
  221. package/ftm-resume/SKILL.md +518 -518
  222. package/ftm-resume/references/protocols/VALIDATION.md +172 -172
  223. package/ftm-resume.yml +2 -2
  224. package/ftm-retro/SKILL.md +380 -380
  225. package/ftm-retro/references/protocols/SCORING-RUBRICS.md +89 -89
  226. package/ftm-retro/references/templates/REPORT-FORMAT.md +109 -109
  227. package/ftm-retro.yml +2 -2
  228. package/ftm-routine/SKILL.md +170 -170
  229. package/ftm-routine.yml +4 -4
  230. package/ftm-state/blackboard/capabilities.json +5 -5
  231. package/ftm-state/blackboard/capabilities.schema.json +27 -27
  232. package/ftm-state/blackboard/context.json +37 -23
  233. package/ftm-state/blackboard/experiences/doom-statusline-fix.json +26 -0
  234. package/ftm-state/blackboard/experiences/hackathon-pages-site.json +26 -0
  235. package/ftm-state/blackboard/experiences/hindsight-sso-kickoff.json +42 -0
  236. package/ftm-state/blackboard/experiences/index.json +58 -9
  237. package/ftm-state/blackboard/experiences/learning-ragnarok-api-access.json +23 -0
  238. package/ftm-state/blackboard/experiences/nordlayer-members-auto-assign.json +26 -0
  239. package/ftm-state/blackboard/experiences/saml2aws-stale-session-fix.json +41 -0
  240. package/ftm-state/blackboard/patterns.json +6 -6
  241. package/ftm-state/schemas/context.schema.json +130 -130
  242. package/ftm-state/schemas/experience-index.schema.json +77 -77
  243. package/ftm-state/schemas/experience.schema.json +78 -78
  244. package/ftm-state/schemas/patterns.schema.json +44 -44
  245. package/ftm-upgrade/SKILL.md +194 -194
  246. package/ftm-upgrade/scripts/check-version.sh +76 -76
  247. package/ftm-upgrade/scripts/upgrade.sh +143 -143
  248. package/ftm-upgrade.yml +2 -2
  249. package/ftm-verify.yml +2 -2
  250. package/ftm.yml +2 -2
  251. package/hooks/ftm-auto-log.sh +137 -0
  252. package/hooks/ftm-blackboard-enforcer.sh +93 -93
  253. package/hooks/ftm-discovery-reminder.sh +90 -90
  254. package/hooks/ftm-drafts-gate.sh +61 -61
  255. package/hooks/ftm-event-logger.mjs +107 -107
  256. package/hooks/ftm-install-hooks.sh +240 -0
  257. package/hooks/ftm-learning-capture.sh +117 -0
  258. package/hooks/ftm-map-autodetect.sh +79 -79
  259. package/hooks/ftm-pending-sync-check.sh +22 -22
  260. package/hooks/ftm-plan-gate.sh +92 -92
  261. package/hooks/ftm-post-commit-trigger.sh +57 -57
  262. package/hooks/ftm-post-compaction.sh +138 -0
  263. package/hooks/ftm-pre-compaction.sh +147 -0
  264. package/hooks/ftm-session-end.sh +52 -0
  265. package/hooks/ftm-session-snapshot.sh +213 -0
  266. package/hooks/settings-template.json +81 -81
  267. package/install.sh +363 -363
  268. package/package.json +84 -84
  269. 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