@lythos/skill-deck 0.9.13 → 0.9.15
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +73 -11
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
This package exposes a **CLI**. Invoke via:
|
|
10
10
|
|
|
11
11
|
```bash
|
|
12
|
-
bunx @lythos/skill-deck <command> [options]
|
|
12
|
+
bunx @lythos/skill-deck@0.9.15 <command> [options]
|
|
13
13
|
```
|
|
14
14
|
|
|
15
15
|
No installation required. `bunx` auto-downloads the package.
|
|
@@ -53,14 +53,14 @@ expires = "2026-05-01" # ISO date; warns at ≤14 days
|
|
|
53
53
|
|
|
54
54
|
| Situation | Command |
|
|
55
55
|
|-----------|---------|
|
|
56
|
-
| Sync working set with `skill-deck.toml` | `bunx @lythos/skill-deck link` |
|
|
57
|
-
| Validate `skill-deck.toml` before committing | `bunx @lythos/skill-deck validate` |
|
|
58
|
-
| Download a skill to cold pool and add to deck | `bunx @lythos/skill-deck add owner/repo` |
|
|
59
|
-
| Pull latest versions of declared skills | `bunx @lythos/skill-deck refresh` |
|
|
60
|
-
| Refresh a single skill by alias | `bunx @lythos/skill-deck refresh tdd` |
|
|
61
|
-
| Remove a skill from deck and working set | `bunx @lythos/skill-deck remove tdd` |
|
|
62
|
-
| GC unreferenced repos from cold pool | `bunx @lythos/skill-deck prune` |
|
|
63
|
-
| Use a custom deck file or working dir | `bunx @lythos/skill-deck link --deck ./my-deck.toml --workdir /path/to/project` |
|
|
56
|
+
| Sync working set with `skill-deck.toml` | `bunx @lythos/skill-deck@0.9.15 link` |
|
|
57
|
+
| Validate `skill-deck.toml` before committing | `bunx @lythos/skill-deck@0.9.15 validate` |
|
|
58
|
+
| Download a skill to cold pool and add to deck | `bunx @lythos/skill-deck@0.9.15 add owner/repo` |
|
|
59
|
+
| Pull latest versions of declared skills | `bunx @lythos/skill-deck@0.9.15 refresh` |
|
|
60
|
+
| Refresh a single skill by alias | `bunx @lythos/skill-deck@0.9.15 refresh tdd` |
|
|
61
|
+
| Remove a skill from deck and working set | `bunx @lythos/skill-deck@0.9.15 remove tdd` |
|
|
62
|
+
| GC unreferenced repos from cold pool | `bunx @lythos/skill-deck@0.9.15 prune` |
|
|
63
|
+
| Use a custom deck file or working dir | `bunx @lythos/skill-deck@0.9.15 link --deck ./my-deck.toml --workdir /path/to/project` |
|
|
64
64
|
|
|
65
65
|
### Commands
|
|
66
66
|
|
|
@@ -117,7 +117,7 @@ path = "github.com/lythos-labs/lythoskill/skills/lythoskill-deck"
|
|
|
117
117
|
EOF
|
|
118
118
|
|
|
119
119
|
# 2. Link — creates symlinks in .claude/skills/
|
|
120
|
-
bunx @lythos/skill-deck link
|
|
120
|
+
bunx @lythos/skill-deck@0.9.15 link
|
|
121
121
|
```
|
|
122
122
|
|
|
123
123
|
### Key Concepts
|
|
@@ -146,7 +146,7 @@ Different agents look for skills in different directories. `skill-deck.toml` con
|
|
|
146
146
|
|
|
147
147
|
| Symptom | Cause | Fix |
|
|
148
148
|
|---------|-------|-----|
|
|
149
|
-
| `❌ Skill not found: <name>` | Skill declared in deck but not in cold pool | `bunx @lythos/skill-deck add github.com/owner/repo/skill` or clone manually into cold pool |
|
|
149
|
+
| `❌ Skill not found: <name>` | Skill declared in deck but not in cold pool | `bunx @lythos/skill-deck@0.9.15 add github.com/owner/repo/skill` or clone manually into cold pool |
|
|
150
150
|
| `link` skips entries with warnings | Real files/directories exist in working set (not symlinks) | Delete the real directories in `working_set` and re-run `link`. Never create directories manually there |
|
|
151
151
|
| `refresh` reports "Not a git repository" | Skill was copied (not cloned) into cold pool | Re-clone with `git clone` or use `deck add` which clones by default |
|
|
152
152
|
| `deck update` prints deprecation warning | `update` was renamed to `refresh` in v0.8+ | Use `deck refresh` instead |
|
|
@@ -157,6 +157,68 @@ Different agents look for skills in different directories. `skill-deck.toml` con
|
|
|
157
157
|
| `deck add` fails with 404 | Locator format wrong or repo doesn't exist | Format: `github.com/owner/repo/skill-name` (path to skill directory inside repo) |
|
|
158
158
|
| `skill-deck.toml not found` | Running `link` outside project tree | Run from project root, or use `--deck ./path/to/skill-deck.toml` |
|
|
159
159
|
|
|
160
|
+
## K8s-Style Reconciliation: Agent as Controller
|
|
161
|
+
|
|
162
|
+
Deck follows Kubernetes' reconciliation model. The agent (Claude, Cursor, etc.) is the **controller manager** — it reads state, builds a plan, shows it to the user, then executes:
|
|
163
|
+
|
|
164
|
+
```
|
|
165
|
+
scan (observe state) → plan (compute diff) → confirm → execute → verify
|
|
166
|
+
↑ │
|
|
167
|
+
└──────────────────── reconciliation loop ─────────────────────┘
|
|
168
|
+
```
|
|
169
|
+
|
|
170
|
+
| K8s Concept | Deck Equivalent |
|
|
171
|
+
|-------------|-----------------|
|
|
172
|
+
| Desired state (YAML manifest) | `skill-deck.toml` |
|
|
173
|
+
| Actual state (running pods) | Working set (`~/.claude/skills/`) |
|
|
174
|
+
| Controller manager (reconcile loop) | Agent reads state → builds plan → user confirms |
|
|
175
|
+
| `kubectl apply` | `deck link` |
|
|
176
|
+
| Namespace (isolation) | Per-project deck file |
|
|
177
|
+
| PersistentVolume | Cold pool (`~/.agents/skill-repos/`) |
|
|
178
|
+
|
|
179
|
+
The loop doesn't run automatically (no daemon). The agent is the loop — it observes, plans, confirms, and executes on demand. This is K8s-style **declarative governance**: declare what you want, reconcile to match.
|
|
180
|
+
|
|
181
|
+
## Multi-Agent POSSE Syndication
|
|
182
|
+
|
|
183
|
+
Not "switching between agents" — **syndicating everywhere simultaneously**. Like IndieWeb's POSSE (Publish on your Own Site, Syndicate Elsewhere):
|
|
184
|
+
|
|
185
|
+
```
|
|
186
|
+
Cold Pool (~/.agents/skill-repos/) ← canonical "own site"
|
|
187
|
+
↓ deck link --workdir
|
|
188
|
+
├── .claude/skills/ ← syndicate to Claude Code
|
|
189
|
+
├── .cursor/skills/ ← syndicate to Cursor
|
|
190
|
+
├── .codex/skills/ ← syndicate to Codex
|
|
191
|
+
└── .windsurf/skills/ ← syndicate to Windsurf
|
|
192
|
+
```
|
|
193
|
+
|
|
194
|
+
One cold pool, one deck declaration, synced to every agent you use. Adding a new platform is updating a key-value registry — no code changes needed. See [multi-agent-posse-syndication](https://github.com/lythos-labs/lythoskill/blob/main/cortex/wiki/01-patterns/2026-05-05-multi-agent-posse-syndication.md).
|
|
195
|
+
|
|
196
|
+
## Migration: For Existing Skill Users
|
|
197
|
+
|
|
198
|
+
If you already have skills installed (in working set, globally, or mixed), deck respects your existing state:
|
|
199
|
+
|
|
200
|
+
```
|
|
201
|
+
1. SCAN Agent surveys: what's in ~/.claude/skills/? What's global? What's mixed?
|
|
202
|
+
curator scan helps — indexes cold pool or existing working set.
|
|
203
|
+
|
|
204
|
+
2. PLAN Agent shows: "We found 12 skills. After migration:
|
|
205
|
+
- 2 → innate (deck infrastructure)
|
|
206
|
+
- 4 → tool section
|
|
207
|
+
- 3 → cold pool (already there, just link)
|
|
208
|
+
- 3 → backup only (unused, stale)
|
|
209
|
+
All 12 backed up to ~/.agents/lythos/backups/<date>.tar.gz"
|
|
210
|
+
|
|
211
|
+
3. BACKUP Always. `link` creates tar backups for non-symlink entries before removal.
|
|
212
|
+
Use `--no-backup` only if you're certain.
|
|
213
|
+
|
|
214
|
+
4. EXECUTE deck link — creates symlinks, removes undeclared, leaves real files untouched.
|
|
215
|
+
|
|
216
|
+
5. VERIFY Agent checks: all declared skills resolve? Working set clean?
|
|
217
|
+
If unhappy: tar xf backup → rollback to pre-migration state.
|
|
218
|
+
```
|
|
219
|
+
|
|
220
|
+
**Key principle**: existing skill users aren't beginners. They have working setups. Migration is a conversation — scan, show the plan, confirm before acting. Backup is non-negotiable.
|
|
221
|
+
|
|
160
222
|
## Architecture: Intent / Plan / Execute
|
|
161
223
|
|
|
162
224
|
Deck commands separate pure logic from IO:
|