@jarel/myskills 0.1.0-beta.6 → 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.
Files changed (3) hide show
  1. package/README.md +125 -11
  2. package/dist/index.js +33027 -29378
  3. package/package.json +6 -6
package/README.md CHANGED
@@ -33,11 +33,16 @@ CLI tokens should be stored in the platform secret store where possible.
33
33
 
34
34
  ## Current Slice
35
35
 
36
- This document describes the beta.6 CLI candidate. Use a CLI built from the same
37
- release as the registry for managed updates and Codex workspace commands. The
38
- beta.2 visibility compatibility shims remain available for existing clients.
39
- Source versions and npm publication are separate from hosted deployment; the
40
- API and web expose their deployed version and commit at `/version.json`.
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`.
41
46
 
42
47
  ### Beta.3 breaking security changes
43
48
 
@@ -69,8 +74,10 @@ Implemented commands:
69
74
  ```text
70
75
  myskills version
71
76
  myskills --version
77
+ myskills init <name> [--output <dir>] [--title <text>] [--summary <text>] [--license <text>] [--json]
72
78
  myskills validate --path <file-directory-or-zip>
73
79
  myskills scan --path <file-directory-or-zip>
80
+ myskills package --path <directory> --output <file.zip> [--json]
74
81
  myskills search [query] [--api-url <url>]
75
82
  myskills info <skill-slug> [--api-url <url>]
76
83
  myskills login [--api-url <url>] [--method <password|api-key>] [--email <email>]
@@ -125,6 +132,43 @@ myskills token list
125
132
  myskills token revoke <token-id>
126
133
  ```
127
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
+
128
172
  The API-backed architecture preview includes the compiled graph, escaped
129
173
  Mermaid, and a versioned diagram artifact with a plain-text accessible outline.
130
174
  Use `--json` when a caller needs the complete JSON/Mermaid/outline projection;
@@ -177,10 +221,12 @@ myskills --version
177
221
  myskills login
178
222
  ```
179
223
 
180
- The expected candidate version is `0.1.0-beta.6`. It includes the beta.5 managed
181
- update and personal Codex workspace commands plus the dry-run-only work/team
182
- bootstrap planner. To test repository changes before release, build and run them
183
- locally:
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:
184
230
 
185
231
  ```bash
186
232
  npm ci
@@ -275,6 +321,24 @@ and registry instance ID. Legacy records without that identity are not adopted
275
321
  automatically: keep their files as a backup, review the source, and install into
276
322
  a new root. A registry change requires a separate root.
277
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
+
278
342
  Local package intake, install, export, and rollback support macOS and Linux.
279
343
  No-follow payload reads and writes, private staging directories, and drift
280
344
  checks protect these operations. They do not isolate the workspace from a
@@ -301,8 +365,13 @@ team-owned execution targets are outside this adapter's beta scope.
301
365
  `codex observe --upload` records verified filesystem state. Confirm separately
302
366
  that Codex loaded the skill. To process one browser-queued update, supply a
303
367
  separate token with `skills:read` and `targets:execute` through `MYSKILLS_TOKEN`
304
- and run `companion run-once`. This command checks current authorization, consent,
305
- policy, lease, and exact release identity. It does not start a background daemon.
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.
306
375
  Browser/device login and additional provider install adapters remain planned.
307
376
 
308
377
  To change skill visibility, use the canonical `myskills sharing set
@@ -345,3 +414,48 @@ Common scopes:
345
414
  - `skills:submit` for author submissions.
346
415
  - `review:read` and `review:write` for maintainer review workflows.
347
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.