mindforge-cc 2.0.0 → 2.1.1
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/.agent/bin/lib/commands.cjs +959 -0
- package/.agent/bin/lib/config.cjs +421 -0
- package/.agent/bin/lib/core.cjs +1166 -0
- package/.agent/bin/lib/frontmatter.cjs +307 -0
- package/.agent/bin/lib/init.cjs +1336 -0
- package/.agent/bin/lib/milestone.cjs +252 -0
- package/.agent/bin/lib/model-profiles.cjs +68 -0
- package/.agent/bin/lib/phase.cjs +888 -0
- package/.agent/bin/lib/profile-output.cjs +952 -0
- package/.agent/bin/lib/profile-pipeline.cjs +539 -0
- package/.agent/bin/lib/roadmap.cjs +329 -0
- package/.agent/bin/lib/security.cjs +356 -0
- package/.agent/bin/lib/state.cjs +969 -0
- package/.agent/bin/lib/template.cjs +222 -0
- package/.agent/bin/lib/uat.cjs +189 -0
- package/.agent/bin/lib/verify.cjs +851 -0
- package/.agent/bin/lib/workstream.cjs +491 -0
- package/.agent/bin/mindforge-tools.cjs +897 -0
- package/.agent/file-manifest.json +219 -0
- package/.agent/hooks/mindforge-check-update.js +114 -0
- package/.agent/hooks/mindforge-context-monitor.js +156 -0
- package/.agent/hooks/mindforge-prompt-guard.js +96 -0
- package/.agent/hooks/mindforge-statusline.js +119 -0
- package/.agent/hooks/mindforge-workflow-guard.js +94 -0
- package/.agent/mindforge/add-backlog.md +32 -0
- package/.agent/mindforge/agent.md +31 -0
- package/.agent/mindforge/discuss-phase.md +1 -1
- package/.agent/mindforge/do.md +31 -0
- package/.agent/mindforge/help.md +1 -1
- package/.agent/mindforge/learn.md +3 -2
- package/.agent/mindforge/note.md +35 -0
- package/.agent/mindforge/plant-seed.md +31 -0
- package/.agent/mindforge/research.md +3 -2
- package/.agent/mindforge/review-backlog.md +34 -0
- package/.agent/mindforge/session-report.md +39 -0
- package/.agent/mindforge/steer.md +1 -1
- package/.agent/mindforge/ui-phase.md +34 -0
- package/.agent/mindforge/ui-review.md +36 -0
- package/.agent/mindforge/validate-phase.md +31 -0
- package/.agent/mindforge/workstreams.md +35 -0
- package/.agent/settings.json +38 -0
- package/.agent/skills/mindforge-add-backlog/SKILL.md +72 -0
- package/.agent/skills/mindforge-add-phase/SKILL.md +39 -0
- package/.agent/skills/mindforge-add-tests/SKILL.md +28 -0
- package/.agent/skills/mindforge-add-todo/SKILL.md +42 -0
- package/.agent/skills/mindforge-audit-milestone/SKILL.md +29 -0
- package/.agent/skills/mindforge-audit-uat/SKILL.md +20 -0
- package/.agent/skills/mindforge-autonomous/SKILL.md +33 -0
- package/.agent/skills/mindforge-check-todos/SKILL.md +40 -0
- package/.agent/skills/mindforge-cleanup/SKILL.md +19 -0
- package/.agent/skills/mindforge-complete-milestone/SKILL.md +131 -0
- package/.agent/skills/mindforge-debug/SKILL.md +163 -0
- package/.agent/skills/mindforge-discuss-phase/SKILL.md +54 -0
- package/.agent/skills/mindforge-do/SKILL.md +26 -0
- package/.agent/skills/mindforge-execute-phase/SKILL.md +49 -0
- package/.agent/skills/mindforge-fast/SKILL.md +23 -0
- package/.agent/skills/mindforge-forensics/SKILL.md +49 -0
- package/.agent/skills/mindforge-health/SKILL.md +17 -0
- package/.agent/skills/mindforge-help/SKILL.md +23 -0
- package/.agent/skills/mindforge-insert-phase/SKILL.md +28 -0
- package/.agent/skills/mindforge-join-discord/SKILL.md +19 -0
- package/.agent/skills/mindforge-list-phase-assumptions/SKILL.md +41 -0
- package/.agent/skills/mindforge-list-workspaces/SKILL.md +17 -0
- package/.agent/skills/mindforge-manager/SKILL.md +32 -0
- package/.agent/skills/mindforge-map-codebase/SKILL.md +64 -0
- package/.agent/skills/mindforge-milestone-summary/SKILL.md +44 -0
- package/.agent/skills/mindforge-new-milestone/SKILL.md +38 -0
- package/.agent/skills/mindforge-new-project/SKILL.md +36 -0
- package/.agent/skills/mindforge-new-workspace/SKILL.md +39 -0
- package/.agent/skills/mindforge-next/SKILL.md +19 -0
- package/.agent/skills/mindforge-note/SKILL.md +29 -0
- package/.agent/skills/mindforge-pause-work/SKILL.md +35 -0
- package/.agent/skills/mindforge-plan-milestone-gaps/SKILL.md +28 -0
- package/.agent/skills/mindforge-plan-phase/SKILL.md +37 -0
- package/.agent/skills/mindforge-plant-seed/SKILL.md +22 -0
- package/.agent/skills/mindforge-pr-branch/SKILL.md +21 -0
- package/.agent/skills/mindforge-profile-user/SKILL.md +38 -0
- package/.agent/skills/mindforge-progress/SKILL.md +19 -0
- package/.agent/skills/mindforge-quick/SKILL.md +38 -0
- package/.agent/skills/mindforge-reapply-patches/SKILL.md +124 -0
- package/.agent/skills/mindforge-remove-phase/SKILL.md +26 -0
- package/.agent/skills/mindforge-remove-workspace/SKILL.md +22 -0
- package/.agent/skills/mindforge-research-phase/SKILL.md +186 -0
- package/.agent/skills/mindforge-resume-work/SKILL.md +35 -0
- package/.agent/skills/mindforge-review/SKILL.md +31 -0
- package/.agent/skills/mindforge-review-backlog/SKILL.md +58 -0
- package/.agent/skills/mindforge-session-report/SKILL.md +16 -0
- package/.agent/skills/mindforge-set-profile/SKILL.md +9 -0
- package/.agent/skills/mindforge-settings/SKILL.md +32 -0
- package/.agent/skills/mindforge-ship/SKILL.md +16 -0
- package/.agent/skills/mindforge-stats/SKILL.md +16 -0
- package/.agent/skills/mindforge-thread/SKILL.md +123 -0
- package/.agent/skills/mindforge-ui-phase/SKILL.md +24 -0
- package/.agent/skills/mindforge-ui-review/SKILL.md +24 -0
- package/.agent/skills/mindforge-update/SKILL.md +35 -0
- package/.agent/skills/mindforge-validate-phase/SKILL.md +26 -0
- package/.agent/skills/mindforge-verify-work/SKILL.md +30 -0
- package/.agent/skills/mindforge-workstreams/SKILL.md +65 -0
- package/.agent/workflows/mindforge-add-phase.md +112 -0
- package/.agent/workflows/mindforge-add-tests.md +351 -0
- package/.agent/workflows/mindforge-add-todo.md +158 -0
- package/.agent/workflows/mindforge-audit-milestone.md +332 -0
- package/.agent/workflows/mindforge-audit-uat.md +109 -0
- package/.agent/workflows/mindforge-autonomous.md +815 -0
- package/.agent/workflows/mindforge-check-todos.md +177 -0
- package/.agent/workflows/mindforge-cleanup.md +152 -0
- package/.agent/workflows/mindforge-complete-milestone.md +766 -0
- package/.agent/workflows/mindforge-diagnose-issues.md +220 -0
- package/.agent/workflows/mindforge-discovery-phase.md +289 -0
- package/.agent/workflows/mindforge-discuss-phase-assumptions.md +645 -0
- package/.agent/workflows/mindforge-discuss-phase.md +1047 -0
- package/.agent/workflows/mindforge-do.md +104 -0
- package/.agent/workflows/mindforge-execute-phase.md +838 -0
- package/.agent/workflows/mindforge-execute-plan.md +509 -0
- package/.agent/workflows/mindforge-fast.md +105 -0
- package/.agent/workflows/mindforge-forensics.md +265 -0
- package/.agent/workflows/mindforge-health.md +181 -0
- package/.agent/workflows/mindforge-help.md +606 -0
- package/.agent/workflows/mindforge-insert-phase.md +130 -0
- package/.agent/workflows/mindforge-list-phase-assumptions.md +178 -0
- package/.agent/workflows/mindforge-list-workspaces.md +56 -0
- package/.agent/workflows/mindforge-manager.md +360 -0
- package/.agent/workflows/mindforge-map-codebase.md +370 -0
- package/.agent/workflows/mindforge-milestone-summary.md +223 -0
- package/.agent/workflows/mindforge-new-milestone.md +469 -0
- package/.agent/workflows/mindforge-new-project.md +1226 -0
- package/.agent/workflows/mindforge-new-workspace.md +237 -0
- package/.agent/workflows/mindforge-next.md +97 -0
- package/.agent/workflows/mindforge-node-repair.md +92 -0
- package/.agent/workflows/mindforge-note.md +156 -0
- package/.agent/workflows/mindforge-pause-work.md +176 -0
- package/.agent/workflows/mindforge-plan-milestone-gaps.md +273 -0
- package/.agent/workflows/mindforge-plan-phase.md +848 -0
- package/.agent/workflows/mindforge-plant-seed.md +169 -0
- package/.agent/workflows/mindforge-pr-branch.md +129 -0
- package/.agent/workflows/mindforge-profile-user.md +450 -0
- package/.agent/workflows/mindforge-progress.md +507 -0
- package/.agent/workflows/mindforge-quick.md +732 -0
- package/.agent/workflows/mindforge-remove-phase.md +155 -0
- package/.agent/workflows/mindforge-remove-workspace.md +90 -0
- package/.agent/workflows/mindforge-research-phase.md +74 -0
- package/.agent/workflows/mindforge-resume-project.md +325 -0
- package/.agent/workflows/mindforge-review.md +228 -0
- package/.agent/workflows/mindforge-session-report.md +146 -0
- package/.agent/workflows/mindforge-settings.md +283 -0
- package/.agent/workflows/mindforge-ship.md +228 -0
- package/.agent/workflows/mindforge-stats.md +60 -0
- package/.agent/workflows/mindforge-transition.md +671 -0
- package/.agent/workflows/mindforge-ui-phase.md +290 -0
- package/.agent/workflows/mindforge-ui-review.md +157 -0
- package/.agent/workflows/mindforge-update.md +323 -0
- package/.agent/workflows/mindforge-validate-phase.md +167 -0
- package/.agent/workflows/mindforge-verify-phase.md +254 -0
- package/.agent/workflows/mindforge-verify-work.md +623 -0
- package/.claude/commands/mindforge/add-backlog.md +32 -0
- package/.claude/commands/mindforge/agent.md +31 -0
- package/.claude/commands/mindforge/approve.md +27 -15
- package/.claude/commands/mindforge/audit.md +30 -26
- package/.claude/commands/mindforge/auto.md +29 -18
- package/.claude/commands/mindforge/benchmark.md +26 -29
- package/.claude/commands/mindforge/browse.md +24 -22
- package/.claude/commands/mindforge/complete-milestone.md +28 -14
- package/.claude/commands/mindforge/costs.md +26 -9
- package/.claude/commands/mindforge/cross-review.md +27 -13
- package/.claude/commands/mindforge/dashboard.md +35 -98
- package/.claude/commands/mindforge/debug.md +34 -126
- package/.claude/commands/mindforge/discuss-phase.md +36 -138
- package/.claude/commands/mindforge/do.md +31 -0
- package/.claude/commands/mindforge/execute-phase.md +37 -190
- package/.claude/commands/mindforge/health.md +27 -17
- package/.claude/commands/mindforge/help.md +25 -19
- package/.claude/commands/mindforge/init-org.md +37 -131
- package/.claude/commands/mindforge/init-project.md +40 -155
- package/.claude/commands/mindforge/install-skill.md +32 -15
- package/.claude/commands/mindforge/learn.md +36 -142
- package/.claude/commands/mindforge/map-codebase.md +36 -298
- package/.claude/commands/mindforge/marketplace.md +33 -120
- package/.claude/commands/mindforge/metrics.md +29 -18
- package/.claude/commands/mindforge/migrate.md +33 -40
- package/.claude/commands/mindforge/milestone.md +35 -12
- package/.claude/commands/mindforge/new-runtime.md +25 -15
- package/.claude/commands/mindforge/next.md +34 -105
- package/.claude/commands/mindforge/note.md +35 -0
- package/.claude/commands/mindforge/plan-phase.md +34 -125
- package/.claude/commands/mindforge/plant-seed.md +31 -0
- package/.claude/commands/mindforge/plugins.md +30 -36
- package/.claude/commands/mindforge/pr-review.md +32 -41
- package/.claude/commands/mindforge/profile-team.md +26 -19
- package/.claude/commands/mindforge/publish-skill.md +28 -17
- package/.claude/commands/mindforge/qa.md +27 -12
- package/.claude/commands/mindforge/quick.md +35 -135
- package/.claude/commands/mindforge/release.md +27 -8
- package/.claude/commands/mindforge/remember.md +25 -10
- package/.claude/commands/mindforge/research.md +27 -9
- package/.claude/commands/mindforge/retrospective.md +28 -22
- package/.claude/commands/mindforge/review-backlog.md +34 -0
- package/.claude/commands/mindforge/review.md +37 -157
- package/.claude/commands/mindforge/security-scan.md +34 -233
- package/.claude/commands/mindforge/session-report.md +39 -0
- package/.claude/commands/mindforge/ship.md +34 -100
- package/.claude/commands/mindforge/skills.md +36 -141
- package/.claude/commands/mindforge/status.md +30 -104
- package/.claude/commands/mindforge/steer.md +25 -10
- package/.claude/commands/mindforge/sync-confluence.md +28 -9
- package/.claude/commands/mindforge/sync-jira.md +32 -12
- package/.claude/commands/mindforge/tokens.md +25 -6
- package/.claude/commands/mindforge/ui-phase.md +34 -0
- package/.claude/commands/mindforge/ui-review.md +36 -0
- package/.claude/commands/mindforge/update.md +33 -42
- package/.claude/commands/mindforge/validate-phase.md +31 -0
- package/.claude/commands/mindforge/verify-phase.md +30 -62
- package/.claude/commands/mindforge/workspace.md +28 -25
- package/.claude/commands/mindforge/workstreams.md +35 -0
- package/.mindforge/memory/decision-library.jsonl +0 -0
- package/.mindforge/memory/knowledge-base.jsonl +7 -0
- package/.mindforge/memory/pattern-library.jsonl +1 -0
- package/.mindforge/memory/team-preferences.jsonl +4 -0
- package/.mindforge/personas/advisor-researcher.md +89 -0
- package/.mindforge/personas/analyst.md +112 -52
- package/.mindforge/personas/architect.md +100 -67
- package/.mindforge/personas/assumptions-analyzer-extend.md +87 -0
- package/.mindforge/personas/assumptions-analyzer.md +109 -0
- package/.mindforge/personas/codebase-mapper-extend.md +93 -0
- package/.mindforge/personas/codebase-mapper.md +770 -0
- package/.mindforge/personas/coverage-specialist.md +104 -0
- package/.mindforge/personas/debug-specialist.md +118 -52
- package/.mindforge/personas/debugger.md +97 -0
- package/.mindforge/personas/decision-architect.md +102 -0
- package/.mindforge/personas/developer.md +97 -85
- package/.mindforge/personas/executor.md +88 -0
- package/.mindforge/personas/integration-checker.md +92 -0
- package/.mindforge/personas/nyquist-auditor.md +84 -0
- package/.mindforge/personas/phase-researcher.md +107 -0
- package/.mindforge/personas/plan-checker.md +92 -0
- package/.mindforge/personas/planner.md +105 -0
- package/.mindforge/personas/project-researcher.md +99 -0
- package/.mindforge/personas/qa-engineer.md +113 -61
- package/.mindforge/personas/release-manager.md +102 -64
- package/.mindforge/personas/research-agent.md +109 -24
- package/.mindforge/personas/research-synthesizer.md +101 -0
- package/.mindforge/personas/roadmapper-extend.md +100 -0
- package/.mindforge/personas/roadmapper.md +103 -0
- package/.mindforge/personas/security-reviewer.md +114 -91
- package/.mindforge/personas/tech-writer.md +118 -51
- package/.mindforge/personas/ui-auditor.md +94 -0
- package/.mindforge/personas/ui-checker.md +89 -0
- package/.mindforge/personas/ui-researcher.md +99 -0
- package/.mindforge/personas/user-profiler.md +93 -0
- package/.mindforge/personas/verifier.md +101 -0
- package/.planning/ROADMAP.md +10 -0
- package/.planning/browser-daemon.log +32 -0
- package/.planning/phases/01-migrate-gsd-to-mindforge/.gitkeep +0 -0
- package/CHANGELOG.md +41 -0
- package/MINDFORGE.md +2 -0
- package/README.md +40 -3
- package/bin/installer-core.js +3 -4
- package/docs/PERSONAS.md +611 -0
- package/docs/commands-reference.md +1 -0
- package/docs/{Context → context}/Master-Context.md +6 -13
- package/docs/references/checkpoints.md +778 -0
- package/docs/{reference → references}/commands.md +53 -43
- package/docs/references/continuation-format.md +249 -0
- package/docs/references/decimal-phase-calculation.md +64 -0
- package/docs/references/git-integration.md +295 -0
- package/docs/references/git-planning-commit.md +38 -0
- package/docs/references/model-profile-resolution.md +36 -0
- package/docs/references/model-profiles.md +139 -0
- package/docs/references/phase-argument-parsing.md +61 -0
- package/docs/references/planning-config.md +202 -0
- package/docs/references/questioning.md +162 -0
- package/docs/references/tdd.md +263 -0
- package/docs/references/ui-brand.md +160 -0
- package/docs/references/user-profiling.md +681 -0
- package/docs/references/verification-patterns.md +612 -0
- package/docs/references/workstream-flag.md +58 -0
- package/docs/skills-authoring-guide.md +1 -1
- package/docs/templates/Agents/CLAUDE-MD.md +122 -0
- package/docs/templates/Agents/COPILOT-INSTRUCTIONS.md +7 -0
- package/docs/templates/Agents/DEBUGGER-PROMPT.md +91 -0
- package/docs/templates/Agents/PLANNER-PROMPT.md +117 -0
- package/docs/templates/Execution/CONTINUE-HERE.md +78 -0
- package/docs/templates/Execution/DISCUSSION-LOG.md +63 -0
- package/docs/templates/Execution/PHASE-PROMPT.md +610 -0
- package/docs/templates/Execution/STATE.md +176 -0
- package/docs/templates/Execution/SUMMARY-COMPLEX.md +59 -0
- package/docs/templates/Execution/SUMMARY-MINIMAL.md +41 -0
- package/docs/templates/Execution/SUMMARY-STANDARD.md +48 -0
- package/docs/templates/Execution/SUMMARY.md +248 -0
- package/docs/templates/Profile/DEV-PREFERENCES.md +21 -0
- package/docs/templates/Profile/USER-PROFILE.md +146 -0
- package/docs/templates/Profile/USER-SETUP.md +311 -0
- package/docs/templates/Project/DISCOVERY.md +146 -0
- package/docs/templates/Project/MILESTONE-ARCHIVE.md +123 -0
- package/docs/templates/Project/MILESTONE.md +115 -0
- package/docs/templates/Project/PROJECT.md +206 -0
- package/docs/templates/Project/REQUIREMENTS.md +231 -0
- package/docs/templates/Project/RETROSPECTIVE.md +54 -0
- package/docs/templates/Project/ROADMAP.md +202 -0
- package/docs/templates/Quality/DEBUG.md +164 -0
- package/docs/templates/Quality/UAT.md +280 -0
- package/docs/templates/Quality/UI-SPEC.md +100 -0
- package/docs/templates/Quality/VALIDATION.md +76 -0
- package/docs/templates/Quality/VERIFICATION-REPORT.md +322 -0
- package/docs/templates/System/CONFIG.json +43 -0
- package/docs/templates/System/CONTEXT.md +352 -0
- package/docs/templates/codebase/architecture.md +255 -0
- package/docs/templates/codebase/concerns.md +310 -0
- package/docs/templates/codebase/conventions.md +307 -0
- package/docs/templates/codebase/integrations.md +280 -0
- package/docs/templates/codebase/stack.md +186 -0
- package/docs/templates/codebase/structure.md +285 -0
- package/docs/templates/codebase/testing.md +480 -0
- package/docs/templates/research/ARCHITECTURE.md +204 -0
- package/docs/templates/research/FEATURES.md +147 -0
- package/docs/templates/research/PITFALLS.md +200 -0
- package/docs/templates/research/STACK.md +120 -0
- package/docs/templates/research/SUMMARY.md +170 -0
- package/docs/user-guide.md +1 -1
- package/package.json +7 -2
- /package/docs/{reference → references}/audit-events.md +0 -0
- /package/docs/{reference → references}/config-reference.md +0 -0
- /package/docs/{reference → references}/sdk-api.md +0 -0
- /package/docs/{reference → references}/skills-api.md +0 -0
|
@@ -0,0 +1,295 @@
|
|
|
1
|
+
<overview>
|
|
2
|
+
Git integration for MindForge framework.
|
|
3
|
+
</overview>
|
|
4
|
+
|
|
5
|
+
<core_principle>
|
|
6
|
+
|
|
7
|
+
**Commit outcomes, not process.**
|
|
8
|
+
|
|
9
|
+
The git log should read like a changelog of what shipped, not a diary of planning activity.
|
|
10
|
+
</core_principle>
|
|
11
|
+
|
|
12
|
+
<commit_points>
|
|
13
|
+
|
|
14
|
+
| Event | Commit? | Why |
|
|
15
|
+
| ----------------------- | ------- | ------------------------------------------------ |
|
|
16
|
+
| BRIEF + ROADMAP created | YES | Project initialization |
|
|
17
|
+
| PLAN.md created | NO | Intermediate - commit with plan completion |
|
|
18
|
+
| RESEARCH.md created | NO | Intermediate |
|
|
19
|
+
| DISCOVERY.md created | NO | Intermediate |
|
|
20
|
+
| **Task completed** | YES | Atomic unit of work (1 commit per task) |
|
|
21
|
+
| **Plan completed** | YES | Metadata commit (SUMMARY + STATE + ROADMAP) |
|
|
22
|
+
| Handoff created | YES | WIP state preserved |
|
|
23
|
+
|
|
24
|
+
</commit_points>
|
|
25
|
+
|
|
26
|
+
<git_check>
|
|
27
|
+
|
|
28
|
+
```bash
|
|
29
|
+
[ -d .git ] && echo "GIT_EXISTS" || echo "NO_GIT"
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
If NO_GIT: Run `git init` silently. MindForge projects always get their own repo.
|
|
33
|
+
</git_check>
|
|
34
|
+
|
|
35
|
+
<commit_formats>
|
|
36
|
+
|
|
37
|
+
<format name="initialization">
|
|
38
|
+
## Project Initialization (brief + roadmap together)
|
|
39
|
+
|
|
40
|
+
```
|
|
41
|
+
docs: initialize [project-name] ([N] phases)
|
|
42
|
+
|
|
43
|
+
[One-liner from PROJECT.md]
|
|
44
|
+
|
|
45
|
+
Phases:
|
|
46
|
+
1. [phase-name]: [goal]
|
|
47
|
+
2. [phase-name]: [goal]
|
|
48
|
+
3. [phase-name]: [goal]
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
What to commit:
|
|
52
|
+
|
|
53
|
+
```bash
|
|
54
|
+
node ".agent/mindforge/bin/mindforge-tools.cjs" commit "docs: initialize [project-name] ([N] phases)" --files .planning/
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
</format>
|
|
58
|
+
|
|
59
|
+
<format name="task-completion">
|
|
60
|
+
## Task Completion (During Plan Execution)
|
|
61
|
+
|
|
62
|
+
Each task gets its own commit immediately after completion.
|
|
63
|
+
|
|
64
|
+
> **Parallel agents:** When running as a parallel executor (spawned by execute-phase),
|
|
65
|
+
> use `--no-verify` on all commits to avoid pre-commit hook lock contention.
|
|
66
|
+
> The orchestrator validates hooks once after all agents complete.
|
|
67
|
+
|
|
68
|
+
```
|
|
69
|
+
{type}({phase}-{plan}): {task-name}
|
|
70
|
+
|
|
71
|
+
- [Key change 1]
|
|
72
|
+
- [Key change 2]
|
|
73
|
+
- [Key change 3]
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
**Commit types:**
|
|
77
|
+
- `feat` - New feature/functionality
|
|
78
|
+
- `fix` - Bug fix
|
|
79
|
+
- `test` - Test-only (TDD RED phase)
|
|
80
|
+
- `refactor` - Code cleanup (TDD REFACTOR phase)
|
|
81
|
+
- `perf` - Performance improvement
|
|
82
|
+
- `chore` - Dependencies, config, tooling
|
|
83
|
+
|
|
84
|
+
**Examples:**
|
|
85
|
+
|
|
86
|
+
```bash
|
|
87
|
+
# Standard task
|
|
88
|
+
git add src/api/auth.ts src/types/user.ts
|
|
89
|
+
git commit -m "feat(08-02): create user registration endpoint
|
|
90
|
+
|
|
91
|
+
- POST /auth/register validates email and password
|
|
92
|
+
- Checks for duplicate users
|
|
93
|
+
- Returns JWT token on success
|
|
94
|
+
"
|
|
95
|
+
|
|
96
|
+
# TDD task - RED phase
|
|
97
|
+
git add src/__tests__/jwt.test.ts
|
|
98
|
+
git commit -m "test(07-02): add failing test for JWT generation
|
|
99
|
+
|
|
100
|
+
- Tests token contains user ID claim
|
|
101
|
+
- Tests token expires in 1 hour
|
|
102
|
+
- Tests signature verification
|
|
103
|
+
"
|
|
104
|
+
|
|
105
|
+
# TDD task - GREEN phase
|
|
106
|
+
git add src/utils/jwt.ts
|
|
107
|
+
git commit -m "feat(07-02): implement JWT generation
|
|
108
|
+
|
|
109
|
+
- Uses jose library for signing
|
|
110
|
+
- Includes user ID and expiry claims
|
|
111
|
+
- Signs with HS256 algorithm
|
|
112
|
+
"
|
|
113
|
+
```
|
|
114
|
+
|
|
115
|
+
</format>
|
|
116
|
+
|
|
117
|
+
<format name="plan-completion">
|
|
118
|
+
## Plan Completion (After All Tasks Done)
|
|
119
|
+
|
|
120
|
+
After all tasks committed, one final metadata commit captures plan completion.
|
|
121
|
+
|
|
122
|
+
```
|
|
123
|
+
docs({phase}-{plan}): complete [plan-name] plan
|
|
124
|
+
|
|
125
|
+
Tasks completed: [N]/[N]
|
|
126
|
+
- [Task 1 name]
|
|
127
|
+
- [Task 2 name]
|
|
128
|
+
- [Task 3 name]
|
|
129
|
+
|
|
130
|
+
SUMMARY: .planning/phases/XX-name/{phase}-{plan}-SUMMARY.md
|
|
131
|
+
```
|
|
132
|
+
|
|
133
|
+
What to commit:
|
|
134
|
+
|
|
135
|
+
```bash
|
|
136
|
+
node ".agent/mindforge/bin/mindforge-tools.cjs" commit "docs({phase}-{plan}): complete [plan-name] plan" --files .planning/phases/XX-name/{phase}-{plan}-PLAN.md .planning/phases/XX-name/{phase}-{plan}-SUMMARY.md .planning/STATE.md .planning/ROADMAP.md
|
|
137
|
+
```
|
|
138
|
+
|
|
139
|
+
**Note:** Code files NOT included - already committed per-task.
|
|
140
|
+
|
|
141
|
+
</format>
|
|
142
|
+
|
|
143
|
+
<format name="handoff">
|
|
144
|
+
## Handoff (WIP)
|
|
145
|
+
|
|
146
|
+
```
|
|
147
|
+
wip: [phase-name] paused at task [X]/[Y]
|
|
148
|
+
|
|
149
|
+
Current: [task name]
|
|
150
|
+
[If blocked:] Blocked: [reason]
|
|
151
|
+
```
|
|
152
|
+
|
|
153
|
+
What to commit:
|
|
154
|
+
|
|
155
|
+
```bash
|
|
156
|
+
node ".agent/mindforge/bin/mindforge-tools.cjs" commit "wip: [phase-name] paused at task [X]/[Y]" --files .planning/
|
|
157
|
+
```
|
|
158
|
+
|
|
159
|
+
</format>
|
|
160
|
+
</commit_formats>
|
|
161
|
+
|
|
162
|
+
<example_log>
|
|
163
|
+
|
|
164
|
+
**Old approach (per-plan commits):**
|
|
165
|
+
```
|
|
166
|
+
a7f2d1 feat(checkout): Stripe payments with webhook verification
|
|
167
|
+
3e9c4b feat(products): catalog with search, filters, and pagination
|
|
168
|
+
8a1b2c feat(auth): JWT with refresh rotation using jose
|
|
169
|
+
5c3d7e feat(foundation): Next.js 15 + Prisma + Tailwind scaffold
|
|
170
|
+
2f4a8d docs: initialize ecommerce-app (5 phases)
|
|
171
|
+
```
|
|
172
|
+
|
|
173
|
+
**New approach (per-task commits):**
|
|
174
|
+
```
|
|
175
|
+
# Phase 04 - Checkout
|
|
176
|
+
1a2b3c docs(04-01): complete checkout flow plan
|
|
177
|
+
4d5e6f feat(04-01): add webhook signature verification
|
|
178
|
+
7g8h9i feat(04-01): implement payment session creation
|
|
179
|
+
0j1k2l feat(04-01): create checkout page component
|
|
180
|
+
|
|
181
|
+
# Phase 03 - Products
|
|
182
|
+
3m4n5o docs(03-02): complete product listing plan
|
|
183
|
+
6p7q8r feat(03-02): add pagination controls
|
|
184
|
+
9s0t1u feat(03-02): implement search and filters
|
|
185
|
+
2v3w4x feat(03-01): create product catalog schema
|
|
186
|
+
|
|
187
|
+
# Phase 02 - Auth
|
|
188
|
+
5y6z7a docs(02-02): complete token refresh plan
|
|
189
|
+
8b9c0d feat(02-02): implement refresh token rotation
|
|
190
|
+
1e2f3g test(02-02): add failing test for token refresh
|
|
191
|
+
4h5i6j docs(02-01): complete JWT setup plan
|
|
192
|
+
7k8l9m feat(02-01): add JWT generation and validation
|
|
193
|
+
0n1o2p chore(02-01): install jose library
|
|
194
|
+
|
|
195
|
+
# Phase 01 - Foundation
|
|
196
|
+
3q4r5s docs(01-01): complete scaffold plan
|
|
197
|
+
6t7u8v feat(01-01): configure Tailwind and globals
|
|
198
|
+
9w0x1y feat(01-01): set up Prisma with database
|
|
199
|
+
2z3a4b feat(01-01): create Next.js 15 project
|
|
200
|
+
|
|
201
|
+
# Initialization
|
|
202
|
+
5c6d7e docs: initialize ecommerce-app (5 phases)
|
|
203
|
+
```
|
|
204
|
+
|
|
205
|
+
Each plan produces 2-4 commits (tasks + metadata). Clear, granular, bisectable.
|
|
206
|
+
|
|
207
|
+
</example_log>
|
|
208
|
+
|
|
209
|
+
<anti_patterns>
|
|
210
|
+
|
|
211
|
+
**Still don't commit (intermediate artifacts):**
|
|
212
|
+
- PLAN.md creation (commit with plan completion)
|
|
213
|
+
- RESEARCH.md (intermediate)
|
|
214
|
+
- DISCOVERY.md (intermediate)
|
|
215
|
+
- Minor planning tweaks
|
|
216
|
+
- "Fixed typo in roadmap"
|
|
217
|
+
|
|
218
|
+
**Do commit (outcomes):**
|
|
219
|
+
- Each task completion (feat/fix/test/refactor)
|
|
220
|
+
- Plan completion metadata (docs)
|
|
221
|
+
- Project initialization (docs)
|
|
222
|
+
|
|
223
|
+
**Key principle:** Commit working code and shipped outcomes, not planning process.
|
|
224
|
+
|
|
225
|
+
</anti_patterns>
|
|
226
|
+
|
|
227
|
+
<commit_strategy_rationale>
|
|
228
|
+
|
|
229
|
+
## Why Per-Task Commits?
|
|
230
|
+
|
|
231
|
+
**Context engineering for AI:**
|
|
232
|
+
- Git history becomes primary context source for future MindForge sessions
|
|
233
|
+
- `git log --grep="{phase}-{plan}"` shows all work for a plan
|
|
234
|
+
- `git diff <hash>^..<hash>` shows exact changes per task
|
|
235
|
+
- Less reliance on parsing SUMMARY.md = more context for actual work
|
|
236
|
+
|
|
237
|
+
**Failure recovery:**
|
|
238
|
+
- Task 1 committed ✅, Task 2 failed ❌
|
|
239
|
+
- MindForge in next session: sees task 1 complete, can retry task 2
|
|
240
|
+
- Can `git reset --hard` to last successful task
|
|
241
|
+
|
|
242
|
+
**Debugging:**
|
|
243
|
+
- `git bisect` finds exact failing task, not just failing plan
|
|
244
|
+
- `git blame` traces line to specific task context
|
|
245
|
+
- Each commit is independently revertable
|
|
246
|
+
|
|
247
|
+
**Observability:**
|
|
248
|
+
- Solo developer + MindForge workflow benefits from granular attribution
|
|
249
|
+
- Atomic commits are git best practice
|
|
250
|
+
- "Commit noise" irrelevant when consumer is MindForge, not humans
|
|
251
|
+
|
|
252
|
+
</commit_strategy_rationale>
|
|
253
|
+
|
|
254
|
+
<sub_repos_support>
|
|
255
|
+
|
|
256
|
+
## Multi-Repo Workspace Support (sub_repos)
|
|
257
|
+
|
|
258
|
+
For workspaces with separate git repos (e.g., `backend/`, `frontend/`, `shared/`), MindForge routes commits to each repo independently.
|
|
259
|
+
|
|
260
|
+
### Configuration
|
|
261
|
+
|
|
262
|
+
In `.planning/config.json`, list sub-repo directories under `planning.sub_repos`:
|
|
263
|
+
|
|
264
|
+
```json
|
|
265
|
+
{
|
|
266
|
+
"planning": {
|
|
267
|
+
"commit_docs": false,
|
|
268
|
+
"sub_repos": ["backend", "frontend", "shared"]
|
|
269
|
+
}
|
|
270
|
+
}
|
|
271
|
+
```
|
|
272
|
+
|
|
273
|
+
Set `commit_docs: false` so planning docs stay local and are not committed to any sub-repo.
|
|
274
|
+
|
|
275
|
+
### How It Works
|
|
276
|
+
|
|
277
|
+
1. **Auto-detection:** During `/mindforge-new-project`, directories with their own `.git` folder are detected and offered for selection as sub-repos. On subsequent runs, `loadConfig` auto-syncs the `sub_repos` list with the filesystem — adding newly created repos and removing deleted ones. This means `config.json` may be rewritten automatically when repos change on disk.
|
|
278
|
+
2. **File grouping:** Code files are grouped by their sub-repo prefix (e.g., `backend/src/api/users.ts` belongs to the `backend/` repo).
|
|
279
|
+
3. **Independent commits:** Each sub-repo receives its own atomic commit via `mindforge-tools.cjs commit-to-subrepo`. File paths are made relative to the sub-repo root before staging.
|
|
280
|
+
4. **Planning stays local:** The `.planning/` directory is not committed; it acts as cross-repo coordination.
|
|
281
|
+
|
|
282
|
+
### Commit Routing
|
|
283
|
+
|
|
284
|
+
Instead of the standard `commit` command, use `commit-to-subrepo` when `sub_repos` is configured:
|
|
285
|
+
|
|
286
|
+
```bash
|
|
287
|
+
node .agent/mindforge/bin/mindforge-tools.cjs commit-to-subrepo "feat(02-01): add user API" \
|
|
288
|
+
--files backend/src/api/users.ts backend/src/types/user.ts frontend/src/components/UserForm.tsx
|
|
289
|
+
```
|
|
290
|
+
|
|
291
|
+
This stages `src/api/users.ts` and `src/types/user.ts` in the `backend/` repo, and `src/components/UserForm.tsx` in the `frontend/` repo, then commits each independently with the same message.
|
|
292
|
+
|
|
293
|
+
Files that don't match any configured sub-repo are reported as unmatched.
|
|
294
|
+
|
|
295
|
+
</sub_repos_support>
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
# Git Planning Commit
|
|
2
|
+
|
|
3
|
+
Commit planning artifacts using MindForge-tools CLI, which automatically checks `commit_docs` config and gitignore status.
|
|
4
|
+
|
|
5
|
+
## Commit via CLI
|
|
6
|
+
|
|
7
|
+
Always use `mindforge-tools.cjs commit` for `.planning/` files — it handles `commit_docs` and gitignore checks automatically:
|
|
8
|
+
|
|
9
|
+
```bash
|
|
10
|
+
node ".agent/mindforge/bin/mindforge-tools.cjs" commit "docs({scope}): {description}" --files .planning/STATE.md .planning/ROADMAP.md
|
|
11
|
+
```
|
|
12
|
+
|
|
13
|
+
The CLI will return `skipped` (with reason) if `commit_docs` is `false` or `.planning/` is gitignored. No manual conditional checks needed.
|
|
14
|
+
|
|
15
|
+
## Amend previous commit
|
|
16
|
+
|
|
17
|
+
To fold `.planning/` file changes into the previous commit:
|
|
18
|
+
|
|
19
|
+
```bash
|
|
20
|
+
node ".agent/mindforge/bin/mindforge-tools.cjs" commit "" --files .planning/codebase/*.md --amend
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
## Commit Message Patterns
|
|
24
|
+
|
|
25
|
+
| Command | Scope | Example |
|
|
26
|
+
|---------|-------|---------|
|
|
27
|
+
| plan-phase | phase | `docs(phase-03): create authentication plans` |
|
|
28
|
+
| execute-phase | phase | `docs(phase-03): complete authentication phase` |
|
|
29
|
+
| new-milestone | milestone | `docs: start milestone v1.1` |
|
|
30
|
+
| remove-phase | chore | `chore: remove phase 17 (dashboard)` |
|
|
31
|
+
| insert-phase | phase | `docs: insert phase 16.1 (critical fix)` |
|
|
32
|
+
| add-phase | phase | `docs: add phase 07 (settings page)` |
|
|
33
|
+
|
|
34
|
+
## When to Skip
|
|
35
|
+
|
|
36
|
+
- `commit_docs: false` in config
|
|
37
|
+
- `.planning/` is gitignored
|
|
38
|
+
- No changes to commit (check with `git status --porcelain .planning/`)
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
# Model Profile Resolution
|
|
2
|
+
|
|
3
|
+
Resolve model profile once at the start of orchestration, then use it for all Task spawns.
|
|
4
|
+
|
|
5
|
+
## Resolution Pattern
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
MODEL_PROFILE=$(cat .planning/config.json 2>/dev/null | grep -o '"model_profile"[[:space:]]*:[[:space:]]*"[^"]*"' | grep -o '"[^"]*"$' | tr -d '"' || echo "balanced")
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
Default: `balanced` if not set or config missing.
|
|
12
|
+
|
|
13
|
+
## Lookup Table
|
|
14
|
+
|
|
15
|
+
@.agent/mindforge/references/model-profiles.md
|
|
16
|
+
|
|
17
|
+
Look up MindForge in the table for the resolved profile. Pass the model parameter to Task calls:
|
|
18
|
+
|
|
19
|
+
```
|
|
20
|
+
Task(
|
|
21
|
+
prompt="...",
|
|
22
|
+
subagent_type="mindforge-planner",
|
|
23
|
+
model="{resolved_model}" # "inherit", "sonnet", or "haiku"
|
|
24
|
+
)
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
**Note:** Opus-tier agents resolve to `"inherit"` (not `"opus"`). This causes MindForge to use the parent session's model, avoiding conflicts with organization policies that may block specific opus versions.
|
|
28
|
+
|
|
29
|
+
If `model_profile` is `"inherit"`, all agents resolve to `"inherit"` (useful for OpenCode `/model`).
|
|
30
|
+
|
|
31
|
+
## Usage
|
|
32
|
+
|
|
33
|
+
1. Resolve once at orchestration start
|
|
34
|
+
2. Store the profile value
|
|
35
|
+
3. Look up each agent's model from the table when spawning
|
|
36
|
+
4. Pass model parameter to each Task call (values: `"inherit"`, `"sonnet"`, `"haiku"`)
|
|
@@ -0,0 +1,139 @@
|
|
|
1
|
+
# Model Profiles
|
|
2
|
+
|
|
3
|
+
Model profiles control which MindForge model each MindForge agent uses. This allows balancing quality vs token spend, or inheriting the currently selected session model.
|
|
4
|
+
|
|
5
|
+
## Profile Definitions
|
|
6
|
+
|
|
7
|
+
| Agent | `quality` | `balanced` | `budget` | `inherit` |
|
|
8
|
+
|-------|-----------|------------|----------|-----------|
|
|
9
|
+
| mindforge-planner | opus | opus | sonnet | inherit |
|
|
10
|
+
| mindforge-roadmapper | opus | sonnet | sonnet | inherit |
|
|
11
|
+
| mindforge-executor | opus | sonnet | sonnet | inherit |
|
|
12
|
+
| mindforge-phase-researcher | opus | sonnet | haiku | inherit |
|
|
13
|
+
| mindforge-project-researcher | opus | sonnet | haiku | inherit |
|
|
14
|
+
| mindforge-research-synthesizer | sonnet | sonnet | haiku | inherit |
|
|
15
|
+
| mindforge-debugger | opus | sonnet | sonnet | inherit |
|
|
16
|
+
| mindforge-codebase-mapper | sonnet | haiku | haiku | inherit |
|
|
17
|
+
| mindforge-verifier | sonnet | sonnet | haiku | inherit |
|
|
18
|
+
| mindforge-plan-checker | sonnet | sonnet | haiku | inherit |
|
|
19
|
+
| mindforge-integration-checker | sonnet | sonnet | haiku | inherit |
|
|
20
|
+
| mindforge-nyquist-auditor | sonnet | sonnet | haiku | inherit |
|
|
21
|
+
|
|
22
|
+
## Profile Philosophy
|
|
23
|
+
|
|
24
|
+
**quality** - Maximum reasoning power
|
|
25
|
+
- Opus for all decision-making agents
|
|
26
|
+
- Sonnet for read-only verification
|
|
27
|
+
- Use when: quota available, critical architecture work
|
|
28
|
+
|
|
29
|
+
**balanced** (default) - Smart allocation
|
|
30
|
+
- Opus only for planning (where architecture decisions happen)
|
|
31
|
+
- Sonnet for execution and research (follows explicit instructions)
|
|
32
|
+
- Sonnet for verification (needs reasoning, not just pattern matching)
|
|
33
|
+
- Use when: normal development, good balance of quality and cost
|
|
34
|
+
|
|
35
|
+
**budget** - Minimal Opus usage
|
|
36
|
+
- Sonnet for anything that writes code
|
|
37
|
+
- Haiku for research and verification
|
|
38
|
+
- Use when: conserving quota, high-volume work, less critical phases
|
|
39
|
+
|
|
40
|
+
**inherit** - Follow the current session model
|
|
41
|
+
- All agents resolve to `inherit`
|
|
42
|
+
- Best when you switch models interactively (for example OpenCode `/model`)
|
|
43
|
+
- **Required when using non-Anthropic providers** (OpenRouter, local models, etc.) — otherwise MindForge may call Anthropic models directly, incurring unexpected costs
|
|
44
|
+
- Use when: you want MindForge to follow your currently selected runtime model
|
|
45
|
+
|
|
46
|
+
## Using Non-MindForge Runtimes (Codex, OpenCode, Gemini CLI)
|
|
47
|
+
|
|
48
|
+
When installed for a non-MindForge runtime, MindForge installer sets `resolve_model_ids: "omit"` in `~/.mindforge/defaults.json`. This returns an empty model parameter for all agents, so each agent uses the runtime's default model. No manual setup is needed.
|
|
49
|
+
|
|
50
|
+
To assign different models to different agents, add `model_overrides` with model IDs your runtime recognizes:
|
|
51
|
+
|
|
52
|
+
```json
|
|
53
|
+
{
|
|
54
|
+
"resolve_model_ids": "omit",
|
|
55
|
+
"model_overrides": {
|
|
56
|
+
"mindforge-planner": "o3",
|
|
57
|
+
"mindforge-executor": "o4-mini",
|
|
58
|
+
"mindforge-debugger": "o3",
|
|
59
|
+
"mindforge-codebase-mapper": "o4-mini"
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
The same tiering logic applies: stronger models for planning and debugging, cheaper models for execution and mapping.
|
|
65
|
+
|
|
66
|
+
## Using Claude Code with Non-Anthropic Providers (OpenRouter, Local)
|
|
67
|
+
|
|
68
|
+
If you're using Claude Code with OpenRouter, a local model, or any non-Anthropic provider, set the `inherit` profile to prevent MindForge from calling Anthropic models for subagents:
|
|
69
|
+
|
|
70
|
+
```bash
|
|
71
|
+
# Via settings command
|
|
72
|
+
/mindforge-settings
|
|
73
|
+
# → Select "Inherit" for model profile
|
|
74
|
+
|
|
75
|
+
# Or manually in .planning/config.json
|
|
76
|
+
{
|
|
77
|
+
"model_profile": "inherit"
|
|
78
|
+
}
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
Without `inherit`, MindForge's default `balanced` profile spawns specific Anthropic models (`opus`, `sonnet`, `haiku`) for each agent type, which can result in additional API costs through your non-Anthropic provider.
|
|
82
|
+
|
|
83
|
+
## Resolution Logic
|
|
84
|
+
|
|
85
|
+
Orchestrators resolve model before spawning:
|
|
86
|
+
|
|
87
|
+
```
|
|
88
|
+
1. Read .planning/config.json
|
|
89
|
+
2. Check model_overrides for agent-specific override
|
|
90
|
+
3. If no override, look up agent in profile table
|
|
91
|
+
4. Pass model parameter to Task call
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
## Per-Agent Overrides
|
|
95
|
+
|
|
96
|
+
Override specific agents without changing the entire profile:
|
|
97
|
+
|
|
98
|
+
```json
|
|
99
|
+
{
|
|
100
|
+
"model_profile": "balanced",
|
|
101
|
+
"model_overrides": {
|
|
102
|
+
"mindforge-executor": "opus",
|
|
103
|
+
"mindforge-planner": "haiku"
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
```
|
|
107
|
+
|
|
108
|
+
Overrides take precedence over the profile. Valid values: `opus`, `sonnet`, `haiku`, `inherit`, or any fully-qualified model ID (e.g., `"o3"`, `"openai/o3"`, `"google/gemini-2.5-pro"`).
|
|
109
|
+
|
|
110
|
+
## Switching Profiles
|
|
111
|
+
|
|
112
|
+
Runtime: `/mindforge-set-profile <profile>`
|
|
113
|
+
|
|
114
|
+
Per-project default: Set in `.planning/config.json`:
|
|
115
|
+
```json
|
|
116
|
+
{
|
|
117
|
+
"model_profile": "balanced"
|
|
118
|
+
}
|
|
119
|
+
```
|
|
120
|
+
|
|
121
|
+
## Design Rationale
|
|
122
|
+
|
|
123
|
+
**Why Opus for mindforge-planner?**
|
|
124
|
+
Planning involves architecture decisions, goal decomposition, and task design. This is where model quality has the highest impact.
|
|
125
|
+
|
|
126
|
+
**Why Sonnet for mindforge-executor?**
|
|
127
|
+
Executors follow explicit PLAN.md instructions. The plan already contains the reasoning; execution is implementation.
|
|
128
|
+
|
|
129
|
+
**Why Sonnet (not Haiku) for verifiers in balanced?**
|
|
130
|
+
Verification requires goal-backward reasoning - checking if code *delivers* what the phase promised, not just pattern matching. Sonnet handles this well; Haiku may miss subtle gaps.
|
|
131
|
+
|
|
132
|
+
**Why Haiku for mindforge-codebase-mapper?**
|
|
133
|
+
Read-only exploration and pattern extraction. No reasoning required, just structured output from file contents.
|
|
134
|
+
|
|
135
|
+
**Why `inherit` instead of passing `opus` directly?**
|
|
136
|
+
Claude Code's `"opus"` alias maps to a specific model version. Organizations may block older opus versions while allowing newer ones. MindForge returns `"inherit"` for opus-tier agents, causing them to use whatever opus version the user has configured in their session. This avoids version conflicts and silent fallbacks to Sonnet.
|
|
137
|
+
|
|
138
|
+
**Why `inherit` profile?**
|
|
139
|
+
Some runtimes (including OpenCode) let users switch models at runtime (`/model`). The `inherit` profile keeps all MindForge subagents aligned to that live selection.
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
# Phase Argument Parsing
|
|
2
|
+
|
|
3
|
+
Parse and normalize phase arguments for commands that operate on phases.
|
|
4
|
+
|
|
5
|
+
## Extraction
|
|
6
|
+
|
|
7
|
+
From `$ARGUMENTS`:
|
|
8
|
+
- Extract phase number (first numeric argument)
|
|
9
|
+
- Extract flags (prefixed with `--`)
|
|
10
|
+
- Remaining text is description (for insert/add commands)
|
|
11
|
+
|
|
12
|
+
## Using mindforge-tools
|
|
13
|
+
|
|
14
|
+
The `find-phase` command handles normalization and validation in one step:
|
|
15
|
+
|
|
16
|
+
```bash
|
|
17
|
+
PHASE_INFO=$(node ".agent/mindforge/bin/mindforge-tools.cjs" find-phase "${PHASE}")
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
Returns JSON with:
|
|
21
|
+
- `found`: true/false
|
|
22
|
+
- `directory`: Full path to phase directory
|
|
23
|
+
- `phase_number`: Normalized number (e.g., "06", "06.1")
|
|
24
|
+
- `phase_name`: Name portion (e.g., "foundation")
|
|
25
|
+
- `plans`: Array of PLAN.md files
|
|
26
|
+
- `summaries`: Array of SUMMARY.md files
|
|
27
|
+
|
|
28
|
+
## Manual Normalization (Legacy)
|
|
29
|
+
|
|
30
|
+
Zero-pad integer phases to 2 digits. Preserve decimal suffixes.
|
|
31
|
+
|
|
32
|
+
```bash
|
|
33
|
+
# Normalize phase number
|
|
34
|
+
if [[ "$PHASE" =~ ^[0-9]+$ ]]; then
|
|
35
|
+
# Integer: 8 → 08
|
|
36
|
+
PHASE=$(printf "%02d" "$PHASE")
|
|
37
|
+
elif [[ "$PHASE" =~ ^([0-9]+)\.([0-9]+)$ ]]; then
|
|
38
|
+
# Decimal: 2.1 → 02.1
|
|
39
|
+
PHASE=$(printf "%02d.%s" "${BASH_REMATCH[1]}" "${BASH_REMATCH[2]}")
|
|
40
|
+
fi
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
## Validation
|
|
44
|
+
|
|
45
|
+
Use `roadmap get-phase` to validate phase exists:
|
|
46
|
+
|
|
47
|
+
```bash
|
|
48
|
+
PHASE_CHECK=$(node ".agent/mindforge/bin/mindforge-tools.cjs" roadmap get-phase "${PHASE}" --pick found)
|
|
49
|
+
if [ "$PHASE_CHECK" = "false" ]; then
|
|
50
|
+
echo "ERROR: Phase ${PHASE} not found in roadmap"
|
|
51
|
+
exit 1
|
|
52
|
+
fi
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
## Directory Lookup
|
|
56
|
+
|
|
57
|
+
Use `find-phase` for directory lookup:
|
|
58
|
+
|
|
59
|
+
```bash
|
|
60
|
+
PHASE_DIR=$(node ".agent/mindforge/bin/mindforge-tools.cjs" find-phase "${PHASE}" --raw)
|
|
61
|
+
```
|