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,73 +1,73 @@
|
|
|
1
|
-
# Code Style — Optimized for AI Agents
|
|
2
|
-
|
|
3
|
-
> This file defines the code standards for this project. It is read by Codex during adversarial review
|
|
4
|
-
> and enforced automatically. Humans set it once; AI agents follow it on every commit.
|
|
5
|
-
|
|
6
|
-
## Hard Limits
|
|
7
|
-
|
|
8
|
-
| Rule | Limit | Rationale |
|
|
9
|
-
|---|---|---|
|
|
10
|
-
| Max lines per file | 1000 | Any AI agent can read one file and understand it without needing 10 others as context |
|
|
11
|
-
| Max lines per function | 50 | Trace a bug by following imports without blowing context window |
|
|
12
|
-
| Exports per component file | 1 (co-located helpers OK) | One responsibility per file, clear import targets |
|
|
13
|
-
| Barrel files (index.ts re-exports) | Forbidden | Direct imports only — barrel files obscure dependency graphs |
|
|
14
|
-
|
|
15
|
-
## Structure Rules
|
|
16
|
-
|
|
17
|
-
- **Naming over comments**: If a function needs a comment to explain what it does, it's named wrong
|
|
18
|
-
- **Max 3 nesting levels**: If a file has more than 3 levels of nesting, split it
|
|
19
|
-
- **Co-locate related functions**: If two functions always get called together, they should be in the same module
|
|
20
|
-
- **Max 5 dependencies per module**: If a module has 5+ imports from different modules, it's doing too much — split it
|
|
21
|
-
|
|
22
|
-
## Why These Rules
|
|
23
|
-
|
|
24
|
-
These aren't aesthetic preferences. They exist so any AI agent can:
|
|
25
|
-
- **Read one file** and understand it without needing 10 others as context
|
|
26
|
-
- **Trace a bug** by following imports without blowing context window
|
|
27
|
-
- **Modify one function** without risking side effects in a 5000-line file
|
|
28
|
-
- **Review changes** against INTENT.md without getting lost in complexity
|
|
29
|
-
|
|
30
|
-
## Naming Conventions
|
|
31
|
-
|
|
32
|
-
| Element | Convention | Example |
|
|
33
|
-
|---|---|---|
|
|
34
|
-
| Files (components) | PascalCase | `UserProfile.tsx` |
|
|
35
|
-
| Files (utilities) | camelCase | `formatDate.ts` |
|
|
36
|
-
| Files (hooks) | camelCase with `use` prefix | `useAuth.ts` |
|
|
37
|
-
| Functions | camelCase | `validateInput()` |
|
|
38
|
-
| Constants | UPPER_SNAKE_CASE | `MAX_RETRIES` |
|
|
39
|
-
| Types/Interfaces | PascalCase | `UserSession` |
|
|
40
|
-
| CSS classes | kebab-case | `.nav-container` |
|
|
41
|
-
|
|
42
|
-
## Error Handling
|
|
43
|
-
|
|
44
|
-
- **Fail fast, fail explicitly**: Detect and report errors immediately with meaningful context
|
|
45
|
-
- **Never suppress silently**: All errors must be logged, handled, or escalated
|
|
46
|
-
- **Context preservation**: Error messages include what was attempted, what failed, and where
|
|
47
|
-
|
|
48
|
-
## Testing Standards
|
|
49
|
-
|
|
50
|
-
- Tests live next to the code they test: `Component.test.tsx` alongside `Component.tsx`
|
|
51
|
-
- Test file names mirror source file names with `.test.` or `.spec.` suffix
|
|
52
|
-
- Each test file focuses on one module — no cross-module test files
|
|
53
|
-
- Mock data must match real API contracts (see project CLAUDE.md)
|
|
54
|
-
|
|
55
|
-
## Import Order
|
|
56
|
-
|
|
57
|
-
1. External packages (react, next, etc.)
|
|
58
|
-
2. Internal absolute imports (@/components, @/utils)
|
|
59
|
-
3. Relative imports (./Component, ../utils)
|
|
60
|
-
4. Type imports (import type { ... })
|
|
61
|
-
5. Style imports (import './styles.css')
|
|
62
|
-
|
|
63
|
-
Blank line between each group.
|
|
64
|
-
|
|
65
|
-
## Customization
|
|
66
|
-
|
|
67
|
-
This is a starting template. Projects should customize:
|
|
68
|
-
- **Naming conventions**: Adapt to your language/framework conventions
|
|
69
|
-
- **Hard limits**: Adjust thresholds if your domain requires longer functions (e.g., complex algorithms)
|
|
70
|
-
- **Testing standards**: Add framework-specific patterns (Jest, Vitest, pytest, etc.)
|
|
71
|
-
- **Import order**: Adapt to your project's module resolution strategy
|
|
72
|
-
|
|
73
|
-
When customizing, keep the "Why These Rules" section — it reminds both humans and AI agents why the constraints exist.
|
|
1
|
+
# Code Style — Optimized for AI Agents
|
|
2
|
+
|
|
3
|
+
> This file defines the code standards for this project. It is read by Codex during adversarial review
|
|
4
|
+
> and enforced automatically. Humans set it once; AI agents follow it on every commit.
|
|
5
|
+
|
|
6
|
+
## Hard Limits
|
|
7
|
+
|
|
8
|
+
| Rule | Limit | Rationale |
|
|
9
|
+
|---|---|---|
|
|
10
|
+
| Max lines per file | 1000 | Any AI agent can read one file and understand it without needing 10 others as context |
|
|
11
|
+
| Max lines per function | 50 | Trace a bug by following imports without blowing context window |
|
|
12
|
+
| Exports per component file | 1 (co-located helpers OK) | One responsibility per file, clear import targets |
|
|
13
|
+
| Barrel files (index.ts re-exports) | Forbidden | Direct imports only — barrel files obscure dependency graphs |
|
|
14
|
+
|
|
15
|
+
## Structure Rules
|
|
16
|
+
|
|
17
|
+
- **Naming over comments**: If a function needs a comment to explain what it does, it's named wrong
|
|
18
|
+
- **Max 3 nesting levels**: If a file has more than 3 levels of nesting, split it
|
|
19
|
+
- **Co-locate related functions**: If two functions always get called together, they should be in the same module
|
|
20
|
+
- **Max 5 dependencies per module**: If a module has 5+ imports from different modules, it's doing too much — split it
|
|
21
|
+
|
|
22
|
+
## Why These Rules
|
|
23
|
+
|
|
24
|
+
These aren't aesthetic preferences. They exist so any AI agent can:
|
|
25
|
+
- **Read one file** and understand it without needing 10 others as context
|
|
26
|
+
- **Trace a bug** by following imports without blowing context window
|
|
27
|
+
- **Modify one function** without risking side effects in a 5000-line file
|
|
28
|
+
- **Review changes** against INTENT.md without getting lost in complexity
|
|
29
|
+
|
|
30
|
+
## Naming Conventions
|
|
31
|
+
|
|
32
|
+
| Element | Convention | Example |
|
|
33
|
+
|---|---|---|
|
|
34
|
+
| Files (components) | PascalCase | `UserProfile.tsx` |
|
|
35
|
+
| Files (utilities) | camelCase | `formatDate.ts` |
|
|
36
|
+
| Files (hooks) | camelCase with `use` prefix | `useAuth.ts` |
|
|
37
|
+
| Functions | camelCase | `validateInput()` |
|
|
38
|
+
| Constants | UPPER_SNAKE_CASE | `MAX_RETRIES` |
|
|
39
|
+
| Types/Interfaces | PascalCase | `UserSession` |
|
|
40
|
+
| CSS classes | kebab-case | `.nav-container` |
|
|
41
|
+
|
|
42
|
+
## Error Handling
|
|
43
|
+
|
|
44
|
+
- **Fail fast, fail explicitly**: Detect and report errors immediately with meaningful context
|
|
45
|
+
- **Never suppress silently**: All errors must be logged, handled, or escalated
|
|
46
|
+
- **Context preservation**: Error messages include what was attempted, what failed, and where
|
|
47
|
+
|
|
48
|
+
## Testing Standards
|
|
49
|
+
|
|
50
|
+
- Tests live next to the code they test: `Component.test.tsx` alongside `Component.tsx`
|
|
51
|
+
- Test file names mirror source file names with `.test.` or `.spec.` suffix
|
|
52
|
+
- Each test file focuses on one module — no cross-module test files
|
|
53
|
+
- Mock data must match real API contracts (see project CLAUDE.md)
|
|
54
|
+
|
|
55
|
+
## Import Order
|
|
56
|
+
|
|
57
|
+
1. External packages (react, next, etc.)
|
|
58
|
+
2. Internal absolute imports (@/components, @/utils)
|
|
59
|
+
3. Relative imports (./Component, ../utils)
|
|
60
|
+
4. Type imports (import type { ... })
|
|
61
|
+
5. Style imports (import './styles.css')
|
|
62
|
+
|
|
63
|
+
Blank line between each group.
|
|
64
|
+
|
|
65
|
+
## Customization
|
|
66
|
+
|
|
67
|
+
This is a starting template. Projects should customize:
|
|
68
|
+
- **Naming conventions**: Adapt to your language/framework conventions
|
|
69
|
+
- **Hard limits**: Adjust thresholds if your domain requires longer functions (e.g., complex algorithms)
|
|
70
|
+
- **Testing standards**: Add framework-specific patterns (Jest, Vitest, pytest, etc.)
|
|
71
|
+
- **Import order**: Adapt to your project's module resolution strategy
|
|
72
|
+
|
|
73
|
+
When customizing, keep the "Why These Rules" section — it reminds both humans and AI agents why the constraints exist.
|
|
@@ -1,62 +1,62 @@
|
|
|
1
|
-
# Phase 0.5 — Plan Verification
|
|
2
|
-
|
|
3
|
-
## Plan Checker Agent Prompt
|
|
4
|
-
|
|
5
|
-
Spawn a **Plan Checker** agent with this prompt (use `planning` model from ftm-config):
|
|
6
|
-
|
|
7
|
-
```
|
|
8
|
-
You are a plan quality checker. Analyze this implementation plan and report issues.
|
|
9
|
-
Do NOT implement anything — just verify the plan is sound.
|
|
10
|
-
|
|
11
|
-
Plan path: [path]
|
|
12
|
-
|
|
13
|
-
Check these dimensions:
|
|
14
|
-
|
|
15
|
-
1. STRUCTURAL INTEGRITY
|
|
16
|
-
- Every task has: description, files list, dependencies, acceptance criteria
|
|
17
|
-
- Task numbering is consistent (no gaps, no duplicates)
|
|
18
|
-
- Dependencies reference valid task numbers
|
|
19
|
-
- No circular dependencies (Task A depends on B, B depends on A)
|
|
20
|
-
|
|
21
|
-
2. DEPENDENCY GRAPH VALIDITY
|
|
22
|
-
- Build the full dependency graph
|
|
23
|
-
- Verify all referenced tasks exist
|
|
24
|
-
- Check for implicit dependencies (two tasks modifying the same file
|
|
25
|
-
but not declared as dependent)
|
|
26
|
-
- Flag tasks with too many dependencies (>3 usually means bad decomposition)
|
|
27
|
-
|
|
28
|
-
3. FILE CONFLICT DETECTION
|
|
29
|
-
- Map every task to its file list
|
|
30
|
-
- Flag any files touched by multiple tasks in the same wave
|
|
31
|
-
- These MUST be sequential, not parallel — if the plan puts them
|
|
32
|
-
in the same wave, that's a bug
|
|
33
|
-
|
|
34
|
-
4. SCOPE REASONABLENESS
|
|
35
|
-
- Flag tasks that touch >10 files (probably too big for one agent)
|
|
36
|
-
- Flag tasks with vague acceptance criteria ("make it work", "looks good")
|
|
37
|
-
- Flag tasks with no verification steps
|
|
38
|
-
|
|
39
|
-
5. PROJECT COMPATIBILITY
|
|
40
|
-
- Check that file paths reference real directories in the project
|
|
41
|
-
- Verify the tech stack matches what the plan assumes
|
|
42
|
-
- Check that dependencies/libraries the plan references are installed
|
|
43
|
-
or listed in package.json/requirements.txt
|
|
44
|
-
|
|
45
|
-
Return a structured report:
|
|
46
|
-
|
|
47
|
-
PASS — plan is sound, proceed to execution
|
|
48
|
-
WARN — issues found but execution can proceed (list warnings)
|
|
49
|
-
FAIL — critical issues that must be fixed before execution (list blockers)
|
|
50
|
-
|
|
51
|
-
For FAIL findings, suggest specific fixes.
|
|
52
|
-
```
|
|
53
|
-
|
|
54
|
-
## Interpreting Results
|
|
55
|
-
|
|
56
|
-
- **PASS**: Proceed to Phase 1
|
|
57
|
-
- **WARN**: Show warnings to user, proceed unless they object
|
|
58
|
-
- **FAIL**: Present blockers and suggested fixes. Ask user: fix the plan and re-run, or override and execute anyway?
|
|
59
|
-
|
|
60
|
-
## File Conflict Auto-Resolution
|
|
61
|
-
|
|
62
|
-
If the plan checker finds file conflicts between tasks in the same wave, automatically restructure the wave ordering to make conflicting tasks sequential. Report the change to the user before proceeding.
|
|
1
|
+
# Phase 0.5 — Plan Verification
|
|
2
|
+
|
|
3
|
+
## Plan Checker Agent Prompt
|
|
4
|
+
|
|
5
|
+
Spawn a **Plan Checker** agent with this prompt (use `planning` model from ftm-config):
|
|
6
|
+
|
|
7
|
+
```
|
|
8
|
+
You are a plan quality checker. Analyze this implementation plan and report issues.
|
|
9
|
+
Do NOT implement anything — just verify the plan is sound.
|
|
10
|
+
|
|
11
|
+
Plan path: [path]
|
|
12
|
+
|
|
13
|
+
Check these dimensions:
|
|
14
|
+
|
|
15
|
+
1. STRUCTURAL INTEGRITY
|
|
16
|
+
- Every task has: description, files list, dependencies, acceptance criteria
|
|
17
|
+
- Task numbering is consistent (no gaps, no duplicates)
|
|
18
|
+
- Dependencies reference valid task numbers
|
|
19
|
+
- No circular dependencies (Task A depends on B, B depends on A)
|
|
20
|
+
|
|
21
|
+
2. DEPENDENCY GRAPH VALIDITY
|
|
22
|
+
- Build the full dependency graph
|
|
23
|
+
- Verify all referenced tasks exist
|
|
24
|
+
- Check for implicit dependencies (two tasks modifying the same file
|
|
25
|
+
but not declared as dependent)
|
|
26
|
+
- Flag tasks with too many dependencies (>3 usually means bad decomposition)
|
|
27
|
+
|
|
28
|
+
3. FILE CONFLICT DETECTION
|
|
29
|
+
- Map every task to its file list
|
|
30
|
+
- Flag any files touched by multiple tasks in the same wave
|
|
31
|
+
- These MUST be sequential, not parallel — if the plan puts them
|
|
32
|
+
in the same wave, that's a bug
|
|
33
|
+
|
|
34
|
+
4. SCOPE REASONABLENESS
|
|
35
|
+
- Flag tasks that touch >10 files (probably too big for one agent)
|
|
36
|
+
- Flag tasks with vague acceptance criteria ("make it work", "looks good")
|
|
37
|
+
- Flag tasks with no verification steps
|
|
38
|
+
|
|
39
|
+
5. PROJECT COMPATIBILITY
|
|
40
|
+
- Check that file paths reference real directories in the project
|
|
41
|
+
- Verify the tech stack matches what the plan assumes
|
|
42
|
+
- Check that dependencies/libraries the plan references are installed
|
|
43
|
+
or listed in package.json/requirements.txt
|
|
44
|
+
|
|
45
|
+
Return a structured report:
|
|
46
|
+
|
|
47
|
+
PASS — plan is sound, proceed to execution
|
|
48
|
+
WARN — issues found but execution can proceed (list warnings)
|
|
49
|
+
FAIL — critical issues that must be fixed before execution (list blockers)
|
|
50
|
+
|
|
51
|
+
For FAIL findings, suggest specific fixes.
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
## Interpreting Results
|
|
55
|
+
|
|
56
|
+
- **PASS**: Proceed to Phase 1
|
|
57
|
+
- **WARN**: Show warnings to user, proceed unless they object
|
|
58
|
+
- **FAIL**: Present blockers and suggested fixes. Ask user: fix the plan and re-run, or override and execute anyway?
|
|
59
|
+
|
|
60
|
+
## File Conflict Auto-Resolution
|
|
61
|
+
|
|
62
|
+
If the plan checker finds file conflicts between tasks in the same wave, automatically restructure the wave ordering to make conflicting tasks sequential. Report the change to the user before proceeding.
|
|
@@ -1,34 +1,34 @@
|
|
|
1
|
-
# Phase 2 — Agent Assembly
|
|
2
|
-
|
|
3
|
-
## Matching Domain Clusters to Agents
|
|
4
|
-
|
|
5
|
-
For each domain cluster identified in Phase 1, select the best-fit agent from the table below:
|
|
6
|
-
|
|
7
|
-
| Domain | Likely Agent |
|
|
8
|
-
|--------|-------------|
|
|
9
|
-
| React/UI/CSS/components | frontend-developer |
|
|
10
|
-
| API/server/database | backend-architect |
|
|
11
|
-
| CI/CD/deploy/infra | devops-automator |
|
|
12
|
-
| Tests/coverage | test-writer-fixer |
|
|
13
|
-
| Mobile/native | mobile-app-builder |
|
|
14
|
-
| AI/ML features | ai-engineer |
|
|
15
|
-
| General coding | general-purpose |
|
|
16
|
-
|
|
17
|
-
Check available agent types in the Agent tool. Map each cluster to the closest fit before considering custom creation.
|
|
18
|
-
|
|
19
|
-
## Creating Custom Agents
|
|
20
|
-
|
|
21
|
-
When no existing agent covers a task cluster adequately — for example, "theme system with CSS custom properties and dark mode" or "WebSocket terminal integration" — create a purpose-built agent prompt.
|
|
22
|
-
|
|
23
|
-
Write a focused agent definition with these sections:
|
|
24
|
-
|
|
25
|
-
- **Domain expertise**: What this agent knows deeply
|
|
26
|
-
- **Task context**: The specific tasks from the plan it will handle
|
|
27
|
-
- **Standards**: Coding conventions from the project (infer from existing code)
|
|
28
|
-
- **Constraints**: Don't touch files outside your scope
|
|
29
|
-
|
|
30
|
-
The prompt text becomes the `prompt` parameter when spawning the agent in Phase 4.
|
|
31
|
-
|
|
32
|
-
## Building the Agent Library
|
|
33
|
-
|
|
34
|
-
Store custom agent prompts in the skill workspace as reference prompts so they can be reused across projects. A "theme-engineer" agent created for one project's CSS system can be reused next time themes come up. Over time, the agent library grows with battle-tested specialists.
|
|
1
|
+
# Phase 2 — Agent Assembly
|
|
2
|
+
|
|
3
|
+
## Matching Domain Clusters to Agents
|
|
4
|
+
|
|
5
|
+
For each domain cluster identified in Phase 1, select the best-fit agent from the table below:
|
|
6
|
+
|
|
7
|
+
| Domain | Likely Agent |
|
|
8
|
+
|--------|-------------|
|
|
9
|
+
| React/UI/CSS/components | frontend-developer |
|
|
10
|
+
| API/server/database | backend-architect |
|
|
11
|
+
| CI/CD/deploy/infra | devops-automator |
|
|
12
|
+
| Tests/coverage | test-writer-fixer |
|
|
13
|
+
| Mobile/native | mobile-app-builder |
|
|
14
|
+
| AI/ML features | ai-engineer |
|
|
15
|
+
| General coding | general-purpose |
|
|
16
|
+
|
|
17
|
+
Check available agent types in the Agent tool. Map each cluster to the closest fit before considering custom creation.
|
|
18
|
+
|
|
19
|
+
## Creating Custom Agents
|
|
20
|
+
|
|
21
|
+
When no existing agent covers a task cluster adequately — for example, "theme system with CSS custom properties and dark mode" or "WebSocket terminal integration" — create a purpose-built agent prompt.
|
|
22
|
+
|
|
23
|
+
Write a focused agent definition with these sections:
|
|
24
|
+
|
|
25
|
+
- **Domain expertise**: What this agent knows deeply
|
|
26
|
+
- **Task context**: The specific tasks from the plan it will handle
|
|
27
|
+
- **Standards**: Coding conventions from the project (infer from existing code)
|
|
28
|
+
- **Constraints**: Don't touch files outside your scope
|
|
29
|
+
|
|
30
|
+
The prompt text becomes the `prompt` parameter when spawning the agent in Phase 4.
|
|
31
|
+
|
|
32
|
+
## Building the Agent Library
|
|
33
|
+
|
|
34
|
+
Store custom agent prompts in the skill workspace as reference prompts so they can be reused across projects. A "theme-engineer" agent created for one project's CSS system can be reused next time themes come up. Over time, the agent library grows with battle-tested specialists.
|
|
@@ -1,38 +1,38 @@
|
|
|
1
|
-
# Phase 3 — Worktree Setup
|
|
2
|
-
|
|
3
|
-
## Per-Agent Worktree Creation
|
|
4
|
-
|
|
5
|
-
Each agent in the current wave gets its own isolated worktree. Run these steps for every agent before dispatch:
|
|
6
|
-
|
|
7
|
-
**1. Ensure `.worktrees/` is in `.gitignore`**
|
|
8
|
-
|
|
9
|
-
Check the project's `.gitignore`. If `.worktrees/` is missing, add it before creating any worktrees.
|
|
10
|
-
|
|
11
|
-
**2. Create the worktree branch and directory**
|
|
12
|
-
|
|
13
|
-
```bash
|
|
14
|
-
git worktree add .worktrees/plan-exec-<agent-name> -b plan-exec/<agent-name>
|
|
15
|
-
```
|
|
16
|
-
|
|
17
|
-
Example for frontend agent handling tasks 1–4:
|
|
18
|
-
```bash
|
|
19
|
-
git worktree add .worktrees/plan-exec-frontend-tasks-1-4 -b plan-exec/frontend-tasks-1-4
|
|
20
|
-
```
|
|
21
|
-
|
|
22
|
-
**3. Run project setup in the worktree**
|
|
23
|
-
|
|
24
|
-
```bash
|
|
25
|
-
cd .worktrees/plan-exec-<agent-name>
|
|
26
|
-
npm install # or yarn install / pip install / etc.
|
|
27
|
-
```
|
|
28
|
-
|
|
29
|
-
**4. Verify the worktree starts clean**
|
|
30
|
-
|
|
31
|
-
Run the test suite or at minimum the build. If the baseline is already failing, note it before dispatch so the agent doesn't get blamed for pre-existing failures.
|
|
32
|
-
|
|
33
|
-
## Naming Convention
|
|
34
|
-
|
|
35
|
-
Branch names: `plan-exec/<agent-name>`
|
|
36
|
-
Worktree paths: `.worktrees/plan-exec-<agent-name>`
|
|
37
|
-
|
|
38
|
-
Use the agent's role as the name component — e.g., `frontend`, `backend`, `testing`, `devops`. For waves with multiple agents of the same type, append a task range: `frontend-tasks-1-4`.
|
|
1
|
+
# Phase 3 — Worktree Setup
|
|
2
|
+
|
|
3
|
+
## Per-Agent Worktree Creation
|
|
4
|
+
|
|
5
|
+
Each agent in the current wave gets its own isolated worktree. Run these steps for every agent before dispatch:
|
|
6
|
+
|
|
7
|
+
**1. Ensure `.worktrees/` is in `.gitignore`**
|
|
8
|
+
|
|
9
|
+
Check the project's `.gitignore`. If `.worktrees/` is missing, add it before creating any worktrees.
|
|
10
|
+
|
|
11
|
+
**2. Create the worktree branch and directory**
|
|
12
|
+
|
|
13
|
+
```bash
|
|
14
|
+
git worktree add .worktrees/plan-exec-<agent-name> -b plan-exec/<agent-name>
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
Example for frontend agent handling tasks 1–4:
|
|
18
|
+
```bash
|
|
19
|
+
git worktree add .worktrees/plan-exec-frontend-tasks-1-4 -b plan-exec/frontend-tasks-1-4
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
**3. Run project setup in the worktree**
|
|
23
|
+
|
|
24
|
+
```bash
|
|
25
|
+
cd .worktrees/plan-exec-<agent-name>
|
|
26
|
+
npm install # or yarn install / pip install / etc.
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
**4. Verify the worktree starts clean**
|
|
30
|
+
|
|
31
|
+
Run the test suite or at minimum the build. If the baseline is already failing, note it before dispatch so the agent doesn't get blamed for pre-existing failures.
|
|
32
|
+
|
|
33
|
+
## Naming Convention
|
|
34
|
+
|
|
35
|
+
Branch names: `plan-exec/<agent-name>`
|
|
36
|
+
Worktree paths: `.worktrees/plan-exec-<agent-name>`
|
|
37
|
+
|
|
38
|
+
Use the agent's role as the name component — e.g., `frontend`, `backend`, `testing`, `devops`. For waves with multiple agents of the same type, append a task range: `frontend-tasks-1-4`.
|
|
@@ -1,72 +1,72 @@
|
|
|
1
|
-
# Phase 4.5 — Post-Task Audit Gate
|
|
2
|
-
|
|
3
|
-
## Per-Task Verification Gate
|
|
4
|
-
|
|
5
|
-
Before running ftm-audit, verify these four checks for every task:
|
|
6
|
-
|
|
7
|
-
1. **Tests pass** — any tests written or affected by the task must be green
|
|
8
|
-
2. **INTENT.md updated** — check that new/changed functions have entries in their module's INTENT.md
|
|
9
|
-
3. **Diagram updated** — check that new/changed functions have nodes in their module's DIAGRAM.mmd
|
|
10
|
-
4. **Full suite still green** — run the project's test suite (if one exists) and verify no regressions
|
|
11
|
-
|
|
12
|
-
5. **Visual smoke test (optional)** — If the project has a running dev server (detected via `lsof -i :3000` or `lsof -i :5173` or configured in plan metadata as `dev_server_url`), run:
|
|
13
|
-
- `$PB goto <dev_server_url>`
|
|
14
|
-
- `$PB screenshot`
|
|
15
|
-
- Verify the screenshot shows a rendered page (not a blank screen or error page)
|
|
16
|
-
- If the task modified UI components, `$PB snapshot -i` to verify new elements appear in the ARIA tree
|
|
17
|
-
|
|
18
|
-
Where `$PB` is `$HOME/.claude/skills/ftm-browse/bin/ftm-browse`.
|
|
19
|
-
|
|
20
|
-
**Graceful degradation**: If ftm-browse binary is not installed, skip visual checks with a note: "Visual smoke test skipped — ftm-browse not installed." Do not fail the task.
|
|
21
|
-
|
|
22
|
-
A task is NOT marked complete until checks 1–4 pass (check 5 is optional).
|
|
23
|
-
|
|
24
|
-
**Failure handling:**
|
|
25
|
-
- Test failures → agent must fix before task completes
|
|
26
|
-
- Missing INTENT.md entries → add them (use ftm-intent format)
|
|
27
|
-
- Missing diagram nodes → add them (use ftm-diagram format)
|
|
28
|
-
- Regression failures → investigate and fix before continuing
|
|
29
|
-
|
|
30
|
-
## Running ftm-audit
|
|
31
|
-
|
|
32
|
-
Use `review` model from ftm-config when spawning audit agents.
|
|
33
|
-
|
|
34
|
-
**Invoke ftm-audit** scoped to the files the task modified (check the agent's commits). If the task has a `Wiring:` contract in the plan, pass it to ftm-audit for contract checking. Run all three layers: knip static analysis → adversarial audit → auto-fix.
|
|
35
|
-
|
|
36
|
-
## Interpreting Audit Results
|
|
37
|
-
|
|
38
|
-
**PASS (no findings):** Mark task complete, proceed to next task.
|
|
39
|
-
|
|
40
|
-
**PASS after auto-fix:** FTM-audit found issues and fixed them automatically. Commit the fixes in the agent's worktree with message "Auto-fix: wire [description]". Mark task complete.
|
|
41
|
-
|
|
42
|
-
**FAIL (manual intervention needed):** Task stays in-progress. Report to the user:
|
|
43
|
-
```
|
|
44
|
-
Task [N] audit failed — manual intervention needed:
|
|
45
|
-
- [finding 1 with file:line]
|
|
46
|
-
- [finding 2 with file:line]
|
|
47
|
-
Suggested fixes: [ftm-audit's suggestions]
|
|
48
|
-
```
|
|
49
|
-
Wait for user input before continuing to next task.
|
|
50
|
-
|
|
51
|
-
## Task Completion Report Format
|
|
52
|
-
|
|
53
|
-
```
|
|
54
|
-
Task [N]: [title] — COMPLETE
|
|
55
|
-
Audit: PASS (0 findings) | PASS after auto-fix (2 fixed) | FAIL (1 manual)
|
|
56
|
-
[if auto-fixed: list what was fixed]
|
|
57
|
-
[if failed: list outstanding issues]
|
|
58
|
-
```
|
|
59
|
-
|
|
60
|
-
## When to Skip the Audit
|
|
61
|
-
|
|
62
|
-
**Skip when:**
|
|
63
|
-
- The task only modified `.md`, `.txt`, `.json` (config), or `.yml` files
|
|
64
|
-
- The task is explicitly marked as a "setup" or "scaffold" task
|
|
65
|
-
- The project has no `package.json` AND no identifiable entry point
|
|
66
|
-
- The plan marks the task with `audit: skip`
|
|
67
|
-
|
|
68
|
-
The plan syntax for explicit skipping:
|
|
69
|
-
```yaml
|
|
70
|
-
audit: skip
|
|
71
|
-
reason: "Documentation-only task" | "Config change" | "Test-only change"
|
|
72
|
-
```
|
|
1
|
+
# Phase 4.5 — Post-Task Audit Gate
|
|
2
|
+
|
|
3
|
+
## Per-Task Verification Gate
|
|
4
|
+
|
|
5
|
+
Before running ftm-audit, verify these four checks for every task:
|
|
6
|
+
|
|
7
|
+
1. **Tests pass** — any tests written or affected by the task must be green
|
|
8
|
+
2. **INTENT.md updated** — check that new/changed functions have entries in their module's INTENT.md
|
|
9
|
+
3. **Diagram updated** — check that new/changed functions have nodes in their module's DIAGRAM.mmd
|
|
10
|
+
4. **Full suite still green** — run the project's test suite (if one exists) and verify no regressions
|
|
11
|
+
|
|
12
|
+
5. **Visual smoke test (optional)** — If the project has a running dev server (detected via `lsof -i :3000` or `lsof -i :5173` or configured in plan metadata as `dev_server_url`), run:
|
|
13
|
+
- `$PB goto <dev_server_url>`
|
|
14
|
+
- `$PB screenshot`
|
|
15
|
+
- Verify the screenshot shows a rendered page (not a blank screen or error page)
|
|
16
|
+
- If the task modified UI components, `$PB snapshot -i` to verify new elements appear in the ARIA tree
|
|
17
|
+
|
|
18
|
+
Where `$PB` is `$HOME/.claude/skills/ftm-browse/bin/ftm-browse`.
|
|
19
|
+
|
|
20
|
+
**Graceful degradation**: If ftm-browse binary is not installed, skip visual checks with a note: "Visual smoke test skipped — ftm-browse not installed." Do not fail the task.
|
|
21
|
+
|
|
22
|
+
A task is NOT marked complete until checks 1–4 pass (check 5 is optional).
|
|
23
|
+
|
|
24
|
+
**Failure handling:**
|
|
25
|
+
- Test failures → agent must fix before task completes
|
|
26
|
+
- Missing INTENT.md entries → add them (use ftm-intent format)
|
|
27
|
+
- Missing diagram nodes → add them (use ftm-diagram format)
|
|
28
|
+
- Regression failures → investigate and fix before continuing
|
|
29
|
+
|
|
30
|
+
## Running ftm-audit
|
|
31
|
+
|
|
32
|
+
Use `review` model from ftm-config when spawning audit agents.
|
|
33
|
+
|
|
34
|
+
**Invoke ftm-audit** scoped to the files the task modified (check the agent's commits). If the task has a `Wiring:` contract in the plan, pass it to ftm-audit for contract checking. Run all three layers: knip static analysis → adversarial audit → auto-fix.
|
|
35
|
+
|
|
36
|
+
## Interpreting Audit Results
|
|
37
|
+
|
|
38
|
+
**PASS (no findings):** Mark task complete, proceed to next task.
|
|
39
|
+
|
|
40
|
+
**PASS after auto-fix:** FTM-audit found issues and fixed them automatically. Commit the fixes in the agent's worktree with message "Auto-fix: wire [description]". Mark task complete.
|
|
41
|
+
|
|
42
|
+
**FAIL (manual intervention needed):** Task stays in-progress. Report to the user:
|
|
43
|
+
```
|
|
44
|
+
Task [N] audit failed — manual intervention needed:
|
|
45
|
+
- [finding 1 with file:line]
|
|
46
|
+
- [finding 2 with file:line]
|
|
47
|
+
Suggested fixes: [ftm-audit's suggestions]
|
|
48
|
+
```
|
|
49
|
+
Wait for user input before continuing to next task.
|
|
50
|
+
|
|
51
|
+
## Task Completion Report Format
|
|
52
|
+
|
|
53
|
+
```
|
|
54
|
+
Task [N]: [title] — COMPLETE
|
|
55
|
+
Audit: PASS (0 findings) | PASS after auto-fix (2 fixed) | FAIL (1 manual)
|
|
56
|
+
[if auto-fixed: list what was fixed]
|
|
57
|
+
[if failed: list outstanding issues]
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
## When to Skip the Audit
|
|
61
|
+
|
|
62
|
+
**Skip when:**
|
|
63
|
+
- The task only modified `.md`, `.txt`, `.json` (config), or `.yml` files
|
|
64
|
+
- The task is explicitly marked as a "setup" or "scaffold" task
|
|
65
|
+
- The project has no `package.json` AND no identifiable entry point
|
|
66
|
+
- The plan marks the task with `audit: skip`
|
|
67
|
+
|
|
68
|
+
The plan syntax for explicit skipping:
|
|
69
|
+
```yaml
|
|
70
|
+
audit: skip
|
|
71
|
+
reason: "Documentation-only task" | "Config change" | "Test-only change"
|
|
72
|
+
```
|