capability-brainstorm
Monthly routine plus on-demand hermit-voice brainstorm — synthesizes memory, capabilities, recent artifacts, and codebase shape into at most 2 capability ideas, each gated by proposal-triage before becoming a proposal task. Runs on the capability-brainstorm routine and when the operator asks to brainstorm capabilities or ideate, e.g. "brainstorm capabilities", "what could you be doing for me?", "any capability ideas?".
- License 许可
- MIT
- 所属仓库
- gtapps/hermitd
- 最近更新
- 2026-11-15
- Stars
- ★ 85
- Forks
- 16
01 前言 Front Matter
- name
- capability-brainstorm
- description
- Monthly routine plus on-demand hermit-voice brainstorm — synthesizes memory, capabilities, recent artifacts, and codebase shape into at most 2 capability ideas, each gated by proposal-triage before becoming a proposal task. Runs on the capability-brainstorm routine and when the operator asks to brainstorm capabilities or ideate, e.g. "brainstorm capabilities", "what could you be doing for me?", "any capability ideas?".
02 资源文件 1
- 参考文档reference.md3.8 KB
03 SKILL.md 正文
Record notes only inside an open record's turn, using bun ${CLAUDE_PLUGIN_ROOT}/scripts/task.ts note .hermit <id> with the note on stdin. Otherwise skip record notes. Never edit a task file directly.
Capability Brainstorm
Kill criteria (read before running)
After ≥8 invocations, run:
bun ${CLAUDE_PLUGIN_ROOT}/scripts/proposal.ts metrics .hermit --source=capability-brainstorm
status: "kill" (survival < 25% or acceptance < 30%) → cut this skill rather than tune it; the signal-to-noise ratio isn't there. insufficient_data means under 8 triage verdicts so far; wait and re-check.
1. Gather capability signals (harness-context — read before dispatch)
These three sources require the main session's harness context and cannot be delegated:
- Skills: use the harness available-skills list loaded in your context — that is authoritative.
- MCPs: call
ListMcpResourcesToolto enumerate currently online MCP tools. - Channels: read
config.json→channelskeys.
2. Dispatch the eval runner
Pass the capability signals from Step 1 in the dispatch prompt. Dispatch hermitd:skill-eval-runner pointed at ${CLAUDE_PLUGIN_ROOT}/skills/capability-brainstorm/reference.md. Include in the dispatch prompt:
plugin_root:${CLAUDE_PLUGIN_ROOT}(resolved absolute path — the runner needs it for the sibling-scan, since${CLAUDE_PLUGIN_ROOT}is not substituted inreference.mdcontent)skills_list: the harness available-skills list (one skill per line)mcp_tools: theListMcpResourcesTooloutputchannels_keys: thechannelskey list from config.json
The runner reads memory topic files, compiled artifacts, and codebase shape in an isolated context, generates ≤2 ideas (applying the friction + grounding constraints), and returns the structured result.
Eval runner return schema — the runner's return value is a JSON object conforming to this block. The schema is byte-identical in reference.md (producer) and here (consumer); a contract test asserts this.
<!-- brainstorm-eval-schema:start -->
{
"ideas": [
{
"title": "<short idea title>",
"description": "<one-line description>",
"friction": "<one-sentence operator pain>",
"grounding": ["<item 1>", "<item 2>"],
"effort": "hours|days",
"evidence_summary": "<one-paragraph friction + grounding for proposal-create>"
}
],
"discarded": ["<one-line discarded idea>"],
"inputs_scanned": ["<title or path of each source scanned>"]
}
<!-- brainstorm-eval-schema:end -->
Failure policy: if the runner returns null or malformed JSON, treat as a zero-ideas result — proceed to Steps 3–5 with ideas: [], discarded: [], inputs_scanned: [], and note the failure in the batch message as 0 ideas emitted (analysis-runner failed).
3. Create proposals (single-pass via /hermitd:proposal-create)
For each generated idea, invoke /hermitd:proposal-create once with:
Title: <short idea title>
Evidence Source: capability-brainstorm
Evidence: <one-paragraph summary: friction + grounding items>
Set the proposal task metadata:
source: auto-detectedcategory: capabilitytags: [capability-brainstorm, ideation]
/hermitd:proposal-create invokes proposal-triage internally. Parse its outcome:
CREATE: <title> — <task-id> (<handle>): proposal task opened, note its task id and handle.SUPPRESS: <title> — <code>: <reason>: record the suppression code. Don't retry.DUPLICATE: <title> — <task-id>: <reason>: record the existing task id. Don't create.
Do NOT invoke proposal-triage directly in this skill — /hermitd:proposal-create already does it.
4. Emit batch message
Send one message per prompts/resident.md § Operator Notification (channel-send.ts --notice; it asks for decisions, so it needs a client leg):
? Capability brainstorm (<N> idea(s))
1. **<short title>** — <one-line description>
_Grounding: <item 1>, <item 2>_
_Friction: <one-sentence pain>_
_Estimated effort: <hours|days>_
T-... created · (or: suppressed — <code> · or: duplicate of T-...)
2. **<short title>** — ...
If zero ideas were generated or all were suppressed/duplicated, the message is:
? Capability brainstorm — 0 ideas emitted (<reason: thin context | all suppressed | all duplicates>)
5. Write compiled artifact (non-empty runs only)
If ≥1 proposal task was created (not suppressed/duplicate), write:
.hermit/compiled/capability-brainstorm-YYYY-MM-DD-HHMM.md
Frontmatter:
---
title: Capability brainstorm — <ISO timestamp>
type: capability-brainstorm
created: <ISO timestamp with timezone>
tags: [capability-brainstorm, ideation]
source: <interactive when the operator asked; routine when the capability-brainstorm routine fired>
proposals_created: [T-..., ...]
---
Body (cover the substance, no filler sections):
- Ideas that passed generation and triage — one paragraph each.
- Discarded ideas — one line each (no grounding, no concrete friction).
- Triage verdicts for each emitted idea (CREATE / SUPPRESS — code / DUPLICATE:ID).
- Inputs scanned — titles/paths only, no content.
Do not tag foundational — this is a time-bounded ideation snapshot.
Zero-emit runs: skip the artifact entirely. Log one line to open record notes:
capability-brainstorm: 0 ideas emitted (<reason>)
04 同仓库更多 Skills
dream
Nightly memory maintenance from transcript ground truth. Verifies, enriches and tidies auto-memory and topic pages with snapshot validation and undo. Also handles 'undo the dream'.
when-done-switch-to
Arm a deferred model or effort switch. Use for "when done switch to", "after this drop to sonnet", or "switch model when idle".
weekly-review
Generate the weekly review report for the current ISO week. Writes to .hermit/compiled/review-weekly-YYYY-Www.md (dev-facing detail) and sends a plain-language channel summary (Delivered / Decisions / Waiting on you / Spend). Runs every Sunday at 23:00 via routine.
watch
Background events via the config watch monitor or ad-hoc Monitor tool. Quiet watches cost zero tokens.
watch-activate
Activate the config watch monitor.
voice-notes
Transcribe and respond to voice notes. Activates when any channel message carries an audio attachment, or when asked to transcribe an inbound voice message.