@cairnkeep/cli 2.6.0 → 2.7.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.
Files changed (60) hide show
  1. package/CHANGELOG.md +14 -1
  2. package/README.md +22 -8
  3. package/bin/cairn +15 -3
  4. package/claude/commands/graphify.md +46 -55
  5. package/docs/harness-compatibility.md +13 -5
  6. package/docs/learning/CURRICULUM-MAP.md +3 -1
  7. package/docs/learning/FEATURE-GUIDE.md +3 -2
  8. package/docs/learning/README.md +12 -12
  9. package/docs/learning/lessons/L00-why-cairnkeep.md +1 -5
  10. package/docs/learning/lessons/L01-safe-trial.md +3 -7
  11. package/docs/learning/lessons/L02-installation.md +6 -8
  12. package/docs/learning/lessons/L03-first-project.md +1 -5
  13. package/docs/learning/lessons/L04-memory-fundamentals.md +0 -6
  14. package/docs/learning/lessons/L05-daily-workflow.md +0 -5
  15. package/docs/learning/lessons/L06-repository-quality.md +0 -6
  16. package/docs/learning/lessons/L07-privacy-and-storage.md +0 -5
  17. package/docs/learning/lessons/L08-multiple-machines.md +0 -5
  18. package/docs/learning/lessons/L09-domain-knowledge.md +0 -5
  19. package/docs/learning/lessons/L10-context-exploration.md +0 -5
  20. package/docs/learning/lessons/L11-containers.md +0 -5
  21. package/docs/learning/lessons/L12-managed-overlays.md +0 -6
  22. package/docs/learning/lessons/L13-session-evidence.md +0 -6
  23. package/docs/learning/lessons/L14-typed-memory.md +0 -6
  24. package/docs/learning/lessons/L15-capability-governance.md +0 -6
  25. package/docs/learning/lessons/L16-evaluation.md +0 -7
  26. package/docs/learning/lessons/L17-agent-boundary.md +0 -6
  27. package/docs/learning/templates/lesson-template.md +0 -4
  28. package/docs/operating.md +79 -9
  29. package/docs/privacy-and-data-flow.md +1 -0
  30. package/examples/eval/bundled-fake.json +1 -1
  31. package/kimi/skills/graphify/SKILL.md +33 -0
  32. package/mcp-memory-server/dist/capability-registry.js +2 -2
  33. package/mcp-memory-server/dist/graph-cli.js +386 -0
  34. package/mcp-memory-server/package.json +2 -1
  35. package/opencode/command/graphify.md +48 -58
  36. package/package.json +2 -1
  37. package/pi/prompts/graphify.md +32 -0
  38. package/scripts/bootstrap.sh +2 -1
  39. package/scripts/completion.sh +17 -6
  40. package/scripts/smoke-bash32.sh +1 -0
  41. package/scripts/sync-kimi-assets.sh +77 -0
  42. package/scripts/sync-pi-assets.sh +52 -31
  43. package/scripts/test-bootstrap-untracked.sh +21 -0
  44. package/scripts/test-cli-dispatch.sh +4 -0
  45. package/scripts/test-completion.sh +5 -0
  46. package/scripts/test-graph-harness-adapters.sh +46 -0
  47. package/scripts/test-launcher-hooks.sh +4 -2
  48. package/scripts/test-learning-docs.sh +2 -9
  49. package/scripts/test-package-install.sh +6 -0
  50. package/scripts/test-trajectory-hooks.sh +5 -1
  51. package/scripts/test-uninstall.sh +12 -2
  52. package/scripts/uninstall.sh +11 -4
  53. package/templates/graph-policy.md.template +23 -4
  54. package/docs/learning/PRODUCTION-PLAN.md +0 -153
  55. package/docs/learning/instructor-guide.md +0 -66
  56. package/docs/learning/templates/video-script-template.md +0 -50
  57. package/docs/learning/video-scripts/L00-why-cairnkeep.md +0 -80
  58. package/docs/learning/video-scripts/L01-safe-trial.md +0 -78
  59. package/docs/learning/video-scripts/L02-installation.md +0 -97
  60. package/docs/learning/video-scripts/L03-first-project.md +0 -99
package/CHANGELOG.md CHANGED
@@ -5,6 +5,18 @@ All notable user-facing changes are documented here. This project follows
5
5
 
6
6
  ## [Unreleased]
7
7
 
8
+ ## [2.7.0] - 2026-08-02
9
+
10
+ ### Added
11
+
12
+ - Add a Cairnkeep-owned `cairn graph build|query|status|diff|explain|path`
13
+ workflow, matching Claude Code and OpenCode `/graphify` modes, shell
14
+ completion, local-only code indexing, atomic publication, and snapshot diffs
15
+ without installing Graphify-owned harness assets or re-indexing generated
16
+ graph artifacts; add thin Pi prompt and Kimi Skill adapters that expose
17
+ `/graphify` while delegating exclusively to `cairn graph`, with explicit sync,
18
+ uninstall, package, and shell-completion coverage.
19
+
8
20
  ## [2.6.0] - 2026-07-29
9
21
 
10
22
  ### Added
