skill-creator 2.1.0 → 2.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/CHANGELOG.md +109 -0
- package/README.md +13 -0
- package/dist/cli.js +8096 -3713
- package/dist/cli.js.map +4 -4
- package/dist/daemon.js +4694 -956
- package/dist/daemon.js.map +4 -4
- package/dist/package.json +1 -1
- package/dist/webui/_app/immutable/assets/0.Dbnkcm0y.css +2 -0
- package/dist/webui/_app/immutable/assets/ProviderView.BKgtsfqs.css +1 -0
- package/dist/webui/_app/immutable/chunks/1aUphu7Y.js +1 -0
- package/dist/webui/_app/immutable/chunks/8hp3I3ac.js +1 -0
- package/dist/webui/_app/immutable/chunks/{K56ab8zF.js → B0-OMyfG.js} +1 -1
- package/dist/webui/_app/immutable/chunks/B5sWuF6v.js +1 -0
- package/dist/webui/_app/immutable/chunks/BOPkZ98B.js +1 -0
- package/dist/webui/_app/immutable/chunks/BT2vrlul.js +1 -0
- package/dist/webui/_app/immutable/chunks/{QU8DIUJz.js → BdXWsCWd.js} +2 -2
- package/dist/webui/_app/immutable/chunks/BkjUgGsE.js +1 -0
- package/dist/webui/_app/immutable/chunks/{D-V0xBeS.js → Bl0jjuyR.js} +1 -1
- package/dist/webui/_app/immutable/chunks/ByW1yjUW.js +1 -0
- package/dist/webui/_app/immutable/chunks/{Bos6D7ir.js → C5MrAfWf.js} +2 -2
- package/dist/webui/_app/immutable/chunks/CI1OXbBG.js +1 -0
- package/dist/webui/_app/immutable/chunks/{BKjuWHgW.js → CPbfZBJo.js} +3 -3
- package/dist/webui/_app/immutable/chunks/{CY3MARMs.js → CgxChsUX.js} +1 -1
- package/dist/webui/_app/immutable/chunks/ChvFFUWR.js +1 -0
- package/dist/webui/_app/immutable/chunks/CpRvgjpe.js +1 -0
- package/dist/webui/_app/immutable/chunks/Cr5YUwJg.js +1 -0
- package/dist/webui/_app/immutable/chunks/{B0yogbIO.js → D3qCeXbe.js} +1 -1
- package/dist/webui/_app/immutable/chunks/{0umLG1IN.js → DApmS1g_.js} +1 -1
- package/dist/webui/_app/immutable/chunks/DKQHhdJ1.js +1 -0
- package/dist/webui/_app/immutable/chunks/{DFdxGYRu.js → DKepoBN5.js} +4 -4
- package/dist/webui/_app/immutable/chunks/DOjT7y5f.js +1 -0
- package/dist/webui/_app/immutable/chunks/DXKynIUR.js +1 -0
- package/dist/webui/_app/immutable/chunks/DiaaOubc.js +1 -0
- package/dist/webui/_app/immutable/chunks/DnPeA-9c.js +1 -0
- package/dist/webui/_app/immutable/chunks/DwIX6ZFE.js +1 -0
- package/dist/webui/_app/immutable/chunks/E8LHILEh.js +1 -0
- package/dist/webui/_app/immutable/chunks/F_BrNiaz.js +1 -0
- package/dist/webui/_app/immutable/chunks/HopcQwhZ.js +1 -0
- package/dist/webui/_app/immutable/chunks/j76fpbnQ.js +2 -0
- package/dist/webui/_app/immutable/chunks/myIHotqu.js +2 -0
- package/dist/webui/_app/immutable/chunks/{hrRIAQd7.js → oxP0dM6z.js} +1 -1
- package/dist/webui/_app/immutable/chunks/{Dl8eQ129.js → p_ObVaZi.js} +1 -1
- package/dist/webui/_app/immutable/entry/{app.CkIQoKd-.js → app.BQ4neDVJ.js} +2 -2
- package/dist/webui/_app/immutable/entry/start.BqwTCU7F.js +1 -0
- package/dist/webui/_app/immutable/nodes/{0.DY8kli0K.js → 0.uOFdFHyI.js} +119 -119
- package/dist/webui/_app/immutable/nodes/{1.DxOotYUD.js → 1.BhX-6aiQ.js} +1 -1
- package/dist/webui/_app/immutable/nodes/{2.BhwY9m4H.js → 2.C7Br-rQ1.js} +1 -1
- package/dist/webui/_app/version.json +1 -1
- package/dist/webui/index.html +28 -22
- package/package.json +10 -4
- package/dist/webui/_app/immutable/assets/0.BfQ9GZ7H.css +0 -2
- package/dist/webui/_app/immutable/assets/ProviderView.DEH95hqa.css +0 -1
- package/dist/webui/_app/immutable/chunks/9b6xLvUw.js +0 -1
- package/dist/webui/_app/immutable/chunks/BDe0K-12.js +0 -1
- package/dist/webui/_app/immutable/chunks/CIFG41pU.js +0 -1
- package/dist/webui/_app/immutable/chunks/CNPsST_i.js +0 -1
- package/dist/webui/_app/immutable/chunks/Ckw1quWt.js +0 -1
- package/dist/webui/_app/immutable/chunks/D-ihBChi.js +0 -1
- package/dist/webui/_app/immutable/chunks/D7i1h2eW.js +0 -2
- package/dist/webui/_app/immutable/chunks/DFDHkP9N.js +0 -1
- package/dist/webui/_app/immutable/chunks/Dbn_qXWm.js +0 -1
- package/dist/webui/_app/immutable/chunks/NO3Cfsmo.js +0 -1
- package/dist/webui/_app/immutable/chunks/UsOmL8ol.js +0 -1
- package/dist/webui/_app/immutable/entry/start.DG-jtr9O.js +0 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,114 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 2.3.0 (2026-09-22)
|
|
4
|
+
|
|
5
|
+
Wikis move in with their workspaces, a fourth top-level Wiki panel, a
|
|
6
|
+
`skill-creator wiki` subcommand, and the search engine swap that retires
|
|
7
|
+
MiniSearch.
|
|
8
|
+
|
|
9
|
+
### Added
|
|
10
|
+
|
|
11
|
+
- **Wiki directory-mapping standard** — a workspace's wiki now lives at
|
|
12
|
+
`<workspace>/.agents/skill-wiki/` (a `.git/`-style directory property), and
|
|
13
|
+
global lives at `~/.agents/skill-wiki` (`SKILL_WIKI_HOME` overrides). Scope
|
|
14
|
+
is decided by the path itself: the slug registry, the central root, and the
|
|
15
|
+
`~/.skill-creator/wiki` sidecar are retired, and a one-shot migration script
|
|
16
|
+
carries existing data over (conflicts are refused conservatively). Project
|
|
17
|
+
wikis need no registry at all.
|
|
18
|
+
- **Fourth top-level Wiki panel** — `/wiki` lists every scope (global card plus
|
|
19
|
+
each registered workspace, with read-only counts, latest update, and honest
|
|
20
|
+
"Not initialized" empty states); `/wiki/:wsId` is the per-scope fragment list
|
|
21
|
+
with filter, append form, similarity warning, and draft-preserving
|
|
22
|
+
disconnects. The legacy view under Workspaces is gone and its entries point
|
|
23
|
+
at the new panel.
|
|
24
|
+
- **`wiki.scopes` RPC** — global is always listed, uninitialized scopes are
|
|
25
|
+
never lazily created by a read, and counts share one read-only membership
|
|
26
|
+
rule with the list view (illegal file names and malformed frontmatter are
|
|
27
|
+
dropped in both places).
|
|
28
|
+
- **`skill-creator wiki` subcommand** — assembled in-process from the new
|
|
29
|
+
skill-wiki cli-kit (`createWikiCli` host slots: resolveScope, commandPrefix,
|
|
30
|
+
extraCommands). `--workspace` accepts a registry label, a `ws_*` id, a path,
|
|
31
|
+
`~`, or `./` (default); `wiki scopes` gives the global overview with
|
|
32
|
+
`--json`.
|
|
33
|
+
|
|
34
|
+
### Changed
|
|
35
|
+
|
|
36
|
+
- **@jixoai/search replaces MiniSearch** — the org-level package keeps recall
|
|
37
|
+
and persistence in pluggable backends (sqlite FTS5 by default, Tantivy in
|
|
38
|
+
single-process deployments) with BM25 scoring frozen in a shared JS layer;
|
|
39
|
+
the daemon/CLI default is sqlite because Tantivy's directory lock is
|
|
40
|
+
single-writer (`SKILL_CREATOR_SEARCH_BACKEND` switches).
|
|
41
|
+
|
|
42
|
+
### Fixed
|
|
43
|
+
|
|
44
|
+
- **Search-engine handles now close** — the persistent index exposes `close()`
|
|
45
|
+
and daemon teardown awaits it, so stopping or restarting no longer leaks the
|
|
46
|
+
sqlite handle (on Windows this made every later index-directory delete fail
|
|
47
|
+
with EPERM). Cross-platform validation on a real Windows host covered the
|
|
48
|
+
packages, the search/wiki surfaces, and CLI smoke runs; 63 pre-existing
|
|
49
|
+
Windows-only failures outside these areas are catalogued in
|
|
50
|
+
`docs/search-design.md` §17 for a follow-up change.
|
|
51
|
+
|
|
52
|
+
## 2.2.0 (2026-09-20)
|
|
53
|
+
|
|
54
|
+
A local BM25 skill-search index under the whole product, a first screen that
|
|
55
|
+
loads in ~1s instead of ~7s, and native OS pickers for choosing directories.
|
|
56
|
+
|
|
57
|
+
### Added
|
|
58
|
+
|
|
59
|
+
- **Local skill search everywhere** — a daemon-owned search index (canonical
|
|
60
|
+
`realpath` dedup, CJK-aware frozen tokenizer, MiniSearch BM25 with frozen
|
|
61
|
+
rerank weights, persisted under a versioned envelope with per-file stat
|
|
62
|
+
freshness and event-driven watching) now backs four faces: `skill-creator
|
|
63
|
+
search` on the CLI, `skills.search` / `skills.duplicates` over RPC, the
|
|
64
|
+
`skills_search` / `skills_duplicates` MCP tools, and three GUI entry points
|
|
65
|
+
— the ProviderView filter box (URL-`q` truth), the ⌘K command palette, and
|
|
66
|
+
the composer `$` menu. Exclusion dirs are tunable via a `search-config.toml`
|
|
67
|
+
written next to the index, with an in-UI shortcut to open it in your editor.
|
|
68
|
+
- **Same-content badges on skill rows** — skills whose indexed bytes are
|
|
69
|
+
identical across installations show a Finder-style link badge (`↗N`,
|
|
70
|
+
"Same content as N other installations") in list and search rows, replacing
|
|
71
|
+
the old full-screen duplicate-groups block on the Workspaces home (owner
|
|
72
|
+
ruling: a badge is the honest signal, a wall of groups is noise).
|
|
73
|
+
- **Native directory picker for workspace import** — the Import dialog's new
|
|
74
|
+
Browse… button routes through `@opentray/ext-dialog` (upgraded the opentray
|
|
75
|
+
family to 0.32.0, whose osascript bridge made real-host dialogs clickable —
|
|
76
|
+
two upstream bugs found and fixed along the way, jixoai/opentray#8 and #10).
|
|
77
|
+
Unsupported platforms or headless daemons hide the button; a picked
|
|
78
|
+
directory backfills the path and seeds the display name.
|
|
79
|
+
- **Attachment pickers show loading** — the composer's image and document
|
|
80
|
+
buttons now spin their own icon while the native file-picker is up (each
|
|
81
|
+
target separately), matching the import Browse feedback.
|
|
82
|
+
|
|
83
|
+
### Fixed
|
|
84
|
+
|
|
85
|
+
- **Search returned nothing on real libraries** — the ranking pool folded
|
|
86
|
+
duplicate content _after_ the top-40 cut, so 30+ byte-identical copies of
|
|
87
|
+
one skill drowned every other result, and the surviving representative only
|
|
88
|
+
carried its own installation scope, which made provider-filtered views match
|
|
89
|
+
nothing. Folding now happens before the pool (one representative per content
|
|
90
|
+
hash) and the primary merges the group's full installation list.
|
|
91
|
+
- **First screen took 5–7 seconds** — `workspace.list` ran two full discovery
|
|
92
|
+
sweeps over ~50 agent roots per call and the WebUI fired it 3–4× per load;
|
|
93
|
+
the registry now scans each `(provider, root)` exactly once (counts and
|
|
94
|
+
dedup keys from the same pass, Claude-plugin side effects skipped for
|
|
95
|
+
non-claude roots), the WebUI shares one in-flight request per connection
|
|
96
|
+
generation, the `npx skills` provenance probe warms in the background
|
|
97
|
+
instead of blocking the first `skills.list`, and same-target reads share
|
|
98
|
+
one in-flight discovery with explicit invalidation after every disk write.
|
|
99
|
+
Measured cold first paint: ~5–7s → ~1.07s; opening a skill: 27–156ms → 40ms.
|
|
100
|
+
- Search-row clicks opened "Skill not found" — the global canonical id was
|
|
101
|
+
passed to the provider-scoped detail RPC; the row now resolves the local
|
|
102
|
+
skill by name.
|
|
103
|
+
|
|
104
|
+
### Changed
|
|
105
|
+
|
|
106
|
+
- **Visual polish pass over Workspaces** — a two-round reviewed rework: 22rem
|
|
107
|
+
list column with a width-capped centered detail pane, a 12px text floor,
|
|
108
|
+
unified hover/nesting card language, icon-only header actions, neutralized
|
|
109
|
+
row icons, an icon-rail active state, and layered not-found messaging that
|
|
110
|
+
keeps the opaque id out of the headline.
|
|
111
|
+
|
|
3
112
|
## 2.1.0 (2026-09-16)
|
|
4
113
|
|
|
5
114
|
The `$` skill-reference composer surface, the dual-era MCP fix that revives the
|
package/README.md
CHANGED
|
@@ -123,6 +123,7 @@ Inside the repository use `pnpm skill-creator <command>` after building; as an i
|
|
|
123
123
|
| `openinbrowser` | Explicitly open the current daemon's tokened WebUI URL in the system browser |
|
|
124
124
|
| `status` | Print PID, version, HTTP port, tray state (mounted/web/headless), and any tray error |
|
|
125
125
|
| `stop` | Stop the production daemon; if the production endpoint is gone, discover and stop the dev daemon, waiting for endpoint release |
|
|
126
|
+
| `search` | Search local skills in-process (BM25 + skill tokenizer, no daemon required); see [Skill search](#skill-search) |
|
|
126
127
|
| `version` | Print the package version |
|
|
127
128
|
| `help` | Print command help |
|
|
128
129
|
|
|
@@ -138,6 +139,18 @@ pnpm skill-creator stop
|
|
|
138
139
|
|
|
139
140
|
The commands above were exercised against the built output (`dist/`, identical to the published package): headless `start` prints the recovery hint and exits 0; `status` prints pid/version/port/tray state, the DSH host health line (`--json` prints the full state), and the tokened WebUI URL; `open` is unavailable headless and hints `openinbrowser`; `openinbrowser` prints and invokes the system browser; after `stop` the HTTP endpoint releases immediately and `status` reports ENOENT with the `start` recovery entry. The published package was black-box tested the same way (start/status/stop/restart) after `npm install <tarball>` in an empty directory outside the repo (ccski is bundled into the output, no `link:` dependency; reproduce with `bun scripts/clean-install-check.sh.ts`, evidence in `docs/release/skill-steward.md`). Runtime requires Node `>=24.0.0` (kernel persistence uses `node:zlib`'s zstd; the `node:module` `stripTypeScriptTypes` that DSH code-runtime needs requires `>=22.13`, already covered by 24).
|
|
140
141
|
|
|
142
|
+
## Skill search
|
|
143
|
+
|
|
144
|
+
`skill-creator search <query...>` searches every local skill — all Global Workspace provider roots plus every Imported Workspace — in-process, without the daemon:
|
|
145
|
+
|
|
146
|
+
```bash
|
|
147
|
+
skill-creator search "React组件设计" # human-readable output
|
|
148
|
+
skill-creator search react component --json # machine-readable: { "results": [...] }
|
|
149
|
+
skill-creator search http3 --limit 20 # limit 1..50, default 10
|
|
150
|
+
```
|
|
151
|
+
|
|
152
|
+
Results are canonical: multiple installations of the same skill (symlinks included) collapse into one entry with an `installations` list, and byte-identical copies fold into `duplicates`. Ranking is field-weighted BM25+ (name ×10 … body ×1) plus a frozen rerank pass, with prefix and fuzzy (typo) matching; ordering is deterministic and replayable. The first run builds a persistent index under `~/.skill-creator/search-index.json`; later runs refresh it incrementally via stat checks (mtime/size/inode/ctime), so unchanged corpora are not re-read. Exit codes: `0` on a successful query (including zero results), `1` for an empty query, a bad flag, or an index I/O failure. Design, frozen tokenizer/ranking contracts, and benchmark methodology: [docs/search-design.md](docs/search-design.md).
|
|
153
|
+
|
|
141
154
|
## Skill Steward
|
|
142
155
|
|
|
143
156
|
The skill steward is a Manager-owned maintenance workflow: choose a task and scope → run → review evidence → human approval → apply → roll back if needed. The entry point is the **Workflow** tab in the Workspaces provider view.
|