本文へ移動
cccskills
無料GitHub で公開

org-dispatch

Run an org-team workflow — a flat pod of up to four peer Claude Code sessions claims lane-tagged slices of an approved spec over the baseline MCP channel and implements them concurrently, each in its own git worktree. Each peer DECIDES its own in-lane implementation choices in its own main context (Article X); only un-decidable or cross-lane forks escalate peer→lead→human (yield_fork for task-bound forks, ask_lead for free-form queries). Opt-in and OFF by default (velocity.org_mode.enabled). Graduates the retired sprint-dispatch prototype into the constitutionally-sanctioned org-team model (Article X — Multi-session coordinated workflows). Requires git.

インストール方法を見る

含まれるファイル(5)

  • SKILL.md8.4 KB
  • org-mode.mjs4.0 KB
  • peer-select.mjs425 B
  • worktree.mjs4.1 KB
  • yield-arbiter.mjs1.2 KB

SKILL.md(原文)

インストールする前に、エージェントに与えられる指示の中身を確認できます。

org-dispatch — run an org-team over the coordination channel

org-dispatch is the execution engine of the org-team model: a flat pod of up to four peer Claude Code sessions claims lane-tagged slices of an approved spec and implements them concurrently over the baseline MCP channel, each peer in its own git worktree, so per-feature wall-clock approaches the slowest lane instead of the sum. It is the multi-session counterpart to swarm-dispatch (which parallelizes components of one spec inside one session via bounded subagents).

It is governed by Article X — Multi-session coordinated workflows (a different axis from Article II, which governs intra-session delegation and is untouched). The load-bearing difference from the retired sprint-dispatch sandbox: a peer decides its own in-lane implementation choices in its own main context — it does not bounce every fork to the lead. Only un-decidable or cross-lane forks escalate.

Gate: opt-in, off by default, git required

node .claude/skills/org-dispatch/org-mode.mjs gate   # wraps org-mode.mjs -> orgDispatchGate

If the gate refuses, stop — org mode is the opt-in fence (and worktree isolation requires git).

The run loop (lead, in main context)

  1. Decompose into lanes. Read the approved spec and its dependency DAG. Each lane is one channel task {id, lane, write_set, depends_on, assignee?} (org-mode.toLaneTasks). Write the tasks into the channel state and a durable plan (harness/plan-store.createPlan). A lane carries a domain tag the claiming peer inherits — its in-lane decision latitude. No sprint manifest is required: a lane is just a fully-specified task. The lead may also enqueue_task ad-hoc lanes at any time — peers can be handed tasks with no sprint in place; the pool is enabled by velocity.org_mode.enabled alone.

  2. Allocate: claim-any or directed. Leave a lane's assignee unset for claim-any (the first free peer wins) — simplest, but one fast peer can monopolize the queue while others idle. Set assignee to a peer_id for a directed lane that only that peer may claim — this is the lead's control to spread load across the pod or hand a specific lane to a named peer. claim_task enforces it server-side (a non-assignee claim is rejected); the task-available push carries the assignee so a well-behaved peer skips a lane that is not its own.

  3. Select the pod (peer-select.selectPeerClass): if human-launched peer sessions are registered on the channel, the flat pod (up to four) works the lanes; otherwise the lead spawns bounded swarm-worker subagents as the fallback execution surface. The lead is one of the four — flat for claiming, plus the arbitration + human-escalation hat. 3.5. Isolate every peer before any lane is claimed. For each peer, run worktree.createPeerWorktree({rootDir, peer_id}). It returns the peer's own working directory and branch (org/<peer_id>), or {ok: false, reason}. A refusal stops the dispatch — never fall back to running peers in the primary tree, because two peers in one checkout each see the other's half-finished edits as their own working tree, and the first commit carries both. Re-running for a peer that already has a tree returns the same path, so a resumed dispatch does not tear down live work.

  4. Coordinate mid-flight. Peers claim_task (race-safe, single-winner), implement within their lane's write_set, signal_done to unblock dependents (pipeline, not a wave barrier).

    • A peer is always a peer, and knows which peer it is. A session connected as a peer never adopts the lead role and never declines a claimable lane on the belief that it is the lead, even if the same human also runs the workflow-lead session. The server bakes the session's peer_id and role into its instructions so it never guesses its identity.
    • Completion is reliable, not push-only. A pointer may reach a peer when a lane becomes claimable or done, and it may never arrive. The lead reconciles via sprint_status — its all_done flag is the authoritative, never-dropped completion check.
  5. In-lane decisions stay local. A peer that meets an in-lane implementation choice (classifyFork → decide) decides it in its own main context and proceeds. It does NOT escalate routine implementation latitude.

  6. Escalation spine (peer→lead→human). A peer that meets an un-decidable or cross-lane fork (classifyFork → escalate) escalates rather than guessing:

    • a task-bound un-decidable fork → yield_fork(task_id, fork_desc) (the lead records it via yield-arbiter.recordYield, arbitrates in main context, records the resolution, and re-dispatches);
    • a free-form question → ask_lead(body), which the lead reads off sprint_status. The lead arbitrates in main context, and if the fork needs human judgment it escalates to the human, then routes the decision back with answer_peer(message_id, answer).
  7. Audit, then land. On each signal_done, diff the peer's worktree against the wave baseline and pass the changed paths through swarm-dispatch/swarm_merge.mjs → auditChangedPaths({changed, writeSet}) — the same rule the swarm merge applies, so the two never drift. A violation lands nothing and preserves the worktree for inspection; report the offending paths and the lane's declared write_set. A clean audit applies the diff to the primary tree, then worktree.removePeerWorktree({rootDir, peer_id}). An empty write_set is a refusal, not a free pass.

  8. Round boundary. When a wave of independent lanes completes, the lead commits between rounds so a dependent round forks from fresh HEAD.

