Skip to content

Invoke describe-change.sh via the templated script path in orchestrated-coder's commit-title rule #697

Description

@williamthorsen

Problem

The orchestrated-coder subagent definition (subagents/orchestrated-coder.md, "Commit formatting" <HARD-GATE>, rule 1) tells the coder to render commit titles "using describe-change.sh", but it names the script in prose without giving a runnable command, and it never adopted the {platform_home_dir}/scripts/ path convention that every other consumer of the script uses. The rule also carries a silent escape hatch ("If the script is not found, fall back to the bare title") that downgrades a hard-gate requirement without surfacing the downgrade. The observed effect is commits shipping without the configured {scope}|{type}: prefix, undetected until PR review.

Context

  • The install-time path-resolution mechanism the original version of this ticket proposed already exists. The install pipeline expands {platform_home_dir} to the platform home (~/.claude, ~/.codex, and so on), the established convention is to invoke helper scripts as {platform_home_dir}/scripts/<script>.sh, and script-invocation-conventions.test.ts enforces that prefix on every helper-script invocation in agent and skill content. The ticket has therefore been narrowed to the one place that mechanism was never applied.
  • Rule 1 escaped that guard because it is a prose mention (the script name in backticks, no command), which the convention deliberately exempts. Legitimate prose mentions exist elsewhere (for example, commit/SKILL.md points readers to title-templates.md), so the guard cannot simply flag all mentions.
  • Every other describe-change.sh consumer (condense-branch, create-ticket, create-pr, merge-pr, and title-templates.md itself) already shows a runnable {platform_home_dir}/scripts/describe-change.sh … command. Rule 1 is the lone straggler, and the sibling resolve-frontmatter.sh call in this same file already uses the prefixed form.
  • The orchestrated-coder runs only inside an orchestrated dispatch, where aborting on a rendering failure would lose the run. Because the resolved path makes "script not found" a non-issue, this ticket removes the fallback rather than replacing it with failure-handling text. Verifying that referenced files are actually present after install is a separate concern, tracked in Add a validator that checks all agent- and skill-referenced files resolve after install #790.

Proposed solution

Rewrite rule 1 of the "Commit formatting" hard-gate so it provides a runnable invocation of describe-change.sh through the {platform_home_dir}/scripts/ prefix and reads commit_title from the JSON output, matching the pattern the other consumers already use. Remove the silent "fall back to the bare title" clause without adding replacement failure-handling. Drop the inaccurate cross-reference to title-templates.md (the coder derives scope, type, and title from the git commit conventions skill it already follows, and the template internals are the script's concern). Once rule 1 is a real invocation carrying the prefix, the existing convention test covers it automatically, so no new test is needed.

Acceptance criteria

Must have

  • orchestrated-coder.md "Commit formatting" rule 1 invokes describe-change.sh through the {platform_home_dir}/scripts/ prefix and reads commit_title from the JSON output.
  • The silent "fall back to the bare title" clause is removed from rule 1, with no failure-handling instruction added in its place.
  • No bare-name (unprefixed) reference to describe-change.sh remains in orchestrated-coder.md.
  • After install, the generated orchestrated-coder.md will contain an absolute, runnable describe-change.sh invocation.

Metadata

Metadata

Labels

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions