|
1 | 1 | # Skilleton |
2 | 2 |
|
3 | | -**Skilleton** is a skills skeleton — a lightweight CLI that treats AI skills like deterministic project dependencies. Think `package.json`, `vscode/extensions.json`, or other project-scoped manifests—except the entries point to versioned `SKILL.md` folders that can be shared, reviewed, and upgraded with confidence. Vercel's `skills.sh` inspired parts of the DX, but Skilleton differentiates itself with project-first manifests and strict version locking. |
| 3 | +**Deterministic AI skill dependency management for teams** |
4 | 4 |
|
5 | | -## Why "Skilleton"? |
| 5 | +Manage AI skills like npm packages - with project manifests, lockfiles, and reproducible installations. |
6 | 6 |
|
7 | | -The name "Skilleton" comes from **"skills skeleton"** — it provides the structural framework for managing AI skill dependencies in your projects. Everyone else was already using "[skillset](https://www.npmjs.com/package/skillset)", "[skillsets](https://www.npmjs.com/package/skillsets)", "[Skillful](https://www.npmjs.com/package/skillful)", and similar names, so we went with something that captures the essence: a minimal, skeletal structure that holds your skills together. |
| 7 | +## Why this exists |
8 | 8 |
|
9 | | -## Installation |
| 9 | +`skills.sh` is great for installing skills globally, but teams need: |
10 | 10 |
|
11 | | -```bash |
12 | | -npm install -g skilleton |
13 | | -``` |
| 11 | +- **Reproducible environments** - Everyone gets the same skill versions |
| 12 | +- **Project-scoped dependencies** - Skills live with your code, not globally |
| 13 | +- **Version locking** - No surprises from upstream changes |
| 14 | +- **Team collaboration** - Commit manifests to version control |
14 | 15 |
|
15 | | -Or using npx: |
| 16 | +## Quickstart |
16 | 17 |
|
17 | 18 | ```bash |
18 | | -npx skilleton --help |
19 | | -``` |
| 19 | +# Add a skill to your project |
| 20 | +skilleton add Mindrally/skills/jest |
20 | 21 |
|
21 | | -## Usage |
22 | | - |
23 | | - |
24 | | -### Adding Skills |
25 | | - |
26 | | -In your project, run: |
| 22 | +# Install all skills (like npm install) |
| 23 | +skilleton install |
27 | 24 |
|
28 | | -```bash |
29 | | -skilleton add <owner/skill[@ref]> |
| 25 | +# Team member gets exact same versions |
| 26 | +git pull # Gets skilleton.json + skilleton.lock.json |
| 27 | +skilleton install # Installs exact pinned versions |
30 | 28 | ``` |
31 | 29 |
|
32 | | -For example: |
33 | | - |
34 | | -```bash |
35 | | -skilleton add Mindrally/skills/chrome-extension-development@47f47c1 |
36 | | - |
37 | | -# or |
38 | | -skilleton add Mindrally/skills/chrome-extension-development # defaults to latest commit on main |
| 30 | +## How it works |
| 31 | + |
| 32 | +**skilleton.json** (commit this): |
| 33 | +```json |
| 34 | +{ |
| 35 | + "skills": [ |
| 36 | + { |
| 37 | + "name": "jest", |
| 38 | + "repo": "Mindrally/skills", |
| 39 | + "path": "jest", |
| 40 | + "ref": "47f47c1" |
| 41 | + } |
| 42 | + ] |
| 43 | +} |
39 | 44 | ``` |
40 | 45 |
|
41 | | -This will create a `skilleton.json` file in your project root, update `skilleton.lock.json`, and immediately install the requested skill (and the rest of the manifest) into `~/.skilleton/skills`, using `~/.skilleton/cache` for repo reuse. |
42 | | - |
43 | | -Think of it like running `npm install --save`: the manifest is updated and the dependency is fetched in one step. |
44 | | - |
45 | | -> [!IMPORTANT] |
46 | | -> Make sure to commit your `skilleton.json` and `skilleton.lock.json` files to version control, and add `~/.skilleton` to your `.gitignore` file. |
47 | | -
|
48 | | - |
49 | | -### Installing Skills |
50 | | - |
51 | | -If you have a `skilleton.json` file in your project (and you should :smirk:), you can install the skills by running: |
52 | | - |
53 | | -```bash |
54 | | -skilleton install |
| 46 | +**skilleton.lock.json** (commit this): |
| 47 | +```json |
| 48 | +{ |
| 49 | + "skills": { |
| 50 | + "jest": { |
| 51 | + "name": "jest", |
| 52 | + "repo": "Mindrally/skills", |
| 53 | + "path": "jest", |
| 54 | + "ref": "47f47c1", |
| 55 | + "commit": "abc123def456...", |
| 56 | + "timestamp": "2025-01-01T00:00:00Z" |
| 57 | + } |
| 58 | + } |
| 59 | +} |
55 | 60 | ``` |
56 | 61 |
|
57 | | -### Listing Skills |
| 62 | +## Commands |
58 | 63 |
|
59 | 64 | ```bash |
60 | | -skilleton list |
| 65 | +skilleton add <owner/skill[@ref]> # Add skill and update manifest |
| 66 | +skilleton install # Install exact versions from lockfile |
| 67 | +skilleton update # Refresh lockfile and reinstall |
| 68 | +skilleton list # Show installed skills |
61 | 69 | ``` |
62 | 70 |
|
63 | | -### Updating Skills |
64 | | - |
65 | | -```bash |
66 | | -skilleton update |
67 | | -``` |
68 | | - |
69 | | -## Features |
70 | | - |
71 | | -- Declarative `skilleton.json` manifest that lives alongside your other project configs |
72 | | -- Lockfile-driven installs (`skilleton.lock.json`) for deterministic, versioned skills |
73 | | -- Git-based resolution today (GitHub-first for now, but architecture keeps future sources open) |
74 | | -- Cache-friendly git operations stored in `~/.skilleton/cache` |
75 | | -- Commands: `add`, `install`, `update`, `list`, `audit` |
76 | | - |
77 | | -## Development |
78 | | - |
79 | | -### Prerequisites |
| 71 | +## vs skills.sh |
80 | 72 |
|
81 | | -- Node.js 24.x (see [.nvmrc](.nvmrc)) |
| 73 | +| Feature | Skilleton | skills.sh | |
| 74 | +|---------|-----------|-----------| |
| 75 | +| Team collaboration | ✅ Manifests + lockfiles | ❌ Global only | |
| 76 | +| Reproducible builds | ✅ Exact commit pinning | ❌ Latest by default | |
| 77 | +| Project isolation | ✅ Per-project skills | ❌ Shared global | |
| 78 | +| Version control | ✅ Git-friendly | ❌ Not designed for it | |
82 | 79 |
|
83 | | -### Installation |
| 80 | +## Installation |
84 | 81 |
|
85 | 82 | ```bash |
86 | | -npm install |
87 | | -npm run build |
88 | | -node dist/bin/skilleton.js --help |
| 83 | +npm install -g skilleton |
89 | 84 | ``` |
90 | 85 |
|
91 | | -## Repository Norms |
92 | | - |
93 | | -- Discuss ideas in GitHub issues before contributing |
94 | | -- Small, focused pull requests only |
95 | | -- Human-reviewed contributions; automated/AI-only PRs will be closed |
96 | | -- MIT license, no telemetry, privacy-first design |
| 86 | +## Privacy |
97 | 87 |
|
98 | | -## Documentation |
99 | | - |
100 | | -- [docs/architecture.md](docs/architecture.md) |
101 | | -- [docs/usage.md](docs/usage.md) |
102 | | -- [CODE_OF_CONDUCT.md](CODE_OF_CONDUCT.md) |
103 | | -- [CONTRIBUTING.md](CONTRIBUTING.md) |
104 | | -- [SECURITY.md](SECURITY.md) |
105 | | -- [PRIVACY.md](PRIVACY.md) |
| 88 | +No telemetry, no phone home. Skills are cached locally, manifests are yours to control. |
106 | 89 |
|
107 | 90 | ## License |
108 | 91 |
|
109 | | -This project is licensed under the MIT License - see [LICENSE](LICENSE) for details. |
110 | | - |
111 | | -## Acknowledgments |
112 | | - |
113 | | -- Vercel's `skills.sh` CLI for inspiring parts of the developer experience |
114 | | -- Brian and Giuseppe for working on a similar idea for a different context/purpose |
115 | | - |
116 | | -## Support |
117 | | - |
118 | | -If you find this project helpful and want to support its development, you can: |
119 | | - |
120 | | -- **Ko-fi**: [ko-fi.com/fcmam5](https://ko-fi.com/fcmam5) |
121 | | -- **Buy Me a Coffee**: [buymeacoffee.com/ngcmbf6](https://buymeacoffee.com/ngcmbf6) |
| 92 | +MIT - see [LICENSE](LICENSE) |
0 commit comments