v0.14.0 · MIT · pre-1.0

One config, seven AI tools see it.

A cross-tool AI-coding kit. Write your project rules once in AGENTS.md; haac-aikit fans them out — plus skills, agents, hooks, and MCP servers — to every selected tool in its native format.

New in 0.14: skill folder format. See Recently shipped ↓

Claude Code Cursor Copilot Windsurf Aider Gemini CLI OpenAI Codex CLI
npm i -g haac-aikit@latest

Then run aikit — 30-second wizard. Headless: aikit --yes --tools=claude

Cross-tool fan-out

Skills, agents, hooks, MCP — each generated in the target tool's native format. Pick the tools you use; aikit sync writes only their files. No cross-tool ballast.

Four HTML skills

Each one turns a single prompt into one self-contained HTML file you can open in a browser and commit to git. No build step, no CDN, no dependencies.

/docs

Living project documentation. Edits one section at a time via marker-bounded blocks.

docs/<area>.html

/decide

Tradeoff page for 2-4 technical options. Cards, comparison, recommendation.

docs/decisions/<date>-<slug>.html

/directions

2-4 visual design variants rendered live side by side, light/dark toggle.

docs/directions/<date>-<slug>.html

/roadmap

Implementation plan: milestones, data-flow SVG, mockups, code, risks, open questions.

docs/roadmaps/<date>-<slug>.html
aikit add --html installs all four · skills, slash commands, and templates

/design opt-in

Codify the project's visual language as a DESIGN.md contract every AI tool reads — plus an interactive HTML showroom with live color and font tweaking. The one skill that ships its own opinion.

aikit add design DESIGN.md + showroom + slash command
see the benchmark ↓

Does /design actually help?

We ran the same prompts twice — once with the skill installed, once freestyle. Same model, same inputs, same binary rubric (see evals/design/rubric.md). The skill's job is to make the freestyle answer disappear.

The askWith /designWithout
"Read my homepage HTML, build a DESIGN.md" 100% 71%
"Synthesize one — here's the vibe" 100% 71%
"Build it from this screenshot" 86% 57%
Average across all three 95% 66%

+29 points on average. Freestyle never lost on the descriptive criteria — hex codes in code ticks, full font stacks, numerical layout specs all appear naturally. It lost every time on the structural contract: it invented its own section IDs (design-overview, design.tokens.color) and marker patterns (<!-- BEGIN:design-X -->) instead of the engine's canonical <!-- BEGIN:haac-aikit:section:X -->. That's the gap /design closes — and why surgical refine works after.

What else you get

Safety hooks

Block force-push to main, secret commits, rm -rf on sensitive paths, and reads of .ssh/ / .aws/ / secrets/. Fires before the AI runs the command.

Rule observability

Telemetry tracks which rules fire, which get cited, which are dead weight. Run aikit doctor --rules for the per-rule report or aikit report for a PR-ready summary.

Built-in skills + agents

14 always-on skills (TDD, debugging, brainstorming, planning, code review, more) and 11 opt-in. Specialist agents for orchestration and PR description.

Production-ready

169 tests pass, format correctness audited against each tool's official docs, path-traversal guard on user input. See AUDIT.md for the trail.

Recently shipped

Full history in the changelog.

v0.14.0 May 16, 2026 breaking

Skills moved to folder format — <name>/SKILL.md. Sibling files like references/ ride along with each skill. The flat .md layout no longer validates.

Fixed

  • aikit init was silently shipping zero skills — six consumers in src/ still grepped .md files inside folders after the prior migration.
  • aikit add --html aborted with "bundled skill missing in catalog" (used the old flat path).
  • Conflict resolution renamed every folder-format skill to "SKILL" (basename match against .md).
  • Orchestrator agent delegated to backend / frontend / mobile without checking they were installed (tier2 / opt-in).

Hardened

  • catalog-check rejects unrecognized entries at tier roots (typos, stray files, SKILL.md at the wrong level).
  • allowed-tools: required to be non-empty — bare or empty lists previously passed validation.

Migration: re-run aikit sync after upgrading. Your .aikitrc.json is forward-compatible. Tests: 169/169 pass.

full changelog →