{
  "schema": "snappy-card/1",
  "skill": "snappy-swarm",
  "tier": "public",
  "origin_tier": "base",
  "purpose": "How to construct agent prompts for BOTH code-review and browser-testing agents, collect results, resolve conflicts, and decide when to stop.",
  "verbs": [],
  "faces": [],
  "agents": [],
  "uses": [],
  "used_by": [],
  "checks": {
    "pass": 26,
    "fail": 8,
    "defer": 27,
    "line": "26 of 34 checks pass",
    "failing": [
      {
        "id": 4,
        "rule": "Near-neighbour descriptions cross-reference each other",
        "says": "near neighbours not named: snappy-client-feisst"
      },
      {
        "id": 5,
        "rule": "Description is valid, third-person, and says what plus when",
        "says": "no when/use marker"
      },
      {
        "id": 7,
        "rule": "Promised and declared verbs have no set difference",
        "says": "promised-only=[help]; loader-missing=[]"
      },
      {
        "id": 8,
        "rule": "Skill body and reference graph stay within disclosure budgets",
        "says": "419 lines; ~4524 tokens; swarm-modes.md >100 lines without ToC; agents-md-setup.md >100 lines without ToC; interview-questions.md >100 lines without ToC; wave-orchestration.md >100 lines without ToC; agents-md-setup.md >100 lines without ToC; wave-orchestration.md >100 lines without ToC; wave-orchestration.md >100 lines without ToC; swarm-modes.md >100 lines without ToC; swarm-modes.md >100 lines without ToC; agents-md-setup.md >100 lines without ToC; interview-questions.md >100 lines without ToC; wave-orchestration.md >100 lines without ToC"
      },
      {
        "id": 40,
        "rule": "Metadata, skill body, and resources follow three-level budgets",
        "says": "metadata ~172 tokens; body ~4524 tokens"
      },
      {
        "id": 54,
        "rule": "At least three eval scenarios precede ready status",
        "says": "0 eval scenario(s); ready=true"
      },
      {
        "id": 55,
        "rule": "Eval scenarios are multi-call with ground truth",
        "says": "eval manifest missing"
      },
      {
        "id": 57,
        "rule": "Eval manifest contains a disjoint holdout",
        "says": "0 disjoint holdout scenario(s)"
      }
    ]
  },
  "coverage": null,
  "spec": null,
  "evals": null,
  "files": [
    "AGENTS.md",
    "SKILL.md",
    "agents-md-setup.md",
    "api.ts",
    "interview-questions.md",
    "refusals.test.ts",
    "swarm-modes.md",
    "wave-orchestration.md"
  ],
  "total_size": 65631,
  "checksum": "sha256:7c0f4dd107963a64fc4bdbac311fcc9025990fbca6b2fa38817099456ecaebce",
  "built_at": "2026-09-09T22:11:07.295Z",
  "openapi": {
    "openapi": "3.1.0",
    "info": {
      "title": "snappy-swarm",
      "version": "0.0.0",
      "description": "Orchestrate swarms of parallel AI agents for multi-wave quality passes across a project. Interview mode sets scope, then fires wave after wave of agents — code-review agents AND browser-testing agents that actually click, type, navigate, and fight through the real app. Sets up AGENTS.md for agent context. Browser agents use agent-browser to find real UX bugs that code review alone will never catch. Triggers: snappy swarm, quality swarm, agent swarm, multi-wave, quality pass, wave of agents, swarm mode, parallel agents, quality sweep, bulk improvements, polish everything, fix everything, improve all pages, dogfood swarm, ship quality, browser test, e2e swarm, click through the app"
    },
    "x-snappy-transport": "cli",
    "servers": [
      {
        "url": "npx tsx ~/.claude/skills/snappy-swarm/api.ts",
        "description": "The hand itself. Every path is a verb word, every query or body key an argument."
      }
    ],
    "paths": {},
    "components": {
      "schemas": {
        "SnappyRefusal": {
          "type": "object",
          "required": [
            "outcome",
            "code",
            "message"
          ],
          "properties": {
            "outcome": {
              "type": "string",
              "const": "refused"
            },
            "code": {
              "type": "string",
              "description": "A row of the closed refusal table."
            },
            "message": {
              "type": "string"
            },
            "fix": {
              "type": "string"
            }
          }
        }
      }
    }
  }
}