Linked skills for AI agents. A friendly CLI wrapper over git submodules that adds skill repos directly into .claude/skills/.
npm install
npm run build
npm testnpm run build # TypeScript → dist/
npm test # vitest (18 tests)
npm run dev # watch mode
node dist/cli.js # run CLI locally- Thin wrapper over
git submodulecommands -- no custom package manager - Skills are git submodules checked out into
.claude/skills/<name> - GitHub shorthand (
org/repo) resolves togit@github.com:org/repo.git commanderfor CLI,vitestfor tests- All git operations go through
src/git/submodule.ts - URL resolution logic in
src/git/resolve.ts
src/cli.ts— CLI entry point, 6 commandssrc/git/submodule.ts— all git submodule operations (add, remove, update, init, list)src/git/resolve.ts— GitHub shorthand and URL resolutionsrc/commands/— one file per commandtests/git/— tests with real temporary git repos
- Strict TypeScript — no
any - Never modify user's existing
.claude/skills/content that wasn't added by skillmo - Every new feature must have tests
- Submodule operations must handle cleanup fully (deinit + git rm + .git/modules removal)
- GitHub shorthand must always work alongside full git URLs
- Small incremental commits with conventional messages (
feat:,fix:,refactor:) - Run
npm testbefore committing - The project is intentionally minimal — resist scope creep
- No
anytypes - No
console.login library code (only in command handlers for user output) - No custom package manager logic — git submodules are the mechanism
- No registry, no cloud sync, no compile step (MVP scope)