Bad
stephenleo/bmad-autonomous-development
BMad Autonomous Development — orchestrates parallel story implementation pipelines.
A skill your agent uses when the user explicitly asks for $threads, Codex-native subagents, 开几个子 agent, or a GitHub issue/PR queue needing parallel lanes, worktrees, review/merge gates, and closure…
$ npx skills add majiayu000/spellbook --skill threads -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install majiayu000/spellbook threads --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/majiayu000/spellbook.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/threads .claude/skills/threads && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "threads" agent skill from https://github.com/majiayu000/spellbook/tree/main/skills/threads into .claude/skills/threads/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "threads", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/majiayu000/spellbook/tree/main/skills/threadsType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add majiayu000/spellbook --skill threads -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install majiayu000/spellbook threads --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/majiayu000/spellbook.git skills-src && mkdir -p .agents/skills && cp -r skills-src/skills/threads .agents/skills/threads && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "threads" agent skill from https://github.com/majiayu000/spellbook/tree/main/skills/threads into .agents/skills/threads/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "threads", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add majiayu000/spellbook --skill threads -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install majiayu000/spellbook threads --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/majiayu000/spellbook.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/skills/threads .cursor/skills/threads && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "threads" agent skill from https://github.com/majiayu000/spellbook/tree/main/skills/threads into .cursor/skills/threads/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "threads", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/majiayu000/spellbook.git --path skills/threads--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add majiayu000/spellbook --skill threads -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install majiayu000/spellbook threads --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/majiayu000/spellbook.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/skills/threads .gemini/skills/threads && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "threads" agent skill from https://github.com/majiayu000/spellbook/tree/main/skills/threads into .gemini/skills/threads/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "threads", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install majiayu000/spellbook threadsInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add majiayu000/spellbook --skill threads -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/majiayu000/spellbook.git skills-src && mkdir -p .github/skills && cp -r skills-src/skills/threads .github/skills/threads && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "threads" agent skill from https://github.com/majiayu000/spellbook/tree/main/skills/threads into .github/skills/threads/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "threads", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add majiayu000/spellbook --skill threads -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install majiayu000/spellbook threads --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/majiayu000/spellbook.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/skills/threads .opencode/skills/threads && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "threads" agent skill from https://github.com/majiayu000/spellbook/tree/main/skills/threads into .opencode/skills/threads/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "threads", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
threadsA skill your agent uses when the user explicitly asks for $threads, Codex-native subagents, 开几个子 agent, or a GitHub issue/PR queue needing parallel lanes, worktrees, review/merge gates, and closure…
Threads is an agent skill from majiayu000/spellbook. Use when the user explicitly asks for $threads, Codex-native subagents, 开几个子 agent, or a GitHub issue/PR queue needing parallel lanes, worktrees, review/merge gates, and closure audit. Do not use for OS/language threads, chat/email/forum threads, or Assistants product threads unless Codex workflow orchestration is explicit.
Its SKILL.md is about 8.7k tokens, which your agent loads only when the skill is triggered. The skill folder holds 12 other files, including scripts and reference files (for example `agents/openai.yaml`, `evals/evals.json` and `references/prompt-patterns.md`). Compatibility notes: Requires Codex with native subagent support.
It sits in Agent Workflows, covering Git worktrees and Subagents. It works with GitHub. The repository describes itself as: Cross-runtime skills for Claude Code, Codex, and multi-agent workflows. The licence is MIT.
9 steps, taken from the first numbered list in SKILL.md.
Read from SKILL.md and the folder at commit ed52af7. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
Ships 4 files in scripts/ (Python), which the agent can run.
Shell commands in SKILL.md call:
gitghcargoFrom the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md. Its commands use git and gh, which can reach the network depending on how they are called.
From URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Requires Codex with native subagent support.
From compatibility in the SKILL.md frontmatter.
Threads loads about 8.7k tokens when it runs, and up to ~18k if it reads all its reference files. Until then it costs about 83 tokens; SKILL.md has 4,067 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); the scripts in this folder are not scanned.
The full file from majiayu000/spellbook at commit ed52af7, republished under its MIT licence (© majiayu000). 4,067 words, ~8,659 tokens.
.claude/skills/threads/SKILL.md (or your agent's skills folder). This skill also uses 8 other files; get the full folder from GitHub.Use this skill to turn a broad request into controlled Codex-native subthreads with explicit lanes, file ownership, review gates, and verifiable closure.
Native Codex threads are short-lived parallel work lines inside the Codex workflow. They are not the same as OMX/tmux workers. If native subagent tools are not visible, discover them with tool search. If no native subagent capability is available, produce the thread prompt pack and execution plan instead of pretending threads were launched.
single_agent, plan_only, execute_direct, review_only, research_spec, or clarify_first.intent_contract and thread_dispatch_gate, write a run_phase: preflight record, and pass append_run_log.py --validate-only before spawning.queue_gate, queue_ledger, issue_to_pr_map, and the validated queue_bounds.threads_run_log; write durable JSONL for queue, multi-lane, push, comment, or merge-capable runs.Do not use this skill for generic uses of "thread" unless the user explicitly means Codex workflow orchestration:
Choose one mode:
Use single_agent only for one-file fixes, simple questions, or tasks where the next step depends on one immediate result. If the user explicitly asks for threads, subagents, or a GitHub issue/PR queue and native subagents are available, do not silently choose single_agent; record a concrete no_spawn_reason before implementation work begins.
For any implementation mode, start with a lane map before spawning workers. For GitHub issue/PR queues, complete the Capability Gate and Queue Gate first; do not create worker lanes until capability_gate, queue_gate, queue_ledger, and issue_to_pr_map are written.
When the user explicitly asks for threads, subagents, "开几个子 agent", or a GitHub issue/PR queue that the skill classifies as plan_only, execute_direct, review_only, or research_spec, native dispatch is required whenever native subagent tools are available.
Record this gate before implementation, review, or merge work:
thread_dispatch_gate:
- explicit_thread_request: yes | no
- native_subagents: available | unavailable
- spawn_requirement: required | optional | unavailable
- fallback_mode: single_agent | prompt_pack_only | none
- planned_native_threads:
- id:
role:
target:
write_scope: read_only | disjoint_writable | none
spawn_status: planned | spawned | skipped
no_spawn_reason:
- native_thread_evidence:
user_requested_native_threads: yes | no
spawned_agents:
- lane_id:
spawn_tool:
agent_id_or_thread_id:
wait_evidence:
close_evidence:
result_collected: yes | no
fallback_reason:
- no_spawn_reason:Rules:
explicit_thread_request: yes, native_subagents: available, and spawn_requirement: required, spawn at least one bounded native subagent before claiming the run is using threads.native_subagents: available plus fallback_mode: none is valid only when native_thread_evidence.spawned_agents contains at least one real agent/thread ID.planned_native_threads lane must have a matching native_thread_evidence.spawned_agents[].lane_id or a lane-level no_spawn_reason; spawning one native thread does not justify running the remaining planned lanes serially.native_thread_evidence.spawned_agents.fallback_mode: single_agent and write no_spawn_reason before editing files, commenting on GitHub, or merging. Valid reasons are narrow: task is tiny and truly sequential, all possible writable lanes overlap, native tools are unavailable, or the user explicitly asks not to spawn.single_agent only after saying that no native threads were launched.Before dispatch, record this block as intent_contract:
intent_contract:
goal:
non_goals:
done_when:
authorized_actions:
fresh_confirmation_required:
merge_policy: no_merge | merge_after_gate | user_confirm_before_merge
remote_truth_required: yes | no
truth_level: A | B | C | D
queue_ledger: required_for_queue | optional | none
ci_truth_source: discovered_workflow | user_supplied | language_default | none
data_collection: final_report | local_jsonl | none
active_skill_source: path | source_sha | unknown
queue_bounds:
max_items:
max_model_calls:
planned_items:
planned_model_calls:
planned_seconds:
time_budget:
checkpoint_every_items:
queue_tranche:
context_budget:
window_tokens:
soft_stop_ratio:
hard_stop_ratio:
critical_stop_ratio:
current_usage_signal:
output_firewall:
raw_log_policy: file_only | summary_only | not_applicable
max_parent_stdout_lines:
max_subagent_final_lines:
artifact_root:
remote_refresh:
cadence:
last_fetch:
stale_base_policy:
thread_dispatch:
explicit_thread_request:
spawn_requirement:
no_spawn_reason:Defaults:
merge_policy is no_merge unless the user explicitly authorizes merging in the current conversation.data_collection is local_jsonl for GitHub issue/PR queues, multi-lane runs, or any run that may push/comment/merge; use final_report only for tiny read-only/single-agent runs or explicit user opt-out.unknown rather than guessing.authorized_actions is the closed mutation set for this run. Put cross-repo writes, GitHub writes, installs/upgrades/restarts, migrations/reindexing, and global config/hook changes in fresh_confirmation_required unless the current request explicitly authorizes them.done_when ends the run. A blocker does not expand authorized_actions; report it and request confirmation for any adjacent remediation.Direct actions: inspect repo instructions, fetch remote state, map lanes, apply the Explicit Thread Dispatch Gate, spawn required bounded native subagents, integrate results, verify, and report closure.
Escalate before: modifying high-context files, merging without fresh CI/review-thread truth, sharing writable files across workers, or switching to shell/tmux/OMX orchestration.
Evidence-backed pushback: choose single_agent only when parallelism adds coordination risk without independent work, and record the no_spawn_reason; challenge vague worker output, stale remote state, or unverified completion claims.
Feedback loop: record notable failures in threads_run_log, classify the failure mode, tighten the lane prompt or split, then retry only after the hypothesis changes.
If the user asks for issue/PR queue handling, remote_truth_required is yes and queue_ledger is required_for_queue.
Broad queue requests such as "all issues and PRs" are bounded by default. If the user did not give an explicit long-run budget, choose one smallest mergeable tranche, record max_items / max_model_calls / time_budget / checkpoint_every_items / queue_tranche, and leave the remaining queue for the next run with exact next actions. Every preflight also records concrete planned_items, planned_model_calls, and planned_seconds; each must fit the allowance remaining after cumulative usage. Values such as unbounded, as needed, or not pre-budgeted are invalid.
Do not use a long-lived native thread as a generic loop over hundreds or thousands of similar records.
run_phase: preflight record with scripts/append_run_log.py --validate-only before the first spawn.max_items, max_model_calls, time_budget, and checkpoint_every_items before dispatching another tranche.checkpoint_every_items cadence, persist the queue ledger and compare measured token usage with the calibration projection; stop and request a revised budget on material overrun. Close completed children and update the existing queue-ledger artifact listed in output_firewall.evidence_paths; do not invent a checkpoint run phase, and append the final run log only after collection. Carry the approved queue_bounds into that final record, including for a one-child tranche.For long queues, multi-lane runs, CI polling, or any run likely to carry large logs, record a parent context budget before dispatch:
context_budget:
- window_tokens:
- soft_stop_ratio: 0.50
- hard_stop_ratio: 0.65
- critical_stop_ratio: 0.75
- current_usage_signal:
- override_reason:Defaults are guidance, not universal limits. Override them when the model window, task size, or user budget requires it, but record the override.
Rules:
soft_stop, do not spawn new lanes, broaden queue scope, or run broad discovery. Finish the current bounded lane and use targeted reads only.hard_stop, stop expanding work, collect current lane evidence, write or update the queue ledger/run log, and hand off to a fresh parent thread.critical_stop, do not read large files, raw logs, broad search results, or historical transcripts. Write the minimum handoff/resume prompt and stop.Large-output commands are allowed only when raw stdout/stderr are written to artifact files outside the parent transcript:
output_firewall:
- raw_log_policy: file_only
- max_parent_stdout_lines: 150
- max_subagent_final_lines: 150
- artifact_root:
- evidence_paths:Parent-visible output should be limited to exit code, command name, short tail, targeted grep result, failure summary, and artifact path.
Rules:
gh run view --log, full workspace test output, broad rg/git grep results, long diffs, copied source files, or session JSONL into the parent..codex, .claude, target, node_modules, session JSONL, and log files unless the user explicitly asks for forensic analysis.raw_output_blocked or parent_context_hard_stop in threads_run_log and hand off if needed.Before dispatching lanes, record whether native Codex subagents are actually available:
capability_gate:
- native_subagents: available | unavailable
- tools_seen:
- explicit_thread_request: yes | no
- spawn_requirement: required | optional | unavailable
- fallback_mode: single_agent | prompt_pack_only | none
- no_spawn_reason:
- manual_orchestration_allowed: yes | noRules:
spawn_requirement is required, do not proceed past planning until at least one native subagent is spawned or fallback_mode and no_spawn_reason are recorded.fallback_mode is single_agent, explain why parallelism was rejected.fallback_mode is prompt_pack_only, output exact lane prompts and stop before implementation.For GitHub issue/PR queue handling, write a queue_gate block before the lane map and before any implementation worker is launched. This is mandatory even when all open PRs look MERGEABLE or CLEAN.
The gate must use live state from the current session:
queue_gate:
- fetched_remote:
- truth_level:
- remote_refresh:
base_ref:
owner_lane:
origin_main_sha:
local_base_sha:
stale_base:
policy:
- current_branch:
- dirty_files:
- unpushed_commits:
- worktrees:
- open_prs:
- open_issues:
- pr_classification:
- PR:
head_sha:
merge_state:
check_rollup:
review_threads:
classification:
reason:
- issue_to_pr_map:
- issue:
covering_pr:
status: covered | uncovered | stale_or_superseded | needs_human_decision
reason:
- recommended_order:
- stop_conditions:Classify every open PR as exactly one of:
merge_readyreview_thread_blockedci_failedconflict_blockedstale_or_supersededneeds_human_decisionRules:
MERGEABLE or CLEAN is never sufficient by itself. A PR is merge_ready only when the current head SHA, check rollup, merge state, and GraphQL review-thread state are all fresh and clean.reviewThreads { isResolved isOutdated }; flat PR comments are not sufficient.maintainerCanModify: true, update that PR before opening a maintainer replacement unless the branch is unsafe, unwritable, or the user approves replacement.Use the highest truth level available from the current session and record it in intent_contract, queue_gate, and threads_run_log:
git fetch plus GitHub API or GraphQL can prove current PR head, check rollup, merge state, and review-thread state. Implementation, review, and merge gates may proceed if all other conditions pass.git fetch plus REST PR/review/comment data is available, but GraphQL review-thread state is unavailable. Implementation and review may proceed; merge is forbidden.plan_only or prompt_pack_only; do not implement, push, merge, or claim closure.Never fabricate remote state to reach a higher level. If the tool or permission gap matters, report the lower level and the blocked operation.
For issue/PR queues, keep a live queue ledger from discovery through final closure. The ledger can be a concise table in the conversation, a local durable log, or both, but it must survive handoff and compaction when the run is long.
Use these fields:
queue_ledger:
- item:
type: issue | pr | review_thread | local_task
remote_state:
owner_lane:
dependencies:
base_ref:
branch:
worktree:
writable_files:
pr:
head_sha:
ci_status:
review_thread_state:
acceptance_evidence:
merge_sha:
closed_by:
remote_checked_at:Rules:
origin/main, rebase or recreate the lane only after recording the dependency and checking for changed files.Fixes #... or close an issue until each meaningful acceptance point is mapped to evidence: changed files, tests, commands, PR, commit, or remote state.Long queue runs must refresh remote state without mutating worker worktrees:
git fetch --prune origin at queue start, before opening a new lane, before pushing, before merge review, and after long waits such as CI polling. For runs longer than one focused tranche, refresh at least every 20-30 minutes.origin/main SHA with each lane's recorded base_ref. Do not automatically merge or rebase during a lane.origin/main advanced, record stale_base: yes in queue_gate, queue_ledger, and threads_run_log.stale_remote_state when upstream changes overlap the lane, alter CI, or invalidate the acceptance evidence.single_agent tasks unless the task touches GitHub remote state.Write a short lane map before dispatch:
mode:
repo:
base_ref:
global_constraints:
verification_owner:
stop_conditions:
lanes:
- id:
role: planner | worker | reviewer | merge_reviewer | researcher
target:
depends_on:
execution_mode: parallel | serial_after_dependency | read_only_until_dependency
base_gate:
worktree:
writable_files:
forbidden_files:
exclusive_verification:
verification_scope: inspection_only | targeted | full_local | ci_only
expected_output:
verification:
native_thread_id:
no_spawn_reason:Rules:
queue_gate; no worker lane may start from open issue/PR lists alone.read_only_until_dependency until the upstream head is pushed and the base_gate is satisfied. Downstream planners may inspect and prepare a patch plan in parallel, but they must not edit files before the gate opens.base_gate must name the upstream condition that makes a downstream writable lane safe to start: current head SHA recorded, upstream CI/targeted verification status known, dirty upstream worktree absent or committed, and overlapping files checked.native_thread_id: none; every spawned lane must record the returned native tool agent ID.AGENTS.md, CLAUDE.md, settings, hooks, and setup scripts in forbidden_files unless the user explicitly asks to modify them.origin/main or the requested base.base_gate opens. Avoid starting writable downstream work on a stale base; if early exploration is useful, use a read-only planner lane instead..git/hooks, shared $HOME files, global caches, local daemons, or repo-level generated state belong to verification_owner and must not run in parallel lanes unless that mutable state is isolated.Choose parallelism on demand after the lane map, not by default.
Use parallel writable workers only when all are true:
depends_on edge exists between the lanesUse serial writable workers when any lane depends on another lane's branch, PR, generated output, CI result, review result, schema migration, shared setup/install behavior, or version bump. In that case, run the upstream writable lane first, record its head SHA and verification, then create or rebase the downstream worktree from that stable head.
Use parallel read-only planners/reviewers for dependent work only when they do not edit files or mutate GitHub state. Their output should be a patch plan, risk map, or review findings that can be applied after the upstream gate opens.
For stacked PRs:
stale_base and the recovery decision in queue_ledger and threads_run_log.Use verification_scope to keep review evidence useful without duplicating expensive full-suite work:
inspection_only: read-only diff/code inspection. Cheap static checks such as git diff --check are allowed when they are relevant.targeted: focused tests or linters for touched behavior only.full_local: one owner runs the project-wide local suite for the tranche, usually the root orchestrator, verification_owner, or a merge_reviewer.ci_only: fresh CI tied to the current head SHA is the full-suite truth source.Rules:
inspection_only or targeted. They must not run full project test suites unless the lane map explicitly names them as verification_owner or merge_reviewer.cargo test command, or use a broader module/path filter; do not pass several unrelated test names as positional filters in one command.verification_owner lane.Use native subagents when available. If the multi-agent tool is not loaded, search for it using tool discovery. Do not use shell/tmux/OMX orchestration unless explicitly requested.
When multi_agent_v1 tools are available, use spawn_agent for required bounded sidecar lanes, wait_agent only when the next critical-path step needs that result, and close_agent after collecting completed output. Keep immediate blockers in the main thread, but do not count the main thread as a spawned native thread.
Close completed subagents as soon as their evidence has been collected. For long issue/PR queues, finish a bounded tranche, record the ledger and resume query, and start a fresh parent thread when the context budget is near or past the hard stop instead of carrying oversized context forward.
Use these lane types:
Load prompt-patterns.md when you need ready-to-use prompts for planners, workers, reviewers, or research lanes.
Every lane output must be evidence-bearing:
lane:
root_cause_or_claim:
files_read:
files_changed:
unauthorized_or_unassigned_changes:
commands_run:
output_summary:
evidence_paths:
head_sha_or_artifact:
native_thread_id:
blockers:Lane outputs must not include raw logs, long diffs, copied source files, broad search dumps, or full command output. If the lane produced large evidence, it must return the artifact path plus the smallest useful summary.
Do not merge from worker output alone. Merge only after:
merge_policy is merge_after_gate or user_confirm_before_merge with explicit authorization from the current conversation.truth_level is A; lower truth levels may produce recommendations but must not merge.MERGEABLE, CLEAN, or a green check alone is not sufficient without the matching current head SHA, full check rollup, merge state, and GraphQL review-thread state.reviewThreads { isResolved isOutdated }; flat PR comments are not sufficient.reviewThreads result as clean. If a GitHub/Codex review connector was requested or is expected, do not merge until current-head connector completion is proven. Record no_connector_expected only after checking that no connector was requested or expected for the current head.REVIEW_LOOP after two repeated fix/review cycles on the same class of review-thread finding unless the hypothesis changes.WAITING_CI when there is no actionable local failure. Report PR number, head SHA, pending checks, last observed status, and the exact resume query.origin/main advanced and overlaps the PR scope, stop with stale_remote_state until the branch is rebased or recreated.If the user asked for “review then merge,” the merge reviewer should be a separate lane from the implementation worker.
For runs that will dispatch native lanes, validate a run_phase: preflight record before dispatch. Append a run_phase: final record after collection for GitHub queues, multi-lane runs, or any run that may push/comment/merge, unless the user opts out; record no_log_reason when final-report-only is used. Read run-log.md before writing or validating records.
Run logs are observational. Do not record secrets, credentials, full prompts, or private user data. Prefer short summaries, file paths, PR/issue numbers, command names, failure codes, and verification outcomes.
End with a compact status table:
completed:
- lane:
result:
artifact:
verification:
merged:
- PR:
commit:
remaining:
- blocker_or_risk:
next_action:
remote_truth:
- open_prs:
- open_issues:
- checked_pr_heads:
- checked_review_threads:
- checked_ci:
- origin_main_sha:
- stale_base:
- remote_refreshes:
active_skill_source:
- path:
- source_sha:
local_state:
- dirty_worktree:
- stale_worktree:
- high_context_file:
threads_run_log:
- mode:
- native_subagents:
- explicit_thread_request:
- spawn_requirement:
- native_thread_evidence:
spawned_agents:
- no_spawn_reason:
- truth_level:
- lanes_total:
- queue_items_total:
- queue_bounds:
max_items:
max_model_calls:
planned_items:
planned_model_calls:
planned_seconds:
items_processed:
model_calls_used:
time_budget:
elapsed_seconds:
checkpoint_every_items:
queue_tranche:
- context_budget:
soft_stop_ratio:
hard_stop_ratio:
critical_stop_ratio:
- output_firewall:
raw_log_policy:
artifact_root:
- failure_codes:
- verification:
fresh:
- remote_closure:
checked:
- run_log:
path:
write_status:
no_log_reason:Separate remote truth from local machine state in all GitHub queue final reports. State when a branch is merged remotely but local main is stale, dirty, diverged, or a worktree branch is no longer tied to an open remote branch.
For GitHub queue work, include remote closure fields:
remote_closure:
- open_prs:
- open_issues:
- touched_pr_unresolved_review_threads:
- touched_pr_unanswered_review_comments:
- historical_unresolved_review_threads:
- deleted_remote_branches:
- local_cleanup_left:done_when is already true, stop. Treat adjacent runtime repair or another repository as a new authorization decision.stale_remote_state and refresh/rebase only through an explicit gate; do not silently continue on a stale base.evals/evals.json; use them when changing the skill description, dispatch modes, or near-boundary "thread" wording.© majiayu000, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
SKILL.md and 8 other files (scripts, references) in skills/threads of majiayu000/spellbook.
Open the folder on GitHubat commit ed52af7
Threads next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Threads this skillmajiayu000/spellbook | 287 | — | ~8.7k | Automated safety check: Pass | MIT | |
| Badstephenleo/bmad-autonomous-development | 107 | — | ~7.7k | Automated safety check: Pass | MIT | |
| Blitzaiskillstore/marketplace | 430 | — | ~2.8k | Automated safety check: Pass | None | |
| Vibe Kanbanaiskillstore/marketplace | 430 | — | ~4.4k | Automated safety check: Notes | None | |
| PRP Workstream OrchestratorWirasm/prp | 2.3k | — | ~3.5k | Automated safety check: Pass | MIT | |
| Codex Issue Coordinatorowainlewis/blueprint | 412 | — | ~2.6k | Automated safety check: Pass | MIT |
stephenleo/bmad-autonomous-development
BMad Autonomous Development — orchestrates parallel story implementation pipelines.
aiskillstore/marketplace
This skill should be used when parallelizing multi-issue sprints using git worktrees and parallel Claude agents.
aiskillstore/marketplace
Manage AI coding agents on a visual Kanban board. An agent skill from aiskillstore/marketplace.
Wirasm/prp
Coordinates several PRP workstreams in isolated Git worktrees from one session, verifying proof, holding merge gates and sequencing the merges.
owainlewis/blueprint
Lets one Codex thread run a batch of GitHub issues through separate worker threads, each with its own worktree, branch, tested pull request and gated merge.
vlinx-io/VelaTerm
Explicitly spawn a standalone child session under the current vlx-term session, passing the task in as its first message (mirrors spawntask).
majiayu000/spellbook
Audits and repairs how coding-agent Skills are owned, copied and exposed across runtimes, from canonical sources to quarantine and retirement.
majiayu000/spellbook
Scans a repository for real evidence and proposes, or on request writes, a small stack of root and scoped AGENTS.md files with validation commands and generated-file boundaries.
majiayu000/spellbook
Plans, produces or diagnoses evidence-backed product demo videos: script, capture plan, pacing checks and verified final media built on real product behavior.
majiayu000/spellbook
Single entry point that routes long or ambiguous agent tasks, checks live state, bounds autonomous loops and leaves a resumable handoff.
majiayu000/spellbook
Scans a repository, its lockfiles and node_modules for known malicious npm package versions and install-time indicators, using a read-only Python scanner.
majiayu000/spellbook
Product management helpers: a RICE scoring script, an interview transcript analyzer and PRD templates for prioritizing features, synthesizing research and writing requirements.
Works with
Categories
A skill your agent uses when the user explicitly asks for $threads, Codex-native subagents, 开几个子 agent, or a GitHub issue/PR queue needing parallel lanes, worktrees, review/merge gates, and closure…. Threads is an agent skill from majiayu000/spellbook. Use when the user explicitly asks for $threads, Codex-native subagents, 开几个子 agent, or a GitHub issue/PR queue needing parallel lanes, worktrees, review/merge gates, and closure audit.
Threads fits situations like: the user explicitly asks for $threads; Codex-native subagents; A GitHub issue/PR queue needing parallel lanes; review/merge gates.
Run `npx skills add majiayu000/spellbook --skill threads -a claude-code`. Or copy the skill folder (skills/threads in majiayu000/spellbook) into .claude/skills/threads in your project. Claude Code loads it when a task matches its description.
Run `npx skills add majiayu000/spellbook --skill threads -a codex`. Or copy the skill folder (skills/threads in majiayu000/spellbook) into .agents/skills/threads in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add majiayu000/spellbook --skill threads -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/threads, .gemini/skills/threads, .github/skills/threads and .opencode/skills/threads in your project.
Going by SKILL.md and its folder, Threads needs Python for the scripts in its folder and the command-line tools its instructions call (git, gh and cargo). Our summary lists: Python 3. Compatibility (from SKILL.md): Requires Codex with native subagent support..
SKILL.md contains no URLs. Its commands use git and gh, which can reach the network depending on how they are called. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. The check reads SKILL.md only: the scripts in the folder are not scanned, so read them before running anything.
Threads is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 8.7k tokens (SKILL.md is roughly 35k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full. Its references folder adds about 9k tokens, read only when the agent opens those files.
Skills that share tags, products or a category with Threads: Bad (stephenleo/bmad-autonomous-development, 107 stars), Blitz (aiskillstore/marketplace, 430 stars), Vibe Kanban (aiskillstore/marketplace, 430 stars) and PRP Workstream Orchestrator (Wirasm/prp, 2.3k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
majiayu000 (a GitHub user) maintains it in majiayu000/spellbook, which has 287 GitHub stars. The repository holds 97 skills in this directory. The repository was last updated on October 8, 2026.
Source: majiayu000/spellbook on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.