一键导入
docs-search
Load for dashboard.docs_qa — read-only search and fetch over the operator-facing docs corpus. The only skill loaded for this ProcessKey.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
Load for dashboard.docs_qa — read-only search and fetch over the operator-facing docs corpus. The only skill loaded for this ProcessKey.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
基于 SOC 职业分类
Load when reading or writing project notes, weekly/monthly summaries, or journal/agent.md. Owns GET/PATCH for context files except today.md and roadmap.md, which use their dedicated skills.
Load when the user wants an ongoing task on a fixed cadence (every morning, each Monday, hourly) to run autonomously as its own named recurring Agent. Creates it via POST /api/agents. Not for one-time reminders (use schedule) or app-data background fetches (use managed-tasks).
Load to manage the durable source library (user-sent PDFs/PPTX/docs) — list unfiled sources, file them as knowledge/sources/ cards, promote images, or send a stored source back. SKIP for delivering files you generated this turn (attach) or general vault edits (context).
Hand a long-running or open-ended task (deep research, multi-repo CI audit, monitor X over time, bulk compile) to /api/background-task. Compose a self-contained brief, set the notification policy, POST, ack, end the turn. Read GET /:id for follow-up detail.
Read-only Task Board — list everything in motion (recurring DMs, Agents, app-fetch, automation triggers, reminders, background/browser work) via GET /api/tasks, and preview a delete's blast radius via GET /api/tasks/impact. For writes use the `task` skill.
Hand open-ended browser requests (post a tweet, fill a contact form, check an order status, …) to /api/browser-task. Relay sub-agent clarifications, POST /clarify with the reply, /cancel on stop.
| name | docs-search |
| description | Load for dashboard.docs_qa — read-only search and fetch over the operator-facing docs corpus. The only skill loaded for this ProcessKey. |
| allowed-tools | ["Bash(curl http://localhost:8321/api/docs/*)","Read"] |
You answer operator questions about {APP_NAME} by searching the docs
corpus served at http://localhost:8321/api/docs/* and quoting the
passages that back your answer. This is a read-only skill — no
other endpoint is in the allow-list.
Daemon URL is not optional. Every call must go to
http://localhost:8321/api/docs/.... The session's curl wrapper
rejects any other host/port silently (stdout stays empty), so a request
to localhost:8322 or a path with no host returns nothing and reads as
"0 results" — exactly the failure mode that masquerades as "the docs
don't cover this".
The corpus is English. Operator questions arrive in any language. Build the FTS query in three steps:
delegated模式 becomes one unmatchable
trigram phrase.| Input | Final query |
|---|---|
| "what is delegated mode?" | delegated |
| "什么是 delegated 模式?" | delegated |
| "ProcessKey 是什么?" | ProcessKey |
| "how does the morning routine work?" | morning routine |
| "早晨例行公事是怎么运作的?" | 早晨例行公事 (passes through; may miss) |
Always issue these as curl -s http://localhost:8321/<path> — paths
alone (without the host and port) are rejected by the session's curl
wrapper.
| Call | Use when |
|---|---|
curl -s "http://localhost:8321/api/docs/term-search?q=<topic>&limit=5" | First step of every turn. Term-level lookup against H1/H2/H3 anchors. Best for "what is X" / single-concept questions. |
curl -s "http://localhost:8321/api/docs/search?q=<topic>&limit=5" | Body-level fallback. Use only when term-search returned 0 rows or the question explicitly spans more than one section. |
curl -s "http://localhost:8321/api/docs/by-slug/<slug>" | Fetch the full body once a candidate has been identified. |
curl -s "http://localhost:8321/api/docs" | Tree listing. Use only when the operator asks "what docs are there?" |
The slug in by-slug/<slug> is path-style (e.g.
features/routines/morning-routine, a docs slug — not a vault path),
exactly as it appears in the search response and inside [doc:...]
citations.
The combined number of term-search and search calls per QA turn
must not exceed 3. Quality rule, not a daemon-enforced cap.
term-search with the topic from "Query construction".term-search with the synonym. Otherwise fall back to
search with the same topic.&category= (both endpoints) or, on search only, &tag=.If three calls do not surface an answer, stop and tell the operator the docs do not cover their question.
q is not a raw FTS5 query. The daemon tokenizes it on whitespace,
wraps each token in quotes as a literal phrase, and AND-joins them, so
every term is required. Wildcards (day*), booleans (AND/OR/NOT),
and your own quotes are searched as literal text, not as operators —
multi-word queries are already implicit-AND across all tokens. Just send
space-separated terms. The bm25 weights already boost
title/keywords/aliases over body, so a one-word query against a doc's
title or keywords is typically the right first move.
Optional filters supported by both term-search and search:
&category=concepts — restrict to a top-level category.&limit=N — 1..20. Default 5. Start with 5 and only widen on a clear miss.search (body endpoint) additionally supports:
&tag=routine — restrict to docs whose frontmatter tags: contains the term.Operator: "什么是 delegated 模式?"
Step 1 — extract topic:
Strip "什么是 / ?" → "delegated模式"
Step 2 — split scripts:
"delegated模式" → "delegated 模式"
Step 3 — Latin wins:
"delegated 模式" → "delegated"
Step 4 — call:
curl -s "http://localhost:8321/api/docs/term-search?q=delegated&limit=5"
Top hit:
{ slug: "concepts/delegated-mode",
anchor: "delegated-mode-integration-modes",
term: "Delegated Mode (Integration Modes)",
summary: "Each integration is in one of three modes …",
citation: "[doc:concepts/delegated-mode#delegated-mode-integration-modes]" }
curl -s "http://localhost:8321/api/docs/by-slug/<slug>" returns:
{
"frontmatter": { "slug": "...", "title": "...", "category": "...", ... },
"body": "<markdown>",
"anchors": ["in-one-sentence", "what-it-does", "..."]
}
The anchors list is the ground truth for what [doc:slug#anchor]
tokens you may emit. Do not invent an anchor that is not in this list —
the citation post-processor strips invalid anchors.
Every claim in your reply must end with a [doc:slug#anchor] token.
When the result came from term-search, the response's citation
field is the only sanctioned form for that result — copy it
verbatim. If a sentence draws from a doc but the relevant section has
no H2 anchor, cite the slug alone: [doc:slug]. Prefer the most
specific anchor available.
A pure-CJK topic that maps to an English-only doc is a known gap (no bilingual aliases yet). Tell the operator the docs do not cover the question and suggest the English term if you are confident — never synthesize an answer from general knowledge.
The docs do not cover this. You can ask the agent directly via DM, or open an issue on the {APP_NAME} repo.
Do not pad with general AI knowledge. The QA panel exists because the operator wanted a grounded answer.
/api/docs/*. The allow-list narrows curl to that prefix.Edit / Write / NotebookEdit are absolute-blocked.