@kontextmind/kxm 0.7.95 → 0.7.97

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 (158) hide show
  1. package/.claude-plugin/marketplace.json +1 -1
  2. package/.kxm/README.md +39 -9
  3. package/CHANGELOG.md +23 -1
  4. package/README.md +147 -257
  5. package/SECURITY.md +21 -12
  6. package/docs/README.md +133 -54
  7. package/docs/adr/ADR-0002-browser-automation-steel-doks.md +24 -18
  8. package/docs/adr/ADR-0003-sqlite-only-store.md +100 -0
  9. package/docs/adr/ADR-0004-edge-identity-authentik.md +99 -0
  10. package/docs/adr/README.md +33 -0
  11. package/docs/concepts/architecture.md +262 -0
  12. package/docs/concepts/data-and-storage.md +194 -0
  13. package/docs/concepts/trust-model.md +153 -0
  14. package/docs/contracts/README.md +22 -14
  15. package/docs/contracts/effects-and-recovery.md +3 -0
  16. package/docs/contracts/migration.md +2 -2
  17. package/docs/contracts/routing.md +6 -5
  18. package/docs/contributing/assignment-runner.md +388 -0
  19. package/docs/contributing/ci-and-release.md +231 -0
  20. package/docs/contributing/development.md +362 -0
  21. package/docs/contributing/harness-routing-internals.md +192 -0
  22. package/docs/{packages.md → contributing/packages.md} +13 -15
  23. package/docs/{skills → contributing}/repo-work-delivery.md +20 -21
  24. package/docs/contributing/test-matrix.md +208 -0
  25. package/docs/{tui-components.md → contributing/tui-components.md} +30 -22
  26. package/docs/contributing/writing-docs.md +340 -0
  27. package/docs/glossary.md +471 -0
  28. package/docs/guides/agent-skills.md +137 -0
  29. package/docs/guides/browser-automation.md +160 -0
  30. package/docs/guides/context-and-memory.md +352 -0
  31. package/docs/guides/continuous-improvement.md +228 -0
  32. package/docs/guides/governed-skills.md +173 -0
  33. package/docs/guides/nous-providers.md +186 -0
  34. package/docs/guides/peer-messaging.md +304 -0
  35. package/docs/guides/pi-workers.md +219 -0
  36. package/docs/guides/provenance-gates.md +313 -0
  37. package/docs/guides/webhook-workflows.md +399 -0
  38. package/docs/kb/how-credentials-retrieved-safely.md +38 -12
  39. package/docs/kb/how-to-capture-and-annotate-section.md +15 -13
  40. package/docs/kb/how-to-connect-playwright-to-steel.md +16 -11
  41. package/docs/kb/how-to-recover-expired-session-or-orphan.md +26 -16
  42. package/docs/kb/how-to-resume-after-mfa.md +19 -11
  43. package/docs/kb/how-to-take-over-session.md +17 -13
  44. package/docs/kb/why-authentication-disappeared.md +22 -14
  45. package/docs/kb/why-automation-opened-different-browser.md +23 -14
  46. package/docs/kb/why-session-viewer-cannot-control.md +13 -12
  47. package/docs/operations/backup-and-restore.md +248 -0
  48. package/docs/operations/deploy.md +307 -0
  49. package/docs/operations/monitoring.md +209 -0
  50. package/docs/operations/runtime-sync.md +192 -0
  51. package/docs/operations/troubleshooting.md +266 -0
  52. package/docs/operations/upgrade.md +124 -0
  53. package/docs/prompts/browser-annotate-feedback.md +7 -7
  54. package/docs/prompts/browser-diagnose-recover.md +11 -10
  55. package/docs/prompts/browser-explore.md +7 -7
  56. package/docs/prompts/browser-repro-fix.md +7 -7
  57. package/docs/prompts/browser-start.md +12 -11
  58. package/docs/prompts/browser-takeover.md +8 -8
  59. package/docs/{cli-reference.md → reference/cli-reference.md} +88 -46
  60. package/docs/{config-reference.md → reference/config-reference.md} +159 -148
  61. package/docs/reference/configuration.md +299 -0
  62. package/docs/reference/harness-routing.md +508 -0
  63. package/docs/reference/http-api.md +203 -0
  64. package/docs/reference/tools.md +370 -0
  65. package/docs/{workflow-guide.md → reference/workflow-catalog.md} +92 -153
  66. package/docs/reference/workflow-definitions.md +286 -0
  67. package/docs/start/first-workflow.md +287 -0
  68. package/docs/start/install.md +146 -0
  69. package/docs/start/quickstart-claude-code.md +405 -0
  70. package/docs/start/quickstart-pi.md +213 -0
  71. package/docs/templates/README.md +78 -73
  72. package/docs/templates/adr.md +13 -13
  73. package/docs/templates/architecture.md +55 -71
  74. package/docs/templates/bug-fix.md +13 -16
  75. package/docs/templates/feature.md +14 -19
  76. package/docs/templates/handoff.md +44 -46
  77. package/docs/templates/postmortem.md +30 -43
  78. package/docs/templates/research.md +15 -20
  79. package/docs/templates/review.md +49 -50
  80. package/docs/templates/runbook.md +38 -30
  81. package/docs/templates/test-plan.md +16 -23
  82. package/docs/templates/test-report.md +14 -17
  83. package/examples/README.md +9 -5
  84. package/examples/provenance-workflow.json +1 -1
  85. package/examples/webhook-workflows/jira-development.json +59 -0
  86. package/examples/webhook-workflows/jira-issue-updated.json +12 -0
  87. package/examples/workflow-signal.ts +4 -5
  88. package/package.json +1 -1
  89. package/packages/core/tui/README.md +1 -1
  90. package/plugins/kxm/.claude-plugin/plugin.json +1 -1
  91. package/plugins/kxm/README.md +31 -32
  92. package/plugins/kxm/dist/claude-hook.js +11 -1
  93. package/plugins/kxm/dist/cli.js +164 -79
  94. package/plugins/kxm/dist/client.js +3 -1
  95. package/plugins/kxm/dist/core.js +11 -1
  96. package/plugins/kxm/dist/extension.js +45 -13
  97. package/plugins/kxm/dist/mcp-server.js +20 -4
  98. package/plugins/kxm/dist/runtime-supervisor.js +1 -3
  99. package/plugins/kxm/dist/runtime.js +18 -4
  100. package/plugins/kxm/dist/server.js +115 -20
  101. package/plugins/kxm/package.json +1 -1
  102. package/plugins/kxm/skills/kxm/references/protocol.md +3 -1
  103. package/plugins/kxm/skills/kxm-browser-auth/SKILL.md +1 -1
  104. package/plugins/kxm/skills/kxm-browser-diagnostics/SKILL.md +5 -5
  105. package/plugins/kxm/skills/kxm-browser-explore/SKILL.md +2 -2
  106. package/plugins/kxm/skills/kxm-browser-session/SKILL.md +10 -13
  107. package/plugins/kxm/skills/kxm-browser-takeover/SKILL.md +1 -1
  108. package/plugins/kxm/skills/kxm-browser-verify/SKILL.md +1 -1
  109. package/plugins/kxm/skills/kxm-context-memory/SKILL.md +13 -4
  110. package/plugins/kxm/skills/kxm-hub-ops/SKILL.md +3 -1
  111. package/plugins/kxm/skills/kxm-mind-setup/SKILL.md +2 -1
  112. package/plugins/kxm/skills/kxm-project-setup/SKILL.md +31 -54
  113. package/plugins/kxm/skills/kxm-projects/SKILL.md +1 -1
  114. package/plugins/kxm/skills/kxm-protocol/SKILL.md +1 -1
  115. package/plugins/kxm/skills/kxm-routing-improve/SKILL.md +15 -7
  116. package/plugins/kxm/skills/kxm-runs/SKILL.md +11 -5
  117. package/plugins/kxm/skills/kxm-session/SKILL.md +1 -1
  118. package/plugins/kxm/skills/kxm-tasks/SKILL.md +9 -7
  119. package/plugins/kxm/skills/kxm-workflow/SKILL.md +10 -2
  120. package/plugins/kxm/src/cli/system.ts +1 -1
  121. package/plugins/kxm/src/cli/workflows.ts +12 -7
  122. package/plugins/kxm/src/cli.ts +22 -8
  123. package/plugins/kxm/src/client.ts +4 -0
  124. package/plugins/kxm/src/commands.ts +23 -1
  125. package/plugins/kxm/src/extension.ts +20 -14
  126. package/plugins/kxm/src/github-watch.ts +8 -5
  127. package/plugins/kxm/src/hub-env.ts +19 -1
  128. package/plugins/kxm/src/hub.ts +105 -21
  129. package/plugins/kxm/src/improve-sources.ts +2 -7
  130. package/plugins/kxm/src/init-guide-setup.ts +1 -1
  131. package/plugins/kxm/src/mcp-server.ts +9 -2
  132. package/plugins/kxm/src/modes.ts +1 -1
  133. package/plugins/kxm/src/runtime-store.ts +23 -0
  134. package/plugins/kxm/src/workflow.ts +70 -1
  135. package/schemas/README.md +1 -1
  136. package/scripts/smoke-multi-pi.mjs +5 -1
  137. package/docs/agent-communication-envelopes-and-gates.md +0 -553
  138. package/docs/agent-skills.md +0 -198
  139. package/docs/architecture.md +0 -245
  140. package/docs/assignment-runner.md +0 -264
  141. package/docs/browser-automation.md +0 -139
  142. package/docs/configuration.md +0 -437
  143. package/docs/continuous-improvement.md +0 -226
  144. package/docs/getting-started.md +0 -277
  145. package/docs/harness-routing.md +0 -616
  146. package/docs/kb/qa-authentik-authentication.md +0 -97
  147. package/docs/kb/qa-extension-install-and-hub-bootstrap.md +0 -85
  148. package/docs/kb/qa-hub-on-a-public-host.md +0 -48
  149. package/docs/kb/qa-sqlite-vs-duckdb.md +0 -35
  150. package/docs/kb/qa-what-the-hub-stores.md +0 -64
  151. package/docs/kxm-handbook.md +0 -1181
  152. package/docs/operations.md +0 -510
  153. package/docs/operator-pi-packages.md +0 -67
  154. package/docs/provenance-gates.md +0 -295
  155. package/docs/skills.md +0 -47
  156. package/docs/test-matrix.md +0 -132
  157. package/docs/troubleshooting.md +0 -322
  158. package/docs/webhook-workflows.md +0 -240
