@hanzo/skill installed skills; @hanzo/skills parsed them. Two names differing only in number are two addresses for one subject, and the parsing half had no importer at all — its own header claimed app, desktop and the dev harness consumed it, and none did. The parser, schema, registry and loader move in beside the installer. The CLI gains `validate <dir>`: read every SKILL.md with the parser the loaders use and exit non-zero if any cannot be loaded, so a repository that ships skills can hold itself to that. Compiling the tests found four type errors that had never been checked — the package they came from excluded test/ from tsc and ran them under a runner that does not typecheck. Three passed an option `recordSource` does not take; one dereferenced a nullable. 56 tests, one runner.
1.4 KiB
Hanzo Skill
Overview
Install and manage AI agent skills — ~/.hanzo/skills/ as canonical source, symlinked to all agents
Tech Stack
- Language: TypeScript/JavaScript
Build & Run
npm install && npm run build
npm test
Structure
skill/
package-lock.json
package.json
src/
tsconfig.json
Key Files
package.json-- Dependencies and scripts
License
Dual-licensed MIT OR Apache-2.0 (LICENSE-MIT, LICENSE-APACHE), at the
user's option. Relicensed from BSD-3-Clause under HIP-0137 "One License"
(hanzoai/hips), which standardises original Hanzo work on the dual
permissive pair. The prior BSD copyright line carries forward unchanged
into LICENSE-MIT.
One name
@hanzo/skill reads a skill, checks it, and installs it. There was a second
package, @hanzo/skills, holding the reading half; two names differing only in
number are two addresses for one subject, so it was folded in here and deleted.
skill add <org/repo> install a skill repository where every agent looks skill remove take it back out, symlinks and all skill list what is installed skill validate
read every SKILL.md under dir with the same parser the loaders use; exit 1 if any cannot be loadedA repository that ships skills runs skill validate in its own CI, so a skill
no agent could load fails there rather than in a catalogue that still counts it.