From Kestral
Use when the user explicitly asks to search Kestral workspace context, pull Kestral documents, projects, or tasks into chat, or invokes /kestral:context or $kestral-context.
How this skill is triggered — by the user, by Claude, or both
Slash command
/kestral:contextThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Search your Kestral workspace and pull relevant documents, projects, and tasks into the conversation.
Search your Kestral workspace and pull relevant documents, projects, and tasks into the conversation. This gives the agent real workspace knowledge so it can answer questions like "what's the latest on the auth migration?" without you having to paste anything.
The Kestral MCP server must be in this session (/mcp). Call whoami first — if it fails, ask the user to
reconnect or authenticate the Kestral MCP server in their app's MCP settings (a browser should open for sign-in).
Do not call other tools until authenticated.
Keep Kestral IDs internal unless the user asks for them. In user-facing output:
slug - title when a slug is available, linked with url when the host can render links.url when the host can render links.Unknown member (id: <rawId>).Unknown <entity type> (id: <rawId>).Call whoami. If it fails, ask the user to reconnect or authenticate the Kestral MCP server in their app's MCP
settings and stop. Do not search or load context until whoami succeeds.
The user's prompt after /kestral:context is the search topic. Examples:
/kestral:context auth migration/kestral:context what do customers say about onboarding?/kestral:context project roadmap for Q3If the prompt is empty, ask: "What topic should I search for in your Kestral workspace?"
Run three searches in parallel using the user's query:
search_content({ type: "documents", query: "<topic>" })query_entities({ type: "projects", query: "<topic>" })query_entities({ type: "tasks", query: "<topic>" })Show what was found so the user can choose what to pull in:
Found in Kestral for "auth migration":
Documents (3):
1. Auth Migration Plan (spec, 12.4 KB)
2. OAuth Provider Comparison (notes, 6.1 KB)
3. Security Review — Auth Q2 (report, 8.3 KB)
Projects (1):
4. Auth Overhaul (active, 8 tasks)
Tasks (4):
5. AUTH-12 - Migrate OAuth tokens to new format (in_progress, high)
6. AUTH-13 - Update redirect handler (todo, medium)
7. AUTH-14 - Write migration rollback script (todo, medium)
8. AUTH-15 - QA auth flow on staging (todo, low)
Which items should I pull into context? (numbers, "all", "docs only", or "skip")
Rules:
slug - title when available; otherwise show the task title.Based on the user's selection:
For each selected document, call get_document_content({ workContextId: "<id>" }).
length).isTruncated (boolean) and nextOffset (number or null). If isTruncated
is true, call again with offset set to nextOffset. Repeat until isTruncated is false or
total loaded content exceeds 200 KB — then stop and note the truncation.─── Auth Migration Plan (spec) ───
<document content here>
──────────────────────────────────
For each selected project, call entity_lookup({ id: "<projectId>", type: "project" }).
Present project details:
─── Project: Auth Overhaul ───
Status: active
Description: Migrate from legacy OAuth to OIDC provider…
Due: 2026-07-01
Tasks: 8 total (3 in progress, 5 todo)
───────────────────────────────
For each selected task, call entity_lookup({ id: "<taskId>", type: "task" }).
Present task details in the same format as the /kestral:tasks drill-down view (see
tasks/SKILL.md step 4).
After pulling content, confirm what was loaded:
Loaded 3 documents (~27 KB), 1 project, and 4 tasks into context. You can now ask me questions about them.
The agent now has this content in its conversation context and can reason about it in subsequent messages.
Per-document cap: 200 KB of text content. If a document exceeds this, load the first 200 KB and
note: "Document truncated at 200 KB. Use get_document_content with offset to read further."
Total context budget: If the user selects "all" and total content would exceed 500 KB, warn before loading:
That's ~620 KB of content, which may reduce available context for our conversation. Load anyway, or pick specific items?
Proceed only if the user confirms.
| Failure | Message |
|---|---|
| 401 / unauthorized | "Kestral isn't authenticated. Reconnect or authenticate the Kestral MCP server in your app's MCP settings — a browser should open for sign-in. Then ask me to continue." |
| Document not found | "Selected document not found — it may have been deleted. Skipping." |
| Search returned error | "Search failed: <error>. Try again or check that the MCP server is connected (/mcp)." |
Creates, edits, and optimizes skills for Claude Code, including drafting, evaluating with test prompts, iterating on performance, and improving skill descriptions for better triggering accuracy.
npx claudepluginhub kestral-team/kestral-plugins --plugin kestral