When I handed work to AI agents, they kept stopping halfway. Sometimes they told me the job was done when it wasn't. So I wrote the procedures down, along with the conditions that have to be true before anyone says "done", and made the agents follow them to the end. That is kenji skills.
I run more than ten repos on my own, across more than one tool. I wanted the same release, audit and fix routines in every repo and every tool, because the pile of tasks only grows, and I needed a way to build quickly that still had a proper standard.
A gate in front of "done"
The core idea is that the agent that did the work does not get to decide that the work is finished.
completion-judgeis a read-only subagent. It checks the approved plan, the diff and freshly run checks against each other, and answers PASS, CONTINUE or BLOCKED. Missing evidence means CONTINUE.completion-gate.mjsis a Stop hook. It only acts during acomplete-everythingorburndown-fullrun. If the checklist still has open items, it sends the agent back to them instead of letting it stop. After three rounds with nothing closed, it gives up, and it ignores a checklist that hasn't changed in 24 hours. It is installed for Claude Code and Cursor only.

What's in it and how to install it
As of 2.6.0 (2026-10-11) there are 161 skills, 63 slash commands and 6 subagents. Claude Code also gets 12 more, ported from Cursor's built-in skills. You ask in plain words, like "fix this bug and ship it", and the skill whose description matches runs. The tool decides which skill matches, so when you want a specific one, name it.

You need Node.js 18 or newer. Run npx @kensaurus/skills --auto --dry-run to see every file it would write, then run it again without --dry-run. --auto looks for Claude Code, Cursor, Codex CLI and Gemini CLI on your machine and installs for each one it finds.
$ npx @kensaurus/skills@2.6.0 --help
kenji installer
Usage:
npx @kensaurus/skills Merge-install into ~/.cursor/ + ~/.agents/skills/
npx @kensaurus/skills --auto Detect installed tools and install to each
npx @kensaurus/skills --claude Install for Claude Code (~/.claude/) instead
npx @kensaurus/skills --codex Install for Codex CLI (~/.agents/skills + ~/.codex/)
npx @kensaurus/skills --gemini Install for Gemini CLI (~/.agents/skills + ~/.gemini/)
npx @kensaurus/skills --all Install for all four supported tools
…
npx @kensaurus/skills --dry-run Preview without changing anything
npx @kensaurus/skills --verify Hash-check dests against this package (no writes)
…
Some things it doesn't do. Codex CLI and Gemini CLI get the skills and the rules, but no subagents and no Stop hook. The installer also writes three portable commands for them, which current Codex releases no longer load. I wrote it on React, Next.js and Supabase projects, so some of the rules assume that stack. What the installer writes, and what it never does, is covered in my Zenn post (in Japanese).
It also works with Mushi Mushi, my open-source bug reporting tool. mushi-health checks each part of the pipeline in order, and mushi-integration sends one test report through it to confirm that capture, AI triage, test generation and execution connect. Both run only when you call them by name. Day to day, the bug reports that come in through Mushi become the input for a fix run: the skills take a report through to a pull request, and I merge it by hand.
It's free
All of it is free under the MIT license (some parts are Apache-2.0, listed in NOTICE). There is nothing to pay for in the pack. If you use the MCP templates, they expect your own Firecrawl, Context7 and Supabase keys.
What I'm aiming for: a vibe coder who can build what they need, for themselves and for the people around them. If each of us makes a few of the tedious local chores easier, I think the world ends up a slightly better place for everyone.