From waggle
Orchestrates autonomous task execution via current session, tmux parallel, or Scheduled Tasks. Fetches ready tasks, validates working directories, and dispatches to the chosen execution mode. Use this skill whenever the user wants to do, run, process, start, dispatch, or launch tasks — including parallel execution, batch processing, or working on the next ready task. Explicit execution requests that name a task ID or title (e.g. "execute the X task", "run task ID …") enter through this skill so the Ready-state transition runs through the standard quality gate. Triggers on: "do the next task", "process tasks", "execute tasks", "ready tasks", "run tasks", "start tasks", "dispatch", "launch tasks", "work on next task", "parallel execution", "batch process".
How this skill is triggered — by the user, by Claude, or both
Slash command
/waggle:executing-tasksThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
You orchestrate the execution of tasks. Tasks can be executed one at a time in the current session, or in parallel (tmux panes in Terminal CLI / Scheduled Tasks in Claude Desktop and Cowork).
You orchestrate the execution of tasks. Tasks can be executed one at a time in the current session, or in parallel (tmux panes in Terminal CLI / Scheduled Tasks in Claude Desktop and Cowork).
This skill runs as a multi-step pipeline, but the user only needs its outcomes. Do not narrate step transitions ("Now I'll...", "X done, next Y") and do not relay protocol internals — provider detection, config/schema checks, cache state, validation plumbing, view-server pushes. Surfacing them buries what actually matters.
Emit user-facing text only when it changes something for the user:
Invoke the bootstrap-session skill to establish the active provider and current user.
Skip if active_provider and current_user are already set in this conversation.
After loading the provider SKILL.md and config, verify Core fields exist in the Tasks data source (same check as managing-tasks). Required Core fields (15): Title, Description, Acceptance Criteria, Status, Blocked By, Priority, Executor, Requires Review, Execution Plan, Working Directory, Session Reference, Dispatched At, Agent Output, Error Message, Issuer.
If any Core field is missing, follow the active provider SKILL.md's instructions for handling missing fields (auto-repair or stop, as defined per provider).
Subtasks are eligible for execution regardless of their parent task's status. The parentTask field does not affect dispatch readiness. After a subtask completes and its Status is updated, the status cascading logic (defined in managing-tasks) must be triggered to check whether the parent should auto-transition.
Acknowledged At exists in the schema and is null, update it to the current ISO 8601 timestamp (silent, no user prompt).current_user.id
execution_environment = "cli" → Executor in ("cli", "claude-desktop", "cowork")execution_environment = "claude-desktop" → Executor in ("cli", "claude-desktop", "cowork")execution_environment = "cowork" → Executor = "cowork"current_user.idFor each fetched task:
test -d "$WORKING_DIR"
test -d). Only verify the field is non-empty.For each task that passed Working Directory validation, invoke the validating-fields skill to check that all required fields are in place for the In Progress transition. Pass the task data and target status "In Progress" to the skill; it will construct the canonical JSON, run its validator, and return {valid, errors, warnings}.
Parse the result:
valid: false: present each error to the user and ask them to fill the gaps via AskUserQuestion. After filling, update the task and invoke validating-fields again.valid: true with warnings: present warnings but proceed with dispatch.Only dispatch when validation passes (valid: true).
After the Rubric gate passes, invoke the reviewing-quality skill in cache-only mode for each task. Dispatch is a hot path — live Reviewer invocation is forbidden here per the protocol Quality Spec.
The skill reads the task's Quality Verdict cache and returns one of:
PASS → dispatch continues without further prompt.NEEDS_REFINEMENT or REJECT → surface the cached gaps and suggested fixes, then ask the user [Refine via /planning-tasks] [Dispatch anyway]. On "Dispatch anyway", proceed; on "Refine", remove the task from this dispatch batch.UNREVIEWED (cache miss — never reviewed; legacy or Notion-UI-edited task) → the task carries no verdict and the In Progress promotion below cannot be written without one. Route the user to [Refine via /planning-tasks] (which writes a real verdict) or rely on the running-daily-tasks Step 2.6 catch-net; do not offer a verdict-less "Dispatch anyway". (Worthiness:* tagged tasks do not return UNREVIEWED here — reviewing-quality returns a worthiness-skip PASS with a verdict_string, so they dispatch without a prompt.)Atomic promotion (required). The provider write that sets Status = In Progress must carry the task's existing verdict forward — include the Quality Verdict property set to the verdict_string returned by the cache-only check, in the same update_properties payload. A write that promotes the task to In Progress (a Ready+ status) without a valid verdict is rejected before it reaches the provider. The verdict already exists on the page from the Ready promotion, so this is a one-line carry-forward, not a re-review.
The override path for verdict quality is always available; the dispatch gate is advisory on PASS-vs-NEEDS_REFINEMENT, but the presence of some valid verdict is enforced by the provider guard. Catch-net for bypass cases is running-daily-tasks Step 2.6 (which DOES invoke live Reviewer) and monitoring-tasks --deep.
Display the validated task(s) with a "Ready for dispatch" confirmation:
Display the task list:
Executable tasks:
1. [Urgent] Feature Login → /home/user/project-a
2. [High] API Tests → /home/user/project-b (branch: feature/api)
3. [Medium] Fix Bug #42 → /home/user/project-c
Use AskUserQuestion to choose execution method:
Terminal CLI (execution_environment = "cli"):
| Option | Description |
|---|---|
| One at a time (Recommended) | Select one task and execute in the current session |
| tmux parallel execution | Execute multiple tasks simultaneously in tmux panes |
Claude Desktop (execution_environment = "claude-desktop"):
| Option | Description |
|---|---|
| One at a time (Recommended) | Select one task and execute in the current session |
| Scheduled Task parallel creation | Register each task as a one-time Scheduled Task (fireAt) for parallel execution |
Cowork (execution_environment = "cowork"):
| Option | Description |
|---|---|
| One at a time (Recommended) | Select one task and execute in the current session |
| Scheduled Task parallel creation | Register each task as a one-time Scheduled Task (fireAt) for parallel execution |
cd <Working Directory>git checkout <branch> || git checkout -b <branch>tmux-parallel.md (this directory) and follow Phases 3–6.Load desktop-parallel.md (this directory) and follow Steps 1–6.
See dispatch-prompt.md in this directory.
When generating the dispatch prompt for each task, replace the <ON_COMPLETION_BLOCK> placeholder with the active provider's On Completion Template:
<task_id> → the actual task page ID / row ID<db_path> → the actual database path (SQLite/Turso providers)${CLAUDE_SKILL_DIR} substitutions the dispatcher must resolve. The dispatcher resolves those paths to absolute paths before injection.<ON_COMPLETION_BLOCK>${CLAUDE_SKILL_DIR} or ${CLAUDE_PLUGIN_ROOT} should remain in the final dispatch promptTerminal CLI: If tmux is unavailable, fall back to sequential execution via the Agent tool:
For each task:
task-agent agent using the Agent tool with the assembled dispatch promptSession ReferenceAgent Output, transition Status per Requires ReviewError Message, set Status → "Blocked"Claude Desktop / Cowork: If Scheduled Task creation fails, fall back to executing one at a time within the current session (same flow as "One at a time").
--dangerously-skip-permissionsCreates, edits, and optimizes skills for Claude Code, including drafting, evaluating with test prompts, iterating on performance, and improving skill descriptions for better triggering accuracy.
npx claudepluginhub kazukinagata/waggle --plugin waggle