Source profileQuality 91/100

Jamie-BitFlight/claude_skills/.claude/skills/swarm-from-markdown/SKILL.md

swarm-from-markdown

Parse a markdown file's unchecked checkbox items (- [ ]) and generate a self-organizing Claude Code swarm task pool. Use when you have a todo.md, checklist.md, or any markdown file with checkbox items and want to dispatch them as parallel swarm tasks using TeamCreate + TaskCreate + worker agents. Skips checked items (- [x] / - [X]) automatically.

Source repository stars
64
Declared platforms
1
Static risk flags
0
Last source update
2026-08-28
Source checked
2026-08-28

Decision brief

What it does: where it fits

Converts a markdown checklist file into a self-organizing Claude Code swarm. Each unchecked - [ ] item becomes a TaskCreate call and a spawned worker agent. Checked items (- [x], - [X]) are skipped automatically.

Best for

  • You have a todo.md, checklist.md, or any markdown file with - [ ] checkbox items
  • You want to dispatch independent checklist items as parallel swarm tasks
  • You need to avoid hand-expanding long task lists into manual TaskCreate loops

Not for

  • Tasks that require unconfirmed production actions or broad system permissions.
  • Environments where the pinned source and install steps cannot be inspected.

Compatibility matrix

Platform support, with evidence labels

PlatformStatusEvidenceWhat to check
CodexNot declaredNo explicit evidencePortability before use
Claude CodeDeclaredSource recordInstall path and trigger
CursorNot declaredNo explicit evidencePortability before use
Gemini CLINot declaredNo explicit evidencePortability before use
Open the compatibility checker

Installation

Inspect first. Install second.

The source command is displayed only when detected. A safe inspection prompt is always available so your agent can explain every action before execution.

Source-detected install commandSource
npx skills add https://github.com/Jamie-BitFlight/claude_skills --skill ".claude/skills/swarm-from-markdown"
Safe inspection promptEditorial

Inspect the Agent Skill "swarm-from-markdown" from https://github.com/Jamie-BitFlight/claude_skills/blob/a00194f25fec502d3d659b7d610369614967251e/.claude/skills/swarm-from-markdown/SKILL.md at commit a00194f25fec502d3d659b7d610369614967251e. List every install step, command, network request, credential, file read/write, external action, and rollback step. Explain whether it fits my task. Do not install or execute anything until I approve.

Workflow

What the source asks the agent to do

  1. 01

    Quick Start (Worked Example)

    Then orchestrate the swarm:

    Then orchestrate the swarm:The [x] checked item never appears in any TaskCreate call.
  2. 02

    When to Use This Skill

    You have a todo.md, checklist.md, or any markdown file with - [ ] checkbox items

    You have a todo.md, checklist.md, or any markdown file with - [ ] checkbox itemsYou want to dispatch independent checklist items as parallel swarm tasksYou need to avoid hand-expanding long task lists into manual TaskCreate loops
  3. 03

    How It Works

    1. Parse the markdown file using the marko GFM AST (not regex). 2. Walk the AST: collect ListItem nodes whose child Paragraph has checked is False. 3. Assign each item a 0-based index — worker-{index} — over unchecked items only. 4. Derive team name from the filename stem: swarm…

    Parse the markdown file using the marko GFM AST (not regex).Walk the AST: collect ListItem nodes whose child Paragraph has checked is False.Assign each item a 0-based index — worker-{index} — over unchecked items only.
  4. 04

    marko AST Walk (GFM Checkbox Detection)

    The checkbox checked attribute lives on the Paragraph child of a ListItem, not on the ListItem itself. The guard child.checked is not False skips both checked items (True) and non-checkbox list items (None).

    The checkbox checked attribute lives on the Paragraph child of a ListItem, not on the ListItem itself. The guard child.checked is not False skips both checked items (True) and non-checkbox list items (None).Marko normalizes [x] and [X] to checked=True at parse time — no separate patterns needed.
  5. 05

    CLI Script Reference

    Review the “CLI Script Reference” section in the pinned source before continuing.

    Review and apply the “CLI Script Reference” source section.

Permission review

Static risk signals and limitations

No configured static risk pattern was detected

This is not proof of safety. Runtime behavior, indirect dependencies, and hidden external systems are outside the static scan.

Evidence record

Why each signal appears

EvidenceSourceComputedTestedEditorial
SignalValueEvidence typeMeaning
Quality score91/100ComputedDocumentation, specificity, maintenance, and trust rules
Repository stars64SourceRepository attention, not individual Skill quality
Compatibility1 platformsSourceDeclared in the catalog source record
Usage guideautomated source guideEditorialGenerated or reviewed according to the visible evidence level

Pinned source

Provenance and original SKILL.md

Repository
Jamie-BitFlight/claude_skills
Skill path
.claude/skills/swarm-from-markdown/SKILL.md
Commit
a00194f25fec502d3d659b7d610369614967251e
License
MIT
Collected
2026-08-28
Default branch
main
View the original SKILL.md

Swarm from Markdown

Converts a markdown checklist file into a self-organizing Claude Code swarm. Each unchecked - [ ] item becomes a TaskCreate call and a spawned worker agent. Checked items (- [x], - [X]) are skipped automatically.

