Skip to content
Development
Skill

/close-all

Batch-close all complete increments by delegating each one to `sw:done`. Discovers active/ready-for-review increments with zero pending tasks, then iterates and calls `sw:done` per increment. Use when saying "close all", "close stuck increments", or "batch close".

From plugin
specweave
15651 skills20 agents73 commands
Install
$ npx -y skills add anton-abyzov/specweave --skill close-all --agent claude-code

How it fires

How this skill gets triggered: by you, by Claude, or both.

  • Fires itselfAuto-invocation. Claude auto-loads it when your prompt matches the work.Auto-invocation is when the right skill fires by itself at the right moment, driven by a FLOW.md router and a hook, instead of you invoking it by name. It is the difference between a skill being installed and a skill actually getting used.Read the full definition →
  • You can call itInvoke it directly when you want it.
  • Slash command/close-all

Context preview

The summary Claude sees to decide when to auto-load this skill.

Batch-close all complete increments by delegating each one to `sw:done`. Discovers active/ready-for-review increments with zero pending tasks, then iterates and calls `sw:done` per increment. Use when saying "close all", "close stuck increments", or "batch close".

SKILL.md

close-all.SKILL.md
name: close-all
description: Batch-close all complete increments by delegating each one to `sw:done`. Discovers active/ready-for-review increments with zero pending tasks, then iterates and calls `sw:done` per increment. Use when saying "close all", "close stuck increments", or "batch close".
version: 1.0.0
argument-hint: "[--dry-run]"

Batch Close All Complete Increments

Closes all active increments that have reached 100% task completion by delegating each one to `sw:done`. This skill is a thin batch-discovery loop; all actual closure logic (gates, reports, sync) lives in `sw:done`.

Step 1: Discover Closeable Increments

for meta in $(find .specweave/increments -maxdepth 2 -name "metadata.json" | sort); do
  st=$(jq -r '.status' "$meta" 2>/dev/null)
  [ "$st" != "active" ] && [ "$st" != "in-progress" ] && [ "$st" != "ready_for_review" ] && continue
  d=$(dirname "$meta"); id=$(basename "$d"); tasks="$d/tasks.md"
  [ ! -f "$tasks" ] && continue
  pending=$(grep -c '\[ \]' "$tasks" 2>/dev/null || echo 0)
  done_count=$(grep -c '\[x\]' "$tasks" 2>/dev/null || echo 0)
  if [ "$pending" -eq 0 ] && [ "$done_count" -gt 0 ]; then
    echo "CLOSEABLE: $id"
  fi
done

If no closeable increments are found, report "No increments ready for closure" and stop.

Step 2: Dry-run

If the user passed `--dry-run`, print the discovered list and stop without closing anything.

Step 3: Delegate each to `sw:done`

Iterate the discovered list sequentially. For each `<ID>`:

Skill({ skill: "sw:done", args: "<ID>" })

`sw:done` owns the actual closure workflow: code-review, simplify, grill, judge-llm, PM validation, external sync, and final status transition. Close sequentially to respect dependency order; if `sw:done` fails for an increment, log the failure and continue with the next.

Step 4: Summary

Print a final summary with CLOSED / FAILED counts per increment. Failures are not retried here — the user re-runs `sw:done <ID>` individually once blockers are resolved.

Notes

  • All gate logic lives in `sw:done`. This skill MUST NOT duplicate closure behaviour.
  • Parallel closure is intentionally not supported — race conditions on shared living docs are a real hazard.
Read more
Ships withspecweave

Spec-first AI development: describe a feature → AI creates spec + plan + tasks, builds autonomously, syncs to GitHub/JIRA. Domain-expert skills for PM, Architect, Frontend, QA learn your patterns permanently. Claude Code, Codex, Cursor, Copilot & more.

Get the whole plugin