Previous round-1 fix dropped the speculative cursor branch on the truncated path, leaving a contradiction with the docs: - snippet-only shrunk → cursor emitted (returned == k_effective) - k-popped → cursor null (returned < k_effective) But docs promised the opposite. R2 resolution: emit cursor whenever more hits may be reachable (either retriever filled the page OR budget popped hits — the popped ones remain fetchable from offset+returned). Drop the artificial "widen vs paginate" copy; truncated and next_cursor are now independent signals — caller may do either or both. Updates: app.rs::search_with_opts logic + SearchResponse doc + schema description + SKILL.md two bullets + max_tokens=0 test asserts cursor IS emitted on k-pop case. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Claude Code integration
Skill packages that let Claude Code call kebab automatically when a question would benefit from the user's local KB.
Available skills
| Skill | Trigger | What it does |
|---|---|---|
kebab |
Internal / org-specific questions, runbooks, indexed-doc lookups | Calls kebab search --json / kebab ask --json and folds the results into the answer with citations |
Install
User-level (every Claude Code session on this machine):
# from a kebab repo checkout
cp -r integrations/claude-code/kebab ~/.claude/skills/
# verify
ls ~/.claude/skills/kebab/SKILL.md
Or symlink so git pull in the repo updates the skill in place:
mkdir -p ~/.claude/skills
ln -s "$(pwd)/integrations/claude-code/kebab" ~/.claude/skills/kebab
Project-level (only loads when Claude Code runs in a specific project):
mkdir -p <project>/.claude/skills
cp -r integrations/claude-code/kebab <project>/.claude/skills/
After install, start a fresh Claude Code session — the skill self-registers from its frontmatter description and is invoked automatically when a matching question shows up. No config edit needed.
Customization
The shipped SKILL.md is generic on purpose — it triggers on any "internal / org-specific" cue. To make Claude Code more eager (or less) for your corpus, edit the frontmatter description of your local copy and add the team / system / acronym keywords that should trigger the skill (e.g. MLOps, DMQ, AiSuite). Don't PR those keywords back into this repo — they're per-user.
A symlink install + a ~/.claude/skills/kebab/SKILL.md.local patch script is one pattern; another is to keep a fork branch with personalized frontmatter and rebase on main.
Update policy
The skill consumes kebab's wire schema v1 (schema_version fields like search_hit.v1, answer.v1). When the wire schema major-bumps to v2, this skill is updated in the same PR — see the project root CLAUDE.md §Wire schema v1.
Other hosts
kebab exposes the same --json contract to any agent host. To add a new integration:
- Drop a directory under
integrations/<host>/mirroring the structure here. - Reference
docs/wire-schema/v1/for the JSON shapes. - Link from this
README.mdtable.
A native MCP server (kebab serve --mcp) and an HTTP wrapper are listed in the root README §외부 AI 통합 as future options.