@inkeep/open-knowledge 0.42.0-beta.8 → 0.42.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/dist/{acp-harness-probe-BLfn73i6.mjs → acp-harness-probe-C3Si3Oe6.mjs} +2 -2
- package/dist/assets/skills/discovery/SKILL.md +1 -1
- package/dist/assets/skills/project/SKILL.md +2 -2
- package/dist/assets/skills/project/references/components-and-visuals.md +0 -4
- package/dist/assets/skills/write-skill/SKILL.md +2 -2
- package/dist/assets/skills/write-skill/references/pressure-testing.md +1 -1
- package/dist/cli.mjs +50 -50
- package/dist/constants-W4BDL0X1.mjs +2 -0
- package/dist/{git-handle-CnUwtybc.mjs → git-handle-JgY8Ytwb.mjs} +2 -2
- package/dist/git-handle-maG17s4k.mjs +1 -0
- package/dist/index.mjs +1 -1
- package/dist/{init-WcxdIpWm.mjs → init-BRlzdKw6.mjs} +4 -4
- package/dist/init-CVeJ6jGy.mjs +1 -0
- package/dist/{launch-json-removal-DcIuSt6G.mjs → launch-json-removal-D3bQuZax.mjs} +2 -2
- package/dist/{loader-DKjlOOL4.mjs → loader-BiH3mrIJ.mjs} +2 -2
- package/dist/loader-DXTwcp6f.mjs +1 -0
- package/dist/md-manager-BHEZ9tjn.mjs +2 -0
- package/dist/{open-browser-Dx055WwC.mjs → open-browser-BqBGMi_2.mjs} +2 -2
- package/dist/parse-worker.mjs +1 -1
- package/dist/{preview-Cb6ctP_a.mjs → preview-DB8FUJNR.mjs} +2 -2
- package/dist/preview-zru6Ga5A.mjs +1 -0
- package/dist/public/assets/{ActivityModeContent-BarAfjGw.js → ActivityModeContent-Cga3MNl5.js} +1 -1
- package/dist/public/assets/{AgentDiffPane-Bgwp1tZy.js → AgentDiffPane-D51hdGMm.js} +1 -1
- package/dist/public/assets/{AgentThreadClientBinder-D_mhB_uV.js → AgentThreadClientBinder-D_oI6JYB.js} +1 -1
- package/dist/public/assets/{CodeMirrorPropInput-L6IjOKBK.js → CodeMirrorPropInput-C5y2rXYX.js} +1 -1
- package/dist/public/assets/{DocumentContext-CpOTF1vT.js → DocumentContext-9aHVrow4.js} +2 -2
- package/dist/public/assets/{EditorModeToggle-DeKVTMB4.js → EditorModeToggle-v_8_QyqL.js} +1 -1
- package/dist/public/assets/{EnableSyncConfirmDialog-BCmpMth-.js → EnableSyncConfirmDialog-DGzRLORN.js} +1 -1
- package/dist/public/assets/FeedbackForm-C2LaBRN9.js +1 -0
- package/dist/public/assets/{GraphPanel-1CKwHElx.js → GraphPanel-Bp-rgKAp.js} +1 -1
- package/dist/public/assets/{LintConfigEditor-DXChjQ1V.js → LintConfigEditor-P94jXYrX.js} +1 -1
- package/dist/public/assets/{ManagedArtifactProperties-skq9H6rG.js → ManagedArtifactProperties-RLiPia3Z.js} +1 -1
- package/dist/public/assets/{McpConsentDialogBody-CYOKF_sf.js → McpConsentDialogBody-DQKGlIrW.js} +1 -1
- package/dist/public/assets/{MermaidDocEditor-pNUP6YpL.js → MermaidDocEditor-LMmhg9P3.js} +1 -1
- package/dist/public/assets/{PropertyPanel-DX8x1BVg.js → PropertyPanel-BInrc8Dz.js} +1 -1
- package/dist/public/assets/{ReportBugDialogBody-C3LwtOik.js → ReportBugDialogBody-CN9m_7Kk.js} +2 -2
- package/dist/public/assets/{SchemaConfigEditor-BKg4WPNk.js → SchemaConfigEditor-DgQ8bbvw.js} +1 -1
- package/dist/public/assets/{SettingsDialogBody-BPaBfLAb.js → SettingsDialogBody-BCxbiRlp.js} +1 -1
- package/dist/public/assets/{ShareBranchSwitchDialog-C6G5A_aK.js → ShareBranchSwitchDialog-C5BWlfbq.js} +1 -1
- package/dist/public/assets/{ShareReceiveDialog-DLEkjmkI.js → ShareReceiveDialog-CI2Mloot.js} +1 -1
- package/dist/public/assets/{ShareReceiveMissDialog-Db_rUJdZ.js → ShareReceiveMissDialog-ohgoelQ3.js} +1 -1
- package/dist/public/assets/{SkillEditorActions-AGeWFFyT.js → SkillEditorActions-B3vkquAC.js} +1 -1
- package/dist/public/assets/{SourceEditor-DKIoo25b.js → SourceEditor-DEzHIX3Z.js} +1 -1
- package/dist/public/assets/{TerminalPanel-Bf_h8SIB.js → TerminalPanel-BNrFiNj3.js} +1 -1
- package/dist/public/assets/{TerminalSessionsHost-DPgpO6i4.js → TerminalSessionsHost-BApXyKBm.js} +2 -2
- package/dist/public/assets/{TerminalWindowApp-DeHfBl6y.js → TerminalWindowApp-CT-DB-wX.js} +1 -1
- package/dist/public/assets/ThreadView-B0tKB64Q.js +6 -0
- package/dist/public/assets/{TimelineDiffPane-CQ7YSDnI.js → TimelineDiffPane-ErJoJPn_.js} +1 -1
- package/dist/public/assets/{agent-diff-store-Bi0IQPgd.js → agent-diff-store-CL1zJhM8.js} +1 -1
- package/dist/public/assets/{agent-visibility-HpfSUFqP.js → agent-visibility-DboUkSIR.js} +1 -1
- package/dist/public/assets/{auth-state-cache-BMSP_iQ1.js → auth-state-cache-HjMem9G-.js} +1 -1
- package/dist/public/assets/client-version-Cx5VddNZ.js +1 -0
- package/dist/public/assets/{config-provider-Bd6kn_Wi.js → config-provider-BvRqIV8_.js} +1 -1
- package/dist/public/assets/{dist-Cal4LUep.js → dist-CRnLx168.js} +148 -148
- package/dist/public/assets/{doc-hash-BSK-KaTu.js → doc-hash-DaHNz5tZ.js} +1 -1
- package/dist/public/assets/{documents-events-1HWCdfoh.js → documents-events-CO5GMB1j.js} +1 -1
- package/dist/public/assets/{file-tree-adapter-Dw7Dgyj1.js → file-tree-adapter-CMkAk18U.js} +1 -1
- package/dist/public/assets/{file-tree-utils-DiUPuK3N.js → file-tree-utils-DW5kpGI7.js} +1 -1
- package/dist/public/assets/{globals-C6WpSvCs.js → globals-CXEWtNVL.js} +1 -1
- package/dist/public/assets/globals-GYHxaktb.css +1 -0
- package/dist/public/assets/index-BvwEhh3F.js +2014 -0
- package/dist/public/assets/{lint-config-client-G_mrikOJ.js → lint-config-client-ClOK3XHG.js} +1 -1
- package/dist/public/assets/{markdownlint-rule-browser-rS3aDGOb.js → markdownlint-rule-browser-BkNWMW9T.js} +1 -1
- package/dist/public/assets/{navigation-targets-Ci2h-vaL.js → navigation-targets-BvMgbXSl.js} +1 -1
- package/dist/public/assets/{open-managed-artifact-tab-DfGutPkc.js → open-managed-artifact-tab-uWUnYmu7.js} +1 -1
- package/dist/public/assets/{pending-receive-nav-store-h6XBq4Wh.js → pending-receive-nav-store-ZP5ClzoO.js} +1 -1
- package/dist/public/assets/{prop-types-B-N3_i3c.js → prop-types-CaVq0ILj.js} +1 -1
- package/dist/public/assets/{receive-store-CL0RH8Oa.js → receive-store-O26Klsmj.js} +1 -1
- package/dist/public/assets/{selection-context-BeZk6OlH.js → selection-context-Cl9EWdbI.js} +1 -1
- package/dist/public/assets/{skill-actions-C_5-d4BC.js → skill-actions-BOEtYQao.js} +1 -1
- package/dist/public/assets/{skills-api-ChYiP1Zv.js → skills-api-BxZRuTIF.js} +1 -1
- package/dist/public/assets/{src-IvJo911P.js → src-BPnSaHfB.js} +1 -1
- package/dist/public/assets/{tag-pill-input-B27HgfRy.js → tag-pill-input-D3yKn_j2.js} +1 -1
- package/dist/public/assets/{target-navigation-intent-ClG4AlV8.js → target-navigation-intent-DKN8qckv.js} +1 -1
- package/dist/public/assets/{telemetry-impl-B0xfYfCD.js → telemetry-impl-DXiL3sBk.js} +1 -1
- package/dist/public/assets/{telemetry-startup-BYP0kNl2.js → telemetry-startup-Db44p95P.js} +1 -1
- package/dist/public/assets/{terminal-launch-events-N4CMVbPT.js → terminal-launch-events-cbz64adZ.js} +1 -1
- package/dist/public/assets/{terminal-telemetry-DxTZB2oZ.js → terminal-telemetry-B-8TrAWX.js} +1 -1
- package/dist/public/assets/thread-client-CurKSSA8.js +1 -0
- package/dist/public/assets/{typing-burst-detector-zU1P7TwH.js → typing-burst-detector-DNp0nd7d.js} +1 -1
- package/dist/public/assets/{uninstall-M1UiY2qw.js → uninstall-B_24eCu8.js} +1 -1
- package/dist/public/assets/{use-activity-panel-CfJPrmBg.js → use-activity-panel-CcjzkedG.js} +1 -1
- package/dist/public/assets/{use-apply-config-color-theme-CK97Jvup.js → use-apply-config-color-theme-CsOxA7Ln.js} +1 -1
- package/dist/public/assets/{use-collab-url-D0INpn_f.js → use-collab-url-DKVO0F_k.js} +1 -1
- package/dist/public/assets/{use-live-xterm-theme-C-fHLeXw.js → use-live-xterm-theme-DxXMX-ZB.js} +1 -1
- package/dist/public/assets/{use-settings-route-CXFzIfYo.js → use-settings-route-R3f95s9q.js} +1 -1
- package/dist/public/assets/{use-terminal-enabled-skhgA3z3.js → use-terminal-enabled-FmmwhtBs.js} +1 -1
- package/dist/public/assets/{use-timeline-entry-diff-D8H1ml6L.js → use-timeline-entry-diff-CqINluw6.js} +1 -1
- package/dist/public/assets/{use-workspace-3T40FR83.js → use-workspace-DQ7VjlT1.js} +1 -1
- package/dist/public/assets/{workspace-paths-B-NChZS2.js → workspace-paths-CFyvLimb.js} +1 -1
- package/dist/public/index.html +37 -37
- package/dist/public/uninstall.html +4 -4
- package/dist/{repair-launch-json-Bgt1JPap.mjs → repair-launch-json-CyzMH3Dg.mjs} +2 -2
- package/dist/{repair-mcp-configs-JOnTDbtQ.mjs → repair-mcp-configs-Bk1NyiZ4.mjs} +2 -2
- package/dist/{repair-skills-wN4Q8hDX.mjs → repair-skills-C0Geadpr.mjs} +2 -2
- package/dist/repair-skills-D19a_XVe.mjs +1 -0
- package/dist/server-lock-DUfHjP3M.mjs +1 -0
- package/dist/{server-lock-TC0vRJO5.mjs → server-lock-rqh-yT8R.mjs} +2 -2
- package/dist/{src-BkLr-Kxa.mjs → src-CfIUSiib.mjs} +2 -2
- package/dist/{src-Cedat7Lt.mjs → src-DF_K89lg.mjs} +1 -1
- package/dist/{src-C4HvLmg1.mjs → src-Q2mWJGdH.mjs} +120 -120
- package/dist/src-phea8qFf.mjs +3265 -0
- package/dist/start-C651KlAq.mjs +1 -0
- package/dist/{start-CrZJy3Yc.mjs → start-CNop6WpI.mjs} +2 -2
- package/dist/{write-project-skill-7eiqv4-L.mjs → write-project-skill-CG87XS-d.mjs} +4 -4
- package/package.json +4 -4
- package/dist/constants-WSErvfZx.mjs +0 -2
- package/dist/git-handle-Ceb067pB.mjs +0 -1
- package/dist/init-C8rkx5j9.mjs +0 -1
- package/dist/loader-BzBN0303.mjs +0 -1
- package/dist/md-manager-BrzjirTk.mjs +0 -2
- package/dist/preview-DhJpRIag.mjs +0 -1
- package/dist/public/assets/FeedbackForm-CeQduxl0.js +0 -1
- package/dist/public/assets/ThreadView-DN1Ly5aA.js +0 -6
- package/dist/public/assets/client-version-CiCsKDVd.js +0 -1
- package/dist/public/assets/globals-DF_8aGgC.css +0 -1
- package/dist/public/assets/index-BPmTXHv2.js +0 -2014
- package/dist/public/assets/thread-client-CXDtD9Ce.js +0 -1
- package/dist/repair-skills-CWDsNblG.mjs +0 -1
- package/dist/server-lock-CcpmJhRb.mjs +0 -1
- package/dist/src-ZTjj6Vbn.mjs +0 -3267
- package/dist/start-CFsgb8aj.mjs +0 -1
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import{K as e}from"./sleep-B2L0pvp4.mjs";import{_ as t,b as n,d as r}from"./write-project-skill-
|
|
1
|
+
import{K as e}from"./sleep-B2L0pvp4.mjs";import{_ as t,b as n,d as r}from"./write-project-skill-CG87XS-d.mjs";import{d as i}from"./init-BRlzdKw6.mjs";import{execFileSync as a}from"node:child_process";import{dirname as o,join as s}from"node:path";import{existsSync as c,mkdirSync as l,readFileSync as u,writeFileSync as d}from"node:fs";import{homedir as f}from"node:os";var p=e();const m=`open-knowledge`;function h(e){try{e()}catch{}}var g=class{backend=`keyring`;constructor(e){this.onKeychainRead=e}async get(e){let{Entry:t}=await import(`@napi-rs/keyring`),n;try{n=new t(m,e).getPassword()}catch(t){return h(()=>this.onKeychainRead?.({kind:`read-error`,host:e,error:t instanceof Error?t.name:`unknown`})),null}if(n==null)return h(()=>this.onKeychainRead?.({kind:`absent`,host:e})),null;try{return JSON.parse(n)}catch{return h(()=>this.onKeychainRead?.({kind:`corrupt-entry`,host:e,error:`corrupt-entry`})),null}}async set(e,t,n,r){let{Entry:i}=await import(`@napi-rs/keyring`),a=new i(m,e),o={login:t,token:n,...r};a.setPassword(JSON.stringify(o))}async clear(e){let{Entry:t}=await import(`@napi-rs/keyring`);try{new t(m,e).deletePassword()}catch{}}},_=class{backend=`file`;authFile;constructor(e){this.authFile=e??s(f(),`.ok`,`auth.yml`)}read(){if(!c(this.authFile))return{};try{return(0,p.parse)(u(this.authFile,`utf-8`))??{}}catch(e){let t=e instanceof Error?e.message:`unknown error`;return process.stderr.write(`[auth] Failed to parse ${this.authFile}: ${t}. Starting with empty credentials.\n`),{}}}write(e){let t=o(this.authFile);c(t)||l(t,{recursive:!0,mode:448}),d(this.authFile,(0,p.stringify)(e),{mode:384})}async get(e){return this.read()[e]??null}async set(e,t,n,r){let i=this.read();i[e]={login:t,token:n,...r},this.write(i)}async clear(e){let t=this.read();delete t[e],this.write(t)}},v=class{backend=`keyring`;constructor(e,t){this.keychain=e,this.file=t}async get(e){let t=await this.keychain.get(e);if(t!=null)return t;let n=await this.file.get(e);if(n==null)return null;try{await this.keychain.set(e,n.login,n.token,{gitProtocol:n.gitProtocol,name:n.name,email:n.email}),await this.file.clear(e),process.stderr.write(`[auth] migrated ${e} credential from ~/.ok/auth.yml to the OS keychain\n`)}catch{}return n}set(e,t,n,r){return this.keychain.set(e,t,n,r)}async clear(e){await this.keychain.clear(e),await this.file.get(e)!=null&&await this.file.clear(e)}};async function y(e,t){try{let{Entry:n}=await import(`@napi-rs/keyring`);return new n(m,`__probe__`),process.stderr.write(`[auth] token storage: OS keychain
|
|
2
2
|
`),h(()=>t?.onBackendSelected?.({backend:`keyring`})),new v(new g(t?.onKeychainRead),new _(e))}catch(n){let r=n instanceof Error?`${n.name}: ${n.message}`:String(n);return process.stderr.write(`[auth] token storage: file (~/.ok/auth.yml) — OS keychain unavailable: ${r}\n`),h(()=>t?.onBackendSelected?.({backend:`file`,reason:r})),new _(e)}}function b(e){let t=null;return function(){if(t)return t;let n=2e3;return t=(async()=>{let t=null,r=new Promise(r=>{t=setTimeout(()=>{process.stderr.write(`[auth] token storage: keyring init exceeded ${n}ms; falling back to file (~/.ok/auth.yml)\n`),r(new _(e))},n)});try{return await Promise.race([y(e),r])}catch{return new _(e)}finally{t!==null&&clearTimeout(t)}})(),t}}function x(e){let t=b(e);return{async get(e){let n=await(await t()).get(e);return n===null?null:{token:n.token}}}}function S(e){let t=b(e);return{backend:`file`,async get(e){return(await t()).get(e)},async set(e,n,r,i){return(await t()).set(e,n,r,i)},async clear(e){return(await t()).clear(e)}}}async function C(e,t){let n=[],r=new _(t);await r.get(e)!=null&&(await r.clear(e),n.push(`file`));let i;try{let{Entry:t}=await import(`@napi-rs/keyring`);new t(m,`__probe__`);let r,a=await new g(e=>{e.kind===`read-error`&&(r=e.error??`read-error`)}).get(e);if(r!==void 0)i=r;else if(a!=null)try{new t(m,e).deletePassword(),n.push(`keychain`)}catch(e){i=e instanceof Error?e.name:`delete-error`}}catch{}return{touched:n,keychainError:i}}const w=[`/opt/homebrew/bin/gh`,`/usr/local/bin/gh`,`/opt/local/bin/gh`,`/snap/bin/gh`,`/usr/bin/gh`],T={encoding:`utf-8`,stdio:[`ignore`,`pipe`,`pipe`],timeout:5e3,windowsHide:!0};function E(e,t={}){let n=t._exec??a,r=t._fileExists??c,i=[`auth`,`token`,...e?[`--hostname`,e]:[]],o=[`gh`,...w.filter(r)];for(let e of o)try{let t=n(e,i,T).toString().trim();if(t.length>0)return{available:!0,token:t}}catch{}return{available:!1}}function D(e,a,o){let s=r[e],c=e===`opencode`?n:t,l=[],u=s.projectConfigPath?.(a);u!==void 0&&l.push({scope:`project`,configPath:u});try{l.push({scope:`user`,configPath:s.configPath(a,o)})}catch{}for(let t of l){let n=i(s,a,o,t.configPath);if(n!==null&&c(n))return{editorId:e,scope:t.scope,configPath:t.configPath}}return null}export{x as a,y as i,E as n,S as o,C as r,D as t};
|
|
3
|
-
//# sourceMappingURL=acp-harness-probe-
|
|
3
|
+
//# sourceMappingURL=acp-harness-probe-C3Si3Oe6.mjs.map
|
|
@@ -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.42.0
|
|
6
|
+
version: "0.42.0"
|
|
7
7
|
author: "Inkeep"
|
|
8
8
|
repository: "https://github.com/inkeep/open-knowledge"
|
|
9
9
|
---
|
|
@@ -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, editing, or linting any `.md` or `.mdx` file in the project, and before any `mcp__open-knowledge__*` tool call (`exec`, `search`, `write`, `edit`, `lint`, 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.42.0
|
|
6
|
+
version: "0.42.0"
|
|
7
7
|
author: "Inkeep"
|
|
8
8
|
repository: "https://github.com/inkeep/open-knowledge"
|
|
9
9
|
---
|
|
@@ -67,7 +67,7 @@ Call `write` / `edit` as soon as you have content (route through MCP per the STO
|
|
|
67
67
|
|
|
68
68
|
**Persist incrementally — the knowledge base IS your checkpoint (MUST).** On any multi-step or long-running task — a research sweep, a multi-source synthesis, a batch of docs — write completed work to the KB as you finish each unit: per section, per source, per doc. Never hold finished findings only in your context waiting for one final write at the end. A rate limit, crash, or context compaction mid-task discards everything still unwritten; work already persisted survives, and you resume by reading the doc back. Create the target doc early (skeleton + frontmatter), then `edit` each section in as it firms up.
|
|
69
69
|
|
|
70
|
-
**Pass a `summary` on every content write (SHOULD)** — a one-line (≤80 chars) user-facing change-note that becomes the timeline entry. **Reach for visual structure** (Callout, `mermaid`, table, `html preview`) where it carries the point better than prose; call `palette` as you draft. Advisory write-warnings, MDX authoring, delete/move mechanics,
|
|
70
|
+
**Pass a `summary` on every content write (SHOULD)** — a one-line (≤80 chars) user-facing change-note that becomes the timeline entry. **Reach for visual structure** (Callout, `mermaid`, table, `html preview`) where it carries the point better than prose; call `palette` as you draft. Advisory write-warnings, MDX authoring, delete/move mechanics, and visual authoring: `references/writing.md` + `references/components-and-visuals.md` + `references/media-and-assets.md`.
|
|
71
71
|
|
|
72
72
|
## Grounding — every factual claim needs a source (MUST)
|
|
73
73
|
|
|
@@ -10,12 +10,8 @@ OK auto-promotes markdown-native syntax into themed canonical components at pars
|
|
|
10
10
|
| Collapsible section | `<details><summary>Title</summary>` … `</details>` | themed Accordion |
|
|
11
11
|
| Diagram | a ` ```mermaid ` fenced block (flowchart, sequence, class, state, ER, gantt, pie) — label-text pitfalls + escapes: `palette({ components: ["Mermaid"] })`; parse failures come back as `warnings` entries on write/edit | Mermaid diagram |
|
|
12
12
|
| Math | `$x$` inline, `$$…$$` block | KaTeX Math |
|
|
13
|
-
| Highlight | `==text==` | highlight mark |
|
|
14
|
-
| Author-only comment (hidden from readers) | `%%text%%` or `<!-- text -->` | comment mark |
|
|
15
13
|
| Inline a doc or asset | `![[file]]` | wiki embed |
|
|
16
14
|
|
|
17
|
-
**These delimiters are live in ordinary prose.** `==`, `$`, `$$`, `%%`, `<!--` … `-->` and `~~` format — or hide — whatever sits between them, wherever they appear, not only where you meant them as syntax. To show a literal pair, wrap it in an inline code span (`` `==x==` ``, `` `$5` ``), which always works and reads as code; or backslash-escape a delimiter to keep it as running prose. Escaping either side is enough for `==`, `$`, `%%` and `<!--`: `\==x\==`, `\$5`, `\%\%note\%\%`, `\<!-- note -->`. For `~~`, escape both tildes (`\~\~x\~\~`) — a one-sided `\~~x~~` renders right but gets rewritten to the two-sided form on save. Watch `%%` and `<!-- -->` in particular: an accidental pair doesn't restyle the text, it hides it.
|
|
18
|
-
|
|
19
15
|
`Tabs` is the lone canonical with **no** markdown-native form — write the JSX directly (`<Tabs><Tab label="…">…</Tab></Tabs>`). For any canonical's full JSX prop schema, call `palette({ components: [ids] })`. If no canonical fits, any `<TagName>…</TagName>` falls through as raw MDX — but prefer a canonical when one matches.
|
|
20
16
|
|
|
21
17
|
**Discover the palette in one call.** `palette` returns every markdown-native form (copy-ready `example` + `guidance`), the themed `html preview` embed starters, and the injected theme-token list — the source of truth for component-forward, themed authoring. Canonical names/counts beyond the markdown-native set are project-specific; the inventory in the `write` / `edit` descriptions and `palette({ components })` are authoritative for those.
|
|
@@ -3,7 +3,7 @@ name: open-knowledge-write-skill
|
|
|
3
3
|
description: "Use when the user wants to create, author, write, or design a new Agent Skill (a SKILL.md) — for OpenKnowledge or for their editors — including requests like 'help me write a skill', 'make a skill that…', 'turn this workflow into a skill', or improving an existing skill's triggering and discipline. Also use when capturing reusable agent guidance that should live as an installable skill rather than a one-off prompt. Covers choosing scope (project vs global), the SKILL.md frontmatter contract, progressive-disclosure structure, evaluating the skill, and installing it into the user's editors."
|
|
4
4
|
compatibility: "OpenKnowledge project recommended (uses the `write` / `edit` / `install` MCP verbs). Authoring + validation are pure file ops; live preview + eval want a running server (`ok start`)."
|
|
5
5
|
metadata:
|
|
6
|
-
version: "0.41.
|
|
6
|
+
version: "0.41.0"
|
|
7
7
|
author: "Inkeep"
|
|
8
8
|
repository: "https://github.com/inkeep/open-knowledge"
|
|
9
9
|
---
|
|
@@ -81,7 +81,7 @@ Before writing the skill, run the scenario WITHOUT it and capture what the agent
|
|
|
81
81
|
does wrong — verbatim, including its rationalizations ("the test is trivial so I
|
|
82
82
|
skipped it"). Those rationalizations are the exact loopholes the skill body must
|
|
83
83
|
close. If you have a running server, use the agent simulator
|
|
84
|
-
(`cd packages/app &&
|
|
84
|
+
(`cd packages/app && bun run src/server/agent-sim.ts`) as the executor; otherwise
|
|
85
85
|
reason through the baseline transcript with the user. Skip this stage for plain
|
|
86
86
|
reference skills.
|
|
87
87
|
|
|
@@ -34,7 +34,7 @@ A short table the agent reads when tempted:
|
|
|
34
34
|
## Running it
|
|
35
35
|
|
|
36
36
|
With a server: drive the scenarios through the agent simulator
|
|
37
|
-
(`cd packages/app &&
|
|
37
|
+
(`cd packages/app && bun run src/server/agent-sim.ts`). Without one: walk the
|
|
38
38
|
pressured prompt with the user and read the response for the rule holding.
|
|
39
39
|
Read the full transcript, not just the final answer — discipline fails in the
|
|
40
40
|
reasoning, not always in the output.
|