[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6HV8EE2H9V5M6QPXSSGYAM2":3,"skill-same:01M6HV8EE2H9V5M6QPXSSGYAM2":72},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":9,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":15,"categories":16,"keywords":17,"publishedAt":38,"linkOnly":39,"markdownContent":40,"markdownBody":41,"frontMatter":42,"refName":43,"commitSha":44,"skillDirectory":45,"forksCount":46,"repositoryHtmlUrl":47,"repositoryHomepageUrl":48,"ownerHtmlUrl":49,"ownerBlogUrl":6,"ownerDescription":50,"updatedAt":51,"install":52,"resources":65},"01M6HV8EE2H9V5M6QPXSSGYAM2","capability-brainstorm",null,"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?\".","gtapps\u002Fhermitd","gtapps","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F16778396?v=4","01M6HTX8TNTPQN3NXRVA63VHTH","01M6HTX8Z23S531ZPPA5DKJVD0",85,"MIT","https:\u002F\u002Fgithub.com\u002Fgtapps\u002Fhermitd\u002Fblob\u002Fmain\u002Fplugins\u002Fhermitd\u002Fskills\u002Fcapability-brainstorm\u002FSKILL.md",[],[18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37],"capability brainstorm","brainstorm","capability","task","routine","when","ideate","operator","shape","codebase","at","gated","me","capabilities","artifacts","you","for","memory","ideas","proposal","2026-11-10 10:12:30",false,"---\nname: capability-brainstorm\ndescription: 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?\".\n---\n\nRecord notes only inside an open record's turn, using `bun ${CLAUDE_PLUGIN_ROOT}\u002Fscripts\u002Ftask.ts note .hermit \u003Cid>` with the note on stdin. Otherwise skip record notes. Never edit a task file directly.\n\n# Capability Brainstorm\n\n## Kill criteria (read before running)\n\nAfter ≥8 invocations, run:\n\n```\nbun ${CLAUDE_PLUGIN_ROOT}\u002Fscripts\u002Fproposal.ts metrics .hermit --source=capability-brainstorm\n```\n\n`status: \"kill\"` (survival \u003C 25% or acceptance \u003C 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.\n\n## 1. Gather capability signals (harness-context — read before dispatch)\n\nThese three sources require the main session's harness context and cannot be delegated:\n\n- *Skills:* use the harness available-skills list loaded in your context — that is authoritative.\n- *MCPs:* call `ListMcpResourcesTool` to enumerate currently online MCP tools.\n- *Channels:* read `config.json` → `channels` keys.\n\n## 2. Dispatch the eval runner\n\nPass the capability signals from Step 1 in the dispatch prompt. Dispatch `hermitd:skill-eval-runner` pointed at `${CLAUDE_PLUGIN_ROOT}\u002Fskills\u002Fcapability-brainstorm\u002Freference.md`. Include in the dispatch prompt:\n- `plugin_root`: `${CLAUDE_PLUGIN_ROOT}` (resolved absolute path — the runner needs it for the sibling-scan, since `${CLAUDE_PLUGIN_ROOT}` is not substituted in `reference.md` content)\n- `skills_list`: the harness available-skills list (one skill per line)\n- `mcp_tools`: the `ListMcpResourcesTool` output\n- `channels_keys`: the `channels` key list from config.json\n\nThe 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.\n\n**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.\n\n\u003C!-- brainstorm-eval-schema:start -->\n```json\n{\n  \"ideas\": [\n    {\n      \"title\": \"\u003Cshort idea title>\",\n      \"description\": \"\u003Cone-line description>\",\n      \"friction\": \"\u003Cone-sentence operator pain>\",\n      \"grounding\": [\"\u003Citem 1>\", \"\u003Citem 2>\"],\n      \"effort\": \"hours|days\",\n      \"evidence_summary\": \"\u003Cone-paragraph friction + grounding for proposal-create>\"\n    }\n  ],\n  \"discarded\": [\"\u003Cone-line discarded idea>\"],\n  \"inputs_scanned\": [\"\u003Ctitle or path of each source scanned>\"]\n}\n```\n\u003C!-- brainstorm-eval-schema:end -->\n\n**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)`.\n\n## 3. Create proposals (single-pass via `\u002Fhermitd:proposal-create`)\n\nFor each generated idea, invoke `\u002Fhermitd:proposal-create` once with:\n\n```\nTitle: \u003Cshort idea title>\nEvidence Source: capability-brainstorm\nEvidence: \u003Cone-paragraph summary: friction + grounding items>\n```\n\nSet the proposal task metadata:\n- `source: auto-detected`\n- `category: capability`\n- `tags: [capability-brainstorm, ideation]`\n\n`\u002Fhermitd:proposal-create` invokes `proposal-triage` internally. Parse its outcome:\n- `CREATE: \u003Ctitle> — \u003Ctask-id> (\u003Chandle>)`: proposal task opened, note its task id and handle.\n- `SUPPRESS: \u003Ctitle> — \u003Ccode>: \u003Creason>`: record the suppression code. Don't retry.\n- `DUPLICATE: \u003Ctitle> — \u003Ctask-id>: \u003Creason>`: record the existing task id. Don't create.\n\nDo NOT invoke `proposal-triage` directly in this skill — `\u002Fhermitd:proposal-create` already does it.\n\n## 4. Emit batch message\n\nSend one message per `prompts\u002Fresident.md` § Operator Notification (`channel-send.ts --notice`; it asks for decisions, so it needs a `client` leg):\n\n```\n? Capability brainstorm (\u003CN> idea(s))\n\n1. **\u003Cshort title>** — \u003Cone-line description>\n   _Grounding: \u003Citem 1>, \u003Citem 2>_\n   _Friction: \u003Cone-sentence pain>_\n   _Estimated effort: \u003Chours|days>_\n   T-... created  ·  (or: suppressed — \u003Ccode>  ·  or: duplicate of T-...)\n\n2. **\u003Cshort title>** — ...\n\n```\n\n\nIf zero ideas were generated or all were suppressed\u002Fduplicated, the message is:\n```\n? Capability brainstorm — 0 ideas emitted (\u003Creason: thin context | all suppressed | all duplicates>)\n```\n\n## 5. Write compiled artifact (non-empty runs only)\n\nIf ≥1 proposal task was created (not suppressed\u002Fduplicate), write:\n\n`.hermit\u002Fcompiled\u002Fcapability-brainstorm-YYYY-MM-DD-HHMM.md`\n\nFrontmatter:\n```yaml\n---\ntitle: Capability brainstorm — \u003CISO timestamp>\ntype: capability-brainstorm\ncreated: \u003CISO timestamp with timezone>\ntags: [capability-brainstorm, ideation]\nsource: \u003Cinteractive when the operator asked; routine when the capability-brainstorm routine fired>\nproposals_created: [T-..., ...]\n---\n```\n\nBody (cover the substance, no filler sections):\n- Ideas that passed generation and triage — one paragraph each.\n- Discarded ideas — one line each (no grounding, no concrete friction).\n- Triage verdicts for each emitted idea (CREATE \u002F SUPPRESS — code \u002F DUPLICATE:ID).\n- Inputs scanned — titles\u002Fpaths only, no content.\n\nDo not tag `foundational` — this is a time-bounded ideation snapshot.\n\n**Zero-emit runs:** skip the artifact entirely. Log one line to open record notes:\n`capability-brainstorm: 0 ideas emitted (\u003Creason>)`\n","Record notes only inside an open record's turn, using `bun ${CLAUDE_PLUGIN_ROOT}\u002Fscripts\u002Ftask.ts note .hermit \u003Cid>` with the note on stdin. Otherwise skip record notes. Never edit a task file directly.\n\n# Capability Brainstorm\n\n## Kill criteria (read before running)\n\nAfter ≥8 invocations, run:\n\n```\nbun ${CLAUDE_PLUGIN_ROOT}\u002Fscripts\u002Fproposal.ts metrics .hermit --source=capability-brainstorm\n```\n\n`status: \"kill\"` (survival \u003C 25% or acceptance \u003C 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.\n\n## 1. Gather capability signals (harness-context — read before dispatch)\n\nThese three sources require the main session's harness context and cannot be delegated:\n\n- *Skills:* use the harness available-skills list loaded in your context — that is authoritative.\n- *MCPs:* call `ListMcpResourcesTool` to enumerate currently online MCP tools.\n- *Channels:* read `config.json` → `channels` keys.\n\n## 2. Dispatch the eval runner\n\nPass the capability signals from Step 1 in the dispatch prompt. Dispatch `hermitd:skill-eval-runner` pointed at `${CLAUDE_PLUGIN_ROOT}\u002Fskills\u002Fcapability-brainstorm\u002Freference.md`. Include in the dispatch prompt:\n- `plugin_root`: `${CLAUDE_PLUGIN_ROOT}` (resolved absolute path — the runner needs it for the sibling-scan, since `${CLAUDE_PLUGIN_ROOT}` is not substituted in `reference.md` content)\n- `skills_list`: the harness available-skills list (one skill per line)\n- `mcp_tools`: the `ListMcpResourcesTool` output\n- `channels_keys`: the `channels` key list from config.json\n\nThe 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.\n\n**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.\n\n\u003C!-- brainstorm-eval-schema:start -->\n```json\n{\n  \"ideas\": [\n    {\n      \"title\": \"\u003Cshort idea title>\",\n      \"description\": \"\u003Cone-line description>\",\n      \"friction\": \"\u003Cone-sentence operator pain>\",\n      \"grounding\": [\"\u003Citem 1>\", \"\u003Citem 2>\"],\n      \"effort\": \"hours|days\",\n      \"evidence_summary\": \"\u003Cone-paragraph friction + grounding for proposal-create>\"\n    }\n  ],\n  \"discarded\": [\"\u003Cone-line discarded idea>\"],\n  \"inputs_scanned\": [\"\u003Ctitle or path of each source scanned>\"]\n}\n```\n\u003C!-- brainstorm-eval-schema:end -->\n\n**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)`.\n\n## 3. Create proposals (single-pass via `\u002Fhermitd:proposal-create`)\n\nFor each generated idea, invoke `\u002Fhermitd:proposal-create` once with:\n\n```\nTitle: \u003Cshort idea title>\nEvidence Source: capability-brainstorm\nEvidence: \u003Cone-paragraph summary: friction + grounding items>\n```\n\nSet the proposal task metadata:\n- `source: auto-detected`\n- `category: capability`\n- `tags: [capability-brainstorm, ideation]`\n\n`\u002Fhermitd:proposal-create` invokes `proposal-triage` internally. Parse its outcome:\n- `CREATE: \u003Ctitle> — \u003Ctask-id> (\u003Chandle>)`: proposal task opened, note its task id and handle.\n- `SUPPRESS: \u003Ctitle> — \u003Ccode>: \u003Creason>`: record the suppression code. Don't retry.\n- `DUPLICATE: \u003Ctitle> — \u003Ctask-id>: \u003Creason>`: record the existing task id. Don't create.\n\nDo NOT invoke `proposal-triage` directly in this skill — `\u002Fhermitd:proposal-create` already does it.\n\n## 4. Emit batch message\n\nSend one message per `prompts\u002Fresident.md` § Operator Notification (`channel-send.ts --notice`; it asks for decisions, so it needs a `client` leg):\n\n```\n? Capability brainstorm (\u003CN> idea(s))\n\n1. **\u003Cshort title>** — \u003Cone-line description>\n   _Grounding: \u003Citem 1>, \u003Citem 2>_\n   _Friction: \u003Cone-sentence pain>_\n   _Estimated effort: \u003Chours|days>_\n   T-... created  ·  (or: suppressed — \u003Ccode>  ·  or: duplicate of T-...)\n\n2. **\u003Cshort title>** — ...\n\n```\n\n\nIf zero ideas were generated or all were suppressed\u002Fduplicated, the message is:\n```\n? Capability brainstorm — 0 ideas emitted (\u003Creason: thin context | all suppressed | all duplicates>)\n```\n\n## 5. Write compiled artifact (non-empty runs only)\n\nIf ≥1 proposal task was created (not suppressed\u002Fduplicate), write:\n\n`.hermit\u002Fcompiled\u002Fcapability-brainstorm-YYYY-MM-DD-HHMM.md`\n\nFrontmatter:\n```yaml\n---\ntitle: Capability brainstorm — \u003CISO timestamp>\ntype: capability-brainstorm\ncreated: \u003CISO timestamp with timezone>\ntags: [capability-brainstorm, ideation]\nsource: \u003Cinteractive when the operator asked; routine when the capability-brainstorm routine fired>\nproposals_created: [T-..., ...]\n---\n```\n\nBody (cover the substance, no filler sections):\n- Ideas that passed generation and triage — one paragraph each.\n- Discarded ideas — one line each (no grounding, no concrete friction).\n- Triage verdicts for each emitted idea (CREATE \u002F SUPPRESS — code \u002F DUPLICATE:ID).\n- Inputs scanned — titles\u002Fpaths only, no content.\n\nDo not tag `foundational` — this is a time-bounded ideation snapshot.\n\n**Zero-emit runs:** skip the artifact entirely. Log one line to open record notes:\n`capability-brainstorm: 0 ideas emitted (\u003Creason>)`\n",{"name":5,"description":7},"main","84942b77e465976992abc4e1444c09724b1770af","plugins\u002Fhermitd\u002Fskills\u002Fcapability-brainstorm",16,"https:\u002F\u002Fgithub.com\u002Fgtapps\u002Fhermitd","https:\u002F\u002Fhermitd.dev","https:\u002F\u002Fgithub.com\u002Fgtapps","Software engineer from Portugal.\r\nBuilding and deploying agents for real companies.","2026-11-15 03:26:28",{"source":8,"skillName":5,"commands":53,"prompt":63,"zipAvailable":64},[54,57,60],{"tool":55,"command":56},"npx","npx skills add gtapps\u002Fhermitd --skill capability-brainstorm",{"tool":58,"command":59},"bunx","bunx skills add gtapps\u002Fhermitd --skill capability-brainstorm",{"tool":61,"command":62},"pnpm","pnpm dlx skills add gtapps\u002Fhermitd --skill capability-brainstorm","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fgtapps\u002Fhermitd\u002Fblob\u002Fmain\u002Fplugins\u002Fhermitd\u002Fskills\u002Fcapability-brainstorm\u002FSKILL.md",true,[66],{"path":67,"resourceType":68,"resourceTypeDesc":69,"sizeBytes":70,"sourceHtmlUrl":71},"reference.md","REFERENCE","参考文档",3893,"https:\u002F\u002Fgithub.com\u002Fgtapps\u002Fhermitd\u002Fblob\u002Fmain\u002Fplugins\u002Fhermitd\u002Fskills\u002Fcapability-brainstorm\u002Freference.md",[73,88,102,125,141,150],{"skillNo":74,"name":75,"nameZh":6,"description":76,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":9,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":77,"categories":78,"keywords":79,"publishedAt":38},"01M718AB18DTYHVGXA6VF1VVR2","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'.","https:\u002F\u002Fgithub.com\u002Fgtapps\u002Fhermitd\u002Fblob\u002Fmain\u002Fplugins\u002Fhermitd\u002Fskills\u002Fdream\u002FSKILL.md",[],[75,80,81,35,82,83,84,85,86,87],"with","maintenance","validation","snapshot","pages","auto","memory maintenance","transcript",{"skillNo":89,"name":90,"nameZh":6,"description":91,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":9,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":92,"categories":93,"keywords":94,"publishedAt":38},"01M6HVD4WX8RB5EKH49HM66M8X","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\".","https:\u002F\u002Fgithub.com\u002Fgtapps\u002Fhermitd\u002Fblob\u002Fmain\u002Fplugins\u002Fhermitd\u002Fskills\u002Fwhen-done-switch-to\u002FSKILL.md",[],[23,95,96,97,34,98,99,100,101],"done","switch","when done switch to","model","use","drop","sonnet",{"skillNo":103,"name":104,"nameZh":6,"description":105,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":9,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":106,"categories":107,"keywords":108,"publishedAt":38},"01M6HVD0ZA2Q1RD7CA0X8VWF3T","weekly-review","Generate the weekly review report for the current ISO week. Writes to .hermit\u002Fcompiled\u002Freview-weekly-YYYY-Www.md (dev-facing detail) and sends a plain-language channel summary (Delivered \u002F Decisions \u002F Waiting on you \u002F Spend). Runs every Sunday at 23:00 via routine.","https:\u002F\u002Fgithub.com\u002Fgtapps\u002Fhermitd\u002Fblob\u002Fmain\u002Fplugins\u002Fhermitd\u002Fskills\u002Fweekly-review\u002FSKILL.md",[],[109,110,111,112,113,22,114,115,116,28,117,118,119,33,120,34,121,122,123,124],"weekly review","review","weekly","hermit","plain","channel","summary","report","generate","via","decisions","detail","iso","review report","dev","plain-language",{"skillNo":126,"name":127,"nameZh":6,"description":128,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":9,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":129,"categories":130,"keywords":131,"publishedAt":38},"01M6HVCW8PHZXSPYAZQBZXB9DX","watch","Background events via the config watch monitor or ad-hoc Monitor tool. Quiet watches cost zero tokens.","https:\u002F\u002Fgithub.com\u002Fgtapps\u002Fhermitd\u002Fblob\u002Fmain\u002Fplugins\u002Fhermitd\u002Fskills\u002Fwatch\u002FSKILL.md",[],[127,132,133,134,135,136,137,138,139,118,140],"monitor","ZeRO","tokens","tool","cost","ad","config","background","events",{"skillNo":142,"name":143,"nameZh":6,"description":144,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":9,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":145,"categories":146,"keywords":147,"publishedAt":38},"01M6HVCRMG53K3Y63WAH59YVFJ","watch-activate","Activate the config watch monitor.","https:\u002F\u002Fgithub.com\u002Fgtapps\u002Fhermitd\u002Fblob\u002Fmain\u002Fplugins\u002Fhermitd\u002Fskills\u002Fwatch-activate\u002FSKILL.md",[],[127,148,149,132,138],"activate","watch activate",{"skillNo":151,"name":152,"nameZh":6,"description":153,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":9,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":154,"categories":155,"keywords":161,"publishedAt":38},"01M6HVCK6782RD4D9ADQY0ENKD","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.","https:\u002F\u002Fgithub.com\u002Fgtapps\u002Fhermitd\u002Fblob\u002Fmain\u002Fplugins\u002Fhermitd\u002Fskills\u002Fvoice-notes\u002FSKILL.md",[156],{"categoryNo":157,"categoryName":158,"taxonomyType":159,"taxonomyTypeDesc":160},"01JBSEEDCAT000000000000016","图像与多媒体","SCENARIO","使用场景",[162,163,164,165,166,167,25,168,169,170,112,23,171,172,173,174,175,176,33,177],"notes","voice","voice notes","SET","Audio","transcribe","understand","transcription","my","read","message","can","telegram","channel message","discord","up"]