Repository navigation
Conversation
Each skill gets a small ks-<name>/SKILL.md under .kiro/skills/ carrying its name and description, so Kiro lists it natively. The pointer loads the body through the konductor-skills get_skill tool and falls back to reading .konductor/skills/<name>/SKILL.md. Pointers are tracked in the manifest; Claude installs are unchanged.
Discovery: every Kiro agent now lists skill://.kiro/skills/ks-*/SKILL.md, added through a resource-rewrite pass for both Kiro harnesses. Pointer text: call get_skill first, read the file only when the konductor-skills server is not connected, and stop on a not-found answer. The fallback path is absolute. Descriptions are cut to 200 characters, stripped of control characters, and an unreadable SKILL.md fails the install while a missing description warns. Opt-out: install --no-skill-pointers skips pointers and the agent resource, prunes earlier ones, and is recorded in .konductor so update keeps it. update also prunes pointers for skills the source dropped. Pointers get their own install phase, and the install summary no longer counts them as skills.
…inters Drop --no-skill-pointers and its .konductor/no-skill-pointers marker. Pointers are always written for the Kiro harnesses. With telemetry on a pointer calls get_skill; with --no-telemetry it reads the skill file directly. pointer_instructions picks the text from the install's telemetry setting, and install --no-telemetry over a telemetry-on target at the same version is no longer skipped as already-at-version, so the pointers are rewritten.
…skill pointers" This reverts commit 9cd955c.
24 tasks done
Contributor
Author
|
Closing in favor of #119 and #120 (stacked). We kept the skills MCP server so skill loads stay counted, and fixed discovery there instead of adding native pointer skills:
On the same tasks, scored from logs, the right skill loaded in 9 of 12 Kiro v3 runs with #120 against 3 of 12 on main. That matches this PR plus a use rule (9 of 12), at about a quarter of the prompt cost, and without writing into |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Description
CLI:
install/kiro_cli/skill_pointers.rs: writes aks-<name>/SKILL.mdpointer per skill into.kiro/skills/, built from the staged skill's frontmatter, so Kiro lists every skill by name and descriptionget_skillon thekonductor-skillsserver first (load the tool if it is not loaded yet); read<target>/.konductor/skills/<name>/SKILL.mdonly if that server is not connected; ifget_skillsays the skill is not found, stop and do not read the file. The fallback path is absolute because~expansion byfs_readwas not confirmedskill://.kiro/skills/ks-*/SKILL.mdresource, added by a new resource-rewrite pass forkiro-cli-v2andkiro-v3install --no-skill-pointersskips the pointers and the resource, removes ones an earlier install wrote, and is recorded in.konductor/no-skill-pointers, soupdatekeeps it. A laterinstallwithout the flag turns pointers back on. Claude installs ignore the flagPOINTER_DESCRIPTION_MAX_CHARS). An unreadableSKILL.mdfails the install; a missing or non-stringdescriptionwarns and skips that pointerupdateremoves the pointer of a skill the source dropped (manifest-tracked paths only);uninstallremoves them all, and the opt-out marker on a full uninstallskill-pointers) and no longer count as skills in the install summary (akiro-v3install of this repo reported 183 skills before, now 101: 82 skills + 19sop-*)Tests:
tests/kiro_skill_pointers_e2e.rs(real binary, scratchHOME): pointers, tracked in the manifest, restored byupdate, removed byuninstall; every Kiro agent lists the glob; the summary count excludes pointers;--no-skill-pointerssurvivesupdate, is undone by a plaininstall, and is cleared byuninstall;updateprunes a dropped skill's pointer; no pointers and no marker on a Claude install~), truncation, control characters, list-valued description, unreadableSKILL.md, pruning, and the new rewrite pass~/.konductor/installschanges is kept. It watches only that index, so it is a tripwireresourcesnow expect the added globDocs:
README.md,cli/README.md(new "Skill pointers" section),docs/user-guide/{reference,agents,appendix/contributing}.md,CHANGELOG.mdType of Change
cli/) change — Rust or PythonTesting
npm testpasses: not run green; two suites fail onmaintoo becausescripts/brand-config/lib/constants.jsis not trackedcli/changed:make testfrom the repo root passes withTMPDIR=/tmp: cli 1810 (1759 unit + 51 integration), mcp 318, shared 76; includes the__dump_schemasmoke checkkiro-cli2.35.0, scratchHOME,install --harness kiro-v3,kiro-cli chat --v3 --agent k-developer --no-interactive: the agent listed 82ks-*skills, also from an unrelated working directory. Loadingks-backend-reviewrandisclose_context(the pointer), thentool_load, thenget_skill backend-review, and returned# Backend Review. Same listing on akiro-cli-v2install with the default engineks-*glob removed fromk-developer.json, the v3 agent still listed all 82. So for a home install Kiro already scans~/.kiro/skills; the glob makes discovery explicit and covers other scopes. I did not test a project-scope installcargo clippy -- -D warningsandcargo fmt --checkpass (rustup stable 1.97.1 with a separate target dir;make linthits a local clippy/rustc version mismatch).--all-targetsshows 7 warnings in files this PR does not touch, the same 7 without itChecklist
Agents Affected
konductor-skills.Notes for Reviewers
~/.kiro/skills/, where other Kiro agents see them too;--no-skill-pointersavoids that.ks-<name>, not<name>. I kept the prefix because many of these names already exist in.kiro/skills/from other tools, and a pointer with the same name would clash. The pointer text names the real skill, so "applybackend-review" resolves through it.get_skillload is counted as before. A load through the file fallback is not counted. I did not add hook-based counting: hooks fire on every call and would need filtering..kiro/skills/ks-*/SKILL.md. The docs say not to commit that directory.get_skillreturned skills outside the agent's--skill-name-filter(k-developergotadr-generator). The server reads a top-levelfilesarray from.konductor/manifest(mcp/lib/skill-lookup-core/src/install_manifest.rs), but the manifest nests files understrategies[]. Every skill then counts as not installed by Konductor, and the filter keeps all of them. So the "stop on not-found" line only matters once that is fixed. It needs its own issue.fs_readexpands~(hence the absolute path), and the file fallback with the server disconnected.