[ system: online ] · [ targets: 4 ] · [ skills: ready ] · [ build: v0.1.5 ]
// Wake up Neo...

Install a skill.
Every agent learns it.

kungfu is a CLI that scaffolds, lints, installs, and updates SKILL.md directories across Claude, Codex, Cursor, and Copilot — from a single binary.

$ curl | sh star on github
mike@neo : ~/projects
TARGETS
SCENE01/05
$
// live cast — 5 scenes — loops continuously autoplay
// install

One line. Then you know kungfu.

$ curl -fsSL https://kungfu.curry.io/install.sh | sh
# Verifies sha256, installs to /usr/local/bin (or ~/.local/bin if read-only).
latest: v0.1.5·released 3 days ago·changelog ↗
// features

One CLI. Every agent. Zero glue.

Disciplined file management over the SKILL.md format — not agent-specific magic.

01 // one cli, every agent

Install once. Land everywhere.

The same install command drops a skill into Claude, Codex, Cursor, and Copilot. No agent-specific glue, no copying files around.

02 // lint before you ship

Stable, grep-able rule IDs.

Broken frontmatter, vague triggers, dangling references — kungfu catches them at author time, with rule IDs your CI can pattern-match.

03 // scaffold from a template

Lint-clean by construction.

kungfu new ships a skill that already passes lint. Frontmatter, tests, CI — wired up before your first commit.

04 // install from anywhere

Local path or GitHub source.

A folder, a user/repo, a tagged release, a subpath, a pasted browser URL. All of them work; all of them stamp provenance.

05 // version provenance

The skill remembers where it came from.

Every remote install writes four frontmatter fields. kungfu update reads them back and refetches against the same ref.

06 // skill collections, batched

Whole repos, one command.

Point at a repo with many SKILL.md files; kungfu installs them all and reports per-skill lint failures without stopping the batch.

// commands

Nine verbs. One mental model.

Tap a command. Read what it does. Copy the example. Done.

COMMANDS · 9
man kungfu-install
SYNOPSIS
$ kungfu install <source> [--target <a,b>] [--scope <s>]
DESCRIPTION

Accepts a local path, a user/repo, a tagged release, a subpath inside a repo, or a pasted browser URL. Remote installs are checksum-verified, linted, atomically copied, and stamped with four provenance fields.

FLAGS
--target <list>comma list: claude,codex,cursor,copilot (default: all configured)--scope <s>personal (default) or project--ref <ref>tag, branch, or SHA — overrides the @ref in the source--no-cachebypass the 7-day tarball cache--dry-runshow what would happen, write nothing
EXAMPLE
$ kungfu install user/repo@v1.0.0 --target claude,codex
→ tarball fetched · 47 KB
→ checksum verified · sha256 ok
→ linted · 12 rules pass
→ atomically copied · 2 targets
installed. provenance stamped.
// agents

Where skills land.

Four agents. The same SKILL.md format. The same kungfu install command.

AGENT PERSONAL SCOPE PROJECT SCOPE STATUS
Claude ~/.claude/skills .claude/skills ✅ shipping
Codex ~/.codex/skills .codex/skills ✅ shipping
Cursor ~/.cursor/skills .cursor/skills ✅ shipping
Copilot ~/.copilot/skills .github/skills ✅ shipping

// format: open SKILL.md spec — see agentskills.io

// how it works

Open format. Atomic ops. Lint as a gate.

// the skill

An open, agreed-upon shape.

Every supported agent reads the same directory: frontmatter on top, progressive-disclosure markdown below, optional scripts / references / assets subdirectories. kungfu is disciplined file management over this format — not agent-specific magic.

// the install

Atomic writes, every time.

Tarballs are fetched, checksum-verified, linted before they go near your skills dir, then copied via .tmp → rename → cleanup. Survives interruption. Never leaves a half-written file.

csv-formatter/
csv-formatter/
├── SKILL.md ← progressive-disclosure markdown + frontmatter
├── scripts/
│ ├── lint.sh ← optional helpers the agent can shell out to
│ └── test.sh
├── references/ ← long-form context, loaded on demand
│ └── csv-spec.md
├── assets/ ← templates, fixtures, anything binary
│ └── example.csv
└── .github/
└── workflows/
└── lint.yml ← keeps the skill lint-clean in CI
csv-formatter/SKILL.md · frontmatter
# kungfu_source: github.com/mjcurry/csv-formatter
# kungfu_ref: v0.2.0
# kungfu_sha: a1b2c3d4e5f6…
# kungfu_installed_at: 2026-05-19T03:04:05Z

// four frontmatter fields. that's the whole provenance system.

// showcase

Skills you can install today.

Curated — submit yours via a PR against kungfu-showcase.json.

nextlevelbuilder/ui-ux-pro-max-skill★ 412

ui-ux-pro-max-skill

A senior product-design partner. Audits screens, proposes hierarchies, names design tokens.

claudecodexcursorcopilot
$ nextlevelbuilder/ui-ux-pro-max-skill
garrytan/qa★ 287

qa

Pre-deploy QA pass. Walks a feature, finds gaps, writes the bug report you would have missed.

claudecursor
$ garrytan/skills/qa
BrianRWagner/ai-marketing-claude-code-skills★ 296

ai-marketing-claude-code-skills

A collection of 19 marketing frameworks — positioning, content, outreach, audits. Batch-installs as one.

claudecursorcopilot
$ BrianRWagner/ai-marketing-claude-code-skills
// roadmap

What's shipped. What's next.

// shipped v0.1.5
  • [x] kungfu new — scaffold lint-clean skills from templates
  • [x] kungfu lint — stable, grep-able rule IDs
  • [x] kungfu install — local paths + GitHub sources, with provenance
  • [x] kungfu list / show / remove — the housekeeping triad
  • [x] kungfu update — re-resolve against stored refs
  • [x] kungfu self-update — the binary updates itself
// next v0.5+
  • [ ] More hosts — GitLab, Bitbucket, Codeberg, self-hosted Git
  • [ ] kungfu publish — push to a tap-style index
  • [ ] kungfu search — query a public skill directory
  • [ ] kungfu test — run a skill’s bundled scripts/test.sh
  • [ ] kungfu doctor — diagnose misconfigurations
  • [ ] kungfu cache — list / clear / verify
  • [ ] Recorded asciinema demo under docs/demo.cast

// got an idea? open an issue on github.

// I know kung fu

Stop copying SKILL.md around.

$ curl -fsSL https://kungfu.curry.io/install.sh | sh
MIT licensed · macOS, Linux, Windows · ~6 MB binary