diff --git a/.changeset/backtick-path-extractor.md b/.changeset/backtick-path-extractor.md
deleted file mode 100644
index 3525d7ff..00000000
--- a/.changeset/backtick-path-extractor.md
+++ /dev/null
@@ -1,10 +0,0 @@
----
-"@skill-map/cli": minor
-"@skill-map/spec": minor
----
-
-Adds the `core/backtick-path` extractor: relative `.md` paths written inside inline code spans and fenced blocks become edges, resolved like markdown links. The token grammar is pinned in `spec/architecture.md` (new section "Extractor: code-region file references"), unresolved targets surface via `core/reference-broken`, and the kernel exports `extractCodeRegions`, the exact inverse mask of `stripCodeBlocks`.
-
-## User-facing
-
-Skills that tell the agent to read a bundled doc with a backtick path (like `references/rules.md`) now show those arrows on the map, and a backtick path pointing at a missing file is flagged as a broken reference.
diff --git a/.changeset/compact-finding-messages.md b/.changeset/compact-finding-messages.md
deleted file mode 100644
index 92e852c9..00000000
--- a/.changeset/compact-finding-messages.md
+++ /dev/null
@@ -1,9 +0,0 @@
----
-"@skill-map/cli": patch
----
-
-Reworks every built-in analyzer message into a compact finding grammar: the involved artifact (target, trigger, sidecar) leads on its own line, followed by a short label, count, detail, and a `(line N)` location suffix wherever the link records one (broken references, self-loops, reserved-name downgrades); duplicate occurrences group by trigger, and messages about the node itself drop the redundant path. The inspector renders the line break and `sm check` flattens it to one row.
-
-## User-facing
-
-Findings are shorter and clearer: the file or trigger involved leads on its own line, duplicates collapse to `Duplicate reference (2): \`refs/x.md\` (124, 145)`, broken references name the line they sit on, and messages no longer repeat the node's own path.
diff --git a/.changeset/extension-stability-badges.md b/.changeset/extension-stability-badges.md
deleted file mode 100644
index 3783e824..00000000
--- a/.changeset/extension-stability-badges.md
+++ /dev/null
@@ -1,10 +0,0 @@
----
-"@skill-map/spec": minor
-"@skill-map/cli": minor
----
-
-Extensions can declare an optional `stability` lifecycle label (`experimental`, `beta`, `stable`, `deprecated`) in their manifest. Presentation-only: non-default values render as a badge in `sm plugins list` / `sm plugins show` and the Settings plugins panel; missing means `stable` and the kernel never gates behaviour on it. Declared in the spec's extension base schema and threaded through the loader, the BFF, and the SPA. `core/mcp-tools` is the first built-in flagged `experimental`.
-
-## User-facing
-
-**Plugin maturity at a glance.** Extensions can now carry an experimental, beta, or deprecated badge next to their name in the Settings plugins panel and in `sm plugins list`, so you can tell which parts of a plugin are still settling before relying on them.
diff --git a/.changeset/points-link-kind.md b/.changeset/points-link-kind.md
deleted file mode 100644
index 2018dcfe..00000000
--- a/.changeset/points-link-kind.md
+++ /dev/null
@@ -1,10 +0,0 @@
----
-"@skill-map/cli": minor
-"@skill-map/spec": minor
----
-
-Adds the `points` link kind to the closed enum: `core/backtick-path` now emits `points` instead of `references`, so a backtick path and a markdown link to the same target persist as two coexisting edges instead of merging, and `core/link-conflict` treats `points` as compatible with every other kind (no false conflict warns). `core/reference-broken` labels the kind "pointer".
-
-## User-facing
-
-Backtick paths get their own "Points" connector kind: a new palette toggle with a backtick glyph, its own edge colour per theme, and arrows separate from markdown-link references on the map.
diff --git a/.changeset/reference-redundant-info-severity.md b/.changeset/reference-redundant-info-severity.md
deleted file mode 100644
index 15712c90..00000000
--- a/.changeset/reference-redundant-info-severity.md
+++ /dev/null
@@ -1,9 +0,0 @@
----
-"@skill-map/cli": patch
----
-
-Downgrades the `core/reference-redundant` analyzer severity from `warn` to `info`: a multi-form reference to the same target is a consolidation hint, not a defect, so it no longer shares the visual bucket of actionable warnings like `reference-broken`.
-
-## User-facing
-
-Referencing the same file twice in different forms (a markdown link plus a backtick path, for example) now shows as an info note instead of a warning, so the warning chips on cards only count things worth fixing.
diff --git a/.changeset/search-map-decoupling.md b/.changeset/search-map-decoupling.md
deleted file mode 100644
index 096ec8cc..00000000
--- a/.changeset/search-map-decoupling.md
+++ /dev/null
@@ -1,9 +0,0 @@
----
-"@skill-map/cli": patch
----
-
-Decouples the workspace text search from the map: `FilterStoreService.apply()` gains an `includeSearch` option and the graph view only applies the query when the new persisted `searchAffectsMap` preference (toggle next to the rail search input, default off) is enabled. The files rail keeps filtering on every query.
-
-## User-facing
-
-Searching no longer rips nodes out of the map: by default the query narrows only the files list while the map keeps its layout. A new toggle next to the search box brings back the old filter-everything behavior, and your choice is remembered.
diff --git a/.changeset/tools-counter-claude-plugin.md b/.changeset/tools-counter-claude-plugin.md
deleted file mode 100644
index f92f92bb..00000000
--- a/.changeset/tools-counter-claude-plugin.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-'@skill-map/cli': minor
----
-
-The `tools-counter` extractor moved from the `core` plugin into the `claude` plugin: its qualified id is now `claude/tools-counter` (settings toggles keyed `core/tools-counter` no longer match), and disabling the `claude` plugin now drops the agent tools chip together with the provider it serves.
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 1689cd91..f38a933d 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -6,6 +6,27 @@
> Forward-looking plan: [`ROADMAP.md`](./ROADMAP.md).
+0.54.0 · 2026-06-12
+
+### CLI Minor
+- Adds the `core/backtick-path` extractor: relative `.md` paths written inside inline code spans and fenced blocks become edges, resolved like markdown links. The token grammar is pinned in `spec/architecture.md` (new section "Extractor: code-region file references"), unresolved targets surface via `core/reference-broken`, and the kernel exports `extractCodeRegions`, the exact inverse mask of `stripCodeBlocks`.
+- Extensions can declare an optional `stability` lifecycle label (`experimental`, `beta`, `stable`, `deprecated`) in their manifest. Presentation-only: non-default values render as a badge in `sm plugins list` / `sm plugins show` and the Settings plugins panel; missing means `stable` and the kernel never gates behaviour on it. Declared in the spec's extension base schema and threaded through the loader, the BFF, and the SPA. `core/mcp-tools` is the first built-in flagged `experimental`.
+- Adds the `points` link kind to the closed enum: `core/backtick-path` now emits `points` instead of `references`, so a backtick path and a markdown link to the same target persist as two coexisting edges instead of merging, and `core/link-conflict` treats `points` as compatible with every other kind (no false conflict warns). `core/reference-broken` labels the kind "pointer".
+- The `tools-counter` extractor moved from the `core` plugin into the `claude` plugin: its qualified id is now `claude/tools-counter` (settings toggles keyed `core/tools-counter` no longer match), and disabling the `claude` plugin now drops the agent tools chip together with the provider it serves.
+
+### CLI Patch
+- Reworks every built-in analyzer message into a compact finding grammar: the involved artifact (target, trigger, sidecar) leads on its own line, followed by a short label, count, detail, and a `(line N)` location suffix wherever the link records one (broken references, self-loops, reserved-name downgrades); duplicate occurrences group by trigger, and messages about the node itself drop the redundant path. The inspector renders the line break and `sm check` flattens it to one row.
+- Downgrades the `core/reference-redundant` analyzer severity from `warn` to `info`: a multi-form reference to the same target is a consolidation hint, not a defect, so it no longer shares the visual bucket of actionable warnings like `reference-broken`.
+- Decouples the workspace text search from the map: `FilterStoreService.apply()` gains an `includeSearch` option and the graph view only applies the query when the new persisted `searchAffectsMap` preference (toggle next to the rail search input, default off) is enabled. The files rail keeps filtering on every query.
+
+### Spec Minor (0.48.0)
+- Adds the `core/backtick-path` extractor: relative `.md` paths written inside inline code spans and fenced blocks become edges, resolved like markdown links. The token grammar is pinned in `spec/architecture.md` (new section "Extractor: code-region file references"), unresolved targets surface via `core/reference-broken`, and the kernel exports `extractCodeRegions`, the exact inverse mask of `stripCodeBlocks`.
+- Extensions can declare an optional `stability` lifecycle label (`experimental`, `beta`, `stable`, `deprecated`) in their manifest. Presentation-only: non-default values render as a badge in `sm plugins list` / `sm plugins show` and the Settings plugins panel; missing means `stable` and the kernel never gates behaviour on it. Declared in the spec's extension base schema and threaded through the loader, the BFF, and the SPA. `core/mcp-tools` is the first built-in flagged `experimental`.
+- Adds the `points` link kind to the closed enum: `core/backtick-path` now emits `points` instead of `references`, so a backtick path and a markdown link to the same target persist as two coexisting edges instead of merging, and `core/link-conflict` treats `points` as compatible with every other kind (no false conflict warns). `core/reference-broken` labels the kind "pointer".
+
+
+
+
0.53.6 · 2026-06-09
### CLI Patch
diff --git a/spec/CHANGELOG.md b/spec/CHANGELOG.md
index 4e823cfc..91b5669b 100644
--- a/spec/CHANGELOG.md
+++ b/spec/CHANGELOG.md
@@ -1,5 +1,27 @@
# Spec changelog
+## 0.48.0
+
+### Minor Changes
+
+- Adds the `core/backtick-path` extractor: relative `.md` paths written inside inline code spans and fenced blocks become edges, resolved like markdown links. The token grammar is pinned in `spec/architecture.md` (new section "Extractor: code-region file references"), unresolved targets surface via `core/reference-broken`, and the kernel exports `extractCodeRegions`, the exact inverse mask of `stripCodeBlocks`.
+
+ ## User-facing
+
+ Skills that tell the agent to read a bundled doc with a backtick path (like `references/rules.md`) now show those arrows on the map, and a backtick path pointing at a missing file is flagged as a broken reference.
+
+- Extensions can declare an optional `stability` lifecycle label (`experimental`, `beta`, `stable`, `deprecated`) in their manifest. Presentation-only: non-default values render as a badge in `sm plugins list` / `sm plugins show` and the Settings plugins panel; missing means `stable` and the kernel never gates behaviour on it. Declared in the spec's extension base schema and threaded through the loader, the BFF, and the SPA. `core/mcp-tools` is the first built-in flagged `experimental`.
+
+ ## User-facing
+
+ **Plugin maturity at a glance.** Extensions can now carry an experimental, beta, or deprecated badge next to their name in the Settings plugins panel and in `sm plugins list`, so you can tell which parts of a plugin are still settling before relying on them.
+
+- Adds the `points` link kind to the closed enum: `core/backtick-path` now emits `points` instead of `references`, so a backtick path and a markdown link to the same target persist as two coexisting edges instead of merging, and `core/link-conflict` treats `points` as compatible with every other kind (no false conflict warns). `core/reference-broken` labels the kind "pointer".
+
+ ## User-facing
+
+ Backtick paths get their own "Points" connector kind: a new palette toggle with a backtick glyph, its own edge colour per theme, and arrows separate from markdown-link references on the map.
+
## 0.47.0
### Minor Changes
diff --git a/spec/index.json b/spec/index.json
index 909cef11..4a4e47e1 100644
--- a/spec/index.json
+++ b/spec/index.json
@@ -174,11 +174,11 @@
}
]
},
- "specPackageVersion": "0.47.0",
+ "specPackageVersion": "0.48.0",
"integrity": {
"algorithm": "sha256",
"files": {
- "CHANGELOG.md": "456edc2e8eaab28524945c04f3678354b06f4cd4dfa793ff9b612e2b25aa7fc9",
+ "CHANGELOG.md": "e7fc58aaced4c555405dd1e41a860b016cfb4fca7da6dbb29dfa6b39fddcba79",
"README.md": "a7505a7b0672c39a8b011e3c5e7d41826306476ee63768249bba4bdb3c03d4d1",
"architecture.md": "961a1aedf037dc9a2e6bdef1944d04e35bf826fdf8579ee64b0aff9f6d9f70da",
"cli-contract.md": "f2d5bbe15c19646b69fd1aaff8a380b7044966dad049a180445e5c2130ec051c",
diff --git a/spec/package.json b/spec/package.json
index 89fa6159..6eb4b538 100644
--- a/spec/package.json
+++ b/spec/package.json
@@ -1,6 +1,6 @@
{
"name": "@skill-map/spec",
- "version": "0.47.0",
+ "version": "0.48.0",
"description": "JSON Schemas, prose contracts, and conformance suite for the skill-map specification.",
"license": "MIT",
"type": "module",
diff --git a/src/CHANGELOG.md b/src/CHANGELOG.md
index 018585b5..64cdb227 100644
--- a/src/CHANGELOG.md
+++ b/src/CHANGELOG.md
@@ -1,5 +1,49 @@
# skill-map
+## 0.54.0
+
+### Minor Changes
+
+- Adds the `core/backtick-path` extractor: relative `.md` paths written inside inline code spans and fenced blocks become edges, resolved like markdown links. The token grammar is pinned in `spec/architecture.md` (new section "Extractor: code-region file references"), unresolved targets surface via `core/reference-broken`, and the kernel exports `extractCodeRegions`, the exact inverse mask of `stripCodeBlocks`.
+
+ ## User-facing
+
+ Skills that tell the agent to read a bundled doc with a backtick path (like `references/rules.md`) now show those arrows on the map, and a backtick path pointing at a missing file is flagged as a broken reference.
+
+- Extensions can declare an optional `stability` lifecycle label (`experimental`, `beta`, `stable`, `deprecated`) in their manifest. Presentation-only: non-default values render as a badge in `sm plugins list` / `sm plugins show` and the Settings plugins panel; missing means `stable` and the kernel never gates behaviour on it. Declared in the spec's extension base schema and threaded through the loader, the BFF, and the SPA. `core/mcp-tools` is the first built-in flagged `experimental`.
+
+ ## User-facing
+
+ **Plugin maturity at a glance.** Extensions can now carry an experimental, beta, or deprecated badge next to their name in the Settings plugins panel and in `sm plugins list`, so you can tell which parts of a plugin are still settling before relying on them.
+
+- Adds the `points` link kind to the closed enum: `core/backtick-path` now emits `points` instead of `references`, so a backtick path and a markdown link to the same target persist as two coexisting edges instead of merging, and `core/link-conflict` treats `points` as compatible with every other kind (no false conflict warns). `core/reference-broken` labels the kind "pointer".
+
+ ## User-facing
+
+ Backtick paths get their own "Points" connector kind: a new palette toggle with a backtick glyph, its own edge colour per theme, and arrows separate from markdown-link references on the map.
+
+- The `tools-counter` extractor moved from the `core` plugin into the `claude` plugin: its qualified id is now `claude/tools-counter` (settings toggles keyed `core/tools-counter` no longer match), and disabling the `claude` plugin now drops the agent tools chip together with the provider it serves.
+
+### Patch Changes
+
+- Reworks every built-in analyzer message into a compact finding grammar: the involved artifact (target, trigger, sidecar) leads on its own line, followed by a short label, count, detail, and a `(line N)` location suffix wherever the link records one (broken references, self-loops, reserved-name downgrades); duplicate occurrences group by trigger, and messages about the node itself drop the redundant path. The inspector renders the line break and `sm check` flattens it to one row.
+
+ ## User-facing
+
+ Findings are shorter and clearer: the file or trigger involved leads on its own line, duplicates collapse to `Duplicate reference (2): \`refs/x.md\` (124, 145)`, broken references name the line they sit on, and messages no longer repeat the node's own path.
+
+- Downgrades the `core/reference-redundant` analyzer severity from `warn` to `info`: a multi-form reference to the same target is a consolidation hint, not a defect, so it no longer shares the visual bucket of actionable warnings like `reference-broken`.
+
+ ## User-facing
+
+ Referencing the same file twice in different forms (a markdown link plus a backtick path, for example) now shows as an info note instead of a warning, so the warning chips on cards only count things worth fixing.
+
+- Decouples the workspace text search from the map: `FilterStoreService.apply()` gains an `includeSearch` option and the graph view only applies the query when the new persisted `searchAffectsMap` preference (toggle next to the rail search input, default off) is enabled. The files rail keeps filtering on every query.
+
+ ## User-facing
+
+ Searching no longer rips nodes out of the map: by default the query narrows only the files list while the map keeps its layout. A new toggle next to the search box brings back the old filter-everything behavior, and your choice is remembered.
+
## 0.53.6
### Patch Changes
diff --git a/src/package.json b/src/package.json
index ff0cb961..df409f9e 100644
--- a/src/package.json
+++ b/src/package.json
@@ -1,6 +1,6 @@
{
"name": "@skill-map/cli",
- "version": "0.53.6",
+ "version": "0.54.0",
"description": "skill-map reference implementation — kernel + CLI + adapters.",
"license": "MIT",
"type": "module",
diff --git a/ui/src/data/user-changelog.json b/ui/src/data/user-changelog.json
index 58654a48..8867f884 100644
--- a/ui/src/data/user-changelog.json
+++ b/ui/src/data/user-changelog.json
@@ -1,6 +1,52 @@
{
"schemaVersion": 1,
"entries": [
+ {
+ "version": "0.54.0",
+ "date": "2026-06-12",
+ "kind": "user-facing",
+ "highlights": [
+ {
+ "body": "Skills that tell the agent to read a bundled doc with a backtick path (like `references/rules.md`) now show those arrows on the map, and a backtick path pointing at a missing file is flagged as a broken reference.",
+ "packages": [
+ "@skill-map/cli",
+ "@skill-map/spec"
+ ]
+ },
+ {
+ "body": "Findings are shorter and clearer: the file or trigger involved leads on its own line, duplicates collapse to `Duplicate reference (2): \\`refs/x.md\\` (124, 145)`, broken references name the line they sit on, and messages no longer repeat the node's own path.",
+ "packages": [
+ "@skill-map/cli"
+ ]
+ },
+ {
+ "body": "**Plugin maturity at a glance.** Extensions can now carry an experimental, beta, or deprecated badge next to their name in the Settings plugins panel and in `sm plugins list`, so you can tell which parts of a plugin are still settling before relying on them.",
+ "packages": [
+ "@skill-map/cli",
+ "@skill-map/spec"
+ ]
+ },
+ {
+ "body": "Backtick paths get their own \"Points\" connector kind: a new palette toggle with a backtick glyph, its own edge colour per theme, and arrows separate from markdown-link references on the map.",
+ "packages": [
+ "@skill-map/cli",
+ "@skill-map/spec"
+ ]
+ },
+ {
+ "body": "Referencing the same file twice in different forms (a markdown link plus a backtick path, for example) now shows as an info note instead of a warning, so the warning chips on cards only count things worth fixing.",
+ "packages": [
+ "@skill-map/cli"
+ ]
+ },
+ {
+ "body": "Searching no longer rips nodes out of the map: by default the query narrows only the files list while the map keeps its layout. A new toggle next to the search box brings back the old filter-everything behavior, and your choice is remembered.",
+ "packages": [
+ "@skill-map/cli"
+ ]
+ }
+ ]
+ },
{
"version": "0.53.6",
"date": "2026-06-09",