hanzo-skill

Hanzo Skill (@hanzo/skill) is a TypeScript CLI tool for installing, managing, and distributing AI agent skills.

Hanzo Skill - AI Agent Skill Installer CLI

Category: Hanzo Ecosystem Related Skills: hanzo/hanzo-bot.md, hanzo/hanzo-agent.md

Overview

Hanzo Skill (@hanzo/skill) is a TypeScript CLI tool for installing, managing, and distributing AI agent skills. It clones skill repositories to ~/.hanzo/skills/ as the canonical source of truth, then symlinks them into every supported agent directory (Claude Code, Cursor, Codex, , Hanzo Bot). Zero dependencies beyond Node.js standard library.

Why Hanzo Skill?

Tech Stack

When to use

Quick reference

| Item | Value | |------|-------| | npm package | @hanzo/skill v1.0.1 | | Binary names | hanzo-skill, skill | | Canonical dir | ~/.hanzo/skills/ | | Repo | github.com/hanzoai/skill | | Branch | main | | License | MIT |

Agent Directories (Symlink Targets)

| Directory | Agent | |-----------|-------| | ~/.claude/skills/ | Claude Code | | ~/.agents/skills/ | Codex, | | ~/.cursor/skills/ | Cursor | | ~/.hanzo/bot/skills/ | Hanzo Bot |

Usage

# Install skills from a GitHub repo
npx @hanzo/skill add hanzoai/skills # Hanzo ecosystem skills
npx @hanzo/skill add bootnode/skills # Bootnode blockchain APIs
npx @hanzo/skill add luxfi/skills # Lux Cloud APIs

# Force reinstall (delete and re-clone)
npx @hanzo/skill add hanzoai/skills --force

# List installed skills
npx @hanzo/skill list

# Remove skills and all symlinks
npx @hanzo/skill remove hanzoai-skills

# Show help
npx @hanzo/skill --help

How It Works

  1. Normalize URL: Accepts org/repo, github.com/org/repo, or full HTTPS URL
  2. Clone or pull: git clone --depth 1 to ~/.hanzo/skills/<org>-<repo>/, or git pull --ff-only if exists
  3. Count skills: Walks directory tree counting SKILL.md files and .md skill files
  4. Symlink: Creates symlinks from ~/.hanzo/skills/<name> into each agent skill directory
  5. Remove: Deletes symlinks from all agent directories, then removes the skill directory

Repository Structure

src/
 cli.ts # CLI entry point (add, remove, list, help)
 index.ts # Core library (addSkills, removeSkills, listSkills, symlinkToAgents)
 index.test.ts # Tests (Node.js built-in test runner)
package.json # @hanzo/skill v1.0.1, type: module, bin: hanzo-skill/skill
tsconfig.json # TypeScript config (ESM output)

Library API

The package also exports functions for programmatic use:

import { addSkills, removeSkills, listSkills, HANZO_SKILLS_DIR, AGENT_SKILL_DIRS } from "@hanzo/skill"

// Install skills
const result = await addSkills("hanzoai/skills", { force: false })
// result.dirName = "hanzoai-skills"
// result.targetDir = "~/.hanzo/skills/hanzoai-skills"
// result.count = 87 (number of skill files found)
// result.linked = ["~/.claude/skills", ...]

// List installed
const skills = await listSkills()
// [{ name: "hanzoai-skills", path: "...", count: 87 }]

// Remove
await removeSkills("hanzoai-skills")

Exported Functions

| Function | Description | |----------|-------------| | addSkills(url, opts?) | Clone/pull repo, symlink to agents, return stats | | removeSkills(name) | Remove skill dir and all agent symlinks | | listSkills() | List installed skill directories with counts | | symlinkToAgents(name) | Create symlinks from canonical to all agent dirs | | unlinkFromAgents(name) | Remove symlinks from all agent dirs | | normalizeGitUrl(input) | Convert shorthand to full HTTPS clone URL | | extractDirName(input) | Extract org-repo directory name from URL | | countSkills(dir) | Count SKILL.md and .md skill files recursively |

Build and Test

# Install and build
npm install
npm run build

# Run tests
npm test

# Development (watch mode)
npm run dev

Troubleshooting

| Issue | Cause | Solution | |-------|-------|----------| | git clone fails | Private repo or no git | Check git auth, install git | | Symlink permission error | Restricted home directory | Check permissions on ~/.<agent>/ | | Skills not visible in agent | Agent not looking at skill dir | Verify agent reads from its skill directory | | Skill count is 0 | No SKILL.md or .md files | Repo may use different structure | | --force needed | Existing clone is dirty | Use --force to delete and re-clone |

Related Skills


Last Updated: 2026-03-13 Category: Hanzo Ecosystem Related: cli, skills, agents, npm, typescript, symlinks Prerequisites: Node.js 18+, git