@geohar/opencode-cribsheet 0.4.0 → 0.5.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 CHANGED
@@ -91,9 +91,13 @@ With options (all optional — defaults shown):
91
91
 
92
92
  ## Requirements
93
93
 
94
- - [`sharedserver`](https://github.com/georgeharker/sharedserver) on `PATH`
95
- (`cargo install sharedserver`) — unless `manage: false`.
96
- - `crib` on `PATH` (install cribsheet), or a `checkout` + `uv`.
94
+ - `curl` and [`uv`](https://docs.astral.sh/uv/) — **nothing else**. The plugin fetches
95
+ [`sharedserver`](https://github.com/georgeharker/sharedserver) and `crib` itself on
96
+ first use if they are not already present, so no Rust toolchain is needed and
97
+ cribsheet need not be installed by hand.
98
+ - To supply your own instead: anything on `PATH`, the `binary` option, or
99
+ `$SHAREDSERVER_BIN` / `$CRIB_BIN` is used as-is and never silently replaced. A
100
+ `checkout` + `uv` also works for a dev tree.
97
101
 
98
102
  ## Relationship to the other plugins
99
103
 
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AA2BA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAA;AAsSjD,QAAA,MAAM,eAAe,EAAE,MAoItB,CAAA;AAED,eAAe,eAAe,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AA4BA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAA;AAgSjD,QAAA,MAAM,eAAe,EAAE,MAoItB,CAAA;AAED,eAAe,eAAe,CAAA"}
package/dist/index.js CHANGED
@@ -21,41 +21,32 @@
21
21
  // SessionStart additionalContext).
22
22
  // 5. /crib command — register an OpenCode command mirroring commands/crib.md.
23
23
  import { spawnSync } from "node:child_process";
24
- import { existsSync } from "node:fs";
25
- import { homedir } from "node:os";
26
- import { join } from "node:path";
24
+ import { readFileSync } from "node:fs";
25
+ import { dirname, join } from "node:path";
26
+ import { fileURLToPath } from "node:url";
27
+ import { resolveSharedserver } from "./sharedserver-resolve.js";
27
28
  const DEFAULT_PORT = 7732;
28
29
  const DEFAULT_HOST = "127.0.0.1";
29
30
  const DEFAULT_NAME = "cribsheet";
30
31
  const DEFAULT_GRACE = "1h";
31
32
  // ── the reach-for-crib directive ───────────────────────────────────
32
- // Canonical source: cribsheet's CLAUDE.md.example (plugins/cribsheet/instructions.txt
33
- // symlinks it). Bundled here so the published npm package is self-contained; keep in
34
- // sync with that file.
35
- const CRIB_DIRECTIVE = `# Memory (cribsheet)
36
-
37
- - **Consult memory first.** Before answering about a project, topic, or past decision
38
- — or exploring a codebase cold — \`lookup\`/\`apropos\` cribsheet first; the answer may
39
- already be stored, and more current than reasoning from scratch.
40
- - **Prefer the code index over grep/Read for understanding code.** The reflex to
41
- \`grep\`/\`rg\`/\`Glob\` for a symbol — or to open a file to see what it does — is the cue
42
- to reach for the index first; grep is the fallback when it misses, not the default.
43
- - *find code by concept or name* → \`code_lookup "…in your own words"\`, **not**
44
- \`grep -r\` (answers by intent + cross-file).
45
- - *understand a symbol + who uses it* → \`code_dossier <symbol>\`, **not** reading
46
- the whole file (one call: signature, description, callers/callees/references).
47
- - *trace calls* → \`code_xref\` / \`code_graph\`, **not** chains of greps.
48
- - *repo not indexed?* → that's the expected first step, not a dead end: **index it**
49
- — \`project_index\` (indexes the source in one call), then look up.
50
- - *which project?* → code tools act on ONE **current project**. Set it once
51
- (\`use_project <name>\`, or it's inferred from \`project_path\` on your first code
52
- call); to look up a **different** project, name it: \`project=<name>\` or
53
- \`project_path=<a path in that repo>\`.
54
- - **Persist durably.** When a durable fact emerges (a decision, convention, gotcha,
55
- contract), \`store\` it — \`lookup\` first, \`append\`/\`edit\` over duplicating. **Name the
56
- project it's ABOUT** (writes require an explicit \`project=\`/\`project_path=\`): a fact
57
- about the repo you're in goes there, but cross-cutting/tooling knowledge belongs in
58
- \`default\` or that tool's own project. Say which project it landed in.`;
33
+ // Appended to the system prompt so the agent reaches for crib's tools (the analogue
34
+ // of the Claude Code plugin's SessionStart additionalContext). Canonical source:
35
+ // CLAUDE.md.example at the repo root (plugins/claude/instructions.txt symlinks it). A
36
+ // release-time `prepack` copies that file to this package's root as instructions.txt
37
+ // (see package.json `prepack`/`files`); we read the copy ONCE here so the published
38
+ // npm package is self-contained without duplicating the text in source. A dev/unbuilt
39
+ // run (no copy present) falls back to an empty string and simply injects nothing.
40
+ const CRIB_DIRECTIVE = (() => {
41
+ try {
42
+ // dist/index.js lives in dist/; the packed copy ships at the package root.
43
+ const here = dirname(fileURLToPath(import.meta.url));
44
+ return readFileSync(join(here, "..", "instructions.txt"), "utf8");
45
+ }
46
+ catch {
47
+ return "";
48
+ }
49
+ })();
59
50
  // ── the /crib command template (mirrors commands/crib.md) ──────────
60
51
  const CRIB_COMMAND_TEMPLATE = `Consult crib first — recall memory + the code index for "$ARGUMENTS" before reasoning from scratch.
61
52
 
@@ -86,26 +77,18 @@ function combinerServes(name, env) {
86
77
  return truthy(env.MCP_COMBINER);
87
78
  }
88
79
  // ── sharedserver binary resolution (ported) ────────────────────────
89
- const CANDIDATE_BINARIES = [
90
- "sharedserver",
91
- join(homedir(), ".cargo", "bin", "sharedserver"),
92
- join(homedir(), ".local", "bin", "sharedserver"),
93
- "/usr/local/bin/sharedserver",
94
- "/opt/homebrew/bin/sharedserver",
95
- ];
96
- function resolveBinary(override, env) {
97
- const candidates = [override, env.SHAREDSERVER_BIN, ...CANDIDATE_BINARIES].filter((v) => typeof v === "string" && v.length > 0);
98
- for (const candidate of candidates) {
99
- if (candidate.includes("/")) {
100
- if (existsSync(candidate))
101
- return candidate;
102
- continue;
103
- }
104
- const probe = spawnSync(candidate, ["--version"], { stdio: "ignore", env });
105
- if (probe.status === 0)
106
- return candidate;
107
- }
108
- return undefined;
80
+ // Resolution lives in a module vendored byte-identical from georgeharker/sharedserver
81
+ // (scripts/sync-vendored.sh), so the Claude hook's bin/sharedserver and this plugin
82
+ // answer "which sharedserver, and why" identically. Floor-only against the latest
83
+ // release: cribsheet consumes sharedserver rather than shipping it, so version lockstep
84
+ // between them would be meaningless.
85
+ const SHAREDSERVER_MIN_VERSION = "0.6.7";
86
+ function resolveBinary(override, env, log, toast) {
87
+ return resolveSharedserver({
88
+ label: "cribsheet",
89
+ minVersion: SHAREDSERVER_MIN_VERSION,
90
+ installerUrl: "https://github.com/georgeharker/sharedserver/releases/latest/download/sharedserver-installer.sh",
91
+ }, override, env, log, toast);
109
92
  }
110
93
  function onPath(cmd, env) {
111
94
  return spawnSync(cmd, ["--version"], { stdio: "ignore", env }).status === 0;
@@ -299,7 +282,7 @@ const CribsheetPlugin = async ({ client }, options) => {
299
282
  // The directive: appended to the system prompt each session (analogue of the CC
300
283
  // plugin's SessionStart additionalContext). Injected regardless of `served`.
301
284
  const systemHook = async (_input, output) => {
302
- if (!wantInstructions)
285
+ if (!wantInstructions || !CRIB_DIRECTIVE)
303
286
  return;
304
287
  output.system.push(CRIB_DIRECTIVE);
305
288
  };
@@ -318,7 +301,7 @@ const CribsheetPlugin = async ({ client }, options) => {
318
301
  scheduleMcpHealthCheck(client, mcpName, log, toast, 5000);
319
302
  return hooks;
320
303
  }
321
- const binary = resolveBinary(opts.binary, env);
304
+ const binary = resolveBinary(opts.binary, env, log, toast);
322
305
  if (!binary) {
323
306
  const msg = "sharedserver binary not found; set `binary`/`$SHAREDSERVER_BIN`, or use manage:false";
324
307
  log("error", msg);
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,19 @@
1
+ export type LogFn = (level: "info" | "warn" | "error", message: string) => void;
2
+ export type ToastFn = (variant: "success" | "warning" | "error", message: string) => void;
3
+ export type ResolveConfig = {
4
+ /** Prefix for user-facing messages. Default "sharedserver". */
5
+ label?: string;
6
+ /** Minimum acceptable version. Defaults to pkgVersion (lockstep). */
7
+ minVersion?: string;
8
+ /** Installer to fetch. Defaults to the release pinned to pkgVersion. */
9
+ installerUrl?: string;
10
+ /** The host package's own version — only meaningful in lockstep mode. */
11
+ pkgVersion?: string;
12
+ };
13
+ /** Resolve the sharedserver binary, fetching a release when nothing usable is present.
14
+ *
15
+ * Behaviourally identical to plugins/claude/bin/sharedserver — same ladder, floor,
16
+ * lock and degrade-rather-than-die fallback, so a user running both clients gets the
17
+ * same answer to "which sharedserver am I on, and why". */
18
+ export declare function resolveSharedserver(cfg: ResolveConfig, override: string | undefined, env: NodeJS.ProcessEnv, log?: LogFn, toast?: ToastFn): string | undefined;
19
+ //# sourceMappingURL=sharedserver-resolve.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sharedserver-resolve.d.ts","sourceRoot":"","sources":["../src/sharedserver-resolve.ts"],"names":[],"mappings":"AAgBA,MAAM,MAAM,KAAK,GAAG,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,EAAE,OAAO,EAAE,MAAM,KAAK,IAAI,CAAA;AAC/E,MAAM,MAAM,OAAO,GAAG,CAAC,OAAO,EAAE,SAAS,GAAG,SAAS,GAAG,OAAO,EAAE,OAAO,EAAE,MAAM,KAAK,IAAI,CAAA;AAEzF,MAAM,MAAM,aAAa,GAAG;IACxB,+DAA+D;IAC/D,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,qEAAqE;IACrE,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,wEAAwE;IACxE,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,yEAAyE;IACzE,UAAU,CAAC,EAAE,MAAM,CAAA;CACtB,CAAA;AAyID;;;;4DAI4D;AAC5D,wBAAgB,mBAAmB,CAC/B,GAAG,EAAE,aAAa,EAClB,QAAQ,EAAE,MAAM,GAAG,SAAS,EAC5B,GAAG,EAAE,MAAM,CAAC,UAAU,EACtB,GAAG,CAAC,EAAE,KAAK,EACX,KAAK,CAAC,EAAE,OAAO,GAChB,MAAM,GAAG,SAAS,CA4CpB"}
@@ -0,0 +1,188 @@
1
+ // Resolve the `sharedserver` binary, fetching it when none is usable.
2
+ //
3
+ // VENDORED FILE. This is copied byte-identical into the consuming OpenCode plugins
4
+ // (cribsheet, svg-mcp) by their scripts/sync-vendored.sh, so the drift check is a plain
5
+ // diff. There is no way to share it as a dependency without coupling their versions to
6
+ // sharedserver's — see plugins/claude/bin/sharedserver for the same reasoning on the
7
+ // shell side. Edit it HERE; consumers re-sync.
8
+ //
9
+ // Everything repo-specific arrives through ResolveConfig rather than being hardcoded,
10
+ // mirroring bin/sharedserver.conf.
11
+ import { spawnSync } from "node:child_process";
12
+ import { existsSync, mkdirSync, rmSync, statSync, writeFileSync } from "node:fs";
13
+ import { homedir } from "node:os";
14
+ import { join } from "node:path";
15
+ /** Oldest release these plugins are correct against: 0.5.0 added the PID-reuse guard,
16
+ * without which a recycled client PID can hold a server open indefinitely. */
17
+ const HARDCODED_FLOOR = "0.5.0";
18
+ const CANDIDATE_BINARIES = [
19
+ "sharedserver",
20
+ join(homedir(), ".cargo", "bin", "sharedserver"),
21
+ join(homedir(), ".local", "bin", "sharedserver"),
22
+ "/usr/local/bin/sharedserver",
23
+ "/opt/homebrew/bin/sharedserver",
24
+ ];
25
+ function parseVersion(text) {
26
+ const m = text.match(/(\d+)\.(\d+)\.(\d+)/);
27
+ return m ? [Number(m[1]), Number(m[2]), Number(m[3])] : undefined;
28
+ }
29
+ function gte(a, b) {
30
+ for (let i = 0; i < 3; i++)
31
+ if (a[i] !== b[i])
32
+ return a[i] > b[i];
33
+ return true;
34
+ }
35
+ function versionOf(candidate, env) {
36
+ const r = spawnSync(candidate, ["--version"], { env });
37
+ if (r.error)
38
+ return undefined;
39
+ return parseVersion(`${r.stdout?.toString() ?? ""}${r.stderr?.toString() ?? ""}`);
40
+ }
41
+ /** Synchronous sleep — this path runs before anything can be awaited, so the lock wait
42
+ * cannot use timers. Atomics.wait blocks without spinning. */
43
+ function sleepSync(ms) {
44
+ Atomics.wait(new Int32Array(new SharedArrayBuffer(4)), 0, 0, ms);
45
+ }
46
+ /** First sharedserver found at ANY version, or undefined. */
47
+ function probeAny(override, env) {
48
+ const candidates = [override, env.SHAREDSERVER_BIN, ...CANDIDATE_BINARIES].filter((v) => typeof v === "string" && v.length > 0);
49
+ for (const candidate of candidates) {
50
+ if (candidate.includes("/")) {
51
+ if (existsSync(candidate))
52
+ return candidate;
53
+ continue;
54
+ }
55
+ // Presence is "spawn did not fail", NOT "exited 0" — a build that rejects some
56
+ // flag is still present.
57
+ if (!spawnSync(candidate, ["--version"], { stdio: "ignore", env }).error)
58
+ return candidate;
59
+ }
60
+ return undefined;
61
+ }
62
+ /** Download and run the cargo-dist installer, then re-probe. */
63
+ function installPinned(cfg, url, what, env, log, toast) {
64
+ // The SAME lock directory as the shell shim — cross-client coordination, so a
65
+ // Claude session and an OpenCode session starting together do not race.
66
+ const lockdir = join(env.TMPDIR || "/tmp", ".sharedserver-install.lock");
67
+ let haveLock = false;
68
+ try {
69
+ mkdirSync(lockdir);
70
+ haveLock = true;
71
+ }
72
+ catch {
73
+ const deadline = Date.now() + 20_000;
74
+ while (existsSync(lockdir) && Date.now() < deadline)
75
+ sleepSync(250);
76
+ const after = probeAny(undefined, env);
77
+ if (after)
78
+ return after;
79
+ try {
80
+ mkdirSync(lockdir);
81
+ haveLock = true;
82
+ }
83
+ catch {
84
+ log?.("warn", `${cfg.label}: another process is installing sharedserver and did not finish; remove the stale lock if this persists: ${lockdir}`);
85
+ return undefined;
86
+ }
87
+ }
88
+ try {
89
+ // Re-probe under the lock: the winner may have finished while we waited.
90
+ const already = probeAny(undefined, env);
91
+ const floor = parseVersion(cfg.minVersion ?? HARDCODED_FLOOR);
92
+ if (already) {
93
+ const v = versionOf(already, env);
94
+ if (v && floor && gte(v, floor))
95
+ return already;
96
+ }
97
+ // Download to a file, then run it. `curl … | sh` would report success on a 404,
98
+ // since a pipeline's status is sh's; spawnSync uses no shell, so this is exact.
99
+ const script = join(lockdir, "installer.sh");
100
+ const dl = spawnSync("curl", ["--proto", "=https", "--tlsv1.2", "-LsSf", url, "-o", script], { env });
101
+ if (dl.error || dl.status !== 0) {
102
+ const msg = `${cfg.label}: could not download the sharedserver installer (${what})`;
103
+ log?.("warn", msg);
104
+ toast?.("warning", msg);
105
+ return undefined;
106
+ }
107
+ if (!existsSync(script) || statSync(script).size === 0) {
108
+ log?.("warn", `${cfg.label}: the downloaded sharedserver installer was empty`);
109
+ return undefined;
110
+ }
111
+ // cargo-dist embeds the expected sha256 but looks up only `sha256sum` and SKIPS
112
+ // verification when missing — i.e. always, on macOS. Give it one (identical
113
+ // output) rather than execute an unverified binary.
114
+ let runEnv = env;
115
+ if (spawnSync("sh", ["-c", "command -v sha256sum"], { stdio: "ignore" }).status !== 0) {
116
+ if (spawnSync("sh", ["-c", "command -v shasum"], { stdio: "ignore" }).status !== 0) {
117
+ log?.("warn", `${cfg.label}: refusing to install sharedserver — no sha256sum or shasum to verify the download`);
118
+ return undefined;
119
+ }
120
+ writeFileSync(join(lockdir, "sha256sum"), '#!/bin/sh\nexec shasum -a 256 "$@"\n', { mode: 0o755 });
121
+ runEnv = { ...env, PATH: `${lockdir}:${env.PATH ?? ""}` };
122
+ }
123
+ const run = spawnSync("sh", [script], { env: runEnv, stdio: "ignore" });
124
+ if (run.error || run.status !== 0) {
125
+ log?.("warn", `${cfg.label}: the sharedserver installer ran but failed`);
126
+ return undefined;
127
+ }
128
+ return probeAny(undefined, env);
129
+ }
130
+ finally {
131
+ if (haveLock) {
132
+ try {
133
+ rmSync(lockdir, { recursive: true, force: true });
134
+ }
135
+ catch {
136
+ /* best effort — a leaked lock costs the next run its bounded wait */
137
+ }
138
+ }
139
+ }
140
+ }
141
+ /** Resolve the sharedserver binary, fetching a release when nothing usable is present.
142
+ *
143
+ * Behaviourally identical to plugins/claude/bin/sharedserver — same ladder, floor,
144
+ * lock and degrade-rather-than-die fallback, so a user running both clients gets the
145
+ * same answer to "which sharedserver am I on, and why". */
146
+ export function resolveSharedserver(cfg, override, env, log, toast) {
147
+ const label = cfg.label ?? "sharedserver";
148
+ const minVersion = cfg.minVersion ?? cfg.pkgVersion ?? HARDCODED_FLOOR;
149
+ const url = cfg.installerUrl ??
150
+ (cfg.pkgVersion
151
+ ? `https://github.com/georgeharker/sharedserver/releases/download/v${cfg.pkgVersion}/sharedserver-installer.sh`
152
+ : "https://github.com/georgeharker/sharedserver/releases/latest/download/sharedserver-installer.sh");
153
+ const what = cfg.installerUrl || !cfg.pkgVersion ? "the latest release" : `v${cfg.pkgVersion}`;
154
+ const resolved = { ...cfg, label, minVersion };
155
+ const floor = parseVersion(minVersion);
156
+ // An explicit binary / SHAREDSERVER_BIN is never second-guessed: the user named a
157
+ // specific one, so quietly downloading a different one is the wrong answer.
158
+ const explicit = override ?? env.SHAREDSERVER_BIN;
159
+ if (explicit) {
160
+ const present = explicit.includes("/")
161
+ ? existsSync(explicit)
162
+ : !spawnSync(explicit, ["--version"], { stdio: "ignore", env }).error;
163
+ if (present) {
164
+ const v = versionOf(explicit, env);
165
+ if (v && floor && !gte(v, floor)) {
166
+ const msg = `${label}: sharedserver at ${explicit} is ${v.join(".")}; this plugin expects >= ${minVersion}. Using it anyway because you set it explicitly.`;
167
+ log?.("warn", msg);
168
+ toast?.("warning", msg);
169
+ }
170
+ return explicit;
171
+ }
172
+ }
173
+ const found = probeAny(override, env);
174
+ if (found) {
175
+ const v = versionOf(found, env);
176
+ if (v && floor && gte(v, floor))
177
+ return found;
178
+ // Too old: fetch, but remember this one — if the download fails we would rather
179
+ // run the old binary than nothing.
180
+ const msg = `${label}: sharedserver at ${found} is ${v?.join(".") ?? "an unknown version"}; this plugin expects >= ${minVersion}. Fetching ${what}. To keep your own build, set SHAREDSERVER_BIN=${found}`;
181
+ log?.("warn", msg);
182
+ toast?.("warning", msg);
183
+ return installPinned(resolved, url, what, env, log, toast) ?? found;
184
+ }
185
+ log?.("info", `${label}: no usable sharedserver found; fetching ${what} (one time). This needs no Rust toolchain.`);
186
+ return installPinned(resolved, url, what, env, log, toast);
187
+ }
188
+ //# sourceMappingURL=sharedserver-resolve.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sharedserver-resolve.js","sourceRoot":"","sources":["../src/sharedserver-resolve.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,36 @@
1
+ # Memory (cribsheet)
2
+
3
+ <!-- Canonical reach-for-crib directive. Copy into your global
4
+ $CLAUDE_CONFIG_DIR/CLAUDE.md, or let a cribsheet plugin inject it each session
5
+ (the plugins symlink this file). It directs *approach*; the MCP tool
6
+ descriptions carry the mechanics. -->
7
+
8
+ - **Consult memory first.** Before answering about a project, topic, or past decision
9
+ — or exploring a codebase cold — `lookup`/`apropos` cribsheet first; the answer may
10
+ already be stored, and more current than reasoning from scratch.
11
+ - **Prefer the code index over grep/Read for understanding code.** The reflex to
12
+ `grep`/`rg`/`Glob` for a symbol — or to open a file to see what it does — is the cue
13
+ to reach for the index first; grep is the fallback when it misses, not the default.
14
+ - *find code by concept or name* → `code_lookup "…in your own words"`, **not**
15
+ `grep -r` (answers by intent + cross-file).
16
+ - *understand a symbol + who uses it* → `code_dossier <symbol>`, **not** reading
17
+ the whole file (one call: signature, description, callers/callees/references).
18
+ - *trace calls* → `code_xref` / `code_graph`, **not** chains of greps.
19
+ - *repo not indexed?* → that's the expected first step, not a dead end: **index it**
20
+ — `project_index` (indexes the source in one call), then look up. Do NOT read
21
+ files or grep instead; there's no shortcut, the utility comes from the index.
22
+ - *which project?* → code tools act on ONE **current project**. Set it once for the
23
+ codebase you're in (`use_project <name>`, or it's inferred from `project_path` on
24
+ your first code call); reads then need no project args. To look up a **different**
25
+ project (a related codebase you're referencing), you MUST name it: `project=<name>`
26
+ or `project_path=<a path in that repo>`. (`project_path` ≠ your shell cwd — it just
27
+ says which repo you mean.)
28
+ E.g. not `grep -rn "def boolean"` then reading the file — `code_lookup "boolean path
29
+ union/difference"` → `code_dossier` the top hit. (When you finally *get* a tricky
30
+ symbol, `code_append <symbol> "…"` pins that understanding for next time.)
31
+ - **Persist durably.** When a durable fact emerges (a decision, convention, gotcha,
32
+ contract), `store` it — `lookup` first, `append`/`edit` over duplicating. **Name the
33
+ project it's ABOUT** (writes require an explicit `project=`/`project_path=` — they
34
+ won't inherit your current one): a fact about the repo you're in goes there, but
35
+ cross-cutting/tooling knowledge (a CLI, an editor, a shared convention) belongs in
36
+ `default` or that tool's own project. Say which project it landed in.
package/package.json CHANGED
@@ -1,12 +1,13 @@
1
1
  {
2
2
  "name": "@geohar/opencode-cribsheet",
3
- "version": "0.4.0",
3
+ "version": "0.5.1",
4
4
  "description": "OpenCode plugin: run the crib (cribsheet) memory + code-index MCP server via sharedserver, register its endpoint, inject the reach-for-crib directive, and ship the /crib command. Stands down when a combiner already serves crib.",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
7
7
  "types": "dist/index.d.ts",
8
8
  "files": [
9
9
  "dist",
10
+ "instructions.txt",
10
11
  "README.md",
11
12
  "LICENSE"
12
13
  ],
@@ -14,6 +15,7 @@
14
15
  "build": "tsc",
15
16
  "clean": "rm -rf dist",
16
17
  "typecheck": "tsc --noEmit",
18
+ "prepack": "node -e \"require('fs').copyFileSync('../../CLAUDE.md.example', './instructions.txt')\"",
17
19
  "prepublishOnly": "npm run clean && npm run build"
18
20
  },
19
21
  "keywords": [
@@ -32,12 +34,12 @@
32
34
  "repository": {
33
35
  "type": "git",
34
36
  "url": "git+https://github.com/georgeharker/cribsheet.git",
35
- "directory": "plugins/opencode-cribsheet"
37
+ "directory": "plugins/opencode"
36
38
  },
37
39
  "bugs": {
38
40
  "url": "https://github.com/georgeharker/cribsheet/issues"
39
41
  },
40
- "homepage": "https://github.com/georgeharker/cribsheet/tree/main/plugins/opencode-cribsheet#readme",
42
+ "homepage": "https://github.com/georgeharker/cribsheet/tree/main/plugins/opencode#readme",
41
43
  "publishConfig": {
42
44
  "access": "public"
43
45
  },