Constraints (what makes this constitutional — Article X)

  • Peers decide in-lane; they escalate out-of-lane. A peer is a full Claude Code session = its own main context, so its in-lane implementation decisions are Article-II-internal to that session. A cross-lane or un-decidable fork escalates — never a guess across lanes.
  • The human is the final authority. The escalation chain is peer→lead→human; consent gates (approve-spec / approve-swarm / grant-commit) stay structural and un-forgeable. No peer or lead path bypasses or self-satisfies a gate.
  • No new subagent. Peers are sessions, not subagents; swarm-worker remains the only declared subagent. Each peer session may itself run its own subagents — a per-session property, orthogonal to this charter.
  • Live hooks govern every peer write. The PreToolUse guards fire on peer writes exactly as for any session.
  • Off by default, git required. velocity.org_mode.enabled is the fence; worktree isolation requires git.

The live channel

The pod runs over the baseline MCP server registered in .mcp.json — a file-locked directory under .claude/state/sprint/<channel_id>/, so every session is on one machine and in one checkout. Peer tools: claim_task, signal_done, yield_fork, ask_lead; lead tools: enqueue_task, release_task, answer_peer, sprint_status, plus acquire_lead / release_lead, which hold one lead per channel (a second session that tries is refused, and the refusal names the holder). The free-form ask_lead/answer_peer pair is the peer→lead→human escalation channel; sprint_status is the lossless source of truth. A pointer naming a claimable lane may arrive from the host and shorten the wait, but it is an accelerator: it can be dropped, and nothing waits for one.

Relationship to other tracks

  • swarm-dispatch parallelizes components of one spec inside one session (bounded subagents, worktrees).
  • org-dispatch parallelizes lanes of one spec across multiple peer sessions (the flat pod).
  • The default 11-phase solo/swarm pipeline is unchanged; org is an added selectable track.

レビュー

まだレビューはありません。使ってみた感想をお寄せください。

同じリポジトリのスキル

概要と使いどころ

archive

無料

Phase 10.5 — move the slug's workflow artifacts (intake, scout, research, spec, approvals, swarm state, security reports, rendered diagrams) to docs/archive/<YYYY-MM-DD>/<slug>/. Runs before /commit so the committed tree is clean of work-in-flight files. workflow.json stays live and gets archived as the first step of /commit.

日本語の概要は準備中です。原文の説明を表示しています。

friedbotstudio/baseline142026年9月9日 更新

Drift check between the baseline implementation on disk and the claims in `docs/init/seed.md` + cross-references in CLAUDE.md, README.md, and the rendered docs site. Verifies hook/agent/skill/command names + counts, settings.json wiring, project.json key presence, .mcp.json servers, vendored license files, and helper script presence. Exit 0 PASS / 1 FAIL — suitable for CI. Read-only; safe to invoke any time.

日本語の概要は準備中です。原文の説明を表示しています。

friedbotstudio/baseline142026年9月9日 更新

PM-mode brainstorm helper. Captures the requirement via Socratic dialogue before any entry phase (`/intake`, `/spec`, `/tdd`) drafts its artifact. Stage 0 skip-check, Stage 1 gap-analysis, Stage 2 probe-loop, Stage 3 confirm-and-persist. Output lives at `docs/brief/<slug>.md`. Never proposes solutions — Stage 2 dialogue discipline is structurally enforced via `discipline.mjs`.

日本語の概要は準備中です。原文の説明を表示しています。

friedbotstudio/baseline142026年9月9日 更新

brd

無料

Draft a Business Requirements Document (BRD) for cross-functional or stakeholder-heavy work that needs more structure than an intake. Use after `/intake` when the request spans multiple systems/teams, carries regulatory weight, or needs formal sign-off. Output lives at `docs/brd/<slug>.md`.

日本語の概要は準備中です。原文の説明を表示しています。

friedbotstudio/baseline142026年9月9日 更新

chore

無料

Workflow track for tasks that need no TDD — documentation edits, governance count bumps, vendored-skill content updates, configuration tweaks, formatting, typo fixes, dependency bumps where no project code changes. Skips `/scenario` and `/implement` (no failing test to drive) and runs the work directly. `archive`, `memory-sync`, `/grant-commit`, and `/commit` remain mandatory. `verify`, `simplify`, `integrate`, and `document` are conditional — required when the diff hits one of the listed triggers, optional otherwise. `verify` is skipped only when the diff is pure-docs/prose AND `project.json → test.kind` is `behavior` (absent/invalid `test.kind` → `structural` → verify runs). Chore is a stripped-down pipeline, not a bypass; never silently skip a conditional phase whose triggers apply.

日本語の概要は準備中です。原文の説明を表示しています。

friedbotstudio/baseline142026年9月9日 更新

Analyze a codebase and recommend Claude Code automations (hooks, subagents, skills, plugins, MCP servers). Use when user asks for automation recommendations, wants to optimize their Claude Code setup, mentions improving Claude Code workflows, asks how to first set up Claude Code for a project, or wants to know what Claude Code features they should use.

日本語の概要は準備中です。原文の説明を表示しています。

friedbotstudio/baseline142026年9月9日 更新

friedbotstudio のスキルをすべて見る

このスキルの問題を報告する