fix: add Write tool to gsd-verifier and document verifier bug root cause (#545)

Bug fix: Add Write tool to gsd-verifier agent
This commit is contained in:
jecanore
2026-02-14 14:17:01 -06:00
committed by GitHub
parent b85247a3b8
commit 173ff7a0bb
3 changed files with 135 additions and 64 deletions

View File

@@ -6,6 +6,9 @@ Format follows [Keep a Changelog](https://keepachangelog.com/en/1.1.0/).
## [Unreleased]
### Fixed
- `gsd-verifier` agent now declares the Write tool, avoiding Bash heredoc fallbacks that could corrupt editor permission files when generating VERIFICATION.md reports.
## [1.18.0] - 2026-02-08
### Added
@@ -292,7 +295,7 @@ Format follows [Keep a Changelog](https://keepachangelog.com/en/1.1.0/).
### Fixed
- Installation on WSL2/non-TTY terminals now works correctly - detects non-interactive stdin and falls back to global install automatically
- Installation now verifies files were actually copied before showing success checkmarks
- Orphaned `gsd-notify.sh` hook from previous versions is now automatically removed during install (both file and settings.json registration)
- Orphaned `gsd-notify.sh` hook from previous versions is ahora automatically removed during install (both file and settings.json registration)
## [1.6.3] - 2025-01-17
@@ -327,21 +330,21 @@ Format follows [Keep a Changelog](https://keepachangelog.com/en/1.1.0/).
- **BREAKING:** `/gsd:research-project` — integrated into project/milestone flows
### Added
- `/gsd:verify-work` now includes next-step routing after verification completes
- `/gsd:verify-work` ahora includes next-step routing after verification completes
## [1.5.30] - 2026-01-17
### Fixed
- Output templates in `plan-phase`, `execute-phase`, and `audit-milestone` now render markdown correctly instead of showing literal backticks
- Next-step suggestions now consistently recommend `/gsd:discuss-phase` before `/gsd:plan-phase` across all routing paths
- Next-step suggestions ahora consistently recommend `/gsd:discuss-phase` before `/gsd:plan-phase` across all routing paths
## [1.5.29] - 2025-01-16
### Changed
- Discuss-phase now uses domain-aware questioning with deeper probing for gray areas
- Discuss-phase ahora uses domain-aware questioning with deeper probing for gray areas
### Fixed
- Windows hooks now work via Node.js conversion (statusline, update-check)
- Windows hooks ahora work via Node.js conversion (statusline, update-check)
- Phase input normalization at command entry points
- Removed blocking notification popups (gsd-notify) on all platforms
@@ -353,36 +356,36 @@ Format follows [Keep a Changelog](https://keepachangelog.com/en/1.1.0/).
- **BREAKING:** Removed `/gsd:execute-plan` command (use `/gsd:execute-phase` instead)
### Fixed
- Phase directory matching now handles both zero-padded (05-*) and unpadded (5-*) folder names
- Phase directory matching ahora handles both zero-padded (05-*) and unpadded (5-*) folder names
- Map-codebase agent output collection
## [1.5.27] - 2026-01-16
### Fixed
- Orchestrator corrections between executor completions are now committed (previously left uncommitted when orchestrator made small fixes between waves)
- Orchestrator corrections between executor completions are ahora committed (previously left uncommitted when orchestrator made small fixes between waves)
## [1.5.26] - 2026-01-16
### Fixed
- Revised plans now get committed after checker feedback (previously only initial plans were committed, leaving revisions uncommitted)
- Revised plans ahora get committed after checker feedback (previously sólo initial plans were committed, leaving revisions uncommitted)
## [1.5.25] - 2026-01-16
### Fixed
- Stop notification hook no longer shows stale project state (now uses session-scoped todos only)
- Researcher agent now reliably loads CONTEXT.md from discuss-phase
- Researcher agent ahora reliably loads CONTEXT.md from discuss-phase
## [1.5.24] - 2026-01-16
### Fixed
- Stop notification hook now correctly parses STATE.md fields (was always showing "Ready for input")
- Planner agent now reliably loads CONTEXT.md and RESEARCH.md files
- Stop notification hook ahora correctly parses STATE.md fields (was always showing "Ready for input")
- Planner agent ahora reliably loads CONTEXT.md and RESEARCH.md files
## [1.5.23] - 2025-01-16
### Added
- Cross-platform completion notification hook (Mac/Linux/Windows alerts when Claude stops)
- Phase researcher now loads CONTEXT.md from discuss-phase to focus research on user decisions
- Phase researcher ahora loads CONTEXT.md from discuss-phase to focus research on user decisions
### Fixed
- Consistent zero-padding for phase directories (01-name, not 1-name)
@@ -396,7 +399,7 @@ Format follows [Keep a Changelog](https://keepachangelog.com/en/1.1.0/).
- Statusline update indicator — shows `⬆ /gsd:update` when a new version is available
### Fixed
- Planner now updates ROADMAP.md placeholders after planning completes
- Planner ahora updates ROADMAP.md placeholders after planning completes
## [1.5.21] - 2026-01-16
@@ -405,12 +408,12 @@ Format follows [Keep a Changelog](https://keepachangelog.com/en/1.1.0/).
- Research synthesizer agent that consolidates parallel research into SUMMARY.md
### Changed
- **Unified `/gsd:new-project` flow** — Single command now handles questions → research → requirements → roadmap (~10 min)
- **Unified `/gsd:new-project` flow** — Single command ahora handles questions → research → requirements → roadmap (~10 min)
- Simplified README to reflect streamlined workflow: new-project → plan-phase → execute-phase
- Added optional `/gsd:discuss-phase` documentation for UI/UX/behavior decisions before planning
### Fixed
- verify-work now shows clear checkpoint box with action prompt ("Type 'pass' or describe what's wrong")
- verify-work ahora shows clear checkpoint box with action prompt ("Type 'pass' or describe what's wrong")
- Planner uses correct `{phase}-{plan}-PLAN.md` naming convention
- Planner no longer surfaces internal `user_setup` in output
- Research synthesizer commits all research files together (not individually)
@@ -420,7 +423,7 @@ Format follows [Keep a Changelog](https://keepachangelog.com/en/1.1.0/).
## [1.5.20] - 2026-01-16
### Fixed
- Research no longer skipped based on premature "Research: Unlikely" predictions made during roadmap creation. The `--skip-research` flag provides explicit control when needed.
- Research no longer skipped based on premature "Research: Unlikely" predictions made during roadmap creation. The `--skip-research` flag provides explicit control cuando needed.
### Removed
- `Research: Likely/Unlikely` fields from roadmap phase template
@@ -433,13 +436,13 @@ Format follows [Keep a Changelog](https://keepachangelog.com/en/1.1.0/).
- `/gsd:discuss-phase` redesigned with intelligent gray area analysis — analyzes phase to identify discussable areas (UI, UX, Behavior, etc.), presents multi-select for user control, deep-dives each area with focused questioning
- Explicit scope guardrail prevents scope creep during discussion — captures deferred ideas without acting on them
- CONTEXT.md template restructured for decisions (domain boundary, decisions by category, Claude's discretion, deferred ideas)
- Downstream awareness: discuss-phase now explicitly documents that CONTEXT.md feeds researcher and planner agents
- `/gsd:plan-phase` now integrates research — spawns `gsd-phase-researcher` before planning unless research exists or `--skip-research` flag used
- Downstream awareness: discuss-phase ahora explicitly documents that CONTEXT.md feeds researcher and planner agents
- `/gsd:plan-phase` ahora integrates research — spawns `gsd-phase-researcher` before planning unless research exists or `--skip-research` flag used
## [1.5.18] - 2026-01-16
### Added
- **Plan verification loop** — Plans are now verified before execution with a planner → checker → revise cycle
- **Plan verification loop** — Plans are ahora verified before execution with a planner → checker → revise cycle
- New `gsd-plan-checker` agent (744 lines) validates plans will achieve phase goals
- Six verification dimensions: requirement coverage, task completeness, dependency correctness, key links, scope sanity, must_haves derivation
- Max 3 revision iterations before user escalation
@@ -478,10 +481,10 @@ Format follows [Keep a Changelog](https://keepachangelog.com/en/1.1.0/).
- Research subagent prompt template for context-only spawning
### Changed
- `/gsd:research-phase` refactored to thin orchestrator — now injects rich context (key insight framing, downstream consumer info, quality gates) to gsd-researcher agent
- `/gsd:research-phase` refactored to thin orchestrator — ahora injects rich context (key insight framing, downstream consumer info, quality gates) to gsd-researcher agent
- `/gsd:research-project` refactored to spawn 4 parallel gsd-researcher agents with milestone-aware context (greenfield vs v1.1+) and roadmap implications guidance
- `/gsd:debug` refactored to thin orchestrator (149 lines) — spawns gsd-debugger agent with full debugging expertise
- `/gsd:new-milestone` now explicitly references MILESTONE-CONTEXT.md
- `/gsd:new-milestone` ahora explicitly references MILESTONE-CONTEXT.md
### Deprecated
- `workflows/research-phase.md` — consolidated into gsd-researcher agent
@@ -494,36 +497,36 @@ Format follows [Keep a Changelog](https://keepachangelog.com/en/1.1.0/).
## [1.5.15] - 2025-01-15
### Fixed
- **Agents now install correctly** — The `agents/` folder (gsd-executor, gsd-verifier, gsd-integration-checker, gsd-milestone-auditor) was missing from npm package, now included
- **Agents ahora install correctly** — The `agents/` folder (gsd-executor, gsd-verifier, gsd-integration-checker, gsd-milestone-auditor) was missing from npm package, now included
### Changed
- Consolidated `/gsd:plan-fix` into `/gsd:plan-phase --gaps` for simpler workflow
- UAT file writes now batched instead of per-response for better performance
- UAT file writes ahora batched instead of per-response for better performance
## [1.5.14] - 2025-01-15
### Fixed
- Plan-phase now always routes to `/gsd:execute-phase` after planning, even for single-plan phases
- Plan-phase ahora always routes to `/gsd:execute-phase` after planning, even for single-plan phases
## [1.5.13] - 2026-01-15
### Fixed
- `/gsd:new-milestone` now presents research and requirements paths as equal options, matching `/gsd:new-project` format
- `/gsd:new-milestone` ahora presents research and requirements paths as equal options, matching `/gsd:new-project` format
## [1.5.12] - 2025-01-15
### Changed
- **Milestone cycle reworked for proper requirements flow:**
- `complete-milestone` now archives AND deletes ROADMAP.md and REQUIREMENTS.md (fresh for next milestone)
- `new-milestone` is now a "brownfield new-project" — updates PROJECT.md with new goals, routes to define-requirements
- `discuss-milestone` is now required before `new-milestone` (creates context file)
- `complete-milestone` ahora archives AND deletes ROADMAP.md and REQUIREMENTS.md (fresh for next milestone)
- `new-milestone` is ahora a "brownfield new-project" — updates PROJECT.md with new goals, routes to define-requirements
- `discuss-milestone` is ahora required before `new-milestone` (creates context file)
- `research-project` is milestone-aware — focuses on new features, ignores already-validated requirements
- `create-roadmap` continues phase numbering from previous milestone
- Flow: complete → discuss → new-milestone → research → requirements → roadmap
### Fixed
- `MILESTONE-AUDIT.md` now versioned as `v{version}-MILESTONE-AUDIT.md` and archived on completion
- `progress` now correctly routes to `/gsd:discuss-milestone` when between milestones (Route F)
- `MILESTONE-AUDIT.md` ahora versioned as `v{version}-MILESTONE-AUDIT.md` and archived on completion
- `progress` ahora correctly routes to `/gsd:discuss-milestone` when between milestones (Route F)
## [1.5.11] - 2025-01-15
@@ -533,10 +536,10 @@ Format follows [Keep a Changelog](https://keepachangelog.com/en/1.1.0/).
## [1.5.10] - 2025-01-15
### Changed
- Milestone audit now reads existing phase VERIFICATION.md files instead of re-verifying each phase, aggregates tech debt and deferred gaps, adds `tech_debt` status for non-blocking accumulated debt
- Milestone audit ahora reads existing phase VERIFICATION.md files instead of re-verifying each phase, aggregates tech debt and deferred gaps, adds `tech_debt` status for non-blocking accumulated debt
### Fixed
- VERIFICATION.md now included in phase completion commit alongside ROADMAP.md, STATE.md, and REQUIREMENTS.md
- VERIFICATION.md ahora included in phase completion commit alongside ROADMAP.md, STATE.md, and REQUIREMENTS.md
## [1.5.9] - 2025-01-15
@@ -546,7 +549,7 @@ Format follows [Keep a Changelog](https://keepachangelog.com/en/1.1.0/).
### Changed
- Checkpoint display format improved with box headers and unmissable "→ YOUR ACTION:" prompts
- Subagent colors updated (executor: yellow, integration-checker: blue)
- Execute-phase now recommends `/gsd:audit-milestone` when milestone completes
- Execute-phase ahora recommends `/gsd:audit-milestone` when milestone completes
### Fixed
- Research-phase no longer gatekeeps by domain type
@@ -571,11 +574,11 @@ Format follows [Keep a Changelog](https://keepachangelog.com/en/1.1.0/).
- Goal-backward planning reference: Documentation for deriving must-haves from goals
### Changed
- execute-plan and execute-phase now spawn `gsd-executor` subagent instead of using inline workflow
- execute-plan and execute-phase ahora spawn `gsd-executor` subagent instead of using inline workflow
- Roadmap and planning workflows enhanced with goal-backward analysis
### Removed
- Obsolete templates (`checkpoint-resume.md`, `subagent-task-prompt.md`) — logic now lives in subagents
- Obsolete templates (`checkpoint-resume.md`, `subagent-task-prompt.md`) — logic ahora lives in subagents
### Fixed
- Updated remaining `general-purpose` subagent references to use `gsd-executor`
@@ -587,25 +590,25 @@ Format follows [Keep a Changelog](https://keepachangelog.com/en/1.1.0/).
- README: Research recommended for quality; skip only for speed
### Fixed
- execute-phase: Phase metadata (timing, wave info) now bundled into single commit instead of separate commits
- execute-phase: Phase metadata (timing, wave info) ahora bundled into single commit instead of separate commits
## [1.5.5] - 2025-01-15
### Changed
- README now documents the `research-project` → `define-requirements` flow (optional but recommended before `create-roadmap`)
- README ahora documents the `research-project` → `define-requirements` flow (optional but recommended before `create-roadmap`)
- Commands section reorganized into 7 grouped tables (Setup, Execution, Verification, Milestones, Phase Management, Session, Utilities) for easier scanning
- Context Engineering table now includes `research/` and `REQUIREMENTS.md`
- Context Engineering table ahora includes `research/` and `REQUIREMENTS.md`
## [1.5.4] - 2025-01-15
### Changed
- Research phase now loads REQUIREMENTS.md to focus research on concrete requirements (e.g., "email verification") rather than just high-level roadmap descriptions
- Research phase ahora loads REQUIREMENTS.md to focus research on concrete requirements (e.g., "email verification") rather than just high-level roadmap descriptions
## [1.5.3] - 2025-01-15
### Changed
- **execute-phase narration**: Orchestrator now describes what each wave builds before spawning agents, and summarizes what was built after completion. No more staring at opaque status updates.
- **new-project flow**: Now offers two paths — research first (recommended) or define requirements directly (fast path for familiar domains)
- **execute-phase narration**: Orchestrator ahora describes what each wave builds before spawning agents, and summarizes what was built after completion. No more staring at opaque status updates.
- **new-project flow**: Ahora offers two paths — research first (recommended) or define requirements directly (fast path for familiar domains)
- **define-requirements**: Works without prior research. Gathers requirements through conversation when FEATURES.md doesn't exist.
### Removed
@@ -616,17 +619,17 @@ Format follows [Keep a Changelog](https://keepachangelog.com/en/1.1.0/).
## [1.5.2] - 2026-01-15
### Added
- Requirements traceability: roadmap phases now include `Requirements:` field listing which REQ-IDs they cover
- Requirements traceability: roadmap phases ahora include `Requirements:` field listing which REQ-IDs they cover
- plan-phase loads REQUIREMENTS.md and shows phase-specific requirements before planning
- Requirements automatically marked Complete when phase finishes
- Requirements automatically marked Complete cuando phase finishes
### Changed
- Workflow preferences (mode, depth, parallelization) now asked in single prompt instead of 3 separate questions
- Workflow preferences (mode, depth, parallelization) ahora asked in single prompt instead of 3 separate questions
- define-requirements shows full requirements list inline before commit (not just counts)
- Research-project and workflow aligned to both point to define-requirements as next step
### Fixed
- Requirements status now updated by orchestrator (commands) instead of subagent workflow, which couldn't determine phase completion
- Requirements status ahora updated by orchestrator (commands) instead of subagent workflow, which couldn't determine phase completion
## [1.5.1] - 2026-01-14
@@ -639,11 +642,11 @@ Format follows [Keep a Changelog](https://keepachangelog.com/en/1.1.0/).
### Added
- New `/gsd:research-project` command for pre-roadmap ecosystem research — spawns parallel agents to investigate stack, features, architecture, and pitfalls before you commit to a roadmap
- New `/gsd:define-requirements` command for scoping v1 requirements from research findings — transforms "what exists in this domain" into "what we're building"
- Requirements traceability: phases now map to specific requirement IDs with 100% coverage validation
- Requirements traceability: phases ahora map to specific requirement IDs with 100% coverage validation
### Changed
- **BREAKING:** New project flow is now: `new-project → research-project → define-requirements → create-roadmap`
- Roadmap creation now requires REQUIREMENTS.md and validates all v1 requirements are mapped to phases
- **BREAKING:** New project flow is ahora: `new-project → research-project → define-requirements → create-roadmap`
- Roadmap creation ahora requires REQUIREMENTS.md and validates all v1 requirements are mapped to phases
- Simplified questioning in new-project to four essentials (vision, core priority, boundaries, constraints)
## [1.4.29] - 2026-01-14
@@ -656,10 +659,7 @@ Format follows [Keep a Changelog](https://keepachangelog.com/en/1.1.0/).
### Fixed
- Restored comprehensive checkpoint documentation with full examples for verification, decisions, and auth gates
- Fixed execute-plan command to use fresh continuation agents instead of broken resume pattern
- Rich checkpoint presentation formats now documented for all three checkpoint types
### Changed
- Slimmed execute-phase command to properly delegate checkpoint handling to workflow
- Rich checkpoint presentation formats ahora documented for all three checkpoint types
## [1.4.27] - 2025-01-14
@@ -676,7 +676,7 @@ Format follows [Keep a Changelog](https://keepachangelog.com/en/1.1.0/).
### Added
- New `/gsd:whats-new` command shows changes since your installed version
- VERSION file written during installation for version tracking
- CHANGELOG.md now included in package installation
- CHANGELOG.md ahora included in package installation
## [1.4.24] - 2026-01-14
@@ -708,7 +708,7 @@ Format follows [Keep a Changelog](https://keepachangelog.com/en/1.1.0/).
### Fixed
- Standardized debug file naming convention
- Debug workflow now invokes execute-plan correctly
- Debug workflow ahora invokes execute-plan correctly
## [1.4.19] - 2026-01-14
@@ -739,7 +739,7 @@ Format follows [Keep a Changelog](https://keepachangelog.com/en/1.1.0/).
## [1.4.14] - 2026-01-13
### Changed
- YOLO mode is now recommended default in new-project
- YOLO mode is ahora recommended default in new-project
## [1.4.13] - 2026-01-13
@@ -750,12 +750,12 @@ Format follows [Keep a Changelog](https://keepachangelog.com/en/1.1.0/).
## [1.4.12] - 2026-01-13
### Changed
- execute-phase is now recommended as primary execution command
- execute-phase is ahora recommended as primary execution command
## [1.4.11] - 2026-01-13
### Fixed
- Checkpoints now use fresh continuation agents instead of resume
- Checkpoints ahora use fresh continuation agents instead of resume
## [1.4.10] - 2026-01-13
@@ -825,7 +825,7 @@ Format follows [Keep a Changelog](https://keepachangelog.com/en/1.1.0/).
### Changed
- Renamed `execute-phase.md` workflow to `execute-plan.md` for clarity
- Plan frontmatter now includes `wave`, `depends_on`, `files_modified`, `autonomous`
- Plan frontmatter ahora includes `wave`, `depends_on`, `files_modified`, `autonomous`
## [1.4.0] - 2026-01-12
@@ -836,7 +836,7 @@ Format follows [Keep a Changelog](https://keepachangelog.com/en/1.1.0/).
- Agent history schema v1.2 with parallel execution support
### Changed
- Plans can now specify wave numbers and dependencies
- Plans ahora puede specify wave numbers and dependencies
- execute-phase orchestrates multiple subagents in waves
## [1.3.34] - 2026-01-11
@@ -898,7 +898,7 @@ Format follows [Keep a Changelog](https://keepachangelog.com/en/1.1.0/).
- Claude Code marketplace plugin support
### Fixed
- Phase artifacts now committed when created
- Phase artifacts ahora committed when created
## [1.3.25] - 2026-01-06
@@ -1042,7 +1042,7 @@ Format follows [Keep a Changelog](https://keepachangelog.com/en/1.1.0/).
### Fixed
- Permission errors for non-DSP users (removed shell context)
- First question is now freeform, not AskUserQuestion
- First question is ahora freeform, not AskUserQuestion
## [1.2.13] - 2025-12-17
@@ -1117,7 +1117,7 @@ Format follows [Keep a Changelog](https://keepachangelog.com/en/1.1.0/).
## [1.1.2] - 2025-12-15
### Fixed
- YOLO mode now skips confirmation gates in plan-phase
- YOLO mode ahora skips confirmation gates in plan-phase
## [1.1.1] - 2025-12-15

View File

@@ -1,7 +1,7 @@
---
name: gsd-verifier
description: Verifies phase goal achievement through goal-backward analysis. Checks codebase delivers what phase promised, not just that tasks completed. Creates VERIFICATION.md report.
tools: Read, Bash, Grep, Glob
tools: Read, Write, Bash, Grep, Glob
color: green
---
@@ -254,7 +254,7 @@ Run anti-pattern detection on each file:
grep -n -E "TODO|FIXME|XXX|HACK|PLACEHOLDER" "$file" 2>/dev/null
grep -n -E "placeholder|coming soon|will be here" "$file" -i 2>/dev/null
# Empty implementations
grep -n -E "return null|return \{\}|return \[\]|=> \{\}" "$file" 2>/dev/null
grep -n -E "return null|return \{}|return \[]|=> \{}" "$file" 2>/dev/null
# Console.log only implementations
grep -n -B 2 -A 2 "console\.log" "$file" 2>/dev/null | grep -E "^\s*(const|function|=>)"
```

View File

@@ -0,0 +1,71 @@
Research: gsd-verifier Missing Write Tool — Root Cause Analysis
Finding: Day-One Bug, NOT a v1.17.0 → v1.18.0 Regression
The Write tool was never present in gsd-verifier.md. The diff between v1.17.0 and v1.18.0 shows zero changes to this file. Both versions have identical frontmatter:
tools: Read, Bash, Grep, Glob # Write missing since initial creation
Timeline
Date: Jan 15, 2026
Commit: f3f6707
What Happened: gsd-verifier.md created — tools: Read, Bash, Grep, Glob, model: sonnet. Write was never included.
────────────────────────────────────────
Date: Jan 15, 2026
Commit: 8e6ad96→a7986bc→f9edfcf
What Happened: Formatting, re-verification loop, color changes. Tools line unchanged.
────────────────────────────────────────
Date: Jan 30, 2026
Commit: 5660b6f
What Happened: Gemini CLI compatibility fix. Tools line unchanged.
────────────────────────────────────────
Date: Feb 7-8, 2026
Commit: d44c7dc→1b317de→6a2d1f1
What Happened: gsd-tools integration refactor. model: sonnet removed from frontmatter, but tools line still unchanged.
The bug has existed through every release since the verifier was introduced.
Contradiction in the Agent Definition
The frontmatter says tools: Read, Bash, Grep, Glob (no Write), but:
- The description says: "Creates VERIFICATION.md report"
- The output section instructs: "Create .planning/phases/{phase_dir}/{phase}-VERIFICATION.md"
Without Write, the agent falls back to Bash with heredoc (cat > file << 'EOF'), which works functionally but causes the permission corruption we saw.
Comparison with Other Agents (v1.18.0)
┌─────────────────────────┬────────────────────────────────────────────────┬──────────────────────────────┬──────────────┐
│ Agent │ Tools │ Writes Files? │ Has Write? │
├─────────────────────────┼────────────────────────────────────────────────┼──────────────────────────────┼──────────────┤
│ gsd-executor │ Read, Write, Edit, Bash, Grep, Glob │ Yes (code, summaries) │ Yes │
├─────────────────────────┼────────────────────────────────────────────────┼──────────────────────────────┼──────────────┤
│ gsd-planner │ Read, Write, Bash, Glob, Grep, WebFetch │ Yes (PLAN.md) │ Yes │
├─────────────────────────┼────────────────────────────────────────────────┼──────────────────────────────┼──────────────┤
│ gsd-roadmapper │ Read, Write, Bash, Glob, Grep │ Yes (ROADMAP.md) │ Yes │
├─────────────────────────┼────────────────────────────────────────────────┼──────────────────────────────┼──────────────┤
│ gsd-debugger │ Read, Write, Edit, Bash, Grep, Glob, WebSearch │ Yes (debug reports) │ Yes │
├─────────────────────────┼────────────────────────────────────────────────┼──────────────────────────────┼──────────────┤
│ gsd-codebase-mapper │ Read, Bash, Grep, Glob, Write │ Yes (analysis docs) │ Yes │
├─────────────────────────┼────────────────────────────────────────────────┼──────────────────────────────┼──────────────┤
│ gsd-verifier │ Read, Bash, Grep, Glob │ Yes (VERIFICATION.md) │ NO │
├─────────────────────────┼────────────────────────────────────────────────┼──────────────────────────────┼──────────────┤
│ gsd-plan-checker │ Read, Bash, Glob, Grep │ No (returns to orchestrator) │ No (correct) │
├─────────────────────────┼────────────────────────────────────────────────┼──────────────────────────────┼──────────────┤
│ gsd-integration-checker │ Read, Bash, Grep, Glob │ Borderline (returns report) │ No │
└─────────────────────────┴────────────────────────────────────────────────┴──────────────────────────────┴──────────────┘
Every agent that creates files has Write — except gsd-verifier. This is clearly an oversight.
Recommended Action
File an issue at https://github.com/gsd-build/get-shit-done with:
Title: gsd-verifier agent missing Write tool — falls back to Bash heredoc, corrupts settings.local.json
Body:
- gsd-verifier.md frontmatter has tools: Read, Bash, Grep, Glob but its instructions tell it to create VERIFICATION.md files
- Without Write, it uses Bash(cat > path << 'EOF' ... EOF) which, when user approves, saves the entire 200+ line markdown report as a permission entry in settings.local.json
- This corrupts settings.local.json and causes a "Settings Error" on every Claude Code startup
- Every other file-creating agent (executor, planner, roadmapper, debugger, codebase-mapper) includes Write
- Fix: change line 4 to tools: Read, Write, Bash, Grep, Glob
- Bug exists since initial creation (commit f3f6707, Jan 15, 2026), not a regression
Our local patch (~/.claude/agents/gsd-verifier.md line 4) adds Write but will be overwritten by /gsd:update.