@@ -0,0 +1,471 @@
1
+ # Glossary
2
+
3
+ This page defines the words KXM uses in its docs, CLI help and tools, and separates the ones that are easy to confuse, such as a hub workflow run and a Runtime run. [Canonical terminology](contracts/terminology.md) remains the normative source for the Runtime, workflow and evidence terms used in specifications; this glossary adds the hub, credential and operator terms and says how each applies today.
4
+
5
+ Terms are grouped by topic and sorted alphabetically within each group. Every term has its own anchor, so other pages can link to it directly, for example `glossary.md#hub`.
6
+
7
+ - **Product and components:** [Claude Code plugin](#claude-code-plugin) · [Dashboard](#dashboard) · [Harness](#harness) · [Home Runtime](#home-runtime) · [Hub](#hub) · [Hub binding](#hub-binding) · [KontextMind](#kontextmind) · [KXM](#kxm) · [Loopback](#loopback) · [Native harness](#native-harness) · [Pi extension](#pi-extension) · [Runtime](#runtime) · [Runtime supervisor](#runtime-supervisor) · [Studio](#studio) · [User state root](#user-state-root) · [Workspace](#workspace)
8
+ - **Projects, identities and credentials:** [Admin token](#admin-token) · [Agent](#agent) · [Agent key](#agent-key) · [Coordinator](#coordinator) · [Peer](#peer) · [Project](#project) · [Project ID](#project-id) · [Project token](#project-token) · [Session token](#session-token) · [Signal secret](#signal-secret) · [Tenant](#tenant) · [Worker](#worker) · [Workflow start secret](#workflow-start-secret)
9
+ - **Messages:** [Channel mode](#channel-mode) · [Correlation ID](#correlation-id) · [Delivery mode](#delivery-mode) · [Fanout](#fanout) · [Idempotency key](#idempotency-key) · [Message](#message) · [Pull mode](#pull-mode) · [Reply](#reply) · [Request](#request)
10
+ - **Hub workflows:** [Audit escalation](#audit-escalation) · [Checkpoint](#checkpoint) · [Delivery ID](#delivery-id) · [Journal](#journal) · [Retrospective](#retrospective) · [Signal](#signal) · [Stage](#stage) · [Wait](#wait) · [Webhook workflow definition](#webhook-workflow-definition) · [Workflow run](#workflow-run)
11
+ - **Runtime runs:** [Assignment](#assignment) · [Attempt](#attempt) · [`blocked_uncertain`](#blocked_uncertain) · [Configuration revision](#configuration-revision) · [Drive](#drive) · [Drive receipt](#drive-receipt) · [Handoff](#handoff) · [Outbox](#outbox) · [Run](#run) · [Step](#step) · [Sync event](#sync-event) · [Workflow](#workflow)
12
+ - **Evidence and provenance:** [Degradation](#degradation) · [Effect](#effect) · [Evidence](#evidence) · [Evidence policy](#evidence-policy) · [Evidence reference](#evidence-reference) · [Fencing token](#fencing-token) · [Gate](#gate) · [Lease](#lease) · [Peer-reply evidence](#peer-reply-evidence) · [Producer](#producer) · [Quorum](#quorum) · [Receipt](#receipt) · [Required evidence](#required-evidence)
13
+ - **Context, memory and learning:** [Authority](#authority) · [Candidate](#candidate) · [Coded-repeat candidate](#coded-repeat-candidate) · [Context item](#context-item) · [Context packet](#context-packet) · [Dispatch context](#dispatch-context) · [Episode](#episode) · [Governed skill](#governed-skill) · [Improvement report](#improvement-report) · [Memory](#memory) · [Memory revision](#memory-revision) · [Promotion](#promotion) · [Promotion readiness](#promotion-readiness) · [Recall](#recall) · [Skill](#skill) · [Temporal state](#temporal-state) · [Wiki](#wiki)
14
+ - **Configuration and routing:** [Admission](#admission) · [Agent definition](#agent-definition) · [Cost basis](#cost-basis) · [Expansion](#expansion) · [Role](#role) · [Roster](#roster) · [Route](#route) · [Session](#session) · [Session isolation](#session-isolation) · [Trust diff](#trust-diff)
15
+ - [Words to avoid](#words-to-avoid)
16
+
17
+ ## Product and components
18
+
19
+ ### Claude Code plugin
20
+
21
+ The `kxm@kxm` plugin for Claude Code. It adds an MCP server with the `kxm_*` tools, optional [channel mode](#channel-mode), a read-only SessionStart hook that briefs Claude in a KXM project, and the [suite skills](#skill). See the [plugin README](../plugins/kxm/README.md).
22
+
23
+ ### Dashboard
24
+
25
+ `kxm dash`: live terminal screens for agents, tasks, workflows, plans, inbox, processes and spend. Its operations stream carries metadata only, never message bodies. The spend screen is always empty today; `kxm routing report` shows route costs.
26
+
27
+ ### Harness
28
+
29
+ The coding-agent program an [agent](#agent) runs in. KXM knows `pi` (the default), `claude`, `codex`, `grok`, `agy`, `kimi` and `deepseek`, and refuses unknown ones. A harness runs only the models it hosts. `kxm harness list` shows which are installed and logged in. Compare [worker](#worker).
30
+
31
+ ### Home Runtime
32
+
33
+ The [Runtime](#runtime) that accepted a [run](#run), recorded as its `homeRuntimeId` (an `rtm_` ID). It owns that run for the run's whole life.
34
+
35
+ ### Hub
36
+
37
+ The service that authenticates [agents](#agent), stores [messages](#message) and [workflow runs](#workflow-run) in SQLite, and pushes events over server-sent events (SSE). `kxm hub start` runs it on `127.0.0.1:7331` by default, with its database at `.kxm/state/kxm.db` in the directory it starts in. It routes work and tracks workflow runs, but never runs a model, executes a Runtime [run](#run), or merges agent contexts. Compare [Runtime](#runtime).
38
+
39
+ ### Hub binding
40
+
41
+ The record that `kxm hub bind <url>` writes to `hub-binding.json` in the [user state root](#user-state-root), naming the hub this machine uses. `kxm hub view` checks it, and the Runtime syncs to it. Binding a remote hub requires a credential.
42
+
43
+ ### KontextMind
44
+
45
+ The organization that builds KXM, and the name of a separate knowledge plane that the [mind-plane skills](#skill) target. Do not use it as a name for KXM itself.
46
+
47
+ ### KXM
48
+
49
+ The product: the `kxm` CLI, the [hub](#hub), the [Runtime](#runtime), the [Pi extension](#pi-extension), the [Claude Code plugin](#claude-code-plugin) and the Agent Skills, published together as `@kontextmind/kxm`. Write it in capitals.
50
+
51
+ ### Loopback
52
+
53
+ The `127.0.0.1` interface. The hub and the Runtime supervisor listen there by default, and the hub refuses to listen on any other address without a token. Serving a hub to other machines needs TLS and an authenticating proxy; see [Deploy KXM](operations/deploy.md).
54
+
55
+ ### Native harness
56
+
57
+ A model vendor's own [harness](#harness), such as `claude` for Anthropic models or `codex` for OpenAI models. The rule is to run a vendor's model in its native harness, not through Pi. The Pi native-vendor brake enforces it at dispatch and when a long-lived [worker](#worker) starts, and [admission](#admission) is a second layer. A few cases are still operator policy; see [where the code is looser than the rules](reference/harness-routing.md#where-the-code-is-looser-than-the-rules).
58
+
59
+ ### Pi extension
60
+
61
+ The KXM extension that Pi loads from the `@kontextmind/kxm` package. It registers the same `kxm_*` tools as the Claude Code plugin plus the `/kxm` command, connects to the hub, and starts a local hub in the background when none is running (`hub.autoStart: background`).
62
+
63
+ ### Runtime
64
+
65
+ The per-user, per-machine KXM service that owns [runs](#run). It executes workflow steps, keeps an append-only event store per project, and sends [sync events](#sync-event) to the hub through an [outbox](#outbox). It keeps working while the hub is down, and its state lives in the [user state root](#user-state-root), not in the repository. Compare [hub](#hub).
66
+
67
+ ### Runtime supervisor
68
+
69
+ The background process that hosts the [Runtime](#runtime) on a `127.0.0.1` port behind a bearer token. `kxm run` starts it when needed, and `kxm runtime start`, `status` and `stop` manage it.
70
+
71
+ ### Studio
72
+
73
+ `kxm studio`: Web Studio utilities that lay out a workflow as a graph, stepper or swimlanes (`kxm studio layout`) and serve that view on your machine (`kxm studio serve`, port 4242).
74
+
75
+ ### User state root
76
+
77
+ The per-user directory for machine state: `hub-env.json` (the hub's saved credentials), `hub-binding.json`, and the Runtime's `runtime/` stores. It is `KXM_STATE_HOME` when set, otherwise `~/Library/Application Support/KXM` on macOS, `${XDG_STATE_HOME:-~/.local/state}/kxm` on Linux, or `%LOCALAPPDATA%\KXM` on Windows.
78
+
79
+ ### Workspace
80
+
81
+ The `.kxm/` directory at the project root. It holds the tracked project definition (`project.yaml`, `agents/`, `workflows/`, `gates.yaml` and more) plus the local `state/`, `logs/` and `backups/` directories that you keep out of Git. `--workspace` points a command at another one. It is not the [project](#project), and not a Git worktree.
82
+
83
+ ## Projects, identities and credentials
84
+
85
+ ### Admin token
86
+
87
+ The hub operator's credential (`KXM_AUTH_TOKEN` when you run `kxm hub start`). The hub generates one on first start and saves it in `hub-env.json` in the [user state root](#user-state-root). It opens the admin routes, and the hub also accepts it for any project without its own token, so never give it to an agent.
88
+
89
+ ### Agent
90
+
91
+ A registered identity in one hub [project](#project), with a purpose and a name that is unique among the project's live agents. Pi sessions, Claude Code sessions and [workers](#worker) all register as agents. When a Claude Code session's name is taken, it registers as `<name>-<pid>`. Compare [worker](#worker).
92
+
93
+ ### Agent key
94
+
95
+ A per-agent secret the hub issues when an agent registers, and replaces each time it registers again. Clients send it with the agent ID (`x-kxm-agent-id` and `x-kxm-agent-key`) on every operation that acts as that agent.
96
+
97
+ ### Coordinator
98
+
99
+ The agent a [workflow run](#workflow-run) is assigned to. It follows the stages, gathers evidence and records [checkpoints](#checkpoint), and it can never count as a [producer](#producer) for its own run. A `kxm.workflow.v1` [workflow](#workflow) names its coordinator agent in `coordinator:`.
100
+
101
+ ### Peer
102
+
103
+ Another [agent](#agent) in the same [project](#project). `kxm_list` and `kxm peer list` show peers with their presence: online, stale or offline.
104
+
105
+ ### Project
106
+
107
+ The authentication and discovery namespace on the hub. An agent names it with `KXM_PROJECT` (otherwise the `package.json` name, then the directory name), and its key in the hub's `KXM_PROJECT_TOKENS` holds its token. Agents see only peers in the same project. Compare [project ID](#project-id).
108
+
109
+ ### Project ID
110
+
111
+ The stable `prj_` identifier in `.kxm/project.yaml`. The [Runtime](#runtime) and hub sync use it. It is not the hub [project](#project) name, even though both describe the same body of work.
112
+
113
+ ### Project token
114
+
115
+ The credential that the agents of one [project](#project) use. The operator sets it in the hub's `KXM_PROJECT_TOKENS` JSON map, and agents receive it as `KXM_AUTH_TOKEN` or the plugin's `auth_token`. Setting `KXM_PROJECT_TOKENS` replaces the hub's saved map, so list every project each time.
116
+
117
+ ### Session token
118
+
119
+ A local token that carries a tool policy and expires after 24 hours. It lives in your KXM user configuration directory or in `KXM_SESSION_TOKEN`. When one is present, the MCP and Pi tools refuse calls it does not allow, and refuse every call once it is malformed or expired. It is an unsigned local policy, not a hub credential. `kxm session brief` creates one when none is valid; `kxm session token --clear` removes the file.
120
+
121
+ ### Signal secret
122
+
123
+ The HMAC-SHA256 secret that signs a [signal](#signal) for a running workflow. A definition sets it with `signalSecret` or `signalSecretEnv`, and falls back to the [workflow start secret](#workflow-start-secret) when it sets neither; use a separate one. `kxm gate signal` and `kxm gate github watch` read it from `KXM_WORKFLOW_SIGNAL_SECRET`.
124
+
125
+ ### Tenant
126
+
127
+ One hosted KXM deployment for one customer: a hub and a Runtime on one host behind an authenticating proxy. `kxm tenant status` reads both as one labeled view. The hub itself has no tenant concept; separate hosts provide the separation. See [Deploy KXM](operations/deploy.md).
128
+
129
+ ### Worker
130
+
131
+ A long-lived Pi process that `kxm agent worker` starts and restarts, with model fallbacks, a tool allowlist and optional [session isolation](#session-isolation). A worker is a process; the [agent](#agent) is the identity it registers. See [Run supervised Pi workers](guides/pi-workers.md).
132
+
133
+ ### Workflow start secret
134
+
135
+ The HMAC-SHA256 secret that signs a webhook delivery that starts a [workflow run](#workflow-run). A [webhook workflow definition](#webhook-workflow-definition) names it with `secret` or `secretEnv`, and `kxm workflow start` reads it from `KXM_WORKFLOW_SECRET`.
136
+
137
+ ## Messages
138
+
139
+ ### Channel mode
140
+
141
+ Pushed delivery in Claude Code: the plugin injects each peer request into the running session as a channel event, and Claude answers with `kxm_reply`. It needs a Claude Code launch with the plugin's channel enabled. Compare [pull mode](#pull-mode).
142
+
143
+ ### Correlation ID
144
+
145
+ A sender-chosen label that groups related messages. When a message carries `workflowContext`, the hub binds the correlation ID to the run. Like an [idempotency key](#idempotency-key), it is not evidence.
146
+
147
+ ### Delivery mode
148
+
149
+ A priority hint for how the recipient takes up a request: `steer` for an active blocker, `followUp` (the default), or `nextTurn`. The Pi extension orders its queue of inbound requests by mode.
150
+
151
+ ### Fanout
152
+
153
+ One request sent independently to one to three peers, with `kxm_fanout` or `kxm peer fanout`. When the local wait ends first, it returns pending entries with durable message IDs to check later; they are not failures.
154
+
155
+ ### Idempotency key
156
+
157
+ A sender-chosen key that makes a retried send return the original message instead of creating a duplicate; reusing it for a different request is refused. It is a transport feature and proves nothing about who answered.
158
+
159
+ ### Message
160
+
161
+ <a id="message-request-reply"></a>The durable hub record of one [request](#request) and its [reply](#reply). Its state moves `queued → delivered → replied`, or ends `cancelled` (by the sender) or `expired` (past its time to live). A queued message is pushed again whenever its recipient reconnects, until the recipient acknowledges it; an acknowledged (delivered) message is not replayed. See [Message peer agents](guides/peer-messaging.md).
162
+
163
+ ### Pull mode
164
+
165
+ The default in Claude Code: Claude lists open requests with `kxm_inbox` and answers each with `kxm_reply`. Nothing arrives on its own. Compare [channel mode](#channel-mode).
166
+
167
+ ### Reply
168
+
169
+ The recipient's final answer to a request, sent with `kxm_reply` or `kxm peer reply`, or settled automatically by the Pi extension. A reply settles the [message](#message).
170
+
171
+ ### Request
172
+
173
+ What a sender creates with `kxm_send`, `kxm_fanout` or `kxm peer send`: one focused ask for one peer, stored as a [message](#message).
174
+
175
+ ## Hub workflows
176
+
177
+ ### Audit escalation
178
+
179
+ What a stage does when it has failed as many times as its `autoResumeLimit` allows: instead of retrying, the run waits for an operator ruling. A signal or `kxm role resume` gives the ruling.
180
+
181
+ ### Checkpoint
182
+
183
+ The coordinator's recorded result for the active [stage](#stage): `passed`, `warning` or `failed`, with the stage's [required evidence](#required-evidence). A warning or failure uses up an attempt; the stage passes only when a checkpoint passes.
184
+
185
+ ### Delivery ID
186
+
187
+ The identifier a webhook sender puts in `x-kxm-delivery-id`, which the KXM sender contract signs, or for a Jira or GitHub delivery in `X-Atlassian-Webhook-Identifier` or `X-GitHub-Delivery`. The hub requires one and deduplicates on it: a repeated start with the same body returns the existing run ID, and the same ID with a different body is refused.
188
+
189
+ ### Journal
190
+
191
+ A [workflow run](#workflow-run)'s structured record of what agents learned, in ten categories: `plan`, `decision`, `contradiction`, `error`, `lesson`, `observation`, `hypothesis`, `experiment`, `state-change` and `skill-candidate`. Lessons and skill candidates need evidence. An entry can name its `stageId`, and the hub derives the attempt. The hub also journals errors on its own. See [Continuous improvement](guides/continuous-improvement.md).
192
+
193
+ ### Retrospective
194
+
195
+ A proposed-only summary of a finished workflow run, in Markdown and JSON. The hub exports one when a run ends, and `kxm workflow export` exports one on demand. It proposes improvements; it never applies them.
196
+
197
+ ### Signal
198
+
199
+ A signed external result, such as CI passing, posted to the hub for a waiting [stage](#stage). It checkpoints the stage and creates a fresh message that resumes the [coordinator](#coordinator). `kxm gate signal` and `kxm gate github watch` send signals.
200
+
201
+ ### Stage
202
+
203
+ One ordered unit of a [webhook workflow definition](#webhook-workflow-definition), with `requiredEvidence`, optional [evidence policies](#evidence-policy) and `maxAttempts`. A stage passes only through a [checkpoint](#checkpoint). Compare [step](#step).
204
+
205
+ ### Wait
206
+
207
+ A durable pause on the active stage, entered with `kxm_workflow_wait`, that lasts until a signed [signal](#signal) arrives or the deadline passes (24 hours by default, 30 days at most). The coordinator can end its turn while it waits, and an expired wait fails the run.
208
+
209
+ ### Webhook workflow definition
210
+
211
+ A JSON definition with ordered [stages](#stage). The hub loads definitions from the JSON array in `KXM_WEBHOOK_WORKFLOWS_FILE`, and a signed webhook or `kxm workflow start` starts a run of one. Compare [workflow](#workflow), the `kxm.workflow.v1` YAML the Runtime runs. See [Workflow definition reference](reference/workflow-definitions.md).
212
+
213
+ ### Workflow run
214
+
215
+ A durable hub run of a [webhook workflow definition](#webhook-workflow-definition), assigned to a [coordinator](#coordinator). Inspect it with `kxm workflow list` and `kxm workflow get`, or the `kxm_workflow_*` tools. Compare [run](#run): Runtime runs use the same `run_` ID format, so check which command created an ID.
216
+
217
+ ## Runtime runs
218
+
219
+ ### Assignment
220
+
221
+ One unit of work inside the active [step](#step), such as one agent's part in a panel. Its ID stays the same across recovery.
222
+
223
+ ### Attempt
224
+
225
+ One try at something that can be retried: one entry into a [stage](#stage) or [step](#step), bounded by `maxAttempts`, or one physical execution of an [assignment](#assignment). Evidence from an earlier attempt does not satisfy a later one unless the workflow allows reuse.
226
+
227
+ ### `blocked_uncertain`
228
+
229
+ A Runtime state for a run whose [effect](#effect) KXM cannot prove happened or did not happen. KXM will not replay it automatically; an operator decides with `kxm gate signal --recovery-action` and one of `retry`, `unblock`, `fail` or `cancel`.
230
+
231
+ ### Configuration revision
232
+
233
+ The content hash of the validated `.kxm/` bundle a [run](#run) uses, printed as `config sha256:…` when `kxm run` creates the run. See [memory revision](#memory-revision) for what happens when it changes.
234
+
235
+ ### Drive
236
+
237
+ Advancing a [run](#run): `kxm runs drive <runId>` asks the Runtime to execute steps until the run settles or hands off. `--simulated` uses a model-free producer; without it, the Runtime calls live harnesses on [admitted](#admission) routes.
238
+
239
+ ### Drive receipt
240
+
241
+ The record that closes each [drive](#drive) (`kxm.drive-receipt.v1`): how the run settled, or why it handed off, with a hash of the event sequence it covered. `kxm runs status` verifies it and reports `receipt verified`. Not the same as an effect [receipt](#receipt).
242
+
243
+ ### Handoff
244
+
245
+ A drive that stops without settling the run, because the run needs something this Runtime cannot do yet, such as an unsupported step kind or limit. The run stays open. A handoff found during the drive is recorded in the [drive receipt](#drive-receipt); one found when the drive opens, such as an unsupported limit, is refused with HTTP 409 `run_handoff_required` and writes no receipt.
246
+
247
+ ### Outbox
248
+
249
+ The Runtime table that receives a sync-safe copy of each event in the same transaction as the event itself. The supervisor posts outbox rows to the hub and parks any row the hub durably refuses until `kxm runtime sync-retry`. See [Runtime sync](operations/runtime-sync.md).
250
+
251
+ ### Run
252
+
253
+ One execution of a [workflow](#workflow), owned by one [home Runtime](#home-runtime) and pinned to the revisions it was accepted with. `kxm run` creates it, and `kxm runs` inspects, drives and cancels it. Compare [workflow run](#workflow-run).
254
+
255
+ ### Step
256
+
257
+ One top-level state of a [workflow](#workflow): an `agent`, `moa` (a panel of agents), `gate`, `approval` or `wait` step, with `on:` transitions to the next step or to a terminal status. Only one step is active at a time. Today the Runtime dispatches `approval` and `wait` steps to an agent like any other step; it does not wait for a person or a signal. Compare [stage](#stage).
258
+
259
+ ### Sync event
260
+
261
+ A bounded, redacted summary of a Runtime event that the Runtime sends the hub (`kxm.sync-event.v1`). It carries allowlisted metadata, not local payloads, and the hub accepts each project, run and sequence once.
262
+
263
+ ### Workflow
264
+
265
+ A `kxm.workflow.v1` YAML file in `.kxm/workflows/`, whose file name is its ID. It declares a [coordinator](#coordinator), limits, and ordered [steps](#step) with transitions between them, and `kxm run` runs it in the [Runtime](#runtime). Compare [webhook workflow definition](#webhook-workflow-definition).
266
+
267
+ ## Evidence and provenance
268
+
269
+ ### Degradation
270
+
271
+ An admin-only, recorded decision (`kxm gate degrade`) to accept fewer [producers](#producer) than a policy's minimum, down to the floor the policy declares, for one stage attempt.
272
+
273
+ ### Effect
274
+
275
+ A read or a change that a tool, gate or adapter causes outside the event log. The Runtime classifies every effect for recovery. Today, Runtime effects come from gate steps.
276
+
277
+ ### Evidence
278
+
279
+ What a checkpoint supplies to satisfy [required evidence](#required-evidence). In a hub workflow, evidence is keyed strings whose keys must match exactly after normalization; extra keys never stand in for a missing one. Caller-written text proves nothing on its own; see [evidence reference](#evidence-reference).
280
+
281
+ ### Evidence policy
282
+
283
+ A stage rule, under `evidencePolicies`, that one requirement is met only by [peer-reply evidence](#peer-reply-evidence): at least `minProducers` distinct replies from `eligibleAgents`, with an optional [degradation](#degradation) floor.
284
+
285
+ ### Evidence reference
286
+
287
+ A durable identifier cited as proof, such as a message ID in a checkpoint's `evidenceRefs`, which the hub then verifies. Compare [evidence](#evidence), which the caller writes.
288
+
289
+ ### Fencing token
290
+
291
+ The number a [lease](#lease) carries. It rises only when another holder takes the lease over, and the hub refuses a commit that presents a superseded token.
292
+
293
+ ### Gate
294
+
295
+ Always qualify this word:
296
+
297
+ - **gate command**: a `kxm gate …` command, such as `kxm gate validate` or `kxm gate github watch`;
298
+ - **evidence gate**: a stage's required evidence and evidence policies, checked at each checkpoint;
299
+ - **gate step**: a Runtime `kind: gate` step that runs a command from `.kxm/gates.yaml` and records hashed results;
300
+ - **witness gate**: the `npm run verify` check that the developer [assignment runner](contributing/assignment-runner.md) runs.
301
+
302
+ ### Lease
303
+
304
+ A time-bounded grant from the hub on a shared resource, carrying a [fencing token](#fencing-token), for work that more than one Runtime could change. A lease lasts from 5 seconds to 10 minutes.
305
+
306
+ ### Peer-reply evidence
307
+
308
+ A reply to a request that the coordinator sent with exact `workflowContext`: the run, stage, requirement and attempt. The hub stamps that context when the request is sent and checks it again at the checkpoint, so only replies the hub routed can count.
309
+
310
+ ### Producer
311
+
312
+ This word has two meanings. In provenance, a producer is the peer agent whose hub-recorded reply counts toward a requirement; the [coordinator](#coordinator) never counts. In the [Runtime](#runtime), a producer is the component that answers an attempt: the model-free simulated producer or a live one-shot harness. Runtime producers must return a structured outcome, so prose never passes a step.
313
+
314
+ ### Quorum
315
+
316
+ The number of distinct eligible [producers](#producer) that an [evidence policy](#evidence-policy) requires. A quorum proves which identities answered through the hub under one project credential. It does not prove that the answers are correct, independent or approved.
317
+
318
+ ### Receipt
319
+
320
+ A durable external identifier that proves an [effect](#effect)'s outcome, such as a Git ref, a pull request ID or a deployment ID. Compare [drive receipt](#drive-receipt).
321
+
322
+ ### Required evidence
323
+
324
+ The evidence a [stage](#stage) (hub) or [step](#step) (Runtime) declares under `requiredEvidence`. A checkpoint cannot pass until every entry is satisfied.
325
+
326
+ ## Context, memory and learning
327
+
328
+ ### Authority
329
+
330
+ How much weight a [context item](#context-item) carries: `policy`, `instruction`, `evidence` or `hypothesis`. An item's origin caps it (the authority grant floor): human and workflow origins can reach `policy`, Git `instruction`, and peer, tool, external and derived content only `evidence`. An agent's state proposal counts as peer origin, and a derived item never gains authority.
331
+
332
+ ### Candidate
333
+
334
+ A proposed change, such as a memory note, a [governed skill](#governed-skill) or a [coded-repeat candidate](#coded-repeat-candidate), stored with its evidence. A candidate is never active until a person promotes or merges it.
335
+
336
+ ### Coded-repeat candidate
337
+
338
+ A step that `kxm improve` found repeating: the same workflow step, role and prompt, with the same objective decided in at least two runs, accepted in at least 75% of its decided attempts, and writing no repository. The candidate proposes replacing the model turn with a coded gate step or a governed skill, and is written to `.kxm/candidates/` for review. It changes nothing by itself.
339
+
340
+ ### Context item
341
+
342
+ One durable record the context system can select: evidence, state, an episode, knowledge or a skill, with a scope, a confidence and an [authority](#authority). A context item can never carry permissions or tool grants.
343
+
344
+ ### Context packet
345
+
346
+ A token-budgeted set of [context items](#context-item) for one role and task, built by `kxm context get` or `kxm_context`. Selection is deterministic (no model, clock or randomness), ranked by relevance to the task, and filled first-fit to the budget. The packet has `currentState`, `knowledge`, `evidence`, `episodes`, `skills` and `contradictions` sections; superseded and rejected records are left out.
347
+
348
+ ### Dispatch context
349
+
350
+ The project [memory](#memory) and verified promoted skills that the Runtime gives an agent it dispatches, rendered in the prompt under "Environment & Memory" and "Active Skills". Only content committed at the pinned revision is delivered. Otherwise the packet records a `dispatch_context_*` gap and the step runs without it.
351
+
352
+ ### Episode
353
+
354
+ A [context item](#context-item) drawn from workflow journals (errors, lessons, observations and experiments) so that later work can learn from earlier runs. Read episodes with `kxm context episode` or `kxm_episode`.
355
+
356
+ ### Governed skill
357
+
358
+ A skill candidate managed by `kxm skills`. `create` submits it, `evaluate` records static-review, sandbox, functional and safety results, and `promote` or `reject` decides it; a failed functional or safety evaluation quarantines it. Promotion needs every evaluation passed and a promoter who is not the author. Promoted skills are hash-pinned and served as context. Evaluations are recorded results; KXM does not run them.
359
+
360
+ ### Improvement report
361
+
362
+ Two reports share this name. `kxm_improvement_report` summarizes a project's workflow journals by improvement area, with ranked cross-run signals. `kxm improve report` reads Runtime routing records and telemetry and writes [coded-repeat candidates](#coded-repeat-candidate).
363
+
364
+ ### Memory
365
+
366
+ Git-authored project facts in `.kxm/memory/`. `kxm memory brief` prints them, `kxm memory note` records a candidate that a pull request promotes, and `kxm memory sync` projects them into whichever of `AGENTS.md`, `CLAUDE.md` and `GEMINI.md` the project already has. Reserve the word for this; other context records are [context items](#context-item).
367
+
368
+ ### Memory revision
369
+
370
+ A hash of the project's memory and promoted skills, pinned with the [configuration revision](#configuration-revision) when a run is accepted. If either changes before the run's plan is pinned, the Runtime refuses to prepare it (`run_revision_drift`); after that, changed memory is withheld from [dispatch context](#dispatch-context).
371
+
372
+ ### Promotion
373
+
374
+ An authorized decision that makes something current. For [temporal state](#temporal-state), an operator runs `kxm context promote` with the admin token, and the promoter cannot be the author; agents only propose, with `kxm_promote`. For a [governed skill](#governed-skill), it is `kxm skills promote`, and for [memory](#memory), a merged pull request. Compare [promotion readiness](#promotion-readiness).
375
+
376
+ ### Promotion readiness
377
+
378
+ Whether a [candidate](#candidate) is ready for a person to review, under `improvement.promotionPolicy`: `manual_pr` (the default), `critic_quorum` or `auto_threshold`. Readiness never authorizes anything; every policy ends in a reviewed Git change.
379
+
380
+ ### Recall
381
+
382
+ A metadata-only search of context records by text (`kxm context recall` or `kxm_recall`), with a relevance score for each item and no summaries.
383
+
384
+ ### Skill
385
+
386
+ Always qualify this word:
387
+
388
+ - **suite skill**: one of the bundled `kxm-*` Agent Skills that teach a harness the `kxm` commands and tools;
389
+ - **browser skill**: a bundled `kxm-browser-*` skill for browser automation;
390
+ - **mind-plane skill**: a bundled skill, such as `kxm-mind`, for the separate [KontextMind](#kontextmind) knowledge plane;
391
+ - **governed skill**: a candidate managed by `kxm skills`; see [governed skill](#governed-skill);
392
+ - **repo-local skill**: a skill kept in a repository's own `.agents/skills/` directory.
393
+
394
+ ### Temporal state
395
+
396
+ Project facts stored as state keys with a `proposed → current → superseded` lifecycle and historical queries (`--as-of`). State informs work but never grants a capability.
397
+
398
+ ### Wiki
399
+
400
+ Markdown pages compiled from a project's context records by `kxm context wiki-compile` (a dry run unless you pass `--out`), with state, decisions, contradictions and history linked to their evidence. `kxm context wiki-lint` checks the result.
401
+
402
+ ## Configuration and routing
403
+
404
+ ### Admission
405
+
406
+ The decision that a [route](#route) may run live. `kxm routes admit` lists it under `admitted` in `.kxm/routes.yaml`, and `kxm routes disable` blocks it. A live [drive](#drive) refuses an unadmitted route with `producer_route_not_admitted`.
407
+
408
+ ### Agent definition
409
+
410
+ A `kxm.agent.v1` file in `.kxm/agents/` that states an agent's purpose and its ceilings for tools, repositories and network. `kxm init` creates `coordinator` and `implementer`.
411
+
412
+ ### Cost basis
413
+
414
+ How the cost of one Runtime attempt is known: `metered`, `unmetered` (a subscription login) or `unknown`. Settlement requires a basis. Today's producers record `unmetered` for subscription logins and `unknown` otherwise, and a list-price estimate never becomes a metered cost.
415
+
416
+ ### Expansion
417
+
418
+ A [trust diff](#trust-diff) change that widens what agents may do, such as a new workflow or write access to a repository. A person reviews and commits each one.
419
+
420
+ ### Role
421
+
422
+ A `kxm.role.v1` definition in `.kxm/roles/`, managed with `kxm role`, that describes a seat such as `planner`, `writer` or `verifier` and its model roster. When a role file exists, a Runtime step that uses the role may run only routes in its roster.
423
+
424
+ ### Roster
425
+
426
+ A list of allowed models. It means either a [role](#role)'s roster, or the developer roster `.kxm/roster.yaml` that the [assignment runner](contributing/assignment-runner.md) trusts to choose writers and critics. Neither one admits a route; see [admission](#admission).
427
+
428
+ ### Route
429
+
430
+ A model selector, such as `xai/grok-4.6` or `openrouter/qwen/qwen3-coder-plus`, that a step can run on. The harness that runs it comes from the agent or the project default. See [Harness routing](reference/harness-routing.md).
431
+
432
+ ### Session
433
+
434
+ Always qualify this word:
435
+
436
+ - **session manifest**: the plan `kxm session start` writes; it launches nothing;
437
+ - **Pi session**: one Pi model conversation, stored on disk;
438
+ - **Claude session**: one running Claude Code conversation;
439
+ - **session brief**: the summary of recent work that `kxm session brief` prints, read from the hub's `kxm.db` and this machine's Runtime stores, with a `source` of `legacy`, `runtime` or `both`;
440
+ - **session token**: see [session token](#session-token);
441
+ - **session isolation**: see [session isolation](#session-isolation).
442
+
443
+ ### Session isolation
444
+
445
+ A [worker](#worker) setting (`--session-isolation workflow`) that keeps one ordinary Pi session plus a separate Pi session for each [workflow run](#workflow-run), so work on one run never sees another run's model history. It separates model context, not processes or files, so it is not a sandbox.
446
+
447
+ ### Trust diff
448
+
449
+ The structured permission diff that `kxm trust diff` prints between `.kxm/` in the working tree and a base Git revision. Each change is classified, and `kxm trust check` exits non-zero while any [expansion](#expansion) is present. It covers project, repository, agent, model, environment, workflow and gate-registry files, not `routes.yaml`, roles, the roster or prices.
450
+
451
+ ## Words to avoid
452
+
453
+ | Instead of | Write |
454
+ |---|---|
455
+ | "server" or "broker" for the hub | hub |
456
+ | "bot" | agent (the identity) or worker (the process) |
457
+ | "task" for a peer message (`kxm task` is a separate feature) | request |
458
+ | "API key" | admin token, project token, agent key or session token |
459
+ | "log" for a run's structured record | journal |
460
+ | "memory" for context records | context item; memory means Git memory |
461
+ | "independent verification" for a quorum | peer-reply quorum, which proves routing provenance |
462
+ | "TUI" as a product name | dashboard (`kxm dash`) |
463
+ | Bare "run", "session", "gate", "skill" or "project" | The qualified term from this page |
464
+ | Model nicknames | The model ID, such as `xai/grok-4.6` |
465
+
466
+ ## Related
467
+
468
+ - [Canonical terminology](contracts/terminology.md): the normative definitions
469
+ - [Architecture](concepts/architecture.md): how the components fit together
470
+ - [Trust model](concepts/trust-model.md): credentials and what each proves
471
+ - [Documentation index](README.md)
@@ -0,0 +1,137 @@
1
+ # Agent skills
2
+
3
+ KXM ships a suite of Agent Skills that teach a coding agent how to use the `kxm` CLI and the `kxm_*` tools safely: which command owns a task, which verbs exist, and which steps belong to a person. This page is for anyone running KXM from Claude Code, Pi or Codex, and for contributors who edit the skills. Skills document the CLI; they grant no permission, admit no writer and replace no trusted `.kxm/roster.yaml` policy.
4
+
5
+ Governed skills that your own runs produce are a separate lifecycle; see [Governed skills](governed-skills.md).
6
+
7
+ ## Before you begin
8
+
9
+ - KXM installed in your harness: the Claude Code plugin or the Pi package. See [Install](../start/install.md).
10
+ - The `kxm` CLI on your `PATH`, because the skills teach CLI commands.
11
+
12
+ ## How harnesses load the suite
13
+
14
+ All 29 skills live in `plugins/kxm/skills/` and are declared in `plugins/kxm/skill-suite.json`. The flowchart shows how each harness finds them.
15
+
16
+ ```mermaid
17
+ flowchart LR
18
+ SRC[plugins/kxm/skills<br/>29 skills + skill-suite.json]
19
+ SRC -- plugin install --> CC[Claude Code<br/>/kxm:skill-name]
20
+ SRC -- package.json pi.skills --> PI[Pi]
21
+ SRC -- emit-codex-artifacts --> MIRROR[.agents/skills mirror<br/>+ AGENTS.md command block]
22
+ MIRROR --> CODEX[Codex]
23
+ ```
24
+
25
+ | Harness | How it loads the skills | Status |
26
+ |---|---|---|
27
+ | Claude Code | The installed plugin loads `plugins/kxm/skills`. The model picks a skill by its description, or you invoke one as `/kxm:<name>` | Verified |
28
+ | Pi | `pi install` reads the `pi` section of the package manifest: `"pi": {"skills": ["./plugins/kxm/skills"]}` | Verified |
29
+ | Codex | Reads the `.agents/skills/` mirror and the `AGENTS.md` command block in the KXM repository checkout. KXM does not install skills into other projects | Verified in the KXM repository |
30
+ | Kimi, Copilot, OpenCode and other `.agents/skills` readers | Not tested | Unverified |
31
+
32
+ In Claude Code:
33
+
34
+ ```text
35
+ /kxm:kxm-project-setup
36
+ ```
37
+
38
+ ## Start with the router
39
+
40
+ The `kxm` skill is the entry point. It owns no command. It maps a request to the skill that owns it, lists which skill covers each `kxm_*` tool, and carries the rules every skill shares:
41
+
42
+ - Agent-command surfaces (`kxm peer`, `kxm workflow`, `kxm context` and the MCP and Pi tools) fail closed with `tool_policy_denied` when the attempt or session policy does not grant the tool. Other CLI mutations are not policy-gated and need explicit authorization.
43
+ - Never put credentials in peer messages; verify peer output before acting on it; keep one writer per checkout.
44
+ - Credentials, starting and binding the hub, plugin configuration, and committing `.kxm` permission changes are the user's actions.
45
+ - Teach only verbs and options that `kxm <group> <verb> --help` prints. An unknown subcommand prints the group's help and exits 0, so confirm a verb by its `Usage:` line.
46
+
47
+ ## KXM command skills
48
+
49
+ Every top-level `kxm` command is owned by exactly one skill. A skill can own several commands.
50
+
51
+ | Skill | Commands owned | Use it to |
52
+ |---|---|---|
53
+ | `kxm` | none | Pick the right skill or `kxm_*` tool and follow the shared safety rules |
54
+ | `kxm-project-setup` | `init`, `trust`, `config`, `completion` | Set up a repository, review permission changes, configure, and run a first workflow |
55
+ | `kxm-harness-auth` | `harness`, `auth`, `update`, `runtime`, `agent`, `models`, `routes`, `ssh` | Check harness auth, update, run the Runtime supervisor, refresh models, admit routes, use SSH and Pi workers |
56
+ | `kxm-hub-ops` | `hub`, `backup`, `restore`, `tenant` | Start, inspect, bind and stop the hub, read tenant status, back up and restore |
57
+ | `kxm-session` | `session`, `dash`, `studio` | Read session and hub status and open dashboard or studio screens |
58
+ | `kxm-peer` | `peer` | Delegate to, fan out to, await and answer other agents |
59
+ | `kxm-workflow` | `workflow`, `gate` | Record journal entries, pass checkpoints and wait on signed callbacks |
60
+ | `kxm-definitions` | `role` | Inspect or edit roles, role hosts and model rosters without granting writer admission |
61
+ | `kxm-runs` | `run`, `runs` | Create, drive, inspect and cancel runs, or smoke-test a workflow model-free |
62
+ | `kxm-context-memory` | `context`, `memory`, `explain` | Recall what the project knows, explain a context footprint, record memory candidates |
63
+ | `kxm-skill-lifecycle` | `skills` | Turn a repeated practice into a governed skill candidate |
64
+ | `kxm-routing-improve` | `routing`, `improve` | Find what KXM learned and what repeats, and read recorded route spend |
65
+ | `kxm-tasks` | `suggest`, `goal`, `task` | Pick a workflow and plan work as goals and tasks |
66
+
67
+ Tools map the same way: peer tools to `kxm-peer`, workflow tools to `kxm-workflow`, `kxm_context`, `kxm_recall`, `kxm_state`, `kxm_episode` and `kxm_promote` to `kxm-context-memory`, and `kxm_improvement_report` to `kxm-routing-improve`. The full tool list is in [MCP and Pi tools](../reference/tools.md).
68
+
69
+ ## Browser automation skills
70
+
71
+ These skills drive a remote Steel browser that you host. They own no `kxm` command. See [Browser automation](browser-automation.md) and [ADR-0002](../adr/ADR-0002-browser-automation-steel-doks.md).
72
+
73
+ | Skill | Use it to |
74
+ |---|---|
75
+ | `kxm-browser-session` | Start, attach to, inspect and release a remote Steel browser session |
76
+ | `kxm-browser-takeover` | Hand a session to a human for MFA, login, CAPTCHA or sensitive consent, then resume |
77
+ | `kxm-browser-auth` | Use stored credentials and authenticated browser profiles safely |
78
+ | `kxm-browser-explore` | Explore a site, inspect its DOM and map a user flow with `agent-browser` |
79
+ | `kxm-browser-verify` | Reproduce a UI bug, gather evidence and write a durable Playwright test |
80
+ | `kxm-browser-diagnostics` | Diagnose Steel connectivity, CDP errors and timeouts, and clean up orphaned sessions |
81
+ | `kxm-browser-annotate` | Capture page sections, attach structured annotations and hand the changes to an agent |
82
+
83
+ ## KontextMind knowledge-plane skills
84
+
85
+ Nine skills teach KontextMind, a separate product with its own `kontext` CLI, server and `km_` tools. They are not KXM and never use the `kxm_*` tools. Each description starts with "KontextMind knowledge plane only, the separate kontext CLI and km_ tools, not KXM" and says to use it only when the user names KontextMind, the `kontext` CLI or a `km_` tool, so a KXM request never loads them. `plugins/kxm/skills/SUITE.md` introduces them and `plugins/kxm/skills/hints.json` holds their slash hints.
86
+
87
+ | Skill | Use it to |
88
+ |---|---|
89
+ | `kxm-mind` | Route a KontextMind request to the matching knowledge-plane skill |
90
+ | `kxm-query` | Search and read a mind with provenance |
91
+ | `kxm-harvest` | Draft redacted session learnings into a mind |
92
+ | `kxm-triage` | Work the KontextMind review queue |
93
+ | `kxm-work` | Read or update tracker work state and handoffs |
94
+ | `kxm-insights` | List or dismiss insights |
95
+ | `kxm-projects` | Manage mind repositories and members |
96
+ | `kxm-protocol` | Explain KontextMind contracts, trailers, trust modes and authorization |
97
+ | `kxm-mind-setup` | Connect a machine to a KontextMind server with the `kontext` CLI |
98
+
99
+ `kxm-mind-setup` was named `kxm-setup` before; the old name has no alias. `kxm-protocol` points to KontextMind's own documentation, which lives outside this repository.
100
+
101
+ ## Bundled, governed and repo-local skills
102
+
103
+ | Kind | Where it lives | Who changes it |
104
+ |---|---|---|
105
+ | Suite skill | `plugins/kxm/skills/`, shipped with the plugin and package | KXM maintainers, in Git |
106
+ | Governed skill | `.kxm/skills/` in your repository | Your runs propose it; a reviewer promotes it. See [Governed skills](governed-skills.md) |
107
+ | Repo-local skill | `.agents/skills/` in a repository, outside the suite | That repository's maintainers. Example: [Repository work delivery](../contributing/repo-work-delivery.md) |
108
+
109
+ Telemetry never promotes a skill of any kind.
110
+
111
+ ## Write skill descriptions
112
+
113
+ The description decides when a harness loads a skill, so every skill in the suite follows these rules:
114
+
115
+ - Say what the skill does and when to use it, key use case first, in at most 1,024 characters.
116
+ - Write a single line that parses as strict YAML. An unquoted value cannot contain `': '` anywhere.
117
+ - Do not add `allowed-tools`.
118
+ - Do not use retired product names, `pi-extensions` or `mcp__`.
119
+ - Do not teach `--issue` on token commands. `kxm session brief` saves a 24-hour operator session token, so it is never an agent step; name it only under an `## Operator steps` heading.
120
+ - Knowledge-plane skills keep the KontextMind opening and closing sentences described above.
121
+
122
+ ## Maintain the suite
123
+
124
+ Contributors edit skills in `plugins/kxm/skills/`, the only source of truth.
125
+
126
+ 1. Declare every skill directory in `plugins/kxm/skill-suite.json` with `name`, `path`, `ownedCommands` and a 10 to 200 character `intent`.
127
+ 2. When you add a top-level command, give it to exactly one skill.
128
+ 3. Regenerate the Codex mirror with `scripts/emit-codex-artifacts.mjs`. It replaces the suite's directories in `.agents/skills/`, leaves unrelated skills alone, and fails closed on a missing, symlinked or malformed manifest.
129
+
130
+ CI checks that every command has one owner, every skill directory is declared, every description parses as strict YAML within the length limit, the knowledge-plane skills stay separate, taught verbs exist, and the mirror matches. See [Development](../contributing/development.md) for how to run those checks.
131
+
132
+ ## Next steps
133
+
134
+ - Install the plugin or package: [Install](../start/install.md)
135
+ - Govern skills your runs produce: [Governed skills](governed-skills.md)
136
+ - Plugin settings, channels and tools: [KXM plugin for Claude Code](../../plugins/kxm/README.md)
137
+ - Every command a skill teaches: [CLI reference](../reference/cli-reference.md)