@@ -220,7 +232,8 @@ stored memories.
220
232
  - Preserve executable permissions and Bash 3.2 portability on macOS.
221
233
  - Add backup-first uninstall and SQLite-safe memory export/import guidance.
222
234
 
223
- [Unreleased]: https://github.com/cairnkeep/cairnkeep/compare/v2.6.0...HEAD
235
+ [Unreleased]: https://github.com/cairnkeep/cairnkeep/compare/v2.7.0...HEAD
236
+ [2.7.0]: https://github.com/cairnkeep/cairnkeep/compare/v2.6.0...v2.7.0
224
237
  [2.6.0]: https://github.com/cairnkeep/cairnkeep/compare/v2.5.0...v2.6.0
225
238
  [2.5.0]: https://github.com/cairnkeep/cairnkeep/compare/v2.4.0...v2.5.0
226
239
  [2.4.0]: https://github.com/cairnkeep/cairnkeep/compare/v2.3.1...v2.4.0
package/README.md CHANGED
@@ -14,12 +14,12 @@ Qwen Code, Pi, and other MCP clients).
14
14
 
15
15
  ## Status
16
16
 
17
- Shipped: the memory server, the `cairn` CLI (`bootstrap`, `memory-server`, `sync`, `sync-pi`,
17
+ Shipped: the memory server, the `cairn` CLI (`bootstrap`, `memory-server`, `sync`, `sync-pi`, `sync-kimi`,
18
18
  `doctor`, `trajectory`, `artifact`, `notes`, `memory`, `eval`, `audit-timer`, `completion`, `uninstall`) installable via
19
19
  `npm i -g @cairnkeep/cli`, and the
20
20
  operating layer (commands,
21
21
  agents, hooks) installed on Claude Code and OpenCode, plus a native Pi
22
- trajectory extension. The generic launchers
22
+ trajectory extension and thin Pi/Kimi graph adapters. The generic launchers
23
23
  expose wrapper seams (`.ai/pre-launch.sh`, `CAIRN_EXTRA_SETTINGS`,
24
24
  `.ai/post-exit.sh`) so an enterprise wrapper can add provider/credential setup
25
25
  without forking them. Also shipped: context exploration (`/context-explore`) and
@@ -37,13 +37,18 @@ and 20 are end-of-life upstream.
37
37
  |---|---|
38
38
  | Claude Code on Linux/macOS | Memory server plus commands, agents, hooks, and launchers |
39
39
  | OpenCode on Linux/macOS | Memory server plus commands, plugins, hooks, and launchers |
40
- | Kimi Code on Linux/macOS | Memory MCP server plus project launcher; no Cairnkeep operating-layer assets yet |
40
+ | Kimi Code on Linux/macOS | Memory MCP server, project launcher, and opt-in `/graphify` Skill |
41
41
  | Qwen Code on Linux/macOS | Memory MCP server plus project launcher; no Cairnkeep operating-layer assets yet |
42
- | Pi on Linux/macOS | Native opt-in trajectory extension and launcher; no bundled MCP bridge |
42
+ | Pi on Linux/macOS | Native opt-in trajectory extension, launcher, and `/graphify` prompt; no bundled MCP bridge |
43
43
  | Codex CLI | Memory MCP server; no Cairnkeep operating-layer assets |
44
44
  | Other MCP clients | Memory and optional domain-knowledge MCP tools |
45
45
  | Native Windows | Not supported by the Bash-based installer; use WSL (not yet CI-verified) |
46
46
 
47
+ The `cairn graph` CLI is harness-independent and can be run from a project
48
+ shell used by Kimi Code, Pi, Qwen Code, Codex, or another client. Claude Code,
49
+ OpenCode, Pi, and Kimi can receive thin `/graphify` adapters; those adapters do
50
+ not imply equivalent hooks, agents, or MCP support.
51
+
47
52
  Linux, macOS, Bash 3.2 portability, and clean Node 22/24/26 runtime checks
48
53
  are exercised in CI.
49
54
 
@@ -79,13 +84,17 @@ storage paths, secrets, and private derived images, see
79
84
  `cairn artifact list|show|delete|prune` manages opt-in local artifacts;
80
85
  `cairn eval validate|run|ablate|report|prune|delete` coordinates explicit
81
86
  local two-pass and one-capability-at-a-time measurements;
87
+ `cairn graph build|query|status|diff|explain|path` owns the local Graphify
88
+ workflow from any project shell without installing Graphify-owned harness
89
+ assets; Claude Code, OpenCode, Pi, and Kimi add thin `/graphify` wrappers;
82
90
  `cairn notes distill|search-error|promote|doctor` compiles and searches
83
91
  default-off local hindsight notes outside the online agent path;
84
92
  `cairn memory export|import` relocates the durable store between machines
85
93
  (`export` requires the optional `sqlite3` CLI);
86
94
  `cairn audit-timer` installs the scheduled memory+wiki audit;
87
95
  `cairn completion bash|zsh|fish` generates shell completion definitions; and
88
- `cairn sync-pi` installs the native Pi trajectory extension;
96
+ `cairn sync-pi` installs the native Pi trajectory extension and graph prompt;
97
+ `cairn sync-kimi` installs the Kimi graph Skill;
89
98
  `cairn uninstall` reverses the install (backup-first, revertible).
90
99
  - **`templates/`** — project scaffolding (generic launchers, env) plus the
91
100
  derived-knowledge layer (wiki, alignment, graph, security, planning).
@@ -160,6 +169,10 @@ configuration requires a literal URL and supports a token reference through
160
169
  `bearerTokenEnvVar`; it does not expand `${VAR}` in the URL. See
161
170
  [Harness compatibility](docs/harness-compatibility.md#kimi-code).
162
171
 
172
+ Install Kimi's thin graph Skill separately with `cairn sync-kimi --apply`.
173
+ It registers `/graphify` (also `/skill:graphify`) and delegates every supported
174
+ operation exclusively to `cairn graph`.
175
+
163
176
  For Qwen Code, use project `.qwen/settings.json`: local stdio launches
164
177
  `cairn memory-server`, while remote HTTP uses `httpUrl` and environment-expanded
165
178
  headers. Review and approve project MCP configuration with
@@ -174,9 +187,10 @@ cairn bootstrap /path/to/project
174
187
  cd /path/to/project && ./.ai/start-pi.sh
175
188
  ```
176
189
 
177
- This installs trajectory capture only. Cairnkeep does not bundle or select a Pi
178
- MCP bridge; configure a user-chosen bridge separately if you also want the MCP
179
- memory tools inside Pi.
190
+ This installs trajectory capture plus the thin `/graphify` prompt. The prompt
191
+ delegates exclusively to `cairn graph`. Cairnkeep does not bundle or select a
192
+ Pi MCP bridge; configure a user-chosen bridge separately if you also want the
193
+ MCP memory tools inside Pi.
180
194
 
181
195
  Closed trajectories can be compiled into local hindsight notes without a model
182
196
  or embedding service. Capture and distillation are separate opt-ins:
package/bin/cairn CHANGED
@@ -33,8 +33,11 @@ Usage:
33
33
  agents, hooks) into ~/.claude, or into DIR for a single
34
34
  project (--live-root <project>/.claude).
35
35
  cairn sync-pi [--apply] [--live-root DIR]
36
- Install/update the Pi trajectory extension into
37
- ~/.pi/agent, or into DIR for an isolated Pi root.
36
+ Install/update the Pi trajectory extension and thin
37
+ /graphify prompt into ~/.pi/agent or isolated DIR.
38
+ cairn sync-kimi [--apply] [--live-root DIR]
39
+ Install/update the thin Kimi /graphify Skill into
40
+ $KIMI_CODE_HOME, ~/.kimi-code, or isolated DIR.
38
41
  cairn doctor Health-check the memory server and configured LLM /
39
42
  embedding endpoints, git provider, and stores.
40
43
  Use --repair for derived trajectory/typed metadata,
@@ -56,6 +59,9 @@ Usage:
56
59
  cairn eval <validate|run|ablate|report|prune|delete>
57
60
  Validate or run default-off local evaluations, inspect
58
61
  reports, and manage retained experiment results.
62
+ cairn graph <build|query|status|diff|explain|path>
63
+ Build the local code graph, inspect freshness and
64
+ changes, or query exact symbols and paths.
59
65
  cairn memory <path|export|import>
60
66
  Relocate global-scope memory. `path` prints its location;
61
67
  `export <file.tgz>` takes a WAL-safe snapshot (requires
@@ -64,7 +70,7 @@ Usage:
64
70
  Install (opt-in) a systemd user timer that runs the
65
71
  memory+wiki audit on a schedule; prints a cron alternative.
66
72
  cairn uninstall [--dry-run] [--yes] [--purge-memory] [--live-root DIR]
67
- [--pi-live-root DIR] [PROJECT ...]
73
+ [--pi-live-root DIR] [--kimi-live-root DIR] [PROJECT ...]
68
74
  Reverse what cairnkeep installed/modified (operating
69
75
  layer, hook registrations, MCP registration, audit
70
76
  timer, and any given projects' bootstrap scaffold).
@@ -110,12 +116,18 @@ case "$cmd" in
110
116
  eval)
111
117
  exec node "$CAIRN_ROOT/mcp-memory-server/dist/eval-cli.js" "$@"
112
118
  ;;
119
+ graph)
120
+ exec node "$CAIRN_ROOT/mcp-memory-server/dist/graph-cli.js" "$@"
121
+ ;;
113
122
  sync)
114
123
  exec "$CAIRN_ROOT/scripts/sync-claude-assets.sh" "$@"
115
124
  ;;
116
125
  sync-pi)
117
126
  exec "$CAIRN_ROOT/scripts/sync-pi-assets.sh" "$@"
118
127
  ;;
128
+ sync-kimi)
129
+ exec "$CAIRN_ROOT/scripts/sync-kimi-assets.sh" "$@"
130
+ ;;
119
131
  audit-timer)
120
132
  exec "$CAIRN_ROOT/scripts/install-audit-timer.sh" "$@"
121
133
  ;;
@@ -1,12 +1,14 @@
1
1
  ---
2
2
  description: "Build, rebuild, query, and inspect the project knowledge graph in .planning/graphs/"
3
- argument-hint: "[build [--force]|query <term>|status|diff]"
3
+ argument-hint: "[build [--force]|query <term>|explain <symbol>|path <from> <to>|status|diff]"
4
4
  allowed-tools: Read, Bash
5
5
  ---
6
6
 
7
7
  **STOP -- DO NOT READ THIS FILE. You are already reading it. This prompt was injected into your context by Claude Code's command system. Using the Read tool on this file wastes tokens. Begin executing Step 0 immediately.**
8
8
 
9
- **graphify CLI:** the `graphify` subcommand is exposed by `gsd-tools` (on PATH). Invoke as `gsd-tools graphify …` as documented in this command and in `docs/CLI-TOOLS.md`. Other GSD queries use `gsd-tools <subcmd>` where a handler exists.
9
+ **graph workflow:** Cairnkeep owns this surface through `cairn graph`. The
10
+ operator installs only the isolated `graphify` executable; do not invoke
11
+ Graphify's harness installer.
10
12
 
11
13
  ## Step 0 -- Banner
12
14
 
@@ -18,29 +20,13 @@ GRAPHIFY
18
20
 
19
21
  Then proceed to Step 1.
20
22
 
21
- ## Step 1 -- Config Gate
23
+ ## Step 1 -- Capability ownership
22
24
 
23
- Check if graphify is enabled by reading `.planning/config.json` directly using the Read tool.
24
-
25
- **DO NOT use the gsd-tools config get-value command** -- it hard-exits on missing keys.
26
-
27
- 1. Read `.planning/config.json` using the Read tool
28
- 2. If the file does not exist: display the disabled message below and **STOP**
29
- 3. Parse the JSON content. Check if `config.graphify && config.graphify.enabled === true`
30
- 4. If `graphify.enabled` is NOT explicitly `true`: display the disabled message below and **STOP**
31
- 5. If `graphify.enabled` is `true`: proceed to Step 2
32
-
33
- **Disabled message:**
34
-
35
- ```
36
- GRAPHIFY
37
-
38
- Knowledge graph is disabled. To activate:
39
-
40
- gsd-tools config-set graphify.enabled true
41
-
42
- Then run /graphify build to create the initial graph.
43
- ```
25
+ Do not implement a separate configuration gate in the prompt. Every
26
+ `cairn graph` operation enforces the typed `graph` capability and its legacy
27
+ `graphify.enabled` compatibility default before Graphify or graph-file I/O.
28
+ Proceed directly to Step 2; if the owner reports a disabled capability, display
29
+ its fixed remediation message and **STOP**.
44
30
 
45
31
  ---
46
32
 
@@ -52,6 +38,8 @@ Parse `$ARGUMENTS` to determine the operation mode:
52
38
  |----------|--------|
53
39
  | `build` or `build --force` | Run inline build (Step 3) |
54
40
  | `query <term>` | Run inline query (Step 2a) |
41
+ | `explain <symbol>` | Explain one exact symbol (Step 2d) |
42
+ | `path <from> <to>` | Find the shortest path between two exact symbols (Step 2e) |
55
43
  | `status` | Run inline status check (Step 2b) |
56
44
  | `diff` | Run inline diff check (Step 2c) |
57
45
  | No argument or unknown | Show usage message |
@@ -66,6 +54,8 @@ Usage: /graphify <mode>
66
54
  Modes:
67
55
  build [--force] Build or rebuild the knowledge graph
68
56
  query <term> Search the graph for a term
57
+ explain <symbol> Explain one exact symbol and its relationships
58
+ path <from> <to> Find the shortest path between two exact symbols
69
59
  status Show graph freshness and statistics
70
60
  diff Show changes since last build
71
61
  ```
@@ -75,28 +65,39 @@ Modes:
75
65
  Run:
76
66
 
77
67
  ```bash
78
- gsd-tools graphify query <term>
68
+ cairn graph query <term>
79
69
  ```
80
70
 
81
- Parse the JSON output and display results:
82
- - If the output contains `"disabled": true`, display the disabled message from Step 1 and **STOP**
83
- - If the output contains `"error"` field, display the error message and **STOP**
84
- - If no nodes found, display: `No graph matches for '<term>'. Try /graphify build to create or rebuild the graph.`
85
- - Otherwise, display matched nodes grouped by type, with edge relationships and confidence tiers (EXTRACTED/INFERRED/AMBIGUOUS)
71
+ Pass the parsed term as exactly one argument and display the result verbatim.
72
+ On failure, display the error without retrying or changing configuration.
86
73
 
87
74
  **STOP** after displaying results. Do not spawn an agent.
88
75
 
76
+ ### Step 2d -- Explain
77
+
78
+ Run `cairn graph explain <symbol>`, passing the parsed symbol as exactly one
79
+ argument. Display Graphify's explanation verbatim. On failure, display the
80
+ error and suggest `/graphify build` only when the published graph is missing.
81
+
82
+ **STOP** after displaying the result. Do not spawn an agent.
83
+
84
+ ### Step 2e -- Path
85
+
86
+ Run `cairn graph path <from> <to>`, passing each parsed symbol as exactly one
87
+ argument. Display Graphify's path result verbatim. On failure, display the
88
+ error and suggest `/graphify build` only when the published graph is missing.
89
+
90
+ **STOP** after displaying the result. Do not spawn an agent.
91
+
89
92
  ### Step 2b -- Status
90
93
 
91
94
  Run:
92
95
 
93
96
  ```bash
94
- gsd-tools graphify status
97
+ cairn graph status
95
98
  ```
96
99
 
97
- Parse the JSON output and display:
98
- - If `exists: false`, display the message field
99
- - Otherwise show last build time, node/edge/hyperedge counts, and STALE or FRESH indicator
100
+ Display the local node/edge counts and freshness result verbatim.
100
101
 
101
102
  **STOP** after displaying status. Do not spawn an agent.
102
103
 
@@ -105,14 +106,11 @@ Parse the JSON output and display:
105
106
  Run:
106
107
 
107
108
  ```bash
108
- gsd-tools graphify diff
109
+ cairn graph diff
109
110
  ```
110
111
 
111
- Parse the JSON output and display:
112
- - If `no_baseline: true`, display the message field
113
- - Otherwise show node and edge change counts (added/removed/changed)
114
-
115
- If no snapshot exists, suggest running `build` twice (first to create, second to generate a diff baseline).
112
+ Display the node and edge change counts verbatim. If no snapshot exists,
113
+ suggest rebuilding after the next code change.
116
114
 
117
115
  **STOP** after displaying diff. Do not spawn an agent.
118
116
 
@@ -123,20 +121,14 @@ If no snapshot exists, suggest running `build` twice (first to create, second to
123
121
  Run:
124
122
 
125
123
  ```bash
126
- gsd-tools graphify build [--force]
124
+ cairn graph build [--force]
127
125
  ```
128
126
 
129
- Parse the JSON output and display:
130
- - If the output contains `"disabled": true`, display the disabled message from Step 1 and **STOP**
131
- - If the output contains an `"error"` field, display the error and the `stage` field when present, then **STOP**
132
- - Otherwise display the build summary using `status.last_build`, `status.node_count`, `status.edge_count`, `status.hyperedge_count`, whether the snapshot was saved, and whether a forced clean rebuild was used
133
-
134
- This command now performs the full pipeline directly:
135
- - runs `graphify update .` with legacy fallback to `graphify . --update`
136
- - when `--force` is present, clears `graphify-out/`, published graph artifacts, and `.planning/graphs/.last-build-snapshot.json` first
137
- - validates `graphify-out/graph.json`
138
- - copies `graph.json`, `graph.html`, and `GRAPH_REPORT.md` into `.planning/graphs/`
139
- - writes `.planning/graphs/.last-build-snapshot.json`
127
+ Display the build summary verbatim. This managed path runs Graphify's local
128
+ code-only `update`, strips provider credentials from its subprocess
129
+ environment, validates the resulting graph, atomically publishes available
130
+ artifacts into `.planning/graphs/`, and snapshots the previous graph for diff.
131
+ `--force` permits a rebuilt graph with fewer nodes after code deletion.
140
132
 
141
133
  **STOP** after displaying the build result. Do not spawn an agent.
142
134
 
@@ -144,7 +136,6 @@ This command now performs the full pipeline directly:
144
136
 
145
137
  ## Anti-Patterns
146
138
 
147
- 1. DO NOT spawn an agent for graphify operations -- build/query/status/diff are handled directly
139
+ 1. DO NOT spawn an agent for graphify operations -- build/query/explain/path/status/diff are handled directly
148
140
  2. DO NOT modify graph files directly outside the graphify CLI path
149
- 3. DO NOT skip the config gate check
150
- 4. DO NOT use gsd-tools config get-value for the config gate -- it exits on missing keys
141
+ 3. DO NOT duplicate capability parsing in the prompt -- `cairn graph` owns it
@@ -10,16 +10,24 @@ commands, hooks, plugins, or trajectory adapters.
10
10
  |---|---|---|
11
11
  | Claude Code | Memory MCP, commands, agents, hooks, launcher | Exercised by Cairnkeep tests |
12
12
  | OpenCode | Memory MCP, commands, workflows, plugins, launcher | Exercised by Cairnkeep tests |
13
- | Kimi Code | Memory MCP, `AGENTS.md`, launcher | Launcher tested; remote MCP tested with Kimi Code 0.30.0 |
13
+ | Kimi Code | Memory MCP, `AGENTS.md`, launcher, opt-in graph Skill | Launcher tested; remote MCP tested with Kimi Code 0.30.0; graph Skill contract-tested |
14
14
  | Qwen Code | Memory MCP, launcher | Launcher tested; stdio and remote MCP tested with Qwen Code 0.21.1 |
15
- | Pi | Native opt-in trajectory extension and launcher | Exercised by Cairnkeep tests; no bundled MCP bridge |
15
+ | Pi | Native opt-in trajectory extension, launcher, and graph prompt | Exercised by Cairnkeep tests; no bundled MCP bridge |
16
16
  | Codex CLI | Memory MCP | Configuration supported; no Cairnkeep operating-layer assets or launcher |
17
17
  | Other MCP clients | Memory and optional domain-knowledge tools | Protocol-compatible; not automatically runtime-tested |
18
18
 
19
19
  Only Claude Code and OpenCode currently receive the complete operating layer.
20
- Kimi and Qwen skills and hooks require harness-specific adaptation and
21
- validation before they can be presented as equivalent. In either client, call
22
- MCP tools directly or use ordinary prompts until that work is complete.
20
+ Kimi receives one narrow graph Skill, while Pi receives one narrow graph prompt;
21
+ neither is equivalent to the full commands, agents, hooks, and plugins surface.
22
+ Qwen skills and hooks still require harness-specific adaptation and validation.
23
+
24
+ `cairn graph` is a separate, harness-independent project-shell CLI. Kimi Code,
25
+ Pi, Qwen Code, Codex, and other shell-capable clients can invoke
26
+ `cairn graph build|query|status|diff|explain|path` when `cairn` and the isolated
27
+ `graphify` executable are on `PATH`. `cairn sync-kimi --apply` registers a Kimi
28
+ Skill as `/graphify` (or `/skill:graphify`), and `cairn sync-pi --apply`
29
+ registers a Pi prompt template as `/graphify`; both delegate exclusively to
30
+ that CLI. Neither adds an MCP bridge to Pi or expands the other support levels.
23
31
 
24
32
  ## Kimi Code
25
33
 
@@ -1,6 +1,6 @@
1
1
  # Curriculum Coverage Map
2
2
 
3
- **Baseline:** Cairnkeep 2.6.0
3
+ **Baseline:** Cairnkeep 2.7.0
4
4
  **Last reviewed:** 2026-07-29
5
5
 
6
6
  This map prevents the course from drifting behind the product. It assigns each
@@ -70,12 +70,14 @@ against `cairn help` so a new command cannot bypass a curriculum decision.
70
70
  | `cairn memory-server` | L02 |
71
71
  | `cairn sync` | L02 |
72
72
  | `cairn sync-pi` | L13 |
73
+ | `cairn sync-kimi` | L02 |
73
74
  | `cairn doctor` | L03; advanced repair in L13-L14 |
74
75
  | `cairn trajectory` | L13 |
75
76
  | `cairn artifact` | L13 |
76
77
  | `cairn capabilities` | L15 |
77
78
  | `cairn notes` | L13 |
78
79
  | `cairn eval` | L16 |
80
+ | `cairn graph` | L05-L06 |
79
81
  | `cairn memory` | L07-L08 |
80
82
  | `cairn audit-timer` | L05 and L13 |
81
83
  | `cairn uninstall` | L02 and L11-L12 |
@@ -1,6 +1,6 @@
1
1
  # Cairnkeep feature guide
2
2
 
3
- **Baseline:** Cairnkeep 2.6.0
3
+ **Baseline:** Cairnkeep 2.7.0
4
4
 
5
5
  This is the step-back map for choosing and operating Cairnkeep features. The
6
6
  [course labs](https://github.com/cairnkeep/cairnkeep-course-labs) provide one
@@ -76,7 +76,8 @@ prerequisites for ordinary memory.
76
76
 
77
77
  - Use a generated launcher so project environment and hooks are repeatable.
78
78
  - Run `cairn sync --check` after every core upgrade; apply only reported drift.
79
- - Run `cairn sync-pi --check` when the optional Pi capture adapter is installed.
79
+ - Run `cairn sync-pi --check` when the optional Pi capture/graph adapter is installed.
80
+ - Run `cairn sync-kimi --check` when the optional Kimi graph Skill is installed.
80
81
  - Use `cairn doctor --repair` only after preserving the affected store and only
81
82
  for repairable derived indexes/metadata.
82
83
  - Use `cairn uninstall --dry-run` before uninstall; durable memory is retained
@@ -1,8 +1,8 @@
1
1
  # Learn Cairnkeep
2
2
 
3
- This learning path teaches Cairnkeep through small, verifiable outcomes. The
4
- canonical lesson is written once and can be reused as a guide, blog post,
5
- workshop handout, or video script.
3
+ This public learning path teaches Cairnkeep through small, verifiable outcomes.
4
+ It is the technical source for guides, workshops, and independently reviewed
5
+ publication material.
6
6
 
7
7
  ## Start here
8
8
 
@@ -22,9 +22,9 @@ The public [course labs](https://github.com/cairnkeep/cairnkeep-course-labs)
22
22
  provide one synthetic project with tagged checkpoints shared by lessons,
23
23
  articles, workshops, and videos.
24
24
 
25
- Lessons marked **Ready** include a complete exercise and presenter script.
26
- Lessons marked **Brief** define outcomes and acceptance criteria and will be
27
- expanded according to the [production plan](PRODUCTION-PLAN.md).
25
+ Lessons marked **Ready** include a complete, release-verified exercise. Lessons
26
+ marked **Brief** define public outcomes and acceptance criteria and will be
27
+ expanded only after their labs are executable.
28
28
 
29
29
  ## Curriculum
30
30
 
@@ -62,7 +62,7 @@ Every complete lesson contains:
62
62
  3. A hands-on exercise using non-sensitive sample data.
63
63
  4. Verification and recovery steps.
64
64
  5. A privacy or security boundary.
65
- 6. A presenter-ready video script.
65
+ 6. Release compatibility metadata for completed exercises.
66
66
 
67
67
  The learner should never need optional infrastructure to complete L00-L06.
68
68
  Remote memory, RAG, routing, containers, structured capture, typed nodes,
@@ -70,8 +70,8 @@ capability governance, and evaluation are separate opt-in modules.
70
70
 
71
71
  ## For contributors
72
72
 
73
- Use [the lesson template](templates/lesson-template.md) and
74
- [the video template](templates/video-script-template.md). The
75
- [instructor guide](instructor-guide.md) defines rehearsal, recording, and
76
- publication checks. Commands in finished lessons must be tested against the
77
- current release before publication.
73
+ Use [the lesson template](templates/lesson-template.md). Commands in finished
74
+ lessons must be tested against the current release before publication.
75
+ Unpublished editorial plans and recording scripts are intentionally maintained
76
+ outside the public product repository; stable video links or transcripts can
77
+ be added here after publication.
@@ -3,7 +3,7 @@
3
3
  **Status:** Ready
4
4
  **Track:** Quickstart
5
5
  **Time:** 10 minutes
6
- **Tested with:** Cairnkeep 2.6.0
6
+ **Tested with:** Cairnkeep 2.7.0
7
7
 
8
8
  ## Outcome
9
9
 
@@ -93,7 +93,3 @@ configuration and are taught later.
93
93
  - Optional services are not prerequisites.
94
94
 
95
95
  Next: [L01 - Try it safely](L01-safe-trial.md).
96
-
97
- ## Video
98
-
99
- Use [the L00 presenter script](../video-scripts/L00-why-cairnkeep.md).
@@ -3,7 +3,7 @@
3
3
  **Status:** Ready
4
4
  **Track:** Quickstart
5
5
  **Time:** 15 minutes
6
- **Tested with:** Cairnkeep 2.6.0
6
+ **Tested with:** Cairnkeep 2.7.0
7
7
 
8
8
  ## Outcome
9
9
 
@@ -26,7 +26,7 @@ ephemeral; the named course volume is persistent.
26
26
  1. Pull the public image:
27
27
 
28
28
  ```bash
29
- podman pull ghcr.io/cairnkeep/cairnkeep:2.6.0
29
+ podman pull ghcr.io/cairnkeep/cairnkeep:2.7.0
30
30
  ```
31
31
 
32
32
  2. Start the stdio server with a read-only root filesystem and no Linux
@@ -38,7 +38,7 @@ ephemeral; the named course volume is persistent.
38
38
  --read-only --cap-drop=all --security-opt=no-new-privileges \
39
39
  --tmpfs=/tmp:rw,noexec,nosuid,size=64m,mode=1777 \
40
40
  --volume cairnkeep-course-data:/data:Z,U \
41
- ghcr.io/cairnkeep/cairnkeep:2.6.0 stdio
41
+ ghcr.io/cairnkeep/cairnkeep:2.7.0 stdio
42
42
  ```
43
43
 
44
44
  3. The process waits quietly for MCP input. Press `Ctrl-C` after confirming it
@@ -90,7 +90,3 @@ podman volume rm cairnkeep-course-data
90
90
  - Persistence belongs to an explicitly named volume.
91
91
 
92
92
  Next: [L02 - Install the local workflow](L02-installation.md).
93
-
94
- ## Video
95
-
96
- Use [the L01 presenter script](../video-scripts/L01-safe-trial.md).
@@ -3,7 +3,7 @@
3
3
  **Status:** Ready
4
4
  **Track:** Quickstart
5
5
  **Time:** 25 minutes
6
- **Tested with:** Cairnkeep 2.6.0 and Node.js 22 or newer
6
+ **Tested with:** Cairnkeep 2.7.0 and Node.js 22 or newer
7
7
 
8
8
  ## Outcome
9
9
 
@@ -41,7 +41,7 @@ machine-level steps.
41
41
  2. Install Cairnkeep:
42
42
 
43
43
  ```bash
44
- npm install --global @cairnkeep/cli@2.6.0
44
+ npm install --global @cairnkeep/cli@2.7.0
45
45
  cairn --version
46
46
  ```
47
47
 
@@ -99,14 +99,16 @@ installation.
99
99
  This registration starts `cairn memory-server` locally as a stdio child. It
100
100
  does not discover a server, send memory to a remote host, configure embeddings,
101
101
  enable session capture, or enable an optional document-RAG integration. Pi uses
102
- the separate `cairn sync-pi` trajectory adapter and still needs a user-selected
103
- bridge if Pi should expose MCP memory tools.
102
+ the separate `cairn sync-pi` trajectory and graph-prompt adapter and still needs
103
+ a user-selected bridge if Pi should expose MCP memory tools.
104
104
 
105
105
  Kimi Code can use the same memory server through its generated
106
106
  `.ai/start-kimi.sh` launcher, but its HTTP MCP configuration requires a literal
107
107
  URL rather than `${CAIRN_MEMORY_REMOTE_URL}`. Keep the resolved URL in a private
108
108
  `.kimi-code/mcp.json` and keep the bearer token in the environment. See
109
109
  [Harness compatibility](../../harness-compatibility.md#kimi-code).
110
+ Its optional `cairn sync-kimi` Skill adds only the local `/graphify` delegate;
111
+ it does not change memory transport or send graph data to a new destination.
110
112
 
111
113
  Qwen Code can use the generated `.ai/start-qwen.sh` launcher. Its project
112
114
  `.qwen/settings.json` supports environment references for both the remote URL
@@ -135,7 +137,3 @@ Do not delete memory stores as part of a course cleanup.
135
137
  - Default stdio memory is local.
136
138
 
137
139
  Next: [L03 - Bootstrap the first project](L03-first-project.md).
138
-
139
- ## Video
140
-
141
- Use [the L02 presenter script](../video-scripts/L02-installation.md).
@@ -3,7 +3,7 @@
3
3
  **Status:** Ready
4
4
  **Track:** Quickstart
5
5
  **Time:** 25 minutes
6
- **Tested with:** Cairnkeep 2.6.0
6
+ **Tested with:** Cairnkeep 2.7.0
7
7
 
8
8
  ## Outcome
9
9
 
@@ -115,7 +115,3 @@ inspect `.git/info/exclude` to see how contributor mode avoids shared changes.
115
115
  - Persistence is proven only after a new session recalls the accepted fact.
116
116
 
117
117
  Next: [L04 - Memory fundamentals](L04-memory-fundamentals.md).
118
-
119
- ## Video
120
-
121
- Use [the L03 presenter script](../video-scripts/L03-first-project.md).
@@ -35,12 +35,6 @@ candidate.
35
35
  - No extracted candidate becomes durable without an explicit review action.
36
36
  - Enabling typed nodes changes discovery structure, not the authority of a fact.
37
37
 
38
- ## Planned video
39
-
40
- Open with two contradictory memories, demonstrate search and superseding, then
41
- finish with the review queue. Target 12-15 minutes. Write the complete script in
42
- Wave 2 after the lab fixture is executable.
43
-
44
38
  ## Source material
45
39
 
46
40
  - [Operating guide](../../operating.md#the-workflow)
@@ -35,11 +35,6 @@ queue before exiting.
35
35
  - The learner can describe what to do at session start, before editing, and at
36
36
  session end.
37
37
 
38
- ## Planned video
39
-
40
- Follow one small feature from session start to reviewed handoff. Target 15
41
- minutes and split wiki maintenance into a second video if rehearsal runs long.
42
-
43
38
  ## Source material
44
39
 
45
40
  - [Operating guide](../../operating.md#the-workflow)
@@ -33,12 +33,6 @@ solution branch.
33
33
  - No scan reaches outside the disposable repository or its local processes.
34
34
  - The lab passes after remediation and fails in its tagged starter state.
35
35
 
36
- ## Planned video
37
-
38
- This is the flagship value demonstration. Show one serious synthetic defect
39
- from discovery through validation and fix. Target 15 minutes; publish the full
40
- 45-minute exercise as a workshop.
41
-
42
36
  ## Source material
43
37
 
44
38
  - [Operating guide](../../operating.md#the-workflow)
@@ -34,11 +34,6 @@ names, and prove that no remote destination was discovered.
34
34
  - The learner can stop when an effective destination is ambiguous.
35
35
  - Independent feature flags are not treated as one blanket consent switch.
36
36
 
37
- ## Planned video
38
-
39
- Use two simple diagrams and one terminal preflight. Target 10 minutes. Do not
40
- demonstrate real endpoints or credentials.
41
-
42
37
  ## Source material
43
38
 
44
39
  - [Privacy and data flow](../../privacy-and-data-flow.md)
@@ -31,11 +31,6 @@ the pre-import backup.
31
31
  - The learner verifies counts and exact synthetic values on both sides.
32
32
  - No remote service is introduced merely to complete the migration lab.
33
33
 
34
- ## Planned video
35
-
36
- Record the backup, migration, verification, and rollback without cuts that hide
37
- state transitions. Target 12 minutes.
38
-
39
34
  ## Source material
40
35
 
41
36
  - [Storage and deployment](../../storage.md#inspecting-and-moving-memory)
@@ -32,11 +32,6 @@ verify the new answer. Then unset the integration and prove memory still works.
32
32
  - Updated content replaces stale retrieval results.
33
33
  - Disabling RAG leaves `/remember` and `/recall` healthy.
34
34
 
35
- ## Planned video
36
-
37
- Lead with “optional, not required”, show query then sync, and finish by disabling
38
- the integration. Target 12 minutes.
39
-
40
35
  ## Source material
41
36
 
42
37
  - [Domain knowledge](../../domain-knowledge.md)