bama
BAMA: Build Any Mac App. Agent skills to research, clone, design, build, optimize, and test native macOS apps with Swift and SwiftUI.
Skill-Madness — all the skills, all the agents, all the chaos.
Translation pending
SkillsShell · PythonGitHub @ivy00johnsSelf-installOwner unconfirmed
Paste into Claude or ChatGPT for installation instructions suited to your environment.
Have you tried it? One tap is enough. No sign-in needed.
No updates detected yet. GitHub releases will appear here.
Owners of public repositories under a personal GitHub account can sign in to verify ownership and manage the introduction themselves. No administrator approval is needed.
Sign in, generate a verification file, and commit it to this repository’s default branch within 30 minutes. Files on other branches or forks do not count. Then check the file below to manage the project without administrator approval. Keep the file to retain your access.
If needed, you will go to sign-in. After signing in, return here and press your chosen verification button again.
Installable projects can be verified without a deployment domain. Use GitHub sign-in for a personal repository, or the repository verification file above for an organization repository.
Ask about other verification options
Loading the full README. The saved excerpt is shown below.
All the skills, all the agents, all the chaos — coordinated.
Most AI coding setups give you one agent, one context window, one shot. Skill Madness gives you a coordinated fleet — plus the autonomous loops to keep it working until the job is provably done.Read the full README ↗Most AI coding setups give you one agent, one context window, one shot. Skill Madness gives you a coordinated fleet — plus the autonomous loops to keep it working until the job is provably done.
A multi-agent orchestration toolkit for Claude Code: 80 skills, seven categories — turn a one-line ask into a contract-first parallel build, run autonomous loops until your tests are actually green, and author everything once in a portable SKILL.md format whose converters feed eleven AI coding tools (Claude Code runs the full library; the ten other hosts get its portable subset).
🪄 Orchestrate
Turn a one-line ask into a coordinated multi-agent build. The orchestrator decomposes the work into a 14-phase plan, authors machine-readable contracts before any code, dispatches role agents in parallel with exclusive file ownership, and blocks the merge on a structured QA report.
🔁 Loop
Point Claude at a goal and walk away. 13 autonomous loops drive tests to green, coverage to target, a contract to conformance, or a PR to merged — each on a guardrail stack so it converges instead of thrashing or burning your budget.
🌐 Port
Author once in SKILL.md; install into twelve AI coding tools — Claude Code gets the full library, and the portable subset converts for Copilot, Cursor, Aider, Windsurf, OpenCode, Qwen, OpenClaw, Gemini CLI, Antigravity, Kimi, and Codex or any Agent Skills host (~/.agents/skills).
🚪 New here, or not sure which skill to reach for? Type
/madnessin Claude Code and just say what you want. It reads your intent, picks the right starting skill out of all 80, confirms before anything expensive, and launches it — so you never have to memorize the catalog. One front door for the whole toolkit.
Maintainers / agents: see START-HERE.md for current status and which docs are canonical.
Every AI coding tool ships the same traps. One agent, one context window, one set of files — fine for a small project, brittle for anything bigger than a single context can hold. They stop at the first draft — when the tests are still red, you're the one re-prompting "still failing, try again" until it finally goes green. And every tool reinvents the same wheel — Cursor wants .mdc, Aider wants CONVENTIONS.md, Windsurf wants .windsurfrules, Claude Code wants SKILL.md — so any prompt library you build gets stranded on whichever host you wrote it for.
Skill Madness attacks all three. The orchestrator decomposes a complex build into a 14-phase plan, makes integration surfaces machine-readable before anyone writes code, dispatches role agents in parallel with strict file ownership, and refuses to ship until a separate QE agent signs off via a structured report. Autonomous loops then keep the work going after that first pass — driving tests to green, coverage to a target, or a contract to conformance, with guardrails that make them converge instead of thrash. And the skill library underneath authors once in the canonical SKILL.md format — the same skills install into eleven different AI coding tools without copy-paste drift.
contract-author writes OpenAPI / AsyncAPI / Pydantic / TypeScript / JSON Schema before a line of implementation. contract-auditor verifies every shipped module against the spec. Agents can't drift; the contract is the truth.owns.directories / owns.files in its frontmatter. No two agents touch the same path. Conflicts get resolved before spawn, not after.qe-agent emits a qa-report.json with critical / high / medium / low findings plus contract-conformance and security scores. The orchestrator gates the merge on the report. Agents can't self-declare "done."fix-until-green won't stop until tests + lint + typecheck pass (and can't cheat the gate), coverage-loop grows the suite to a target without gaming it, contract-conformance-loop builds until a fresh-context evaluator agrees the spec is met, and babysit / self-healing-loop / nightly-docs-and-changelog run on a schedule. Every one is a configuration of loop-controller's guardrail stack — iteration cap, token budget, no-progress breaker, stop condition — so they finish instead of thrashing. See the loops →madness is the router: type /madness, describe the task, and it picks the right starting skill out of all 80 and launches it. The cure for "which skill was that again?" across a 80-skill library.Status — read before you pitch this to anyone:
- The orchestrator + 80-skill library is the mature part. PSFS author validation, ownership/cross-reference checks, an Ubuntu lint gate plus a non-blocking macOS smoke on every push. Body diagnostics report physical/nonblank lines and approximate tokens, not measured host context cost.
- The 13 autonomous loops are the newest layer. All built on one
loop-controllerguardrail harness and CI-linted. The build/verify loops (fix-until-green,coverage-loop,contract-conformance-loop) are the most exercised; the scheduled ones (self-healing-loop,dependency-health-loop) are powerful but younger — keep a human in the loop on anything irreversible.- Claude Code is the native orchestration target. Teams/agents/workflows and the
qa-report.jsongate remain its native path. This audit verified local tooling and fake-root delivery, not current live-host dispatch or model efficacy. The other ten converter targets receive the portable subset, not native parallel dispatch certification.- Lossy conversion is announced. When a skill is converted to a non-Claude-Code host, orchestration-only fields (
allowed_tools,owns,composes_with,spawned_by,requires_agent_teams) are stripped with a stderr line per skill. Skills markedrequires_claude_code: trueare skipped entirely for those targets. Seecontracts/installer/per-tool-output-spec.md.
| You need | Why |
|---|---|
| bash 3.2+ + standard POSIX tools | The installer is pure shell, written bash-3.2-safe — stock macOS bash works, no upgrade needed (CI runs a macOS job to keep it that way) |
| python3 | Frontmatter parsing in lint-skills.sh |
| git | Cloning the repo and (optionally) symlinking into your global skills dir |
| Claude Code (recommended) | Where the orchestrator + multi-agent QA gate actually run end-to-end |
| (optional) any of eleven other hosts | Copilot, Cursor, Aider, Windsurf, OpenCode, Qwen, OpenClaw, Gemini CLI, Antigravity, Kimi, Codex (Agent Skills) — see Also works on eleven other hosts |
Two install paths. Pick one.
From inside Claude Code:
/plugin marketplace add ivy00johns/Skill-Madness
/plugin install skill-madness@skill-madness
That installs all 80 skills into Claude Code's plugin storage. No clone, no symlink, no edits-to-the-repo workflow. Use this if you just want the skills.
To update later: /plugin update skill-madness.
/sync-skills (recommended for contributors)Clone, then run /sync-skills from inside Claude Code. It creates flattened symlinks at ~/.claude/skills/<skill-name> so edits in the repo are live in every session — no rebuild step.
git clone https://github.com/ivy00johns/Skill-Madness.git
cd Skill-Madness
# Inside Claude Code:
/sync-skills
If you'd rather copy than symlink, the underlying script accepts --copy instead of --link. See skills/workflows/sync-skills/SKILL.md.
Use this if you want to author skills, iterate on them, or contribute upstream.
Two scripts. The first translates the canonical SKILL.md files into twelve host-native shapes; the second installs the converted artifacts into whichever hosts it detects on your machine.
./scripts/convert.sh # skills/**/SKILL.md → integrations/<host>/...
./scripts/install.sh # integrations/<host> → ~/.<host>/, .cursor/rules/, etc.
install.sh is interactive when run in a TTY and auto-detects from environment variables in CI. See Also works on eleven other hosts for the per-host format matrix and what gets stripped on conversion, and scripts/README.md for flag-level docs.
Tell Claude Code to build something with multiple agents:
"Build a chat app with React frontend and FastAPI backend — use an agent team."
The orchestrator skill triggers automatically: it sizes the team, generates contracts, spawns parallel agents in isolated worktrees, gates the build on qa-report.json, and returns when QE signs off.
Or set it loose on a goal and let a loop converge on its own:
"Fix the failing tests and don't stop until everything's green." → fix-until-green
"Get test coverage up to 85% without gaming the metric." → coverage-loop
"Keep this PR rebased and green while review comes in." → /loop 5m /babysit
"Map this whole codebase and write me the architecture." → codebase-exploration-loop
Or invoke any skill standalone:
"Review this code for security vulnerabilities." → security-agent
"Set up Docker and CI/CD for this project." → infrastructure-agent
"Write k6 load tests for the /search endpoint." → performance-agent
"Profile this codebase and write me a CLAUDE.md." → project-profiler
"Generate a UI brief for a refresh of /settings." → ui-brief
Not sure which skill fits? Don't guess — let the front door route you:
/madness build a CLI that syncs two folders, with tests
madness reads the intent, picks the right starting skill, confirms before anything expensive (a swarm, an overnight loop, a full build), and hands off.
The orchestrator sits above seven skill categories — every build pulls from this library, every category lints clean, and the library's portable subset converts to the ten non-Claude-Code hosts.
flowchart TB
orch["👑 <b>orchestrator</b><br/><sub>14-phase build playbook · runtime detection<br/>team sizing · circuit breaker · handoff protocol</sub>"]:::entry
subgraph contracts["📜 contracts/ — 2 skills"]
direction TB
ca[contract-author]
cau[contract-auditor]
end
subgraph roles["🤖 roles/ — 10 agents · exclusive file ownership"]
direction TB
be[backend]
fe[frontend]
infra[infrastructure]
qe["qe<br/><sub>(QA gate)</sub>"]:::gate
sec[security]
rdocs[docs]
obs[observability]
dbm[db-migration]
perf[performance]
cra[code-review]
end
subgraph meta["🧠 meta/ — 9 skills"]
direction TB
md["madness<br/><sub>(front door)</sub>"]:::entry
sx[skill-explorer]
sw[skill-writer]
sr[skill-review]
su[skill-update]
mda[model-adaptation]
sc[skill-catalog]
stg[skill-triage]
sev[skill-eval]
end
subgraph gitcat["🔁 git/ — 4 skills"]
direction TB
gcm[git-commit]
gpr[git-pr]
gpf[git-pr-feedback]
gpmc[git-post-merge-cleanup]
end
subgraph workflows["⚙️ workflows/ — 41 skills"]
direction TB
pb[plan-builder]
cm[context-manager]
dc[dependency-coordinator]
dch[deployment-checklist]
pp[project-profiler]
wr[wiki-research]
rdd[repo-deep-dive]
lw[llm-wiki]
ub[ui-brief]
cdb[claude-design-brief]
mc[mermaid-charts]
rs[render-sanity]
dl[diagnose-loop]
more["+ 28 more"]
end
subgraph loops["🔁 loops/ — 13 skills"]
direction TB
lc[loop-controller]
fug[fix-until-green]
otl[orchestrator-task-loop]
ccl[contract-conformance-loop]
bs[babysit]
cov[coverage-loop]
pfl[perf-loop]
shl[self-healing-loop]
mig[migration-loop]
ndc[nightly-docs-and-changelog]
dhl[dependency-health-loop]
cel[codebase-exploration-loop]
rcl[repo-cleanup-loop]
end
orch --> contracts
orch --> roles
orch --> meta
orch --> gitcat
orch --> workflows
orch --> loops
classDef entry fill:#7c3aed,stroke:#4c1d95,color:#fff,stroke-width:2px
classDef gate fill:#dc2626,stroke:#7f1d1d,color:#fff,stroke-width:1.5px
A one-line build request enters the orchestrator and exits as a shipped artifact only after the qe-agent writes a passing qa-report.json. Every other path blocks the merge.
flowchart TB
user(["🧑 You"]) -->|"build X — use an agent team"| orch[👑 orchestrator]
orch --> detect[/"detect runtime<br/><sub>Agent Teams · subagents · sequential</sub>"/]
detect --> size[/"size team"/]
size --> contracts["📜 <b>contract-author</b><br/><sub>OpenAPI · Pydantic · TypeScript<br/>written BEFORE any implementation</sub>"]:::contract
contracts --> dispatch{{"⚡ parallel dispatch<br/><sub>exclusive file ownership · no overlapping writes</sub>"}}
subgraph parallel["isolated worktrees"]
direction LR
be["🛠 backend<br/><sub>owns api/</sub>"]
fe["🎨 frontend<br/><sub>owns web/</sub>"]
infra["📦 infrastructure<br/><sub>owns infra/</sub>"]
docs["📚 docs<br/><sub>owns docs/</sub>"]
end
dispatch --> be
dispatch --> fe
dispatch --> infra
dispatch --> docs
be --> validate
fe --> validate
infra --> validate
docs --> validate
validate["🔬 contract-auditor<br/>+ qe-agent + security-agent"]:::validate
validate --> gate{"🚦 qa-report.json<br/>gate"}:::gate
gate -- "CRITICAL findings" --> block[/"⛔ block merge"/]:::fail
gate -- "all checks pass" --> ship[/"🚀 ship"/]:::pass
classDef contract fill:#1e40af,stroke:#1e3a8a,color:#fff,stroke-width:2px
classDef validate fill:#7c3aed,stroke:#5b21b6,color:#fff
classDef gate fill:#f59e0b,stroke:#b45309,color:#fff,stroke-width:2px
classDef fail fill:#dc2626,stroke:#7f1d1d,color:#fff
classDef pass fill:#16a34a,stroke:#14532d,color:#fff
The newest part of Skill Madness — and the fastest way to feel why it exists. A loop points Claude at a goal with a verifiable stop condition and a mandatory guardrail stack, then lets it run until the goal is provably met. No more babysitting "still failing, try again."
Every loop is a configuration of loop-controller, the foundation harness that picks the right primitive for the job — /goal, /loop, a Stop-hook, a bash "Ralph" loop, or a dynamic workflow — and wires in the guardrails so the loop converges instead of thrashing or running up the bill.
🟢 Build & verify — run until it's green:
| Loop | What it drives to "done" | Kick it off with |
|---|---|---|
fix-until-green | tests + lint + typecheck all passing — and it can't cheat the gate | "fix until the tests are green" |
contract-conformance-loop | every authored-contract criterion holds, graded by a fresh-context evaluator | "build until the contract is met" |
coverage-loop | a coverage target, without gaming the metric | "get coverage to 85%" |
perf-loop | a metric under its budget, with no functional regression | "optimize until p95 < 200ms" |
migration-loop | an enumerated target set migrated, suite green, no legacy pattern left | "migrate every file off the old API" |
🗓️ Operate & maintain — run on a schedule:
| Loop | What it keeps healthy | Kick it off with |
|---|---|---|
babysit | a PR rebased + green, auto-addressing review comments (HITL on anything irreversible) | /loop 5m /babysit |
self-healing-loop | logs/CI watched → root-caused → fixed → verified → PR (HITL before prod) | "watch CI and self-heal" |
nightly-docs-and-changelog | docs + changelog that don't rot after a release | /schedule nightly |
dependency-health-loop | dependencies audited + one gated bump per pass (HITL on majors) | /schedule weekly |
repo-cleanup-loop | branches / PRs / worktrees tidy — recover valuable work before deleting | /schedule weekly |
🔎 Understand & coordinate:
| Loop | What it produces | Kick it off with |
|---|---|---|
codebase-exploration-loop | a written architecture summary that answers every seed question | "map this codebase for me" |
orchestrator-task-loop | the Agent Teams shared task board drained until every task passes its gate (experimental) | "drain the task board" |
🛡️ Loops are gated by design. Every loop inherits
loop-controller's guardrails: a hard iteration cap, a token budget, a no-progress circuit breaker, and a stop condition checked by a separate fresh-context evaluator so the worker can't grade its own homework. Anything irreversible — pushing to prod, force-deleting work — pauses for a human. Read the harness:skills/loops/loop-controller/SKILL.md.
80 skills organized into seven categories. Frontmatter is validated by PSFS author schema; lint checks declared ownership and cross-references. Body guidance is advisory: diagnostics separate physical/nonblank lines, words and UTF-8-bytes/4 approximate tokens. Resource inventories check literal local references and declare external dependencies, not live-host acceptance.
| # | Skill | Category | What it does |
|---|---|---|---|
| 1 | orchestrator | coordinator | 14-phase multi-agent build playbook (the entry point) |
| 2 | backend-agent | role | API servers, business logic, data layers |
| 3 | frontend-agent | role | UI, client-side state, presentation |
| 4 | infrastructure-agent | role | Docker, CI/CD, deployment configs |
| 5 | qe-agent | role | Contract conformance, integration testing, QA gate report |
| 6 | security-agent | role | OWASP audits, dependency + auth review |
| 7 | docs-agent | role | READMEs, API docs, changelogs |
| 8 | observability-agent | role | Logging, metrics, health checks, alerting |
| 9 | db-migration-agent | role | Schema migrations, seed data |
| 10 | performance-agent | role | Load testing (k6 default; Locust / JMeter / Artillery) |
| 11 | code-review-agent | role | Orchestrator-dispatched code review with scoring rubric |
| 12 | contract-author | contract | Generates API / data / event contracts before any build |
| 13 | contract-auditor | contract | Verifies implementations match contracts (static audit) |
| 14 | madness | meta | The front-door router — reads intent, launches the right starting skill |
| 15 | skill-writer | meta | Generates new SKILL.md files with proper frontmatter |
| 16 | skill-explorer | meta | Discover, recall, and route across the skill toolkit |
| 17 |
.
├── README.md # this file
├── CLAUDE.md # project guidance for Claude Code
├── AGENTS.md # shared instructions for AI agents
│
├── skills/ # the canonical skill library (80)
│ ├── orchestrator/ # 1 — entry point
│ ├── roles/ # 10 — implementation agents
│ ├── contracts/ # 2 — contract-author / contract-auditor
│ ├── meta/ # 7 — skills that manage skills (incl. madness, model-adaptation)
│ ├── git/ # 4 — git workflow conventions
│ ├── workflows/ # 34 — cross-cutting process skills
│ └── loops/ # 13 — autonomous-loop skills
│
├── scripts/ # multi-tool installer
│ ├── convert.sh # SKILL.md → 11 host-native formats
│ ├── install.sh # integrations/ → host install dirs
│ ├── lint-skills.sh # frontmatter + cross-skill validation
│ ├── lib/ # frontmatter / platform / slug / term helpers
│ └── README.md # per-host destinations and flags
│
├── hooks/ # lifecycle-hook layer (Claude Code only, 6 hooks)
│ ├── hooks.manifest.json # registry: hook id, event, profiles, blocking
│ ├── run-with-flags.sh # single entrypoint; dispatches scripts/<hook-id>.sh
│ ├── scripts/ # per-hook implementations (qa-gate, catalog-sync, …)
│ └── lib/ # shared hook helpers
│
├── integrations/ # generated outputs (one dir per host)
│ ├── claude-code/ copilot/ cursor/ aider/ windsurf/
│ ├── opencode/ qwen/ openclaw/ gemini-cli/ antigravity/ kimi/
│
├── contracts/installer/ # installer specs
│ ├── skill-source-format.md # canonical SKILL.md schema
│ ├── per-tool-output-spec.md # per-host fidelity matrix
│ ├── install-locations.md # where each host expects skills
│ └── lint-rules.md # what the linter enforces
│
├── spec/ # the portable frontmatter standard
│ ├── PSFS.md # Portable Skill Frontmatter Spec v1.1.0
│ └── frontmatter.schema.json # JSON Schema 2020-12 reference validator
│
├── tests/installer/ # bats-core tests for convert/install/lint
└── .github/workflows/lint-skills.yml # Ubuntu gate + macOS smoke CI
Native hook execution and the twelve concrete autonomous loops retain their Claude-Code runtime path. The orchestrator and loop-controller keep that native path and also export to hosts that cannot spawn agents (sequential role packets that run the whole build after one plan approval; in-session iterations or run_guarded.py around a bounded adapter). The ten role skills and contract-auditor now also have explicit bounded solo branches: user-supplied scope/contracts, the same ownership/checklists, and honest blocked/independence reporting without invented Agent calls. Thus 55 of the 80 skills export to the eleven other converter targets. Export count is not runtime certification: resource delivery is covered by local fake-root regressions; live-host efficacy and mechanical unattended controls remain tracked in docs/REMAINING-WORK.md. The broader F1 generator framework remains parked.
The single-source model is deliberate, and there's a concrete counter-example for why: microsoft/SkillOpt shipped the opposite design — five bespoke per-host integrations (claude-code, codex, copilot, devin, openclaw) — and was already drifting within months of release: backend-enum mismatches between plugins, and an openclaw adapter broken-by-design against its own engine. One canonical SKILL.md plus converters means a fix lands once instead of five times.
Two scripts handle it:
./scripts/convert.sh # skills/**/SKILL.md → integrations/<host>/...
./scripts/install.sh # integrations/<host> → ~/.<host>/, .cursor/rules/, etc.
install.sh is interactive when run in a TTY and auto-detects from environment variables in CI. See scripts/README.md for per-host destinations, scopes, and flags.
| Host | Scope | Output format | Source strategy |
|---|---|---|---|
| 🟣 Claude Code | user | SKILL.md (passthrough) | direct symlink |
| 🐙 GitHub Copilot | user | .md (passthrough) | direct copy |
| 🌀 Cursor | project | .mdc with metadata | generated |
| 🤝 Aider | project | single CONVENTIONS.md | accumulated |
| 🪁 Windsurf | project | single .windsurfrules | accumulated |
| 🧱 OpenCode | project | .md with mode field | generated |
| 🧮 Qwen Code | project | .md with optional tools | generated |
| 🦾 OpenClaw | user | 3-file split (SOUL / AGENTS / IDENTITY) | generated |
| 💎 Gemini CLI | user | extension manifest + SKILL.md | generated |
| 🛰️ Antigravity | user | Agent Skills SKILL.md | generated |
| 🧩 Codex / Agent Skills | user | Agent Skills SKILL.md in ~/.agents/skills | generated |
| 🌙 Kimi Code | user | YAML config + system.md | generated |
Lossy by design. Claude-Code-specific orchestration fields (allowed-tools, owns, composes_with, spawned_by, requires_agent_teams) are stripped on conversion to the other ten hosts — those hosts don't run multi-agent dispatch with file-ownership exclusivity, so the metadata would be noise. You'll see one [host] stripped allowed-tools/owns from <slug> line per affected skill on stderr. Skills marked requires_claude_code: true are skipped entirely for non-Claude-Code targets.
Credit where it's due. The eleven-host installer pattern, the
detect_<tool>()probes, the interactive selection UI, the slug pipeline, and the OpenClaw soul/agents split are all adapted frommsitarzewski/agency-agents(MIT). Full attribution and the list of pieces that came across vs. were rewritten lives inACKNOWLEDGMENTS.md. The orchestrator, role agents, contracts, QA gate, and the rest of the skill library are independent.
scripts/convert.shReads skills/**/SKILL.md and writes host-specific artifacts to integrations/<host>/. Idempotent. Lossy-by-design — orchestration metadata is stripped per the per-tool spec, with stderr warnings on every strip.
./scripts/convert.sh # all hosts
./scripts/convert.sh --tool cursor # one host
./scripts/convert.sh --parallel --jobs 8 # all hosts, concurrently
scripts/install.shReads integrations/<host>/ and copies into the host's expected install location. Detects which hosts are present on the machine (presence of ~/.cursor, ~/.config/aider, etc.). Interactive when run in a TTY; auto-confirms in CI.
./scripts/install.sh # interactive TUI (TTY) or detected hosts (non-TTY)
./scripts/install.sh --tool claude-code # one host
./scripts/install.sh --dry-run # show what would happen
scripts/lint-skills.shRuns on every push to every branch (Ubuntu gating; macOS as a non-blocking smoke) via .github/workflows/lint-skills.yml. Validates:
version semver, kebab-case name)owns.directories / owns.files)references/Outputs JUnit XML for GitHub Actions test results.
./scripts/lint-skills.sh # full lint
./scripts/lint-skills.sh skills/orchestrator/ # one skill (positional path, not a flag)
./scripts/lint-skills.sh --standard # report the frontmatter standard it validates
The frontmatter convention is published as a named, versioned standard: the Portable Skill Frontmatter Spec (PSFS) v1.1.0 at spec/PSFS.md. It defines two conformance tiers — Core (Anthropic-aligned, vendor-neutral; the tier any collection can adopt) and Extended (Core plus the multi-agent fields owns / composes_with / spawned_by / requires_*). The portable, tool-agnostic reference validator is spec/frontmatter.schema.json (JSON Schema 2020-12 — runnable in any language); scripts/lint-skills.sh is the bash reference implementation and adds the cross-file checks (name uniqueness, name-matches-directory, owns non-overlap) that a per-file schema can't express.
/sync-skills (Claude Code slash command)The recommended path on Claude Code. Symlinks skills/<category>/<skill>/ to ~/.claude/skills/<skill>/ so Claude Code sees them globally and edits stay live.
Skill Madness ships a small hooks layer under hooks/ that turns the orchestrator's doctrine — the QA gate, formatting, profile injection — into enforcement. Hooks are modeled on the gated-hook design but built in the repo's own bash + python3 (stdlib-only) idiom. Today only Claude Code has a native lifecycle-hook runtime, so hooks are emitted for Claude Code and skipped (logged unsupported) for the other ten hosts.
| Hook | Event | Profiles | Blocks? | What it does |
|---|---|---|---|---|
qa-gate | Stop | all | yes | Validates qa-report.json against the QE schema and applies the orchestrator gate rules; blocks the Stop on a gate failure. (marquee) |
post-edit-format | PostToolUse(Edit|Write) | standard, strict | no | Formats the just-edited file if a matching formatter (prettier/black/shfmt/gofmt/rustfmt) is on PATH. |
session-start-profile | SessionStart | standard, strict | no | Injects a ≤8 KB summary of CLAUDE.md / .claude/profile.yaml into the session. |
catalog-sync | PreToolUse(Bash git commit) | standard, strict | no | If the skill catalog (README/CLAUDE/PLAN/START-HERE/plugin.json/marketplace.json counts) has drifted from disk, runs catalog.sh --sync and re-stages the corrected files; acts only on real drift, never blocks. |
skill-usage | PostToolUse(Skill) | standard, strict | no | Appends a coarse, best-effort usage-telemetry event via skill-health.sh record; degrades silently, never blocks. |
pre-commit-lint | PreToolUse(Bash git commit) | strict | no (warn) | Runs lint-skills.sh on staged skills and warns; never blocks the commit. |
Everything routes through one entrypoint — hooks/run-with-flags.sh <hook-id> — which reads the gating env vars and hooks.manifest.json, then dispatches hooks/scripts/<hook-id>.sh (or no-ops exit 0 if disabled).
Two env vars tune the whole graph:
ATS_HOOK_PROFILE ∈ {minimal, standard, strict} (default standard).
minimal → qa-gate only (1 hook).standard → qa-gate + post-edit-format + session-start-profile + catalog-sync + skill-usage (5 hooks).strict → all six; qa-gate also treats a missing report as a block.ATS_DISABLED_HOOKS → comma-separated hook ids to force-off, e.g. post-edit-format,pre-commit-lint.Only qa-gate ever blocks, and only on a real gate failure. It signals a block the Claude Code way — printing {"decision":"block","reason":"…"} to stdout and exiting 0.
scripts/convert.sh --tool claude-code copies hooks/ into integrations/claude-code/hooks/ and generates integrations/claude-code/hooks.json (Claude Code settings-hook format). scripts/install.sh then copies that tree to a namespaced target — ~/.claude/ats-hooks/ — and writes hooks.json there. Install is non-destructive: it never auto-merges your ~/.claude/settings.json. Instead it prints the exact snippet to merge into the "hooks" key. The wrapper is invoked as:
"$CLAUDE_PROJECT_DIR"/.claude/ats-hooks/run-with-flags.sh <hook-id>
./scripts/lint-hooks.sh # validate the hooks tree (manifest, exec bits, headers, profiles)
bash tests/hooks/run-tests.sh # the bats suite (wrapper gating, qa-gate, convert, lint)
Both run in CI via the Hooks Layer (Ubuntu) job in .github/workflows/lint-skills.yml.
./scripts/lint-skills.sh
That's the same command the gating Ubuntu CI job runs. If it's green locally on Linux, the PR will be green — the macOS job is a non-blocking compatibility smoke (continue-on-error).
skill-writer skill: "Generate a new skill for X." — it scaffolds frontmatter + body in the right category dir.skills/meta/skill-writer/references/body-template.md and fill in by hand../scripts/lint-skills.sh skills/<category>/<your-skill>/ until clean./sync-skills (or ./scripts/install.sh --tool claude-code) so Claude Code picks it up.If you used /sync-skills, the symlinks make edits in skills/ live in ~/.claude/skills/ immediately — no resync needed.
Keep skill bodies under 500 lines. When detail spills over, move it to
references/— that's what progressive disclosure is for.
Existing files in ~/.claude/skills/<name>/ block the symlink. Either delete the existing dir or run with --force to overwrite. The sync-skills skill body documents the safe paths.
Almost always a pyyaml version skew. CI installs pyyaml explicitly on macOS — replicate locally with python3 -m pip install pyyaml. Linux runners include it preinstalled.
Expected. Skills with requires_claude_code: true — the twelve concrete loops/* skills and workflows bound to Claude Code's runtime or ~/.claude config — are skipped for the other hosts; 55 of the 80 skills export today. The roles and contract-auditor export explicit solo branches, not native orchestration emulation. ./scripts/convert.sh prints one [convert] skipping <category>/<slug> for <tool> (requires_claude_code: true) line to stderr per skipped skill — no extra flag needed.
That's by design — every Claude-Code-only frontmatter field that gets stripped on conversion to another host is announced. It's not an error; it's the installer being honest. Pipe stderr to a log file if it's noisy: ./scripts/convert.sh 2> convert.log.
Two skills declare owns.directories or owns.files on overlapping paths. The lint output prints the offending pair — open both SKILL.md files and pick which one truly owns it. The orchestrator's canonical ownership map (in skills/orchestrator/SKILL.md) is the tiebreaker.
Set the override env var documented in scripts/README.md (e.g. CURSOR_RULES_DIR=..., AIDER_CONVENTIONS_PATH=...) before running. The defaults assume each host's standard location.
qa-report.json schema with critical / high / medium / low blockersloop-controller guardrail harness/madness front door — one router that reads intent and launches the right skillSKILL.md with YAML frontmatter is the source of truth; everything else is generated.qa-report.json fail the build. Self-declared "done" is not accepted./sync-skills defaults to symlinking so edits in the repo are instantly live in every Claude Code session.description says what the skill does, when to use it, and a few phrases users really say (≤400 chars). Hosts budget the skill listing, and an over-long catalog gets its descriptions cut to bare names, which is the worst kind of under-triggering.PRs welcome — new skills, host adapter improvements, lint rules, examples, bug reports.
skill-writer to scaffold it, then run ./scripts/lint-skills.sh until clean.scripts/convert.sh, the installer destination to scripts/install.sh, and a fidelity row to contracts/installer/per-tool-output-spec.md.MIT — fork, embed, ship commercial products on top, just keep the notice.
The multi-tool installer (scripts/convert.sh, scripts/install.sh, scripts/lib/) adapts code from msitarzewski/agency-agents (also MIT). Full credits, the list of adapted pieces, and the upstream MIT notice live in ACKNOWLEDGMENTS.md.
🧰 Built by humans + the agents they coordinate.
orchestrator, 10 role agents, 2 contract skills, 9 meta-skills (including madness, the front-door router, and model-adaptation), 4 git-workflow skills, 41 cross-cutting workflow skills (plan-builder, repo-deep-dive, ui-brief, mermaid-charts, …), and 13 autonomous-loop skills. Frontmatter, body length, and cross-skill ownership are all gated on every push.SKILL.md is the canonical source; converters emit Claude Code, Copilot, Cursor, Aider, Windsurf, OpenCode, Qwen, OpenClaw, Gemini CLI, Antigravity, Kimi, and Agent Skills (Codex) formats. The native orchestrator and autonomous loops retain Claude Code's runtime primitives. All ten roles and contract-auditor now offer explicit bounded solo branches; native ownership and QE dispatch remain intact. Portable export is delivery, not live-host or independent-review certification. See Also works on eleven other hosts.skill-review| meta |
| Bulk audit or single-skill deep review with scoring |
| 18 | skill-update | meta | Apply a skill-review report — edit, lint, ship |
| 19 | model-adaptation | meta | Adapt prompts/skills/scaffolding across model generations (Fable 5 / Mythos 5) — prune, refusal-audit, long-run hygiene |
| 20 | skill-catalog | meta | Catalog-as-CI-invariant — counts derived from disk, gated on every push |
| 21 | skill-triage | meta | Score skill routing with TypeSafe's Jev — route a request, check accuracy, find description collisions |
| 22 | skill-eval | meta | Measure whether a skill helps — claude plugin eval with vs without it, cost-capped, must-not-fire case enforced |
| 23 | git-commit | git | Conventional commits + branch naming |
| 24 | git-pr | git | PR title/body format and gh CLI workflow |
| 25 | git-pr-feedback | git | Triage and address PR review comments |
| 26 | git-post-merge-cleanup | git | Prune merged branches, dead remote refs, stale worktrees |
| 27 | plan-builder | workflow | Research / PRDs → orchestrator-ready build plans |
| 28 | plan-intake | workflow | Turn any report into tracked living-plan ledger entries |
| 29 | living-plan | workflow | Set up the living-plan convention (front door + strategic / tactical / frontier docs) |
| 30 | context-manager | workflow | Compaction strategy, handoffs, token budgets |
| 31 | dependency-coordinator | workflow | Cross-package dependency manifest before parallel dispatch |
| 32 | deployment-checklist | workflow | Pre-deploy verification gates |
| 33 | project-profiler | workflow | Codebase analysis → CLAUDE.md + profile.yaml |
| 34 | wiki-research | workflow | Wiki-first protocol — read 3 pages before crawling source |
| 35 | setup-project-skills | workflow | Bootstrap per-repo config that other Skill-Madness skills consume |
| 36 | work-item-brief | workflow | Durable, agent-ready ticket — no paths, just acceptance criteria |
| 37 | maintain-context | workflow | Keep CONTEXT.md glossary + ADR records up to date inline |
| 38 | zoom-out | workflow | Step back — which modules are touched, what am I missing |
| 39 | grill-me | workflow | Depth-first design interview — one question at a time |
| 40 | find-unknowns | workflow | Blindspot pass + comprehension quiz — surface unknown-unknowns before, verify understanding after |
| 41 | diagnose-loop | workflow | Build the fast feedback loop first, then debug |
| 42 | architecture-rescue | workflow | Find shallow modules + missing seams; deletion + two-adapter test |
| 43 | caveman | workflow | Ultra-compressed responses, ~75% token cut, full accuracy |
| 44 | render-sanity | workflow | "Tests pass but UI is broken" gate — click-through + stale-data scan |
| 45 | design-token-guard | workflow | Block inline styles / hardcoded CSS from bypassing the design-token system |
| 46 | class-extraction-guard | workflow | Catch utility-class soup — repeated inline class runs that should be extracted |
| 47 | accessibility-audit | workflow | WCAG 2.2 AA / Section 508 / ADA audit — axe scan, manual checks, content pass, honest ACR/VPAT draft |
| 48 | sync-skills | workflow | Symlink/copy skills to ~/.claude/skills/ and Cursor |
| 49 | settings-consolidator | workflow | Merge Claude Code permissions across projects |
| 50 | repo-deep-dive | workflow | OSS repo → 12–14 doc technical reference series |
| 51 | llm-wiki | workflow | Bootstrap + maintain LLM-powered knowledge bases |
| 52 | interactive-doc | workflow | Paired Obsidian .md + self-contained .html companion |
| 53 | ui-brief | workflow | Opinionated UI design briefs (greenfield + rebuild) |
| 54 | claude-design-brief | workflow | Paste-ready prompts for Claude Design mockup canvas |
| 55 | mermaid-charts | workflow | Expert-quality diagrams (15–30+ node systems) |
| 56 | nano-banana | workflow | Google Gemini image generation + batch ops |
| 57 | artifact-publish | workflow | Publish a visual/interactive deliverable as a shareable, hosted claude.ai Artifact page |
| 58 | playwright | workflow | Browser-based E2E + screenshots with visible Chrome |
| 59 | website-walkthrough-video | workflow | Smooth scrolling walkthrough mp4 of a whole site (desktop + mobile) |
| 60 | railway-deploy | workflow | Deploy to Railway (Dockerfile, multi-service, GraphQL API) |
| 61 | use-freellmapi | workflow | Wire a project to FreeLLMAPI — a local free-model OpenAI-compatible proxy |
| 62 | use-pxpipe | workflow | Wire the Claude Code harness to pxpipe — local image-proxy token-saver, opt-in + reversible |
| 63 | yagni-gate | workflow | Persistent YAGNI build-gate mode — climb the reuse ladder before writing new code |
| 64 | prose-slop-guard | workflow | Source-level gate that catches AI-slop prose (em dashes, AI tells) before it ships |
| 65 | madness-skill-creator | workflow | Create, test, and iteratively improve skills with eval-driven benchmarking and description optimization |
| 66 | payload-cms | workflow | Build, deploy and debug websites on Payload CMS, and clone or rebuild a site onto it (payloadcms.com included) |
| 67 | loop-controller | loop | Foundation harness: 5-part contract + guardrail stack every loop composes on |
| 68 | fix-until-green | loop | Drive tests+lint+typecheck green without cheating the gate |
| 69 | contract-conformance-loop | loop | Build-until-spec: implement until contract criteria hold, fresh-context evaluator |
| 70 | coverage-loop | loop | Grow the test suite to a coverage target without gaming the metric |
| 71 | perf-loop | loop | Profile -> optimize -> re-benchmark a metric under budget, no regression |
| 72 | migration-loop | loop | Migrate an enumerated target set until done + suite green + no legacy pattern |
| 73 | babysit | loop | Scheduled review-and-revise: keep a PR rebased + green via /loop |
| 74 | self-healing-loop | loop | Watch logs/CI -> root-cause -> fix -> verify -> PR on a poll cadence |
| 75 | nightly-docs-and-changelog | loop | Nightly /schedule sweep keeping docs + changelog from rotting |
| 76 | dependency-health-loop | loop | Scheduled audit + gated update + green gate; HITL on majors |
| 77 | codebase-exploration-loop | loop | Fan-out read-only mappers until seed questions are answered |
| 78 | orchestrator-task-loop | loop | Outer loop draining the Agent Teams shared task board (experimental) |
| 79 | repo-cleanup-loop | loop | Weekly evidence-gated branch/PR/worktree hygiene, recover-before-delete |
| 80 | cloudflare-pages-deploy | workflow | Deploy static sites/previews to Cloudflare Pages via wrangler, verified on the public URL |