dev-orchestrator: decouple spec scaffold from fill, delegate exploration to OpenSpec native /opsx commands

- cmd_spec now only scaffolds (OpenSpec change + worktree + deps), no auto-fill
- Added cmd_fill as fallback for headless spec filling
- Output guides user to /opsx:explore and /opsx:continue inside OpenCode
- cmd_build (dev→QA loop) unchanged — core value proposition
This commit is contained in:
hermes-bot
2026-08-05 10:43:35 -03:00
parent 80556753e3
commit 32bc53bb68
+29 -6
View File
@@ -71,8 +71,27 @@ cmd_spec() {
(cd "$wt" && [ -d .venv ] || python3 -m venv .venv && . .venv/bin/activate && pip install -e . -q 2>&1 | tail -1) || true (cd "$wt" && [ -d .venv ] || python3 -m venv .venv && . .venv/bin/activate && pip install -e . -q 2>&1 | tail -1) || true
fi fi
# ── orchestrator fills the spec ── echo ""
echo "── Orchestrator filling spec ──" _ok "Spec '$name' scaffolded at openspec/changes/$name/"
echo " Worktree: $wt"
echo ""
echo " ── Next: explore in OpenCode ──"
echo " opencode"
echo " Then use OpenSpec native commands:"
echo " /opsx:explore — discuss the feature, refine requirements"
echo " /opsx:continue — fill spec artifacts one by one"
echo ""
echo " After specs are filled → dev-orchestrator build $name"
}
cmd_fill() {
local name="$1"
_guard
local wt="$(_wt_path "$name")"
[ -d "openspec/changes/$name" ] || _die "spec not found: openspec/changes/$name. Run: dev-orchestrator spec $name"
echo "── AI filling spec from conversation context ──"
opencode run \ opencode run \
"You are filling an OpenSpec change for feature: $name. "You are filling an OpenSpec change for feature: $name.
@@ -91,8 +110,7 @@ cmd_spec() {
--workdir "$REPO" --workdir "$REPO"
echo "" echo ""
_ok "Spec '$name' ready at openspec/changes/$name/" _ok "Spec '$name' filled at openspec/changes/$name/"
echo " Worktree: $wt"
echo " Review the spec, then: dev-orchestrator build $name" echo " Review the spec, then: dev-orchestrator build $name"
} }
@@ -247,6 +265,10 @@ case "${1:-}" in
[ $# -ge 2 ] || _die "usage: dev-orchestrator spec <feature-name>" [ $# -ge 2 ] || _die "usage: dev-orchestrator spec <feature-name>"
cmd_spec "$2" cmd_spec "$2"
;; ;;
fill)
[ $# -ge 2 ] || _die "usage: dev-orchestrator fill <feature-name>"
cmd_fill "$2"
;;
build) build)
[ $# -ge 2 ] || _die "usage: dev-orchestrator build <feature-name>" [ $# -ge 2 ] || _die "usage: dev-orchestrator build <feature-name>"
cmd_build "$2" cmd_build "$2"
@@ -263,12 +285,13 @@ case "${1:-}" in
echo "" echo ""
echo "commands:" echo "commands:"
echo " init Set up repo (run once per project)" echo " init Set up repo (run once per project)"
echo " spec <feature-name> Create OpenSpec + worktree + fill spec" echo " spec <feature-name> Scaffold OpenSpec + worktree (no fill)"
echo " fill <feature-name> AI fills spec after exploration"
echo " build <feature-name> Dev→QA loop in isolated worktree" echo " build <feature-name> Dev→QA loop in isolated worktree"
echo " status Kanban view of features in flight" echo " status Kanban view of features in flight"
echo " clean <feature-name> Remove worktree + branch" echo " clean <feature-name> Remove worktree + branch"
echo "" echo ""
echo "flow: init → spec → [review] → build → [loop until QA passes]" echo "flow: init → spec → [explore in OpenCode] → fill → build → [QA loop]"
echo "" echo ""
echo "worktrees live at: ../.worktrees/<feature>/" echo "worktrees live at: ../.worktrees/<feature>/"
echo "branches named: dev-flow/<feature>" echo "branches named: dev-flow/<feature>"