feed-the-machine 1.5.0 → 1.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -21
- package/README.md +170 -170
- package/bin/generate-manifest.mjs +463 -463
- package/bin/install.mjs +491 -491
- package/docs/HOOKS.md +243 -243
- package/docs/INBOX.md +233 -233
- package/ftm/SKILL.md +122 -122
- package/ftm-audit/SKILL.md +623 -541
- package/ftm-audit/references/protocols/PROJECT-PATTERNS.md +91 -91
- package/ftm-audit/references/protocols/RUNTIME-WIRING.md +66 -66
- package/ftm-audit/references/protocols/WIRING-CONTRACTS.md +135 -135
- package/ftm-audit/references/strategies/AUTO-FIX-STRATEGIES.md +69 -69
- package/ftm-audit/references/templates/REPORT-FORMAT.md +96 -96
- package/ftm-audit/scripts/run-knip.sh +23 -23
- package/ftm-audit.yml +2 -2
- package/ftm-brainstorm/SKILL.md +498 -498
- package/ftm-brainstorm/evals/evals.json +100 -100
- package/ftm-brainstorm/evals/promptfoo.yaml +109 -109
- package/ftm-brainstorm/references/agent-prompts.md +224 -224
- package/ftm-brainstorm/references/plan-template.md +121 -121
- package/ftm-brainstorm.yml +2 -2
- package/ftm-browse/SKILL.md +454 -454
- package/ftm-browse/daemon/browser-manager.ts +206 -206
- package/ftm-browse/daemon/bun.lock +30 -30
- package/ftm-browse/daemon/cli.ts +347 -347
- package/ftm-browse/daemon/commands.ts +410 -410
- package/ftm-browse/daemon/main.ts +357 -357
- package/ftm-browse/daemon/package.json +17 -17
- package/ftm-browse/daemon/server.ts +189 -189
- package/ftm-browse/daemon/snapshot.ts +519 -519
- package/ftm-browse/daemon/tsconfig.json +22 -22
- package/ftm-browse.yml +4 -4
- package/ftm-capture/SKILL.md +370 -370
- package/ftm-capture.yml +4 -4
- package/ftm-codex-gate/SKILL.md +361 -361
- package/ftm-codex-gate.yml +2 -2
- package/ftm-config/SKILL.md +345 -345
- package/ftm-config.default.yml +82 -80
- package/ftm-config.yml +2 -2
- package/ftm-council/SKILL.md +416 -416
- package/ftm-council/references/prompts/CLAUDE-INVESTIGATION.md +60 -60
- package/ftm-council/references/prompts/CODEX-INVESTIGATION.md +58 -58
- package/ftm-council/references/prompts/GEMINI-INVESTIGATION.md +58 -58
- package/ftm-council/references/prompts/REBUTTAL-TEMPLATE.md +57 -57
- package/ftm-council/references/protocols/PREREQUISITES.md +47 -47
- package/ftm-council/references/protocols/STEP-0-FRAMING.md +46 -46
- package/ftm-council.yml +2 -2
- package/ftm-dashboard/SKILL.md +163 -163
- package/ftm-dashboard.yml +4 -4
- package/ftm-debug/SKILL.md +1037 -1037
- package/ftm-debug/references/phases/PHASE-0-INTAKE.md +58 -58
- package/ftm-debug/references/phases/PHASE-1-TRIAGE.md +46 -46
- package/ftm-debug/references/phases/PHASE-2-WAR-ROOM-AGENTS.md +279 -279
- package/ftm-debug/references/phases/PHASE-3-TO-6-EXECUTION.md +436 -436
- package/ftm-debug/references/protocols/BLACKBOARD.md +86 -86
- package/ftm-debug/references/protocols/EDGE-CASES.md +103 -103
- package/ftm-debug.yml +2 -2
- package/ftm-diagram/SKILL.md +277 -277
- package/ftm-diagram.yml +2 -2
- package/ftm-executor/SKILL.md +777 -767
- package/ftm-executor/references/STYLE-TEMPLATE.md +73 -73
- package/ftm-executor/references/phases/PHASE-0-VERIFICATION.md +62 -62
- package/ftm-executor/references/phases/PHASE-2-AGENT-ASSEMBLY.md +34 -34
- package/ftm-executor/references/phases/PHASE-3-WORKTREES.md +38 -38
- package/ftm-executor/references/phases/PHASE-4-5-AUDIT.md +72 -72
- package/ftm-executor/references/phases/PHASE-4-DISPATCH.md +66 -66
- package/ftm-executor/references/phases/PHASE-5-5-CODEX-GATE.md +73 -73
- package/ftm-executor/references/protocols/DOCUMENTATION-BOOTSTRAP.md +36 -36
- package/ftm-executor/references/protocols/MODEL-PROFILE.md +59 -44
- package/ftm-executor/references/protocols/PROGRESS-TRACKING.md +66 -66
- package/ftm-executor/runtime/ftm-runtime.mjs +252 -252
- package/ftm-executor/runtime/package.json +8 -8
- package/ftm-executor.yml +2 -2
- package/ftm-git/SKILL.md +441 -441
- package/ftm-git/evals/evals.json +26 -26
- package/ftm-git/evals/promptfoo.yaml +75 -75
- package/ftm-git/hooks/post-commit-experience.sh +92 -92
- package/ftm-git/references/patterns/SECRET-PATTERNS.md +104 -104
- package/ftm-git/references/protocols/REMEDIATION.md +139 -139
- package/ftm-git/scripts/pre-commit-secrets.sh +110 -110
- package/ftm-git.yml +2 -2
- package/ftm-inbox/backend/adapters/_retry.py +64 -64
- package/ftm-inbox/backend/adapters/base.py +230 -230
- package/ftm-inbox/backend/adapters/freshservice.py +104 -104
- package/ftm-inbox/backend/adapters/gmail.py +125 -125
- package/ftm-inbox/backend/adapters/jira.py +136 -136
- package/ftm-inbox/backend/adapters/registry.py +192 -192
- package/ftm-inbox/backend/adapters/slack.py +110 -110
- package/ftm-inbox/backend/db/connection.py +54 -54
- package/ftm-inbox/backend/db/schema.py +78 -78
- package/ftm-inbox/backend/executor/__init__.py +7 -7
- package/ftm-inbox/backend/executor/engine.py +149 -149
- package/ftm-inbox/backend/executor/step_runner.py +98 -98
- package/ftm-inbox/backend/main.py +103 -103
- package/ftm-inbox/backend/models/__init__.py +1 -1
- package/ftm-inbox/backend/models/unified_task.py +36 -36
- package/ftm-inbox/backend/planner/__init__.py +6 -6
- package/ftm-inbox/backend/planner/generator.py +127 -127
- package/ftm-inbox/backend/planner/schema.py +34 -34
- package/ftm-inbox/backend/requirements.txt +5 -5
- package/ftm-inbox/backend/routes/execute.py +186 -186
- package/ftm-inbox/backend/routes/health.py +52 -52
- package/ftm-inbox/backend/routes/inbox.py +68 -68
- package/ftm-inbox/backend/routes/plan.py +271 -271
- package/ftm-inbox/bin/launchagent.mjs +91 -91
- package/ftm-inbox/bin/setup.mjs +188 -188
- package/ftm-inbox/bin/start.sh +10 -10
- package/ftm-inbox/bin/status.sh +17 -17
- package/ftm-inbox/bin/stop.sh +8 -8
- package/ftm-inbox/config.example.yml +55 -55
- package/ftm-inbox/package-lock.json +2898 -2898
- package/ftm-inbox/package.json +26 -26
- package/ftm-inbox/postcss.config.js +6 -6
- package/ftm-inbox/src/app.css +199 -199
- package/ftm-inbox/src/app.html +18 -18
- package/ftm-inbox/src/lib/api.ts +166 -166
- package/ftm-inbox/src/lib/components/ExecutionLog.svelte +81 -81
- package/ftm-inbox/src/lib/components/InboxFeed.svelte +143 -143
- package/ftm-inbox/src/lib/components/PlanStep.svelte +271 -271
- package/ftm-inbox/src/lib/components/PlanView.svelte +206 -206
- package/ftm-inbox/src/lib/components/StreamPanel.svelte +99 -99
- package/ftm-inbox/src/lib/components/TaskCard.svelte +190 -190
- package/ftm-inbox/src/lib/components/ui/EmptyState.svelte +63 -63
- package/ftm-inbox/src/lib/components/ui/KawaiiCard.svelte +86 -86
- package/ftm-inbox/src/lib/components/ui/PillButton.svelte +106 -106
- package/ftm-inbox/src/lib/components/ui/StatusBadge.svelte +67 -67
- package/ftm-inbox/src/lib/components/ui/StreamDrawer.svelte +149 -149
- package/ftm-inbox/src/lib/components/ui/ThemeToggle.svelte +80 -80
- package/ftm-inbox/src/lib/theme.ts +47 -47
- package/ftm-inbox/src/routes/+layout.svelte +76 -76
- package/ftm-inbox/src/routes/+page.svelte +401 -401
- package/ftm-inbox/svelte.config.js +12 -12
- package/ftm-inbox/tailwind.config.ts +63 -63
- package/ftm-inbox/tsconfig.json +13 -13
- package/ftm-inbox/vite.config.ts +6 -6
- package/ftm-intent/SKILL.md +241 -241
- package/ftm-intent.yml +2 -2
- package/ftm-manifest.json +3794 -3794
- package/ftm-map/SKILL.md +291 -291
- package/ftm-map/scripts/db.py +712 -712
- package/ftm-map/scripts/index.py +415 -415
- package/ftm-map/scripts/parser.py +224 -224
- package/ftm-map/scripts/queries/go-tags.scm +20 -20
- package/ftm-map/scripts/queries/javascript-tags.scm +35 -35
- package/ftm-map/scripts/queries/python-tags.scm +31 -31
- package/ftm-map/scripts/queries/ruby-tags.scm +19 -19
- package/ftm-map/scripts/queries/rust-tags.scm +37 -37
- package/ftm-map/scripts/queries/typescript-tags.scm +41 -41
- package/ftm-map/scripts/query.py +301 -301
- package/ftm-map/scripts/ranker.py +377 -377
- package/ftm-map/scripts/requirements.txt +5 -5
- package/ftm-map/scripts/setup-hooks.sh +27 -27
- package/ftm-map/scripts/setup.sh +56 -56
- package/ftm-map/scripts/test_db.py +364 -364
- package/ftm-map/scripts/test_parser.py +174 -174
- package/ftm-map/scripts/test_query.py +183 -183
- package/ftm-map/scripts/test_ranker.py +199 -199
- package/ftm-map/scripts/views.py +591 -591
- package/ftm-map.yml +2 -2
- package/ftm-mind/SKILL.md +1943 -1943
- package/ftm-mind/evals/promptfoo.yaml +142 -142
- package/ftm-mind/references/blackboard-schema.md +328 -328
- package/ftm-mind/references/complexity-guide.md +110 -110
- package/ftm-mind/references/event-registry.md +319 -319
- package/ftm-mind/references/mcp-inventory.md +296 -296
- package/ftm-mind/references/protocols/COMPLEXITY-SIZING.md +72 -72
- package/ftm-mind/references/protocols/MCP-HEURISTICS.md +32 -32
- package/ftm-mind/references/protocols/PLAN-APPROVAL.md +80 -80
- package/ftm-mind/references/reflexion-protocol.md +249 -249
- package/ftm-mind/references/routing/SCENARIOS.md +22 -22
- package/ftm-mind/references/routing-scenarios.md +35 -35
- package/ftm-mind.yml +2 -2
- package/ftm-pause/SKILL.md +395 -395
- package/ftm-pause/references/protocols/SKILL-RESTORE-PROTOCOLS.md +186 -186
- package/ftm-pause/references/protocols/VALIDATION.md +80 -80
- package/ftm-pause.yml +2 -2
- package/ftm-researcher/SKILL.md +275 -275
- package/ftm-researcher/evals/agent-diversity.yaml +17 -17
- package/ftm-researcher/evals/synthesis-quality.yaml +12 -12
- package/ftm-researcher/evals/trigger-accuracy.yaml +39 -39
- package/ftm-researcher/references/adaptive-search.md +116 -116
- package/ftm-researcher/references/agent-prompts.md +193 -193
- package/ftm-researcher/references/council-integration.md +193 -193
- package/ftm-researcher/references/output-format.md +203 -203
- package/ftm-researcher/references/synthesis-pipeline.md +165 -165
- package/ftm-researcher/scripts/score_credibility.py +234 -234
- package/ftm-researcher/scripts/validate_research.py +92 -92
- package/ftm-researcher.yml +2 -2
- package/ftm-resume/SKILL.md +518 -518
- package/ftm-resume/references/protocols/VALIDATION.md +172 -172
- package/ftm-resume.yml +2 -2
- package/ftm-retro/SKILL.md +380 -380
- package/ftm-retro/references/protocols/SCORING-RUBRICS.md +89 -89
- package/ftm-retro/references/templates/REPORT-FORMAT.md +109 -109
- package/ftm-retro.yml +2 -2
- package/ftm-routine/SKILL.md +170 -170
- package/ftm-routine.yml +4 -4
- package/ftm-state/blackboard/capabilities.json +5 -5
- package/ftm-state/blackboard/capabilities.schema.json +27 -27
- package/ftm-state/blackboard/context.json +23 -23
- package/ftm-state/blackboard/experiences/index.json +9 -9
- package/ftm-state/blackboard/patterns.json +6 -6
- package/ftm-state/schemas/context.schema.json +130 -130
- package/ftm-state/schemas/experience-index.schema.json +77 -77
- package/ftm-state/schemas/experience.schema.json +78 -78
- package/ftm-state/schemas/patterns.schema.json +44 -44
- package/ftm-upgrade/SKILL.md +194 -194
- package/ftm-upgrade/scripts/check-version.sh +76 -76
- package/ftm-upgrade/scripts/upgrade.sh +143 -143
- package/ftm-upgrade.yml +2 -2
- package/ftm-verify.yml +2 -2
- package/ftm.yml +2 -2
- package/hooks/ftm-blackboard-enforcer.sh +93 -93
- package/hooks/ftm-discovery-reminder.sh +90 -90
- package/hooks/ftm-drafts-gate.sh +61 -61
- package/hooks/ftm-event-logger.mjs +107 -107
- package/hooks/ftm-map-autodetect.sh +79 -79
- package/hooks/ftm-pending-sync-check.sh +22 -22
- package/hooks/ftm-plan-gate.sh +92 -92
- package/hooks/ftm-post-commit-trigger.sh +57 -57
- package/hooks/settings-template.json +81 -81
- package/install.sh +363 -363
- package/package.json +84 -84
- package/uninstall.sh +25 -25
package/ftm-pause/SKILL.md
CHANGED
|
@@ -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
|