with one click
work-bead
Use when picking up a tracked task to execute end-to-end
Install with Codex or Claude Copy this prompt, paste it into Codex, Claude, or another assistant, and let it review the skill page and install it for you.
Menu
Use when picking up a tracked task to execute end-to-end
Install with Codex or Claude Copy this prompt, paste it into Codex, Claude, or another assistant, and let it review the skill page and install it for you.
Based on SOC occupation classification
Use when reviewing a spec or task graph for completeness before implementation
Use when the user needs to interact with websites, including navigating pages, filling forms, clicking buttons, taking screenshots, extracting data, testing web apps, logging in, or automating browser actions
Use when the user needs to interact with websites, including navigating pages, filling forms, clicking buttons, taking screenshots, extracting data, testing web apps, logging in, or automating browser actions
Use when decomposing a spec, design, or feature description into a task dependency graph with self-evaluating acceptance criteria
Use when doing creative product, feature, component, functionality, or behavior design work
Use when infrastructure or features are built but before declaring done -- verifies work is wired into the system and actively used
| name | work-bead |
| description | Use when picking up a tracked task to execute end-to-end |
End-to-end workflow for executing exactly one task in isolation. Uses a git worktree for safety, TDD for correctness, and fast-forward merge for clean history on main.
Core principle: 1 invocation = 1 task, worktree-isolated, rebased + fast-forward merged to main.
oro task ready # find unblocked work
oro task show <id> # review details + acceptance
oro task update <id> --status in_progress # claim it
If oro task ready returns nothing: report "No tasks ready." STOP.
Create an isolated workspace for this task:
git worktree add .worktrees/bead-<id> -b bead/<id>
cd .worktrees/bead-<id>
Copy environment files:
main_root=$(git rev-parse --show-toplevel)
for env in .env .env.local .env.test; do
[ -f "$main_root/$env" ] && cp "$main_root/$env" .
done
Run project setup:
# Python
if [ -f pyproject.toml ]; then uv sync; fi
# Go
if [ -f go.mod ]; then go mod download; fi
# Node
if [ -f package.json ]; then npm install; fi
Verify baseline tests pass:
# Go: go test ./...
# Python: uv run pytest
If baseline tests fail: report failures, ask whether to proceed.
Extract the verification contract from the task's --acceptance field:
Test: <path>:<FnName> | Cmd: <test_cmd> | Assert: <expected>
| Field | Meaning |
|---|---|
Test: | Test file path and function name |
Cmd: | Command to run verification |
Assert: | What "pass" looks like |
If acceptance is missing or vague:
oro task update <id> --notes "Blocked: unclear acceptance criteria"Write the failing test specified in acceptance criteria. Run the verification command. Confirm failure.
# Go
go test ./path/to/... -run TestFnName -v
# Python
uv run pytest path/to/test_file.py::test_fn_name -v
Verify: Test fails for the expected reason (missing feature, not a typo).
If task is too large (see beadcraft size heuristics): DECOMPOSE AND STOP (see Mid-Task Decomposition below).
Write the simplest code that makes the test pass. Run the verification command from acceptance.
Verify: Test passes. No other tests broken.
Clean up while tests stay green. No new behavior.
Run the project quality gate:
# Go projects
./quality_gate.sh
# Python projects
uv run pytest && ruff check . && ruff format --check .
Fix any issues. Re-run until clean. Never skip the gate.
One atomic commit per task. Include implementation and tests together.
git add <relevant files>
git commit -m "<type>(<scope>): <desc> (oro-<id>)"
oro task close <id> --reason "Tests pass, gate clean. Commit: <hash>"
Rebase the agent branch onto main inside the worktree (bypasses the worktree guard hook):
git -C .worktrees/bead-<id> rebase main
If rebase conflict: resolve in the worktree, git rebase --continue, re-run gate.
The worktree must be clean after rebase before it can be removed:
git worktree remove .worktrees/bead-<id>
If worktree is dirty after rebase: git -C .worktrees/bead-<id> commit --amend to fold changes in, then retry removal.
Fast-forward main to the rebased branch tip (same commit hashes, clean linear history):
git merge --ff-only bead/<id>
If --ff-only fails (main moved since rebase): re-run Step 10 rebase, then retry.
git push
Note: manual task metadata sync is not needed here — the pre-commit hook runs it automatically on every commit.
If push fails (no remote): report. Commit is local.
git branch -d bead/<id>
If during RED the task needs multiple unrelated tests:
oro task update <id> --type epic --notes "Decomposed: needed multiple unrelated tests"oro task create --parent <id>, then oro task dep add <id> <child> for each child that must finish before the parentgit worktree remove .worktrees/bead-<id>git checkout main && git branch -D bead/<id>Too-large signals: See beadcraft size heuristics for the full list.
| Situation | Action |
|---|---|
oro task ready returns nothing | Report "No tasks ready." STOP. |
| Acceptance missing/vague | oro task update <id> --notes "Blocked: unclear acceptance". Ask user. STOP. |
| Baseline tests fail in worktree | Report failures. Ask whether to proceed. |
| Test won't fail (RED) | Testing existing behavior. Fix test. |
| Quality gate fails | Fix issues. Re-run. Never skip. |
| Merge conflict (rebase) | Resolve in worktree, git rebase --continue, re-run gate. |
--ff-only fails (main moved) | Re-run Step 10 rebase from inside worktree, then retry --ff-only. |
| Worktree dirty after rebase | git -C .worktrees/bead-<id> commit --amend in worktree, then remove. |
| Push fails (no remote) | Report. Commit is local. |