From 1a1acd5283072a077b4ef03b1051a11c6bde9243 Mon Sep 17 00:00:00 2001 From: Tibsfox Date: Sat, 28 Feb 2026 00:35:47 -0800 Subject: [PATCH] fix(agents): extend anti-heredoc instruction to all file-writing agents Add 'never use heredoc' instruction to 6 agents that were missing it: gsd-codebase-mapper, gsd-debugger, gsd-phase-researcher, gsd-project-researcher, gsd-research-synthesizer, gsd-roadmapper. All 9 file-writing agents now consistently prevent settings.local.json corruption from heredoc permission entries (GSD #526). Read-only agents (plan-checker, integration-checker) excluded as they cannot write files. Co-Authored-By: Claude Opus 4.6 --- agents/gsd-codebase-mapper.md | 2 +- agents/gsd-debugger.md | 2 ++ agents/gsd-phase-researcher.md | 2 +- agents/gsd-project-researcher.md | 2 ++ agents/gsd-research-synthesizer.md | 2 ++ agents/gsd-roadmapper.md | 4 +++- 6 files changed, 11 insertions(+), 3 deletions(-) diff --git a/agents/gsd-codebase-mapper.md b/agents/gsd-codebase-mapper.md index 9762f1577..7e5fcb5e3 100644 --- a/agents/gsd-codebase-mapper.md +++ b/agents/gsd-codebase-mapper.md @@ -148,7 +148,7 @@ Write document(s) to `.planning/codebase/` using the templates below. 3. If something is not found, use "Not detected" or "Not applicable" 4. Always include file paths with backticks -Use the Write tool to create each document. +**ALWAYS use the Write tool to create files** — never use `Bash(cat << 'EOF')` or heredoc commands for file creation. diff --git a/agents/gsd-debugger.md b/agents/gsd-debugger.md index 84fd893c1..775437813 100644 --- a/agents/gsd-debugger.md +++ b/agents/gsd-debugger.md @@ -849,6 +849,8 @@ ls .planning/debug/*.md 2>/dev/null | grep -v resolved **Create debug file IMMEDIATELY.** +**ALWAYS use the Write tool to create files** — never use `Bash(cat << 'EOF')` or heredoc commands for file creation. + 1. Generate slug from user input (lowercase, hyphens, max 30 chars) 2. `mkdir -p .planning/debug` 3. Create file with initial state: diff --git a/agents/gsd-phase-researcher.md b/agents/gsd-phase-researcher.md index 981489dfb..ca35f00dc 100644 --- a/agents/gsd-phase-researcher.md +++ b/agents/gsd-phase-researcher.md @@ -421,7 +421,7 @@ List missing test files, framework config, or shared fixtures needed before impl ## Step 6: Write RESEARCH.md -**ALWAYS use Write tool to persist to disk** — mandatory regardless of `commit_docs` setting. +**ALWAYS use the Write tool to create files** — never use `Bash(cat << 'EOF')` or heredoc commands for file creation. Mandatory regardless of `commit_docs` setting. **CRITICAL: If CONTEXT.md exists, FIRST content section MUST be ``:** diff --git a/agents/gsd-project-researcher.md b/agents/gsd-project-researcher.md index 4bd9fe71b..fd2b6f070 100644 --- a/agents/gsd-project-researcher.md +++ b/agents/gsd-project-researcher.md @@ -518,6 +518,8 @@ Run pre-submission checklist (see verification_protocol). ## Step 5: Write Output Files +**ALWAYS use the Write tool to create files** — never use `Bash(cat << 'EOF')` or heredoc commands for file creation. + In `.planning/research/`: 1. **SUMMARY.md** — Always 2. **STACK.md** — Always diff --git a/agents/gsd-research-synthesizer.md b/agents/gsd-research-synthesizer.md index 3bf216dc0..aba7f08bc 100644 --- a/agents/gsd-research-synthesizer.md +++ b/agents/gsd-research-synthesizer.md @@ -122,6 +122,8 @@ Identify gaps that couldn't be resolved and need attention during planning. ## Step 6: Write SUMMARY.md +**ALWAYS use the Write tool to create files** — never use `Bash(cat << 'EOF')` or heredoc commands for file creation. + Use template: ~/.claude/get-shit-done/templates/research-project/SUMMARY.md Write to `.planning/research/SUMMARY.md` diff --git a/agents/gsd-roadmapper.md b/agents/gsd-roadmapper.md index 97b5cd22f..fdbbe809f 100644 --- a/agents/gsd-roadmapper.md +++ b/agents/gsd-roadmapper.md @@ -449,7 +449,9 @@ If gaps found, include in draft for user decision. ## Step 7: Write Files Immediately -**Write files first, then return.** This ensures artifacts persist even if context is lost. +**ALWAYS use the Write tool to create files** — never use `Bash(cat << 'EOF')` or heredoc commands for file creation. + +Write files first, then return. This ensures artifacts persist even if context is lost. 1. **Write ROADMAP.md** using output format