When to Use This Skill

Use when:

  • You have a todo.md, checklist.md, or any markdown file with - [ ] checkbox items
  • You want to dispatch independent checklist items as parallel swarm tasks
  • You need to avoid hand-expanding long task lists into manual TaskCreate loops
  • Your task list changes over time and you want stable worker IDs for resumption

Quick Start (Worked Example)

Given tasks.md:

- [ ] Implement the login endpoint
- [x] Already done — skip this
- [ ] Write unit tests for auth
- [ ] Update API documentation

Run the parser:

uv run scripts/markdown_to_task_pool.py tasks.md --json

Output:

{
  "team_name": "swarm-tasks",
  "items": [
    {"index": 0, "worker_id": "worker-0", "text": "Implement the login endpoint"},
    {"index": 1, "worker_id": "worker-1", "text": "Write unit tests for auth"},
    {"index": 2, "worker_id": "worker-2", "text": "Update API documentation"}
  ],
  "worker_count": 3
}

Then orchestrate the swarm:

// Step 1 — Create team
TeamCreate({ team_name: "swarm-tasks" })

// Step 2 — Create one task per unchecked item (checked item is excluded)
TaskCreate({ subject: "Implement the login endpoint", description: "Implement the login endpoint", activeForm: "Working on Implement the login endpoint..." })
TaskCreate({ subject: "Write unit tests for auth", description: "Write unit tests for auth", activeForm: "Working on Write unit tests for auth..." })
TaskCreate({ subject: "Update API documentation", description: "Update API documentation", activeForm: "Working on Update API documentation..." })

// Step 3 — Spawn one worker per task (or use --workers N to cap concurrency)
Agent({ team_name: "swarm-tasks", name: "worker-0", subagent_type: "general-purpose", prompt: "...", run_in_background: true })
Agent({ team_name: "swarm-tasks", name: "worker-1", subagent_type: "general-purpose", prompt: "...", run_in_background: true })
Agent({ team_name: "swarm-tasks", name: "worker-2", subagent_type: "general-purpose", prompt: "...", run_in_background: true })

// Step 4 — Observe pool state
TaskList()

The [x] checked item never appears in any TaskCreate call.

How It Works

  1. Parse the markdown file using the marko GFM AST (not regex).
  2. Walk the AST: collect ListItem nodes whose child Paragraph has checked is False.
  3. Assign each item a 0-based index — worker-{index} — over unchecked items only.
  4. Derive team name from the filename stem: swarm-{stem}.
  5. Emit JSON or human-readable output showing the TaskCreate sequence and worker count.

Worker IDs are stable when items are only appended: re-running on the same file with new items added at the end preserves existing IDs. Checking (completing) an earlier item shifts all subsequent unchecked items to lower indices — do not resume a partially-executed swarm after checking items mid-list.

marko AST Walk (GFM Checkbox Detection)

The checkbox checked attribute lives on the Paragraph child of a ListItem, not on the ListItem itself. The guard child.checked is not False skips both checked items (True) and non-checkbox list items (None).

from marko import Markdown
from marko.block import List, ListItem, Paragraph
from marko.inline import RawText

md = Markdown(extensions=["gfm"])
doc = md.parse(markdown_text)  # parse() returns AST — do NOT call md() which returns HTML

results = []
for node in doc.children:
    if not isinstance(node, List):
        continue
    for item in node.children:
        if not isinstance(item, ListItem):
            continue
        for child in item.children:
            if not isinstance(child, Paragraph) or not hasattr(child, "checked"):
                continue
            if child.checked is not False:  # True=checked, None=non-checkbox — both skip
                continue
            text_parts = [c.children.strip() for c in child.children if isinstance(c, RawText)]
            text = " ".join(text_parts).strip()
            if text:
                results.append(text)

Marko normalizes [x] and [X] to checked=True at parse time — no separate patterns needed.

CLI Script Reference

uv run scripts/markdown_to_task_pool.py <markdown_file> [--workers N] [--json] [-h]
ArgumentDescription
markdown_filePath to markdown file with checkbox items
--workers NNumber of worker agents to spawn (default: number of unchecked items)
--jsonEmit JSON instead of human-readable output
-hShow help

Examples:

# Human-readable output
uv run scripts/markdown_to_task_pool.py todo.md

# JSON output (pipe to orchestration script)
uv run scripts/markdown_to_task_pool.py tasks.md --json

# Cap workers at 3 regardless of item count
uv run scripts/markdown_to_task_pool.py tasks.md --json --workers 3

--workers N overrides the worker count while item count stays unchanged. Use it to cap concurrency when you have many items but want fewer parallel agents.

TeamCreate + TaskCreate Call Flow

Full orchestration for a file with N unchecked items:

// 1. Parse the file
// uv run scripts/markdown_to_task_pool.py <file> --json
// → { "team_name": "swarm-{stem}", "items": [...], "worker_count": N }

// 2. Create team
TeamCreate({ team_name: "swarm-{stem}" })

