Queue
Collect task descriptions all day, then run them unattended: each item becomes a studio mission in its own git worktree, ending in a branch + delivery digest. Come back to finished work.From its SKILL.md
npx -y skills add eduardkumskyi/octo --skill queueAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
2 things to look at
- no licenseNo license file was found in the repository. Code published without one is not open source by default, so using it at work is a question for whoever answers licensing questions where you are.
- 1 stars1 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
SKILL.md
4.6 KB, ~1.1k tokens by cl100k_base, as published. Nobody here has run it
Progress Contract
OCTO_ROOT = ${CLAUDE_PLUGIN_ROOT} when set; otherwise two directories above this skill's base directory (skills/<name>/ sits at <plugin-root>/skills/<name>/). Resolve once at start.
Register steps as a native task list before doing any work. Report progress as "N steps remaining" β never wall-clock ETAs.
Register steps in the native task list named π <n>/<total> β <step name>; update each to in_progress/completed as you go β the checklist is the user's primary progress view.
Arguments
add <description>β append a new item to the queue.listβ show the current queue as a table.runβ execute all pending items unattended, sequentially.clearβ remove all done items from the queue file.
Queue File
Queue state lives at .claude/octo/queue.md. Each item has the form:
## Q<n> β <description>
Status: pending|running|done|failed
Branch:
Register .claude/octo/ in .git/info/exclude (append only if not already present; never modify .gitignore).
Commands
add <description>
Append a new item to .claude/octo/queue.md:
## Q<n> β <description>
Status: pending
Branch:
Where n is the next sequential number. Create the file with a # Queue header if absent.
Report: "Q<n> added.".
list
Read .claude/octo/queue.md and print a table:
| # | Description | Status | Branch |
|---|
run
For each item with Status: pending, in order:
- Derive a slug from the description: lower-case, replace spaces and special characters
with
-, collapse runs of-. - Create an isolated git worktree:
git worktree add ../<repo-name>-q<n> -b octo/q<n>-<slug>from the current HEAD. - Set
Status: runningin.claude/octo/queue.md. - Run the
/octo:studioworkflow inside the worktree, with these adjustments:- Phase 1 (contract) is replaced: the item description IS the mission. The studio derives acceptance criteria from the description using the consilium β seat: client advocate maps the description to observable, testable outcomes. Zero questions β this is unattended by definition.
- All other studio phases (consilium-setup, milestone-loop, delivery) apply in full, including the state-write gate and blocked-event protocol.
- The corrupt-state exception (Phase 4) may still halt an item: set
Status: failedwith reason appended under the item; continue to the next item.
- On completion (delivery reached):
- Set
Status: done. - Set
Branch: octo/q<n>-<slug>. - Append a one-line delivery digest under the item's entry in
.claude/octo/queue.md.
- Set
- Run
bash "$OCTO_ROOT/scripts/notify.sh" "octo queue" "done: Q<n> β <description>". - Continue to the next pending item.
Items run sequentially β one studio at a time. Parallel-first applies INSIDE each mission (the studio's own agent dispatches are concurrent); the queue itself is serial.
Worktrees are left in place with their branches for the user's review. The user merges or discards them manually.
clear
Remove all items with Status: done from .claude/octo/queue.md. Report the count removed.
Final Output for run
After all items have been processed, present a table as the chat output (not prose):
| Q# | Description | Status | Branch | Try it |
|---|
Try it = the exact command from the item's delivery digest, or β if failed.
Shared Conventions
- Commits: conventional format
type(scope): brief descriptionβ no AI attribution, noCo-Authored-Bylines of any kind. - Never push directly to protected branches (protected branches β see the octo guard's list).
- Never use
--no-verifyor force-push. - Parallel-first: dispatches that do not consume each other's output MUST go in a single message. Dispatching sequentially what could run concurrently is a defect, not a style choice. Cap β10 concurrent lanes; more work than lanes β batch waves.
- Reader-first output: lead with the outcome in one sentence; keep the visible reply short and dev-readable β only what changes the reader's next action. Full detail (complete reports, evidence, logs) goes to a file under
.claude/octo/reports/YYYY-MM-DD-<skill>-<slug>.mdwith the path given in chat β never dumped into the conversation.
What ships with it
Read from the repository
Just SKILL.md. No reference files, no scripts.