@hraness/wordcell 0.20.0 → 0.21.1
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 +119 -632
- package/assets/agent-skill.svg +1 -0
- package/dist/agent-context.js +1 -0
- package/dist/agent-guide-audit.js +1 -0
- package/dist/attachments.js +1 -0
- package/dist/authoring.js +1 -0
- package/dist/authority-4sp9d552.js +663 -0
- package/dist/benchmark.js +1 -0
- package/dist/capture.js +1 -0
- package/dist/cli.js +3781 -32
- package/dist/clip/acquire.js +1 -0
- package/dist/clip/args.js +1 -0
- package/dist/clip/bounded-byte-buffer.js +1 -0
- package/dist/clip/browser-profiles.js +1 -0
- package/dist/clip/bundle-reader.js +1 -0
- package/dist/clip/cli.js +1 -0
- package/dist/clip/cookies.js +1 -0
- package/dist/clip/doctor.js +1 -0
- package/dist/clip/jobs.js +1 -0
- package/dist/clip/network-proxy.js +1 -0
- package/dist/clip/network.js +1 -0
- package/dist/clip/persist.js +1 -0
- package/dist/clip/refresh.js +1 -0
- package/dist/clip/terminal.js +1 -0
- package/dist/evaluation-builder.js +13 -5
- package/dist/evaluation-kb.js +11 -4
- package/dist/evaluation.js +1 -0
- package/dist/git.js +1 -0
- package/dist/graph-authority.js +29 -0
- package/dist/graph-percolation.js +16 -0
- package/dist/graph.js +1 -0
- package/dist/index-0k2x4nn9.js +393 -0
- package/dist/{index-n05s3wsb.js → index-115b07ap.js} +156 -541
- package/dist/index-11621h23.js +160 -0
- package/dist/{index-tkpxp48t.js → index-51bap0mq.js} +2 -2
- package/dist/{index-8a08v6x8.js → index-59ssmqqm.js} +1 -1
- package/dist/index-bcfn9xah.js +472 -0
- package/dist/index-bgfzwt4h.js +51 -0
- package/dist/{index-bs0yf4pp.js → index-pbr6rv47.js} +2 -2
- package/dist/{index-m7et4rz4.js → index-vdw5yjfa.js} +61 -9
- package/dist/index-z1w83f81.js +4 -0
- package/dist/index.js +61 -34
- package/dist/navigation.js +1 -0
- package/dist/pdf.js +1 -0
- package/dist/percolate.js +1 -0
- package/dist/portfolio.js +11 -4
- package/dist/query.js +1 -0
- package/dist/repository-memory.js +1 -0
- package/dist/sdk.js +10 -3
- package/dist/search-rules.js +1 -0
- package/dist/search.js +1 -0
- package/dist/semantic.js +3 -1
- package/dist/source-inbox.js +1 -0
- package/dist/untrusted-content.js +1 -0
- package/dist/url-intelligence.js +1 -0
- package/dist/workflow.js +1 -0
- package/dist/workflows/decision-context.js +11 -4
- package/dist/workflows/explain-change.js +1 -0
- package/dist/workflows/index.js +11 -4
- package/dist/workflows/plan-radar.js +1 -0
- package/package.json +30 -7
- package/skills/wordcell/SKILL.md +2 -2
- package/skills/wordcell/references/percolate.md +4 -0
- package/skills/wordcell/references/query.md +6 -0
- package/src/cli-program.ts +45 -2
- package/src/graph-authority-model.ts +116 -0
- package/src/graph-authority.ts +219 -0
- package/src/graph-cache-filesystem.ts +4 -0
- package/src/graph-cli.ts +96 -0
- package/src/graph-facts.ts +206 -0
- package/src/graph-percolation.ts +39 -0
- package/src/graph-query.ts +122 -0
- package/src/index.ts +2 -0
- package/src/oh/authority.ts +193 -0
- package/src/oh/programs.ts +99 -0
- package/src/oh/schema.ts +40 -0
- package/src/oh/snapshot.ts +114 -0
- package/src/oh/validation.ts +61 -0
- package/src/sdk.ts +51 -6
- package/dist/index-sy0zety7.js +0 -3630
- package/dist/kb-alias.js +0 -55
- package/src/kb-alias.ts +0 -14
package/README.md
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
<!-- hraness:wordcell-landing:start -->
|
|
2
2
|
# Wordcell
|
|
3
3
|
|
|
4
|
-
[](https://github.com/hraness/wordcell/tree/main/skills/wordcell)
|
|
5
5
|
|
|
6
6
|
A knowledge base for coding agents, built from Markdown, backlinks, semantic
|
|
7
7
|
search, and Git context.
|
|
@@ -9,15 +9,50 @@ It turns sources, plans, and decisions into inspectable context that agents can
|
|
|
9
9
|
recover across sessions without coupling application code to the knowledge
|
|
10
10
|
system.
|
|
11
11
|
|
|
12
|
+
[Documentation](https://wordcell.io/docs) · [npm package](https://www.npmjs.com/package/@hraness/wordcell) · [Graph guide](https://github.com/hraness/wordcell/blob/main/docs/graph-authority.md) · [Changelog](https://github.com/hraness/wordcell/blob/main/CHANGELOG.md)
|
|
13
|
+
|
|
12
14
|
## Install
|
|
13
15
|
|
|
14
|
-
Bun 1.3.14 or newer
|
|
16
|
+
[Bun 1.3.14 or newer](https://bun.sh/docs/installation) and Git are required.
|
|
17
|
+
The CLI and TypeScript SDK run with Bun. Choose one installation source:
|
|
15
18
|
|
|
16
19
|
```sh
|
|
17
|
-
|
|
20
|
+
# Canonical, versioned GitHub archive
|
|
21
|
+
bun add --global --ignore-scripts https://github.com/hraness/wordcell/releases/download/v0.21.1/hraness-wordcell-0.21.1.tgz
|
|
18
22
|
wordcell --help
|
|
19
23
|
```
|
|
20
24
|
|
|
25
|
+
The same release is mirrored to [npm](https://www.npmjs.com/package/@hraness/wordcell):
|
|
26
|
+
|
|
27
|
+
```sh
|
|
28
|
+
npm install --global --ignore-scripts @hraness/wordcell@0.21.1
|
|
29
|
+
wordcell --help
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
Bun must remain in `PATH` when npm installs the commands. Exact search and
|
|
33
|
+
Markdown graph commands need no account, service, or embedding model. Optional
|
|
34
|
+
semantic search, browser capture, and PDF tools have [additional prerequisites](https://github.com/hraness/wordcell/blob/main/docs/reference.md#review-lifecycle-scripts-before-enabling-optional-adapters).
|
|
35
|
+
|
|
36
|
+
### Use with a coding agent
|
|
37
|
+
|
|
38
|
+
Install the single public Agent Skill into your choice of compatible agent,
|
|
39
|
+
including Claude Code, Codex, Cursor, or GitHub Copilot:
|
|
40
|
+
|
|
41
|
+
```sh
|
|
42
|
+
bunx skills add hraness/wordcell#v0.21.1 --skill wordcell
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
Then ask:
|
|
46
|
+
|
|
47
|
+
```text
|
|
48
|
+
Use Wordcell to find the notes and plans about packages/parser in ./kb.
|
|
49
|
+
Open the sources behind the result and explain the recorded decision.
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
The skill installs instructions, not a running service. It uses an existing
|
|
53
|
+
`wordcell` command and prepares the pinned runtime only when needed. Installing
|
|
54
|
+
it does not create a vault or modify your notes. [Read the skill](https://github.com/hraness/wordcell/blob/main/skills/wordcell/SKILL.md).
|
|
55
|
+
|
|
21
56
|
## Keep one decision available to the next session
|
|
22
57
|
|
|
23
58
|
Suppose a parser must stop retrying after three attempts. Record that constraint
|
|
@@ -78,672 +113,124 @@ neither the vault nor a hosted knowledge service.
|
|
|
78
113
|
|
|
79
114
|
<!-- hraness:wordcell-landing:end -->
|
|
80
115
|
|
|
81
|
-
##
|
|
116
|
+
## What you can do
|
|
82
117
|
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
Search alone cannot preserve agent memory. The system also needs a write path into inspectable files under version control: evidence can be captured, current understanding can be revised, plans can accumulate outcomes, and mandatory edit rules can move onto the instruction path. Search indexes, graph views, and embeddings used for meaning-based similarity should remain derived and replaceable.
|
|
94
|
-
|
|
95
|
-
[hraness/wordcell](<https://wordcell.io>) implements that split as repository-adjacent Markdown and Git. Exact lookup, metadata filters, local search, explicit links, and Git provenance help an agent find and inspect the files without making application code depend on the knowledge system.
|
|
96
|
-
|
|
97
|
-
### The pattern converged across agent tools
|
|
118
|
+
| Task | Command | Evidence and effects |
|
|
119
|
+
| --- | --- | --- |
|
|
120
|
+
| Find a saved decision | `wordcell search "parser retries" --root kb --mode exact` | Reads current Markdown; no model or network request. |
|
|
121
|
+
| Recover context for code | `wordcell context packages/parser/src/index.ts --root kb --repo .` | Returns scoped notes, plans, and inherited `AGENTS.md` rules. |
|
|
122
|
+
| Inspect explicit connections | `wordcell backlinks notes/parser-contract --root kb` | Returns notes that link to the decision. |
|
|
123
|
+
| Search by meaning | `wordcell search "retry policy" --root kb --mode hybrid` | Adds optional local QMD keyword and vector retrieval; model setup is required. |
|
|
124
|
+
| Query with graph proofs | `wordcell graph query --program scope-route --scope packages/parser --root kb` | Returns bounded results tied to the source revision. Queries do not write a cache. |
|
|
125
|
+
| Capture a source | `wordcell clip https://example.com/article --output kb/articles` | Reads the selected URL and writes a Markdown bundle with a capture receipt. |
|
|
126
|
+
| Capture a PDF | `wordcell pdf /absolute/path/to/document.pdf --output kb/articles` | Preserves the original PDF and extracted evidence; Poppler is required. |
|
|
127
|
+
| Check the vault | `wordcell check --root kb` | Reports structural and attachment problems without editing files. |
|
|
98
128
|
|
|
99
|
-
|
|
129
|
+
Use `--json` for structured output and `wordcell --help` for the complete command
|
|
130
|
+
surface. [Full command reference](https://github.com/hraness/wordcell/blob/main/docs/reference.md#command-surface).
|
|
100
131
|
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
### Separate rules from explanations
|
|
104
|
-
|
|
105
|
-
A repository needs two kinds of memory. Rules that must govern an edit belong in a scoped `AGENTS.md` file on the path to the code. Rationale, history, examples, evidence, plans, and neighboring decisions belong in a knowledge base that an agent pulls only when the task needs them. This keeps mandatory instructions short without throwing away the context behind them.
|
|
106
|
-
|
|
107
|
-
A root guide carries repository-wide policy, and nested guides add constraints owned by a package or product. A nearby knowledge note can explain why a parser rejects a tempting shortcut, preserve the source behind the decision, and link the plan that introduced it. If the note and the applicable guide disagree, the guide controls the edit and the note needs repair.
|
|
108
|
-
|
|
109
|
-
The result has two concrete parts: scoped instruction files govern edits, while an ordinary Markdown vault stores supporting context. Application code imports neither the vault nor its search indexes:
|
|
110
|
-
|
|
111
|
-
**Repository rules beside durable knowledge**
|
|
132
|
+
## How the files fit together
|
|
112
133
|
|
|
113
134
|
```text
|
|
114
135
|
repository/
|
|
115
|
-
├── AGENTS.md
|
|
136
|
+
├── AGENTS.md # rules that govern edits
|
|
116
137
|
├── packages/parser/
|
|
117
|
-
│
|
|
118
|
-
│ └── src/
|
|
138
|
+
│ └── AGENTS.md # rules scoped to this code
|
|
119
139
|
└── kb/
|
|
120
|
-
├──
|
|
121
|
-
├──
|
|
122
|
-
├──
|
|
123
|
-
└──
|
|
140
|
+
├── index.md # authored or managed front door
|
|
141
|
+
├── articles/ # captured sources and assets
|
|
142
|
+
├── notes/ # maintained explanations
|
|
143
|
+
└── plans/ # decisions and outcomes
|
|
124
144
|
```
|
|
125
145
|
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
Captured sources preserve evidence, notes hold current explanations, and plans retain decisions and outcomes. YAML frontmatter adds queryable metadata without requiring one domain schema for every vault. A code-related record may declare a few exact repository-relative `repository_scopes` so an agent can recover it from the path it is about. The declaration stays in the record instead of a central project database, which lets parallel agents update unrelated memory without sharing a generated file.
|
|
131
|
-
|
|
132
|
-
The Markdown files are authoritative. The catalog, QMD database, backlink view, path-context view, graph traversal, and bounded Git index are derived and replaceable. A vault can keep a managed catalog or an authored front door and render the complete inventory on demand. Deleting one of those views removes a way to retrieve knowledge, not the knowledge itself.
|
|
133
|
-
|
|
134
|
-
### Route current memory from the code path
|
|
135
|
-
|
|
136
|
-
A broad semantic search over years of completed plans can rank a detailed historical record above the short explanation that owns the code today. `wordcell context packages/parser/src/index.ts --root kb --repo .` starts from a stronger signal: the path being changed. It returns the inherited guides that govern the edit, curated scope hubs, and bounded records whose declared scope is that path or one of its ancestors.
|
|
137
|
-
|
|
138
|
-
The records stay grouped by role. Maintained notes, proposed through blocked plans, dated market research, and generated reports form current memory. Completed, superseded, and cancelled plans remain available in a separate historical group. Every result states the declaration that matched and whether the target currently exists. A plan can therefore describe a future path, while a retired path remains honest historical evidence instead of being silently rewritten after a rename.
|
|
139
|
-
|
|
140
|
-
**Path context, exact scope filtering, and Git memory**
|
|
141
|
-
|
|
142
|
-
```shell
|
|
143
|
-
wordcell context packages/parser/src/index.ts --root kb --repo .
|
|
144
|
-
wordcell list --root kb --scope packages/parser --where type=plan --json
|
|
145
|
-
wordcell history search packages/parser/src/index.ts --root kb --repo . --json
|
|
146
|
-
```
|
|
147
|
-
|
|
148
|
-
### Preserve evidence and plans as working records
|
|
149
|
-
|
|
150
|
-
Durable reasoning needs inspectable evidence. `wordcell clip` can read a public URL,
|
|
151
|
-
saved HTML, rendered page, a page already open in an authenticated browser, or
|
|
152
|
-
an existing exact Archive.today snapshot after the direct routes fail. Archive
|
|
153
|
-
fallback is read-only and always partial. The
|
|
154
|
-
[capture documentation](docs/capture.md) defines the supported routes. A capture
|
|
155
|
-
writes readable Markdown beside localized assets and `capture.json`, whose
|
|
156
|
-
manifest records where the material came from, how it was extracted, what was
|
|
157
|
-
saved, and any warnings. “Complete” describes the selected page surface, not
|
|
158
|
-
every hidden branch or future version of the site.
|
|
159
|
-
|
|
160
|
-
**Capture a web source or local PDF**
|
|
161
|
-
|
|
162
|
-
```shell
|
|
163
|
-
wordcell clip "https://example.com/article" --output articles
|
|
164
|
-
wordcell pdf "/absolute/path/to/document.pdf" --output articles
|
|
165
|
-
```
|
|
166
|
-
|
|
167
|
-
The resulting bundle is evidence, not final interpretation. A maintained note can cite several captures, record disagreement, and change when later evidence warrants it. The sources stay available for audit. This prevents an agent from silently replacing what a page said with what it now believes the page meant.
|
|
168
|
-
|
|
169
|
-
The `wordcell` Agent Skill routes vault planning requests to a focused durable-plan workflow. It creates a normal Markdown file under `kb/plans/` with an outcome, status, area, repository scopes, assumptions, dependencies, decisions, and verification method. The file grows during execution as agents record deviations, review findings, and reproducible evidence. Closeout adds a compact result and durable-memory disposition: each reusable conclusion links to the maintained note, guide, code contract, or runbook that now owns it, or says that no promotion was needed. Completed plans remain in Git as the history of the work. When a finding becomes a rule whose omission would make a future edit wrong, move that rule into the applicable `AGENTS.md` and retain the plan as its rationale.
|
|
170
|
-
|
|
171
|
-
### Search and connect with bounded signals
|
|
172
|
-
|
|
173
|
-
An identifier, title, alias, path, tag, or quoted phrase should not depend on an embedding. Exact mode reads the live Markdown. The default hybrid mode combines those results with keyword and vector result orders from [QMD, a local search engine for Markdown](<https://github.com/tobi/qmd>), while keeping exact identity matches first. Graph context and Git provenance remain separate evidence, so neither silently changes the primary text rank.
|
|
174
|
-
|
|
175
|
-
**Path context, exact and hybrid search, and direct history**
|
|
176
|
-
|
|
177
|
-
```shell
|
|
178
|
-
wordcell context packages/parser/src/index.ts --root kb --repo .
|
|
179
|
-
wordcell search "parser-v2" --root kb --mode exact
|
|
180
|
-
wordcell search "why does the parser reject this input?" --root kb \
|
|
181
|
-
--tag architecture --where status=active --json
|
|
182
|
-
wordcell history "notes/parser-design" --root kb --repo . --json
|
|
183
|
-
```
|
|
184
|
-
|
|
185
|
-
`--mode keyword` uses QMD's local full-text index without loading an embedding model. Hybrid and semantic modes use a pinned local embedding model. Wordcell reconciles every QMD hit with current Markdown before returning it, and applies metadata and tag filters to those live notes. Search modes remain explicit through `--mode exact`, `--mode keyword`, `--mode semantic`, and `--mode hybrid`.
|
|
186
|
-
|
|
187
|
-
Retrieval is bounded. The high-level `wordcell search` and `KnowledgeBaseSession.search` surfaces return at most 100 primary results and request at most 500 candidates from each QMD retrieval lane. Selective filters can discard stale or ineligible rows from that window. When those discards prevent Wordcell from filling the requested eligible result set, Wordcell marks the QMD lane degraded and the overall result partial instead of presenting the bounded approximation as complete. Scores are local ranking signals, not probabilities, and cannot be compared across modes.
|
|
188
|
-
|
|
189
|
-
Each note owns its outbound typed relationships in frontmatter. Wordcell derives backlinks, inverse edges, and bounded traversal at read time, so parallel agents do not contend on one generated fact file. `wordcell percolate <note>` reports recurring concepts and missing-link candidates with inspectable support but writes nothing. An agent reads the cited notes before creating a reusable concept or relationship. Semantic similarity never creates an edge automatically.
|
|
190
|
-
|
|
191
|
-
Percolation Result V2 presents a missing relationship as an unordered pair of
|
|
192
|
-
notes with a required predicate. It does not choose the source, direction, or a
|
|
193
|
-
`related-to` fallback. Recommended authored predicates include `synthesizes`,
|
|
194
|
-
`evidenced-by`, `informed-by`, `supersedes`, and `contradicts`; they are an
|
|
195
|
-
advisory vocabulary, so a vault can use another canonical predicate when its
|
|
196
|
-
prose and evidence define the claim. Wordcell never infers reciprocal, inverse,
|
|
197
|
-
transitive, or similarity-derived relationships.
|
|
198
|
-
|
|
199
|
-
Git provenance is opt-in. A search without `--history` performs no Git indexing. `--history` requests best-effort provenance, while `--require-history` rejects unavailable history or incomplete provenance for the selected notes. If one commit exceeds the 2,000-path detail limit, Wordcell retains its identity and vault-local note associations, marks its co-change detail incomplete, and continues through later commits. Best-effort search reports that requested lane as partial.
|
|
200
|
-
|
|
201
|
-
Local attachment checks cover Markdown and Obsidian references to images, PDFs, and editable tldraw sources. They reject missing or escaping files while leaving external URLs alone. A source-inbox view separately lists recent captures that have no inbound disposition from maintained knowledge. It is an advisory, not an automatic backlink requirement: a saved source may intentionally remain a leaf.
|
|
202
|
-
|
|
203
|
-
### Measure retrieval on a frozen corpus
|
|
204
|
-
|
|
205
|
-
The August 2, 2026 pilot froze one repository snapshot and 18 questions whose graded relevance judgments were written before the rankings were inspected. The evaluator scanned 156 Markdown records and projected 155 searchable notes into QMD after excluding the authored vault index and agent guides. Nine questions formed the development set, and nine were held out for the test. The test covered exact identity, conceptual recall, active plans, current decisions, code-path context, source evidence, historical rationale, stale-versus-current conflicts, and one no-answer case.
|
|
206
|
-
|
|
207
|
-
At a cutoff of 10 results, exact search recorded `Recall@10` of 0.833333, `MRR@10` of 0.892857, and `nDCG@10` of 0.790377. Hybrid search recorded 0.833333, 0.937500, and 0.833884, respectively. Recall measures how much of the judged relevant set appeared; mean reciprocal rank rewards an earlier first relevant result; normalized discounted cumulative gain also accounts for graded relevance and position.
|
|
208
|
-
|
|
209
|
-
Eight test questions had an answer. A 10,000-resample paired bootstrap, which repeatedly samples those same questions to estimate the stability of the difference, measured hybrid minus exact. The `Recall@10` difference was 0 with a 95% confidence interval of \[0, 0\]; the `MRR@10` difference was +0.044643 with \[0, 0.133929\]; and the `nDCG@10` difference was +0.043508 with \[-0.012752, 0.111832\]. Both retrievers returned a result for the one no-answer question instead of abstaining, so their no-answer accuracy was 0.
|
|
146
|
+
Markdown, YAML frontmatter, explicit wikilinks, and Git hold the record. Open
|
|
147
|
+
the same files in Obsidian, a text editor, or ordinary file-search tools.
|
|
148
|
+
Application code does not need to import Wordcell or its vault.
|
|
210
149
|
|
|
211
|
-
|
|
150
|
+
QMD supplies optional local search. Oh supplies a disposable graph projection;
|
|
151
|
+
only an explicit `wordcell graph rebuild --root kb` writes `.wordcell/oh.sqlite`.
|
|
152
|
+
Backlinks and typed relationships come from authored links. Percolation
|
|
153
|
+
suggests connections for review and does not add inferred edges to notes.
|
|
212
154
|
|
|
213
|
-
|
|
155
|
+
Graph proofs explain a supported derivation from a specific source revision.
|
|
156
|
+
They do not prove that a note is true or that a missing relationship cannot
|
|
157
|
+
exist. [Graph queries and proof limits](https://github.com/hraness/wordcell/blob/main/docs/graph-authority.md).
|
|
214
158
|
|
|
215
|
-
|
|
159
|
+
## Build with the TypeScript SDK
|
|
216
160
|
|
|
217
|
-
|
|
218
|
-
runtime. It inspects the proposed location without mutation, interviews the
|
|
219
|
-
user about the memory questions the Wordcell should answer, and presents exact read
|
|
220
|
-
and write targets. Only the approved targets may be scaffolded. A changed path,
|
|
221
|
-
repository, account, integration, or companion skill requires renewed
|
|
222
|
-
approval.
|
|
223
|
-
|
|
224
|
-
The standard router may be enough. A recurring ritual can instead receive a
|
|
225
|
-
companion skill with explicit inputs, authority, durable outputs, idempotence,
|
|
226
|
-
failure behavior, and verification. These skills are inert instructions. They
|
|
227
|
-
do not create a plugin runtime, execute vault metadata, inherit ambient account
|
|
228
|
-
access, or couple application code to the Wordcell. An exact repeat is a no-op;
|
|
229
|
-
divergence, path escape, symbolic links, partial writes, and unapproved
|
|
230
|
-
external surfaces stop the workflow.
|
|
231
|
-
|
|
232
|
-
The repository's fake-capability suite exercises those transitions. It is a
|
|
233
|
-
tested contract example, not proof that every agent or host integration
|
|
234
|
-
complies.
|
|
235
|
-
|
|
236
|
-
This workflow builds on Frank Chen's public notes about [designing a personal
|
|
237
|
-
knowledge base with an
|
|
238
|
-
agent](https://gist.github.com/fxchen/773397095d7a6bffda621e4237da0da9)
|
|
239
|
-
and [extending it with
|
|
240
|
-
skills](https://gist.github.com/fxchen/09cb410b22c9c5256d80243ee925b57e).
|
|
241
|
-
|
|
242
|
-
Wordcell ships no `kb_role` metadata, lifecycle resolver or API, lifecycle CLI,
|
|
243
|
-
compatibility diagnostic, or metadata migration. A frozen Phase 0 value gate
|
|
244
|
-
must show that those surfaces improve deterministic agent decisions before they
|
|
245
|
-
are introduced. Current and historical plan routing remains derived from
|
|
246
|
-
existing type, path, and status conventions.
|
|
247
|
-
|
|
248
|
-
### Adopt the smallest useful split
|
|
249
|
-
|
|
250
|
-
Start with a short inherited `AGENTS.md` path for rules whose omission would make an edit wrong. A small knowledge base may need only Markdown, Git, an index page, and ordinary file search. Add source capture when evidence keeps disappearing. Add repository scopes when agents need to recover current memory from code paths. Add metadata or hybrid search when file search stops answering the repository's questions. Add links and graph views only when the relationships themselves help people make decisions.
|
|
251
|
-
|
|
252
|
-
Treat the knowledge base as repository-adjacent durable memory. Authored Markdown and Git are the record; catalogs, indexes, embeddings, and graph views are replaceable ways to find and inspect it. Checks can validate structure, captures can preserve a selected surface, and similarity can suggest candidates. None of those mechanisms proves that a source is trustworthy or an explanation is still true. People and agents must revise the knowledge as the repository changes.
|
|
253
|
-
|
|
254
|
-
## Installation reference
|
|
255
|
-
|
|
256
|
-
[Bun](https://bun.sh/docs/installation) is the required runtime. GitHub Releases are the canonical distribution, and each release publishes the same archive to npm as `@hraness/wordcell`. The examples target the prepared `0.20.0` release and become available when its GitHub release is published. Existing `@hraness/kb` installs remain available during that transition. For signed artifact verification, see [the release procedure](docs/publishing.md#verify-a-published-release).
|
|
257
|
-
|
|
258
|
-
### Tell your coding agent to install it
|
|
259
|
-
|
|
260
|
-
Copy this prompt into Codex, Claude Code, or another coding agent:
|
|
261
|
-
|
|
262
|
-
```text
|
|
263
|
-
Install the `wordcell` Agent Skill from `hraness/wordcell#v0.20.0` with the standard skills
|
|
264
|
-
CLI. Use the skill's runtime instructions to install the exact
|
|
265
|
-
versioned GitHub release archive only when the command is missing. Verify it
|
|
266
|
-
with `wordcell doctor` and `wordcell --help`, but do not initialize or modify a vault until
|
|
267
|
-
I ask.
|
|
268
|
-
```
|
|
269
|
-
|
|
270
|
-
Install the single public skill with either runner:
|
|
271
|
-
|
|
272
|
-
```sh
|
|
273
|
-
npx skills add hraness/wordcell#v0.20.0
|
|
274
|
-
bunx skills add hraness/wordcell#v0.20.0
|
|
275
|
-
```
|
|
276
|
-
|
|
277
|
-
Both commands discover the same `wordcell` skill and install it into the selected
|
|
278
|
-
agent runner. Skill installation is inert: it does not initialize a vault,
|
|
279
|
-
refresh a catalog, or edit Markdown. When invoked, the skill uses an existing
|
|
280
|
-
`wordcell` command or, when the command is missing, checks for Bun and installs the
|
|
281
|
-
CLI from the immutable GitHub release archive.
|
|
282
|
-
|
|
283
|
-
The public skills CLI reads `skills/wordcell/` from the repository. The immutable
|
|
284
|
-
`0.20.0` packed release includes the same tree under
|
|
285
|
-
`node_modules/@hraness/wordcell/skills/wordcell/`, and the package check verifies that the
|
|
286
|
-
installed skill is byte-identical to the repository source.
|
|
287
|
-
|
|
288
|
-
Install the two global commands with Bun:
|
|
289
|
-
|
|
290
|
-
```sh
|
|
291
|
-
bun add --global --ignore-scripts https://github.com/hraness/wordcell/releases/download/v0.20.0/hraness-wordcell-0.20.0.tgz
|
|
292
|
-
wordcell --help
|
|
293
|
-
wordcell-evaluation-builder --help
|
|
294
|
-
```
|
|
295
|
-
|
|
296
|
-
The same GitHub archive can be installed with npm:
|
|
297
|
-
|
|
298
|
-
```sh
|
|
299
|
-
npm install --global --ignore-scripts https://github.com/hraness/wordcell/releases/download/v0.20.0/hraness-wordcell-0.20.0.tgz
|
|
300
|
-
wordcell --help
|
|
301
|
-
```
|
|
302
|
-
|
|
303
|
-
Both commands are Bun executables. Bun `1.3.14` or newer must remain in `PATH`
|
|
304
|
-
even when npm performs the global installation. The conservative npm command
|
|
305
|
-
above disables dependency lifecycle scripts. Optional native search and
|
|
306
|
-
rendered-browser setup remain unavailable until the relevant scripts are
|
|
307
|
-
reviewed and enabled; run `wordcell doctor` to inspect the resulting capabilities.
|
|
308
|
-
|
|
309
|
-
For programmatic use, add the versioned GitHub archive to a Bun project:
|
|
310
|
-
|
|
311
|
-
```sh
|
|
312
|
-
bun add --exact --ignore-scripts https://github.com/hraness/wordcell/releases/download/v0.20.0/hraness-wordcell-0.20.0.tgz
|
|
313
|
-
```
|
|
314
|
-
|
|
315
|
-
The resulting dependency should remain exact:
|
|
316
|
-
|
|
317
|
-
```json
|
|
318
|
-
{
|
|
319
|
-
"dependencies": {
|
|
320
|
-
"@hraness/wordcell": "https://github.com/hraness/wordcell/releases/download/v0.20.0/hraness-wordcell-0.20.0.tgz"
|
|
321
|
-
}
|
|
322
|
-
}
|
|
323
|
-
```
|
|
324
|
-
|
|
325
|
-
Version 0.20.0 retains two public GitHub dependencies: `@hraness/oh` at
|
|
326
|
-
immutable release `v0.2.0` for closure verification and `@tobilu/qmd` at commit
|
|
327
|
-
`aa993dceb3ef8cfb71d470554ca437570f5a2b3c` for store-local model behavior.
|
|
328
|
-
Installation also needs Git and public GitHub access while it resolves those
|
|
329
|
-
dependencies. Browser-cookie capture uses the exact upstream registry release
|
|
330
|
-
`@steipete/sweet-cookie` `0.4.3`, which includes the host-scope, isolation, and
|
|
331
|
-
explicit Chromium Keychain fixes previously carried by the Hraness fork.
|
|
332
|
-
|
|
333
|
-
### Review lifecycle scripts before enabling optional adapters
|
|
334
|
-
|
|
335
|
-
[Bun blocks dependency lifecycle scripts](https://bun.sh/docs/pm/lifecycle)
|
|
336
|
-
unless the consumer trusts them. Run
|
|
337
|
-
`bun pm untrusted` in the consuming project and inspect the exact resolved
|
|
338
|
-
versions and scripts before allowing any of them. Do not use `bun pm trust
|
|
339
|
-
--all` for this package's dependency graph.
|
|
340
|
-
|
|
341
|
-
The pinned QMD Git dependency has a `prepare` script that installs development
|
|
342
|
-
hooks only when its own `.git` directory exists; the packaged runtime does not
|
|
343
|
-
need that script. Optional rendered capture uses `agent-browser`, whose
|
|
344
|
-
postinstall downloads a platform-specific executable. QMD's native semantic
|
|
345
|
-
and language-parser paths can report lifecycle scripts for `node-llama-cpp`,
|
|
346
|
-
`tree-sitter-go`, `tree-sitter-javascript`, `tree-sitter-python`, and
|
|
347
|
-
`tree-sitter-rust`. Trust only the packages required by the capability you have
|
|
348
|
-
chosen, then reinstall and run `wordcell doctor` to verify that capability. npm runs
|
|
349
|
-
dependency lifecycle scripts by default, so inspect the same packages before
|
|
350
|
-
omitting `--ignore-scripts` from an npm installation.
|
|
351
|
-
|
|
352
|
-
Wordcell can read explicitly selected signed-in browser state and perform
|
|
353
|
-
bounded capture and network operations. Read the [security
|
|
354
|
-
policy](SECURITY.md) before using authenticated capture.
|
|
355
|
-
|
|
356
|
-
Contributors can install from a checkout instead:
|
|
161
|
+
Add the same immutable release to a Bun project:
|
|
357
162
|
|
|
358
163
|
```sh
|
|
359
|
-
|
|
360
|
-
cd wordcell
|
|
361
|
-
bun install --frozen-lockfile
|
|
362
|
-
bun link
|
|
363
|
-
wordcell --help
|
|
164
|
+
bun add --exact --ignore-scripts https://github.com/hraness/wordcell/releases/download/v0.21.1/hraness-wordcell-0.21.1.tgz
|
|
364
165
|
```
|
|
365
166
|
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
[QMD](https://github.com/tobi/qmd) 2.5.3 for local keyword and vector search.
|
|
371
|
-
`--mode keyword` uses its full-text index without an embedding model. Hybrid
|
|
372
|
-
and semantic search use a revision-pinned compact local EmbeddingGemma model;
|
|
373
|
-
the first index or vector query downloads about 300 MB. On macOS with Bun,
|
|
374
|
-
install extension-capable Homebrew SQLite with `brew install sqlite` before
|
|
375
|
-
using vector retrieval.
|
|
376
|
-
|
|
377
|
-
`wordcell doctor` statically checks the pinned QMD, SQLite, sqlite-vec,
|
|
378
|
-
node-llama-cpp, and matching native packages without importing native code or
|
|
379
|
-
downloading the model. Exact and keyword search remain model-free. Wordcell also
|
|
380
|
-
refuses an older adjacent `.snapshot` directory that lacks its ownership
|
|
381
|
-
marker; inspect and remove only the explicitly named disposable directory,
|
|
382
|
-
then retry so Wordcell never guesses that unrelated files are cache data.
|
|
383
|
-
|
|
384
|
-
## The kb vault format
|
|
385
|
-
|
|
386
|
-
Wordcell is the product; `kb` is the vault format. The conventional vault
|
|
387
|
-
directory is `kb/`, managed regions use the `<!-- kb:catalog:start -->` and
|
|
388
|
-
`<!-- kb:context … -->` markers, the front-door frontmatter key is
|
|
389
|
-
`kb_catalog`, portfolio identities use `kb://<owner>/<vault>/<document_id>`
|
|
390
|
-
URIs, and the shell conventions in the skill and docs are `KB_ROOT` and
|
|
391
|
-
`KB_REPO`. These names identify files that many repositories already commit,
|
|
392
|
-
so they did not change with the product name. Every `wordcell` command reads
|
|
393
|
-
and writes the same vaults that `kb` did.
|
|
394
|
-
|
|
395
|
-
## Start a vault
|
|
167
|
+
The SDK provides read-only vault sessions, metadata queries, search, graph
|
|
168
|
+
proofs, Git context, and composable workflows. A session owns one snapshot;
|
|
169
|
+
reopen it after Markdown changes. [SDK and workflow examples](https://github.com/hraness/wordcell/blob/main/docs/reference.md#graph-reference)
|
|
170
|
+
show the public imports and lifecycle.
|
|
396
171
|
|
|
397
|
-
|
|
398
|
-
wordcell init my-kb
|
|
399
|
-
cd my-kb
|
|
400
|
-
wordcell clip https://example.com/article --output articles
|
|
401
|
-
wordcell refresh --root .
|
|
402
|
-
wordcell check --root .
|
|
403
|
-
```
|
|
172
|
+
## Privacy and boundaries
|
|
404
173
|
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
|
|
174
|
+
- Structural queries and exact search read local files. Optional semantic
|
|
175
|
+
search downloads its model on first use and runs locally.
|
|
176
|
+
- URL capture contacts the requested source. Signed-in capture uses only
|
|
177
|
+
explicitly selected browser state. Review the [security policy](https://github.com/hraness/wordcell/blob/main/SECURITY.md)
|
|
178
|
+
before using it with private sources.
|
|
179
|
+
- An agent that reads the vault follows its own provider and data-handling
|
|
180
|
+
settings. Keep private records out of public repositories and outputs.
|
|
181
|
+
- Git history is opt-in. Saved notes preserve recorded context; Wordcell does
|
|
182
|
+
not reconstruct unsaved conversations or silently record every agent action.
|
|
409
183
|
|
|
410
|
-
|
|
411
|
-
mapped context for a repository path from the repository root:
|
|
184
|
+
## Documentation
|
|
412
185
|
|
|
413
|
-
|
|
414
|
-
wordcell agents identity packages/parser --json
|
|
415
|
-
wordcell context packages/parser/src/index.ts --root kb --repo .
|
|
416
|
-
wordcell agents check --root kb --repo .
|
|
417
|
-
```
|
|
418
|
-
|
|
419
|
-
`wordcell agents identity` derives a canonical mapping without writing files.
|
|
420
|
-
`wordcell context` lists inherited `AGENTS.md` files from the repository root toward
|
|
421
|
-
the target, verified context hubs from the nearest scope back toward the root,
|
|
422
|
-
and bounded repository-scoped memory. Maintained knowledge, active plans,
|
|
423
|
-
dated research, reports, and terminal plans stay in separate groups. Every
|
|
424
|
-
record states the exact authored scope that matched and whether it exists.
|
|
425
|
-
Open only the useful summaries, then use `wordcell links`, `wordcell backlinks`, `wordcell list`,
|
|
426
|
-
or `wordcell search` to expand the question deliberately.
|
|
427
|
-
|
|
428
|
-
## Command surface
|
|
429
|
-
|
|
430
|
-
| Command | Purpose |
|
|
186
|
+
| Read next | Purpose |
|
|
431
187
|
| --- | --- |
|
|
432
|
-
|
|
|
433
|
-
|
|
|
434
|
-
|
|
|
435
|
-
|
|
|
436
|
-
|
|
|
437
|
-
|
|
|
438
|
-
|
|
|
439
|
-
| `wordcell catalog --root <directory>` | Render an exhaustive disposable catalog without modifying an authored or managed front door. |
|
|
440
|
-
| `wordcell graph --root <directory>` | Print the resolved contextual and typed graph, broken or ambiguous targets, orphans, and advisory mention candidates. |
|
|
441
|
-
| `wordcell backlinks <note> --root <directory>` | Show incoming contextual links and typed relationships for a note resolved by path, title, or alias. |
|
|
442
|
-
| `wordcell links <note> --root <directory>` | Traverse incoming, outgoing, or bidirectional contextual links and typed relationships with explicit depth and node limits. |
|
|
443
|
-
| `wordcell note create <id> --title <title> --root <directory>` | Atomically create one confined Markdown note; use `--type concept` for a reusable concept. |
|
|
444
|
-
| `wordcell relation add\|remove <source> <predicate> <target>` | Idempotently edit one source note's typed outbound relationship using an exact local note ID or canonical stable `kb://` URI. |
|
|
445
|
-
| `wordcell relation list <note> --root <directory>` | List a note's authored outbound and derived inbound typed relationships. |
|
|
446
|
-
| `wordcell percolate [note] --root <directory>` | Report evidence-backed recurring-concept and missing-relationship candidates without writing notes. |
|
|
447
|
-
| `wordcell list --root <directory>` | Filter typed nested frontmatter, tags, and repeated exact `--scope` declarations; sort by metadata, title, path, or graph counts. `wordcell notes` is an alias. |
|
|
448
|
-
| `wordcell index --root <directory>` | Build or incrementally refresh the optional local QMD embedding index. |
|
|
449
|
-
| `wordcell search <query> --root <directory>` | Combine live exact matches with local QMD keyword and vector retrieval. Use `--mode exact\|keyword\|semantic\|hybrid`, metadata, tags, exact `--scope` filters, or bounded graph context. `--rules <file>` enables reviewed aliases; add `--priority` for explicit rule-based ordering. Omitted history performs no Git work; `--history` requests best-effort provenance and `--require-history` rejects unavailable or incomplete selected-note provenance. |
|
|
450
|
-
| `wordcell portfolio search <query> --registry <file> --workspace <directory>` | Search only explicitly authorized vaults. Use `--shared` for public and organization entries or repeat `--vault owner/id` for a deliberate selection. The same `--rules <file>` and opt-in `--priority` apply within each selected vault before deterministic federation. |
|
|
451
|
-
| `wordcell portfolio audit --registry <file> --workspace <directory>` | Audit selected vault identities, authority groups, graph references, attachments, exact duplicate content, catalogs, and Git availability without repairing or electing an authority. |
|
|
452
|
-
| `wordcell history <note> --root <vault> --repo <repository>` | Return bounded direct provenance for one resolved note, including explicit oversized-commit limitations. |
|
|
453
|
-
| `wordcell history search <query-or-path> --root <vault> --repo <repository>` | Search bounded commit subjects, note paths, and co-change paths without authoring links or repository scopes. |
|
|
454
|
-
| `wordcell context <repository-path> --root <vault> --repo <repository>` | List inherited guides root to nearest, reciprocal hubs nearest to root, and grouped repository-scoped current and historical memory. Use `--kind auto\|file\|directory` to control path interpretation. |
|
|
455
|
-
| `wordcell inbox --root <vault>` | List recent captures without a maintained-note disposition. This is advisory and never creates links or fails merely because a source is a leaf. |
|
|
456
|
-
| `wordcell evaluate <manifest.json> --root <vault> --repo <repository>` | Verify an exact frozen Git/vault snapshot and run built-in exact, QMD, metadata, graph, path-context, and Git retrievers with raw evidence, latency, resource counters, metrics, and paired intervals. |
|
|
457
|
-
| `wordcell-evaluation-builder --anchor-seal\|--build --config <file> --artifact-root <directory>` | Anchor or build a frozen evaluation corpus through the installed package boundary. |
|
|
458
|
-
| `wordcell url-metadata tool build\|check` | Build or validate the pinned Rust metadata-search helper through the installed package boundary. |
|
|
459
|
-
| `wordcell url-metadata backfill --root <vault>` | Add resumable `url-metadata.json` sidecars for saved external URLs through the pinned metadata search helper and optional read-only Archive.today discovery. |
|
|
460
|
-
| `wordcell agents identity <repository-scope>` | Derive the normalized scope, canonical hub ID and path, owning guide path, and exact reciprocal marker without writing files. |
|
|
461
|
-
| `wordcell agents check --root <vault> --repo <repository>` | Validate context identities, exact scopes, reciprocal markers, real guide paths, collisions, confinement, and guide shape. Unmapped guides remain valid. |
|
|
462
|
-
| `wordcell agents audit --root <vault> --repo <repository>` | Run the same correctness gate, then report deterministic per-guide, section, inherited-chain, long-bullet, and exact-duplicate advisories. |
|
|
463
|
-
| `wordcell doctor` | Report capture capabilities and statically inspect local QMD, SQLite, sqlite-vec, node-llama-cpp, and native search prerequisites without loading a model. |
|
|
464
|
-
| `wordcell adapters` | Print the installed platform capability matrix. |
|
|
465
|
-
|
|
466
|
-
Vault commands default to the current directory and `index.md`; use `--root` and `--index` to select alternatives. Commands that report structured data accept `--json`. Run `wordcell --help` for the complete top-level surface and `wordcell clip --help` for capture, authentication, evidence, and resource-bound options.
|
|
467
|
-
|
|
468
|
-
## Capture reference
|
|
469
|
-
|
|
470
|
-
Use the current browser tab without navigating it:
|
|
188
|
+
| [Agent workflow](https://github.com/hraness/wordcell/blob/main/docs/agent-workflow.md) | Set up, query, maintain, and revise repository memory. |
|
|
189
|
+
| [Installation and command reference](https://github.com/hraness/wordcell/blob/main/docs/reference.md) | Exact interfaces, SDK imports, optional adapters, and troubleshooting prerequisites. |
|
|
190
|
+
| [Web capture](https://github.com/hraness/wordcell/blob/main/docs/capture.md) and [PDF capture](https://github.com/hraness/wordcell/blob/main/docs/pdf.md) | Save sources with provenance, assets, and explicit completeness limits. |
|
|
191
|
+
| [Graph guide](https://github.com/hraness/wordcell/blob/main/docs/graph-authority.md) | Named queries, proofs, revisions, resource limits, and cache recovery. |
|
|
192
|
+
| [Portfolio federation](https://github.com/hraness/wordcell/blob/main/docs/portfolio.md) | Search only selected, authorized vaults. |
|
|
193
|
+
| [Design](https://github.com/hraness/wordcell/blob/main/docs/design.md) and [memory rationale](https://github.com/hraness/wordcell/blob/main/docs/agent-memory.md) | File contracts, design choices, and evaluation context. |
|
|
194
|
+
| [Release verification](https://github.com/hraness/wordcell/blob/main/docs/publishing.md#verify-a-published-release) | Verify archive identity, signatures, and provenance. |
|
|
471
195
|
|
|
472
|
-
|
|
473
|
-
wordcell clip current --browser-live --output articles
|
|
474
|
-
wordcell clip current --cdp 9222 --output articles
|
|
475
|
-
```
|
|
196
|
+
### Installation reference
|
|
476
197
|
|
|
477
|
-
|
|
198
|
+
[Alternative installs and optional capabilities](https://github.com/hraness/wordcell/blob/main/docs/reference.md#installation-reference).
|
|
478
199
|
|
|
479
|
-
|
|
200
|
+
### The kb vault format
|
|
480
201
|
|
|
481
|
-
|
|
482
|
-
|
|
483
|
-
```
|
|
484
|
-
|
|
485
|
-
Each web capture writes readable Markdown, `capture.json`, localized assets, and optional evidence under `articles/<slug>/`. Unless media is disabled, YouTube captures add the title, description, duration, channel, thumbnail, and a locally extracted transcript when available; other video surfaces retain a poster or thumbnail instead of downloading the video by default. See [Capture web content](docs/capture.md) for scopes, saved files, browser modes, media, evidence, completeness states, and limits.
|
|
486
|
-
|
|
487
|
-
Schema v4 manifests bind the exact saved Markdown path, byte count, and SHA-256
|
|
488
|
-
digest. `wordcell capture verify articles/<slug>` checks that digest without executing
|
|
489
|
-
the content. Add `--verify-assets` to check recorded assets. Source HTML remains
|
|
490
|
-
omitted unless `wordcell capture show` receives `--include-source-html`.
|
|
491
|
-
|
|
492
|
-
PDF capture uses the same bundle boundary:
|
|
493
|
-
|
|
494
|
-
```sh
|
|
495
|
-
wordcell pdf "/absolute/path/to/document.pdf" --output articles
|
|
496
|
-
wordcell pdf "https://example.com/document.pdf" --output articles
|
|
497
|
-
```
|
|
202
|
+
Existing `kb/`, `index.md`, `kb://` identifiers, and Markdown formats remain
|
|
203
|
+
compatible. [Vault format reference](https://github.com/hraness/wordcell/blob/main/docs/reference.md#the-kb-vault-format).
|
|
498
204
|
|
|
499
|
-
|
|
205
|
+
### Command surface
|
|
500
206
|
|
|
501
|
-
|
|
207
|
+
[Complete CLI reference](https://github.com/hraness/wordcell/blob/main/docs/reference.md#command-surface).
|
|
502
208
|
|
|
503
|
-
|
|
504
|
-
`[[notes/context-engineering|context engineering]]` and source-owned typed
|
|
505
|
-
frontmatter relationships are the graph's authored facts:
|
|
209
|
+
### Capture reference
|
|
506
210
|
|
|
507
|
-
|
|
508
|
-
type: concept
|
|
509
|
-
document_id: durable-agent-memory
|
|
510
|
-
relations:
|
|
511
|
-
supports:
|
|
512
|
-
- notes/durable-agent-memory
|
|
513
|
-
```
|
|
211
|
+
[Capture commands and dependencies](https://github.com/hraness/wordcell/blob/main/docs/reference.md#capture-reference).
|
|
514
212
|
|
|
515
|
-
|
|
516
|
-
`.md`; cross-vault targets use canonical stable `kb://` URIs. `wordcell graph`, `wordcell backlinks`, `wordcell relation list`, and `wordcell links` derive
|
|
517
|
-
inverse edges and bounded paths without injecting reciprocal or inferred facts into notes.
|
|
518
|
-
`wordcell percolate` proposes reusable concepts and missing connections with explicit
|
|
519
|
-
support; an agent reviews the cited prose before authoring anything. In its V2
|
|
520
|
-
result, a missing relationship is an unordered endpoint pair with a required
|
|
521
|
-
predicate, never an executable directed assertion or an automatic
|
|
522
|
-
`related-to`. Common reviewed claims use `synthesizes`, `evidenced-by`,
|
|
523
|
-
`informed-by`, `supersedes`, or `contradicts`; other canonical custom predicates
|
|
524
|
-
remain valid when their meaning is supported.
|
|
525
|
-
|
|
526
|
-
Within a portfolio, a note can target a stable cross-vault identity such as
|
|
527
|
-
`kb://hraness/sleepyland/sound-wellness-expansion`. The target vault must be
|
|
528
|
-
explicitly selected for `wordcell portfolio audit` to resolve it. Missing or invalid
|
|
529
|
-
`document_id` values remain legacy path identities and never gain a stable URI
|
|
530
|
-
by inference.
|
|
531
|
-
|
|
532
|
-
These focused views are rebuilt from current Markdown. Wordcell never commits a graph
|
|
533
|
-
database, generated fact file, or engine entity ID. Parallel agents therefore
|
|
534
|
-
keep editing separate notes. Each lane can run `wordcell check --no-catalog`, and the
|
|
535
|
-
integrator runs one final `wordcell refresh` for the only shared generated region in
|
|
536
|
-
`index.md`. Use `wordcell graph --json` for a whole-vault structural question; when a
|
|
537
|
-
question recurs, prefer adding a focused command with a bounded output contract
|
|
538
|
-
over introducing a parallel query store.
|
|
539
|
-
|
|
540
|
-
Frontmatter retains nested objects, arrays, finite numbers with safe integer precision, booleans, strings, and nulls. `wordcell list --where type=plan --tag ingestion --sort metadata.updated --order desc` answers exact questions from that authored data. Unquoted `true`, `false`, `null`, and numeric filter values are typed; keep the quotes inside the argument to match a string with the same spelling, for example `wordcell list --where 'external_id="9007199254740993"'`. Hybrid search fuses exact and QMD result orders, then joins each match back to live metadata. Graph neighbors and Git provenance are returned as separate evidence. Similarity never becomes a link automatically.
|
|
541
|
-
|
|
542
|
-
Repository context preserves a stricter authority boundary. `AGENTS.md` remains
|
|
543
|
-
the always-loaded, normative home for ownership, required commands,
|
|
544
|
-
prohibitions, and edit gates. An optional `type: agent-context` note under
|
|
545
|
-
`scopes/` holds rationale, history, examples, evidence, and links for one exact
|
|
546
|
-
repository-relative directory. Its reciprocal
|
|
547
|
-
`<!-- kb:context scopes/<id> -->` marker appears before the guide headings.
|
|
548
|
-
A hub cannot override its guide or become the only home of a load-bearing
|
|
549
|
-
editing rule. Moving the scoped directory changes its identity.
|
|
550
|
-
|
|
551
|
-
Scope hubs are ordinary Markdown in the graph and optional QMD index;
|
|
552
|
-
`AGENTS.md` files remain excluded. This workflow reads repository and vault
|
|
553
|
-
files at development time. Applications do not need to import Wordcell or couple
|
|
554
|
-
their runtime to the vault.
|
|
555
|
-
|
|
556
|
-
The package exports its full programmatic surface from `@hraness/wordcell`. Open one
|
|
557
|
-
read-only vault session through `@hraness/wordcell/sdk` to share a live Markdown scan
|
|
558
|
-
across exact search, metadata queries, reads, navigation, hybrid search, and Git
|
|
559
|
-
provenance. Compose finite parallel retrieval graphs with
|
|
560
|
-
`@hraness/wordcell/workflow`. `@hraness/wordcell/workflows` includes editable
|
|
561
|
-
`decision-context`, `explain-change`, and `plan-radar` compositions. Focused
|
|
562
|
-
lower-level entry points include
|
|
563
|
-
`@hraness/wordcell/search`, `@hraness/wordcell/git`,
|
|
564
|
-
`@hraness/wordcell/agent-context`,
|
|
565
|
-
`@hraness/wordcell/agent-guide-audit`, `@hraness/wordcell/attachments`,
|
|
566
|
-
`@hraness/wordcell/authoring`, `@hraness/wordcell/evaluation`,
|
|
567
|
-
`@hraness/wordcell/evaluation-kb`, and `@hraness/wordcell/evaluation-builder`. The builder
|
|
568
|
-
entry point owns frozen-corpus authoring, evidence compilation, implementation
|
|
569
|
-
commitments, seal validation, and the bounded v2 evaluation mechanics. A
|
|
570
|
-
consumer keeps its corpus, build configuration, repository-specific retriever
|
|
571
|
-
descriptors, and promotion expectations in its own repository. The installed
|
|
572
|
-
`wordcell-evaluation-builder` binary exposes the same build lifecycle without a
|
|
573
|
-
source checkout.
|
|
574
|
-
Other focused entries include
|
|
575
|
-
`@hraness/wordcell/graph`, `@hraness/wordcell/navigation`, `@hraness/wordcell/percolate`,
|
|
576
|
-
`@hraness/wordcell/portfolio`, `@hraness/wordcell/query`, `@hraness/wordcell/repository-memory`,
|
|
577
|
-
`@hraness/wordcell/search-rules`, `@hraness/wordcell/untrusted-content`,
|
|
578
|
-
`@hraness/wordcell/source-inbox`, and `@hraness/wordcell/semantic`; web-capture orchestration and
|
|
579
|
-
diagnostics from
|
|
580
|
-
`@hraness/wordcell/capture`; metadata search, Archive.today discovery, sidecar parsing,
|
|
581
|
-
and backfill composition from `@hraness/wordcell/url-intelligence`; PDF ingestion from `@hraness/wordcell/pdf`; and reusable
|
|
582
|
-
disposable-profile helpers from `@hraness/wordcell/browser-profiles`. Embedders that
|
|
583
|
-
need the CLI's lower-level ingestion machinery can use the explicit
|
|
584
|
-
capture-primitive subpaths listed in `package.json`, including
|
|
585
|
-
`@hraness/wordcell/clip/acquire`, `@hraness/wordcell/clip/args`, the DNS-pinned request and
|
|
586
|
-
connection-pool boundary at `@hraness/wordcell/clip/network`, and the browser proxy at
|
|
587
|
-
`@hraness/wordcell/clip/network-proxy`. Stored-bundle inspection, capture refresh
|
|
588
|
-
diffs, and the explicit local job ledger are available from
|
|
589
|
-
`@hraness/wordcell/clip/bundle-reader`, `@hraness/wordcell/clip/refresh`, and
|
|
590
|
-
`@hraness/wordcell/clip/jobs`.
|
|
591
|
-
|
|
592
|
-
## Agent skills
|
|
593
|
-
|
|
594
|
-
The repository ships one reusable `wordcell` Agent Skill under `skills/wordcell/`. Its
|
|
595
|
-
intent router loads focused references only when a task needs them: querying
|
|
596
|
-
repository context and agent memory, capturing URLs or PDFs, writing durable
|
|
597
|
-
plans, promoting concepts and typed relationships, refreshing and checking a
|
|
598
|
-
vault, or designing a setup through an interview and approved proposal. An
|
|
599
|
-
approved setup may scaffold a bounded companion skill for a distinct recurring
|
|
600
|
-
ritual. The package smoke test keeps future tagged packages byte-identical to
|
|
601
|
-
that source tree.
|
|
213
|
+
### Graph reference
|
|
602
214
|
|
|
603
|
-
|
|
604
|
-
npx skills add hraness/wordcell#v0.20.0
|
|
605
|
-
# or
|
|
606
|
-
bunx skills add hraness/wordcell#v0.20.0
|
|
607
|
-
```
|
|
215
|
+
[Graph and SDK interfaces](https://github.com/hraness/wordcell/blob/main/docs/reference.md#graph-reference).
|
|
608
216
|
|
|
609
|
-
|
|
610
|
-
checkout. It routes setup and evolution before runtime preparation. For
|
|
611
|
-
execution workflows, runtime setup installs the pinned CLI only when the
|
|
612
|
-
command is missing, and it never initializes or mutates a vault as an
|
|
613
|
-
installation side effect. The repository's phase-orchestration skill remains
|
|
614
|
-
available to local repository agents but is marked internal, so public skill
|
|
615
|
-
discovery omits it.
|
|
217
|
+
### Agent skills
|
|
616
218
|
|
|
617
|
-
|
|
219
|
+
[Installation and runtime contract](https://github.com/hraness/wordcell/blob/main/docs/reference.md#agent-skills).
|
|
220
|
+
The same skill is included at `node_modules/@hraness/wordcell/skills/wordcell/`.
|
|
618
221
|
|
|
619
222
|
## Release notes
|
|
620
223
|
|
|
621
|
-
|
|
224
|
+
Version 0.21 adds Oh graph queries and proofs. The deprecated `kb` command was
|
|
225
|
+
removed at this boundary; use `wordcell`. Existing vaults need no migration.
|
|
226
|
+
[All release notes and upgrade instructions](https://github.com/hraness/wordcell/blob/main/CHANGELOG.md).
|
|
622
227
|
|
|
623
|
-
|
|
624
|
-
`@hraness/wordcell`, the commands are `wordcell` and
|
|
625
|
-
`wordcell-evaluation-builder`, the Agent Skill is `wordcell`, and the homepage
|
|
626
|
-
moved from hraness.com to [wordcell.io](https://wordcell.io). The `kb` command
|
|
627
|
-
stays as a deprecated alias that prints one notice; it is removed in 0.21.0.
|
|
628
|
-
The vault format keeps its `kb` names, so existing vaults need no migration.
|
|
629
|
-
The package is published as ordinary software with no npm content-policy
|
|
630
|
-
declaration, and each tag Release now publishes the same archive bytes to npm
|
|
631
|
-
automatically through OIDC trusted publishing. Versions through 0.19.6 remain
|
|
632
|
-
available under `@hraness/kb`.
|
|
228
|
+
## Contributing
|
|
633
229
|
|
|
634
|
-
|
|
635
|
-
|
|
636
|
-
|
|
637
|
-
|
|
638
|
-
|
|
639
|
-
|
|
640
|
-
|
|
641
|
-
synthetic provider regressions remain in place.
|
|
642
|
-
|
|
643
|
-
### Upgrade to v0.19.5
|
|
644
|
-
|
|
645
|
-
This candidate corrects draft asset URL admission before the first canonical
|
|
646
|
-
GitHub package release. GitHub may expose a temporary same-repository URL until
|
|
647
|
-
the draft is published; published assets still require their exact versioned
|
|
648
|
-
URLs and verified bytes. The failed `v0.19.4` draft is retained as release
|
|
649
|
-
evidence and is not an installable release.
|
|
650
|
-
|
|
651
|
-
GitHub Releases become the canonical installation source. Each release binds its packed archive to the reviewed source and signed GitHub build identity. npm remains an optional mirror and older installations keep working. The SDK and CLI interfaces do not change.
|
|
652
|
-
|
|
653
|
-
### Upgrade to v0.19.3
|
|
654
|
-
|
|
655
|
-
Version 0.19.3 gives workflow execution and single-note publication complete
|
|
656
|
-
Effect owners behind their existing Promise APIs. Native callbacks and writes
|
|
657
|
-
remain owned until they settle. In particular, a failed directory sync now
|
|
658
|
-
joins its admitted sibling before recovery releases the note lock. Workflow
|
|
659
|
-
ordering, concurrency bounds, exact public errors, revision checks and
|
|
660
|
-
no-clobber recovery remain compatible. Effect 3.22.1 is an exact runtime
|
|
661
|
-
dependency; consumers do not need to create an Effect runtime or change calls.
|
|
662
|
-
|
|
663
|
-
### Upgrade to v0.19.2
|
|
664
|
-
|
|
665
|
-
Version 0.19.2 recognizes npm 11.19's `signedAccessSignatureUrl` attestation
|
|
666
|
-
wrapper field only when it is the currently evidenced empty string. Exact-key,
|
|
667
|
-
signature, package, workflow, source, and provenance verification remain
|
|
668
|
-
mandatory. Package runtime behavior is unchanged.
|
|
669
|
-
|
|
670
|
-
### Upgrade to v0.19.1
|
|
671
|
-
|
|
672
|
-
Version 0.19.1 updates the pinned Hraness Sweet Cookie fork to v0.4.4. Cookie
|
|
673
|
-
ingestion now rejects records marked `partitionKeyOpaque: true` even when
|
|
674
|
-
`partitionKey` is missing or null. If every selected inline cookie has
|
|
675
|
-
unsupported isolation provenance, Sweet Cookie returns no cookies instead of
|
|
676
|
-
falling back to browser stores. Explicit `partitionKeyOpaque: false` remains
|
|
677
|
-
replayable, while malformed marker values fail closed.
|
|
678
|
-
|
|
679
|
-
### Upgrade to v0.19.0
|
|
680
|
-
|
|
681
|
-
Version 0.19.0 adds interview-first setup and evolution guidance, a bounded
|
|
682
|
-
filesystem-only companion-skill scaffold contract, and Percolation Result V2.
|
|
683
|
-
V2 requires an explicit predicate and leaves relationship ownership and
|
|
684
|
-
direction to review. The release does not add lifecycle metadata, a resolver,
|
|
685
|
-
a lifecycle CLI, inferred edges, or automatic account and network actions.
|
|
686
|
-
|
|
687
|
-
### Upgrade to v0.18.1
|
|
688
|
-
|
|
689
|
-
Version 0.18.1 restructures the public README and hosted projection around one
|
|
690
|
-
durable note, the exact recovery workflow, inspectable retrieval signals, and
|
|
691
|
-
explicit authority boundaries. Runtime APIs and package behavior are
|
|
692
|
-
unchanged.
|
|
693
|
-
|
|
694
|
-
### Upgrade to v0.18.0
|
|
695
|
-
|
|
696
|
-
Version 0.18.0 adds a review-only adoption seam for exact dependency closures
|
|
697
|
-
from an Oh working authority. Trusted host code creates a
|
|
698
|
-
`createOhAdoptionPreparerV1` facade with the expected binding and head,
|
|
699
|
-
destination, rights clearance, review route, and conflict policy. The narrow
|
|
700
|
-
`prepare` call accepts only a capsule plus transformation and redaction
|
|
701
|
-
disclosures, returns deeply immutable deterministic Markdown and manifest
|
|
702
|
-
bytes with status `prepared`, and has no vault, Git, Oh-store, or promotion
|
|
703
|
-
capability. Wordcell pins `@hraness/oh` v0.2.0 and delegates closure integrity to its
|
|
704
|
-
official store verifier.
|
|
705
|
-
|
|
706
|
-
### Upgrade to v0.17.3
|
|
707
|
-
|
|
708
|
-
Version 0.17.3 restructures the README around an inspectable first task,
|
|
709
|
-
explicit operating boundaries, and a shorter path from installation to useful
|
|
710
|
-
output. Runtime APIs and package behavior are unchanged.
|
|
711
|
-
|
|
712
|
-
### Upgrade to v0.17.2
|
|
713
|
-
|
|
714
|
-
Version 0.17.2 improves package discovery through focused npm keywords, a more
|
|
715
|
-
specific README opening, and direct links between npm, GitHub, and the project
|
|
716
|
-
overview. Runtime APIs and package behavior are unchanged.
|
|
717
|
-
|
|
718
|
-
### Upgrade to v0.17.1
|
|
719
|
-
|
|
720
|
-
Version 0.17.1 adds the public `@hraness/kb` npm installation path without
|
|
721
|
-
changing the runtime API introduced in 0.17.0. Bun `1.3.14` or newer is now an
|
|
722
|
-
explicit package requirement. Consumers should review the package's declared
|
|
723
|
-
dual-use capture boundary and the lifecycle scripts used by optional browser
|
|
724
|
-
and native search adapters before enabling those scripts.
|
|
725
|
-
|
|
726
|
-
### Upgrade to v0.17.0
|
|
727
|
-
|
|
728
|
-
Version 0.17 adds selected portfolio federation, stable note identities,
|
|
729
|
-
qualified external relations, search rules, capture inspection, and untrusted
|
|
730
|
-
context packing. Consumers with typed fixtures or custom capture writers should
|
|
731
|
-
make these migrations before upgrading:
|
|
732
|
-
|
|
733
|
-
- Capture writers now emit manifest schema v4 and must provide the stored
|
|
734
|
-
document `path`, exact UTF-8 `bytes`, and lowercase SHA-256 digest. The reader
|
|
735
|
-
can inspect schema v1-v3, but verification reports their document integrity as
|
|
736
|
-
unavailable instead of success.
|
|
737
|
-
- `DecisionContextOutput.search` has been removed. Consume the bounded untrusted
|
|
738
|
-
`context` projection and its `truncated` flag instead of transporting the raw
|
|
739
|
-
search result into an agent prompt.
|
|
740
|
-
- `VaultAnalysis` fixtures must include `externalAuthoredRelations`, even when
|
|
741
|
-
the value is an empty array. This keeps qualified authored edges distinct
|
|
742
|
-
from locally resolved graph edges.
|
|
743
|
-
- `createNote` and `wordcell note create` now assign `document_id` to new ordinary
|
|
744
|
-
notes. Preserve that ID across renames and update snapshots that intentionally
|
|
745
|
-
assert the generated frontmatter.
|
|
746
|
-
|
|
747
|
-
Existing Markdown is not rewritten automatically. Add IDs to maintained legacy
|
|
748
|
-
notes only through reviewed edits, and keep every QMD, graph, portfolio, and
|
|
749
|
-
audit projection disposable.
|
|
230
|
+
Run `bun run check` for source, architecture, package installation, types, and
|
|
231
|
+
native-helper validation. The site has its own `bun run check` under `site/`.
|
|
232
|
+
See [Contributing](https://github.com/hraness/wordcell/blob/main/CONTRIBUTING.md), [Security](https://github.com/hraness/wordcell/blob/main/SECURITY.md), and the [MIT License](https://github.com/hraness/wordcell/blob/main/LICENSE).
|
|
233
|
+
|
|
234
|
+
[Install Wordcell from GitHub Releases](https://github.com/hraness/wordcell/releases) ·
|
|
235
|
+
[Wordcell source on GitHub](https://github.com/hraness/wordcell) ·
|
|
236
|
+
[Wordcell overview](https://wordcell.io)
|