* fix(#991): inject configured agent_skills into code-review family subagents code-review.md, code-review-fix.md, and eval-review.md spawned their subagents (gsd-code-reviewer / gsd-code-fixer / gsd-eval-auditor) without querying or injecting the project-configured agent_skills, while ~20 sibling workflows do. Subagents don't inherit the orchestrator's auto-loaded context, so this injection is the only channel — reviewers/fixers/auditors silently ran without the configured rule/skill context. Mirror the established sibling idiom: add `VAR=$(gsd_run query agent-skills <agent-type>)` in each workflow's initialize step and interpolate `${VAR}` into every Agent() spawn of that type. This covers all spawn sites, including code-review-fix.md's --auto loop which re-spawns gsd-code-reviewer in addition to the two gsd-code-fixer spawns. Regression test reads the workflow text (source-text-is-the-product) and asserts each file queries agent-skills for every agent type it spawns and interpolates the result at least once per spawn. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> * chore(#991): add changeset for code-review agent_skills injection fix Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> --------- Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -21,6 +21,8 @@ _GSD_SHIM_NAME="gsd-tools.cjs"; _GSD_RUNTIME_ROOT="${RUNTIME_DIR:-$(git rev-pars
|
||||
PHASE_ARG="${1}"
|
||||
INIT=$(gsd_run query init.phase-op "${PHASE_ARG}")
|
||||
if [[ "$INIT" == @file:* ]]; then INIT=$(cat "${INIT#@file:}"); fi
|
||||
AGENT_SKILLS_FIXER=$(gsd_run query agent-skills gsd-code-fixer)
|
||||
AGENT_SKILLS_REVIEWER=$(gsd_run query agent-skills gsd-code-reviewer)
|
||||
```
|
||||
|
||||
Parse from init JSON: `phase_found`, `phase_dir`, `phase_number`, `phase_name`, `padded_phase`, `commit_docs`.
|
||||
@@ -205,7 +207,7 @@ iteration: 1
|
||||
</config>
|
||||
|
||||
Read REVIEW.md findings, apply fixes, commit each atomically, write REVIEW-FIX.md. Do NOT commit REVIEW-FIX.md (orchestrator handles that).
|
||||
")
|
||||
${AGENT_SKILLS_FIXER}")
|
||||
```
|
||||
|
||||
> **ORCHESTRATOR RULE — CODEX RUNTIME**: After calling Agent() above, stop working on this task immediately. Do not read more files, edit code, or run tests related to this task while the subagent is active. Wait for the subagent to return its result. This prevents duplicate work, conflicting edits, and wasted context. Only resume when the subagent result is available.
|
||||
@@ -283,7 +285,7 @@ ${FILES_CONFIG}
|
||||
|
||||
Re-review the phase at ${REVIEW_DEPTH} depth. Write findings to ${REVIEW_PATH}.
|
||||
Do NOT commit the output — the orchestrator handles that.
|
||||
")
|
||||
${AGENT_SKILLS_REVIEWER}")
|
||||
# ORCHESTRATOR RULE — CODEX RUNTIME: After calling Agent() above, stop working on this task immediately. Do not read more files, edit code, or run tests related to this task while the subagent is active. Wait for the subagent to return its result before proceeding.
|
||||
|
||||
# Check new REVIEW.md status
|
||||
@@ -322,7 +324,7 @@ iteration: ${ITERATION}
|
||||
</config>
|
||||
|
||||
Read REVIEW.md findings, apply fixes, commit each atomically, write REVIEW-FIX.md (overwrite previous). Do NOT commit REVIEW-FIX.md.
|
||||
")
|
||||
${AGENT_SKILLS_FIXER}")
|
||||
# ORCHESTRATOR RULE — CODEX RUNTIME: After calling Agent() above, stop working on this task immediately. Do not read more files, edit code, or run tests related to this task while the subagent is active. Wait for the subagent to return its result before proceeding.
|
||||
|
||||
# Check if fixer succeeded
|
||||
|
||||
@@ -21,6 +21,7 @@ _GSD_SHIM_NAME="gsd-tools.cjs"; _GSD_RUNTIME_ROOT="${RUNTIME_DIR:-$(git rev-pars
|
||||
PHASE_ARG="${1}"
|
||||
INIT=$(gsd_run query init.phase-op "${PHASE_ARG}")
|
||||
if [[ "$INIT" == @file:* ]]; then INIT=$(cat "${INIT#@file:}"); fi
|
||||
AGENT_SKILLS_REVIEWER=$(gsd_run query agent-skills gsd-code-reviewer)
|
||||
```
|
||||
|
||||
Parse from init JSON: `phase_found`, `phase_dir`, `phase_number`, `phase_name`, `padded_phase`, `commit_docs`.
|
||||
@@ -462,7 +463,7 @@ ${CONFIG_FILES}
|
||||
|
||||
Review the listed source files at ${REVIEW_DEPTH} depth. Write findings to ${REVIEW_PATH}.
|
||||
Do NOT commit the output — the orchestrator handles that.
|
||||
")
|
||||
${AGENT_SKILLS_REVIEWER}")
|
||||
```
|
||||
|
||||
> **ORCHESTRATOR RULE — CODEX RUNTIME**: After calling Agent() above, stop working on this task immediately. Do not read more files, edit code, or run tests related to this task while the subagent is active. Wait for the subagent to return its result. This prevents duplicate work, conflicting edits, and wasted context. Only resume when the subagent result is available.
|
||||
|
||||
@@ -22,6 +22,7 @@ Parse: `phase_dir`, `phase_number`, `phase_name`, `phase_slug`, `padded_phase`,
|
||||
|
||||
```bash
|
||||
AUDITOR_MODEL=$(gsd_run query resolve-model gsd-eval-auditor 2>/dev/null | jq -r '.model' 2>/dev/null || true)
|
||||
AGENT_SKILLS_AUDITOR=$(gsd_run query agent-skills gsd-eval-auditor)
|
||||
```
|
||||
|
||||
Display banner:
|
||||
@@ -101,6 +102,8 @@ phase_name: {phase_name}
|
||||
padded_phase: {padded_phase}
|
||||
state: {A or B}
|
||||
</input>
|
||||
|
||||
${AGENT_SKILLS_AUDITOR}
|
||||
```
|
||||
|
||||
Spawn as Task with model `AUDITOR_MODEL`.
|
||||
|
||||
Reference in New Issue
Block a user