feed-the-machine 1.6.0 → 1.7.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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,249 +1,249 @@
|
|
|
1
|
-
# Reflexion Protocol — Verbal RL for FTM-Mind
|
|
2
|
-
|
|
3
|
-
**Location**: `~/.claude/skills/ftm-mind/references/reflexion-protocol.md`
|
|
4
|
-
**Purpose**: Defines how ftm-mind stores and reuses execution experience through the Reflexion pattern — a lightweight verbal reinforcement learning loop that improves behavior across sessions without fine-tuning.
|
|
5
|
-
|
|
6
|
-
---
|
|
7
|
-
|
|
8
|
-
## The Reflexion Pattern
|
|
9
|
-
|
|
10
|
-
Reflexion is a simple feedback mechanism: after each significant action, write a short natural-language reflection describing what happened and why. Before the next attempt at a similar task, retrieve and prepend relevant reflections to the working context.
|
|
11
|
-
|
|
12
|
-
Core loop:
|
|
13
|
-
1. **Act** — execute the task using available skills and tools
|
|
14
|
-
2. **Reflect** — generate a structured verbal reflection on the outcome
|
|
15
|
-
3. **Store** — write the reflection as an experience entry to the blackboard
|
|
16
|
-
4. **Retrieve** — on the next similar task, load matching experiences during Orient
|
|
17
|
-
5. **Adjust** — synthesize retrieved lessons into an adjusted approach before acting
|
|
18
|
-
|
|
19
|
-
The key insight: language models do not update weights between conversations, but they can update behavior when prior experience is injected as context. Reflexion makes that injection systematic.
|
|
20
|
-
|
|
21
|
-
### What "Prepend to Next Attempt" Means
|
|
22
|
-
|
|
23
|
-
When ftm-mind enters the Orient phase of the OODA loop for a new task:
|
|
24
|
-
|
|
25
|
-
1. Read `experiences/index.json`
|
|
26
|
-
2. Filter entries matching the current `task_type` and any overlapping tags
|
|
27
|
-
3. Load the top 3–5 most recent matching experience files
|
|
28
|
-
4. Synthesize their `lessons` arrays into a short prior-experience summary
|
|
29
|
-
5. That summary is the first input considered when forming the plan — not an afterthought
|
|
30
|
-
|
|
31
|
-
This is the prepend. The retrieved experience shapes the approach before any analysis of the current task begins.
|
|
32
|
-
|
|
33
|
-
---
|
|
34
|
-
|
|
35
|
-
## Trigger Conditions
|
|
36
|
-
|
|
37
|
-
Micro-reflections are written after any of the following events:
|
|
38
|
-
|
|
39
|
-
| Event | When It Fires | What to Record |
|
|
40
|
-
|---|---|---|
|
|
41
|
-
| `task_completed` | Any task finishes — micro through large | Outcome, approach, what worked |
|
|
42
|
-
| `bug_fixed` | A bug was diagnosed and resolved | Root cause, fix strategy, what was misleading |
|
|
43
|
-
| `error_encountered` | An unexpected error during execution | Error context, what caused it, how to avoid |
|
|
44
|
-
| `code_committed` | A meaningful commit is made | What changed, why, any surprising side effects |
|
|
45
|
-
| `plan_generated` | A plan was created from brainstorming | Plan structure, assumptions made, expected risks |
|
|
46
|
-
| `user_correction` | The user corrected the mind's approach | What the mind got wrong, what the correct approach was |
|
|
47
|
-
|
|
48
|
-
Do not wait for a formal retro to record these. Write the experience file immediately after the triggering event resolves. Delayed recording produces lower-quality lessons.
|
|
49
|
-
|
|
50
|
-
---
|
|
51
|
-
|
|
52
|
-
## Reflection Format
|
|
53
|
-
|
|
54
|
-
For each trigger, generate a structured verbal RL reflection before writing the experience entry:
|
|
55
|
-
|
|
56
|
-
```
|
|
57
|
-
I [succeeded / failed / partially succeeded] at [task description] because [specific reason].
|
|
58
|
-
Next time I should [concrete, actionable adjustment].
|
|
59
|
-
Confidence: [low / medium / high]
|
|
60
|
-
```
|
|
61
|
-
|
|
62
|
-
### Good Reflection Examples
|
|
63
|
-
|
|
64
|
-
```
|
|
65
|
-
I succeeded at adding the freshservice enrichment poller because the existing poller_runtime.py
|
|
66
|
-
pattern was reusable with minimal modification.
|
|
67
|
-
Next time I should check for existing runtime patterns before writing new polling infrastructure.
|
|
68
|
-
Confidence: medium
|
|
69
|
-
```
|
|
70
|
-
|
|
71
|
-
```
|
|
72
|
-
I partially succeeded at the Jira sync task because the field mapping worked but the
|
|
73
|
-
attachment handling failed silently — no error was surfaced until the next run.
|
|
74
|
-
Next time I should add explicit attachment count validation after every sync and log
|
|
75
|
-
mismatches immediately rather than relying on downstream detection.
|
|
76
|
-
Confidence: low
|
|
77
|
-
```
|
|
78
|
-
|
|
79
|
-
```
|
|
80
|
-
I failed at the database migration because I assumed the staging schema matched production
|
|
81
|
-
and did not read the migration history first.
|
|
82
|
-
Next time I should always read the last 5 migration files before writing a new one.
|
|
83
|
-
Confidence: high
|
|
84
|
-
```
|
|
85
|
-
|
|
86
|
-
### Bad Reflection Examples (Do Not Write These)
|
|
87
|
-
|
|
88
|
-
```
|
|
89
|
-
I did okay at the task. It was kind of complex.
|
|
90
|
-
Next time I should be more careful.
|
|
91
|
-
Confidence: medium
|
|
92
|
-
```
|
|
93
|
-
|
|
94
|
-
Why bad: "be more careful" is not actionable. No specific reason for the outcome. Cannot be acted on by a future skill loading this file.
|
|
95
|
-
|
|
96
|
-
```
|
|
97
|
-
I succeeded because I am good at code.
|
|
98
|
-
```
|
|
99
|
-
|
|
100
|
-
Why bad: No transferable lesson. Causation is not traced. Useless as a retrieval artifact.
|
|
101
|
-
|
|
102
|
-
### Decomposing Into Lessons
|
|
103
|
-
|
|
104
|
-
The verbal reflection maps to the `lessons` array in the experience entry. Decompose the "Next time I should..." clause into one or more concrete lesson strings:
|
|
105
|
-
|
|
106
|
-
Reflection: "Next time I should check for existing runtime patterns before writing new polling infrastructure and validate attachment handling with explicit count checks."
|
|
107
|
-
|
|
108
|
-
Lessons array:
|
|
109
|
-
```json
|
|
110
|
-
[
|
|
111
|
-
"Check for existing runtime patterns (e.g. poller_runtime.py) before writing new polling infrastructure from scratch.",
|
|
112
|
-
"Add explicit attachment count validation after every sync operation; do not rely on downstream error detection."
|
|
113
|
-
]
|
|
114
|
-
```
|
|
115
|
-
|
|
116
|
-
---
|
|
117
|
-
|
|
118
|
-
## Experience Entry Format Reference
|
|
119
|
-
|
|
120
|
-
Full schema defined in `blackboard-schema.md`. Key fields for micro-reflections:
|
|
121
|
-
|
|
122
|
-
```json
|
|
123
|
-
{
|
|
124
|
-
"task_type": "bug | feature | refactor | investigation | configuration | documentation | test | deploy",
|
|
125
|
-
"description": "1-2 sentence summary of what was attempted",
|
|
126
|
-
"approach": "How the task was approached — tools, strategies, sequence of steps",
|
|
127
|
-
"outcome": "success | partial | failure",
|
|
128
|
-
"lessons": [
|
|
129
|
-
"Concrete, actionable takeaway derived from the verbal RL reflection",
|
|
130
|
-
"Each lesson string must be specific enough to act on without further context"
|
|
131
|
-
],
|
|
132
|
-
"complexity_estimated": "trivial | low | medium | high | very_high",
|
|
133
|
-
"complexity_actual": "trivial | low | medium | high | very_high",
|
|
134
|
-
"capabilities_used": ["ftm-executor", "mcp__mcp-atlassian-personal__jira_get_issue", "backend-architect"],
|
|
135
|
-
"tags": ["python", "slack", "database", "auth"],
|
|
136
|
-
"confidence": "low | medium | high",
|
|
137
|
-
"recorded_at": "ISO8601 timestamp"
|
|
138
|
-
}
|
|
139
|
-
```
|
|
140
|
-
|
|
141
|
-
Written to: `~/.claude/ftm-state/blackboard/experiences/YYYY-MM-DD_task-slug.json`
|
|
142
|
-
|
|
143
|
-
After writing the file, append a metadata entry to `experiences/index.json` and increment `total_count`.
|
|
144
|
-
|
|
145
|
-
---
|
|
146
|
-
|
|
147
|
-
## Pattern Promotion Thresholds
|
|
148
|
-
|
|
149
|
-
Patterns are promoted from individual experience files into `patterns.json` when the same lesson has been independently observed enough times to be considered reliable.
|
|
150
|
-
|
|
151
|
-
| Occurrences | Action | Confidence Level |
|
|
152
|
-
|---|---|---|
|
|
153
|
-
| 1–2 | Stay in experience files only | — |
|
|
154
|
-
| 3 | Promote to `patterns.json` | `low` |
|
|
155
|
-
| 5+ | Raise confidence | `medium` |
|
|
156
|
-
| 8+ | Raise confidence | `high` |
|
|
157
|
-
|
|
158
|
-
### How to Detect Promotion Candidates
|
|
159
|
-
|
|
160
|
-
After writing an experience entry:
|
|
161
|
-
|
|
162
|
-
1. Read `experiences/index.json`
|
|
163
|
-
2. Find all entries where `task_type` matches AND at least one `tag` overlaps with the new entry
|
|
164
|
-
3. Load those experience files
|
|
165
|
-
4. Compare `lessons` arrays across all loaded files — look for thematic overlap (same root cause, same fix pattern, same constraint)
|
|
166
|
-
5. If 3+ entries share a lesson theme, the theme is ready to be promoted
|
|
167
|
-
|
|
168
|
-
Promotion writes to the appropriate category in `patterns.json`:
|
|
169
|
-
- `codebase_insights` — observations about the codebase structure, conventions, or tech choices
|
|
170
|
-
- `execution_patterns` — what approaches work or fail for specific task types
|
|
171
|
-
- `user_behavior` — observed user preferences, correction patterns, approval expectations
|
|
172
|
-
- `recurring_issues` — problems that keep appearing, with their symptoms and known resolutions
|
|
173
|
-
|
|
174
|
-
---
|
|
175
|
-
|
|
176
|
-
## Pattern Decay Rules
|
|
177
|
-
|
|
178
|
-
Patterns that are not reinforced within 30 days become less reliable. Apply decay when reading `patterns.json` during any blackboard operation:
|
|
179
|
-
|
|
180
|
-
| Current Confidence | Days Since `last_reinforced` | Action |
|
|
181
|
-
|---|---|---|
|
|
182
|
-
| `high` | > 30 days | Reduce to `medium` |
|
|
183
|
-
| `medium` | > 30 days | Reduce to `low` |
|
|
184
|
-
| `low` | > 30 days | Remove from `patterns.json` |
|
|
185
|
-
|
|
186
|
-
Decay is applied in-place: read `patterns.json`, compute which entries have expired, reduce or remove them, write the file back.
|
|
187
|
-
|
|
188
|
-
Do not decay entries that have been reinforced recently — `last_reinforced` is updated each time a new experience confirms the same pattern.
|
|
189
|
-
|
|
190
|
-
---
|
|
191
|
-
|
|
192
|
-
## How the Mind Uses Reflexion During Orient
|
|
193
|
-
|
|
194
|
-
Orient is the second phase of the OODA loop (Observe → Orient → Decide → Act). It is where the mind interprets current context and forms a plan. Reflexion inserts prior experience directly into Orient:
|
|
195
|
-
|
|
196
|
-
```
|
|
197
|
-
Orient Phase Protocol:
|
|
198
|
-
|
|
199
|
-
1. Read experiences/index.json
|
|
200
|
-
2. Filter by current task_type + tag overlap
|
|
201
|
-
3. Load top 3–5 experience files (most recent first; prefer confidence: high)
|
|
202
|
-
4. Read patterns.json → filter patterns relevant to the current task domain
|
|
203
|
-
5. Apply decay to any patterns with last_reinforced > 30 days
|
|
204
|
-
6. Synthesize a prior-experience summary:
|
|
205
|
-
- List the most relevant lessons from loaded experiences
|
|
206
|
-
- Note any patterns that apply (from patterns.json)
|
|
207
|
-
- Flag any recurring issues that match the current task's context
|
|
208
|
-
7. Use this summary as the first input when forming the execution plan
|
|
209
|
-
```
|
|
210
|
-
|
|
211
|
-
The synthesis does not need to be formal. A short bullet list of 3–5 observations from past experience is sufficient. The goal is to surface "things that have gone wrong before in situations like this" before committing to an approach.
|
|
212
|
-
|
|
213
|
-
### Retrieval Priority
|
|
214
|
-
|
|
215
|
-
When loading experience files, prioritize in this order:
|
|
216
|
-
1. `confidence: "high"` entries over `"medium"` over `"low"`
|
|
217
|
-
2. `outcome: "success"` for positive lessons (what to repeat)
|
|
218
|
-
3. `outcome: "failure"` for cautionary lessons (what to avoid)
|
|
219
|
-
4. Most recent `recorded_at` as tiebreaker
|
|
220
|
-
|
|
221
|
-
Load both success and failure experiences — learning what not to do is as valuable as learning what works.
|
|
222
|
-
|
|
223
|
-
---
|
|
224
|
-
|
|
225
|
-
## Cold-Start Behavior
|
|
226
|
-
|
|
227
|
-
The blackboard starts empty. During the first ~10 interactions (`total_count < 10` in `index.json`):
|
|
228
|
-
|
|
229
|
-
- Record EVERY completed task, even trivial ones
|
|
230
|
-
- Set `confidence: "low"` on all entries — they have not been cross-validated
|
|
231
|
-
- Prioritize breadth of recording over depth of analysis — getting entries into the index quickly is more valuable than perfect lesson articulation
|
|
232
|
-
- Do not skip recording because a task "was simple" — even trivial tasks reveal conventions and constraints that are useful context
|
|
233
|
-
|
|
234
|
-
The cold-start window is how the system bootstraps its memory. By the 10th interaction, retrieval should already be returning context that reduces repeated mistakes.
|
|
235
|
-
|
|
236
|
-
---
|
|
237
|
-
|
|
238
|
-
## Quick Reference
|
|
239
|
-
|
|
240
|
-
| Concept | Rule |
|
|
241
|
-
|---|---|
|
|
242
|
-
| When to reflect | After every trigger event — do not wait for retro |
|
|
243
|
-
| Reflection format | "I [outcome] at [task] because [reason]. Next time: [adjustment]. Confidence: [level]." |
|
|
244
|
-
| Experience file location | `~/.claude/ftm-state/blackboard/experiences/YYYY-MM-DD_task-slug.json` |
|
|
245
|
-
| Schema reference | `blackboard-schema.md` section 3 |
|
|
246
|
-
| Promotion threshold | 3+ occurrences → `low` confidence; 5+ → `medium`; 8+ → `high` |
|
|
247
|
-
| Decay window | 30 days without reinforcement → reduce confidence one level; at `low` → remove |
|
|
248
|
-
| Orient integration | Load 3–5 matching experiences + relevant patterns before forming any plan |
|
|
249
|
-
| Cold-start rule | Record everything until `total_count >= 10`, all at `confidence: "low"` |
|
|
1
|
+
# Reflexion Protocol — Verbal RL for FTM-Mind
|
|
2
|
+
|
|
3
|
+
**Location**: `~/.claude/skills/ftm-mind/references/reflexion-protocol.md`
|
|
4
|
+
**Purpose**: Defines how ftm-mind stores and reuses execution experience through the Reflexion pattern — a lightweight verbal reinforcement learning loop that improves behavior across sessions without fine-tuning.
|
|
5
|
+
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
## The Reflexion Pattern
|
|
9
|
+
|
|
10
|
+
Reflexion is a simple feedback mechanism: after each significant action, write a short natural-language reflection describing what happened and why. Before the next attempt at a similar task, retrieve and prepend relevant reflections to the working context.
|
|
11
|
+
|
|
12
|
+
Core loop:
|
|
13
|
+
1. **Act** — execute the task using available skills and tools
|
|
14
|
+
2. **Reflect** — generate a structured verbal reflection on the outcome
|
|
15
|
+
3. **Store** — write the reflection as an experience entry to the blackboard
|
|
16
|
+
4. **Retrieve** — on the next similar task, load matching experiences during Orient
|
|
17
|
+
5. **Adjust** — synthesize retrieved lessons into an adjusted approach before acting
|
|
18
|
+
|
|
19
|
+
The key insight: language models do not update weights between conversations, but they can update behavior when prior experience is injected as context. Reflexion makes that injection systematic.
|
|
20
|
+
|
|
21
|
+
### What "Prepend to Next Attempt" Means
|
|
22
|
+
|
|
23
|
+
When ftm-mind enters the Orient phase of the OODA loop for a new task:
|
|
24
|
+
|
|
25
|
+
1. Read `experiences/index.json`
|
|
26
|
+
2. Filter entries matching the current `task_type` and any overlapping tags
|
|
27
|
+
3. Load the top 3–5 most recent matching experience files
|
|
28
|
+
4. Synthesize their `lessons` arrays into a short prior-experience summary
|
|
29
|
+
5. That summary is the first input considered when forming the plan — not an afterthought
|
|
30
|
+
|
|
31
|
+
This is the prepend. The retrieved experience shapes the approach before any analysis of the current task begins.
|
|
32
|
+
|
|
33
|
+
---
|
|
34
|
+
|
|
35
|
+
## Trigger Conditions
|
|
36
|
+
|
|
37
|
+
Micro-reflections are written after any of the following events:
|
|
38
|
+
|
|
39
|
+
| Event | When It Fires | What to Record |
|
|
40
|
+
|---|---|---|
|
|
41
|
+
| `task_completed` | Any task finishes — micro through large | Outcome, approach, what worked |
|
|
42
|
+
| `bug_fixed` | A bug was diagnosed and resolved | Root cause, fix strategy, what was misleading |
|
|
43
|
+
| `error_encountered` | An unexpected error during execution | Error context, what caused it, how to avoid |
|
|
44
|
+
| `code_committed` | A meaningful commit is made | What changed, why, any surprising side effects |
|
|
45
|
+
| `plan_generated` | A plan was created from brainstorming | Plan structure, assumptions made, expected risks |
|
|
46
|
+
| `user_correction` | The user corrected the mind's approach | What the mind got wrong, what the correct approach was |
|
|
47
|
+
|
|
48
|
+
Do not wait for a formal retro to record these. Write the experience file immediately after the triggering event resolves. Delayed recording produces lower-quality lessons.
|
|
49
|
+
|
|
50
|
+
---
|
|
51
|
+
|
|
52
|
+
## Reflection Format
|
|
53
|
+
|
|
54
|
+
For each trigger, generate a structured verbal RL reflection before writing the experience entry:
|
|
55
|
+
|
|
56
|
+
```
|
|
57
|
+
I [succeeded / failed / partially succeeded] at [task description] because [specific reason].
|
|
58
|
+
Next time I should [concrete, actionable adjustment].
|
|
59
|
+
Confidence: [low / medium / high]
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
### Good Reflection Examples
|
|
63
|
+
|
|
64
|
+
```
|
|
65
|
+
I succeeded at adding the freshservice enrichment poller because the existing poller_runtime.py
|
|
66
|
+
pattern was reusable with minimal modification.
|
|
67
|
+
Next time I should check for existing runtime patterns before writing new polling infrastructure.
|
|
68
|
+
Confidence: medium
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
```
|
|
72
|
+
I partially succeeded at the Jira sync task because the field mapping worked but the
|
|
73
|
+
attachment handling failed silently — no error was surfaced until the next run.
|
|
74
|
+
Next time I should add explicit attachment count validation after every sync and log
|
|
75
|
+
mismatches immediately rather than relying on downstream detection.
|
|
76
|
+
Confidence: low
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
```
|
|
80
|
+
I failed at the database migration because I assumed the staging schema matched production
|
|
81
|
+
and did not read the migration history first.
|
|
82
|
+
Next time I should always read the last 5 migration files before writing a new one.
|
|
83
|
+
Confidence: high
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
### Bad Reflection Examples (Do Not Write These)
|
|
87
|
+
|
|
88
|
+
```
|
|
89
|
+
I did okay at the task. It was kind of complex.
|
|
90
|
+
Next time I should be more careful.
|
|
91
|
+
Confidence: medium
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
Why bad: "be more careful" is not actionable. No specific reason for the outcome. Cannot be acted on by a future skill loading this file.
|
|
95
|
+
|
|
96
|
+
```
|
|
97
|
+
I succeeded because I am good at code.
|
|
98
|
+
```
|
|
99
|
+
|
|
100
|
+
Why bad: No transferable lesson. Causation is not traced. Useless as a retrieval artifact.
|
|
101
|
+
|
|
102
|
+
### Decomposing Into Lessons
|
|
103
|
+
|
|
104
|
+
The verbal reflection maps to the `lessons` array in the experience entry. Decompose the "Next time I should..." clause into one or more concrete lesson strings:
|
|
105
|
+
|
|
106
|
+
Reflection: "Next time I should check for existing runtime patterns before writing new polling infrastructure and validate attachment handling with explicit count checks."
|
|
107
|
+
|
|
108
|
+
Lessons array:
|
|
109
|
+
```json
|
|
110
|
+
[
|
|
111
|
+
"Check for existing runtime patterns (e.g. poller_runtime.py) before writing new polling infrastructure from scratch.",
|
|
112
|
+
"Add explicit attachment count validation after every sync operation; do not rely on downstream error detection."
|
|
113
|
+
]
|
|
114
|
+
```
|
|
115
|
+
|
|
116
|
+
---
|
|
117
|
+
|
|
118
|
+
## Experience Entry Format Reference
|
|
119
|
+
|
|
120
|
+
Full schema defined in `blackboard-schema.md`. Key fields for micro-reflections:
|
|
121
|
+
|
|
122
|
+
```json
|
|
123
|
+
{
|
|
124
|
+
"task_type": "bug | feature | refactor | investigation | configuration | documentation | test | deploy",
|
|
125
|
+
"description": "1-2 sentence summary of what was attempted",
|
|
126
|
+
"approach": "How the task was approached — tools, strategies, sequence of steps",
|
|
127
|
+
"outcome": "success | partial | failure",
|
|
128
|
+
"lessons": [
|
|
129
|
+
"Concrete, actionable takeaway derived from the verbal RL reflection",
|
|
130
|
+
"Each lesson string must be specific enough to act on without further context"
|
|
131
|
+
],
|
|
132
|
+
"complexity_estimated": "trivial | low | medium | high | very_high",
|
|
133
|
+
"complexity_actual": "trivial | low | medium | high | very_high",
|
|
134
|
+
"capabilities_used": ["ftm-executor", "mcp__mcp-atlassian-personal__jira_get_issue", "backend-architect"],
|
|
135
|
+
"tags": ["python", "slack", "database", "auth"],
|
|
136
|
+
"confidence": "low | medium | high",
|
|
137
|
+
"recorded_at": "ISO8601 timestamp"
|
|
138
|
+
}
|
|
139
|
+
```
|
|
140
|
+
|
|
141
|
+
Written to: `~/.claude/ftm-state/blackboard/experiences/YYYY-MM-DD_task-slug.json`
|
|
142
|
+
|
|
143
|
+
After writing the file, append a metadata entry to `experiences/index.json` and increment `total_count`.
|
|
144
|
+
|
|
145
|
+
---
|
|
146
|
+
|
|
147
|
+
## Pattern Promotion Thresholds
|
|
148
|
+
|
|
149
|
+
Patterns are promoted from individual experience files into `patterns.json` when the same lesson has been independently observed enough times to be considered reliable.
|
|
150
|
+
|
|
151
|
+
| Occurrences | Action | Confidence Level |
|
|
152
|
+
|---|---|---|
|
|
153
|
+
| 1–2 | Stay in experience files only | — |
|
|
154
|
+
| 3 | Promote to `patterns.json` | `low` |
|
|
155
|
+
| 5+ | Raise confidence | `medium` |
|
|
156
|
+
| 8+ | Raise confidence | `high` |
|
|
157
|
+
|
|
158
|
+
### How to Detect Promotion Candidates
|
|
159
|
+
|
|
160
|
+
After writing an experience entry:
|
|
161
|
+
|
|
162
|
+
1. Read `experiences/index.json`
|
|
163
|
+
2. Find all entries where `task_type` matches AND at least one `tag` overlaps with the new entry
|
|
164
|
+
3. Load those experience files
|
|
165
|
+
4. Compare `lessons` arrays across all loaded files — look for thematic overlap (same root cause, same fix pattern, same constraint)
|
|
166
|
+
5. If 3+ entries share a lesson theme, the theme is ready to be promoted
|
|
167
|
+
|
|
168
|
+
Promotion writes to the appropriate category in `patterns.json`:
|
|
169
|
+
- `codebase_insights` — observations about the codebase structure, conventions, or tech choices
|
|
170
|
+
- `execution_patterns` — what approaches work or fail for specific task types
|
|
171
|
+
- `user_behavior` — observed user preferences, correction patterns, approval expectations
|
|
172
|
+
- `recurring_issues` — problems that keep appearing, with their symptoms and known resolutions
|
|
173
|
+
|
|
174
|
+
---
|
|
175
|
+
|
|
176
|
+
## Pattern Decay Rules
|
|
177
|
+
|
|
178
|
+
Patterns that are not reinforced within 30 days become less reliable. Apply decay when reading `patterns.json` during any blackboard operation:
|
|
179
|
+
|
|
180
|
+
| Current Confidence | Days Since `last_reinforced` | Action |
|
|
181
|
+
|---|---|---|
|
|
182
|
+
| `high` | > 30 days | Reduce to `medium` |
|
|
183
|
+
| `medium` | > 30 days | Reduce to `low` |
|
|
184
|
+
| `low` | > 30 days | Remove from `patterns.json` |
|
|
185
|
+
|
|
186
|
+
Decay is applied in-place: read `patterns.json`, compute which entries have expired, reduce or remove them, write the file back.
|
|
187
|
+
|
|
188
|
+
Do not decay entries that have been reinforced recently — `last_reinforced` is updated each time a new experience confirms the same pattern.
|
|
189
|
+
|
|
190
|
+
---
|
|
191
|
+
|
|
192
|
+
## How the Mind Uses Reflexion During Orient
|
|
193
|
+
|
|
194
|
+
Orient is the second phase of the OODA loop (Observe → Orient → Decide → Act). It is where the mind interprets current context and forms a plan. Reflexion inserts prior experience directly into Orient:
|
|
195
|
+
|
|
196
|
+
```
|
|
197
|
+
Orient Phase Protocol:
|
|
198
|
+
|
|
199
|
+
1. Read experiences/index.json
|
|
200
|
+
2. Filter by current task_type + tag overlap
|
|
201
|
+
3. Load top 3–5 experience files (most recent first; prefer confidence: high)
|
|
202
|
+
4. Read patterns.json → filter patterns relevant to the current task domain
|
|
203
|
+
5. Apply decay to any patterns with last_reinforced > 30 days
|
|
204
|
+
6. Synthesize a prior-experience summary:
|
|
205
|
+
- List the most relevant lessons from loaded experiences
|
|
206
|
+
- Note any patterns that apply (from patterns.json)
|
|
207
|
+
- Flag any recurring issues that match the current task's context
|
|
208
|
+
7. Use this summary as the first input when forming the execution plan
|
|
209
|
+
```
|
|
210
|
+
|
|
211
|
+
The synthesis does not need to be formal. A short bullet list of 3–5 observations from past experience is sufficient. The goal is to surface "things that have gone wrong before in situations like this" before committing to an approach.
|
|
212
|
+
|
|
213
|
+
### Retrieval Priority
|
|
214
|
+
|
|
215
|
+
When loading experience files, prioritize in this order:
|
|
216
|
+
1. `confidence: "high"` entries over `"medium"` over `"low"`
|
|
217
|
+
2. `outcome: "success"` for positive lessons (what to repeat)
|
|
218
|
+
3. `outcome: "failure"` for cautionary lessons (what to avoid)
|
|
219
|
+
4. Most recent `recorded_at` as tiebreaker
|
|
220
|
+
|
|
221
|
+
Load both success and failure experiences — learning what not to do is as valuable as learning what works.
|
|
222
|
+
|
|
223
|
+
---
|
|
224
|
+
|
|
225
|
+
## Cold-Start Behavior
|
|
226
|
+
|
|
227
|
+
The blackboard starts empty. During the first ~10 interactions (`total_count < 10` in `index.json`):
|
|
228
|
+
|
|
229
|
+
- Record EVERY completed task, even trivial ones
|
|
230
|
+
- Set `confidence: "low"` on all entries — they have not been cross-validated
|
|
231
|
+
- Prioritize breadth of recording over depth of analysis — getting entries into the index quickly is more valuable than perfect lesson articulation
|
|
232
|
+
- Do not skip recording because a task "was simple" — even trivial tasks reveal conventions and constraints that are useful context
|
|
233
|
+
|
|
234
|
+
The cold-start window is how the system bootstraps its memory. By the 10th interaction, retrieval should already be returning context that reduces repeated mistakes.
|
|
235
|
+
|
|
236
|
+
---
|
|
237
|
+
|
|
238
|
+
## Quick Reference
|
|
239
|
+
|
|
240
|
+
| Concept | Rule |
|
|
241
|
+
|---|---|
|
|
242
|
+
| When to reflect | After every trigger event — do not wait for retro |
|
|
243
|
+
| Reflection format | "I [outcome] at [task] because [reason]. Next time: [adjustment]. Confidence: [level]." |
|
|
244
|
+
| Experience file location | `~/.claude/ftm-state/blackboard/experiences/YYYY-MM-DD_task-slug.json` |
|
|
245
|
+
| Schema reference | `blackboard-schema.md` section 3 |
|
|
246
|
+
| Promotion threshold | 3+ occurrences → `low` confidence; 5+ → `medium`; 8+ → `high` |
|
|
247
|
+
| Decay window | 30 days without reinforcement → reduce confidence one level; at `low` → remove |
|
|
248
|
+
| Orient integration | Load 3–5 matching experiences + relevant patterns before forming any plan |
|
|
249
|
+
| Cold-start rule | Record everything until `total_count >= 10`, all at `confidence: "low"` |
|
|
@@ -1,22 +1,22 @@
|
|
|
1
|
-
# Routing Scenarios
|
|
2
|
-
|
|
3
|
-
Use these as behavioral tests for the Orient → Decide pipeline.
|
|
4
|
-
|
|
5
|
-
| Input | What Orient notices | Decision |
|
|
6
|
-
|---|---|---|
|
|
7
|
-
| `debug this flaky test` | bug, uncertainty, likely multiple hypotheses | route to `ftm-debug` |
|
|
8
|
-
| `help me think through auth design` | ideation, architecture, not implementation yet | route to `ftm-brainstorm` |
|
|
9
|
-
| `execute ~/.claude/plans/foo.md` | explicit plan path and execution ask | route to `ftm-executor` |
|
|
10
|
-
| `rename this variable` | one obvious local edit, tiny blast radius | handle directly as `micro` |
|
|
11
|
-
| `what would other AIs think about this approach` | explicit multi-model request | route to `ftm-council` |
|
|
12
|
-
| `audit the wiring` | structural verification request | route to `ftm-audit` |
|
|
13
|
-
| Jira ticket URL only | ticket-driven work, intent not yet clear | fetch via `mcp-atlassian-personal
|
|
14
|
-
| `check my calendar and draft a slack message` | mixed-domain workflow, read + external draft/send boundary | read calendar, draft Slack, ask before send |
|
|
15
|
-
| `make this better` | ambiguous, insufficient anchor | ask one focused clarifying question |
|
|
16
|
-
| `/ftm help` | explicit help/menu request | show help menu |
|
|
17
|
-
| `I just committed the fix, now check it` | continuation, recent commit validation | inspect diff, run tests or audit, then report |
|
|
18
|
-
| `/ftm-debug auth race condition` | explicit skill choice | respect explicit route to `ftm-debug` |
|
|
19
|
-
| `/ftm-brainstorm replacement for Okta hooks` | explicit design-phase route | respect explicit route to `ftm-brainstorm` |
|
|
20
|
-
| `open the page and tell me what looks broken` | visual/browser task | route to `ftm-browse` or use browser support if already in-flow |
|
|
21
|
-
| `add error handling to the API routes` | medium task, multi-file, `plan_first` mode | present numbered plan for approval, wait for user response, then execute approved steps |
|
|
22
|
-
| `refactor auth to support OAuth` (with `plan_first`) | medium-large, multi-file with dependencies | present plan with 5-7 steps, user says "skip 4, for step 3 use passport.js" → adjust and execute |
|
|
1
|
+
# Routing Scenarios
|
|
2
|
+
|
|
3
|
+
Use these as behavioral tests for the Orient → Decide pipeline.
|
|
4
|
+
|
|
5
|
+
| Input | What Orient notices | Decision |
|
|
6
|
+
|---|---|---|
|
|
7
|
+
| `debug this flaky test` | bug, uncertainty, likely multiple hypotheses | route to `ftm-debug` |
|
|
8
|
+
| `help me think through auth design` | ideation, architecture, not implementation yet | route to `ftm-brainstorm` |
|
|
9
|
+
| `execute ~/.claude/plans/foo.md` | explicit plan path and execution ask | route to `ftm-executor` |
|
|
10
|
+
| `rename this variable` | one obvious local edit, tiny blast radius | handle directly as `micro` |
|
|
11
|
+
| `what would other AIs think about this approach` | explicit multi-model request | route to `ftm-council` |
|
|
12
|
+
| `audit the wiring` | structural verification request | route to `ftm-audit` |
|
|
13
|
+
| Jira ticket URL only | ticket-driven work, intent not yet clear | fetch via `mcp-atlassian-personal` (configured name — see `ops.mcp_account_rules` in ftm-config.yml), then re-orient |
|
|
14
|
+
| `check my calendar and draft a slack message` | mixed-domain workflow, read + external draft/send boundary | read calendar, draft Slack, ask before send |
|
|
15
|
+
| `make this better` | ambiguous, insufficient anchor | ask one focused clarifying question |
|
|
16
|
+
| `/ftm help` | explicit help/menu request | show help menu |
|
|
17
|
+
| `I just committed the fix, now check it` | continuation, recent commit validation | inspect diff, run tests or audit, then report |
|
|
18
|
+
| `/ftm-debug auth race condition` | explicit skill choice | respect explicit route to `ftm-debug` |
|
|
19
|
+
| `/ftm-brainstorm replacement for Okta hooks` | explicit design-phase route | respect explicit route to `ftm-brainstorm` |
|
|
20
|
+
| `open the page and tell me what looks broken` | visual/browser task | route to `ftm-browse` or use browser support if already in-flow |
|
|
21
|
+
| `add error handling to the API routes` | medium task, multi-file, `plan_first` mode | present numbered plan for approval, wait for user response, then execute approved steps |
|
|
22
|
+
| `refactor auth to support OAuth` (with `plan_first`) | medium-large, multi-file with dependencies | present plan with 5-7 steps, user says "skip 4, for step 3 use passport.js" → adjust and execute |
|
|
@@ -1,35 +1,35 @@
|
|
|
1
|
-
# Routing Scenarios Reference
|
|
2
|
-
|
|
3
|
-
Use these as behavioral tests for the Decide phase.
|
|
4
|
-
|
|
5
|
-
| Input | What Orient notices | Decision |
|
|
6
|
-
|---|---|---|
|
|
7
|
-
| `debug this flaky test` | bug, uncertainty, likely multiple hypotheses | route to `ftm-debug` |
|
|
8
|
-
| `help me think through auth design` | ideation, architecture, not implementation yet | route to `ftm-brainstorm` |
|
|
9
|
-
| `execute ~/.claude/plans/foo.md` | explicit plan path and execution ask | route to `ftm-executor` |
|
|
10
|
-
| `rename this variable` | one obvious local edit, tiny blast radius | handle directly as `micro` |
|
|
11
|
-
| `what would other AIs think about this approach` | explicit multi-model request | route to `ftm-council` |
|
|
12
|
-
| `audit the wiring` | structural verification request | route to `ftm-audit` |
|
|
13
|
-
| Jira ticket URL only | ticket-driven work, intent not yet clear | fetch via `mcp-atlassian-personal
|
|
14
|
-
| `check my calendar and draft a slack message` | mixed-domain workflow, read + external draft/send boundary | read calendar, draft Slack, ask before send |
|
|
15
|
-
| `make this better` | ambiguous, insufficient anchor | ask one focused clarifying question |
|
|
16
|
-
| `/ftm help` | explicit help/menu request | show help menu |
|
|
17
|
-
| `I just committed the fix, now check it` | continuation, recent commit validation | inspect diff, run tests or audit, then report |
|
|
18
|
-
| `/ftm-debug auth race condition` | explicit skill choice | respect explicit route to `ftm-debug` |
|
|
19
|
-
| `/ftm-brainstorm replacement for Okta hooks` | explicit design-phase route | respect explicit route to `ftm-brainstorm` |
|
|
20
|
-
| `open the page and tell me what looks broken` | visual/browser task | route to `ftm-browse` or use browser support if already in-flow |
|
|
21
|
-
| `add error handling to the API routes` | medium task, multi-file, `plan_first` mode | present numbered plan for approval, wait for user response, then execute approved steps |
|
|
22
|
-
| `refactor auth to support OAuth` (with `plan_first`) | medium-large, multi-file with dependencies | present plan with 5-7 steps, user says "skip 4, for step 3 use passport.js" → adjust and execute |
|
|
23
|
-
| `research parallel agent architectures` | research task, factual inquiry, broad scope | route to `ftm-researcher` (deep) |
|
|
24
|
-
| `what's the best way to handle auth in Next.js` | research task, specific technical question | route to `ftm-researcher` (standard) |
|
|
25
|
-
| `quick look at how Stripe handles webhooks` | research task, explicit "quick" signal | route to `ftm-researcher` (quick) |
|
|
26
|
-
| `compare Redis vs Memcached for our session store` | research task, comparative, codebase-relevant | route to `ftm-researcher` (deep, codebase-aware) |
|
|
27
|
-
| `find me examples of rate limiting middleware` | research task, looking for implementations | route to `ftm-researcher` (standard) |
|
|
28
|
-
| `I want to build a dashboard` | ideation, not research | route to `ftm-brainstorm` (calls researcher internally) |
|
|
29
|
-
| `/ftm-researcher auth patterns in microservices` | explicit skill choice | respect explicit route to `ftm-researcher` |
|
|
30
|
-
| `what breaks if I change handleAuth` | structural query, blast radius, specific symbol | route to `ftm-map` (query: blast-radius) |
|
|
31
|
-
| `map this codebase` | indexing request, no map.db exists | route to `ftm-map` (bootstrap mode) |
|
|
32
|
-
| `where do we handle authentication` | code search, structural | route to `ftm-map` (query: search) |
|
|
33
|
-
| `what depends on the UserService class` | dependency chain, specific symbol | route to `ftm-map` (query: deps) |
|
|
34
|
-
| `show me everything about the parseConfig function` | symbol info request | route to `ftm-map` (query: info) |
|
|
35
|
-
| `/ftm-map blast-radius handlePayment` | explicit skill choice | respect explicit route to `ftm-map` |
|
|
1
|
+
# Routing Scenarios Reference
|
|
2
|
+
|
|
3
|
+
Use these as behavioral tests for the Decide phase.
|
|
4
|
+
|
|
5
|
+
| Input | What Orient notices | Decision |
|
|
6
|
+
|---|---|---|
|
|
7
|
+
| `debug this flaky test` | bug, uncertainty, likely multiple hypotheses | route to `ftm-debug` |
|
|
8
|
+
| `help me think through auth design` | ideation, architecture, not implementation yet | route to `ftm-brainstorm` |
|
|
9
|
+
| `execute ~/.claude/plans/foo.md` | explicit plan path and execution ask | route to `ftm-executor` |
|
|
10
|
+
| `rename this variable` | one obvious local edit, tiny blast radius | handle directly as `micro` |
|
|
11
|
+
| `what would other AIs think about this approach` | explicit multi-model request | route to `ftm-council` |
|
|
12
|
+
| `audit the wiring` | structural verification request | route to `ftm-audit` |
|
|
13
|
+
| Jira ticket URL only | ticket-driven work, intent not yet clear | fetch via `mcp-atlassian-personal` (configured name — see `ops.mcp_account_rules` in ftm-config.yml), then re-orient |
|
|
14
|
+
| `check my calendar and draft a slack message` | mixed-domain workflow, read + external draft/send boundary | read calendar, draft Slack, ask before send |
|
|
15
|
+
| `make this better` | ambiguous, insufficient anchor | ask one focused clarifying question |
|
|
16
|
+
| `/ftm help` | explicit help/menu request | show help menu |
|
|
17
|
+
| `I just committed the fix, now check it` | continuation, recent commit validation | inspect diff, run tests or audit, then report |
|
|
18
|
+
| `/ftm-debug auth race condition` | explicit skill choice | respect explicit route to `ftm-debug` |
|
|
19
|
+
| `/ftm-brainstorm replacement for Okta hooks` | explicit design-phase route | respect explicit route to `ftm-brainstorm` |
|
|
20
|
+
| `open the page and tell me what looks broken` | visual/browser task | route to `ftm-browse` or use browser support if already in-flow |
|
|
21
|
+
| `add error handling to the API routes` | medium task, multi-file, `plan_first` mode | present numbered plan for approval, wait for user response, then execute approved steps |
|
|
22
|
+
| `refactor auth to support OAuth` (with `plan_first`) | medium-large, multi-file with dependencies | present plan with 5-7 steps, user says "skip 4, for step 3 use passport.js" → adjust and execute |
|
|
23
|
+
| `research parallel agent architectures` | research task, factual inquiry, broad scope | route to `ftm-researcher` (deep) |
|
|
24
|
+
| `what's the best way to handle auth in Next.js` | research task, specific technical question | route to `ftm-researcher` (standard) |
|
|
25
|
+
| `quick look at how Stripe handles webhooks` | research task, explicit "quick" signal | route to `ftm-researcher` (quick) |
|
|
26
|
+
| `compare Redis vs Memcached for our session store` | research task, comparative, codebase-relevant | route to `ftm-researcher` (deep, codebase-aware) |
|
|
27
|
+
| `find me examples of rate limiting middleware` | research task, looking for implementations | route to `ftm-researcher` (standard) |
|
|
28
|
+
| `I want to build a dashboard` | ideation, not research | route to `ftm-brainstorm` (calls researcher internally) |
|
|
29
|
+
| `/ftm-researcher auth patterns in microservices` | explicit skill choice | respect explicit route to `ftm-researcher` |
|
|
30
|
+
| `what breaks if I change handleAuth` | structural query, blast radius, specific symbol | route to `ftm-map` (query: blast-radius) |
|
|
31
|
+
| `map this codebase` | indexing request, no map.db exists | route to `ftm-map` (bootstrap mode) |
|
|
32
|
+
| `where do we handle authentication` | code search, structural | route to `ftm-map` (query: search) |
|
|
33
|
+
| `what depends on the UserService class` | dependency chain, specific symbol | route to `ftm-map` (query: deps) |
|
|
34
|
+
| `show me everything about the parseConfig function` | symbol info request | route to `ftm-map` (query: info) |
|
|
35
|
+
| `/ftm-map blast-radius handlePayment` | explicit skill choice | respect explicit route to `ftm-map` |
|
package/ftm-mind.yml
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
name: ftm-mind
|
|
2
|
-
description: Unified cognitive loop for the ftm skill system. Receives any input and contextualizes it against codebase state, accumulated experience, available capabilities, and task complexity before deciding how to act. Use when user says "/ftm-mind", "/ftm" followed by freeform text, or provides any input that needs intelligent routing, decomposition, or multi-step reasoning. Handles everything from micro tasks ("rename this variable") to large projects ("build this feature") by sizing complexity and selecting the right execution strategy. Replaces keyword-matching routing with OODA-based reasoning. Do NOT use when user explicitly invokes a specific ftm skill by name — those route directly.
|
|
1
|
+
name: ftm-mind
|
|
2
|
+
description: Unified cognitive loop for the ftm skill system. Receives any input and contextualizes it against codebase state, accumulated experience, available capabilities, and task complexity before deciding how to act. Use when user says "/ftm-mind", "/ftm" followed by freeform text, or provides any input that needs intelligent routing, decomposition, or multi-step reasoning. Handles everything from micro tasks ("rename this variable") to large projects ("build this feature") by sizing complexity and selecting the right execution strategy. Replaces keyword-matching routing with OODA-based reasoning. Do NOT use when user explicitly invokes a specific ftm skill by name — those route directly.
|
package/ftm-ops.yml
ADDED
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: ftm-ops
|
|
3
|
+
description: Personal operations intelligence — task management, capacity tracking, stakeholder comms, meeting intel, incident tracking, and pattern recognition. Use when user says "what's blocking me", "am I overcommitted", "wrap up", "what happened today", "what happened this week", task CRUD, capacity check, stakeholder update, meeting notes, incident report, pattern analysis, "add a task", "close task", "mark done", "daily summary", "weekly rollup", "follow up with", "draft message to", "how busy am I", "burnout check", "context switches", "recurring issue", "doc gap", "ftm-ops".
|
|
4
|
+
---
|