@jarel/myskills 0.1.0-beta.5 → 0.1.0-beta.8
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 +165 -11
- package/dist/index.js +34742 -25341
- package/package.json +6 -6
package/README.md
CHANGED
|
@@ -27,16 +27,22 @@ Responsibilities:
|
|
|
27
27
|
- support maintainer/admin workflows through role-gated API calls
|
|
28
28
|
- enroll a personal Codex workspace and execute approved updates with an explicit companion command
|
|
29
29
|
- inspect an explicitly selected local Codex profile with a read-only metadata observation or health report
|
|
30
|
+
- create a dry-run-only work/team bootstrap plan from explicit approved roots and skill selectors
|
|
30
31
|
|
|
31
32
|
CLI tokens should be stored in the platform secret store where possible.
|
|
32
33
|
|
|
33
34
|
## Current Slice
|
|
34
35
|
|
|
35
|
-
This document describes the beta.
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
36
|
+
This document describes the verified beta.7 CLI. Its GitHub prerelease is
|
|
37
|
+
published, and its dedicated API/CLI acceptance passed. It remains compatible
|
|
38
|
+
with existing hosted registry workflows. Beta.7 is deployed to hosted
|
|
39
|
+
production from the verified candidate and adds local authoring and deterministic
|
|
40
|
+
package creation. Native MCP Skills delivery is documented separately in the MCP
|
|
41
|
+
guide. The beta.2 visibility compatibility shims remain available for existing
|
|
42
|
+
clients. Source versions and npm publication are separate from hosted
|
|
43
|
+
deployment; see [Beta.7 release, publication, and staging evidence](../../docs/BETA7_RELEASE_DELIVERY.md)
|
|
44
|
+
for current status. The API and web expose their deployed version and commit
|
|
45
|
+
at `/version.json`.
|
|
40
46
|
|
|
41
47
|
### Beta.3 breaking security changes
|
|
42
48
|
|
|
@@ -68,8 +74,10 @@ Implemented commands:
|
|
|
68
74
|
```text
|
|
69
75
|
myskills version
|
|
70
76
|
myskills --version
|
|
77
|
+
myskills init <name> [--output <dir>] [--title <text>] [--summary <text>] [--license <text>] [--json]
|
|
71
78
|
myskills validate --path <file-directory-or-zip>
|
|
72
79
|
myskills scan --path <file-directory-or-zip>
|
|
80
|
+
myskills package --path <directory> --output <file.zip> [--json]
|
|
73
81
|
myskills search [query] [--api-url <url>]
|
|
74
82
|
myskills info <skill-slug> [--api-url <url>]
|
|
75
83
|
myskills login [--api-url <url>] [--method <password|api-key>] [--email <email>]
|
|
@@ -82,6 +90,7 @@ myskills config get api-url
|
|
|
82
90
|
myskills config set api-url <url>
|
|
83
91
|
myskills config reset api-url
|
|
84
92
|
myskills config list
|
|
93
|
+
myskills bootstrap codex --dry-run --profile work --context <file> [--work-source-root <dir>] [--shared-source-root <dir>] --live-root <dir> --include-slug <slug> [--include-slug <slug>] --output <report.json>
|
|
85
94
|
myskills submit --path <file-directory-or-zip> [--api-url <url>] [--token <token>]
|
|
86
95
|
myskills review submissions [--api-url <url>] [--token <token>]
|
|
87
96
|
myskills review bundle <submission-id> [--platform <name>] [--output <file>] [--api-url <url>] [--token <token>]
|
|
@@ -123,6 +132,43 @@ myskills token list
|
|
|
123
132
|
myskills token revoke <token-id>
|
|
124
133
|
```
|
|
125
134
|
|
|
135
|
+
`myskills init <name>` creates a minimal private Codex package in a new
|
|
136
|
+
directory. The default output is `./<name>`; use `--output` to select another
|
|
137
|
+
destination under an existing parent directory. The command writes `skill.json` and `SKILL.md` with
|
|
138
|
+
version `0.1.0`, `UNLICENSED`, and the `codex-skill` platform target. It does
|
|
139
|
+
not authenticate, call the network, or overwrite an existing file, directory,
|
|
140
|
+
or symlink. Edit the generated `SKILL.md`, then run `myskills validate --path`
|
|
141
|
+
and `myskills scan --path` before any separate authenticated submission.
|
|
142
|
+
|
|
143
|
+
`myskills package --path ./my-skill --output ./my-skill.zip` creates a
|
|
144
|
+
deterministic ZIP from one checked snapshot of a local package directory.
|
|
145
|
+
It validates the root manifest, portable paths, and bounded UTF-8 text, then
|
|
146
|
+
blocks credential and other blocking scan findings before creating output.
|
|
147
|
+
Warnings remain visible for review. The output reports the archive SHA-256,
|
|
148
|
+
byte size, and a separate `myskills submit --path ...` command. `--json` returns
|
|
149
|
+
the manifest, scan findings, output path, checksum, size, and next command.
|
|
150
|
+
Packaging does not contact the registry or bypass submission and review.
|
|
151
|
+
|
|
152
|
+
The output must end in `.zip` and have an existing parent directory outside
|
|
153
|
+
the source tree. Existing files, directories, symlinks, and symlink ancestors
|
|
154
|
+
are refused. All regular source files are included; there is no ignore file.
|
|
155
|
+
Keep credentials and unrelated files outside the source directory. The package
|
|
156
|
+
limits are 500 files, 1 MiB of text, 1,000 filesystem entries, and a 10 MiB
|
|
157
|
+
archive. Binary files,
|
|
158
|
+
symlinks, and special files are rejected. Text bytes, including BOMs and line
|
|
159
|
+
endings, are preserved. Entries use ordinal UTF-8 path order, fixed timestamps
|
|
160
|
+
and permissions, and uncompressed ZIP storage, so source mtimes and locale do
|
|
161
|
+
not change the archive checksum. Empty directories and executable bits are not
|
|
162
|
+
preserved. The archive checksum identifies the ZIP bytes, not the registry's
|
|
163
|
+
package-content digest.
|
|
164
|
+
|
|
165
|
+
Local authoring requires macOS or Linux. The archive is created with private
|
|
166
|
+
file permissions and exclusive creation; it never overwrites a destination
|
|
167
|
+
that appears during the command. A disk or write failure can leave a partial
|
|
168
|
+
output, which the error asks you to inspect before removal. Work in directories
|
|
169
|
+
owned by your user; this does not isolate writes from a hostile process running
|
|
170
|
+
as the same operating-system user.
|
|
171
|
+
|
|
126
172
|
The API-backed architecture preview includes the compiled graph, escaped
|
|
127
173
|
Mermaid, and a versioned diagram artifact with a plain-text accessible outline.
|
|
128
174
|
Use `--json` when a caller needs the complete JSON/Mermaid/outline projection;
|
|
@@ -165,7 +211,7 @@ Those operations require the server's current-revision, organization-policy,
|
|
|
165
211
|
membership, exact-release, limit, idempotency, and MFA checks. This CLI does
|
|
166
212
|
not expose a second policy implementation or write command for them.
|
|
167
213
|
|
|
168
|
-
## Published And
|
|
214
|
+
## Published CLI And Local Builds
|
|
169
215
|
|
|
170
216
|
The published beta channel is installed with:
|
|
171
217
|
|
|
@@ -175,9 +221,12 @@ myskills --version
|
|
|
175
221
|
myskills login
|
|
176
222
|
```
|
|
177
223
|
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
224
|
+
The beta.7 GitHub release and verified CLI assets are published. The npm `beta`
|
|
225
|
+
channel currently resolves to `0.1.0-beta.6` while beta.7 awaits maintainer passkey authentication,
|
|
226
|
+
and hosted production runs beta.7. Beta.7 adds deterministic local package
|
|
227
|
+
authoring and the native MCP delivery work described in the repository release
|
|
228
|
+
notes. To test repository changes before a later npm publication,
|
|
229
|
+
build and run them locally:
|
|
181
230
|
|
|
182
231
|
```bash
|
|
183
232
|
npm ci
|
|
@@ -214,6 +263,43 @@ discarded.
|
|
|
214
263
|
|
|
215
264
|
`config get api-url`, `config set api-url <url>`, `config reset api-url`, and `config list` manage the saved API URL. `doctor` checks the CLI version, Node version, resolved API URL, `/health`, auth status, token-store backend, install-directory writability, and `/v1/capabilities`. If the CLI is pointed at the web app instead of the API, or a newer command is sent to an older server, command errors include concrete next steps and `--json` returns structured error codes.
|
|
216
265
|
|
|
266
|
+
`bootstrap codex --dry-run` is a work/team-only local planner. It requires an
|
|
267
|
+
explicit `work` context, a normalized HTTPS target origin, stable target
|
|
268
|
+
instance/workspace/actor identifiers, explicit source and target trust
|
|
269
|
+
compartments (`work`, `shared`, or `work+shared` for sources, and `work-team`
|
|
270
|
+
for the target), typed `work` and/or `shared` source roots, a target root, and
|
|
271
|
+
a positive `--include-slug` allowlist. The context must approve the computed
|
|
272
|
+
source-root type/digests and target-root digest. Personal, consumer, public,
|
|
273
|
+
and unclassified sources are rejected, and candidates are never selected by
|
|
274
|
+
implicit inventory discovery. A plan accepts at most eight selected candidates;
|
|
275
|
+
each candidate snapshot accepts at most 1,000 entries and 32 nested directory
|
|
276
|
+
levels. A one-skill work-owned canary is supported.
|
|
277
|
+
|
|
278
|
+
The context JSON must include `profile: "work"`, `targetOrigin`,
|
|
279
|
+
`instanceId`, one `tenantId` or `workspaceId`, `actorId`, the canonical trust
|
|
280
|
+
compartments, `approvedSourceRoots` entries of `{type, identityDigest}`, and
|
|
281
|
+
`approvedTargetRootIdentityDigest`.
|
|
282
|
+
|
|
283
|
+
The planner reads selected source and target content without network or
|
|
284
|
+
registry access. It opens each selected tree through a bootstrap-owned secure
|
|
285
|
+
snapshot reader, then hashes, parses, scans, and reports only those held bytes.
|
|
286
|
+
It writes only the explicitly requested new private report (`0600`) under a
|
|
287
|
+
user-controlled private parent. Reserved package manifests remain strict:
|
|
288
|
+
invalid or multiple manifests fail closed, and no metadata is relocated. The
|
|
289
|
+
full report contains the work binding, approved root digests, owning package
|
|
290
|
+
contract identifiers, candidate content identities, execution identities, the
|
|
291
|
+
exact target precondition (`absent` or `present-identical` with its expected
|
|
292
|
+
artifact identity), and private snapshots. Terminal output is a redacted DTO
|
|
293
|
+
with counts and digests; it does not contain paths, candidate names, inventory,
|
|
294
|
+
or private identifiers.
|
|
295
|
+
There is no apply, publishing, adoption, or target-write mode in this command.
|
|
296
|
+
`ready` means that the held snapshot passed deterministic checks only. It is
|
|
297
|
+
not approval to apply. Sensitive configuration and credential paths are
|
|
298
|
+
excluded before content enters the report, and heuristic scan-clean never
|
|
299
|
+
replaces explicit human content review. Any future executor must repeat the
|
|
300
|
+
retained source/target identity check immediately before its first write
|
|
301
|
+
(compare-and-swap) and require that review at that boundary.
|
|
302
|
+
|
|
217
303
|
`validate`, `scan`, and `submit` read one bounded snapshot of the local package.
|
|
218
304
|
`submit` sends those same validated and scanned text entries for directory and
|
|
219
305
|
ZIP inputs. Authors can inspect and withdraw submissions; maintainers fetch the
|
|
@@ -235,6 +321,24 @@ and registry instance ID. Legacy records without that identity are not adopted
|
|
|
235
321
|
automatically: keep their files as a backup, review the source, and install into
|
|
236
322
|
a new root. A registry change requires a separate root.
|
|
237
323
|
|
|
324
|
+
New installation and snapshot records declare
|
|
325
|
+
`contentDigestAlgorithm: "sha256-json-ordinal-v1"`; transaction journals use
|
|
326
|
+
`targetContentDigestAlgorithm` for the candidate. This scheme normalizes paths,
|
|
327
|
+
sorts them by JavaScript string ordinal order (UTF-16 code units), then hashes
|
|
328
|
+
the UTF-8 JSON array of `{path, content}` entries with SHA-256. It does not
|
|
329
|
+
depend on the process locale. Readers reject unknown algorithm identifiers.
|
|
330
|
+
|
|
331
|
+
A missing algorithm field identifies the legacy `localeCompare` scheme.
|
|
332
|
+
The CLI verifies these records with the current process's legacy comparison
|
|
333
|
+
rules. It does not retry with a different algorithm. If a locale change makes
|
|
334
|
+
legacy bytes unverifiable, return to the original verification locale and
|
|
335
|
+
compatible Node/ICU environment before a trusted migration. Preserve the files
|
|
336
|
+
and recovery copies if their identity still cannot be proved. Never add an
|
|
337
|
+
algorithm field to an old hash by hand. After verification, an install or
|
|
338
|
+
update records the held bytes with an ordinal digest in the new journal and
|
|
339
|
+
snapshot; rollback does the same for its verified source snapshot. Untouched
|
|
340
|
+
legacy history and journals retain their original verification rules.
|
|
341
|
+
|
|
238
342
|
Local package intake, install, export, and rollback support macOS and Linux.
|
|
239
343
|
No-follow payload reads and writes, private staging directories, and drift
|
|
240
344
|
checks protect these operations. They do not isolate the workspace from a
|
|
@@ -261,8 +365,13 @@ team-owned execution targets are outside this adapter's beta scope.
|
|
|
261
365
|
`codex observe --upload` records verified filesystem state. Confirm separately
|
|
262
366
|
that Codex loaded the skill. To process one browser-queued update, supply a
|
|
263
367
|
separate token with `skills:read` and `targets:execute` through `MYSKILLS_TOKEN`
|
|
264
|
-
and run `companion run-once`.
|
|
265
|
-
|
|
368
|
+
and run `companion run-once`. If the workspace has a skill installed with
|
|
369
|
+
`--library-entry`, the token also needs `libraries:read`: the companion rechecks
|
|
370
|
+
that adoption before it changes files. Without it, the operation fails with
|
|
371
|
+
`API_TOKEN_SCOPE_REQUIRED` and a message that names the scope; files are not
|
|
372
|
+
changed. The CLI never widens a token's scopes. This command checks current
|
|
373
|
+
authorization, consent, policy, lease, and exact release identity. It does not
|
|
374
|
+
start a background daemon.
|
|
266
375
|
Browser/device login and additional provider install adapters remain planned.
|
|
267
376
|
|
|
268
377
|
To change skill visibility, use the canonical `myskills sharing set
|
|
@@ -305,3 +414,48 @@ Common scopes:
|
|
|
305
414
|
- `skills:submit` for author submissions.
|
|
306
415
|
- `review:read` and `review:write` for maintainer review workflows.
|
|
307
416
|
- `architectures:read` for architecture list, detail, preview, and fixture-plan reads.
|
|
417
|
+
- `libraries:read` for library reads and for install, update, and companion runs of library-bound skills.
|
|
418
|
+
- `libraries:write` for library changes.
|
|
419
|
+
|
|
420
|
+
## Libraries
|
|
421
|
+
|
|
422
|
+
`myskills libraries help` lists the source, import, review, tracking, subscription
|
|
423
|
+
and adoption commands. Requests use the [Libraries API contract](../../docs/plans/2026-09-26-library-api-contract.md)
|
|
424
|
+
and reviewed JSON files supplied with `--input`. The [Libraries guide](../../docs/LIBRARIES.md)
|
|
425
|
+
contains a complete workflow and scope requirements.
|
|
426
|
+
|
|
427
|
+
Bind an installation to an adopted version with
|
|
428
|
+
`myskills install <slug> --library-entry <entry-id>`. If the adopted release
|
|
429
|
+
requires user action, read its notes and add `--accept-user-action`. Updates
|
|
430
|
+
resolve that exact recommendation and recheck it before changing files. A
|
|
431
|
+
deleted or inaccessible entry never falls back to the newest registry release.
|
|
432
|
+
Local drift still stops replacement. Use
|
|
433
|
+
`myskills libraries unbind-local <slug> --dir <root>` to detach that local
|
|
434
|
+
binding explicitly while retaining files and rollback history.
|
|
435
|
+
|
|
436
|
+
`updates` and `update` report each skill separately. If an entry is deleted,
|
|
437
|
+
access is lost, the adopted release is revoked, or the entry has no adoption,
|
|
438
|
+
that skill shows `curation-unavailable` with the reason (`library.state` and
|
|
439
|
+
`library.reason` in `--json`). Its files and binding stay unchanged, other skills
|
|
440
|
+
are still evaluated and updated, and `update` exits 1. `install` fails closed
|
|
441
|
+
with `LIBRARY_CURATION_UNAVAILABLE`. A malformed or mismatched resolution stops
|
|
442
|
+
the command with `LIBRARY_RESOLUTION_INVALID`.
|
|
443
|
+
|
|
444
|
+
If a library adopts a version older than the installed one, the skill shows
|
|
445
|
+
`library-adopts-older` (`adoption-older-than-installed` in `--json`). MySkills
|
|
446
|
+
never downgrades automatically. When the last rollback snapshot is exactly the
|
|
447
|
+
adopted release, run `myskills rollback <slug>`; otherwise install the adopted
|
|
448
|
+
version into a new root with `--dir <new-root>`. `libraries unbind-local` keeps
|
|
449
|
+
the installed version instead.
|
|
450
|
+
|
|
451
|
+
`libraries review-bundle <submission-id>` prints only after the SHA-256 of the
|
|
452
|
+
response body matches `x-myskills-artifact-sha256`. The JSON output labels its
|
|
453
|
+
`payload` as `parsed-for-inspection`. Use `--output <new-file>` to keep the
|
|
454
|
+
exact verified bytes; an existing file is never replaced. Supply
|
|
455
|
+
`--artifact-sha256 <digest-from-review-requests>` to also verify the immutable
|
|
456
|
+
artifact requested for review. Without it, verification covers the response
|
|
457
|
+
header only; `expectedDigestVerified` reports this distinction in JSON output.
|
|
458
|
+
|
|
459
|
+
## Skill improvement
|
|
460
|
+
|
|
461
|
+
Prepare local skill reviews with `myskills improve`, inspect the report, export a draft, and submit it through normal review. Registry plans pin source/reviewer versions and apply user, team or organization policy. Execution requires the exact local plan digest and explicit cloud consent. See [the feature guide](../../docs/SKILL_IMPROVEMENT.md) for commands, JSON bodies, evaluation suites and current adapter limits. The first runner is Claude Code 2.1.283 or newer. Use an exact model ID and an existing Claude sign-in. Codex improvement execution remains disabled pending its isolation gate; final release verification is recorded in the feature guide.
|