Now liveThe Skillselion MCP - thousands of ranked skills, loaded into your agent mid-task. No install.Get it →
steloit avatar

Squad

  • 51 installs
  • Updated July 20, 2026
  • steloit/squad-skills

Run a safety-first multi-agent Squad pipeline (refine, plan, critique, build, shield, inspect) on work cards instead of one-shot codegen.

About

Squad is a journey-wide agent workflow from Steloit that coordinates multiple specialized agents—refiner, planner, critic, builder, shield, inspector, and ranger—through a safety-first, card-driven pipeline for solo and indie builders shipping with Claude or Codex-class models. Default provider configuration maps each role to Opus, Sonnet, or GPT-5.x variants and sets higher reasoning effort on planner and builder steps so planning and implementation stay deliberate rather than fast-but-wrong. Before any card moves forward, Squad demands codebase-first exploration: read relevant files, map interfaces, and follow existing patterns instead of guessing architecture. Cards that are too large, ambiguous, or unscoped against real code should split or return to squad-refine. Use it whenever you want agent squads to mirror a small team's refine-plan-review-build-ship discipline across validate scoping, build implementation, and ship security review—not a single chat thread improvising structure.

  • Seven pipeline roles: refiner, planner, critic, builder, shield, inspector, and ranger with per-provider model maps for
  • Safety-first mantra: speed is not the goal—codebase-first exploration before planning
  • Forbidden planning from assumptions; interfaces and dependencies must be confirmed in code
  • Card-split criteria send oversized or ambiguous cards back to squad-refine
  • Configurable reasoning_effort per Codex role (medium/high) for planner and builder depth

Squad by the numbers

  • 51 all-time installs (skills.sh)
  • Ranked #7,219 of 16,546 AI & Agent Building skills by installs in the Skillselion catalog
  • Data as of Aug 5, 2026 (Skillselion catalog sync)
npx skills add https://github.com/steloit/squad-skills --skill squad

Add your badge

Show developers this skill is listed on Skillselion. Paste this into your README.

Listed on Skillselion
Installs51
Last updatedJuly 20, 2026
Repositorysteloit/squad-skills

What it does

Run a safety-first multi-agent Squad pipeline (refine, plan, critique, build, shield, inspect) on work cards instead of one-shot codegen.

Files

SKILL.mdMarkdownGitHub ↗
Shared context: read shared.md for project config & auth, pipeline levels, status transitions, API endpoints, error handling, and agent context flow.
Safety principles: read principles.mdmandatory, not optional.

Commands

/squad or /squad list — View Board

BOARD=$(curl -sL "${AUTH_HEADER[@]}" "$BASE_URL/api/orgs/$SQUAD_ORG/board?project=$PROJECT&summary=true")

Output: markdown table with ID, Status, Priority, Title.

Epics: the board response carries an epics aggregate (each with children_progress and a derived epic_status). Group children under their epic from this aggregate + the embedded parent/children edges — never from tag parsing (see shared.mdTask Relationships & Epics). Show each epic's children_progress (e.g. 2/5 done).

/squad context — Session Handoff

Run first when starting a new session. Fetch board and output pipeline state: Implementing / Plan Review / Impl Review / Testing / Recently Done / Next Todo.

BOARD=$(curl -sL "${AUTH_HEADER[@]}" "$BASE_URL/api/orgs/$SQUAD_ORG/board?project=$PROJECT&summary=true")

/squad add <title> — Add Task

1. Ask user for priority, level (L1/L2/L3), description, tags (use AskUserQuestion) 2. Build JSON safely with jq (see shared.md → JSON Safety), POST to API, capture the new task ID. tags MUST be a JSON array — the canonical stored format the board renders. Split the user's comma-separated input into an array, e.g. --arg tags "$TAGS" then tags: ($tags | split(",") | map(gsub("^ +| +$";""))) in the jq body (no tags → omit the field or pass [], never ""). 3. Images: if the user gave image file path(s) (e.g. /squad add "Login bug" --image ./bug.png, or "attach ./shot.png"), upload each to the new task via the attachment API (see shared.md → "Upload an image attachment"). Output the task ID + the returned attachment url(s). A pasted image with no path → ask the user to save it to a file first (the upload reads a local file).

/squad move <ID> <status> — Move Task

Always follow `shared.md` → Move Protocol in order.
Step 1 (check current status + level) → Step 2 (consult the matrix) → Step 3 (execute the move).
On 400: self-correct once via the response's .allowed[0]; notify the user after 2 failures.

/squad edit <ID> — Edit Task

Ask user which fields to modify, then PATCH via API. To attach an image to an existing task, upload a local image file via the attachment API (shared.md → "Upload an image attachment").

/squad remove <ID> — Delete Task

curl -sL "${AUTH_HEADER[@]}" -X DELETE "$BASE_URL/api/orgs/$SQUAD_ORG/task/$ID?project=$PROJECT"

/squad stats — Statistics

Column counts come from the board summary; per-actor token/event totals come from a single GET /api/activity/stats call (server-side GROUP BY actor — no per-task loop, no board fetch for tokens).

export BOARD=$(curl -sL "${AUTH_HEADER[@]}" "$BASE_URL/api/orgs/$SQUAD_ORG/board?project=$PROJECT&summary=true")
export STATS=$(curl -sL "${AUTH_HEADER[@]}" "$BASE_URL/api/orgs/$SQUAD_ORG/activity/stats?project=$PROJECT")
python3 << 'PY'
import json, os

