@delorenj/skillex 0.1.3 → 0.3.0
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 +95 -3
- package/dist/cli.js +17930 -11522
- package/dist/commands/bmad.d.ts +9 -0
- package/dist/commands/clients.d.ts +8 -0
- package/dist/commands/integrations.d.ts +8 -0
- package/dist/commands/roots.d.ts +8 -0
- package/dist/core/activation-types.d.ts +2 -1
- package/dist/core/bmad-freeze.d.ts +9 -0
- package/dist/core/bmad-source.d.ts +40 -0
- package/dist/core/bmad-status.d.ts +10 -0
- package/dist/core/bmad-types.d.ts +150 -0
- package/dist/core/catalog-write.d.ts +5 -0
- package/dist/core/client-isolation.d.ts +74 -0
- package/dist/core/composition-mutation.d.ts +10 -8
- package/dist/core/composition-types.d.ts +1 -1
- package/dist/core/derivation.d.ts +59 -0
- package/dist/core/diagnostics-types.d.ts +3 -3
- package/dist/core/import-sources.d.ts +131 -0
- package/dist/core/normalization.d.ts +15 -0
- package/dist/core/packs.d.ts +9 -1
- package/dist/core/profile-policy.d.ts +2 -0
- package/dist/core/reconciliation-types.d.ts +1 -1
- package/dist/core/reconciliation.d.ts +9 -1
- package/dist/core/retired-mise.d.ts +36 -0
- package/dist/core/root-cutover.d.ts +52 -0
- package/dist/core/selection-command-types.d.ts +1 -1
- package/dist/core/selection-commands.d.ts +33 -0
- package/dist/core/selection-manifest.d.ts +9 -1
- package/dist/core/selection.d.ts +9 -4
- package/dist/core/set-origin.d.ts +36 -0
- package/dist/core/sets.d.ts +9 -1
- package/dist/index.d.ts +14 -2
- package/dist/index.js +17396 -11361
- package/package.json +2 -1
- package/skills.schema.json +8 -16
package/README.md
CHANGED
|
@@ -2,12 +2,39 @@
|
|
|
2
2
|
|
|
3
3
|
A Node CLI for defining skills once, composing them by reference, and exposing the selected skills to agentic CLIs.
|
|
4
4
|
|
|
5
|
+
## Core model
|
|
6
|
+
|
|
7
|
+
The user-confirmed definitions (2026-10-10) are:
|
|
8
|
+
|
|
9
|
+
| Term | Meaning |
|
|
10
|
+
| --- | --- |
|
|
11
|
+
| Skill root | A directory where an agent looks for skills, almost always named `skills/`. |
|
|
12
|
+
| Global skill root | A directory an agent automatically loads regardless of project scope. |
|
|
13
|
+
| Canonical skill root | Skillex's SSOT root: `~/.agents/skills/` globally; `<project>/.agents/skills/` locally. |
|
|
14
|
+
| Skill set | **Replaces** the canonical root with a symlink to the set's skill root. Sets are **mutually exclusive**. |
|
|
15
|
+
| Skill pack | **Populates** the existing root with individual skill symlinks. Packs are **composable**. |
|
|
16
|
+
|
|
17
|
+
**Sets select the root; packs add skills to it.** A ten-skill pack adds ten member
|
|
18
|
+
links; it does not take over the root. `all-skills/` owns the definition bytes,
|
|
19
|
+
not the canonical discovery root. See [AGENTS.md](AGENTS.md) for the vocabulary.
|
|
20
|
+
|
|
21
|
+
The Node implementation enforces this model. Older installed packages and the
|
|
22
|
+
retained Python migration reference may still implement the reversed semantics;
|
|
23
|
+
never run both writers on the same root. Existing manifests and foreign roots
|
|
24
|
+
need an explicit previewed migration, not a silent reinterpretation.
|
|
25
|
+
|
|
26
|
+
Adding a pack to a shared set-backed root derives a scope-owned set and switches
|
|
27
|
+
only that scope. The shared set and its other consumers remain unchanged. A
|
|
28
|
+
project set overrides Skillex's inherited global selection, but agent clients
|
|
29
|
+
also discover global skills independently: client isolation requires a supported
|
|
30
|
+
adapter and runtime verification, not merely `inherit_global: false`.
|
|
31
|
+
|
|
5
32
|
## Install
|
|
6
33
|
|
|
7
34
|
Requires Node 24 or newer. The npm package contains the compiled CLI, typed ESM core, and JSON schemas. It has no Python or uv runtime dependency.
|
|
8
35
|
|
|
9
36
|
```sh
|
|
10
|
-
npm install --global @delorenj/skillex
|
|
37
|
+
npm install --global @delorenj/skillex
|
|
11
38
|
skillex --help
|
|
12
39
|
```
|
|
13
40
|
|
|
@@ -15,7 +42,10 @@ Keep a local registry checkout with its `all-skills/` submodule initialized. Sel
|
|
|
15
42
|
|
|
16
43
|
## Select and sync skills
|
|
17
44
|
|
|
18
|
-
|
|
45
|
+
Selection lives in global or project `.agents/skills.json`. Select at most one
|
|
46
|
+
set, any number of distinct packs, and residual individual skills. Use `-g` on
|
|
47
|
+
selection commands for global scope, or `--project PATH` for one project. Preview
|
|
48
|
+
mutating commands before applying; foreign content requires explicit adoption.
|
|
19
49
|
|
|
20
50
|
```sh
|
|
21
51
|
skillex init --scope global
|
|
@@ -28,10 +58,46 @@ skillex status --project /workspace/example
|
|
|
28
58
|
skillex explain code-reviewer --project /workspace/example
|
|
29
59
|
```
|
|
30
60
|
|
|
31
|
-
`enable`, `disable`, and `inherit` save
|
|
61
|
+
`enable`, `disable`, and `inherit` save and reconcile one scope unless previewed.
|
|
62
|
+
`enable set NAME` switches its root, while `enable pack NAME@VERSION` adds that
|
|
63
|
+
pack without discarding other packs. `pack add REF MEMBERS...` edits pack
|
|
64
|
+
membership, not manifest selection. Exclusions and additions on a set-backed root
|
|
65
|
+
use a scope-owned derivation rather than modifying the shared set.
|
|
32
66
|
|
|
33
67
|
Plain `sync` reconciles global plus the nearest project, or global alone outside a project. `--scope project --project PATH` restricts writes to that project while still resolving inheritance. Existing foreign files and installer-owned content are preserved. Only recorded owned links can be pruned.
|
|
34
68
|
|
|
69
|
+
## Repeatable integration repairs
|
|
70
|
+
|
|
71
|
+
```sh
|
|
72
|
+
# Compose references from a root, individual skill paths, or explicit Git sources.
|
|
73
|
+
skillex set create project-base --from-root /workspace/skills --dry-run
|
|
74
|
+
skillex pack create project-tools --version 1.0.0 --from /workspace/skill-a --from https://example.org/team/skills.git --import --dry-run
|
|
75
|
+
|
|
76
|
+
# Preview normalization; --base-set is required for ambiguous legacy multi-set declarations.
|
|
77
|
+
skillex normalize --project /workspace/example
|
|
78
|
+
skillex normalize --project /workspace/example --apply
|
|
79
|
+
skillex normalize -g --base-set min-global --dry-run
|
|
80
|
+
|
|
81
|
+
# Explicit ownership cutover preserves original roots when mapping entries.
|
|
82
|
+
skillex root adopt --project /workspace/example --map old-name=new-name --dry-run
|
|
83
|
+
|
|
84
|
+
# Project-set override for OpenCode V2; verify with a dedicated existing session.
|
|
85
|
+
skillex clients isolate --client opencode --project /workspace/example
|
|
86
|
+
skillex clients verify --client opencode --project /workspace/example --session ses_probe --agent build
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
Source creation refuses differing same-name content and never silently skips
|
|
90
|
+
requested unknown skills. `--import` explicitly authorizes missing definitions
|
|
91
|
+
through the canonical importer; Git acquisition records a commit and never runs
|
|
92
|
+
source code. Normalization replaces exact groups with references without widening
|
|
93
|
+
membership. Root adoption and client isolation preview by default; apply with
|
|
94
|
+
`--apply`, then repeat the preview to prove convergence.
|
|
95
|
+
|
|
96
|
+
OpenCode isolation preserves unrelated configuration and uses owned permission
|
|
97
|
+
rules. Conflicting user rules require an explicit decision; other clients are not
|
|
98
|
+
certified by this adapter. `clients unisolate` removes only owned rules. Verification
|
|
99
|
+
checks canonical paths and actual permissions, not merely the raw registered list.
|
|
100
|
+
|
|
35
101
|
## Manage the catalog
|
|
36
102
|
|
|
37
103
|
```sh
|
|
@@ -58,6 +124,12 @@ skillex profile sync example-pm --project /workspace/example --dry-run
|
|
|
58
124
|
skillex profile sync example-pm --project /workspace/example
|
|
59
125
|
```
|
|
60
126
|
|
|
127
|
+
Profiles normally combine global and project selections. A profile's generated
|
|
128
|
+
`config.yaml` can set `skills.inherit_global: false` to keep its loadout limited
|
|
129
|
+
to the explicit project selection. Ordinary `profile show` and later resyncs
|
|
130
|
+
honor this persistent boundary, including when the project manifest inherits
|
|
131
|
+
global skills. Change this setting through the profile's owning config renderer.
|
|
132
|
+
|
|
61
133
|
## Migrate an existing installation
|
|
62
134
|
|
|
63
135
|
Preview the registry and each target before applying their migration. The migration result lists content choices, changed objects, and verification receipts. Missing mappings and unresolved local content remain visible as blocked items.
|
|
@@ -73,6 +145,26 @@ skillex migrate --project /workspace/example --apply
|
|
|
73
145
|
|
|
74
146
|
Do not run the Python and Node reconcilers against the same target. The [migration contract](docs/implementation/cli-migration.md) covers legacy references, explicit choices, ownership handoff, interruption recovery, and profile conversion. The [CLI Revamp delivery record](docs/tasks/cli-revamp-tickets.md) tracks the remaining template and consumer cutover work; installing the package alone does not migrate consumers.
|
|
75
147
|
|
|
148
|
+
## Retire skill-operation mise tasks
|
|
149
|
+
|
|
150
|
+
Existing mise tasks for skills are obsolete. Remove them rather than updating
|
|
151
|
+
their package pins or introducing replacement wrappers. Invoke `skillex` directly.
|
|
152
|
+
|
|
153
|
+
```sh
|
|
154
|
+
skillex integrations retire-mise --project /workspace/example
|
|
155
|
+
skillex integrations retire-mise --project /workspace/example --apply
|
|
156
|
+
skillex integrations retire-mise --project /workspace/example
|
|
157
|
+
```
|
|
158
|
+
|
|
159
|
+
The default is a read-only preview. Removal covers detected skill-operation task
|
|
160
|
+
tables, their dependencies, and supported watcher/enter-hook calls. Unrelated
|
|
161
|
+
configuration and tool installation remain. The final preview must be empty.
|
|
162
|
+
Use `--file PATH` for one explicit TOML source or `-g` for global mise configs.
|
|
163
|
+
Unsupported inline task definitions or mixed hooks refuse instead of dropping
|
|
164
|
+
unrelated behavior. This command does not change skill roots or run mise.
|
|
165
|
+
File-task scripts and externally included config sources are not yet scanned;
|
|
166
|
+
inspect those separately and extend the command before claiming their retirement.
|
|
167
|
+
|
|
76
168
|
## Automation and development
|
|
77
169
|
|
|
78
170
|
Use `--json` for a schema-2 envelope with `schema`, `command`, `ok`, `exit`, `data`, and `findings`. Diagnostic output does not contaminate JSON stdout. Mutating commands support `--dry-run`; `migrate` previews by default and requires `--apply`. `sync --dry-run --exit-code` returns 6 for drift.
|