From 1a230e69aa264cb428f989132d2edcba27c7bc17 Mon Sep 17 00:00:00 2001 From: Tom Boucher Date: Sun, 26 Apr 2026 13:37:45 -0400 Subject: [PATCH] perf: convert discuss-phase SKILL.md @file imports to lazy per-branch reads (#2752) * perf: convert discuss-phase @file imports to lazy per-branch reads Replace eager @file directives in with on-demand Read calls gated behind mode routing. discuss-phase-assumptions.md is now only read when DISCUSS_MODE=assumptions; discuss-phase.md is only read for the default discuss mode; discuss-phase-power.md and templates/context.md are removed from the entry point entirely (power mode is handled inside discuss-phase.md's lazy mode dispatch; context.md is loaded at the write_context step). Reduces tokens loaded at skill entry from ~13k to near zero. Closes #2606 Co-Authored-By: Claude Sonnet 4.6 * fix(discuss-phase): use contiguous 'Read and execute' phrase in process block The test at tests/discuss-mode.test.cjs:45 asserts that the block contains 'Read and execute' as a literal substring. The prior wording split the instruction across two lines (Read(...) / Then execute), so the substring match failed. Co-Authored-By: Claude Sonnet 4.6 * fix(discuss-phase): restore discuss-phase-power reference in process block --------- Co-authored-by: Claude Sonnet 4.6 --- commands/gsd/discuss-phase.md | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/commands/gsd/discuss-phase.md b/commands/gsd/discuss-phase.md index 0a8ce97a8..ec47bcd1e 100644 --- a/commands/gsd/discuss-phase.md +++ b/commands/gsd/discuss-phase.md @@ -29,10 +29,8 @@ Extract implementation decisions that downstream agents need — researcher and -@~/.claude/get-shit-done/workflows/discuss-phase.md -@~/.claude/get-shit-done/workflows/discuss-phase-assumptions.md -@~/.claude/get-shit-done/workflows/discuss-phase-power.md -@~/.claude/get-shit-done/templates/context.md +Workflow files are loaded on-demand in the section below — not upfront. +Do not pre-load any workflow files before reading the mode routing instructions. @@ -51,11 +49,15 @@ Context files are resolved in-workflow using `init phase-op` and roadmap/state t DISCUSS_MODE=$(gsd-sdk query config-get workflow.discuss_mode 2>/dev/null || echo "discuss") ``` -If `DISCUSS_MODE` is `"assumptions"`: Read and execute @~/.claude/get-shit-done/workflows/discuss-phase-assumptions.md end-to-end. +If `DISCUSS_MODE` is `"assumptions"`: +Read and execute `~/.claude/get-shit-done/workflows/discuss-phase-assumptions.md` end-to-end. -If `DISCUSS_MODE` is `"discuss"` (or unset, or any other value): Read and execute @~/.claude/get-shit-done/workflows/discuss-phase.md end-to-end. +If `DISCUSS_MODE` is `"discuss"` (or unset, or any other value): +Read and execute `~/.claude/get-shit-done/workflows/discuss-phase.md` end-to-end. -**MANDATORY:** The execution_context files listed above ARE the instructions. Read the workflow file BEFORE taking any action. The objective and success_criteria sections in this command file are summaries — the workflow file contains the complete step-by-step process with all required behaviors, config checks, and interaction patterns. Do not improvise from the summary. +**MANDATORY:** Read the appropriate workflow file BEFORE taking any action. The objective and success_criteria sections in this command file are summaries — the workflow file contains the complete step-by-step process with all required behaviors, config checks, and interaction patterns. Do not improvise from the summary. + +**Lazy loading:** `templates/context.md` is loaded inside the `write_context` step of the active workflow. `discuss-phase-power.md` is loaded inside `discuss-phase.md` when `--power` is detected. Do not load either here.