board = json.loads(os.environ['BOARD'])
stats = json.loads(os.environ['STATS'])
columns = ['todo', 'plan', 'plan_review', 'impl', 'impl_review', 'test', 'done']

# Column counts (summary is keyed by status, each an array of cards)
counts = {col: len(board.get(col, [])) for col in columns}
counts['total'] = sum(counts.values())
print("## Column Counts\n")
print("| Status | Count |")
print("|--------|-------|")
for col in columns:
    print(f"| {col} | {counts[col]} |")
print(f"| **total** | **{counts['total']}** |")

# Per-actor token/event stats — straight from the aggregate endpoint
rows = stats.get('stats', [])
totals = stats.get('totals', {})
print("\n## Agent Token Usage\n")
if not rows or totals.get('tokens', 0) == 0 and totals.get('events', 0) == 0:
    print("No token data")
else:
    print("| Actor | Events | Tokens (est.) |")
    print("|-------|--------|---------------|")
    for r in sorted(rows, key=lambda r: r.get('actor', '')):
        print(f"| {r.get('actor', 'unknown')} | {r.get('events', 0)} | {r.get('tokens', 0):,} |")
    print(f"| **Total** | **{totals.get('events', 0)}** | **{totals.get('tokens', 0):,}** |")
PY

/squad project — Current Project Context (AI Context Docking)

Fetch the current project's context from the projects table. Use this at the start of a session to load project purpose, stack, brief, relationships, and task counts in one call.

PROJECT_DATA=$(curl -sL "${AUTH_HEADER[@]}" "$BASE_URL/api/orgs/$SQUAD_ORG/projects/$PROJECT")

Output: formatted project context including:

  • Purpose (WHY this project exists)
  • Stack (technologies used)
  • Brief (compressed current state + direction + recent decisions)
  • Category and status
  • Task counts by status
  • Links to related projects

If the project is not registered, suggest running /squad-init to register it.

/squad project all — Full Project Map

Fetch all projects grouped by category. Useful for understanding the full project landscape.

ALL_PROJECTS=$(curl -sL "${AUTH_HEADER[@]}" "$BASE_URL/api/orgs/$SQUAD_ORG/projects")

Output: projects grouped by category (e.g. personal, tools, skills) with names and purposes.

/squad project brief — View/Update Project Brief

The brief is a compressed context summary (200–500 chars) that agents consume at low token cost.

View current brief:

curl -sL "${AUTH_HEADER[@]}" "$BASE_URL/api/orgs/$SQUAD_ORG/projects/$PROJECT" | jq -r '.brief // "No brief set"'

Set brief directly:

curl -sL "${AUTH_HEADER[@]}" -X PATCH "$BASE_URL/api/orgs/$SQUAD_ORG/projects/$PROJECT" \
  -H 'Content-Type: application/json' \
  -d '{"brief": "..."}'

AI-assisted update (`/squad project brief update`): 1. Fetch current project info + recent done tasks (GET /api/board?project=$PROJECT&summary=true) 2. Analyze: current state, recent completions, active direction 3. Draft a concise brief (200–500 chars) covering: what exists now, where we're heading, recent key decisions 4. Present to user for confirmation → PATCH to save

/squad project update <field> <value> — Edit Project Metadata

Update any project field via PATCH:

# Update purpose
curl -sL "${AUTH_HEADER[@]}" -X PATCH "$BASE_URL/api/orgs/$SQUAD_ORG/projects/$PROJECT" \
  -H 'Content-Type: application/json' \
  -d '{"purpose": "new purpose"}'

# Archive project
curl -sL "${AUTH_HEADER[@]}" -X PATCH "$BASE_URL/api/orgs/$SQUAD_ORG/projects/$PROJECT" \
  -H 'Content-Type: application/json' \
  -d '{"status": "archived"}'

Supported fields: name, purpose, stack, brief, status, category, repo_url.

/squad project link — Manage Project Relationships

# Add relationship
curl -sL "${AUTH_HEADER[@]}" -X POST "$BASE_URL/api/orgs/$SQUAD_ORG/projects/$PROJECT/links" \
  -H 'Content-Type: application/json' \
  -d '{"target_id": "other-project", "relation": "depends_on"}'

# Remove relationship
curl -sL "${AUTH_HEADER[@]}" -X DELETE "$BASE_URL/api/orgs/$SQUAD_ORG/projects/$PROJECT/links" \
  -H 'Content-Type: application/json' \
  -d '{"target_id": "other-project", "relation": "depends_on"}'

Relations: extends, serves, depends_on, shares_data.

Setup & Web Board

Run /squad-init first to register this project — it writes .squadrc (SQUAD_PROJECT=…, plus an optional SQUAD_ORG=<label> org selector) at the repo root, committed so your whole team's agents target the same board project. The token never goes in a project file — it's an org-scoped API key resolved as SQUAD_AUTH_TOKEN env > SQUAD_AUTH_TOKEN_<SQUAD_ORG> > bare SQUAD_AUTH_TOKEN= from ~/.squad/auth (see shared.md).

Open the deployed board at https://squad.steloit.com/?project=<PROJECT> (or via the configured SQUAD_BASE_URL). Features: 7-column pipeline, drag-and-drop (valid transitions only), card lifecycle modal, agent log viewer, 10s auto-refresh.

Related skills

AI & Agent Buildingagentsautomation

This week in AI coding

Five minutes, every Monday - the tools, releases and tactics for developers.

unsubscribe anytime.