feed-the-machine 1.6.1 → 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,395 +1,395 @@
1
- ---
2
- name: ftm-pause
3
- description: Save the current ftm skill session state so work can be resumed in a new conversation. Use when user says "pause", "save state", "I need to stop", "continue later", "ftm pause", "save progress", or is about to end a session mid-workflow. Works with any ftm skill (brainstorm, executor, debug, council, audit).
4
- ---
5
-
6
- ## Events
7
-
8
- ### Emits
9
- - `session_paused` — when the session state has been successfully serialized and written to disk
10
- - `task_completed` — when the pause workflow finishes (state file written and confirmation presented)
11
-
12
- ### Listens To
13
- (none — ftm-pause is explicitly invoked by the user and does not respond to events)
14
-
15
- # FTM Pause — Session State Capture
16
-
17
- Save the full state of any active ftm skill session to disk so it can be resumed in a new conversation with zero context loss. This skill understands the internal structure of every ftm skill and captures exactly what's needed to pick up where you left off.
18
-
19
- ## Why This Exists
20
-
21
- FTM skills — brainstorm, executor, debug, council, audit — are multi-phase, multi-turn workflows that accumulate significant context over time. Research findings, agent results, user decisions, worktree branches, plan progress — all of this lives in the conversation and dies when the conversation ends. A brainstorm session 8 turns deep with 3 completed research sprints and 2 rounds of questioning is hours of work that evaporates if the user needs to stop.
22
-
23
- This skill captures that state to a structured file that ftm-resume can read to reconstruct the session in a fresh conversation. The user loses nothing.
24
-
25
- ## Step 1: Detect the Active Panda Skill
26
-
27
- Scan the current conversation context to determine which ftm skill is active. Look for these signals:
28
-
29
- | Signal | Skill |
30
- |--------|-------|
31
- | Phase 0 repo scan, intake rounds, research sprints, 5-suggestion format, plan generation | **ftm-brainstorm** |
32
- | Plan analysis, agent team assembly, worktree setup, wave dispatch, task completion tracking | **ftm-executor** |
33
- | Problem intake, investigation plan, war room agents (instrumenter/researcher/reproducer/hypothesizer), solver/reviewer loop | **ftm-debug** |
34
- | Council prompt framing, multi-model dispatch (Claude/Codex/Gemini), rebuttal rounds, alignment checks | **ftm-council** |
35
- | Project pattern detection, knip analysis, adversarial audit, auto-fix, wiring contracts | **ftm-audit** |
36
-
37
- If no ftm skill is active, tell the user: "No active ftm session detected. This skill saves state for ftm-brainstorm, ftm-executor, ftm-debug, ftm-council, and ftm-audit sessions."
38
-
39
- If multiple skills have been invoked in the same conversation (e.g., brainstorm followed by executor), capture the most recently active one. If the user says which one to save, respect that.
40
-
41
- ## Step 2: Capture State by Skill Type
42
-
43
- ### ftm-brainstorm
44
-
45
- Capture all of the following that exist in the current session:
46
-
47
- **Phase tracking:**
48
- - Current phase (0, 1, 2, or 3)
49
- - If Phase 1: which round (1, 2, or 3), which path (A: Fresh Idea or B: Brain Dump)
50
- - If Phase 2: how many research+challenge turns have been completed
51
- - If Phase 3: which section of the plan has been presented (Vision, Tasks, Agents, or complete)
52
-
53
- **Phase 0 context:**
54
- - The full repo scan results (project type, tech stack, architecture, patterns, infrastructure, scale)
55
- - Whether the scan was skipped (no git repo) and any stack info gathered from the user instead
56
-
57
- **Phase 1 — Intake:**
58
- - The user's original idea/request (verbatim if short, summarized if long)
59
- - If Path B: the full brain dump extraction (decisions made, open questions, assumptions, contradictions, gaps)
60
- - All user answers from each completed round
61
- - Research Sprint 1 results (landscape context) — all findings from Web Researcher, GitHub Explorer, Competitive Analyst
62
- - Research Sprint 2 results (constraint-scoped research) — all findings from all three agents
63
- - If Path B: the novelty map (which claims are solved/partially solved/novel)
64
-
65
- **Phase 2 — Research + Challenge Loop:**
66
- - Every completed turn's 5 suggestions (or fewer if weak results) with evidence and links
67
- - Every challenge posed and the user's response
68
- - Every question asked and the user's answer
69
- - Accumulated decisions and direction chosen
70
- - Research agent results from each turn (summarized — full URLs and key findings, not raw agent output)
71
- - The current "direction" the brainstorm is heading (architecture chosen, scope narrowed, etc.)
72
-
73
- **Phase 3 — Plan Generation:**
74
- - Which sections have been presented and approved (Vision, Tasks, Agents/Waves)
75
- - The plan content generated so far
76
- - The plan file path if it's been saved
77
- - User feedback on each section
78
-
79
- ### ftm-executor
80
-
81
- **Plan context:**
82
- - Plan file path (absolute)
83
- - Plan title and summary
84
- - Total task count
85
- - Agent team composition (agent names, roles, task assignments)
86
-
87
- **Execution progress:**
88
- - Current wave number
89
- - For each task: status (pending / in-progress / complete / failed / blocked)
90
- - For completed tasks: commit hashes, audit results (pass/fail/auto-fixed), brief summary of what was done
91
- - For in-progress tasks: which agent is working on it, what's been done so far
92
- - For failed/blocked tasks: what went wrong, error details
93
-
94
- **Worktree state:**
95
- - List of all worktree branches and their paths
96
- - Which worktrees are active vs merged vs abandoned
97
- - Any merge results or conflicts encountered
98
- - The main/working branch name
99
-
100
- **Verification state:**
101
- - Post-task audit results for each completed task
102
- - Any manual intervention items outstanding
103
- - Full test suite status (last run result)
104
-
105
- ### ftm-debug
106
-
107
- **Problem context:**
108
- - The original problem statement (symptom, expected behavior, what's been tried, when it started, reproduction steps)
109
- - Codebase reconnaissance results (entry points, call graph, state flow, dependencies, recent changes, test coverage, config, error handling)
110
- - The investigation plan (likely category, which agents deployed, worktree strategy)
111
-
112
- **Phase 1 — Investigation results:**
113
- - Instrumenter report: what was instrumented, log point locations, DEBUG-INSTRUMENTATION.md content
114
- - Researcher report: findings with sources, relevance, solutions, confidence, RESEARCH-FINDINGS.md content
115
- - Reproducer report: trigger command, consistency, boundaries, minimal test path, REPRODUCTION.md content
116
- - Hypothesizer report: all hypotheses ranked with claims, mechanisms, code paths, evidence, HYPOTHESES.md content
117
-
118
- **Phase 2 — Synthesis & Solve:**
119
- - Cross-reference analysis (how findings align or conflict)
120
- - Recommended fix approach
121
- - Solver attempts: which hypotheses tried, what was implemented, commit hashes
122
- - FIX-SUMMARY.md content if fix was applied
123
-
124
- **Phase 3 — Review & Verify:**
125
- - Reviewer verdict (APPROVED / APPROVED WITH CHANGES / NEEDS REWORK)
126
- - REVIEW-VERDICT.md content
127
- - How many solver-reviewer iterations completed
128
- - Outstanding issues from review
129
-
130
- **Worktree state:**
131
- - debug-instrumentation branch and path
132
- - debug-reproduction branch and path
133
- - debug-fix branch and path (including any fix attempt sub-branches)
134
- - Which worktrees still exist vs cleaned up
135
-
136
- ### ftm-council
137
-
138
- **Council setup:**
139
- - The council prompt (the framed problem statement)
140
- - Whether the user confirmed/edited the prompt
141
- - Prerequisites check result (codex and gemini available?)
142
-
143
- **Deliberation state:**
144
- - Current round number (1-5)
145
- - For each completed round, each model's full response:
146
- - Research summary (what files examined, what was found)
147
- - Position (their stance)
148
- - Reasoning (with code references)
149
- - Concerns
150
- - Confidence level
151
- - For rebuttal rounds: each model's updated position, new evidence, responses to other models, remaining disagreements
152
- - Alignment analysis after each round (agreement areas, divergence points, different research paths, majority forming?)
153
-
154
- **Outcome:**
155
- - Whether consensus has been reached (and if so, which 2 models agreed)
156
- - The verdict if delivered (decision, agreed by, dissent, evidence basis)
157
- - If no consensus after 5 rounds: the synthesis and options presented
158
-
159
- ### ftm-audit
160
-
161
- **Trigger context:**
162
- - What triggered the audit (manual invocation, post-task from executor, specific files/scope)
163
- - Scope (full project, specific files, specific task's changes)
164
-
165
- **Phase 0 — Project patterns:**
166
- - Detected framework, router, state management, API layer, build tool
167
- - Active dimensions (D1-D5) and their configuration
168
- - Any unusual patterns noted
169
-
170
- **Layer 1 — knip results:**
171
- - Full knip output (categorized: unused files, unused exports, unused deps, unlisted deps, unresolved imports)
172
- - Each finding with file:line
173
-
174
- **Layer 2 — Adversarial audit results:**
175
- - Each finding with type, location, evidence, and which dimension failed
176
- - Wiring contract checks if applicable (which checks passed, which failed)
177
-
178
- **Layer 3 — Auto-fix results:**
179
- - Fixes applied (finding, fix description, verification result)
180
- - Manual intervention items (finding, reason auto-fix skipped, suggested action)
181
- - Re-verification results
182
- - Current iteration count (of max 3)
183
-
184
- **Final status:**
185
- - PASS or FAIL
186
- - Remaining issues count and details
187
-
188
- ## Step 3: Gather Artifacts
189
-
190
- Scan the conversation and filesystem for artifacts created during the session:
191
-
192
- - **Plan files**: `~/.claude/plans/*.md`
193
- - **Research documents**: Any `.md` files created by agents (RESEARCH-FINDINGS.md, HYPOTHESES.md, REPRODUCTION.md, FIX-SUMMARY.md, REVIEW-VERDICT.md, DEBUG-INSTRUMENTATION.md)
194
- - **Worktree branches**: Run `git worktree list` and `git branch --list "plan-exec/*" "debug/*"` to capture active branches
195
- - **Audit changelogs**: Any ftm audit changelog output
196
- - **Brain dump extractions**: If Path B brainstorm, the structured extraction
197
-
198
- For each artifact, record its absolute path and verify it still exists on disk.
199
-
200
- ## Step 4: Write the State File
201
-
202
- Create the directory if it doesn't exist:
203
- ```bash
204
- mkdir -p ~/.claude/ftm-state
205
- ```
206
-
207
- Write the state file to `~/.claude/ftm-state/STATE.md`:
208
-
209
- ```markdown
210
- ---
211
- skill: ftm-brainstorm
212
- phase: 2
213
- phase_detail: "Research+Challenge turn 5, user chose microservices direction"
214
- timestamp: 2026-03-16T23:50:00
215
- project_dir: /Users/path/to/project
216
- git_branch: main
217
- git_commit: abc1234
218
- ---
219
-
220
- # FTM Session State
221
-
222
- ## Active Skill
223
- ftm-brainstorm, Phase 2 (Research + Challenge Loop), Turn 5 of unlimited.
224
- Path A (Fresh Idea). User chose microservices direction in turn 3, currently exploring
225
- service mesh options.
226
-
227
- ## Context Snapshot
228
-
229
- ### Phase 0: Repo Scan
230
- [paste the full repo scan results here — project type, stack, architecture, patterns]
231
-
232
- ### Phase 1: Intake Summary
233
- **Round 1 answers:**
234
- - Core idea: [user's answer]
235
- - Target users: [user's answer]
236
- - Problem solved: [user's answer]
237
-
238
- **Research Sprint 1 (Landscape):**
239
- - Web Researcher: [key findings with URLs]
240
- - GitHub Explorer: [key repos with URLs]
241
- - Competitive Analyst: [key products/tools]
242
-
243
- **Round 2 answers:**
244
- - Architecture preference: [user's choice from Sprint 1 options]
245
- - Integration requirements: [user's answer]
246
- - Scale/environment: [user's answer]
247
-
248
- **Research Sprint 2 (Constraint-Scoped):**
249
- - [findings, more targeted than Sprint 1]
250
-
251
- **Round 3 answers:**
252
- - Success criteria: [user's answer]
253
- - v1 scope: [user's answer]
254
- - Non-negotiables: [user's answer]
255
-
256
- ### Phase 2: Research + Challenge Turns
257
- **Turn 1:**
258
- - Suggestions presented: [titles of 5 suggestions with brief summaries]
259
- - Challenges posed: [what was challenged]
260
- - User response: [what they said, what direction they chose]
261
-
262
- **Turn 2:**
263
- [same structure]
264
-
265
- [...repeat for each turn...]
266
-
267
- **Current direction:**
268
- [the accumulated picture of what's being built, architecture chosen, scope, key decisions]
269
-
270
- ## Decisions Made
271
- - Architecture: microservices with gRPC
272
- - Database: PostgreSQL with read replicas
273
- - Auth: OAuth2 with Okta integration
274
- - Scope: 3 core services for v1, defer analytics service
275
- - [every decision the user confirmed during the session]
276
-
277
- ## Open Questions
278
- - Service mesh: Istio vs Linkerd — research presented, user hasn't decided
279
- - Deployment: Kubernetes vs ECS — not yet discussed
280
- - [anything that was about to be explored]
281
-
282
- ## Next Step
283
- Phase 2, Turn 6. The user was presented with service mesh options (Istio vs Linkerd)
284
- in Turn 5 and needs to respond. After their response, research should focus on
285
- deployment strategy (Kubernetes vs ECS) as this is the last major architecture
286
- decision before the brainstorm can move to Phase 3.
287
-
288
- Research agents for next turn should query:
289
- - Web Researcher: "[chosen service mesh] production gotchas [stack]"
290
- - GitHub Explorer: "[chosen service mesh] example configurations"
291
- - Competitive Analyst: "companies using [chosen mesh] at [user's scale]"
292
-
293
- ## Artifacts
294
- - ~/.claude/plans/ — no plan generated yet (still in Phase 2)
295
- - No worktrees active (brainstorm doesn't use worktrees)
296
- - Research findings accumulated in conversation only (not saved to disk)
297
- ```
298
-
299
- **Formatting rules:**
300
- - Use the YAML frontmatter exactly as shown — ftm-resume parses it
301
- - The `phase_detail` field should be a human-readable one-liner about exactly where in the phase the user stopped
302
- - `git_commit` should be the current HEAD commit hash (run `git rev-parse --short HEAD`)
303
- - `git_branch` should be the current branch (run `git branch --show-current`)
304
- - The "Next Step" section is the most important — it must be specific enough that a fresh conversation can pick up without asking "where were we?"
305
- - Include actual content, not placeholders — paste real findings, real decisions, real URLs
306
-
307
- **What to omit:**
308
- - Raw agent prompts (the skill files already have these)
309
- - Full file contents that were read during the session (reference by path instead)
310
- - Conversation pleasantries or back-and-forth that doesn't carry information
311
-
312
- ## Step 5: Confirm to User
313
-
314
- After saving, present a confirmation:
315
-
316
- ```
317
- Session saved to ~/.claude/ftm-state/STATE.md
318
-
319
- Captured:
320
- - Skill: ftm-brainstorm
321
- - Phase: 2 (Research + Challenge Loop, Turn 5)
322
- - Decisions locked: 4 (architecture, database, auth, v1 scope)
323
- - Open questions: 2 (service mesh, deployment)
324
- - Research sprints completed: 2 (landscape + constraint-scoped)
325
- - Challenge turns completed: 5
326
- - Artifacts: none on disk (research in state file)
327
-
328
- To resume in a new conversation:
329
- /ftm-resume
330
- ```
331
-
332
- Adjust the "Captured" summary to match the actual skill. For ftm-executor, show task completion counts. For ftm-debug, show which investigation agents completed. For ftm-council, show round count and consensus status. For ftm-audit, show layer completion and finding counts.
333
-
334
- ## Edge Cases
335
-
336
- ### Multiple ftm skills in one conversation
337
- If the user ran brainstorm and then executor in the same conversation, ask which one to save. If they say "both," save the most recent one to STATE.md and the other to STATE-[skill].md in the same directory.
338
-
339
- ### Very early in a session
340
- If the user pauses in Phase 0 or the first step of a skill, there may be almost nothing to capture. That's fine — save what exists. Even a Phase 0 repo scan result saves the user from re-scanning.
341
-
342
- ### State file already exists
343
- Overwrite it. The previous state was either already resumed (and thus consumed) or abandoned. If the user wants to keep the old state, ftm-resume archives it before loading.
344
-
345
- ### No git repo
346
- Skip the git_branch and git_commit fields. Note `project_dir` only.
347
-
348
- ### Skill invoked but no user interaction yet
349
- If the skill was just invoked (e.g., the user said "/ftm-brainstorm" and Claude responded with the first question, but the user hasn't answered yet), save what exists — the Phase 0 scan and the initial question. The "Next Step" should note that the user needs to answer the first intake question.
350
-
351
- ### Large state
352
- Some sessions accumulate substantial state — 8+ brainstorm turns with full research results, or an executor session with 20+ tasks. Don't truncate. The state file can be large. FTM-resume needs all of it to reconstruct properly. If a single research finding has 5 URLs and detailed analysis, include all of it.
353
-
354
- ## Requirements
355
-
356
- - reference: `~/.claude/ftm-state/STATE.md` | optional | existing state file to overwrite
357
- - reference: `~/.claude/ftm-pause/references/protocols/SKILL-RESTORE-PROTOCOLS.md` | required | per-skill capture field specifications
358
- - reference: `~/.claude/ftm-pause/references/protocols/VALIDATION.md` | required | pre-write and post-write validation checklist
359
- - tool: `git` | optional | git branch and commit hash capture for state file
360
-
361
- ## Risk
362
-
363
- - level: low_write
364
- - scope: writes ~/.claude/ftm-state/STATE.md only; does not modify project source files or blackboard experiences; overwrites existing STATE.md without backup
365
- - rollback: no project mutations; prior STATE.md is overwritten (not backed up) by design
366
-
367
- ## Approval Gates
368
-
369
- - trigger: multiple skills active and unclear which to pause | action: ask user which skill state to save before writing
370
- - complexity_routing: micro → auto | small → auto | medium → auto | large → auto | xl → auto
371
-
372
- ## Fallbacks
373
-
374
- - condition: ~/.claude/ftm-state/ directory doesn't exist | action: create directory before writing STATE.md
375
- - condition: no ftm skill detected as active | action: report "No active ftm session detected" and list which skills this applies to
376
- - condition: git not available | action: omit git_branch and git_commit fields from state file frontmatter
377
- - condition: artifact files referenced in state don't exist on disk | action: note as "path recorded but file not found" in Artifacts section
378
-
379
- ## Capabilities
380
-
381
- - cli: `git` | optional | branch name and commit hash for state file metadata
382
-
383
- ## Event Payloads
384
-
385
- ### session_paused
386
- - skill: string — "ftm-pause"
387
- - saved_skill: string — the ftm skill whose state was saved
388
- - phase: string — phase at which the session was paused
389
- - state_file: string — absolute path to written STATE.md
390
- - artifacts_count: number — number of artifact paths recorded
391
-
392
- ### task_completed
393
- - skill: string — "ftm-pause"
394
- - saved_skill: string — the ftm skill whose state was saved
395
- - state_file: string — absolute path to STATE.md
1
+ ---
2
+ name: ftm-pause
3
+ description: Save the current ftm skill session state so work can be resumed in a new conversation. Use when user says "pause", "save state", "I need to stop", "continue later", "ftm pause", "save progress", or is about to end a session mid-workflow. Works with any ftm skill (brainstorm, executor, debug, council, audit).
4
+ ---
5
+
6
+ ## Events
7
+
8
+ ### Emits
9
+ - `session_paused` — when the session state has been successfully serialized and written to disk
10
+ - `task_completed` — when the pause workflow finishes (state file written and confirmation presented)
11
+
12
+ ### Listens To
13
+ (none — ftm-pause is explicitly invoked by the user and does not respond to events)
14
+
15
+ # FTM Pause — Session State Capture
16
+
17
+ Save the full state of any active ftm skill session to disk so it can be resumed in a new conversation with zero context loss. This skill understands the internal structure of every ftm skill and captures exactly what's needed to pick up where you left off.
18
+
19
+ ## Why This Exists
20
+
21
+ FTM skills — brainstorm, executor, debug, council, audit — are multi-phase, multi-turn workflows that accumulate significant context over time. Research findings, agent results, user decisions, worktree branches, plan progress — all of this lives in the conversation and dies when the conversation ends. A brainstorm session 8 turns deep with 3 completed research sprints and 2 rounds of questioning is hours of work that evaporates if the user needs to stop.
22
+
23
+ This skill captures that state to a structured file that ftm-resume can read to reconstruct the session in a fresh conversation. The user loses nothing.
24
+
25
+ ## Step 1: Detect the Active Panda Skill
26
+
27
+ Scan the current conversation context to determine which ftm skill is active. Look for these signals:
28
+
29
+ | Signal | Skill |
30
+ |--------|-------|
31
+ | Phase 0 repo scan, intake rounds, research sprints, 5-suggestion format, plan generation | **ftm-brainstorm** |
32
+ | Plan analysis, agent team assembly, worktree setup, wave dispatch, task completion tracking | **ftm-executor** |
33
+ | Problem intake, investigation plan, war room agents (instrumenter/researcher/reproducer/hypothesizer), solver/reviewer loop | **ftm-debug** |
34
+ | Council prompt framing, multi-model dispatch (Claude/Codex/Gemini), rebuttal rounds, alignment checks | **ftm-council** |
35
+ | Project pattern detection, knip analysis, adversarial audit, auto-fix, wiring contracts | **ftm-audit** |
36
+
37
+ If no ftm skill is active, tell the user: "No active ftm session detected. This skill saves state for ftm-brainstorm, ftm-executor, ftm-debug, ftm-council, and ftm-audit sessions."
38
+
39
+ If multiple skills have been invoked in the same conversation (e.g., brainstorm followed by executor), capture the most recently active one. If the user says which one to save, respect that.
40
+
41
+ ## Step 2: Capture State by Skill Type
42
+
43
+ ### ftm-brainstorm
44
+
45
+ Capture all of the following that exist in the current session:
46
+
47
+ **Phase tracking:**
48
+ - Current phase (0, 1, 2, or 3)
49
+ - If Phase 1: which round (1, 2, or 3), which path (A: Fresh Idea or B: Brain Dump)
50
+ - If Phase 2: how many research+challenge turns have been completed
51
+ - If Phase 3: which section of the plan has been presented (Vision, Tasks, Agents, or complete)
52
+
53
+ **Phase 0 context:**
54
+ - The full repo scan results (project type, tech stack, architecture, patterns, infrastructure, scale)
55
+ - Whether the scan was skipped (no git repo) and any stack info gathered from the user instead
56
+
57
+ **Phase 1 — Intake:**
58
+ - The user's original idea/request (verbatim if short, summarized if long)
59
+ - If Path B: the full brain dump extraction (decisions made, open questions, assumptions, contradictions, gaps)
60
+ - All user answers from each completed round
61
+ - Research Sprint 1 results (landscape context) — all findings from Web Researcher, GitHub Explorer, Competitive Analyst
62
+ - Research Sprint 2 results (constraint-scoped research) — all findings from all three agents
63
+ - If Path B: the novelty map (which claims are solved/partially solved/novel)
64
+
65
+ **Phase 2 — Research + Challenge Loop:**
66
+ - Every completed turn's 5 suggestions (or fewer if weak results) with evidence and links
67
+ - Every challenge posed and the user's response
68
+ - Every question asked and the user's answer
69
+ - Accumulated decisions and direction chosen
70
+ - Research agent results from each turn (summarized — full URLs and key findings, not raw agent output)
71
+ - The current "direction" the brainstorm is heading (architecture chosen, scope narrowed, etc.)
72
+
73
+ **Phase 3 — Plan Generation:**
74
+ - Which sections have been presented and approved (Vision, Tasks, Agents/Waves)
75
+ - The plan content generated so far
76
+ - The plan file path if it's been saved
77
+ - User feedback on each section
78
+
79
+ ### ftm-executor
80
+
81
+ **Plan context:**
82
+ - Plan file path (absolute)
83
+ - Plan title and summary
84
+ - Total task count
85
+ - Agent team composition (agent names, roles, task assignments)
86
+
87
+ **Execution progress:**
88
+ - Current wave number
89
+ - For each task: status (pending / in-progress / complete / failed / blocked)
90
+ - For completed tasks: commit hashes, audit results (pass/fail/auto-fixed), brief summary of what was done
91
+ - For in-progress tasks: which agent is working on it, what's been done so far
92
+ - For failed/blocked tasks: what went wrong, error details
93
+
94
+ **Worktree state:**
95
+ - List of all worktree branches and their paths
96
+ - Which worktrees are active vs merged vs abandoned
97
+ - Any merge results or conflicts encountered
98
+ - The main/working branch name
99
+
100
+ **Verification state:**
101
+ - Post-task audit results for each completed task
102
+ - Any manual intervention items outstanding
103
+ - Full test suite status (last run result)
104
+
105
+ ### ftm-debug
106
+
107
+ **Problem context:**
108
+ - The original problem statement (symptom, expected behavior, what's been tried, when it started, reproduction steps)
109
+ - Codebase reconnaissance results (entry points, call graph, state flow, dependencies, recent changes, test coverage, config, error handling)
110
+ - The investigation plan (likely category, which agents deployed, worktree strategy)
111
+
112
+ **Phase 1 — Investigation results:**
113
+ - Instrumenter report: what was instrumented, log point locations, DEBUG-INSTRUMENTATION.md content
114
+ - Researcher report: findings with sources, relevance, solutions, confidence, RESEARCH-FINDINGS.md content
115
+ - Reproducer report: trigger command, consistency, boundaries, minimal test path, REPRODUCTION.md content
116
+ - Hypothesizer report: all hypotheses ranked with claims, mechanisms, code paths, evidence, HYPOTHESES.md content
117
+
118
+ **Phase 2 — Synthesis & Solve:**
119
+ - Cross-reference analysis (how findings align or conflict)
120
+ - Recommended fix approach
121
+ - Solver attempts: which hypotheses tried, what was implemented, commit hashes
122
+ - FIX-SUMMARY.md content if fix was applied
123
+
124
+ **Phase 3 — Review & Verify:**
125
+ - Reviewer verdict (APPROVED / APPROVED WITH CHANGES / NEEDS REWORK)
126
+ - REVIEW-VERDICT.md content
127
+ - How many solver-reviewer iterations completed
128
+ - Outstanding issues from review
129
+
130
+ **Worktree state:**
131
+ - debug-instrumentation branch and path
132
+ - debug-reproduction branch and path
133
+ - debug-fix branch and path (including any fix attempt sub-branches)
134
+ - Which worktrees still exist vs cleaned up
135
+
136
+ ### ftm-council
137
+
138
+ **Council setup:**
139
+ - The council prompt (the framed problem statement)
140
+ - Whether the user confirmed/edited the prompt
141
+ - Prerequisites check result (codex and gemini available?)
142
+
143
+ **Deliberation state:**
144
+ - Current round number (1-5)
145
+ - For each completed round, each model's full response:
146
+ - Research summary (what files examined, what was found)
147
+ - Position (their stance)
148
+ - Reasoning (with code references)
149
+ - Concerns
150
+ - Confidence level
151
+ - For rebuttal rounds: each model's updated position, new evidence, responses to other models, remaining disagreements
152
+ - Alignment analysis after each round (agreement areas, divergence points, different research paths, majority forming?)
153
+
154
+ **Outcome:**
155
+ - Whether consensus has been reached (and if so, which 2 models agreed)
156
+ - The verdict if delivered (decision, agreed by, dissent, evidence basis)
157
+ - If no consensus after 5 rounds: the synthesis and options presented
158
+
159
+ ### ftm-audit
160
+
161
+ **Trigger context:**
162
+ - What triggered the audit (manual invocation, post-task from executor, specific files/scope)
163
+ - Scope (full project, specific files, specific task's changes)
164
+
165
+ **Phase 0 — Project patterns:**
166
+ - Detected framework, router, state management, API layer, build tool
167
+ - Active dimensions (D1-D5) and their configuration
168
+ - Any unusual patterns noted
169
+
170
+ **Layer 1 — knip results:**
171
+ - Full knip output (categorized: unused files, unused exports, unused deps, unlisted deps, unresolved imports)
172
+ - Each finding with file:line
173
+
174
+ **Layer 2 — Adversarial audit results:**
175
+ - Each finding with type, location, evidence, and which dimension failed
176
+ - Wiring contract checks if applicable (which checks passed, which failed)
177
+
178
+ **Layer 3 — Auto-fix results:**
179
+ - Fixes applied (finding, fix description, verification result)
180
+ - Manual intervention items (finding, reason auto-fix skipped, suggested action)
181
+ - Re-verification results
182
+ - Current iteration count (of max 3)
183
+
184
+ **Final status:**
185
+ - PASS or FAIL
186
+ - Remaining issues count and details
187
+
188
+ ## Step 3: Gather Artifacts
189
+
190
+ Scan the conversation and filesystem for artifacts created during the session:
191
+
192
+ - **Plan files**: `~/.claude/plans/*.md`
193
+ - **Research documents**: Any `.md` files created by agents (RESEARCH-FINDINGS.md, HYPOTHESES.md, REPRODUCTION.md, FIX-SUMMARY.md, REVIEW-VERDICT.md, DEBUG-INSTRUMENTATION.md)
194
+ - **Worktree branches**: Run `git worktree list` and `git branch --list "plan-exec/*" "debug/*"` to capture active branches
195
+ - **Audit changelogs**: Any ftm audit changelog output
196
+ - **Brain dump extractions**: If Path B brainstorm, the structured extraction
197
+
198
+ For each artifact, record its absolute path and verify it still exists on disk.
199
+
200
+ ## Step 4: Write the State File
201
+
202
+ Create the directory if it doesn't exist:
203
+ ```bash
204
+ mkdir -p ~/.claude/ftm-state
205
+ ```
206
+
207
+ Write the state file to `~/.claude/ftm-state/STATE.md`:
208
+
209
+ ```markdown
210
+ ---
211
+ skill: ftm-brainstorm
212
+ phase: 2
213
+ phase_detail: "Research+Challenge turn 5, user chose microservices direction"
214
+ timestamp: 2026-03-16T23:50:00
215
+ project_dir: /Users/path/to/project
216
+ git_branch: main
217
+ git_commit: abc1234
218
+ ---
219
+
220
+ # FTM Session State
221
+
222
+ ## Active Skill
223
+ ftm-brainstorm, Phase 2 (Research + Challenge Loop), Turn 5 of unlimited.
224
+ Path A (Fresh Idea). User chose microservices direction in turn 3, currently exploring
225
+ service mesh options.
226
+
227
+ ## Context Snapshot
228
+
229
+ ### Phase 0: Repo Scan
230
+ [paste the full repo scan results here — project type, stack, architecture, patterns]
231
+
232
+ ### Phase 1: Intake Summary
233
+ **Round 1 answers:**
234
+ - Core idea: [user's answer]
235
+ - Target users: [user's answer]
236
+ - Problem solved: [user's answer]
237
+
238
+ **Research Sprint 1 (Landscape):**
239
+ - Web Researcher: [key findings with URLs]
240
+ - GitHub Explorer: [key repos with URLs]
241
+ - Competitive Analyst: [key products/tools]
242
+
243
+ **Round 2 answers:**
244
+ - Architecture preference: [user's choice from Sprint 1 options]
245
+ - Integration requirements: [user's answer]
246
+ - Scale/environment: [user's answer]
247
+
248
+ **Research Sprint 2 (Constraint-Scoped):**
249
+ - [findings, more targeted than Sprint 1]
250
+
251
+ **Round 3 answers:**
252
+ - Success criteria: [user's answer]
253
+ - v1 scope: [user's answer]
254
+ - Non-negotiables: [user's answer]
255
+
256
+ ### Phase 2: Research + Challenge Turns
257
+ **Turn 1:**
258
+ - Suggestions presented: [titles of 5 suggestions with brief summaries]
259
+ - Challenges posed: [what was challenged]
260
+ - User response: [what they said, what direction they chose]
261
+
262
+ **Turn 2:**
263
+ [same structure]
264
+
265
+ [...repeat for each turn...]
266
+
267
+ **Current direction:**
268
+ [the accumulated picture of what's being built, architecture chosen, scope, key decisions]
269
+
270
+ ## Decisions Made
271
+ - Architecture: microservices with gRPC
272
+ - Database: PostgreSQL with read replicas
273
+ - Auth: OAuth2 with Okta integration
274
+ - Scope: 3 core services for v1, defer analytics service
275
+ - [every decision the user confirmed during the session]
276
+
277
+ ## Open Questions
278
+ - Service mesh: Istio vs Linkerd — research presented, user hasn't decided
279
+ - Deployment: Kubernetes vs ECS — not yet discussed
280
+ - [anything that was about to be explored]
281
+
282
+ ## Next Step
283
+ Phase 2, Turn 6. The user was presented with service mesh options (Istio vs Linkerd)
284
+ in Turn 5 and needs to respond. After their response, research should focus on
285
+ deployment strategy (Kubernetes vs ECS) as this is the last major architecture
286
+ decision before the brainstorm can move to Phase 3.
287
+
288
+ Research agents for next turn should query:
289
+ - Web Researcher: "[chosen service mesh] production gotchas [stack]"
290
+ - GitHub Explorer: "[chosen service mesh] example configurations"
291
+ - Competitive Analyst: "companies using [chosen mesh] at [user's scale]"
292
+
293
+ ## Artifacts
294
+ - ~/.claude/plans/ — no plan generated yet (still in Phase 2)
295
+ - No worktrees active (brainstorm doesn't use worktrees)
296
+ - Research findings accumulated in conversation only (not saved to disk)
297
+ ```
298
+
299
+ **Formatting rules:**
300
+ - Use the YAML frontmatter exactly as shown — ftm-resume parses it
301
+ - The `phase_detail` field should be a human-readable one-liner about exactly where in the phase the user stopped
302
+ - `git_commit` should be the current HEAD commit hash (run `git rev-parse --short HEAD`)
303
+ - `git_branch` should be the current branch (run `git branch --show-current`)
304
+ - The "Next Step" section is the most important — it must be specific enough that a fresh conversation can pick up without asking "where were we?"
305
+ - Include actual content, not placeholders — paste real findings, real decisions, real URLs
306
+
307
+ **What to omit:**
308
+ - Raw agent prompts (the skill files already have these)
309
+ - Full file contents that were read during the session (reference by path instead)
310
+ - Conversation pleasantries or back-and-forth that doesn't carry information
311
+
312
+ ## Step 5: Confirm to User
313
+
314
+ After saving, present a confirmation:
315
+
316
+ ```
317
+ Session saved to ~/.claude/ftm-state/STATE.md
318
+
319
+ Captured:
320
+ - Skill: ftm-brainstorm
321
+ - Phase: 2 (Research + Challenge Loop, Turn 5)
322
+ - Decisions locked: 4 (architecture, database, auth, v1 scope)
323
+ - Open questions: 2 (service mesh, deployment)
324
+ - Research sprints completed: 2 (landscape + constraint-scoped)
325
+ - Challenge turns completed: 5
326
+ - Artifacts: none on disk (research in state file)
327
+
328
+ To resume in a new conversation:
329
+ /ftm-resume
330
+ ```
331
+
332
+ Adjust the "Captured" summary to match the actual skill. For ftm-executor, show task completion counts. For ftm-debug, show which investigation agents completed. For ftm-council, show round count and consensus status. For ftm-audit, show layer completion and finding counts.
333
+
334
+ ## Edge Cases
335
+
336
+ ### Multiple ftm skills in one conversation
337
+ If the user ran brainstorm and then executor in the same conversation, ask which one to save. If they say "both," save the most recent one to STATE.md and the other to STATE-[skill].md in the same directory.
338
+
339
+ ### Very early in a session
340
+ If the user pauses in Phase 0 or the first step of a skill, there may be almost nothing to capture. That's fine — save what exists. Even a Phase 0 repo scan result saves the user from re-scanning.
341
+
342
+ ### State file already exists
343
+ Overwrite it. The previous state was either already resumed (and thus consumed) or abandoned. If the user wants to keep the old state, ftm-resume archives it before loading.
344
+
345
+ ### No git repo
346
+ Skip the git_branch and git_commit fields. Note `project_dir` only.
347
+
348
+ ### Skill invoked but no user interaction yet
349
+ If the skill was just invoked (e.g., the user said "/ftm-brainstorm" and Claude responded with the first question, but the user hasn't answered yet), save what exists — the Phase 0 scan and the initial question. The "Next Step" should note that the user needs to answer the first intake question.
350
+
351
+ ### Large state
352
+ Some sessions accumulate substantial state — 8+ brainstorm turns with full research results, or an executor session with 20+ tasks. Don't truncate. The state file can be large. FTM-resume needs all of it to reconstruct properly. If a single research finding has 5 URLs and detailed analysis, include all of it.
353
+
354
+ ## Requirements
355
+
356
+ - reference: `~/.claude/ftm-state/STATE.md` | optional | existing state file to overwrite
357
+ - reference: `~/.claude/ftm-pause/references/protocols/SKILL-RESTORE-PROTOCOLS.md` | required | per-skill capture field specifications
358
+ - reference: `~/.claude/ftm-pause/references/protocols/VALIDATION.md` | required | pre-write and post-write validation checklist
359
+ - tool: `git` | optional | git branch and commit hash capture for state file
360
+
361
+ ## Risk
362
+
363
+ - level: low_write
364
+ - scope: writes ~/.claude/ftm-state/STATE.md only; does not modify project source files or blackboard experiences; overwrites existing STATE.md without backup
365
+ - rollback: no project mutations; prior STATE.md is overwritten (not backed up) by design
366
+
367
+ ## Approval Gates
368
+
369
+ - trigger: multiple skills active and unclear which to pause | action: ask user which skill state to save before writing
370
+ - complexity_routing: micro → auto | small → auto | medium → auto | large → auto | xl → auto
371
+
372
+ ## Fallbacks
373
+
374
+ - condition: ~/.claude/ftm-state/ directory doesn't exist | action: create directory before writing STATE.md
375
+ - condition: no ftm skill detected as active | action: report "No active ftm session detected" and list which skills this applies to
376
+ - condition: git not available | action: omit git_branch and git_commit fields from state file frontmatter
377
+ - condition: artifact files referenced in state don't exist on disk | action: note as "path recorded but file not found" in Artifacts section
378
+
379
+ ## Capabilities
380
+
381
+ - cli: `git` | optional | branch name and commit hash for state file metadata
382
+
383
+ ## Event Payloads
384
+
385
+ ### session_paused
386
+ - skill: string — "ftm-pause"
387
+ - saved_skill: string — the ftm skill whose state was saved
388
+ - phase: string — phase at which the session was paused
389
+ - state_file: string — absolute path to written STATE.md
390
+ - artifacts_count: number — number of artifact paths recorded
391
+
392
+ ### task_completed
393
+ - skill: string — "ftm-pause"
394
+ - saved_skill: string — the ftm skill whose state was saved
395
+ - state_file: string — absolute path to STATE.md