@skill-map/spec 0.53.0 → 0.55.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/CHANGELOG.md CHANGED
@@ -1,5 +1,37 @@
1
1
  # Spec changelog
2
2
 
3
+ ## 0.55.0
4
+
5
+ ### Minor Changes
6
+
7
+ - `sm version` no longer prints the `kernel` row, and `sm version --json` drops the `kernel` field: the matrix is now `{ sm, spec, dbSchema }`. The CLI and kernel ship in one package and always carried the identical number, so the second row was redundant noise rather than information; the row returns the day the kernel publishes as its own package. Pre-1.0 breaking change shipped as a minor per the versioning policy.
8
+
9
+ ## User-facing
10
+
11
+ `sm version` no longer shows a separate `kernel` line, it always matched `sm` exactly. The matrix now lists sm, spec, runtime, and db-schema.
12
+
13
+ ## 0.54.0
14
+
15
+ ### Minor Changes
16
+
17
+ - New committed project setting `allowSidecarWriters` (default `true`) lets shared projects forbid every extension that writes `.sm` annotation sidecars. Actions declare the capability via `writes: ['sidecar']` on their manifest; when the policy is `false` the scan composer drops those actions (buttons never render) and the sidecar store refuses the write (BFF 403 `sidecar-writers-forbidden`), a hard gate that wins over the per-machine `allowEditSmFiles` consent.
18
+
19
+ ## User-facing
20
+
21
+ Shared projects can now turn off sidecar writers: a new Project setting stops actions from creating or editing the `.sm` files next to your notes. It is saved in the committed settings.json so it applies to the whole team and cannot be overridden locally.
22
+
23
+ ### Patch Changes
24
+
25
+ - The inspector tag row (`<sm-node-tags>`) is now an inline editor: `core/node-set-tags` no longer self-projects an `inspector.action.button`; a pencil opens an add / remove editor (shown even with no tags) that offers the tags already present in the graph as click-to-add chips, derived live from the loaded scan; typing a brand-new tag still works. The author guide's self-projection example switched from Edit tags to Set stability.
26
+
27
+ ## User-facing
28
+
29
+ Edit a node's tags right where they are shown: click the pencil in the inspector's tag row to add or remove them inline, with one-click chips for tags already used in your graph (you can still type new ones). The separate Edit tags button is gone.
30
+
31
+ - Add a standalone plugin quickstart doc (a short scaffold then fill then run path with the plugin-lifecycle diagram and links into the full author guide), indexed in the spec README and published in the package. The now-redundant Quick start section was removed from the author guide and its unique co-located-files note (text.ts, the colocated test) folded into the Manifest section as a "Files by convention" paragraph.
32
+
33
+ - Editorial pass tightening the spec prose docs for concision (lossless, no normative change: no schema, field, enum, exit code, or MUST/SHOULD touched, and the verbatim prompt preamble still matches the conformance fixture), plus a new non-normative "Plugin lifecycle at a glance" overview atop the plugin author guide with an ASCII diagram of the deterministic flow (Provider, Extractor, Analyzer, Action, Formatter) and Hook off to the side, each with a one-line purpose and short example.
34
+
3
35
  ## 0.53.0
4
36
 
5
37
  ### Minor Changes
package/README.md CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  The **skill-map specification** defines a vendor-neutral standard for mapping, inspecting, and managing collections of interrelated Markdown files, skills, agents, commands, hooks, and notes that compose AI-agent ecosystems (Claude Code, Codex, Antigravity, docs sites, and any future platform).
4
4
 
5
- This document is the **source of truth**. The reference implementation under `../src/` conforms to this spec. Third parties can build alternative implementations (any language, any UI, any CLI) using only `spec/`, without reading the reference source.
5
+ This document is the **source of truth**. The reference implementation under `../src/` conforms to it. Third parties can build alternative implementations (any language, any UI, any CLI) using only `spec/`, without reading the reference source.
6
6
 
7
7
  ## What this spec defines
8
8
 
@@ -24,11 +24,11 @@ This document is the **source of truth**. The reference implementation under `..
24
24
  - Logging format, telemetry, or distribution channels.
25
25
  - Plugin marketplace mechanics.
26
26
 
27
- These are implementation decisions. The reference impl picks them (see [`../AGENTS.md`](../AGENTS.md) and [`../ROADMAP.md`](../ROADMAP.md)); other implementations may pick differently and still conform.
27
+ These are implementation decisions. The reference impl picks them (see [`../AGENTS.md`](../AGENTS.md) and [`../ROADMAP.md`](../ROADMAP.md)); others may pick differently and still conform.
28
28
 
29
29
  ## Properties
30
30
 
31
- - **Machine-readable**: all domain shapes are JSON Schemas. Validate from any language that has a JSON Schema validator.
31
+ - **Machine-readable**: all domain shapes are JSON Schemas. Validate from any language with a JSON Schema validator.
32
32
  - **Human-readable**: prose documents for each subsystem, with examples.
33
33
  - **Independently versioned**: spec `v1.0.0` can be implemented by CLI `v0.3.2`. See [`versioning.md`](./versioning.md).
34
34
  - **Platform-neutral**: no platform is privileged. Each is expressed as an adapter extension.
@@ -36,10 +36,10 @@ These are implementation decisions. The reference impl picks them (see [`../AGEN
36
36
 
37
37
  ## Naming conventions
38
38
 
39
- Two analyzers govern every identifier in the spec. They are **normative**.
39
+ Two analyzers govern every identifier in the spec. Both are **normative**.
40
40
 
