Local-first control plane where Claude Code plans, a human approves, and Codex builds in verified Git worktrees.
PlanForge defines 4 tools with complete Zod schemas and descriptions. Naming follows verb_noun convention (propose_plan, read_repo_file, handoff_to_codex, sign_off). All tools have descriptions (50-80 chars) and input schemas with typed parameters. However, descriptions are minimal and lack context about when/why to use each tool. Output schemas are partially documented (handoff_to_codex has explicit output schema; others inferred). Error handling exists but lacks recovery guidance. No tool annotations (readOnlyHint/destructiveHint). Parameter descriptions are present but generic ('Non-empty string' repeated). Missing: dependency hints, prerequisites, and downstream chaining guidance.
Run Codex on the approved handoff and return independent verifier results.
Propose a plan and block until the human approves or requests changes.
Read a git-tracked file from the target repo to inform planning.
Record architect sign-off after all verifier results pass.
Descriptions lack context and selection guidance. All descriptions are 50-80 chars and state WHAT but not WHEN or WHY. E.g., 'Propose a plan and block until the human approves or requests changes' omits prerequisites (must have a runId from prior context) and downstream dependencies (output feeds into handoff_to_codex).
Parameter descriptions are generic boilerplate ('Non-empty string identifier', 'Non-empty string path'). They do not explain format, constraints, or valid ranges. E.g., 'path' parameter lacks guidance on whether it's relative to repo root, must exist, or supports glob patterns.
No tool annotations (readOnlyHint, destructiveHint, idempotentHint). Risk field in spec shows read_repo_file and read_repo_file are READ_ONLY, but handoff_to_codex and sign_off are WRITE. These should be declared via tool annotations for agent safety.
Inferred effective spec: 2025-06-18+.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 60 | 2025-06-18+ | v2 |
Output schemas incomplete. handoff_to_codex has explicit output schema (handoffToCodexOutputSchema), but propose_plan, read_repo_file, and sign_off lack documented return types. LLMs cannot plan downstream calls without knowing what fields to expect.
Error handling lacks recovery guidance. PlanForgeError thrown for 'E_RUN_NOT_FOUND' and 'E_LOOP_CONFIG_MISSING', but error messages do not suggest next steps (e.g., 'Run not found. Ensure runId matches an active conversation.').