@inkeep/open-knowledge 0.20.0-beta.4 → 0.20.0-beta.5
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/dist/assets/skills/discovery/SKILL.md +1 -1
- package/dist/assets/skills/packs/codebase-wiki/SKILL.md +1 -1
- package/dist/assets/skills/packs/entity-vault/SKILL.md +6 -1
- package/dist/assets/skills/project/SKILL.md +2 -2
- package/dist/assets/skills/project/references/linking.md +6 -4
- package/dist/cli.mjs +54 -54
- package/dist/constants-BNWjkYkt.mjs +2 -0
- package/dist/{dist-lMD2xM96.mjs → dist-Bu-40Yw6.mjs} +1 -1
- package/dist/{dist-DG18qmsf.mjs → dist-DGqIneYF.mjs} +25 -21
- package/dist/{gh-detect-DsccWGZs.mjs → gh-detect-BDIdc7oG.mjs} +2 -2
- package/dist/index.mjs +1 -1
- package/dist/{init-BEl-oLte.mjs → init-Cnw33VcQ.mjs} +6 -6
- package/dist/init-RsyPvO4D.mjs +1 -0
- package/dist/{loader-CAzv0pqx.mjs → loader-CPwMyAN2.mjs} +3 -3
- package/dist/loader-DCi-JymK.mjs +1 -0
- package/dist/preview-DIuW3aLK.mjs +1 -0
- package/dist/{preview-BQFuOGx7.mjs → preview-Ds7G8sTs.mjs} +2 -2
- package/dist/public/assets/{ActivityModeContent-BwvIOsCl.js → ActivityModeContent-Bw1oRtQH.js} +1 -1
- package/dist/public/assets/{DocumentContext-BA3nlskN.js → DocumentContext-o-LUu0wz.js} +1 -1
- package/dist/public/assets/{GraphPanel-EZGWljSP.js → GraphPanel-BVt0SfrM.js} +1 -1
- package/dist/public/assets/{ManagedArtifactProperties-CZG_MU4S.js → ManagedArtifactProperties-D-xwymUR.js} +1 -1
- package/dist/public/assets/{PropertyPanel-uw27ydPe.js → PropertyPanel-CeeQNbcR.js} +1 -1
- package/dist/public/assets/{SettingsDialogBody-DsXaaN0Q.js → SettingsDialogBody-wC0Rm8N5.js} +1 -1
- package/dist/public/assets/{SkillEditorActions-CnqozQbp.js → SkillEditorActions-Y_e1zC_b.js} +1 -1
- package/dist/public/assets/{SourceEditor-UA7qm9BP.js → SourceEditor-4ljQqBHw.js} +1 -1
- package/dist/public/assets/{TerminalPanel-DRbEwLNU.js → TerminalPanel-C9rmhBG2.js} +1 -1
- package/dist/public/assets/{config-validation-events-Bk36aHUQ.js → config-validation-events-mtT7Nmop.js} +1 -1
- package/dist/public/assets/{dist-C0uDGnS5.js → dist-Dst_hB5H.js} +102 -102
- package/dist/public/assets/{documents-events-BTsmrZJT.js → documents-events-DMS5a4By.js} +1 -1
- package/dist/public/assets/{index-B8O97Pkv.js → index-BZo7KSQC.js} +5 -5
- package/dist/public/assets/{keyboard-shortcuts-BzwnpNd_.js → keyboard-shortcuts-DGu1nhPQ.js} +1 -1
- package/dist/public/assets/{open-managed-artifact-tab-VuHt1k6e.js → open-managed-artifact-tab-Bvt3X7yV.js} +1 -1
- package/dist/public/assets/{prop-types-D6SQBoDq.js → prop-types-Cf7ylXsu.js} +1 -1
- package/dist/public/assets/{selection-context-CJxohv6V.js → selection-context-CFA_dZau.js} +1 -1
- package/dist/public/assets/{skill-actions-SUqrJBew.js → skill-actions-CQ-n4sOB.js} +1 -1
- package/dist/public/assets/{skills-api-F2HCxVlt.js → skills-api-q4V5pwth.js} +1 -1
- package/dist/public/assets/{target-navigation-intent-BrunJmhI.js → target-navigation-intent-CCRb_XMp.js} +1 -1
- package/dist/public/assets/{typing-burst-detector-Dk2TZ23x.js → typing-burst-detector-BfS-xBMY.js} +1 -1
- package/dist/public/index.html +14 -14
- package/dist/{repair-launch-json-BTrUFJZp.mjs → repair-launch-json-Dr2EyutP.mjs} +2 -2
- package/dist/{repair-mcp-configs-_6UImgDH.mjs → repair-mcp-configs-DymTbiVd.mjs} +2 -2
- package/dist/repair-skills-Bt7rPCR7.mjs +1 -0
- package/dist/{repair-skills-B54Iho-y.mjs → repair-skills-Ca4oLn7N.mjs} +2 -2
- package/dist/server-lock-8Lv6A-Xa-iDqi_bbE.mjs +1 -0
- package/dist/{server-lock-CN2YHwpP-CemdeDui.mjs → server-lock-CN2YHwpP-COM23IWb.mjs} +42 -42
- package/dist/{src-AOM5DOYm.mjs → src-NUPBs272.mjs} +2 -2
- package/dist/{start-CPnfm53U.mjs → start-NU9SD5Do.mjs} +2 -2
- package/dist/start-hQih5q9o.mjs +1 -0
- package/dist/{write-project-skill-CD-qC1w3.mjs → write-project-skill-SrDqICxT.mjs} +3 -3
- package/package.json +1 -1
- package/dist/constants-CccigS7Z.mjs +0 -2
- package/dist/init-C7uBoTEn.mjs +0 -1
- package/dist/loader-Br4O9l2c.mjs +0 -1
- package/dist/preview-DgLc6gDO.mjs +0 -1
- package/dist/repair-skills-CypPUSjG.mjs +0 -1
- package/dist/server-lock-8Lv6A-Xa-C_9VS9L6.mjs +0 -1
- package/dist/start-C0Mpznab.mjs +0 -1
|
@@ -3,7 +3,7 @@ name: open-knowledge-discovery
|
|
|
3
3
|
description: "Read when the user asks what OpenKnowledge is, wants to install it on a repository, wants to share an OpenKnowledge project with collaborators, or asks how `ok init` / `ok cowork` / OK Desktop set up a project. Do NOT load to perform OpenKnowledge reads/writes — the runtime guidance for editing markdown inside an initialized OK project ships as a separate project-local skill at `.claude/skills/open-knowledge/` whenever `ok init` runs. If the user appears to be editing markdown inside a `.ok/` project and this is the only OK skill loaded, advise them to re-run `ok init` to install the project-local skill."
|
|
4
4
|
compatibility: "Any agent host — no MCP server required. Pure discovery + install guidance."
|
|
5
5
|
metadata:
|
|
6
|
-
version: "0.20.0-beta.
|
|
6
|
+
version: "0.20.0-beta.5"
|
|
7
7
|
author: "Inkeep"
|
|
8
8
|
repository: "https://github.com/inkeep/open-knowledge"
|
|
9
9
|
---
|
|
@@ -46,7 +46,7 @@ The `workflow({ kind: "wiki" })` guide is the authoritative source for exactly h
|
|
|
46
46
|
## Source-reference convention
|
|
47
47
|
|
|
48
48
|
- **Intra-wiki navigation** → OK doc links — they build the backlink / hub / orphan graph, so link liberally; density is how the wiki stays navigable.
|
|
49
|
-
- **Code references** → relative links + symbol code-spans (`internal`) or GitHub blob URLs (`public`). Source-file links
|
|
49
|
+
- **Code references** → relative links + symbol code-spans (`internal`) or GitHub blob URLs (`public`). Source-file links stay out of the navigation graph (`links` tracks only `.md`/`.mdx` edges, so they never show as graph dead-links or orphans) — but a wrong-depth path still surfaces in the write/edit `brokenLinks` response (`no-such-file`, or `unresolvable` if it overshoots the content root), so count the `../` hops from the page's folder. Never invent paths — reference only files you actually read.
|
|
50
50
|
|
|
51
51
|
The full rules — the GitHub-URL / relative fallback, the `#Lxx` caveat, and the exact code-span shape — live in the `workflow({ kind: "wiki" })` guide.
|
|
52
52
|
|
|
@@ -32,7 +32,12 @@ When a new fact arrives, route it: update **compiled truth** if it changes curre
|
|
|
32
32
|
|
|
33
33
|
## Links
|
|
34
34
|
|
|
35
|
-
|
|
35
|
+
Per the platform skill, prefer **standard markdown links** for new dossiers, and count the relative depth carefully for the cross-folder links this vault is full of — e.g. `[Alice Chen](../people/alice-chen.md)` from a `meetings/` note, `[Acme AI](../companies/acme-ai.md)` from a `people/` dossier. The write/edit `brokenLinks` response catches a wrong-depth path before you walk away. New brain pages render on GitHub, satisfy OK's `brokenLinks` check, and import cleanly into GBrain.
|
|
36
|
+
|
|
37
|
+
Two deltas from the platform default, both GBrain-specific:
|
|
38
|
+
|
|
39
|
+
- **Don't use the leading-slash root-absolute form** (`[Alice](/people/alice-chen.md)`). OK resolves it fine, but GBrain reads a leading `/` as an absolute filesystem path and rejects it — use a relative path. (GBrain also accepts a bare `[Alice](people/alice-chen.md)`, but from a subfolder OK resolves that *source-dir-relative* — `meetings/people/alice-chen` — and reports it broken, so stick to the `../`-correct relative form, which both accept.)
|
|
40
|
+
- **Path-qualified wikilinks are first-class here**, not legacy: `[[people/alice-chen|Alice Chen]]` resolves vault-root from any folder (no `../` to count), is validated by `brokenLinks` like any link, and imports into GBrain. Keep them **extensionless** (`[[people/alice-chen]]`, never `[[people/alice-chen.md]]` — the `.md` makes it resolve to a nonexistent doc). A *bare* `[[note-name]]` with no folder is ambiguous (resolves only if GBrain's basename-globbing is on) — reserve it for Obsidian migration.
|
|
36
41
|
|
|
37
42
|
## Agent behaviors
|
|
38
43
|
|
|
@@ -3,7 +3,7 @@ name: open-knowledge
|
|
|
3
3
|
description: "Authoritative agent-runtime contract for working inside an OpenKnowledge project — a markdown-CRDT knowledge base exposed over MCP. Use whenever reading, listing, searching, or editing any `.md` or `.mdx` file in the project, and before any `mcp__open-knowledge__*` tool call (`exec`, `search`, `write`, `edit`, and the rest). Installed by `ok init`, so its presence means this is an OpenKnowledge project and it governs every markdown file here. Covers the read/write tool surface, grounding and linking rules, folder/template conventions, the live browser preview, and the rule that OK's MCP tools — never native file tools — handle in-scope markdown."
|
|
4
4
|
compatibility: "Claude Code, Claude Desktop, Claude Cowork, Claude.ai web. Requires OpenKnowledge MCP server + code execution."
|
|
5
5
|
metadata:
|
|
6
|
-
version: "0.20.0-beta.
|
|
6
|
+
version: "0.20.0-beta.5"
|
|
7
7
|
author: "Inkeep"
|
|
8
8
|
repository: "https://github.com/inkeep/open-knowledge"
|
|
9
9
|
---
|
|
@@ -82,7 +82,7 @@ Knowledge-base docs are factual artifacts. Every claim must be traceable, and **
|
|
|
82
82
|
|
|
83
83
|
## Linking — standard markdown links (MUST)
|
|
84
84
|
|
|
85
|
-
Link every noun-phrase that names another document — `[text](./relative/path.md)` — and link liberally. **Every link must resolve to a doc that exists** (
|
|
85
|
+
Link every noun-phrase that names another document — `[text](./relative/path.md)` — and link liberally. **Every link must resolve to a doc that exists by the time you're done** (a same-pass forward-reference you create later in the pass is fine; for one that genuinely won't exist, leave the mention as plain prose + a tracked task). Never backtick a link (`` `[text](./foo.md)` `` is a bug) and never use HTML `<a>`. **Read `brokenLinks` on every `write`/`edit` response: `[]` means all links resolve; a populated list names each broken `href` + `reason` (`no-such-doc` / `no-such-file` / `unresolvable`) — fix them in a follow-up `edit`.** `links({ kind: "dead" })` is the authoritative end-state audit (the editor's red-underline is slug-tolerant and lies, so trust the tool). External web sources are NOT inline body links (see Grounding). Full rule set + the `[[Page]]` legacy note: `references/linking.md`.
|
|
86
86
|
|
|
87
87
|
## Folders, frontmatter, templates
|
|
88
88
|
|
|
@@ -1,14 +1,16 @@
|
|
|
1
1
|
# Linking — mechanics
|
|
2
2
|
|
|
3
|
-
(Core carries the MUST: link noun-phrases with standard markdown links, every link resolves,
|
|
3
|
+
(Core carries the MUST: link noun-phrases with standard markdown links, every link resolves, read `brokenLinks` on each write/edit. This file carries the full rule set.)
|
|
4
4
|
|
|
5
|
-
- **Every noun-phrase that names another document should be linked** using standard markdown link syntax: `[text](./
|
|
5
|
+
- **Every noun-phrase that names another document should be linked** using standard markdown link syntax. Two forms are valid: **relative** (`[text](./sibling.md)`, `[text](../folder/doc.md)`) — the recommended default, native in GitHub / Obsidian / VS Code and what published sites expect — and **root-absolute** (`[text](/folder/doc.md)`, leading slash = content root), handy for a cross-folder link.
|
|
6
|
+
- **Never glue `./` onto a content-root path.** `./wiki/modules/tasks`, written from a doc already inside `wiki/`, resolves to the doubled garbage `wiki/wiki/modules/tasks` — correct resolution of a malformed path, i.e. a silently broken link. Pick ONE form: a relative path from your doc (`./tasks.md`, `../modules/tasks.md`), or a `/`-rooted absolute path (`/wiki/modules/tasks.md`). The `./` prefix and a content-root path never combine.
|
|
6
7
|
- **External web sources are NOT inline body links.** Per the Grounding rule, web URLs live in the `source_url:` frontmatter of an ingested doc under `external-sources/` (or the project's equivalent raw-sources folder); the body cites the local path: `[source name](./external-sources/source-slug.md)`. A raw `[source](https://...)` inline in the body is a TODO, not a citation — see Grounding for the closed-loop contract.
|
|
7
8
|
- **Internal cross-refs between OK docs** → `[text](./other-doc.md)` — link liberally to aid navigation.
|
|
8
|
-
- **Every link must resolve to a doc that exists
|
|
9
|
+
- **Every link must resolve to a doc that exists by the time you're done.** Within a single multi-doc authoring pass, linking a page you'll create later in the same pass is fine — `brokenLinks` reports it as `no-such-doc` until the target lands, an expected transient forward-reference rather than a wrong-path error. What's not acceptable is *leaving* a dead link behind: create the target in the same pass, or record it as a tracked task (`TaskCreate`, or your host's task tool — if the host has none, tell the user) and leave the mention as plain prose.
|
|
9
10
|
- **Never wrap a link in backticks.** `` `[text](./foo.md)` `` is a bug — the backticks make it render as literal code rather than a link.
|
|
10
11
|
- **Never use HTML anchors** (`<a href="...">`). Markdown link syntax only.
|
|
11
|
-
-
|
|
12
|
+
- **`brokenLinks` on the write/edit response is your primary check — read it before walking away.** Every `write`/`edit` returns `brokenLinks` in the SAME payload: `[]` means every outbound link resolves; a populated list names each broken `href` with its `resolvedTo` + `reason` (`no-such-doc` = resolved to a doc that doesn't exist; `no-such-file` = resolved to a linked asset / source file that isn't on disk at that path; `unresolvable` = the path escapes the content root, usually one `../` too many). This validates **every** local link, not just doc links: a wrong-depth `[src](../../foo.py)` to a source file is caught too. It is report-only — the write landed regardless; fix or remove every one in a follow-up `edit`.
|
|
13
|
+
- **`links({ kind: "dead" })` is the authoritative end-state audit.** For a corpus-wide sweep across many docs: `links({ kind: "dead", sourceDocuments: ["your/doc"] })`. Companion `links` kinds: `backlinks` (incoming), `forward` (outgoing), `orphans` (no incoming), `hubs` (high-incoming), `suggest` (untextualized mentions worth linking).
|
|
12
14
|
- **The editor's red-underline visual lies.** Its dead-link detection tolerates slug-fallback (e.g., `foo` may appear resolved because `foo.md` exists at root). `links({ kind: "dead" })` is strict-exact — trust the tool, not the visual.
|
|
13
15
|
|
|
14
16
|
**Note on wiki-link syntax (`[[Page]]`):** the parser still handles it for legacy content, but it's NO LONGER the recommended default. Write new content with standard markdown links per above. Seed-pack templates (`ok seed --pack <name>`) may still emit `[[Page]]` placeholders inside template body text — those are legacy. When you instantiate a seed-pack template, replace the legacy placeholders with standard markdown links during the `{shape}`-fill pass.
|