feed-the-machine 1.6.1 → 1.7.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -21
- package/README.md +170 -170
- package/bin/brain.py +1340 -0
- package/bin/convert_claude_skills_to_codex.py +490 -0
- package/bin/generate-manifest.mjs +463 -463
- package/bin/harden_codex_skills.py +141 -0
- package/bin/install.mjs +491 -491
- package/bin/migrate-eng-buddy-data.py +875 -0
- package/bin/playbook_engine/__init__.py +1 -0
- package/bin/playbook_engine/conftest.py +8 -0
- package/bin/playbook_engine/extractor.py +33 -0
- package/bin/playbook_engine/manager.py +102 -0
- package/bin/playbook_engine/models.py +84 -0
- package/bin/playbook_engine/registry.py +35 -0
- package/bin/playbook_engine/test_extractor.py +72 -0
- package/bin/playbook_engine/test_integration.py +129 -0
- package/bin/playbook_engine/test_manager.py +85 -0
- package/bin/playbook_engine/test_models.py +166 -0
- package/bin/playbook_engine/test_registry.py +67 -0
- package/bin/playbook_engine/test_tracer.py +86 -0
- package/bin/playbook_engine/tracer.py +93 -0
- package/bin/tasks_db.py +456 -0
- package/docs/HOOKS.md +243 -243
- package/docs/INBOX.md +233 -233
- package/ftm/SKILL.md +125 -122
- package/ftm-audit/SKILL.md +623 -623
- 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 +1003 -498
- package/ftm-brainstorm/evals/evals.json +180 -100
- package/ftm-brainstorm/evals/promptfoo.yaml +109 -109
- package/ftm-brainstorm/references/agent-prompts.md +552 -224
- package/ftm-brainstorm/references/plan-template.md +209 -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 +422 -345
- package/ftm-config.default.yml +125 -82
- package/ftm-config.yml +44 -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 -777
- 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 -59
- 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/__pycache__/main.cpython-314.pyc +0 -0
- 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/__pycache__/__init__.cpython-314.pyc +0 -0
- package/ftm-inbox/backend/planner/__pycache__/generator.cpython-314.pyc +0 -0
- package/ftm-inbox/backend/planner/__pycache__/schema.cpython-314.pyc +0 -0
- 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/__pycache__/plan.cpython-314.pyc +0 -0
- 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 +201 -1943
- package/ftm-mind/evals/promptfoo.yaml +142 -142
- package/ftm-mind/references/blackboard-protocol.md +110 -0
- package/ftm-mind/references/blackboard-schema.md +328 -328
- package/ftm-mind/references/complexity-guide.md +110 -110
- package/ftm-mind/references/complexity-sizing.md +138 -0
- package/ftm-mind/references/decide-act-protocol.md +172 -0
- package/ftm-mind/references/direct-execution.md +51 -0
- package/ftm-mind/references/environment-discovery.md +77 -0
- package/ftm-mind/references/event-registry.md +319 -319
- package/ftm-mind/references/mcp-inventory.md +300 -296
- package/ftm-mind/references/ops-routing.md +47 -0
- package/ftm-mind/references/orient-protocol.md +234 -0
- package/ftm-mind/references/personality.md +40 -0
- 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-ops.yml +4 -0
- 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 +37 -23
- package/ftm-state/blackboard/experiences/doom-statusline-fix.json +26 -0
- package/ftm-state/blackboard/experiences/hackathon-pages-site.json +26 -0
- package/ftm-state/blackboard/experiences/hindsight-sso-kickoff.json +42 -0
- package/ftm-state/blackboard/experiences/index.json +58 -9
- package/ftm-state/blackboard/experiences/learning-ragnarok-api-access.json +23 -0
- package/ftm-state/blackboard/experiences/nordlayer-members-auto-assign.json +26 -0
- package/ftm-state/blackboard/experiences/saml2aws-stale-session-fix.json +41 -0
- 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-auto-log.sh +137 -0
- 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-install-hooks.sh +240 -0
- package/hooks/ftm-learning-capture.sh +117 -0
- 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/ftm-post-compaction.sh +138 -0
- package/hooks/ftm-pre-compaction.sh +147 -0
- package/hooks/ftm-session-end.sh +52 -0
- package/hooks/ftm-session-snapshot.sh +213 -0
- package/hooks/settings-template.json +81 -81
- package/install.sh +363 -363
- package/package.json +84 -84
- package/uninstall.sh +25 -25
|
@@ -1,142 +1,142 @@
|
|
|
1
|
-
description: "ftm-mind routing accuracy"
|
|
2
|
-
|
|
3
|
-
prompts:
|
|
4
|
-
- "You are ftm-mind. Given this user request, which ftm skill should handle it? Reply with just the skill name.\n\nUser: {{input}}"
|
|
5
|
-
|
|
6
|
-
providers:
|
|
7
|
-
- id: "exec:claude --print"
|
|
8
|
-
label: "claude-code"
|
|
9
|
-
|
|
10
|
-
tests:
|
|
11
|
-
- description: "debug request routes to ftm-debug"
|
|
12
|
-
vars:
|
|
13
|
-
input: "debug this flaky test"
|
|
14
|
-
assert:
|
|
15
|
-
- type: contains
|
|
16
|
-
value: "ftm-debug"
|
|
17
|
-
|
|
18
|
-
- description: "design thinking routes to ftm-brainstorm"
|
|
19
|
-
vars:
|
|
20
|
-
input: "help me think through auth design"
|
|
21
|
-
assert:
|
|
22
|
-
- type: contains
|
|
23
|
-
value: "ftm-brainstorm"
|
|
24
|
-
|
|
25
|
-
- description: "plan execution routes to ftm-executor"
|
|
26
|
-
vars:
|
|
27
|
-
input: "execute ~/.claude/plans/foo.md"
|
|
28
|
-
assert:
|
|
29
|
-
- type: contains
|
|
30
|
-
value: "ftm-executor"
|
|
31
|
-
|
|
32
|
-
- description: "trivial rename routes to micro or direct handling"
|
|
33
|
-
vars:
|
|
34
|
-
input: "rename this variable"
|
|
35
|
-
assert:
|
|
36
|
-
- type: regex
|
|
37
|
-
value: "micro|direct"
|
|
38
|
-
|
|
39
|
-
- description: "multi-model deliberation routes to ftm-council"
|
|
40
|
-
vars:
|
|
41
|
-
input: "what would other AIs think about this approach"
|
|
42
|
-
assert:
|
|
43
|
-
- type: contains
|
|
44
|
-
value: "ftm-council"
|
|
45
|
-
|
|
46
|
-
- description: "wiring audit routes to ftm-audit"
|
|
47
|
-
vars:
|
|
48
|
-
input: "audit the wiring"
|
|
49
|
-
assert:
|
|
50
|
-
- type: contains
|
|
51
|
-
value: "ftm-audit"
|
|
52
|
-
|
|
53
|
-
- description: "pause request routes to ftm-pause"
|
|
54
|
-
vars:
|
|
55
|
-
input: "pause"
|
|
56
|
-
assert:
|
|
57
|
-
- type: contains
|
|
58
|
-
value: "ftm-pause"
|
|
59
|
-
|
|
60
|
-
- description: "save state request routes to ftm-pause"
|
|
61
|
-
vars:
|
|
62
|
-
input: "save state"
|
|
63
|
-
assert:
|
|
64
|
-
- type: contains
|
|
65
|
-
value: "ftm-pause"
|
|
66
|
-
|
|
67
|
-
- description: "resume request routes to ftm-resume"
|
|
68
|
-
vars:
|
|
69
|
-
input: "resume"
|
|
70
|
-
assert:
|
|
71
|
-
- type: contains
|
|
72
|
-
value: "ftm-resume"
|
|
73
|
-
|
|
74
|
-
- description: "continue request routes to ftm-resume"
|
|
75
|
-
vars:
|
|
76
|
-
input: "continue where we left off"
|
|
77
|
-
assert:
|
|
78
|
-
- type: contains
|
|
79
|
-
value: "ftm-resume"
|
|
80
|
-
|
|
81
|
-
- description: "upgrade request routes to ftm-upgrade"
|
|
82
|
-
vars:
|
|
83
|
-
input: "upgrade ftm"
|
|
84
|
-
assert:
|
|
85
|
-
- type: contains
|
|
86
|
-
value: "ftm-upgrade"
|
|
87
|
-
|
|
88
|
-
- description: "config check routes to ftm-config"
|
|
89
|
-
vars:
|
|
90
|
-
input: "check my config"
|
|
91
|
-
assert:
|
|
92
|
-
- type: contains
|
|
93
|
-
value: "ftm-config"
|
|
94
|
-
|
|
95
|
-
- description: "ftm settings routes to ftm-config"
|
|
96
|
-
vars:
|
|
97
|
-
input: "ftm settings"
|
|
98
|
-
assert:
|
|
99
|
-
- type: contains
|
|
100
|
-
value: "ftm-config"
|
|
101
|
-
|
|
102
|
-
- description: "intent doc update routes to ftm-intent"
|
|
103
|
-
vars:
|
|
104
|
-
input: "update the intent docs"
|
|
105
|
-
assert:
|
|
106
|
-
- type: contains
|
|
107
|
-
value: "ftm-intent"
|
|
108
|
-
|
|
109
|
-
- description: "architecture diagram update routes to ftm-diagram"
|
|
110
|
-
vars:
|
|
111
|
-
input: "update architecture diagram"
|
|
112
|
-
assert:
|
|
113
|
-
- type: contains
|
|
114
|
-
value: "ftm-diagram"
|
|
115
|
-
|
|
116
|
-
- description: "browser task routes to ftm-browse"
|
|
117
|
-
vars:
|
|
118
|
-
input: "open browser and check the page"
|
|
119
|
-
assert:
|
|
120
|
-
- type: contains
|
|
121
|
-
value: "ftm-browse"
|
|
122
|
-
|
|
123
|
-
- description: "codex validation routes to ftm-codex-gate"
|
|
124
|
-
vars:
|
|
125
|
-
input: "run codex validation"
|
|
126
|
-
assert:
|
|
127
|
-
- type: contains
|
|
128
|
-
value: "ftm-codex-gate"
|
|
129
|
-
|
|
130
|
-
- description: "retrospective routes to ftm-retro"
|
|
131
|
-
vars:
|
|
132
|
-
input: "how did that go"
|
|
133
|
-
assert:
|
|
134
|
-
- type: contains
|
|
135
|
-
value: "ftm-retro"
|
|
136
|
-
|
|
137
|
-
- description: "retro keyword routes to ftm-retro"
|
|
138
|
-
vars:
|
|
139
|
-
input: "retro"
|
|
140
|
-
assert:
|
|
141
|
-
- type: contains
|
|
142
|
-
value: "ftm-retro"
|
|
1
|
+
description: "ftm-mind routing accuracy"
|
|
2
|
+
|
|
3
|
+
prompts:
|
|
4
|
+
- "You are ftm-mind. Given this user request, which ftm skill should handle it? Reply with just the skill name.\n\nUser: {{input}}"
|
|
5
|
+
|
|
6
|
+
providers:
|
|
7
|
+
- id: "exec:claude --print"
|
|
8
|
+
label: "claude-code"
|
|
9
|
+
|
|
10
|
+
tests:
|
|
11
|
+
- description: "debug request routes to ftm-debug"
|
|
12
|
+
vars:
|
|
13
|
+
input: "debug this flaky test"
|
|
14
|
+
assert:
|
|
15
|
+
- type: contains
|
|
16
|
+
value: "ftm-debug"
|
|
17
|
+
|
|
18
|
+
- description: "design thinking routes to ftm-brainstorm"
|
|
19
|
+
vars:
|
|
20
|
+
input: "help me think through auth design"
|
|
21
|
+
assert:
|
|
22
|
+
- type: contains
|
|
23
|
+
value: "ftm-brainstorm"
|
|
24
|
+
|
|
25
|
+
- description: "plan execution routes to ftm-executor"
|
|
26
|
+
vars:
|
|
27
|
+
input: "execute ~/.claude/plans/foo.md"
|
|
28
|
+
assert:
|
|
29
|
+
- type: contains
|
|
30
|
+
value: "ftm-executor"
|
|
31
|
+
|
|
32
|
+
- description: "trivial rename routes to micro or direct handling"
|
|
33
|
+
vars:
|
|
34
|
+
input: "rename this variable"
|
|
35
|
+
assert:
|
|
36
|
+
- type: regex
|
|
37
|
+
value: "micro|direct"
|
|
38
|
+
|
|
39
|
+
- description: "multi-model deliberation routes to ftm-council"
|
|
40
|
+
vars:
|
|
41
|
+
input: "what would other AIs think about this approach"
|
|
42
|
+
assert:
|
|
43
|
+
- type: contains
|
|
44
|
+
value: "ftm-council"
|
|
45
|
+
|
|
46
|
+
- description: "wiring audit routes to ftm-audit"
|
|
47
|
+
vars:
|
|
48
|
+
input: "audit the wiring"
|
|
49
|
+
assert:
|
|
50
|
+
- type: contains
|
|
51
|
+
value: "ftm-audit"
|
|
52
|
+
|
|
53
|
+
- description: "pause request routes to ftm-pause"
|
|
54
|
+
vars:
|
|
55
|
+
input: "pause"
|
|
56
|
+
assert:
|
|
57
|
+
- type: contains
|
|
58
|
+
value: "ftm-pause"
|
|
59
|
+
|
|
60
|
+
- description: "save state request routes to ftm-pause"
|
|
61
|
+
vars:
|
|
62
|
+
input: "save state"
|
|
63
|
+
assert:
|
|
64
|
+
- type: contains
|
|
65
|
+
value: "ftm-pause"
|
|
66
|
+
|
|
67
|
+
- description: "resume request routes to ftm-resume"
|
|
68
|
+
vars:
|
|
69
|
+
input: "resume"
|
|
70
|
+
assert:
|
|
71
|
+
- type: contains
|
|
72
|
+
value: "ftm-resume"
|
|
73
|
+
|
|
74
|
+
- description: "continue request routes to ftm-resume"
|
|
75
|
+
vars:
|
|
76
|
+
input: "continue where we left off"
|
|
77
|
+
assert:
|
|
78
|
+
- type: contains
|
|
79
|
+
value: "ftm-resume"
|
|
80
|
+
|
|
81
|
+
- description: "upgrade request routes to ftm-upgrade"
|
|
82
|
+
vars:
|
|
83
|
+
input: "upgrade ftm"
|
|
84
|
+
assert:
|
|
85
|
+
- type: contains
|
|
86
|
+
value: "ftm-upgrade"
|
|
87
|
+
|
|
88
|
+
- description: "config check routes to ftm-config"
|
|
89
|
+
vars:
|
|
90
|
+
input: "check my config"
|
|
91
|
+
assert:
|
|
92
|
+
- type: contains
|
|
93
|
+
value: "ftm-config"
|
|
94
|
+
|
|
95
|
+
- description: "ftm settings routes to ftm-config"
|
|
96
|
+
vars:
|
|
97
|
+
input: "ftm settings"
|
|
98
|
+
assert:
|
|
99
|
+
- type: contains
|
|
100
|
+
value: "ftm-config"
|
|
101
|
+
|
|
102
|
+
- description: "intent doc update routes to ftm-intent"
|
|
103
|
+
vars:
|
|
104
|
+
input: "update the intent docs"
|
|
105
|
+
assert:
|
|
106
|
+
- type: contains
|
|
107
|
+
value: "ftm-intent"
|
|
108
|
+
|
|
109
|
+
- description: "architecture diagram update routes to ftm-diagram"
|
|
110
|
+
vars:
|
|
111
|
+
input: "update architecture diagram"
|
|
112
|
+
assert:
|
|
113
|
+
- type: contains
|
|
114
|
+
value: "ftm-diagram"
|
|
115
|
+
|
|
116
|
+
- description: "browser task routes to ftm-browse"
|
|
117
|
+
vars:
|
|
118
|
+
input: "open browser and check the page"
|
|
119
|
+
assert:
|
|
120
|
+
- type: contains
|
|
121
|
+
value: "ftm-browse"
|
|
122
|
+
|
|
123
|
+
- description: "codex validation routes to ftm-codex-gate"
|
|
124
|
+
vars:
|
|
125
|
+
input: "run codex validation"
|
|
126
|
+
assert:
|
|
127
|
+
- type: contains
|
|
128
|
+
value: "ftm-codex-gate"
|
|
129
|
+
|
|
130
|
+
- description: "retrospective routes to ftm-retro"
|
|
131
|
+
vars:
|
|
132
|
+
input: "how did that go"
|
|
133
|
+
assert:
|
|
134
|
+
- type: contains
|
|
135
|
+
value: "ftm-retro"
|
|
136
|
+
|
|
137
|
+
- description: "retro keyword routes to ftm-retro"
|
|
138
|
+
vars:
|
|
139
|
+
input: "retro"
|
|
140
|
+
assert:
|
|
141
|
+
- type: contains
|
|
142
|
+
value: "ftm-retro"
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
# Blackboard Loading Protocol
|
|
2
|
+
|
|
3
|
+
Read the blackboard in this order:
|
|
4
|
+
|
|
5
|
+
1. `context.json`
|
|
6
|
+
2. `experiences/index.json`
|
|
7
|
+
3. `patterns.json`
|
|
8
|
+
|
|
9
|
+
Use these exact paths:
|
|
10
|
+
|
|
11
|
+
- `~/.claude/ftm-state/blackboard/context.json`
|
|
12
|
+
- `~/.claude/ftm-state/blackboard/experiences/index.json`
|
|
13
|
+
- `~/.claude/ftm-state/blackboard/patterns.json`
|
|
14
|
+
|
|
15
|
+
## context.json
|
|
16
|
+
|
|
17
|
+
Use `context.json` for live session state only.
|
|
18
|
+
|
|
19
|
+
Pull out:
|
|
20
|
+
|
|
21
|
+
- `current_task`: does the request continue the active thread or branch away from it?
|
|
22
|
+
- `recent_decisions`: what did we already decide this session?
|
|
23
|
+
- `active_constraints`: no auto-commit, avoid production, stay terse, etc.
|
|
24
|
+
- `user_preferences`: communication and approval preferences
|
|
25
|
+
- `session_metadata.skills_invoked`: what workflow is already underway?
|
|
26
|
+
|
|
27
|
+
Key heuristic:
|
|
28
|
+
|
|
29
|
+
- trajectory matters more than isolated wording
|
|
30
|
+
|
|
31
|
+
If the last sequence was brainstorm -> plan -> execute, then "go ahead" means something different than if the session began 10 seconds ago.
|
|
32
|
+
|
|
33
|
+
## Experience Retrieval
|
|
34
|
+
|
|
35
|
+
Experience retrieval must be concrete, not hand-wavy.
|
|
36
|
+
|
|
37
|
+
Protocol:
|
|
38
|
+
|
|
39
|
+
1. Read `~/.claude/ftm-state/blackboard/experiences/index.json`
|
|
40
|
+
2. Parse `entries`
|
|
41
|
+
3. Derive a current `task_type`
|
|
42
|
+
4. Derive current tags from the request and codebase context
|
|
43
|
+
5. Filter entries where:
|
|
44
|
+
- `task_type` matches the current task type, or
|
|
45
|
+
- there is at least one overlapping tag
|
|
46
|
+
6. Sort filtered entries by `recorded_at` descending
|
|
47
|
+
7. Load the top 3-5 matching experience files from:
|
|
48
|
+
- `~/.claude/ftm-state/blackboard/experiences/{filename}`
|
|
49
|
+
8. Prefer lessons from entries with:
|
|
50
|
+
- `outcome: success`
|
|
51
|
+
- higher `confidence`
|
|
52
|
+
- recent dates
|
|
53
|
+
9. Synthesize the lessons into concrete adjustments to the current approach
|
|
54
|
+
|
|
55
|
+
Derive tags from:
|
|
56
|
+
|
|
57
|
+
- language or framework names
|
|
58
|
+
- domain nouns like `auth`, `poller`, `slack`, `database`, `deploy`, `calendar`, `jira`
|
|
59
|
+
- task shape like `flaky-test`, `refactor`, `ticket-triage`, `plan-execution`
|
|
60
|
+
|
|
61
|
+
Use retrieved experience for:
|
|
62
|
+
|
|
63
|
+
- complexity calibration
|
|
64
|
+
- known pitfalls
|
|
65
|
+
- better sequencing
|
|
66
|
+
- better routing
|
|
67
|
+
- faster first checks
|
|
68
|
+
|
|
69
|
+
Never use experience to blindly repeat an old approach when the live context has changed.
|
|
70
|
+
|
|
71
|
+
## Pattern Registry
|
|
72
|
+
|
|
73
|
+
Read `patterns.json` after experience retrieval.
|
|
74
|
+
|
|
75
|
+
Scan all four sections:
|
|
76
|
+
|
|
77
|
+
- `codebase_insights`
|
|
78
|
+
- `execution_patterns`
|
|
79
|
+
- `user_behavior`
|
|
80
|
+
- `recurring_issues`
|
|
81
|
+
|
|
82
|
+
Apply patterns only when they materially match the present case.
|
|
83
|
+
|
|
84
|
+
Examples:
|
|
85
|
+
|
|
86
|
+
- matching `file_pattern` on touched files
|
|
87
|
+
- recurring issue symptoms that fit the current failure
|
|
88
|
+
- user behavior that affects response style or approval expectations
|
|
89
|
+
- execution patterns that suggest a proven sequence
|
|
90
|
+
|
|
91
|
+
Patterns are promoted summaries. They should speed up orientation, not replace it.
|
|
92
|
+
|
|
93
|
+
## Cold-Start Behavior
|
|
94
|
+
|
|
95
|
+
Cold start is normal.
|
|
96
|
+
|
|
97
|
+
When the blackboard is empty:
|
|
98
|
+
|
|
99
|
+
- do not apologize
|
|
100
|
+
- do not say capability is reduced
|
|
101
|
+
- do not surface that memory is empty unless the user asked
|
|
102
|
+
- operate at full capability using live observation, codebase state, MCP awareness, and base heuristics
|
|
103
|
+
|
|
104
|
+
Warm start adds shortcuts. Cold start is still a smart engineer on day 1 at a new job.
|
|
105
|
+
|
|
106
|
+
If `experiences/index.json` has no usable matches:
|
|
107
|
+
|
|
108
|
+
- continue normally
|
|
109
|
+
- lean harder on current repo state and direct inspection
|
|
110
|
+
- record the resulting experience aggressively after completion
|