kibi-cursor 2.1.0 → 2.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.cursor-plugin/plugin.json +2 -2
- package/CHANGELOG.md +43 -49
- package/README.md +6 -4
- package/agent-plugin/plugin.json +1 -1
- package/agent-plugin/skills/kibi-bootstrap/SKILL.md +47 -11
- package/agent-plugin/skills/kibi-bootstrap/resources/bootstrap.md +6 -1
- package/agent-plugin/skills/kibi-usage/SKILL.md +14 -0
- package/agent-plugin/skills/kibi-usage/resources/operation-access.md +5 -0
- package/commands/kibi-bootstrap.md +4 -1
- package/dist/.cursor-plugin/plugin.json +2 -2
- package/dist/commands/kibi-bootstrap.md +4 -1
- package/dist/hook-runner.d.ts +10 -0
- package/dist/hook-runner.js +29 -0
- package/dist/skills/.canon-hash.json +4 -4
- package/dist/skills/kibi-bootstrap/SKILL.md +47 -11
- package/dist/skills/kibi-bootstrap/resources/bootstrap.md +6 -1
- package/dist/skills/kibi-usage/SKILL.md +14 -0
- package/dist/skills/kibi-usage/resources/operation-access.md +5 -0
- package/package.json +2 -2
- package/skills/.canon-hash.json +4 -4
- package/skills/kibi-bootstrap/SKILL.md +47 -11
- package/skills/kibi-bootstrap/resources/bootstrap.md +6 -1
- package/skills/kibi-usage/SKILL.md +14 -0
- package/skills/kibi-usage/resources/operation-access.md +5 -0
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "kibi-cursor",
|
|
3
3
|
"displayName": "Kibi",
|
|
4
|
-
"version": "2.
|
|
5
|
-
"description": "Optional Cursor adapter for Kibi. Requires
|
|
4
|
+
"version": "2.2.0",
|
|
5
|
+
"description": "Optional Cursor adapter for Kibi. Requires project-local kibi-cli, kibi-mcp, and kibi-core (SWI-Prolog is bundled on Linux and macOS) before the bundled MCP server can start.",
|
|
6
6
|
"license": "AGPL-3.0-or-later",
|
|
7
7
|
"author": {
|
|
8
8
|
"name": "Kibi"
|
package/CHANGELOG.md
CHANGED
|
@@ -1,11 +1,53 @@
|
|
|
1
1
|
# kibi-cursor
|
|
2
2
|
|
|
3
|
+
## 2.2.0
|
|
4
|
+
|
|
5
|
+
### Minor Changes
|
|
6
|
+
|
|
7
|
+
- f93dcdd: Bootstrap no longer learns only from the code. The agent now starts with a short interview: it asks where product intent already lives (issue trackers such as Jira or YouTrack, wikis, specs, decision logs), which sources are authoritative or stale, and reads them through its own connectors. The bootstrap plan records those sources and the intent claims harvested from them, so each requirement taken from a ticket or page cites it and the citation is part of the approved plan hash. Kibi still never contacts those sources itself.
|
|
8
|
+
- feat(cli): `kb_plan_bootstrap` / `plan-bootstrap` accept `bootstrapContext.knowledgeSources` (id, kind, title, locator, authority, optional connector) and `bootstrapContext.intentClaims` (statement, sourceId, reference, optional excerpt). Both are normalized into `declaredContext` and bound into `planHash`. Grounded claims from authoritative or supporting sources become `req` candidates with `sourceKind: intent_claim`, citation evidence, and `text_ref: <sourceId>:<reference>`. Ungroundable claims become authoring follow-ups, stale sources are suppressed with `stale_knowledge_source`, and claims citing undeclared sources are reported as non-blocking diagnostics. A `needs_context` plan without declared sources asks for them.
|
|
9
|
+
- feat(skills): `kibi-bootstrap` 3.1.0 leads with the source interview before planning; the MCP `/kibi-bootstrap` prompt and the Cursor and ZCode commands follow it.
|
|
10
|
+
- docs: README, landing page, quick start, and install guide lead with a copy-paste agent setup prompt; manual installation moves behind a toggle.
|
|
11
|
+
|
|
12
|
+
### Patch Changes
|
|
13
|
+
|
|
14
|
+
- 676bac9: The Claude Code, Codex, Cursor, and ZCode plugins now tell the Kibi MCP server which workspace each call is about, so sessions working in a git worktree are answered from that worktree's branch instead of the checkout the server started in. Nothing changes for sessions that stay in one project.
|
|
15
|
+
- Each plugin's pre-tool hook adds `workspaceRoot`, the agent's current Kibi workspace, to every Kibi MCP call. Claude Code, Cursor, and ZCode send it without a permission decision so the host's own approval flow is unchanged; Codex requires `permissionDecision: "allow"` for input rewrites, which does not override a server's tool approval mode.
|
|
16
|
+
- `kibi-agent-core` exports `KIBI_WORKSPACE_ARGUMENT`, `isKibiMcpToolName`, and `stampKibiWorkspace` for the plugins.
|
|
17
|
+
- The Codex hook parser now reads `hook_event_name`, the field Codex actually sends; the Claude and ZCode `PreToolUse` matchers include `mcp__.*__kb_.*`.
|
|
18
|
+
- The ZCode launcher sets `KIBI_MCP_HOST=zcode` so its usage rows are attributed like the other hosts'.
|
|
19
|
+
|
|
20
|
+
- Updated dependencies [676bac9]
|
|
21
|
+
- kibi-agent-core@0.1.1
|
|
22
|
+
|
|
23
|
+
## 2.1.1
|
|
24
|
+
|
|
25
|
+
### Patch Changes
|
|
26
|
+
|
|
27
|
+
- 7aa1471: Kibi can now run without a hand-installed SWI-Prolog. It looks for an explicit `KIBI_SWIPL` executable first, then the tested SWI-Prolog build shipped in the new `kibi-swipl` platform packages, and only then `swipl` on `PATH` (9.0 or newer). `KIBI_SWIPL=system` skips the bundle. `kibi doctor` now reports which runtime was chosen (source, path, version), checks that every required library loads, and explains which platform package to add when the bundle is missing. A running Kibi engine that was started with a different SWI-Prolog is restarted instead of reused. Release builds now ship the tested SWI-Prolog for Linux x64, Linux arm64, macOS arm64, and macOS x64 inside the `kibi-swipl-<platform>` packages, and an install that skips optional dependencies still succeeds and explains which package to add.
|
|
28
|
+
- kibi-cli: add `resolveSwipl()` (env, bundled with manifest and SHA-256 verification, PATH), a per-process cache, and `SWI_HOME_DIR` for bundled builds in both `PrologProcess` spawn paths.
|
|
29
|
+
- kibi-cli: engine handshake and requests carry the resolved `<bin>@<version>`; the daemon rejects mismatches and clients replace a mismatched daemon.
|
|
30
|
+
- kibi-cli: `doctor` SWI-Prolog check uses the resolver and loads all required libraries.
|
|
31
|
+
- kibi-runtime: depend on `kibi-swipl`; keep it and the platform packages external in both bundles.
|
|
32
|
+
- kibi-cursor: the worktree resolver accepts `KIBI_SWIPL` or a bundled `kibi-swipl-*` binary in the candidate's installed packages.
|
|
33
|
+
- Release: the publish workflow builds the SWI-Prolog archives in its own run, verifies each SHA-256 sidecar, pinned provenance, and binary checksum, materializes symlinks (npm drops them), packs the four platform packages, and installs the packed tarballs with npm on runners with no SWI-Prolog before publishing; a separate dry-run workflow packs without any publish path.
|
|
34
|
+
- New packages `kibi-swipl` and `kibi-swipl-<platform>` start at 1.0.0 outside this changeset and version together through a changesets fixed group.
|
|
35
|
+
|
|
36
|
+
- db5376c: Projects can now opt into impact reviews that bind a change to its exact source, knowledge decisions and trusted analysis policy. Kibi validates both staged changes and a complete pull-request diff, rejects stale review evidence, and lets agents prepare an unauthored review template through the CLI or MCP instead of hand-assembling one. Every decision and reviewer field stays for an agent to write; preparation never approves or proves anything.
|
|
37
|
+
- Add versioned impact policy and review schemas, immutable review fingerprints, reviewed Python decorator coordinate migration and the trusted aggregate `check-diff` command.
|
|
38
|
+
- Add the read-only `prepare-impact-review --input` CLI route and `kb_prepare_impact_review` MCP operation; regenerate the bundled operation-access catalog for the agent integrations.
|
|
39
|
+
- Keep the sample CI workflow inactive until it is adopted on a protected target.
|
|
40
|
+
|
|
41
|
+
- 3d78159: Setting up Kibi no longer starts with installing SWI-Prolog. The documentation now says that Linux (x64 and arm64, glibc 2.28 or newer) and macOS (Apple silicon and Intel) need nothing beyond Node.js 22, explains the lookup order and the `KIBI_SWIPL` and `KIBI_SWIPL=system` overrides, and shows how `kibi doctor` reports which SWI-Prolog is in use and what to do when an install skipped the bundled runtime (`--omit=optional`, pnpm `supportedArchitectures`). Manual instructions stay for Alpine and native Windows. The GitHub Pages report workflows that `kibi init` can write no longer install SWI-Prolog by hand, because `npm ci` brings the bundled runtime with it.
|
|
42
|
+
- kibi-cli: drop the `apt-get install swi-prolog` step from the shipped `kibi-report.yml` and `kibi-badge.yml` workflow templates.
|
|
43
|
+
- kibi-cursor, kibi-claude: README and plugin manifest prerequisites say SWI-Prolog is bundled on supported platforms and only needed on `PATH` elsewhere.
|
|
44
|
+
- Kibi's own CI and proof now run the pipeline-built bundled SWI-Prolog (one job keeps a system install with `KIBI_SWIPL=system`), and the release dry run follows the README quick start with the packed tarballs on four platforms; neither ships in a package.
|
|
45
|
+
|
|
3
46
|
## 2.1.0
|
|
4
47
|
|
|
5
48
|
### Minor Changes
|
|
6
49
|
|
|
7
50
|
- f01838e: The Cursor plugin now asks the agent to consult Kibi before it edits a file, not only after. Every nudge used to fire once the change was already written — the post-edit message opened with "After editing" twice — so the plugin could only ever prompt repair, never inform the change. Before an edit, the plugin now names only requirements the file explicitly implements and asks for them to be read first, which is the one point where retrieval can still change what gets written.
|
|
8
|
-
|
|
9
51
|
- Emit source-linked pre-edit guidance from `preToolUse` for edit-like tools, resolved synchronously from the symbol manifest so no KB round-trip is added to the edit path.
|
|
10
52
|
- Name up to three `implements` requirement targets for the file, or ask for discovery and ownership when no requirement ownership is known.
|
|
11
53
|
- Narrow the post-edit message to the impact review that only becomes possible once the change exists, and stop repeating the retrieval ask there.
|
|
@@ -17,26 +59,22 @@
|
|
|
17
59
|
reports them with a prefix, such as `mcp__kibi__kb_check`. Before this fix,
|
|
18
60
|
an agent that correctly ran an impact check through a prefixed tool name
|
|
19
61
|
still got a stop reminder to run it, because the plugin never saw the check.
|
|
20
|
-
|
|
21
62
|
- `kb-mcp-tools.ts` in each adapter gains `canonicalKbToolName`, which strips
|
|
22
63
|
`mcp__<server>__`, `MCP:`, and `kibi_` prefixes before matching `kb_*`
|
|
23
64
|
operations.
|
|
24
65
|
- The Codex hook bundle is regenerated.
|
|
25
66
|
|
|
26
67
|
- 25f11b1: The badge that `kibi init --github` adds to your README now links to the published explanation of the `% proven` metric at https://looted.github.io/kibi/ instead of the GitHub rendering of the Markdown source. The Kibi documentation site moved to the root of that domain, with the requirement-health report still under `/kibi-report/`. The Cursor and OpenCode package READMEs also link to the published guides, so the links work when you read them on npm.
|
|
27
|
-
|
|
28
68
|
- cli: `KIBI_METRIC_DOCS_URL` points at `https://looted.github.io/kibi/guide/github-integration.html#what-the-badge-means`.
|
|
29
69
|
- cursor, opencode: README setup and troubleshooting links point at the published guide pages instead of repository-relative or GitHub blob URLs.
|
|
30
70
|
- repo tooling (not published): the docs site builds into the GitHub Pages root and renders `llms.txt` as one H2 link list per catalog group from the shared page metadata.
|
|
31
71
|
|
|
32
72
|
- 5a06c03: Kibi's agent plugins now share one fast, consistent implementation for source-path classification, Kibi MCP tool recognition, and symbol-manifest indexing. Codex and ZCode now recognize production code outside `src/`, while Cursor reuses the same size-and-mtime-keyed scanner as Claude instead of parsing the full symbol manifest before an edit.
|
|
33
|
-
|
|
34
73
|
- Add `kibi-agent-core` as the common Node 18-compatible hook-helper package.
|
|
35
74
|
- Keep host adapters thin while preserving their host-specific event and state contracts.
|
|
36
75
|
- Replace Cursor's YAML parser dependency with the shared cached line scanner.
|
|
37
76
|
|
|
38
77
|
- f01838e: Usage telemetry stays off by default for every client, and there is now a supported way to turn it on. Previously the only way to capture usage was to hand-write an MCP command line with `--diagnostic-mode`, which meant anyone using a shipped plugin recorded nothing at all and had no documented alternative. Operators can now opt in with an environment variable, and once they do, each row identifies the host, package version, and checkout that produced it, so behavior can be compared across editors, worktrees, and Kibi versions.
|
|
39
|
-
|
|
40
78
|
- Honor `KIBI_DIAGNOSTIC_MODE=1` alongside the existing `--diagnostic-mode` flag, for hosts where a plugin owns the MCP command line.
|
|
41
79
|
- Stamp `interface`, `host`, `package_version`, and `workspace_root` on every usage row.
|
|
42
80
|
- Set `KIBI_MCP_HOST` from the Cursor and Codex launchers for attribution only; it never enables logging, and installing or enabling a plugin never starts telemetry.
|
|
@@ -48,7 +86,6 @@
|
|
|
48
86
|
When you model a new requirement, Kibi now ranks the subjects that already exist and either reuses one or explicitly declares a new one. It also flags claims that look like possible duplicates. An intentional restatement can be recorded with the new `restates` relationship. Skills and docs now recommend naming entities by the behavior they govern (`REQ-cli-gc`) instead of a sequence number (`REQ-042`). Existing numbered IDs stay valid.
|
|
49
87
|
|
|
50
88
|
Predicate schemas can now declare the allowed values for an argument, plus the old spellings that map onto them. New facts must use those values. `kibi check` reports predicate facts that don't match any schema, and `kibi migrate` can fix the mechanical cases after you approve the plan hash. It moves a fact to the only namespace whose schema matches, and rewrites old spellings to the declared value. Everything that needs judgment stays a review item.
|
|
51
|
-
|
|
52
89
|
- core: new `semantic_quality.pl` (`entity-id-style`, `domain-redundancy`, `domain-implication`, `subject-key-identity`, `subject-key-shape`, `ontology-quality`) and `units.pl`. Unit canonicalization is used for comparison only, and unknown or ambiguous units such as `KB` are never equated. Adds the `restates` req→req relationship and an optional `diagnosticSeverity` in the rule registry. Adds `:- encoding(utf8)` to modules that contain non-ASCII text.
|
|
53
90
|
- cli/mcp: `restates` is wired through the extractors, schemas, and mutation paths. `entity-id-style` warnings are reported on `kb_upsert` creates and on staged added or renamed entity files. `kb_model_requirement` returns `vocabularyAlignment` (subject decision, candidates, redundancy candidates, stamps, `fallbackUsed`). Ontology-quality thresholds can be set with `KIBI_ONTOLOGY_QUALITY_MAX_SINGLETON_RATIO` / `KIBI_ONTOLOGY_QUALITY_MIN_FACTS`. `kb_compile_intent` create mode now keeps a caller-supplied `requirementId`. `kibi check --staged` now also prints its pass line when metadata-only staged changes have only advisory findings, matching the staged-symbol path.
|
|
54
91
|
- cli/mcp: `predicate_schema` facts accept `argument_constants` and `argument_aliases`, stored like `rule_ir` as JSON. `kb_upsert` / `kb_validate_upsert` reject malformed vocabularies and predicate facts that use undeclared values or aliases. `kb_suggest_predicates` binds aliases to their constant and leaves undeclared values unbound. The new advisory TypeScript rule `predicate-schema-conformance` checks predicate facts against project schemas and the built-in catalog. Its mechanical repairs become automatic `predicate_schema_alignment` migration actions that carry the exact `kb_upsert` input and re-read the fact before writing.
|
|
@@ -66,19 +103,16 @@
|
|
|
66
103
|
### Patch Changes
|
|
67
104
|
|
|
68
105
|
- 96a1ebd: Local Cursor MCP builds now compile plugin SDK/builtin dist before the CLI, so a fresh checkout no longer fails with a missing `kibi-plugin-builtin` type package.
|
|
69
|
-
|
|
70
106
|
- `build:cli-stack` runs plugin-sdk + plugin-builtin + CLI
|
|
71
107
|
- Worktree resolver uses that stack instead of `build:cli` alone
|
|
72
108
|
|
|
73
109
|
- 188f875: No user-facing behavior change: `kibi-runtime` now resolves its bundled-skills directory lazily on first use instead of at import time, `isWithinRoot` drops a redundant same-path comparison, `kibi-cursor` drops a provably dead `planDelivered` early return and an always-true stdin branch, and the hook runners' stdin buffering is simplified to an unconditional `Buffer.from`. The reshaping lets the new mutation-testing suite (`docs/mutation-testing.md`, run via `bun run test:mutation`) prove these paths exhaustively — the suite holds a 100% mutation score over `kibi-runtime`, `kibi-codex`, and `kibi-cursor` sources.
|
|
74
110
|
- db07d8f: Proof diagnostics now agree with the Prolog decision: a structural type-shape unit contract is shown as qualifying, `kibi proof impact` compares against the Git HEAD baseline and exits 0 after a successful report, and mixed-role symbols fail the strict proof integrity gate.
|
|
75
|
-
|
|
76
111
|
- Mode-aware candidate evaluation in Prolog; receipt fallback uses `test_receipt_evidence(Context, TestId, Evidence)`.
|
|
77
112
|
- `proof impact` reads `HEAD:proof/baseline.json` with no worktree fallback; diagnostic exit 0.
|
|
78
113
|
- Strict proof workflow and baseline checker include canonical `symbol-traceability`.
|
|
79
114
|
|
|
80
115
|
- f33a665: Proof failures now name the exact requirement, symbol, and why each `covered_by` candidate did not qualify, without changing what counts as proven. Agents can inspect a requirement with `kibi proof explain` and compare current proof state to the committed `proof/baseline.json` snapshot with `kibi proof impact`, instead of reverse-engineering Prolog or guessing from aggregate counts.
|
|
81
|
-
|
|
82
116
|
- Keep `kibi.requirement-proof.v3` and add additive production-symbol `explanations` plus TEST `testResolutions` on the same Proof.
|
|
83
117
|
- Ratchet `proof/baseline.json` to v2 with compact requirement fingerprints; aggregate counts stay the ratchet.
|
|
84
118
|
- Add `kibi proof explain` and `kibi proof impact` as Proof projections, mixed-role leftovers in `symbol-traceability`, and advisory `proof-contract-symbols`.
|
|
@@ -89,7 +123,6 @@
|
|
|
89
123
|
### Major Changes
|
|
90
124
|
|
|
91
125
|
- 812c201: Kibi's proof layer is now runner-neutral: any test runner, script, or harness can prove requirements, and Playwright is no longer built into the proof model.
|
|
92
|
-
|
|
93
126
|
- `kibi prove` replaces `kibi verify` as the single command to run configured proof producers and record evidence. Proof contracts (`kibi.proof-contract.v1`) declare explicit obligations (`symbol_id` + `target`) executed by a configured integration in `.kb/proof/integrations.json`; `kibi proof inspect` discovers test infrastructure deterministically; one producer run can satisfy many test contracts, and re-ingestion is idempotent.
|
|
94
127
|
- Evidence moves to the `kibi.proof-run.v1` artifact (typed environment, run-level outcome, factual attempt history with `native_case`/`aggregate_run` provenance) evaluated into `kibi.proof-receipt.v1` receipts bound to the live snapshot, contract hash, and effective execution fingerprint. Command proof is the universal fallback, so every project can prove requirements without a first-party framework adapter; strict first-attempt policy never upgrades unknown attempt history into passing evidence.
|
|
95
128
|
- Breaking removals: `kibi verify`, `kb_ingest_verification`, `kibi.playwright-run.v1`, `verification_contract`/`verification_receipts` entity fields (replaced by `proof_contract`/`proof_bindings`/`proof_receipts`), the `required_case_symbols`×`required_projects` Cartesian contract, and `retries` fields. Migrate by re-running `kibi prove` after bootstrap configures proof for your repository.
|
|
@@ -99,12 +132,10 @@
|
|
|
99
132
|
### Patch Changes
|
|
100
133
|
|
|
101
134
|
- b0271ac: Cursor now starts the bundled Kibi MCP server reliably when it launches plugin processes from a home directory or another unrelated working directory. Consumer workspaces with spaces continue to resolve their project-local `kibi-mcp` installation, while the portable Agent Plugin keeps its separate `npx --no-install` configuration.
|
|
102
|
-
|
|
103
135
|
- Fix `kibi-cursor` MCP launcher arguments to use Cursor's `${CURSOR_PLUGIN_ROOT}` expansion.
|
|
104
136
|
- Add source-install manifest regression coverage for consumer-local resolution from unrelated host directories.
|
|
105
137
|
|
|
106
138
|
- b1682f1: Agents receive clearer guidance for repairing the actual supplied mutation request and preserving approved predicate bindings. The scoped additions retain the existing workflow while separating payload recovery from conditional relational modeling.
|
|
107
|
-
|
|
108
139
|
- Update `kibi-usage` to 2.1.2 in CLI/runtime sources and the generated Codex/Cursor distributions.
|
|
109
140
|
- Preserve the other three skills and all existing resource content.
|
|
110
141
|
- Retain production-adoption safeguards; development comparisons are not held-out evidence.
|
|
@@ -113,12 +144,10 @@
|
|
|
113
144
|
same entry paths tests already spawn as processes. In-process coverage can
|
|
114
145
|
exercise stdin, CLI guards, and realpath failures instead of leaving those
|
|
115
146
|
lines invisible to Codecov.
|
|
116
|
-
|
|
117
147
|
- Export hook CLI helpers and Agent Plugin / launcher internals for tests.
|
|
118
148
|
- Use a namespace `fs` import in skill validation so realpath errors are testable.
|
|
119
149
|
|
|
120
150
|
- 5999143: Agent-facing skill docs now use the current status field names, so agents following the freshness and E2E receipt workflows look for fields that actually exist in `kb_status` output instead of stale ones.
|
|
121
|
-
|
|
122
151
|
- Bundled `kibi-freshness` and `kibi-usage` skills (all agent mirrors) now reference `proofSnapshotChanges` and `proofSnapshot` (previously `verificationSnapshotChanges`/`verificationSnapshot` from the pre-proof-architecture status schema).
|
|
123
152
|
- The skillopt-eval harness reads `proofSnapshot*` status fields and its held-out eval prompts name the current fields, so "dirty editor path" evidence gathering works against live status output again.
|
|
124
153
|
|
|
@@ -129,7 +158,6 @@
|
|
|
129
158
|
### Patch Changes
|
|
130
159
|
|
|
131
160
|
- Cursor agents now get an always-on CLI recipe when Kibi MCP tools are missing, instead of treating Kibi as unavailable.
|
|
132
|
-
|
|
133
161
|
- Put the exact `npx --no-install kibi <route> --input -` command, MCP-to-CLI name mapping, and Shell-approval language in the always-applied workflow rule.
|
|
134
162
|
- Keep published plugin hooks advisory and untrusted by default; dogfood still opts into `--trusted-workspace` locally.
|
|
135
163
|
- Document the operator prerequisites (Agent mode, Shell, trusted workspace, project-local CLI) for the fallback to run.
|
|
@@ -141,7 +169,6 @@
|
|
|
141
169
|
- 9e6fb3f: Kibi now uses one opinionated project contract: all Kibi-managed knowledge lives under `.kb/`, check enforcement is owned by the installed Kibi version, and projects can no longer weaken health by disabling rules or relocating entity paths in `.kb/config.json`. Existing repositories must run `kibi migrate --yes` to move legacy `documentation/...` knowledge into the canonical layout and adopt `.kb/manifest.json`.
|
|
142
170
|
|
|
143
171
|
Advisory modeling checks still run by default, but they report as non-blocking quality diagnostics instead of failing `kibi check`. Migration rewrites the old blanket `.kb/` gitignore stanza so authored lanes are trackable, and a malformed leftover `config.json` blocks the one-way cutover instead of guessing default paths.
|
|
144
|
-
|
|
145
172
|
- Remove user-configurable entity paths and persistent `checks.rules` overrides; retire `.kb/config.json` after migration.
|
|
146
173
|
- Introduce `.kb/manifest.json` for Kibi-owned lifecycle metadata (schema version, semantic backfill state).
|
|
147
174
|
- Add one-way legacy storage migration (`documentation/` and custom configured paths → `.kb/<lane>/`).
|
|
@@ -155,7 +182,6 @@
|
|
|
155
182
|
- Pending relationship shards are not treated as symbols manifests during source discovery.
|
|
156
183
|
|
|
157
184
|
- 4c75e4d: Kibi onboarding now separates repository initialization from teaching Kibi about an existing codebase. After `kibi init`, an agent can run the `kibi-bootstrap` workflow to produce a reviewable, hash-bound plan and apply the exact approved plan safely. The old autopilot and init-kibi public names are removed so new users see one clear bootstrap path.
|
|
158
|
-
|
|
159
185
|
- Replace `kb_autopilot_generate`/`autopilot-generate` with `kb_plan_bootstrap`/`plan-bootstrap`.
|
|
160
186
|
- Add `kibi.bootstrap-plan.v1` validation, deterministic approval hashes, dependency ordering, stale-plan checks, and typed bootstrap recovery through `kb_apply_plan`.
|
|
161
187
|
- Synchronize the four canonical skill mirrors and update client adapters, docs, fixtures, and SkillOpt cases.
|
|
@@ -167,7 +193,6 @@
|
|
|
167
193
|
effect and repair information, while branch stores are hashed and explicitly
|
|
168
194
|
identity-bound. The mutation path can author tracked source documents and
|
|
169
195
|
canonical relationship shards without staging or committing them.
|
|
170
|
-
|
|
171
196
|
- Add the `kibi-runtime` first-party integration package.
|
|
172
197
|
- Add exact branch-store manifests, explicit legacy migration/quarantine, and
|
|
173
198
|
typed result/effect contracts.
|
|
@@ -175,24 +200,20 @@
|
|
|
175
200
|
approval plans.
|
|
176
201
|
|
|
177
202
|
- 3d7d04f: Generic MCP and CLI agents now discover Kibi's operating rules from bundled skills instead of a long copy-paste prompt. Improving an existing product KB is covered by a `kibi-usage` resource rather than a second manual, so agent guidance stays in one place and cannot drift from the packaged workflow.
|
|
178
|
-
|
|
179
203
|
- Add `kibi-usage` `resources/kb-improvement.md` and bump that skill to 2.1.0.
|
|
180
204
|
- Replace `docs/prompts/llm-rules.md` with `docs/generic-agent-onboarding.md`.
|
|
181
205
|
- Remove the obsolete retroactive-init prompt; bootstrap stays in the `kibi-bootstrap` skill.
|
|
182
206
|
|
|
183
207
|
- 29793c7: The Cursor stop hook no longer starts an extra Kibi follow-up after you only deliver a plan. Reads and search no longer look like source edits, so plan mode can finish without an impact-check nudge. If that same turn actually edited source or updated the knowledge base, the existing follow-up still runs.
|
|
184
|
-
|
|
185
208
|
- Record dirty paths only from known editable tools.
|
|
186
209
|
- Treat `CreatePlan` as plan delivery and stay silent at stop unless that turn also edited source or mutated the KB.
|
|
187
210
|
- Skip follow-up when `stop.status` is `aborted` or `error`.
|
|
188
211
|
|
|
189
212
|
- 8db2e37: Cursor plugin users can now enable Kibi without adding a separate project MCP configuration. The plugin finds the `kibi-mcp` version installed in the opened project, starts it inside that workspace, and reports a clear setup error when the dependency is missing. It never downloads or falls back to a global Kibi runtime.
|
|
190
|
-
|
|
191
213
|
- Replace the plugin MCP `npx --no-install` command with the packaged consumer-workspace launcher.
|
|
192
214
|
- Cover isolated and packed plugin launches, workspace selection, package-layout resolution, exit codes, and signal forwarding.
|
|
193
215
|
|
|
194
216
|
- 535dea8: Agents can now keep working in synthetic, detached, or unreadable workspaces while Kibi reports the migration work it can evaluate. Coverage and checks preserve their useful domain results when branch status is unavailable, and the Codex/Cursor skill assets now stay aligned with their published plugin metadata.
|
|
195
|
-
|
|
196
217
|
- Keep status-derived migration actions read-only and append them only when branch resolution succeeds.
|
|
197
218
|
- Preserve the shared migration-plan contract across coverage and checks without requiring a Prolog-backed status query in non-Git harnesses.
|
|
198
219
|
- Synchronize plugin manifests and freshness skill CLI examples for the next coordinated patch release.
|
|
@@ -202,7 +223,6 @@
|
|
|
202
223
|
edges can no longer hide a newer contradictory policy merely by making that
|
|
203
224
|
newer requirement non-current. Relationship checks also block authored links
|
|
204
225
|
that have silently disappeared from compiled knowledge.
|
|
205
|
-
|
|
206
226
|
- Document `supersedes` as new-to-old across bundled and generated skills.
|
|
207
227
|
- Reject reversed supersession when tracked source history proves that the
|
|
208
228
|
purported replacement predates its target.
|
|
@@ -253,7 +273,6 @@
|
|
|
253
273
|
### Patch Changes
|
|
254
274
|
|
|
255
275
|
- The published Cursor plugin now launches the `kibi-mcp` installed in the opened project, even when Cursor starts plugin processes from the plugin installation directory. The launcher preserves the consumer workspace as the child cwd and `KIBI_WORKSPACE`, and fails with an actionable message when the project-local package is missing.
|
|
256
|
-
|
|
257
276
|
- Replace plugin MCP's ambient `npx --no-install` invocation with the packaged consumer-local resolver.
|
|
258
277
|
- Add isolated and packed-artifact coverage for workspace resolution, package layouts, exit codes, signals, and missing-runtime failures.
|
|
259
278
|
|
|
@@ -262,7 +281,6 @@
|
|
|
262
281
|
### Patch Changes
|
|
263
282
|
|
|
264
283
|
- Existing Kibi installations now receive an agent-guided migration workflow instead of opaque repair advice. Status, checks, and coverage expose one deterministic, hash-bound action plan; agents can safely apply only explicitly approved automatic repairs while semantic, proof, package, and operator work remains visible for review. This makes damaged or legacy KBs recoverable without direct `.kb` edits and gives every run an auditable post-application readback.
|
|
265
|
-
|
|
266
284
|
- Add `kibi.migration-plan.v2` fragments to the 21-operation surfaces and support hash/action authorization in `kb_apply_plan` and `kibi migrate --apply-safe`.
|
|
267
285
|
- Add lazy status/planning and deterministic schema, branch, storage, coordinate, and recovery action execution with workspace-root-safe CLI/MCP parity.
|
|
268
286
|
- Refresh agent skills, traceability fixtures, and SkillOpt coverage for migration safety boundaries and five-axis closeout reporting.
|
|
@@ -272,13 +290,11 @@
|
|
|
272
290
|
### Patch Changes
|
|
273
291
|
|
|
274
292
|
- de7b85a: Verification contracts can now evolve without forcing projects to erase valid historical test evidence. Kibi preserves every earlier receipt, accepts a newly appended receipt for the current contract, and only treats evidence matching both the current contract and live code snapshot as proof.
|
|
275
|
-
|
|
276
293
|
- Separate immutable receipt-history validation from current-contract binding during verification ingest.
|
|
277
294
|
- Report `verification_contract_mismatch` as an explicit proof gap until current-contract evidence is appended.
|
|
278
295
|
- Teach the usage skill and SkillOpt evaluator to preserve older-contract receipts and forbid history rewrites.
|
|
279
296
|
|
|
280
297
|
- 584336b: Agents now get consistent guidance when execution proof, structural coverage, and KB freshness disagree. Current-contract E2E evidence is recorded as v2 without rewriting history, and full checks no longer report a contradictory weak-depth warning when the same live receipt already proves the scenario-backed test. Receipt freshness repairs also identify the affected requirements and tests so agents can rerun the exact contract.
|
|
281
|
-
|
|
282
298
|
- Share snapshot-bound proof evidence with full quality diagnostics.
|
|
283
299
|
- Add bounded receipt-gap telemetry and v2-native remediation guidance.
|
|
284
300
|
- Document and test the new receipt and proof-aware diagnostic requirements.
|
|
@@ -286,13 +302,11 @@
|
|
|
286
302
|
- Keep the MCP package contract verifier self-contained with an explicit semver development dependency and matching workspace lock ranges.
|
|
287
303
|
|
|
288
304
|
- Kibi can now explain a missing or damaged branch-local KB without changing it. Agents receive a precise recovery path, preserving the existing store before a deliberate rebuild, and no longer need to guess whether a clean check also means a clean, fresh KB.
|
|
289
|
-
|
|
290
305
|
- Add non-mutating branch-store inspection to status and a preview-first `kibi branch recover --apply` workflow.
|
|
291
306
|
- Restrict branch migration to the detected historical `master` -> legacy `main` compatibility attachment; arbitrary branch moves are refused.
|
|
292
307
|
- Refresh CLI/MCP status documentation, mirrored agent skills, and release-gate packed consumer coverage.
|
|
293
308
|
|
|
294
309
|
- ef75929: Kibi’s release checks now validate compiled package APIs and dependency ranges in isolated npm and pnpm consumers, while the usage skill and private SkillOpt evaluator report task completion, KB freshness, verification, proof, and accepted limitations independently. Consumer repositories keep ownership of their local artifact update scripts and dependency overrides.
|
|
295
|
-
|
|
296
310
|
- Remove library-side consumer dogfood installers and retain release-only packed checks.
|
|
297
311
|
- Add deterministic closeout expectations and dogfood-derived held-out cases.
|
|
298
312
|
|
|
@@ -301,7 +315,6 @@
|
|
|
301
315
|
### Patch Changes
|
|
302
316
|
|
|
303
317
|
- Dogfood projects now get branch-local knowledge bases that follow the exact Git ref, actionable stale-source diagnostics, and a sanctioned relationship cleanup path. Verification receipts and packed package provenance are stricter and reproducible, while agents receive conservative symbol-recovery guidance and explicit interim-state signals. This prevents silent `master`/`main` drift and makes passing E2E evidence distinguishable from complete semantic proof.
|
|
304
|
-
|
|
305
318
|
- Remove implicit branch-name normalization and add previewed legacy branch migration.
|
|
306
319
|
- Add exact relationship deletion, v2 receipt/schema parity, status diagnostics, dogfood package manifests, and SkillOpt cases.
|
|
307
320
|
|
|
@@ -324,7 +337,6 @@
|
|
|
324
337
|
Diagnostic workflows now produce correlated evidence through both CLI JSON and MCP surfaces. Operators can run a read-only versioned remediation report that points to exact unmatched log events, preserves explicit missing-coverage work, and prevents advisor or preflight evidence from a different identified session or actor from counting as proof.
|
|
325
338
|
|
|
326
339
|
Legacy prose can now be inspected one requirement at a time through a deterministic migration preview. The preview preserves existing code evidence, binds every extracted proposition to exact authored source, ranks project-local ontology candidates, and never emits an auto-applicable write.
|
|
327
|
-
|
|
328
340
|
- Add the shared `kibi.requirement-proof.v2` Prolog evaluator and expose its rows, fresh receipt evidence, and summary counts through CLI and MCP coverage.
|
|
329
341
|
- Persist generated symbol coordinates and symbol metadata into normal and staged RDF projections.
|
|
330
342
|
- Preserve semantic-inventory JSON through mutation, sync, RDF storage, and query round trips, and refresh coordinates before extracting their manifest overlay.
|
|
@@ -346,26 +358,22 @@
|
|
|
346
358
|
### Patch Changes
|
|
347
359
|
|
|
348
360
|
- 5e4e126: Agents no longer treat Kibi's CLI as an MCP fallback. MCP tools and the trusted project-local CLI are presented as peer surfaces over the same 18 operations, and agent guidance now selects whichever interface is visible and approved in the current environment. The CLI's `--input` JSON routes remain first-class for agent automation, with no preference order implied.
|
|
349
|
-
|
|
350
361
|
- Reframe `kibi-usage` Interface Selection and the operation-access preference column to peer surfaces.
|
|
351
362
|
- Update OpenCode prompt injection, enforcement, and init-kibi guidance.
|
|
352
363
|
- Update the MCP init-kibi prompt and the staged-impact evidence resolution text.
|
|
353
364
|
- Re-sync the Cursor and Codex skill bundles.
|
|
354
365
|
|
|
355
366
|
- Codex and Cursor users now receive the same verified prose-to-logic guidance as the Kibi CLI. The bundled `kibi-usage` skill explains proposition coverage, typed Logic IR safety, predicate recovery, and contradiction-aware validation without relying on repository-specific release conventions.
|
|
356
|
-
|
|
357
367
|
- Synchronize the Logic IR, fact-lane, workflow, and portable skill guidance into both agent bundles.
|
|
358
368
|
- Keep the bundled skill manifests and canonical hashes aligned with the CLI public skill.
|
|
359
369
|
|
|
360
370
|
- 5e4e126: Kibi now ships as a portable Agent Plugin alongside the existing Cursor Plugin. The open Agent Plugins standard (agent-plugins.org) packages Kibi's Agent Skills and MCP server so any compatible client — Cursor, Copilot, OpenCode, and others — loads Kibi's capabilities without client-specific adaptation. The Cursor Plugin keeps Cursor-only components (rules, commands, hooks), and both formats are listed in the same marketplace.
|
|
361
|
-
|
|
362
371
|
- Add a committed portable Agent Plugin artifact at `agent-plugin/` with a conformant `plugin.json` manifest (plugin.schema.json 1.0.0).
|
|
363
372
|
- Generate the artifact's `mcp.json` with the required `$schema` and `stdio` server type.
|
|
364
373
|
- List the Agent Plugin (`plugins/kibi-agent-plugin`) in the repo marketplace alongside `kibi-cursor`.
|
|
365
374
|
- Add `scripts/build-agent-plugin.ts` to regenerate the artifact and keep its skills in sync with the canonical bundle.
|
|
366
375
|
|
|
367
376
|
- 2a85fc8: Kibi can now track whether every atomic clause in a normative requirement has a queryable logical representation. Readable prose remains intact, while stable claim keys, linked strict-property or predicate facts, and a requirement manifest expose incomplete modeling before it silently weakens contradiction detection. Exact opposite polarities over the same ground predicate now produce a contradiction.
|
|
368
|
-
|
|
369
377
|
- Remove repository-specific release and optimizer-corpus text from `kibi-usage`.
|
|
370
378
|
- Add portable clause-complete prose-to-ground-predicate/property guidance and examples.
|
|
371
379
|
- Preserve logical claim and predicate-schema fields through Markdown sync.
|
|
@@ -383,7 +391,6 @@
|
|
|
383
391
|
- 2f9073c: Kibi now ships optional guidance for recording UI and visual expectations, so agents working on a screen can discover "where things live" and cannot silently drift the layout. A prose requirement anchors the full visual description, checkable positions, alignment, and header ordering decompose into strict facts that reject conflicting writes, and relational alignment uses the built-in `visual_layout_rule` predicate. The lane is per-project: non-UI projects simply never model UI subjects, and no validation rule requires them.
|
|
384
392
|
|
|
385
393
|
Also, `kb_status` within a long-lived MCP session now observes same-session file and KB changes instead of returning a stale cached result. Compound Prolog goals (such as the status query) are no longer cached in one-shot mode, so a status check after a source or documentation edit reports the current freshness state.
|
|
386
|
-
|
|
387
394
|
- Add `docs/ui-requirements.md` with the three-layer UI modeling guide, payload-shaped examples, and the check workflow.
|
|
388
395
|
- Point the modeling cheatsheet decision tree, agent LLM rules, and the AGENTS quick references at the new UI lane.
|
|
389
396
|
- Add a self-contained `kibi-usage` skill resource (`resources/ui-requirements.md`), declare it in the skill manifest, and add a UI modeling workflow section.
|
|
@@ -395,14 +402,12 @@
|
|
|
395
402
|
### Minor Changes
|
|
396
403
|
|
|
397
404
|
- b2b1792: Kibi guidance now helps agents distinguish suitable relational predicates from scalar constraints and review-only claims without replacing readable requirements. CLI, Codex, and Cursor users receive the same predicate-first decision tree and authoritative examples, reducing invented predicates and unsafe modeling.
|
|
398
|
-
|
|
399
405
|
- Add built-in, project-local, deny, strict-scalar, ambiguity, false-positive, and ontology-gap guidance to the canonical `kibi-usage` skill.
|
|
400
406
|
- Regenerate the Codex and Cursor mirrors with matching canonical hashes.
|
|
401
407
|
|
|
402
408
|
### Patch Changes
|
|
403
409
|
|
|
404
410
|
- 610b5be: The improved Kibi guidance skills will ship to CLI, Codex, and Cursor users in the next package release. This keeps the canonical CLI skill bundle and the generated client-plugin mirrors aligned for downstream installs.
|
|
405
|
-
|
|
406
411
|
- Release the canonical skills bundled by `kibi-cli`.
|
|
407
412
|
- Release the generated `kibi-codex` and `kibi-cursor` skill mirrors.
|
|
408
413
|
|
|
@@ -411,24 +416,20 @@
|
|
|
411
416
|
### Minor Changes
|
|
412
417
|
|
|
413
418
|
- a0fee4a: The Cursor plugin now supports capability-based Kibi interface selection, using visible MCP tools first and a trusted project-local CLI fallback when needed. Deterministic worktree resolution keeps both interface choices anchored to the intended repository.
|
|
414
|
-
|
|
415
419
|
- Add MCP-first, CLI-fallback agent guidance.
|
|
416
420
|
- Resolve trusted worktree runtime paths deterministically.
|
|
417
421
|
|
|
418
422
|
### Patch Changes
|
|
419
423
|
|
|
420
424
|
- cafa25f: Agents can now select Kibi by available capability instead of stopping at MCP-specific guidance. The bundled skills prefer approved MCP tools, fall back safely to a project-local non-installing CLI runner, and provide executable JSON recipes plus an exact 18-operation access catalog.
|
|
421
|
-
|
|
422
425
|
- Document every shared MCP operation's dedicated CLI route, input mode, effects, Prolog requirement, mutability, and telemetry handling.
|
|
423
426
|
- Regenerate Cursor and Codex skill mirrors from the canonical capability-based source.
|
|
424
427
|
|
|
425
428
|
- 23e815a: Agents can now keep using Kibi when MCP tools are unavailable but a trusted project-local CLI is ready. Guidance across Cursor, OpenCode, and MCP documentation now selects the interface by capability and stops for operator action only when neither safe surface is available.
|
|
426
|
-
|
|
427
429
|
- Replace MCP-exclusive guidance with the visible-MCP, trusted-CLI JSON route, and blocked state machine.
|
|
428
430
|
- Preserve direct `.kb/` access prohibitions, discovery-before-mutation, sequential writes, and completion validation gates.
|
|
429
431
|
|
|
430
432
|
- e71f1ce: Cursor dogfood sessions now keep each linked worktree as the Kibi data workspace while launching a compatible built MCP runtime from that worktree or its primary checkout. Invalid, stale, or unrelated builds are rejected without installing packages, and Cursor hooks offer the project-local CLI only as advisory guidance after explicit workspace trust.
|
|
431
|
-
|
|
432
433
|
- Add deterministic build, runtime, SWI-Prolog, and package-version checks to the Cursor worktree resolver.
|
|
433
434
|
- Preserve an explicit `KIBI_WORKSPACE` when the MCP diagnostic launcher starts from another runtime root.
|
|
434
435
|
- Track MCP capability as `observed` or `unknown` and keep hook-driven CLI fallback non-executing.
|
|
@@ -440,7 +441,6 @@
|
|
|
440
441
|
- f1db710: Kibi check outputs now have a stable advisory diagnostics lane for auditability review signals. Operators and MCP clients can receive `qualityDiagnostics` alongside hard `violations` without advisory-only findings changing pass/fail counts or exit behavior. Existing staged impact failures, including symbol granularity violations, remain blocking. Source impact analysis now also highlights overly broad symbols, indistinguishable symbol coordinates, and mixed-purpose component/class ownership as review-only guidance.
|
|
441
442
|
|
|
442
443
|
Technical summary:
|
|
443
|
-
|
|
444
444
|
- Add the public `QualityDiagnostic` type with `error`, `warning`, `review`, and `info` severities plus explicit `blocking` semantics.
|
|
445
445
|
- Preserve existing `violations`, `diagnostics`, and `impactDiagnostics` fields while adding MCP structured `qualityDiagnostics` output support.
|
|
446
446
|
- Preserve explicitly filtered MCP `kb_check` rule semantics so advisory full-KB quality scans only run for unfiltered checks or requested impact diagnostics.
|
|
@@ -455,7 +455,6 @@
|
|
|
455
455
|
- Kibi now gives agents source-impact feedback while they are still editing, instead of waiting for the commit hook to be the first signal. Meaningful source edits can be checked through MCP with changed-file impact diagnostics, so agents see coarse symbol ownership, stale symbol evidence, and semantic-review prompts while the source context is fresh. OpenCode, Cursor, and Codex adapters now steer agents toward that MCP-first workflow and keep CLI/hooks as the later safety net.
|
|
456
456
|
|
|
457
457
|
Technical summary:
|
|
458
|
-
|
|
459
458
|
- Add reusable CLI changed-file impact diagnostics and export them for MCP consumption.
|
|
460
459
|
- Extend MCP `kb_check` with source-file impact options and structured impact output.
|
|
461
460
|
- Update OpenCode, Cursor, and Codex guidance/hooks to request impact-enabled `kb_check` after source edits.
|
|
@@ -468,7 +467,6 @@
|
|
|
468
467
|
- Kibi now gives agents clearer guidance for the diagnostics flow, so the release notes should reflect that the bundled usage text and MCP logging story were tightened together.
|
|
469
468
|
|
|
470
469
|
This update also keeps the package mirrors aligned where applicable, which helps downstream plugin consumers stay in sync with the canonical guidance.
|
|
471
|
-
|
|
472
470
|
- Hardened bundled skill guidance for kibi usage.
|
|
473
471
|
- Improved MCP diagnostic logging shape and validation hints.
|
|
474
472
|
- Synced packaged skill copies where they are shipped with the release.
|
|
@@ -478,14 +476,12 @@
|
|
|
478
476
|
### Patch Changes
|
|
479
477
|
|
|
480
478
|
- 5d2975a: Cursor stop hooks no longer inject a long multi-line Kibi freshness reminder after every agent response. Follow-ups are now one line, and most sessions stay silent.
|
|
481
|
-
|
|
482
479
|
- Track `kb_upsert`, `kb_delete`, and `kb_check` MCP usage during the session.
|
|
483
480
|
- Emit no stop follow-up when nothing KB-relevant changed, or when `kb_check` already ran after edits.
|
|
484
481
|
- Emit a short summary (`Kibi KB updated (kb_upsert).`) after KB mutations, or a single-line sync nudge when source files changed without KB activity.
|
|
485
482
|
- Fix publish workflow to build and pack `kibi-cursor` tarballs before npm publish.
|
|
486
483
|
|
|
487
484
|
- Cursor sessions now use Cursor's documented workspace root payload when deciding whether Kibi is already configured. This prevents the plugin from telling agents that Kibi needs bootstrapping just because the hook process is running from the plugin install directory instead of the actual workspace. The bootstrap reminder now names the missing `.kb/config.json` condition directly instead of implying MCP is unavailable.
|
|
488
|
-
|
|
489
485
|
- Parse `workspace_roots` from Cursor hook payloads and prefer the first workspace root for Kibi config detection.
|
|
490
486
|
- Add a regression test covering `sessionStart` without `cwd` when `workspace_roots` points at a configured workspace.
|
|
491
487
|
- Reword the bootstrap reminder to describe a missing workspace config rather than generic initialization failure.
|
|
@@ -495,7 +491,6 @@
|
|
|
495
491
|
### Minor Changes
|
|
496
492
|
|
|
497
493
|
- Cursor users can now install an optional Kibi adapter plugin that bundles MCP configuration, workflow rules, skills, slash commands, and advisory editor hooks. The plugin builds on the existing `kibi-cli` and `kibi-mcp` foundation without replacing them, and teams that prefer manual setup can continue configuring the local `kibi-mcp` server directly.
|
|
498
|
-
|
|
499
494
|
- Add the publishable `kibi-cursor` package with Cursor plugin manifest assets, rules, skills, commands, hook declarations, and MCP config.
|
|
500
495
|
- Add advisory hooks for bootstrap reminders, direct `.kb` edit warnings, read/write guidance, and session freshness follow-ups.
|
|
501
496
|
- Wire `kibi-cursor` into workspace build, pack, release-state, publish, CI unit coverage, docs, and marketplace verification.
|
|
@@ -505,7 +500,6 @@
|
|
|
505
500
|
### Minor Changes
|
|
506
501
|
|
|
507
502
|
- Cursor users can install an optional Kibi adapter plugin that bundles MCP configuration, workflow rules, skills, slash commands, and advisory editor hooks. The plugin builds on `kibi-core`, `kibi-cli`, and `kibi-mcp` without replacing them, and teams that prefer manual setup can continue configuring the local `kibi-mcp` server directly.
|
|
508
|
-
|
|
509
503
|
- Add the publishable `kibi-cursor` package with Cursor plugin manifest assets, bundled skills, rules, commands, hook declarations, and MCP config.
|
|
510
504
|
- Add a conservative hook runner with bounded session state, bootstrap reminders, direct `.kb` edit warnings, read/write guidance, and freshness follow-ups.
|
|
511
505
|
- Wire `kibi-cursor` into workspace build, pack, release-state, publish, CI unit coverage, docs, and marketplace verification.
|
package/README.md
CHANGED
|
@@ -10,14 +10,13 @@ Install these **before** enabling the plugin MCP server:
|
|
|
10
10
|
|
|
11
11
|
| Requirement | Why |
|
|
12
12
|
| --- | --- |
|
|
13
|
-
| **SWI-Prolog 9+** (`swipl` on `PATH`
|
|
13
|
+
| **SWI-Prolog 9+** | Powers Kibi inference and validation. Bundled with `kibi-cli` on Linux (x64, arm64) and macOS; install it with `swipl` on `PATH` only on other platforms |
|
|
14
14
|
| **`kibi-cli`** | Project CLI (`kibi` command) |
|
|
15
15
|
| **`kibi-mcp`** | MCP server installed in the opened project; the plugin launcher resolves this package without downloading it |
|
|
16
16
|
| **`kibi-core`** | Shared graph/runtime dependency |
|
|
17
17
|
|
|
18
18
|
```bash
|
|
19
19
|
npm install --save-dev kibi-cli kibi-mcp kibi-core
|
|
20
|
-
swipl --version
|
|
21
20
|
npm exec -- kibi doctor
|
|
22
21
|
```
|
|
23
22
|
|
|
@@ -58,7 +57,10 @@ cp -r "$(npm root)/kibi-cursor" ~/.cursor/plugins/local/kibi-cursor
|
|
|
58
57
|
The plugin bundles `mcp.json` with a thin launcher that locates and starts the
|
|
59
58
|
`kibi-mcp` package installed in the opened project. The launcher starts the
|
|
60
59
|
resolved child from the consumer workspace and sets `KIBI_WORKSPACE` to that
|
|
61
|
-
root; it never downloads, bundles, or falls back to a global Kibi runtime
|
|
60
|
+
root; it never downloads, bundles, or falls back to a global Kibi runtime.
|
|
61
|
+
The `preToolUse` hook adds `workspaceRoot` (the agent's current workspace) to
|
|
62
|
+
every Kibi MCP call, so an agent working in a git worktree is answered from
|
|
63
|
+
that worktree's branch. Setting `KIBI_WORKSPACE` pins one workspace instead:
|
|
62
64
|
|
|
63
65
|
```json
|
|
64
66
|
{
|
|
@@ -105,7 +107,7 @@ agent-plugin/
|
|
|
105
107
|
|
|
106
108
|
- Cursor loads the portable build directly; Cursor-only components (rules, commands, hooks) remain in the `.cursor-plugin` Cursor Plugin build.
|
|
107
109
|
- Both formats are listed in the same marketplace; pick the format your client needs.
|
|
108
|
-
- The portable build still requires the project-local `kibi-cli`, `kibi-mcp`, and `kibi-core` packages plus SWI-Prolog 9+ (see Prerequisites above).
|
|
110
|
+
- The portable build still requires the project-local `kibi-cli`, `kibi-mcp`, and `kibi-core` packages plus SWI-Prolog 9+ (bundled on supported platforms; see Prerequisites above).
|
|
109
111
|
|
|
110
112
|
## Features
|
|
111
113
|
|
package/agent-plugin/plugin.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$schema": "https://agent-plugins.org/schemas/1.0.0/plugin.schema.json",
|
|
3
3
|
"name": "kibi",
|
|
4
|
-
"version": "2.
|
|
4
|
+
"version": "2.2.0",
|
|
5
5
|
"description": "Repo-local, per-branch, queryable knowledge base. Portable Agent Plugin packaging Kibi's Agent Skills and MCP server.",
|
|
6
6
|
"author": { "name": "Kibi" },
|
|
7
7
|
"homepage": "https://github.com/Looted/kibi/blob/develop/docs/install.md",
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
---
|
|
2
2
|
id: kibi-bootstrap
|
|
3
3
|
name: kibi-bootstrap
|
|
4
|
-
description: Bootstrap Kibi from the current Git checkout with
|
|
5
|
-
version: 3.
|
|
4
|
+
description: Bootstrap Kibi from the current Git checkout and the project's existing knowledge sources, with a source interview, cited intent claims, preview approval, source-first writes, and repair-safe completion.
|
|
5
|
+
version: 3.1.0
|
|
6
6
|
kibiCompatibility: ">=1.0.0"
|
|
7
7
|
tags:
|
|
8
8
|
- kibi
|
|
@@ -18,20 +18,56 @@ resources:
|
|
|
18
18
|
## Goal
|
|
19
19
|
|
|
20
20
|
Seed branch-local Kibi knowledge for an attached but thin repository without
|
|
21
|
-
creating a parallel human-maintained ticket system.
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
21
|
+
creating a parallel human-maintained ticket system. Code shows what the
|
|
22
|
+
system does, not why; intent usually lives elsewhere (issue trackers, wikis,
|
|
23
|
+
specs, decision logs). Lead a short interview to find those sources, harvest
|
|
24
|
+
cited intent from them, and let the planner consolidate it with repository
|
|
25
|
+
evidence. Agents own reading and translation; humans name the sources,
|
|
26
|
+
judge their authority, and resolve genuine ambiguity. A seeded repository
|
|
27
|
+
hands off to the normal Kibi workflow.
|
|
25
28
|
|
|
26
29
|
## Interface and preview
|
|
27
30
|
|
|
28
31
|
Use the visible approved MCP surface or the trusted project-local CLI as equal
|
|
29
|
-
peer interfaces. If neither is available, stop.
|
|
30
|
-
|
|
32
|
+
peer interfaces. If neither is available, stop. Interview first, then plan,
|
|
33
|
+
then preview the exact plan for approval.
|
|
34
|
+
|
|
35
|
+
## Interview first
|
|
36
|
+
|
|
37
|
+
Before planning:
|
|
38
|
+
|
|
39
|
+
1. Inventory what you can already read: your own MCP connectors and tools
|
|
40
|
+
(issue trackers such as Jira, YouTrack, Linear, or GitHub Issues; wikis such
|
|
41
|
+
as Confluence or Notion; drives and design tools), and in-repo docs, ADRs,
|
|
42
|
+
and specs.
|
|
43
|
+
2. Ask the human, in one message: what the repository is for; which of those
|
|
44
|
+
sources hold product intent; which are authoritative, supporting, or stale;
|
|
45
|
+
what is missing; and which product areas matter first. If an important
|
|
46
|
+
source has no connector, say which one and suggest connecting it, then
|
|
47
|
+
continue with what is reachable. Never invent access you lack.
|
|
48
|
+
3. Read the confirmed, non-stale sources through your connectors. Harvest one
|
|
49
|
+
normative statement per behavior, each citing its source and an exact
|
|
50
|
+
reference (ticket key, page URL, or section anchor). Keep the source's
|
|
51
|
+
meaning; do not merge, generalize, or resolve conflicts yourself.
|
|
52
|
+
|
|
53
|
+
Declare the result in `bootstrapContext`: `projectSummary`,
|
|
54
|
+
`knowledgeSources` (id, kind, title, locator, authority, optional connector),
|
|
55
|
+
and `intentClaims` (statement, sourceId, reference, optional excerpt). Kibi
|
|
56
|
+
never contacts those sources; it binds what you declare into the plan hash.
|
|
57
|
+
|
|
58
|
+
## Plan and approval
|
|
59
|
+
|
|
60
|
+
Run `kb_plan_bootstrap` (or `plan-bootstrap --input`) read-only with that
|
|
61
|
+
context. Grounded authoritative or supporting claims become cited `req`
|
|
62
|
+
candidates; claims the strict modeler cannot ground come back as authoring
|
|
63
|
+
follow-ups; stale sources produce no candidates; undeclared sources are
|
|
64
|
+
reported in diagnostics. If the plan returns `needs_context`, ask only its
|
|
31
65
|
bounded questions (never more than four), then rerun the planner. Show the
|
|
32
|
-
complete returned `structuredContent.plan`, including its canonical hash
|
|
33
|
-
|
|
34
|
-
`kb_apply_plan`; do not reconstruct
|
|
66
|
+
complete returned `structuredContent.plan`, including its canonical hash and
|
|
67
|
+
which candidates cite which sources, and get explicit approval before any
|
|
68
|
+
write. Pass that plan object unchanged to `kb_apply_plan`; do not reconstruct
|
|
69
|
+
it from preview fields. When a claim contradicts the code or another claim,
|
|
70
|
+
put it to the human instead of choosing.
|
|
35
71
|
|
|
36
72
|
For CLI JSON, use the trusted route with `--input` (for example
|
|
37
73
|
`printf '%s\n' '{}' | kibi status --input -`); MCP and CLI are semantic peers.
|
|
@@ -1,6 +1,11 @@
|
|
|
1
1
|
# Bootstrap resource
|
|
2
2
|
|
|
3
|
-
`kb_plan_bootstrap` is read-only and returns `kibi.bootstrap-plan.v1`.
|
|
3
|
+
`kb_plan_bootstrap` is read-only and returns `kibi.bootstrap-plan.v1`. Declared
|
|
4
|
+
`knowledgeSources` and cited `intentClaims` are part of `declaredContext` and
|
|
5
|
+
therefore of the plan hash; a candidate built from a claim has `sourceKind:
|
|
6
|
+
intent_claim` and evidence rows `intent_claim:<sourceId>:<reference>`,
|
|
7
|
+
`knowledge_source:<kind>:<locator>`, and `source_authority:<authority>`. Its
|
|
8
|
+
requirement keeps the citation as `text_ref: <sourceId>:<reference>`. Review
|
|
4
9
|
candidate evidence, exact actions, dependencies, expected snapshots, source
|
|
5
10
|
hashes, bounded questions, diagnostics, and the canonical `planHash` before
|
|
6
11
|
approving. A preview does not authorize source edits. After approval, pass the
|
|
@@ -56,6 +56,20 @@ printf '%s\n' '{"query":"checkout","limit":10}' | npx --no-install kibi search -
|
|
|
56
56
|
Read `resources/operation-access.md` for the route, result version, effects,
|
|
57
57
|
mutability, and Prolog requirements of each operation.
|
|
58
58
|
|
|
59
|
+
## Working in a git worktree or another directory
|
|
60
|
+
|
|
61
|
+
Kibi MCP servers start in one project and answer from its knowledge base.
|
|
62
|
+
Every Kibi MCP tool accepts `workspaceRoot`: when your working directory is not
|
|
63
|
+
the project the server started in (a git worktree, a sibling checkout), pass
|
|
64
|
+
your working directory as `workspaceRoot` on every call. Host plugins with
|
|
65
|
+
pre-tool hooks add it for you. The server answers from that workspace when it
|
|
66
|
+
is a worktree of the same repository or lies under the client's MCP roots.
|
|
67
|
+
|
|
68
|
+
If a result carries a `workspace_mismatch` diagnostic, the answer came from a
|
|
69
|
+
different workspace than the one you asked for; its `detail.reason` says why.
|
|
70
|
+
Use the CLI from your working directory instead: `npx --no-install kibi ...`
|
|
71
|
+
runs where you are and needs no `workspaceRoot`.
|
|
72
|
+
|
|
59
73
|
## Safe workflow
|
|
60
74
|
|
|
61
75
|
1. Always discover before you mutate: start with `kb_search`, then exact-filter with `kb_query`. Use
|
|
@@ -23,6 +23,7 @@ per operation. Effects are authoritative for mutability and adapter annotations.
|
|
|
23
23
|
| `kb_upsert` | `upsert` | --input JSON | write | yes | kb-write, workspace-write | peer; capability-selected | kibi.kb_upsert.v1 | yes | unsafe | no | yes |
|
|
24
24
|
| `kb_delete` | `delete` | --input JSON | write | yes | kb-write, workspace-write | peer; capability-selected | kibi.kb_delete.v1 | yes | unsafe | no | yes |
|
|
25
25
|
| `kb_check` | `check` | --input JSON or flags | read | yes | kb-read, workspace-read | peer; capability-selected | kibi.kb_check.v1 | no | safe | no | yes |
|
|
26
|
+
| `kb_prepare_impact_review` | `prepare-impact-review` | --input JSON | read | no | workspace-read, kb-read | peer; capability-selected | kibi.kb_prepare_impact_review.v1 | no | safe | no | yes |
|
|
26
27
|
| `kb_sparql_remote` | `sparql-remote` | --input JSON | read | no | network-read | peer; capability-selected | kibi.kb_sparql_remote.v1 | no | safe | yes | yes |
|
|
27
28
|
| `kb_compile_intent` | `compile-intent` | --input JSON | read | yes | kb-read, workspace-read | peer; capability-selected | kibi.kb_compile_intent.v1 | no | safe | no | yes |
|
|
28
29
|
| `kb_apply_plan` | `apply-plan` | --input JSON | write | yes | kb-read, kb-write, workspace-read, workspace-write | peer; capability-selected | kibi.kb_apply_plan.v1 | yes | unsafe | no | yes |
|
|
@@ -40,3 +41,7 @@ printf '%s\n' '{"query":"authentication","limit":10}' | npx --no-install kibi se
|
|
|
40
41
|
`_diagnostic_telemetry` is adapter metadata, not business input. Never copy it
|
|
41
42
|
into entity properties. On `committed_with_repairs`, follow typed required
|
|
42
43
|
`nextActions` and do not retry the original mutation.
|
|
44
|
+
|
|
45
|
+
`workspaceRoot` is an MCP-only routing argument naming the directory a call is
|
|
46
|
+
about (see the kibi-usage skill). The CLI JSON routes do not accept it; they
|
|
47
|
+
always run in the current directory.
|
|
@@ -14,6 +14,9 @@ infrastructure is missing, run `kibi init` first. Then use the canonical
|
|
|
14
14
|
planner and pass its unchanged returned `structuredContent.plan` to
|
|
15
15
|
`kb_apply_plan` only after explicit approval.
|
|
16
16
|
|
|
17
|
-
|
|
17
|
+
Start with the skill's source interview: ask which issue trackers, wikis, and
|
|
18
|
+
specs hold product intent and how authoritative each is, then pass the
|
|
19
|
+
declared sources and cited intent claims to the planner. After that, further
|
|
20
|
+
questions come only from a `needs_context` planner result. Inspect typed apply
|
|
18
21
|
`nextActions`, finish with `kb_check` and `kb_status`, and never read or edit
|
|
19
22
|
`.kb` directly.
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "kibi-cursor",
|
|
3
3
|
"displayName": "Kibi",
|
|
4
|
-
"version": "2.
|
|
5
|
-
"description": "Optional Cursor adapter for Kibi. Requires
|
|
4
|
+
"version": "2.2.0",
|
|
5
|
+
"description": "Optional Cursor adapter for Kibi. Requires project-local kibi-cli, kibi-mcp, and kibi-core (SWI-Prolog is bundled on Linux and macOS) before the bundled MCP server can start.",
|
|
6
6
|
"license": "AGPL-3.0-or-later",
|
|
7
7
|
"author": {
|
|
8
8
|
"name": "Kibi"
|
|
@@ -14,6 +14,9 @@ infrastructure is missing, run `kibi init` first. Then use the canonical
|
|
|
14
14
|
planner and pass its unchanged returned `structuredContent.plan` to
|
|
15
15
|
`kb_apply_plan` only after explicit approval.
|
|
16
16
|
|
|
17
|
-
|
|
17
|
+
Start with the skill's source interview: ask which issue trackers, wikis, and
|
|
18
|
+
specs hold product intent and how authoritative each is, then pass the
|
|
19
|
+
declared sources and cited intent claims to the planner. After that, further
|
|
20
|
+
questions come only from a `needs_context` planner result. Inspect typed apply
|
|
18
21
|
`nextActions`, finish with `kb_check` and `kb_status`, and never read or edit
|
|
19
22
|
`.kb` directly.
|
package/dist/hook-runner.d.ts
CHANGED
|
@@ -5,11 +5,21 @@ export type CursorHookResult = {
|
|
|
5
5
|
user_message?: string;
|
|
6
6
|
agent_message?: string;
|
|
7
7
|
followup_message?: string;
|
|
8
|
+
/**
|
|
9
|
+
* preToolUse only: replacement tool input. Used without `permission`, so
|
|
10
|
+
* Cursor's own approval flow is unchanged.
|
|
11
|
+
*/
|
|
12
|
+
updated_input?: Record<string, unknown>;
|
|
8
13
|
};
|
|
9
14
|
export type HookEnvironment = {
|
|
10
15
|
pluginData?: string;
|
|
11
16
|
workspaceTrusted?: boolean;
|
|
12
17
|
};
|
|
18
|
+
/**
|
|
19
|
+
* The Kibi workspace that owns `directory`: the nearest ancestor with
|
|
20
|
+
* `.kb/manifest.json`, without crossing a `.git` boundary.
|
|
21
|
+
*/
|
|
22
|
+
export declare function kibiWorkspaceFor(directory: string | undefined): string | undefined;
|
|
13
23
|
export declare function runHook(rawInput: unknown, environment?: HookEnvironment): Promise<CursorHookResult>;
|
|
14
24
|
export declare function main(): Promise<void>;
|
|
15
25
|
export declare function isInvokedAsCli(argv1: string | undefined, moduleUrl: string): boolean;
|
package/dist/hook-runner.js
CHANGED
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
import fs from "node:fs";
|
|
4
4
|
import path from "node:path";
|
|
5
5
|
import { fileURLToPath, pathToFileURL } from "node:url";
|
|
6
|
+
import { stampKibiWorkspace } from "kibi-agent-core/kb-mcp-tools";
|
|
6
7
|
import { preEditGuidance, readGuidance, writeGuidance } from "./guidance.js";
|
|
7
8
|
import { parseHookInput, parseStdinJson, readStdin } from "./hook-input.js";
|
|
8
9
|
import { addDirtyPaths, clearSessionHookState, hasGuidedPath, loadHookState, recordKbMcpTool, recordPlanDelivered, rememberGuidedPath, resolveStateDir, } from "./hook-state.js";
|
|
@@ -29,6 +30,26 @@ function hasKibiConfig(cwd) {
|
|
|
29
30
|
}
|
|
30
31
|
return fs.existsSync(path.join(cwd, ".kb", "manifest.json"));
|
|
31
32
|
}
|
|
33
|
+
/**
|
|
34
|
+
* The Kibi workspace that owns `directory`: the nearest ancestor with
|
|
35
|
+
* `.kb/manifest.json`, without crossing a `.git` boundary.
|
|
36
|
+
*/
|
|
37
|
+
export function kibiWorkspaceFor(directory) {
|
|
38
|
+
if (!directory)
|
|
39
|
+
return undefined;
|
|
40
|
+
let current = path.resolve(directory);
|
|
41
|
+
for (;;) {
|
|
42
|
+
if (fs.existsSync(path.join(current, ".kb", "manifest.json"))) {
|
|
43
|
+
return current;
|
|
44
|
+
}
|
|
45
|
+
if (fs.existsSync(path.join(current, ".git")))
|
|
46
|
+
return undefined;
|
|
47
|
+
const parent = path.dirname(current);
|
|
48
|
+
if (parent === current)
|
|
49
|
+
return undefined;
|
|
50
|
+
current = parent;
|
|
51
|
+
}
|
|
52
|
+
}
|
|
32
53
|
function isEditLikeTool(toolName) {
|
|
33
54
|
return toolName === undefined || editableTools.has(toolName);
|
|
34
55
|
}
|
|
@@ -79,6 +100,14 @@ export async function runHook(rawInput, environment = {}) {
|
|
|
79
100
|
return advisory ? { additional_context: advisory } : emptyResult();
|
|
80
101
|
}
|
|
81
102
|
case "preToolUse": {
|
|
103
|
+
// Name the agent's workspace on every Kibi MCP call so the launcher
|
|
104
|
+
// answers from it, also for agents working in a git worktree. The
|
|
105
|
+
// per-call cwd wins over workspace_roots, which can be the window's
|
|
106
|
+
// folders rather than the agent's checkout.
|
|
107
|
+
const stamped = stampKibiWorkspace(input.toolName, input.toolInput, kibiWorkspaceFor(input.cwd ?? input.workspaceRoots?.[0]));
|
|
108
|
+
if (stamped) {
|
|
109
|
+
return { updated_input: stamped };
|
|
110
|
+
}
|
|
82
111
|
const explicitPaths = extractExplicitPathFields(input.toolInput);
|
|
83
112
|
const hasDirectKbEdit = isEditLikeTool(input.toolName) && explicitPaths.some(isDirectKbPath);
|
|
84
113
|
if (hasDirectKbEdit) {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
|
-
"kibi-bootstrap/SKILL.md": "
|
|
3
|
-
"kibi-bootstrap/resources/bootstrap.md": "
|
|
2
|
+
"kibi-bootstrap/SKILL.md": "5bb63f0e5ee5ba7e60ef3dc7758ad84ee39e83ffeb46b9f038221bc48a656676",
|
|
3
|
+
"kibi-bootstrap/resources/bootstrap.md": "14531116e8a0efc69b7ccb105afebeeaa2185e720bad2d5bebadc6635598a041",
|
|
4
4
|
"kibi-bootstrap/resources/branch-lifecycle.md": "c854264ce888439140883a3fc636db5e522f020dd27b30a5c1ecc4105b64ed13",
|
|
5
5
|
"kibi-bootstrap/resources/operation-access.md": "b5a6a59e72d800c376e7fad79132897623c32a0ce152a1e8d73f9628b444db51",
|
|
6
6
|
"kibi-bootstrap/resources/source-authoring.md": "bf296e62f69474e01797d6cb9469bf624551dca834dd188abb6e705bd96fa586",
|
|
@@ -13,12 +13,12 @@
|
|
|
13
13
|
"kibi-traceability/resources/operation-access.md": "39f7972ab7f4ae7479e78f7072bb50e8e6c4cdf4f857425f69d2522d37db437c",
|
|
14
14
|
"kibi-traceability/resources/source-authoring.md": "408c6ee2bef1b84e0194c0538ef929c26a0a617e631b2234247388140dbbdd08",
|
|
15
15
|
"kibi-traceability/resources/traceability.md": "38c290a0bc71bd1692e115f22694743946e2f69630e134acfd43cee5f613fb88",
|
|
16
|
-
"kibi-usage/SKILL.md": "
|
|
16
|
+
"kibi-usage/SKILL.md": "94982ae809de80467e5f2417ca64235dae0f81166407cdb8d0f66f322bd9efc8",
|
|
17
17
|
"kibi-usage/resources/branch-lifecycle.md": "f1bf359e9826e83c548f3cd0287f8175a62456527b0132b06b3f9f74aa59b7d6",
|
|
18
18
|
"kibi-usage/resources/fact-lanes.md": "7ac928cc6b3d189eee6a9cda282918677d5a222cd7ba9b7f324e6553cd3adce8",
|
|
19
19
|
"kibi-usage/resources/kb-improvement.md": "17e8b6cf6a0dd43b443a2bfd92e7205d099647a5f1c75fe85413a6cea63d86c6",
|
|
20
20
|
"kibi-usage/resources/logic-ir.md": "151675d0ffa813cb9e271084102a3af42de369b8f9a0c64866af0cdc4d924063",
|
|
21
|
-
"kibi-usage/resources/operation-access.md": "
|
|
21
|
+
"kibi-usage/resources/operation-access.md": "df8e84258f4e4855c08a9d24f7704fd540f0ea4295f5f255a4a9500a450ccf80",
|
|
22
22
|
"kibi-usage/resources/proof.md": "7391046fbdeece4858b668360c60755f184af6dfedda9dbc67e2fa4574dbce7f",
|
|
23
23
|
"kibi-usage/resources/relationship-directions.md": "0fdd67032c2d15299f772845fc4f807eb9435b09507bd87a5911ab33db2f143d",
|
|
24
24
|
"kibi-usage/resources/source-authoring.md": "80978cea0614484292c7a70d511a3f50458f48ef976bf0675b8bb96abe9d3d36",
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
---
|
|
2
2
|
id: kibi-bootstrap
|
|
3
3
|
name: kibi-bootstrap
|
|
4
|
-
description: Bootstrap Kibi from the current Git checkout with
|
|
5
|
-
version: 3.
|
|
4
|
+
description: Bootstrap Kibi from the current Git checkout and the project's existing knowledge sources, with a source interview, cited intent claims, preview approval, source-first writes, and repair-safe completion.
|
|
5
|
+
version: 3.1.0
|
|
6
6
|
kibiCompatibility: ">=1.0.0"
|
|
7
7
|
tags:
|
|
8
8
|
- kibi
|
|
@@ -18,20 +18,56 @@ resources:
|
|
|
18
18
|
## Goal
|
|
19
19
|
|
|
20
20
|
Seed branch-local Kibi knowledge for an attached but thin repository without
|
|
21
|
-
creating a parallel human-maintained ticket system.
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
21
|
+
creating a parallel human-maintained ticket system. Code shows what the
|
|
22
|
+
system does, not why; intent usually lives elsewhere (issue trackers, wikis,
|
|
23
|
+
specs, decision logs). Lead a short interview to find those sources, harvest
|
|
24
|
+
cited intent from them, and let the planner consolidate it with repository
|
|
25
|
+
evidence. Agents own reading and translation; humans name the sources,
|
|
26
|
+
judge their authority, and resolve genuine ambiguity. A seeded repository
|
|
27
|
+
hands off to the normal Kibi workflow.
|
|
25
28
|
|
|
26
29
|
## Interface and preview
|
|
27
30
|
|
|
28
31
|
Use the visible approved MCP surface or the trusted project-local CLI as equal
|
|
29
|
-
peer interfaces. If neither is available, stop.
|
|
30
|
-
|
|
32
|
+
peer interfaces. If neither is available, stop. Interview first, then plan,
|
|
33
|
+
then preview the exact plan for approval.
|
|
34
|
+
|
|
35
|
+
## Interview first
|
|
36
|
+
|
|
37
|
+
Before planning:
|
|
38
|
+
|
|
39
|
+
1. Inventory what you can already read: your own MCP connectors and tools
|
|
40
|
+
(issue trackers such as Jira, YouTrack, Linear, or GitHub Issues; wikis such
|
|
41
|
+
as Confluence or Notion; drives and design tools), and in-repo docs, ADRs,
|
|
42
|
+
and specs.
|
|
43
|
+
2. Ask the human, in one message: what the repository is for; which of those
|
|
44
|
+
sources hold product intent; which are authoritative, supporting, or stale;
|
|
45
|
+
what is missing; and which product areas matter first. If an important
|
|
46
|
+
source has no connector, say which one and suggest connecting it, then
|
|
47
|
+
continue with what is reachable. Never invent access you lack.
|
|
48
|
+
3. Read the confirmed, non-stale sources through your connectors. Harvest one
|
|
49
|
+
normative statement per behavior, each citing its source and an exact
|
|
50
|
+
reference (ticket key, page URL, or section anchor). Keep the source's
|
|
51
|
+
meaning; do not merge, generalize, or resolve conflicts yourself.
|
|
52
|
+
|
|
53
|
+
Declare the result in `bootstrapContext`: `projectSummary`,
|
|
54
|
+
`knowledgeSources` (id, kind, title, locator, authority, optional connector),
|
|
55
|
+
and `intentClaims` (statement, sourceId, reference, optional excerpt). Kibi
|
|
56
|
+
never contacts those sources; it binds what you declare into the plan hash.
|
|
57
|
+
|
|
58
|
+
## Plan and approval
|
|
59
|
+
|
|
60
|
+
Run `kb_plan_bootstrap` (or `plan-bootstrap --input`) read-only with that
|
|
61
|
+
context. Grounded authoritative or supporting claims become cited `req`
|
|
62
|
+
candidates; claims the strict modeler cannot ground come back as authoring
|
|
63
|
+
follow-ups; stale sources produce no candidates; undeclared sources are
|
|
64
|
+
reported in diagnostics. If the plan returns `needs_context`, ask only its
|
|
31
65
|
bounded questions (never more than four), then rerun the planner. Show the
|
|
32
|
-
complete returned `structuredContent.plan`, including its canonical hash
|
|
33
|
-
|
|
34
|
-
`kb_apply_plan`; do not reconstruct
|
|
66
|
+
complete returned `structuredContent.plan`, including its canonical hash and
|
|
67
|
+
which candidates cite which sources, and get explicit approval before any
|
|
68
|
+
write. Pass that plan object unchanged to `kb_apply_plan`; do not reconstruct
|
|
69
|
+
it from preview fields. When a claim contradicts the code or another claim,
|
|
70
|
+
put it to the human instead of choosing.
|
|
35
71
|
|
|
36
72
|
For CLI JSON, use the trusted route with `--input` (for example
|
|
37
73
|
`printf '%s\n' '{}' | kibi status --input -`); MCP and CLI are semantic peers.
|
|
@@ -1,6 +1,11 @@
|
|
|
1
1
|
# Bootstrap resource
|
|
2
2
|
|
|
3
|
-
`kb_plan_bootstrap` is read-only and returns `kibi.bootstrap-plan.v1`.
|
|
3
|
+
`kb_plan_bootstrap` is read-only and returns `kibi.bootstrap-plan.v1`. Declared
|
|
4
|
+
`knowledgeSources` and cited `intentClaims` are part of `declaredContext` and
|
|
5
|
+
therefore of the plan hash; a candidate built from a claim has `sourceKind:
|
|
6
|
+
intent_claim` and evidence rows `intent_claim:<sourceId>:<reference>`,
|
|
7
|
+
`knowledge_source:<kind>:<locator>`, and `source_authority:<authority>`. Its
|
|
8
|
+
requirement keeps the citation as `text_ref: <sourceId>:<reference>`. Review
|
|
4
9
|
candidate evidence, exact actions, dependencies, expected snapshots, source
|
|
5
10
|
hashes, bounded questions, diagnostics, and the canonical `planHash` before
|
|
6
11
|
approving. A preview does not authorize source edits. After approval, pass the
|
|
@@ -56,6 +56,20 @@ printf '%s\n' '{"query":"checkout","limit":10}' | npx --no-install kibi search -
|
|
|
56
56
|
Read `resources/operation-access.md` for the route, result version, effects,
|
|
57
57
|
mutability, and Prolog requirements of each operation.
|
|
58
58
|
|
|
59
|
+
## Working in a git worktree or another directory
|
|
60
|
+
|
|
61
|
+
Kibi MCP servers start in one project and answer from its knowledge base.
|
|
62
|
+
Every Kibi MCP tool accepts `workspaceRoot`: when your working directory is not
|
|
63
|
+
the project the server started in (a git worktree, a sibling checkout), pass
|
|
64
|
+
your working directory as `workspaceRoot` on every call. Host plugins with
|
|
65
|
+
pre-tool hooks add it for you. The server answers from that workspace when it
|
|
66
|
+
is a worktree of the same repository or lies under the client's MCP roots.
|
|
67
|
+
|
|
68
|
+
If a result carries a `workspace_mismatch` diagnostic, the answer came from a
|
|
69
|
+
different workspace than the one you asked for; its `detail.reason` says why.
|
|
70
|
+
Use the CLI from your working directory instead: `npx --no-install kibi ...`
|
|
71
|
+
runs where you are and needs no `workspaceRoot`.
|
|
72
|
+
|
|
59
73
|
## Safe workflow
|
|
60
74
|
|
|
61
75
|
1. Always discover before you mutate: start with `kb_search`, then exact-filter with `kb_query`. Use
|
|
@@ -23,6 +23,7 @@ per operation. Effects are authoritative for mutability and adapter annotations.
|
|
|
23
23
|
| `kb_upsert` | `upsert` | --input JSON | write | yes | kb-write, workspace-write | peer; capability-selected | kibi.kb_upsert.v1 | yes | unsafe | no | yes |
|
|
24
24
|
| `kb_delete` | `delete` | --input JSON | write | yes | kb-write, workspace-write | peer; capability-selected | kibi.kb_delete.v1 | yes | unsafe | no | yes |
|
|
25
25
|
| `kb_check` | `check` | --input JSON or flags | read | yes | kb-read, workspace-read | peer; capability-selected | kibi.kb_check.v1 | no | safe | no | yes |
|
|
26
|
+
| `kb_prepare_impact_review` | `prepare-impact-review` | --input JSON | read | no | workspace-read, kb-read | peer; capability-selected | kibi.kb_prepare_impact_review.v1 | no | safe | no | yes |
|
|
26
27
|
| `kb_sparql_remote` | `sparql-remote` | --input JSON | read | no | network-read | peer; capability-selected | kibi.kb_sparql_remote.v1 | no | safe | yes | yes |
|
|
27
28
|
| `kb_compile_intent` | `compile-intent` | --input JSON | read | yes | kb-read, workspace-read | peer; capability-selected | kibi.kb_compile_intent.v1 | no | safe | no | yes |
|
|
28
29
|
| `kb_apply_plan` | `apply-plan` | --input JSON | write | yes | kb-read, kb-write, workspace-read, workspace-write | peer; capability-selected | kibi.kb_apply_plan.v1 | yes | unsafe | no | yes |
|
|
@@ -40,3 +41,7 @@ printf '%s\n' '{"query":"authentication","limit":10}' | npx --no-install kibi se
|
|
|
40
41
|
`_diagnostic_telemetry` is adapter metadata, not business input. Never copy it
|
|
41
42
|
into entity properties. On `committed_with_repairs`, follow typed required
|
|
42
43
|
`nextActions` and do not retry the original mutation.
|
|
44
|
+
|
|
45
|
+
`workspaceRoot` is an MCP-only routing argument naming the directory a call is
|
|
46
|
+
about (see the kibi-usage skill). The CLI JSON routes do not accept it; they
|
|
47
|
+
always run in the current directory.
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "kibi-cursor",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.2.0",
|
|
4
4
|
"description": "Kibi Cursor plugin - thin adapter for Cursor MCP integration and editor hooks",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -54,7 +54,7 @@
|
|
|
54
54
|
}
|
|
55
55
|
},
|
|
56
56
|
"dependencies": {
|
|
57
|
-
"kibi-agent-core": "^0.1.
|
|
57
|
+
"kibi-agent-core": "^0.1.1"
|
|
58
58
|
},
|
|
59
59
|
"devDependencies": {
|
|
60
60
|
"@types/node": "latest",
|
package/skills/.canon-hash.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
|
-
"kibi-bootstrap/SKILL.md": "
|
|
3
|
-
"kibi-bootstrap/resources/bootstrap.md": "
|
|
2
|
+
"kibi-bootstrap/SKILL.md": "5bb63f0e5ee5ba7e60ef3dc7758ad84ee39e83ffeb46b9f038221bc48a656676",
|
|
3
|
+
"kibi-bootstrap/resources/bootstrap.md": "14531116e8a0efc69b7ccb105afebeeaa2185e720bad2d5bebadc6635598a041",
|
|
4
4
|
"kibi-bootstrap/resources/branch-lifecycle.md": "c854264ce888439140883a3fc636db5e522f020dd27b30a5c1ecc4105b64ed13",
|
|
5
5
|
"kibi-bootstrap/resources/operation-access.md": "b5a6a59e72d800c376e7fad79132897623c32a0ce152a1e8d73f9628b444db51",
|
|
6
6
|
"kibi-bootstrap/resources/source-authoring.md": "bf296e62f69474e01797d6cb9469bf624551dca834dd188abb6e705bd96fa586",
|
|
@@ -13,12 +13,12 @@
|
|
|
13
13
|
"kibi-traceability/resources/operation-access.md": "39f7972ab7f4ae7479e78f7072bb50e8e6c4cdf4f857425f69d2522d37db437c",
|
|
14
14
|
"kibi-traceability/resources/source-authoring.md": "408c6ee2bef1b84e0194c0538ef929c26a0a617e631b2234247388140dbbdd08",
|
|
15
15
|
"kibi-traceability/resources/traceability.md": "38c290a0bc71bd1692e115f22694743946e2f69630e134acfd43cee5f613fb88",
|
|
16
|
-
"kibi-usage/SKILL.md": "
|
|
16
|
+
"kibi-usage/SKILL.md": "94982ae809de80467e5f2417ca64235dae0f81166407cdb8d0f66f322bd9efc8",
|
|
17
17
|
"kibi-usage/resources/branch-lifecycle.md": "f1bf359e9826e83c548f3cd0287f8175a62456527b0132b06b3f9f74aa59b7d6",
|
|
18
18
|
"kibi-usage/resources/fact-lanes.md": "7ac928cc6b3d189eee6a9cda282918677d5a222cd7ba9b7f324e6553cd3adce8",
|
|
19
19
|
"kibi-usage/resources/kb-improvement.md": "17e8b6cf6a0dd43b443a2bfd92e7205d099647a5f1c75fe85413a6cea63d86c6",
|
|
20
20
|
"kibi-usage/resources/logic-ir.md": "151675d0ffa813cb9e271084102a3af42de369b8f9a0c64866af0cdc4d924063",
|
|
21
|
-
"kibi-usage/resources/operation-access.md": "
|
|
21
|
+
"kibi-usage/resources/operation-access.md": "df8e84258f4e4855c08a9d24f7704fd540f0ea4295f5f255a4a9500a450ccf80",
|
|
22
22
|
"kibi-usage/resources/proof.md": "7391046fbdeece4858b668360c60755f184af6dfedda9dbc67e2fa4574dbce7f",
|
|
23
23
|
"kibi-usage/resources/relationship-directions.md": "0fdd67032c2d15299f772845fc4f807eb9435b09507bd87a5911ab33db2f143d",
|
|
24
24
|
"kibi-usage/resources/source-authoring.md": "80978cea0614484292c7a70d511a3f50458f48ef976bf0675b8bb96abe9d3d36",
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
---
|
|
2
2
|
id: kibi-bootstrap
|
|
3
3
|
name: kibi-bootstrap
|
|
4
|
-
description: Bootstrap Kibi from the current Git checkout with
|
|
5
|
-
version: 3.
|
|
4
|
+
description: Bootstrap Kibi from the current Git checkout and the project's existing knowledge sources, with a source interview, cited intent claims, preview approval, source-first writes, and repair-safe completion.
|
|
5
|
+
version: 3.1.0
|
|
6
6
|
kibiCompatibility: ">=1.0.0"
|
|
7
7
|
tags:
|
|
8
8
|
- kibi
|
|
@@ -18,20 +18,56 @@ resources:
|
|
|
18
18
|
## Goal
|
|
19
19
|
|
|
20
20
|
Seed branch-local Kibi knowledge for an attached but thin repository without
|
|
21
|
-
creating a parallel human-maintained ticket system.
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
21
|
+
creating a parallel human-maintained ticket system. Code shows what the
|
|
22
|
+
system does, not why; intent usually lives elsewhere (issue trackers, wikis,
|
|
23
|
+
specs, decision logs). Lead a short interview to find those sources, harvest
|
|
24
|
+
cited intent from them, and let the planner consolidate it with repository
|
|
25
|
+
evidence. Agents own reading and translation; humans name the sources,
|
|
26
|
+
judge their authority, and resolve genuine ambiguity. A seeded repository
|
|
27
|
+
hands off to the normal Kibi workflow.
|
|
25
28
|
|
|
26
29
|
## Interface and preview
|
|
27
30
|
|
|
28
31
|
Use the visible approved MCP surface or the trusted project-local CLI as equal
|
|
29
|
-
peer interfaces. If neither is available, stop.
|
|
30
|
-
|
|
32
|
+
peer interfaces. If neither is available, stop. Interview first, then plan,
|
|
33
|
+
then preview the exact plan for approval.
|
|
34
|
+
|
|
35
|
+
## Interview first
|
|
36
|
+
|
|
37
|
+
Before planning:
|
|
38
|
+
|
|
39
|
+
1. Inventory what you can already read: your own MCP connectors and tools
|
|
40
|
+
(issue trackers such as Jira, YouTrack, Linear, or GitHub Issues; wikis such
|
|
41
|
+
as Confluence or Notion; drives and design tools), and in-repo docs, ADRs,
|
|
42
|
+
and specs.
|
|
43
|
+
2. Ask the human, in one message: what the repository is for; which of those
|
|
44
|
+
sources hold product intent; which are authoritative, supporting, or stale;
|
|
45
|
+
what is missing; and which product areas matter first. If an important
|
|
46
|
+
source has no connector, say which one and suggest connecting it, then
|
|
47
|
+
continue with what is reachable. Never invent access you lack.
|
|
48
|
+
3. Read the confirmed, non-stale sources through your connectors. Harvest one
|
|
49
|
+
normative statement per behavior, each citing its source and an exact
|
|
50
|
+
reference (ticket key, page URL, or section anchor). Keep the source's
|
|
51
|
+
meaning; do not merge, generalize, or resolve conflicts yourself.
|
|
52
|
+
|
|
53
|
+
Declare the result in `bootstrapContext`: `projectSummary`,
|
|
54
|
+
`knowledgeSources` (id, kind, title, locator, authority, optional connector),
|
|
55
|
+
and `intentClaims` (statement, sourceId, reference, optional excerpt). Kibi
|
|
56
|
+
never contacts those sources; it binds what you declare into the plan hash.
|
|
57
|
+
|
|
58
|
+
## Plan and approval
|
|
59
|
+
|
|
60
|
+
Run `kb_plan_bootstrap` (or `plan-bootstrap --input`) read-only with that
|
|
61
|
+
context. Grounded authoritative or supporting claims become cited `req`
|
|
62
|
+
candidates; claims the strict modeler cannot ground come back as authoring
|
|
63
|
+
follow-ups; stale sources produce no candidates; undeclared sources are
|
|
64
|
+
reported in diagnostics. If the plan returns `needs_context`, ask only its
|
|
31
65
|
bounded questions (never more than four), then rerun the planner. Show the
|
|
32
|
-
complete returned `structuredContent.plan`, including its canonical hash
|
|
33
|
-
|
|
34
|
-
`kb_apply_plan`; do not reconstruct
|
|
66
|
+
complete returned `structuredContent.plan`, including its canonical hash and
|
|
67
|
+
which candidates cite which sources, and get explicit approval before any
|
|
68
|
+
write. Pass that plan object unchanged to `kb_apply_plan`; do not reconstruct
|
|
69
|
+
it from preview fields. When a claim contradicts the code or another claim,
|
|
70
|
+
put it to the human instead of choosing.
|
|
35
71
|
|
|
36
72
|
For CLI JSON, use the trusted route with `--input` (for example
|
|
37
73
|
`printf '%s\n' '{}' | kibi status --input -`); MCP and CLI are semantic peers.
|
|
@@ -1,6 +1,11 @@
|
|
|
1
1
|
# Bootstrap resource
|
|
2
2
|
|
|
3
|
-
`kb_plan_bootstrap` is read-only and returns `kibi.bootstrap-plan.v1`.
|
|
3
|
+
`kb_plan_bootstrap` is read-only and returns `kibi.bootstrap-plan.v1`. Declared
|
|
4
|
+
`knowledgeSources` and cited `intentClaims` are part of `declaredContext` and
|
|
5
|
+
therefore of the plan hash; a candidate built from a claim has `sourceKind:
|
|
6
|
+
intent_claim` and evidence rows `intent_claim:<sourceId>:<reference>`,
|
|
7
|
+
`knowledge_source:<kind>:<locator>`, and `source_authority:<authority>`. Its
|
|
8
|
+
requirement keeps the citation as `text_ref: <sourceId>:<reference>`. Review
|
|
4
9
|
candidate evidence, exact actions, dependencies, expected snapshots, source
|
|
5
10
|
hashes, bounded questions, diagnostics, and the canonical `planHash` before
|
|
6
11
|
approving. A preview does not authorize source edits. After approval, pass the
|
|
@@ -56,6 +56,20 @@ printf '%s\n' '{"query":"checkout","limit":10}' | npx --no-install kibi search -
|
|
|
56
56
|
Read `resources/operation-access.md` for the route, result version, effects,
|
|
57
57
|
mutability, and Prolog requirements of each operation.
|
|
58
58
|
|
|
59
|
+
## Working in a git worktree or another directory
|
|
60
|
+
|
|
61
|
+
Kibi MCP servers start in one project and answer from its knowledge base.
|
|
62
|
+
Every Kibi MCP tool accepts `workspaceRoot`: when your working directory is not
|
|
63
|
+
the project the server started in (a git worktree, a sibling checkout), pass
|
|
64
|
+
your working directory as `workspaceRoot` on every call. Host plugins with
|
|
65
|
+
pre-tool hooks add it for you. The server answers from that workspace when it
|
|
66
|
+
is a worktree of the same repository or lies under the client's MCP roots.
|
|
67
|
+
|
|
68
|
+
If a result carries a `workspace_mismatch` diagnostic, the answer came from a
|
|
69
|
+
different workspace than the one you asked for; its `detail.reason` says why.
|
|
70
|
+
Use the CLI from your working directory instead: `npx --no-install kibi ...`
|
|
71
|
+
runs where you are and needs no `workspaceRoot`.
|
|
72
|
+
|
|
59
73
|
## Safe workflow
|
|
60
74
|
|
|
61
75
|
1. Always discover before you mutate: start with `kb_search`, then exact-filter with `kb_query`. Use
|
|
@@ -23,6 +23,7 @@ per operation. Effects are authoritative for mutability and adapter annotations.
|
|
|
23
23
|
| `kb_upsert` | `upsert` | --input JSON | write | yes | kb-write, workspace-write | peer; capability-selected | kibi.kb_upsert.v1 | yes | unsafe | no | yes |
|
|
24
24
|
| `kb_delete` | `delete` | --input JSON | write | yes | kb-write, workspace-write | peer; capability-selected | kibi.kb_delete.v1 | yes | unsafe | no | yes |
|
|
25
25
|
| `kb_check` | `check` | --input JSON or flags | read | yes | kb-read, workspace-read | peer; capability-selected | kibi.kb_check.v1 | no | safe | no | yes |
|
|
26
|
+
| `kb_prepare_impact_review` | `prepare-impact-review` | --input JSON | read | no | workspace-read, kb-read | peer; capability-selected | kibi.kb_prepare_impact_review.v1 | no | safe | no | yes |
|
|
26
27
|
| `kb_sparql_remote` | `sparql-remote` | --input JSON | read | no | network-read | peer; capability-selected | kibi.kb_sparql_remote.v1 | no | safe | yes | yes |
|
|
27
28
|
| `kb_compile_intent` | `compile-intent` | --input JSON | read | yes | kb-read, workspace-read | peer; capability-selected | kibi.kb_compile_intent.v1 | no | safe | no | yes |
|
|
28
29
|
| `kb_apply_plan` | `apply-plan` | --input JSON | write | yes | kb-read, kb-write, workspace-read, workspace-write | peer; capability-selected | kibi.kb_apply_plan.v1 | yes | unsafe | no | yes |
|
|
@@ -40,3 +41,7 @@ printf '%s\n' '{"query":"authentication","limit":10}' | npx --no-install kibi se
|
|
|
40
41
|
`_diagnostic_telemetry` is adapter metadata, not business input. Never copy it
|
|
41
42
|
into entity properties. On `committed_with_repairs`, follow typed required
|
|
42
43
|
`nextActions` and do not retry the original mutation.
|
|
44
|
+
|
|
45
|
+
`workspaceRoot` is an MCP-only routing argument naming the directory a call is
|
|
46
|
+
about (see the kibi-usage skill). The CLI JSON routes do not accept it; they
|
|
47
|
+
always run in the current directory.
|