mirror of
https://github.com/obra/superpowers
synced 2026-07-23 11:04:30 +00:00
cdcadda4be
Responds to maintainer review of this branch: the dispatch-hint lines were hardcoded Codex strings inside shared skill tooling that every harness runs. The per-role hint lines now live in a platform-owned data file, skills/using-superpowers/references/codex-dispatch.hints, and the task-brief/review-package scripts only relay the current role's line. The relay is suppressed when CLAUDECODE is set (Claude Code's dispatch templates already carry model selection) and on any harness with no hints file; unknown harnesses fail toward printing, because a silent no-op in the environment that needs the hint is the failure mode this mechanism exists to prevent. Printing at the moment of dispatch is load-bearing: skill text loaded at session start does not survive context compaction, but script output reprints every round. codex-tools.md's SDD dispatch section shrinks to the behavioral rules (fork_turns: "none" always; copy the printed hint verbatim; reviewer tier never exceeds implementer tier; no effort bumps; the <=0.144 inheritance fallback) and points at the hints file for values. Tests cover the relay path, the per-role efforts, and the new CLAUDECODE suppression case. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
57 lines
1.8 KiB
Bash
Executable File
57 lines
1.8 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
# Extract one task's full text from an implementation plan into a file the
|
|
# implementer reads in one call, so the task text never has to be pasted
|
|
# through the controller's context.
|
|
#
|
|
# Usage: task-brief PLAN_FILE TASK_NUMBER [OUTFILE]
|
|
# Default OUTFILE: <repo-root>/.superpowers/sdd/<plan-basename>/task-<N>-brief.md
|
|
# (per plan and per worktree; concurrent runs of the SAME plan in the same
|
|
# working tree share it).
|
|
set -euo pipefail
|
|
|
|
if [ $# -lt 2 ] || [ $# -gt 3 ]; then
|
|
echo "usage: task-brief PLAN_FILE TASK_NUMBER [OUTFILE]" >&2
|
|
exit 2
|
|
fi
|
|
|
|
plan=$1
|
|
n=$2
|
|
[ -f "$plan" ] || { echo "no such plan file: $plan" >&2; exit 2; }
|
|
|
|
script_dir=$(cd "$(dirname "$0")" && pwd)
|
|
|
|
if [ $# -eq 3 ]; then
|
|
out=$3
|
|
else
|
|
dir=$("$script_dir/sdd-workspace" "$plan")
|
|
out="$dir/task-${n}-brief.md"
|
|
fi
|
|
|
|
awk -v n="$n" '
|
|
/^```/ { infence = !infence }
|
|
!infence && /^#+[ \t]+Task[ \t]+[0-9]+/ {
|
|
intask = ($0 ~ ("^#+[ \t]+Task[ \t]+" n "([^0-9]|$)"))
|
|
}
|
|
intask { print }
|
|
' "$plan" > "$out"
|
|
|
|
if [ ! -s "$out" ]; then
|
|
echo "task ${n} not found in ${plan} (no heading matching 'Task ${n}')" >&2
|
|
exit 3
|
|
fi
|
|
|
|
echo "wrote ${out}: $(wc -l < "$out" | tr -d ' ') lines"
|
|
|
|
# Platform dispatch hints ride this output because the controller reads it
|
|
# immediately before spawning; the lines themselves are owned by the platform
|
|
# reference layer (using-superpowers/references/*-dispatch.hints), not this
|
|
# script. Claude Code's dispatch templates carry model selection already, so
|
|
# the relay is suppressed there and on any harness without a hints file.
|
|
hints_file="$script_dir/../../using-superpowers/references/codex-dispatch.hints"
|
|
if [ -z "${CLAUDECODE:-}" ] && [ -f "$hints_file" ]; then
|
|
hint_line=$(grep "^implementer:" "$hints_file" | head -1 | cut -d: -f2- | sed 's/^ *//') || true
|
|
if [ -n "$hint_line" ]; then
|
|
echo "$hint_line"
|
|
fi
|
|
fi
|