// 3. Create tasks — one per unchecked item (loop over items array from script output)
// Each unchecked item becomes one task; checked items are absent from items array
// See the worked example above for concrete TaskCreate calls

// 4. Spawn workers — one per item (or --workers N if capped)
Agent({ team_name: "swarm-{stem}", name: "{item.worker_id}", subagent_type: "general-purpose", prompt: WORKER_PROMPT, run_in_background: true })
// ... repeated for each worker

// 5. Observe and synthesize
TaskList()
// Collect findings via SendMessage team-lead channel

Worker Prompt Template

Each worker receives this 8-step self-organizing prompt, parameterized by {team_name} and {worker_id}:

You are swarm worker {worker_id} in team {team_name}.

Your job loop:
1. Call TaskList() to see all tasks in the pool.
2. Find a task with status 'pending' and no owner field set.
3. Claim it: call TaskUpdate with owner={worker_id} and status='in-progress'.
4. Re-read the task description and do the actual work.
5. Mark it done: call TaskUpdate with status='complete' and add a result summary.
6. Send your findings to the team-lead: SendMessage({ type: "direct_message", recipient: "team-lead", content: "Completed: {task subject} — {summary}" }).
7. Repeat from step 1 until TaskList() shows no pending tasks with no owner.
8. Send shutdown acknowledgment: SendMessage({ type: "shutdown_acknowledgment", recipient: "team-lead", content: "No tasks remain. Shutting down." }).

All workers run the same prompt. They race to claim tasks and naturally load-balance — no central coordinator needed.

Output Contract

JSON schema emitted by --json:

{
  "team_name": "swarm-{stem}",
  "items": [
    {"index": 0, "worker_id": "worker-0", "text": "First unchecked item text"},
    {"index": 1, "worker_id": "worker-1", "text": "Second unchecked item text"}
  ],
  "worker_count": 2
}
  • team_name: swarm- prefix + markdown filename stem (no extension)
  • items: only unchecked items — checked items are absent
  • index: 0-based over unchecked items only
  • worker_id: worker-{index}
  • worker_count: defaults to len(items); overridden by --workers N

Exit codes: 0 on success (including zero-item case), 1 on file-not-found or parse failure.

Source Pattern

This skill automates the manual TaskCreate loop at lines 109-114 of ../swarm-patterns/SKILL.md (Pattern 3: Self-Organizing Swarm).

The "Todo-Driven Delegation" pattern — parsing todo.md checkbox items and generating worker assignments from item indices — originates in the Octogent agent framework:

SOURCE: ../../../research/agent-frameworks/octogent.md lines 51-53 (accessed 2026-05-19): "todo.md contains markdown checkbox items. The runtime parses these items and generates worker prompts from them. Incomplete items automatically become worker assignments in swarm runs, and terminal IDs like <tentacle-id>-swarm-0 are derived from parsed item indices."

Frequently asked questions

What to verify before installation and use

What does the swarm-from-markdown source document cover?

Converts a markdown checklist file into a self-organizing Claude Code swarm. Each unchecked - [ ] item becomes a TaskCreate call and a spawned worker agent. Checked items (- [x], - [X]) are skipped automatically.

How do I install swarm-from-markdown?

The source record exposes this install command: npx skills add https://github.com/Jamie-BitFlight/claude_skills --skill ".claude/skills/swarm-from-markdown". Inspect the command and pinned source before running it.

Which Agent platforms does the source record declare?

The pinned source record declares support for: claude code.

Alternatives

Compare before choosing

Computed 100147

oaustegard/claude-skills

featuring

Generate hierarchical _FEATURES.md files that describe what a codebase DOES from a user/consumer perspective, anchored to source symbols via tree-sitting. Supports large complex codebases through feature-driven decomposition into sub-feature files. Uses a multi-pass synthesis: orientation → detail → overview rewrite. Use when someone says "what does this do", "document features", "feature inventory", "_FEATURES.md", or needs to understand a codebase's purpose before modifying it. Complements tre

Computed 100108

apollographql/skills

skill-creator

Guide for creating effective skills for Apollo GraphQL and GraphQL development. Use this skill when: (1) users want to create a new skill, (2) users want to update an existing skill, (3) users ask about skill structure or best practices, (4) users need help writing SKILL.md files.

Computed 10061

terrylica/cc-skills

draft-park

Park a draft message/text in macOS Notes for the operator to review and edit, then read it back before acting (e.g. before sending to a real person). Notes is the source of truth (AppleScript CRUD, iCloud-synced, provenance-stamped with the Claude Code session UUID); Stickies is a best-effort view-only desktop mirror. Use whenever you draft something a human should confirm/edit before it is sent or committed — messages, replies, announcements, anything outbound. TRIGGERS - park this draft, park

Computed 1008

narrative-io/narrative-skills-marketplace

design-analysis

Translate a fuzzy analytical question into a rigorous investigation plan. Interrogates the ask, grounds the plan in the available data dictionary, applies analytical best practices, and produces a structured brief of query specifications for a downstream query-writing skill. Plans, does not write SQL. Use when: "why did X drop", "is there a relationship between A and B", "who are our highest-value customers", "what's driving the change in Y", "investigate this trend", "design an analysis for", "