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
|
@@ -1,186 +1,186 @@
|
|
|
1
|
-
# Skill State Capture and Restoration Protocols
|
|
2
|
-
|
|
3
|
-
This document defines exactly what state must be captured (by ftm-pause) and restored (by ftm-resume) for each ftm skill. It is the shared contract between the two skills.
|
|
4
|
-
|
|
5
|
-
---
|
|
6
|
-
|
|
7
|
-
## ftm-brainstorm
|
|
8
|
-
|
|
9
|
-
### State to Capture
|
|
10
|
-
|
|
11
|
-
**Phase tracking:**
|
|
12
|
-
- Current phase (0, 1, 2, or 3)
|
|
13
|
-
- If Phase 1: which round (1, 2, or 3), which path (A: Fresh Idea or B: Brain Dump)
|
|
14
|
-
- If Phase 2: how many research+challenge turns have been completed
|
|
15
|
-
- If Phase 3: which section of the plan has been presented (Vision, Tasks, Agents, or complete)
|
|
16
|
-
|
|
17
|
-
**Phase 0 context:**
|
|
18
|
-
- The full repo scan results (project type, tech stack, architecture, patterns, infrastructure, scale)
|
|
19
|
-
- Whether the scan was skipped (no git repo) and any stack info gathered from the user instead
|
|
20
|
-
|
|
21
|
-
**Phase 1 — Intake:**
|
|
22
|
-
- The user's original idea/request (verbatim if short, summarized if long)
|
|
23
|
-
- If Path B: the full brain dump extraction (decisions made, open questions, assumptions, contradictions, gaps)
|
|
24
|
-
- All user answers from each completed round
|
|
25
|
-
- Research Sprint 1 results (landscape context) — all findings from Web Researcher, GitHub Explorer, Competitive Analyst
|
|
26
|
-
- Research Sprint 2 results (constraint-scoped research) — all findings from all three agents
|
|
27
|
-
- If Path B: the novelty map (which claims are solved/partially solved/novel)
|
|
28
|
-
|
|
29
|
-
**Phase 2 — Research + Challenge Loop:**
|
|
30
|
-
- Every completed turn's 5 suggestions (or fewer if weak results) with evidence and links
|
|
31
|
-
- Every challenge posed and the user's response
|
|
32
|
-
- Every question asked and the user's answer
|
|
33
|
-
- Accumulated decisions and direction chosen
|
|
34
|
-
- Research agent results from each turn (summarized — full URLs and key findings, not raw agent output)
|
|
35
|
-
- The current "direction" the brainstorm is heading (architecture chosen, scope narrowed, etc.)
|
|
36
|
-
|
|
37
|
-
**Phase 3 — Plan Generation:**
|
|
38
|
-
- Which sections have been presented and approved (Vision, Tasks, Agents/Waves)
|
|
39
|
-
- The plan content generated so far
|
|
40
|
-
- The plan file path if it's been saved
|
|
41
|
-
- User feedback on each section
|
|
42
|
-
|
|
43
|
-
### Restoration Instructions
|
|
44
|
-
|
|
45
|
-
On resume, reload Phase 0 context into the project context register. Reload the full context register from Phase 2 state so the next research sprint does not re-search prior ground. Resume at exactly the turn number and phase detail captured — if the user was mid-Phase 2, the next action is a research sprint responding to their last answer.
|
|
46
|
-
|
|
47
|
-
---
|
|
48
|
-
|
|
49
|
-
## ftm-executor
|
|
50
|
-
|
|
51
|
-
### State to Capture
|
|
52
|
-
|
|
53
|
-
**Plan context:**
|
|
54
|
-
- Plan file path (absolute)
|
|
55
|
-
- Plan title and summary
|
|
56
|
-
- Total task count
|
|
57
|
-
- Agent team composition (agent names, roles, task assignments)
|
|
58
|
-
|
|
59
|
-
**Execution progress:**
|
|
60
|
-
- Current wave number
|
|
61
|
-
- For each task: status (pending / in-progress / complete / failed / blocked)
|
|
62
|
-
- For completed tasks: commit hashes, audit results (pass/fail/auto-fixed), brief summary of what was done
|
|
63
|
-
- For in-progress tasks: which agent is working on it, what's been done so far
|
|
64
|
-
- For failed/blocked tasks: what went wrong, error details
|
|
65
|
-
|
|
66
|
-
**Worktree state:**
|
|
67
|
-
- List of all worktree branches and their paths
|
|
68
|
-
- Which worktrees are active vs merged vs abandoned
|
|
69
|
-
- Any merge results or conflicts encountered
|
|
70
|
-
- The main/working branch name
|
|
71
|
-
|
|
72
|
-
**Verification state:**
|
|
73
|
-
- Post-task audit results for each completed task
|
|
74
|
-
- Any manual intervention items outstanding
|
|
75
|
-
- Full test suite status (last run result)
|
|
76
|
-
|
|
77
|
-
### Restoration Instructions
|
|
78
|
-
|
|
79
|
-
On resume, verify that all worktrees in the saved state still exist on disk (`git worktree list`). If any are missing, note them for the user before continuing. Resume from the current wave, skipping tasks already marked complete. If a task was in-progress, treat it as needing restart from the beginning of that task.
|
|
80
|
-
|
|
81
|
-
---
|
|
82
|
-
|
|
83
|
-
## ftm-debug
|
|
84
|
-
|
|
85
|
-
### State to Capture
|
|
86
|
-
|
|
87
|
-
**Problem context:**
|
|
88
|
-
- The original problem statement (symptom, expected behavior, what's been tried, when it started, reproduction steps)
|
|
89
|
-
- Codebase reconnaissance results (entry points, call graph, state flow, dependencies, recent changes, test coverage, config, error handling)
|
|
90
|
-
- The investigation plan (likely category, which agents deployed, worktree strategy)
|
|
91
|
-
|
|
92
|
-
**Phase 1 — Investigation results:**
|
|
93
|
-
- Instrumenter report: what was instrumented, log point locations, DEBUG-INSTRUMENTATION.md content
|
|
94
|
-
- Researcher report: findings with sources, relevance, solutions, confidence, RESEARCH-FINDINGS.md content
|
|
95
|
-
- Reproducer report: trigger command, consistency, boundaries, minimal test path, REPRODUCTION.md content
|
|
96
|
-
- Hypothesizer report: all hypotheses ranked with claims, mechanisms, code paths, evidence, HYPOTHESES.md content
|
|
97
|
-
|
|
98
|
-
**Phase 2 — Synthesis & Solve:**
|
|
99
|
-
- Cross-reference analysis (how findings align or conflict)
|
|
100
|
-
- Recommended fix approach
|
|
101
|
-
- Solver attempts: which hypotheses tried, what was implemented, commit hashes
|
|
102
|
-
- FIX-SUMMARY.md content if fix was applied
|
|
103
|
-
|
|
104
|
-
**Phase 3 — Review & Verify:**
|
|
105
|
-
- Reviewer verdict (APPROVED / APPROVED WITH CHANGES / NEEDS REWORK)
|
|
106
|
-
- REVIEW-VERDICT.md content
|
|
107
|
-
- How many solver-reviewer iterations completed
|
|
108
|
-
- Outstanding issues from review
|
|
109
|
-
|
|
110
|
-
**Worktree state:**
|
|
111
|
-
- debug-instrumentation branch and path
|
|
112
|
-
- debug-reproduction branch and path
|
|
113
|
-
- debug-fix branch and path (including any fix attempt sub-branches)
|
|
114
|
-
- Which worktrees still exist vs cleaned up
|
|
115
|
-
|
|
116
|
-
### Restoration Instructions
|
|
117
|
-
|
|
118
|
-
On resume, verify debug worktrees still exist. Re-read any artifact files referenced in the state (HYPOTHESES.md, REPRODUCTION.md, etc.) to reload their content into context. Resume at the exact phase captured — if mid-Phase 2, proceed to the next solver iteration using the saved hypotheses and prior solver attempts.
|
|
119
|
-
|
|
120
|
-
---
|
|
121
|
-
|
|
122
|
-
## ftm-council
|
|
123
|
-
|
|
124
|
-
### State to Capture
|
|
125
|
-
|
|
126
|
-
**Council setup:**
|
|
127
|
-
- The council prompt (the framed problem statement)
|
|
128
|
-
- Whether the user confirmed/edited the prompt
|
|
129
|
-
- Prerequisites check result (codex and gemini available?)
|
|
130
|
-
|
|
131
|
-
**Deliberation state:**
|
|
132
|
-
- Current round number (1-5)
|
|
133
|
-
- For each completed round, each model's full response:
|
|
134
|
-
- Research summary (what files examined, what was found)
|
|
135
|
-
- Position (their stance)
|
|
136
|
-
- Reasoning (with code references)
|
|
137
|
-
- Concerns
|
|
138
|
-
- Confidence level
|
|
139
|
-
- For rebuttal rounds: each model's updated position, new evidence, responses to other models, remaining disagreements
|
|
140
|
-
- Alignment analysis after each round (agreement areas, divergence points, different research paths, majority forming?)
|
|
141
|
-
|
|
142
|
-
**Outcome:**
|
|
143
|
-
- Whether consensus has been reached (and if so, which 2 models agreed)
|
|
144
|
-
- The verdict if delivered (decision, agreed by, dissent, evidence basis)
|
|
145
|
-
- If no consensus after 5 rounds: the synthesis and options presented
|
|
146
|
-
|
|
147
|
-
### Restoration Instructions
|
|
148
|
-
|
|
149
|
-
On resume, re-present the council prompt and the round history as a summary before continuing. If consensus was already reached, surface the verdict and ask the user what they want next. If still in deliberation, resume with the next model dispatch using full prior-round context.
|
|
150
|
-
|
|
151
|
-
---
|
|
152
|
-
|
|
153
|
-
## ftm-audit
|
|
154
|
-
|
|
155
|
-
### State to Capture
|
|
156
|
-
|
|
157
|
-
**Trigger context:**
|
|
158
|
-
- What triggered the audit (manual invocation, post-task from executor, specific files/scope)
|
|
159
|
-
- Scope (full project, specific files, specific task's changes)
|
|
160
|
-
|
|
161
|
-
**Phase 0 — Project patterns:**
|
|
162
|
-
- Detected framework, router, state management, API layer, build tool
|
|
163
|
-
- Active dimensions (D1-D5) and their configuration
|
|
164
|
-
- Any unusual patterns noted
|
|
165
|
-
|
|
166
|
-
**Layer 1 — knip results:**
|
|
167
|
-
- Full knip output (categorized: unused files, unused exports, unused deps, unlisted deps, unresolved imports)
|
|
168
|
-
- Each finding with file:line
|
|
169
|
-
|
|
170
|
-
**Layer 2 — Adversarial audit results:**
|
|
171
|
-
- Each finding with type, location, evidence, and which dimension failed
|
|
172
|
-
- Wiring contract checks if applicable (which checks passed, which failed)
|
|
173
|
-
|
|
174
|
-
**Layer 3 — Auto-fix results:**
|
|
175
|
-
- Fixes applied (finding, fix description, verification result)
|
|
176
|
-
- Manual intervention items (finding, reason auto-fix skipped, suggested action)
|
|
177
|
-
- Re-verification results
|
|
178
|
-
- Current iteration count (of max 3)
|
|
179
|
-
|
|
180
|
-
**Final status:**
|
|
181
|
-
- PASS or FAIL
|
|
182
|
-
- Remaining issues count and details
|
|
183
|
-
|
|
184
|
-
### Restoration Instructions
|
|
185
|
-
|
|
186
|
-
On resume, skip any layers already completed. If mid-Layer 3 auto-fix loop, restore the iteration count and continue from where it left off. If the final status was PASS, surface the result and confirm with the user before doing anything further.
|
|
1
|
+
# Skill State Capture and Restoration Protocols
|
|
2
|
+
|
|
3
|
+
This document defines exactly what state must be captured (by ftm-pause) and restored (by ftm-resume) for each ftm skill. It is the shared contract between the two skills.
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## ftm-brainstorm
|
|
8
|
+
|
|
9
|
+
### State to Capture
|
|
10
|
+
|
|
11
|
+
**Phase tracking:**
|
|
12
|
+
- Current phase (0, 1, 2, or 3)
|
|
13
|
+
- If Phase 1: which round (1, 2, or 3), which path (A: Fresh Idea or B: Brain Dump)
|
|
14
|
+
- If Phase 2: how many research+challenge turns have been completed
|
|
15
|
+
- If Phase 3: which section of the plan has been presented (Vision, Tasks, Agents, or complete)
|
|
16
|
+
|
|
17
|
+
**Phase 0 context:**
|
|
18
|
+
- The full repo scan results (project type, tech stack, architecture, patterns, infrastructure, scale)
|
|
19
|
+
- Whether the scan was skipped (no git repo) and any stack info gathered from the user instead
|
|
20
|
+
|
|
21
|
+
**Phase 1 — Intake:**
|
|
22
|
+
- The user's original idea/request (verbatim if short, summarized if long)
|
|
23
|
+
- If Path B: the full brain dump extraction (decisions made, open questions, assumptions, contradictions, gaps)
|
|
24
|
+
- All user answers from each completed round
|
|
25
|
+
- Research Sprint 1 results (landscape context) — all findings from Web Researcher, GitHub Explorer, Competitive Analyst
|
|
26
|
+
- Research Sprint 2 results (constraint-scoped research) — all findings from all three agents
|
|
27
|
+
- If Path B: the novelty map (which claims are solved/partially solved/novel)
|
|
28
|
+
|
|
29
|
+
**Phase 2 — Research + Challenge Loop:**
|
|
30
|
+
- Every completed turn's 5 suggestions (or fewer if weak results) with evidence and links
|
|
31
|
+
- Every challenge posed and the user's response
|
|
32
|
+
- Every question asked and the user's answer
|
|
33
|
+
- Accumulated decisions and direction chosen
|
|
34
|
+
- Research agent results from each turn (summarized — full URLs and key findings, not raw agent output)
|
|
35
|
+
- The current "direction" the brainstorm is heading (architecture chosen, scope narrowed, etc.)
|
|
36
|
+
|
|
37
|
+
**Phase 3 — Plan Generation:**
|
|
38
|
+
- Which sections have been presented and approved (Vision, Tasks, Agents/Waves)
|
|
39
|
+
- The plan content generated so far
|
|
40
|
+
- The plan file path if it's been saved
|
|
41
|
+
- User feedback on each section
|
|
42
|
+
|
|
43
|
+
### Restoration Instructions
|
|
44
|
+
|
|
45
|
+
On resume, reload Phase 0 context into the project context register. Reload the full context register from Phase 2 state so the next research sprint does not re-search prior ground. Resume at exactly the turn number and phase detail captured — if the user was mid-Phase 2, the next action is a research sprint responding to their last answer.
|
|
46
|
+
|
|
47
|
+
---
|
|
48
|
+
|
|
49
|
+
## ftm-executor
|
|
50
|
+
|
|
51
|
+
### State to Capture
|
|
52
|
+
|
|
53
|
+
**Plan context:**
|
|
54
|
+
- Plan file path (absolute)
|
|
55
|
+
- Plan title and summary
|
|
56
|
+
- Total task count
|
|
57
|
+
- Agent team composition (agent names, roles, task assignments)
|
|
58
|
+
|
|
59
|
+
**Execution progress:**
|
|
60
|
+
- Current wave number
|
|
61
|
+
- For each task: status (pending / in-progress / complete / failed / blocked)
|
|
62
|
+
- For completed tasks: commit hashes, audit results (pass/fail/auto-fixed), brief summary of what was done
|
|
63
|
+
- For in-progress tasks: which agent is working on it, what's been done so far
|
|
64
|
+
- For failed/blocked tasks: what went wrong, error details
|
|
65
|
+
|
|
66
|
+
**Worktree state:**
|
|
67
|
+
- List of all worktree branches and their paths
|
|
68
|
+
- Which worktrees are active vs merged vs abandoned
|
|
69
|
+
- Any merge results or conflicts encountered
|
|
70
|
+
- The main/working branch name
|
|
71
|
+
|
|
72
|
+
**Verification state:**
|
|
73
|
+
- Post-task audit results for each completed task
|
|
74
|
+
- Any manual intervention items outstanding
|
|
75
|
+
- Full test suite status (last run result)
|
|
76
|
+
|
|
77
|
+
### Restoration Instructions
|
|
78
|
+
|
|
79
|
+
On resume, verify that all worktrees in the saved state still exist on disk (`git worktree list`). If any are missing, note them for the user before continuing. Resume from the current wave, skipping tasks already marked complete. If a task was in-progress, treat it as needing restart from the beginning of that task.
|
|
80
|
+
|
|
81
|
+
---
|
|
82
|
+
|
|
83
|
+
## ftm-debug
|
|
84
|
+
|
|
85
|
+
### State to Capture
|
|
86
|
+
|
|
87
|
+
**Problem context:**
|
|
88
|
+
- The original problem statement (symptom, expected behavior, what's been tried, when it started, reproduction steps)
|
|
89
|
+
- Codebase reconnaissance results (entry points, call graph, state flow, dependencies, recent changes, test coverage, config, error handling)
|
|
90
|
+
- The investigation plan (likely category, which agents deployed, worktree strategy)
|
|
91
|
+
|
|
92
|
+
**Phase 1 — Investigation results:**
|
|
93
|
+
- Instrumenter report: what was instrumented, log point locations, DEBUG-INSTRUMENTATION.md content
|
|
94
|
+
- Researcher report: findings with sources, relevance, solutions, confidence, RESEARCH-FINDINGS.md content
|
|
95
|
+
- Reproducer report: trigger command, consistency, boundaries, minimal test path, REPRODUCTION.md content
|
|
96
|
+
- Hypothesizer report: all hypotheses ranked with claims, mechanisms, code paths, evidence, HYPOTHESES.md content
|
|
97
|
+
|
|
98
|
+
**Phase 2 — Synthesis & Solve:**
|
|
99
|
+
- Cross-reference analysis (how findings align or conflict)
|
|
100
|
+
- Recommended fix approach
|
|
101
|
+
- Solver attempts: which hypotheses tried, what was implemented, commit hashes
|
|
102
|
+
- FIX-SUMMARY.md content if fix was applied
|
|
103
|
+
|
|
104
|
+
**Phase 3 — Review & Verify:**
|
|
105
|
+
- Reviewer verdict (APPROVED / APPROVED WITH CHANGES / NEEDS REWORK)
|
|
106
|
+
- REVIEW-VERDICT.md content
|
|
107
|
+
- How many solver-reviewer iterations completed
|
|
108
|
+
- Outstanding issues from review
|
|
109
|
+
|
|
110
|
+
**Worktree state:**
|
|
111
|
+
- debug-instrumentation branch and path
|
|
112
|
+
- debug-reproduction branch and path
|
|
113
|
+
- debug-fix branch and path (including any fix attempt sub-branches)
|
|
114
|
+
- Which worktrees still exist vs cleaned up
|
|
115
|
+
|
|
116
|
+
### Restoration Instructions
|
|
117
|
+
|
|
118
|
+
On resume, verify debug worktrees still exist. Re-read any artifact files referenced in the state (HYPOTHESES.md, REPRODUCTION.md, etc.) to reload their content into context. Resume at the exact phase captured — if mid-Phase 2, proceed to the next solver iteration using the saved hypotheses and prior solver attempts.
|
|
119
|
+
|
|
120
|
+
---
|
|
121
|
+
|
|
122
|
+
## ftm-council
|
|
123
|
+
|
|
124
|
+
### State to Capture
|
|
125
|
+
|
|
126
|
+
**Council setup:**
|
|
127
|
+
- The council prompt (the framed problem statement)
|
|
128
|
+
- Whether the user confirmed/edited the prompt
|
|
129
|
+
- Prerequisites check result (codex and gemini available?)
|
|
130
|
+
|
|
131
|
+
**Deliberation state:**
|
|
132
|
+
- Current round number (1-5)
|
|
133
|
+
- For each completed round, each model's full response:
|
|
134
|
+
- Research summary (what files examined, what was found)
|
|
135
|
+
- Position (their stance)
|
|
136
|
+
- Reasoning (with code references)
|
|
137
|
+
- Concerns
|
|
138
|
+
- Confidence level
|
|
139
|
+
- For rebuttal rounds: each model's updated position, new evidence, responses to other models, remaining disagreements
|
|
140
|
+
- Alignment analysis after each round (agreement areas, divergence points, different research paths, majority forming?)
|
|
141
|
+
|
|
142
|
+
**Outcome:**
|
|
143
|
+
- Whether consensus has been reached (and if so, which 2 models agreed)
|
|
144
|
+
- The verdict if delivered (decision, agreed by, dissent, evidence basis)
|
|
145
|
+
- If no consensus after 5 rounds: the synthesis and options presented
|
|
146
|
+
|
|
147
|
+
### Restoration Instructions
|
|
148
|
+
|
|
149
|
+
On resume, re-present the council prompt and the round history as a summary before continuing. If consensus was already reached, surface the verdict and ask the user what they want next. If still in deliberation, resume with the next model dispatch using full prior-round context.
|
|
150
|
+
|
|
151
|
+
---
|
|
152
|
+
|
|
153
|
+
## ftm-audit
|
|
154
|
+
|
|
155
|
+
### State to Capture
|
|
156
|
+
|
|
157
|
+
**Trigger context:**
|
|
158
|
+
- What triggered the audit (manual invocation, post-task from executor, specific files/scope)
|
|
159
|
+
- Scope (full project, specific files, specific task's changes)
|
|
160
|
+
|
|
161
|
+
**Phase 0 — Project patterns:**
|
|
162
|
+
- Detected framework, router, state management, API layer, build tool
|
|
163
|
+
- Active dimensions (D1-D5) and their configuration
|
|
164
|
+
- Any unusual patterns noted
|
|
165
|
+
|
|
166
|
+
**Layer 1 — knip results:**
|
|
167
|
+
- Full knip output (categorized: unused files, unused exports, unused deps, unlisted deps, unresolved imports)
|
|
168
|
+
- Each finding with file:line
|
|
169
|
+
|
|
170
|
+
**Layer 2 — Adversarial audit results:**
|
|
171
|
+
- Each finding with type, location, evidence, and which dimension failed
|
|
172
|
+
- Wiring contract checks if applicable (which checks passed, which failed)
|
|
173
|
+
|
|
174
|
+
**Layer 3 — Auto-fix results:**
|
|
175
|
+
- Fixes applied (finding, fix description, verification result)
|
|
176
|
+
- Manual intervention items (finding, reason auto-fix skipped, suggested action)
|
|
177
|
+
- Re-verification results
|
|
178
|
+
- Current iteration count (of max 3)
|
|
179
|
+
|
|
180
|
+
**Final status:**
|
|
181
|
+
- PASS or FAIL
|
|
182
|
+
- Remaining issues count and details
|
|
183
|
+
|
|
184
|
+
### Restoration Instructions
|
|
185
|
+
|
|
186
|
+
On resume, skip any layers already completed. If mid-Layer 3 auto-fix loop, restore the iteration count and continue from where it left off. If the final status was PASS, surface the result and confirm with the user before doing anything further.
|
|
@@ -1,80 +1,80 @@
|
|
|
1
|
-
# State Validation Logic
|
|
2
|
-
|
|
3
|
-
This document defines all validation checks performed before and after writing state to disk.
|
|
4
|
-
|
|
5
|
-
---
|
|
6
|
-
|
|
7
|
-
## Pre-Write Validation
|
|
8
|
-
|
|
9
|
-
Before writing `~/.claude/ftm-state/STATE.md`, verify the following:
|
|
10
|
-
|
|
11
|
-
### Skill Detection Confirmed
|
|
12
|
-
|
|
13
|
-
- A ftm skill was positively identified from the conversation context
|
|
14
|
-
- If no skill detected: halt and tell the user "No active ftm session detected" — do not write a blank or partial state file
|
|
15
|
-
|
|
16
|
-
### Required Frontmatter Fields Present
|
|
17
|
-
|
|
18
|
-
The YAML frontmatter block must contain:
|
|
19
|
-
- `skill` — one of: ftm-brainstorm, ftm-executor, ftm-debug, ftm-council, ftm-audit
|
|
20
|
-
- `phase` — the current phase number or stage name for that skill
|
|
21
|
-
- `phase_detail` — a human-readable one-liner about exactly where the session stopped
|
|
22
|
-
- `timestamp` — ISO 8601 format (YYYY-MM-DDThh:mm:ss)
|
|
23
|
-
- `project_dir` — absolute path to the working directory
|
|
24
|
-
|
|
25
|
-
Git fields (`git_branch`, `git_commit`) are required only if a git repo is present. If no repo, omit them rather than leaving them blank.
|
|
26
|
-
|
|
27
|
-
### State File Contains Actual Content
|
|
28
|
-
|
|
29
|
-
- "Next Step" section must be specific and actionable — not a placeholder like "[describe next step]"
|
|
30
|
-
- Decisions Made section must reflect real decisions from the conversation, not template text
|
|
31
|
-
- If the session was very early (e.g., Phase 0 only), the "Captured" summary should say so explicitly
|
|
32
|
-
|
|
33
|
-
### Artifacts Verified
|
|
34
|
-
|
|
35
|
-
For each artifact path listed in the state file:
|
|
36
|
-
- The file must exist on disk at the recorded path
|
|
37
|
-
- If an artifact path is stale (file was deleted or moved), note it with `[NOT FOUND]` rather than silently omitting it
|
|
38
|
-
|
|
39
|
-
---
|
|
40
|
-
|
|
41
|
-
## Post-Write Validation
|
|
42
|
-
|
|
43
|
-
After writing the state file, verify:
|
|
44
|
-
|
|
45
|
-
### File Was Written Successfully
|
|
46
|
-
|
|
47
|
-
- The state file exists at `~/.claude/ftm-state/STATE.md`
|
|
48
|
-
- File size is non-zero
|
|
49
|
-
- The frontmatter block is parseable (starts with `---`, contains required keys)
|
|
50
|
-
|
|
51
|
-
### State Is Resumable
|
|
52
|
-
|
|
53
|
-
The written state must pass the "cold start test": a fresh conversation with no prior context should be able to reconstruct the session from the state file alone, without needing to ask the user "where were we?" Concretely:
|
|
54
|
-
- The skill and phase are unambiguous
|
|
55
|
-
- The Next Step section tells ftm-resume exactly what action to take first
|
|
56
|
-
- Enough prior context is captured that the first response after resume won't require re-explaining the project
|
|
57
|
-
|
|
58
|
-
---
|
|
59
|
-
|
|
60
|
-
## Edge Case Handling
|
|
61
|
-
|
|
62
|
-
### Multiple Skills Active
|
|
63
|
-
|
|
64
|
-
If two ftm skills were invoked in the same conversation (e.g., brainstorm followed by executor), save the most recently active one to `STATE.md`. Save the other to `STATE-[skill].md` in the same directory. Both files go through the same validation.
|
|
65
|
-
|
|
66
|
-
### Overwriting Existing State
|
|
67
|
-
|
|
68
|
-
Overwrite `STATE.md` without prompting. The previous state was either already resumed and consumed, or abandoned. Validation still applies to the new file.
|
|
69
|
-
|
|
70
|
-
### No Git Repo
|
|
71
|
-
|
|
72
|
-
Skip `git_branch` and `git_commit` fields entirely. Record only `project_dir`. Do not write empty string values for these fields — omit them from the frontmatter block.
|
|
73
|
-
|
|
74
|
-
### Very Early Session (Phase 0 or Step 1 Only)
|
|
75
|
-
|
|
76
|
-
Capture whatever exists. Even a Phase 0 repo scan is worth saving. The "Next Step" section should note that the user needs to answer the first intake question. This passes validation — sparse state is valid state.
|
|
77
|
-
|
|
78
|
-
### Large State Files
|
|
79
|
-
|
|
80
|
-
Do not truncate. Some sessions accumulate substantial state — 8+ brainstorm turns with full research results, or an executor session with 20+ tasks. The state file can be large. Completeness is required for reliable restoration.
|
|
1
|
+
# State Validation Logic
|
|
2
|
+
|
|
3
|
+
This document defines all validation checks performed before and after writing state to disk.
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## Pre-Write Validation
|
|
8
|
+
|
|
9
|
+
Before writing `~/.claude/ftm-state/STATE.md`, verify the following:
|
|
10
|
+
|
|
11
|
+
### Skill Detection Confirmed
|
|
12
|
+
|
|
13
|
+
- A ftm skill was positively identified from the conversation context
|
|
14
|
+
- If no skill detected: halt and tell the user "No active ftm session detected" — do not write a blank or partial state file
|
|
15
|
+
|
|
16
|
+
### Required Frontmatter Fields Present
|
|
17
|
+
|
|
18
|
+
The YAML frontmatter block must contain:
|
|
19
|
+
- `skill` — one of: ftm-brainstorm, ftm-executor, ftm-debug, ftm-council, ftm-audit
|
|
20
|
+
- `phase` — the current phase number or stage name for that skill
|
|
21
|
+
- `phase_detail` — a human-readable one-liner about exactly where the session stopped
|
|
22
|
+
- `timestamp` — ISO 8601 format (YYYY-MM-DDThh:mm:ss)
|
|
23
|
+
- `project_dir` — absolute path to the working directory
|
|
24
|
+
|
|
25
|
+
Git fields (`git_branch`, `git_commit`) are required only if a git repo is present. If no repo, omit them rather than leaving them blank.
|
|
26
|
+
|
|
27
|
+
### State File Contains Actual Content
|
|
28
|
+
|
|
29
|
+
- "Next Step" section must be specific and actionable — not a placeholder like "[describe next step]"
|
|
30
|
+
- Decisions Made section must reflect real decisions from the conversation, not template text
|
|
31
|
+
- If the session was very early (e.g., Phase 0 only), the "Captured" summary should say so explicitly
|
|
32
|
+
|
|
33
|
+
### Artifacts Verified
|
|
34
|
+
|
|
35
|
+
For each artifact path listed in the state file:
|
|
36
|
+
- The file must exist on disk at the recorded path
|
|
37
|
+
- If an artifact path is stale (file was deleted or moved), note it with `[NOT FOUND]` rather than silently omitting it
|
|
38
|
+
|
|
39
|
+
---
|
|
40
|
+
|
|
41
|
+
## Post-Write Validation
|
|
42
|
+
|
|
43
|
+
After writing the state file, verify:
|
|
44
|
+
|
|
45
|
+
### File Was Written Successfully
|
|
46
|
+
|
|
47
|
+
- The state file exists at `~/.claude/ftm-state/STATE.md`
|
|
48
|
+
- File size is non-zero
|
|
49
|
+
- The frontmatter block is parseable (starts with `---`, contains required keys)
|
|
50
|
+
|
|
51
|
+
### State Is Resumable
|
|
52
|
+
|
|
53
|
+
The written state must pass the "cold start test": a fresh conversation with no prior context should be able to reconstruct the session from the state file alone, without needing to ask the user "where were we?" Concretely:
|
|
54
|
+
- The skill and phase are unambiguous
|
|
55
|
+
- The Next Step section tells ftm-resume exactly what action to take first
|
|
56
|
+
- Enough prior context is captured that the first response after resume won't require re-explaining the project
|
|
57
|
+
|
|
58
|
+
---
|
|
59
|
+
|
|
60
|
+
## Edge Case Handling
|
|
61
|
+
|
|
62
|
+
### Multiple Skills Active
|
|
63
|
+
|
|
64
|
+
If two ftm skills were invoked in the same conversation (e.g., brainstorm followed by executor), save the most recently active one to `STATE.md`. Save the other to `STATE-[skill].md` in the same directory. Both files go through the same validation.
|
|
65
|
+
|
|
66
|
+
### Overwriting Existing State
|
|
67
|
+
|
|
68
|
+
Overwrite `STATE.md` without prompting. The previous state was either already resumed and consumed, or abandoned. Validation still applies to the new file.
|
|
69
|
+
|
|
70
|
+
### No Git Repo
|
|
71
|
+
|
|
72
|
+
Skip `git_branch` and `git_commit` fields entirely. Record only `project_dir`. Do not write empty string values for these fields — omit them from the frontmatter block.
|
|
73
|
+
|
|
74
|
+
### Very Early Session (Phase 0 or Step 1 Only)
|
|
75
|
+
|
|
76
|
+
Capture whatever exists. Even a Phase 0 repo scan is worth saving. The "Next Step" section should note that the user needs to answer the first intake question. This passes validation — sparse state is valid state.
|
|
77
|
+
|
|
78
|
+
### Large State Files
|
|
79
|
+
|
|
80
|
+
Do not truncate. Some sessions accumulate substantial state — 8+ brainstorm turns with full research results, or an executor session with 20+ tasks. The state file can be large. Completeness is required for reliable restoration.
|
package/ftm-pause.yml
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
name: ftm-pause
|
|
2
|
-
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).
|
|
1
|
+
name: ftm-pause
|
|
2
|
+
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).
|