- Add severity column (blocking/advisory) to Critical Anti-Patterns table
in .continue-here.md template in pause-work.md
- Document that blocking anti-patterns trigger a mandatory understanding
check when discuss-phase or execute-phase resumes work
- Add check_blocking_antipatterns step to discuss-phase.md: parses
.continue-here.md for blocking rows and requires three-question
understanding demonstration before proceeding
- Add identical enforcement step to execute-phase.md
- Tests: tests/anti-pattern-enforcement.test.cjs (12 assertions, all pass)
Closes#1491
* test(#1488): add failing tests for methodology artifact type
- Test artifact-types.md exists with methodology type documented
- Test shape, lifecycle, location fields are present
- Test discuss-phase-assumptions.md consumes METHODOLOGY.md
- Test pause-work.md Required Reading includes METHODOLOGY.md
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
* feat(#1488): add methodology artifact type with consumption mechanisms
- Create get-shit-done/references/artifact-types.md documenting all GSD
artifact types including the new methodology type
- Methodology artifact: standing reference of named interpretive lenses,
located at .planning/METHODOLOGY.md, lifecycle Created → Active → Superseded
- Add load_methodology step to discuss-phase-assumptions.md so active lenses
are read before assumption analysis and applied to surfaced findings
- Add METHODOLOGY.md to pause-work.md Required Reading template so resuming
agents inherit the project's analytical orientation
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
---------
Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
* feat(planner): add reachability_check step to prevent unreachable code
Closes#1495
* fix: trim gsd-planner.md below 50000-char limit after rebase
The reachability_check addition pushed the file to 50,275 chars when
merged with the assign_waves additions from #1600. Condense both sections
while preserving all logic; file is now 49,859 chars.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
* fix(security): normalize CRLF before prompt-stuffing length check
On Windows, git checks out files with CRLF line endings. JavaScript's
String.length counts \r characters, so a 49,859-byte file measures as
51,126 chars on Windows — falsely tripping the 50,000-char security
scanner. Normalize CRLF → LF before measuring in security.cjs and in
the reachability-check test.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
* fix: trim gsd-planner.md to stay under 50000-char limit after merge with main
After rebasing onto main (which added mcp_tool_usage block), combined content
reached 50031 chars. Remove suggested log format from assign_waves rule to
bring file to 49972 chars, well under the 50000-char security scanner limit.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
---------
Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
* fix(agents): explicitly instruct agents to use available MCP tools
GSD executor and planner agents were not mentioning available MCP servers
in their task instructions, causing subagents to skip Context7 and other
configured MCP tools even when available.
Closes#1388
* fix(tests): make copilot executor tool assertion dynamic
Hardcoded tools: ['read', 'edit', 'execute', 'search'] assertion broke
when mcp__context7__* was added to gsd-executor.md frontmatter. Replace
with per-tool presence checks so adding new tools never breaks the test.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
---------
Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
Adds a .clinerules file at the repo root so Cline (VS Code AI extension)
understands GSD's architecture, coding standards, and workflow constraints.
Closes#1509
When Playwright-MCP is available in the session, GSD UI verification
steps can be automated via screenshot comparison instead of manual
checkbox review. Falls back to manual flow when Playwright is not
configured.
Closes#1420
Analyzes ROADMAP.md phases for file overlap and semantic dependencies,
then suggests Depends on entries before running /gsd:manager. Complements
the files_modified overlap detection added in the executor (PR #1600).
Closes#1530
* fix: correct STATE.md progress counter fields during plan/phase completion (#1589)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
* ci: re-run CI with Windows pointer lifecycle fix in main
* fix: orchestrator owns STATE.md/ROADMAP.md writes in parallel worktree mode (#1571)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
* fix: detect files_modified overlap and enforce wave ordering for dependent plans (#1587)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
* fix: trim gsd-planner.md below 50000-char prompt-injection limit
The assign_waves section added in this branch pushed agents/gsd-planner.md
to 50271 chars, triggering the security scanner's prompt-stuffing check on
all CI platforms. Condense prose while preserving all logic and validation
rules; file is now 49754 chars.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
---------
Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
* fix: correct STATE.md progress counter fields during plan/phase completion (#1589)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
* ci: re-run CI with Windows pointer lifecycle fix in main
---------
Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
Copilot installs agent files as gsd-*.agent.md (not gsd-*.md), so
checkAgentsInstalled() always returned agents_installed=false for Copilot.
- checkAgentsInstalled() now recognises both .md and .agent.md formats
- getAgentsDir() respects GSD_AGENTS_DIR env override for testability
Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
* fix: clear phases directory when creating new milestone (#1588)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
* ci: re-run CI with Windows pointer lifecycle fix in main
---------
Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
Commit 512a80b changed new-project.md to use \$INSTRUCTION_FILE
(AGENTS.md for Codex, CLAUDE.md for all other runtimes) instead of
hardcoding CLAUDE.md. Two test assertions still checked for the
hardcoded string and failed on CI.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- fix(#1572): phase complete now marks bold-wrapped plan checkboxes in ROADMAP.md
(`- [ ] **01-01**` format) by allowing optional `**` around plan IDs in the
planCheckboxPattern regex in both phase.cjs and roadmap.cjs
- fix(#1569): manager init no longer recommends 999.x (BACKLOG) phases as next
actions; add guard in cmdManagerInit that skips phases matching /^999(?:\.|$)/
- fix(#1568): add regression tests confirming init execute-phase respects
model_overrides for executor_model, including when resolve_model_ids is 'omit'
- fix(#1533): reject session_id values containing path traversal sequences
(../, /, \) in gsd-context-monitor and gsd-statusline before constructing
/tmp file paths; add security tests covering both hooks
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Keep Kilo skill path rewrites consistent and avoid rewriting valid string-valued OpenCode permission configs while preserving resolved config-dir handling.
Address review feedback: sanitize manager.flags values to allow only
CLI-safe tokens (--flag patterns and alphanumeric values). Invalid
tokens are dropped with a stderr warning. Prevents prompt injection
via compromised config.json.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Adds `manager.flags.{discuss,plan,execute}` config keys so users can
configure flags that /gsd:manager passes to each step when dispatching.
For example, `manager.flags.discuss: "--auto --analyze"` makes every
discuss dispatched from the manager include those flags.
Closes#1400
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Adds a new `audit_test_quality` step between `scan_antipatterns` and
`identify_human_verification` that catches test-level deceptions:
- Disabled tests (it.skip/xit/test.todo) covering phase requirements
- Circular tests (system generating its own expected values)
- Weak assertions (existence-only when value-level proof needed)
- Expected value provenance tracking for parity/migration phases
Any blocker from this audit forces `gaps_found` status, preventing
phases from being marked complete with inadequate test evidence.
Fixes#1457
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Bring the latest main branch updates into feat/kilo-runtime-support while preserving KILO_CONFIG resolution, Kilo agent permission conversion, and relative .claude path rewrites.
Since #1540 migrated Claude Code to skills/ format, the installer may
not create commands/gsd/ anymore. The test needs to ensure the
directory exists before writing the user file into it.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
E2E tests verifying USER-PROFILE.md and dev-preferences.md survive
uninstall. Covers: profile preservation, preferences preservation,
engine files still removed, clean uninstall without user files.
Addresses review feedback requesting automated coverage for the
preserve-and-restore pattern in the rmSync uninstall path.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Honor KILO_CONFIG across installer and workflow resolution, preserve Claude agent tool intent as explicit Kilo permissions, and rewrite relative .claude references during Kilo conversion.
Wire withPlanningLock into all ROADMAP.md write paths (phase add/insert/complete/remove, roadmap update-plan-progress) to prevent concurrent corruption when parallel agents modify planning files.
Extract acquireStateLock/releaseStateLock from writeStateMd and add readModifyWriteStateMd helper that holds the lock across the entire read-modify-write cycle, preventing lost updates.
Replace O(n^2) normalizeMd fence detection with single-pass O(n) pre-computed fence state array.
Warn on must_haves parse failure and stateReplaceFieldWithFallback field miss.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Port 3 community hooks from gsd-skill-creator, gated behind hooks.community config flag. All hooks are registered on install but are no-ops unless the project config has hooks: { community: true }.
gsd-session-state.sh (SessionStart): outputs STATE.md head for orientation. gsd-validate-commit.sh (PreToolUse/Bash): blocks non-Conventional-Commits messages. gsd-phase-boundary.sh (PostToolUse/Write|Edit): warns when .planning/ files are modified.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Add W011: detect when STATE.md says current phase is N but ROADMAP.md shows it as [x] complete (can happen after crash mid-phase-complete). Add W012-W015: validate branching_strategy against known values, context_window as positive integer, phase_branch_template has {phase} placeholder, milestone_branch_template has {milestone} placeholder.
Add stateReplaceFieldWithFallback diagnostic: warn when neither primary nor fallback field name matches in STATE.md (surfaces template drift from external edits).
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Read context_window config (default 200000) in execute-phase and plan-phase workflows. When >= 500000 (1M-class models), subagent prompts include richer context: executor agents receive CONTEXT.md, RESEARCH.md, and prior wave SUMMARYs; verifier agents receive all PLANs, SUMMARYs, and REQUIREMENTS.md; planner receives prior phase CONTEXT.md for cross-phase decision consistency.
At 200k (default), behavior is unchanged.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Reject project/workstream names containing path separators or ..
components. Covers both GSD_PROJECT and GSD_WORKSTREAM. Adds 9 tests
for the full resolution matrix and traversal rejection cases.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Add check-commit command to gsd-tools that acts as a pre-commit guard.
When commit_docs is false, rejects commits that stage .planning/ files
with an actionable error message including the unstage command.
Recreated cleanly on current main — previous version carried stale
shared fixes that are now upstream.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
The autonomous workflow previously had two extremes: full auto-answer
mode (--auto discuss, lean context but no user input) or manager mode
(interactive but bloated context from accumulating everything inline).
The --interactive flag bridges this gap:
- Discuss runs inline via gsd:discuss-phase (asks questions, waits for
user answers — preserving all design decisions)
- Plan and execute dispatch as background agents (fresh context per
phase — no accumulation in the main session)
- Pipeline parallelism: discuss Phase N+1 while Phase N builds in the
background
This keeps the main context lean (only discuss conversations accumulate)
while preserving user input on all decisions. Particularly helpful for
users hitting context limits with /gsd:manager on multi-phase milestones.
Usage:
/gsd:autonomous --interactive
/gsd:autonomous --interactive --from 3
/gsd:autonomous --interactive --only 5
Also adds --only N flag parsing to the upstream workflow (previously only
in PR #1444's branch).
Closes#1413
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Add tests covering the three manual verification scenarios for the
context_window and workflow.subagent_timeout config features:
- init execute-phase output includes context_window from config (both
custom 1M value and 200k default)
- config-get context_window returns the configured value (and errors
when absent)
- config-set workflow.subagent_timeout accepts numeric values with
proper string-to-number coercion and round-trips through config-get
All 1517 tests pass.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>