41
- - **Filesystem artefacts use kebab-case.** Every file and directory in `spec/` (and in any conforming implementation), `scan-result.schema.json`, `job-lifecycle.md`, `report-base.schema.json`, `auto-rename-medium` (as an `issue.analyzerId` value), `direct-override` (as a `safety.injectionType` enum value), and so on, is kebab-case lowercase. Enum values and issue analyzer ids follow the same convention so they can be echoed back into URLs, filenames, and log keys without escaping.
42
- - **JSON content uses camelCase.** Every key inside a JSON Schema, frontmatter block, config file, plugin manifest, action manifest, job record, report, event payload, or API response is camelCase: `whatItDoes`, `injectionDetected`, `expectedTools`, `sourceVersion`, `docsUrl`, `examplesUrl`, `ttlSeconds`, `runId`, `jobId`. This matches the JS/TS ecosystem the reference impl ships in and the Kysely `CamelCasePlugin` that bridges to the `snake_case` SQL layer, but the analyzer is spec-level, not implementation-level: an alternative implementation in any language still exposes camelCase JSON keys.
41
+ - **Filesystem artefacts use kebab-case.** Every file and directory in `spec/` (and in any conforming implementation), `scan-result.schema.json`, `job-lifecycle.md`, `report-base.schema.json`, `auto-rename-medium` (as an `issue.analyzerId` value), `direct-override` (as a `safety.injectionType` enum value), and so on, is kebab-case lowercase. Enum values and issue analyzer ids follow the same convention so they echo into URLs, filenames, and log keys without escaping.
42
+ - **JSON content uses camelCase.** Every key inside a JSON Schema, frontmatter block, config file, plugin manifest, action manifest, job record, report, event payload, or API response is camelCase: `whatItDoes`, `injectionDetected`, `expectedTools`, `sourceVersion`, `docsUrl`, `examplesUrl`, `ttlSeconds`, `runId`, `jobId`. This matches the JS/TS ecosystem the reference impl ships in and the Kysely `CamelCasePlugin` that bridges to the `snake_case` SQL layer, but the analyzer is spec-level: an alternative implementation in any language still exposes camelCase JSON keys.
43
43
 
44
44
  The SQL persistence layer is the sole exception: tables, columns, and migration filenames use `snake_case` (see `db-schema.md`). That boundary is crossed only inside a storage adapter; nothing that leaves the kernel should ever be `snake_case`.
45
45
 
@@ -61,6 +61,8 @@ spec/ ← published as @skill-map/spec
61
61
  ├── [plugin-kv-api.md](./plugin-kv-api.md) ← ctx.store contract for storage mode A
62
62
  ├── [job-lifecycle.md](./job-lifecycle.md) ← queued → running → completed | failed
63
63
  ├── [telemetry.md](./telemetry.md) ← opt-in error reporting (default OFF)
64
+ ├── [plugin-quickstart.md](./plugin-quickstart.md) ← 3-step path to a working plugin
65
+ ├── [plugin-author-guide.md](./plugin-author-guide.md) ← full plugin author guide (descriptive)
64
66
 
65
67
  ├── schemas/ ← JSON Schemas, draft 2020-12, camelCase keys (authoritative list + sha256 in index.json)
66
68
  │ ├── node.schema.json ┐
@@ -114,7 +116,7 @@ spec/ ← published as @skill-map/spec
114
116
 
115
117
  The reference implementation ([`../src/`](../src/README.md)) is one conforming consumer of this spec. It ships the CLI binary `sm`, a built-in SQLite storage adapter, and a set of default extensions.
116
118
 
117
- The reference impl has no privileged access to the spec. Breaking changes to the spec must follow [`versioning.md`](./versioning.md) regardless of reference-impl convenience.
119
+ The reference impl has no privileged access. Breaking changes to the spec must follow [`versioning.md`](./versioning.md) regardless of reference-impl convenience.
118
120
 
119
121
  When spec and reference impl disagree, the spec wins. File an issue; one of them is wrong.
120
122
 
@@ -140,11 +142,11 @@ console.log(specIndex.integrity.algorithm); // → "sha256"
140
142
  console.log(nodeSchema.$id); // → "https://skill-map.ai/spec/v0/node.schema.json"
141
143
  ```
142
144
 
143
- Every JSON Schema is exported individually via `@skill-map/spec/schemas/*.json`. Prose documents ship in the tarball for reference but are not `exports`-surfaced.
145
+ Every JSON Schema is exported individually via `@skill-map/spec/schemas/*.json`. Prose documents ship in the tarball but are not `exports`-surfaced.
144
146
 
145
147
  ### Verify integrity
146
148
 
147
- The package ships `index.json` with a sha256 per file. To verify a local installation matches what was published:
149
+ The package ships `index.json` with a sha256 per file. To verify a local install matches what was published:
148
150
 
149
151
  ```js
150
152
  import { readFileSync } from 'node:fs';
@@ -158,7 +160,7 @@ console.log(actual === index.integrity.files[file] ? 'ok' : 'drift');
158
160
 
159
161
  ### JSON Schema Store
160
162
 
161
- The schemas will be registered on JSON Schema Store once the canonical URLs under `skill-map.ai/spec/v0/` are stable (Step 14).
163
+ The schemas register on JSON Schema Store once the canonical URLs under `skill-map.ai/spec/v0/` are stable (Step 14).
162
164
 
163
165
  ## License
164
166