[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6HV8XPMWN8JAHESS6NG9CT1":3,"skill-same:01M6HV8XPMWN8JAHESS6NG9CT1":69},{"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":41,"linkOnly":42,"markdownContent":43,"markdownBody":44,"frontMatter":45,"refName":46,"commitSha":47,"skillDirectory":48,"forksCount":49,"repositoryHtmlUrl":50,"repositoryHomepageUrl":51,"ownerHtmlUrl":52,"ownerBlogUrl":6,"ownerDescription":53,"updatedAt":54,"install":55,"resources":68},"01M6HV8XPMWN8JAHESS6NG9CT1","cost-reflect",null,"The 'why is my bill high' skill: audits where spend goes across token categories (cache_read, cache_write, output, input) and per-session attribution. Invoke for questions like 'cost breakdown', 'which sessions are expensive', 'what's driving spend', or 'cold start costs'. Not for week-over-week trend lines (use hermit-evolution) or simple total-spend summaries.","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\u002Fcost-reflect\u002FSKILL.md",[],[18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40],"reflect","cost reflect","cost","breakdown","sessions","invoke","cold start","summaries","for","high","which","categories","questions","output","cold","trend","across","simple","use","session","why","attribution","cache","2026-11-10 10:12:30",false,"---\nname: cost-reflect\ndescription: \"The 'why is my bill high' skill: audits where spend goes across token categories (cache_read, cache_write, output, input) and per-session attribution. Invoke for questions like 'cost breakdown', 'which sessions are expensive', 'what's driving spend', or 'cold start costs'. Not for week-over-week trend lines (use hermit-evolution) or simple total-spend summaries.\"\n---\n# Cost Reflect\n\nRuns a structural cost audit over the last 7 days of `cost-log.jsonl` and delivers the result to the operator. The math is done by a script — your job is to run it and deliver the output through the right channel.\n\n## Invocation mode\n\n- **Manual (no arguments):** reply only to the invoking terminal or channel conversation.\n- **Automated (`--maintainer`, or any routine\u002Fproactive invocation):** produce the full technical\n  report and send it as a maintainer-tier notice.\n\n## Step 1 — Run the analyzer\n\nOn a channel-tagged turn without `--maintainer` (the inbound prompt contains a `\u003Cchannel source=\"...\">` tag), run\nthe plain-language mode instead of the full breakdown — a channel operator asking \"why is my bill\nhigh\" shouldn't get raw token-category jargon:\n\n```\nbun ${CLAUDE_PLUGIN_ROOT}\u002Fscripts\u002Fcost-report.ts reflect .hermit --plain\n```\n\nOtherwise (terminal\u002Fdev use or `--maintainer`), run the full breakdown:\n\n```\nbun ${CLAUDE_PLUGIN_ROOT}\u002Fscripts\u002Fcost-report.ts reflect .hermit\n```\n\nCapture stdout. `status: \"empty\"` → say no spend is recorded yet and stop; there's nothing to send. On an `error`, say cost data is unavailable and stop.\n\n## Step 2 — Relay the report\n\n**Terminal:** compose the report from the JSON in under 1500 characters: the window total with turns and sessions, the `by_type` split, `by_model` and `cold_starts` when non-empty, `by_source` (with `more_sources`), and `top_sessions`. Report the figures as given, without commentary.\n\n**Channel (`--plain` output):** reply through that channel's reply tool, in the operator's language, for someone with no technical background: today's spend against a typical day (`today_usd`, `vs_typical`, `typical_day_usd`), each `drivers` `work` in everyday words with its `cost_usd` (`background_checks`: background check-ins; `scheduled_routines`: scheduled routines; `channel_messages`: their chat messages; `other_sessions`: other sessions on this machine; `conversations`: conversations with you), the `budget` cap when present, and that the figures are a tracking estimate, not a literal bill. No token types, session IDs, `PROP-`\u002F`T-...` or slash commands.\n\n## Step 3 — Channel delivery\n\nWhen `$ARGUMENTS` contains `--maintainer` (or the invocation is a routine\u002Fproactive prompt rather than\na direct operator conversation), deliver the report through the operator's channel. Spend detail is\nmaintainer-tier by definition, so send it as the `maintainer` leg only (no `client` leg):\n\n```\nbun ${CLAUDE_PLUGIN_ROOT}\u002Fscripts\u002Fchannel-send.ts .hermit --notice\n```\nwith `{\"maintainer\": \"\u003Creport>\"}` on stdin. On a technical install with no maintainer chat configured, `sendOperatorNotice`'s default `fallback: \"client\"` puts it in the primary chat. On a `non-technical` install with no maintainer chat, the report goes to `state\u002Fwatchdog-events.jsonl` and no chat sees it (fail-closed on spend disclosure). If nothing was delivered, follow § Operator Notification's fallback (push if enabled, log to Findings).\n\nTo set a preferred channel, add `\"primary\": \"\u003Cchannel-name>\"` inside `channels` in `config.json`.\n\n## Notes\n\n- **Scheduling:** this skill doesn't self-register a routine. To run it on a schedule, add\n  `hermitd:cost-reflect --maintainer` as a routine via `\u002Fhermitd:hermit-settings`.\n- **What it measures:** cold-start turns are context warm-ups with no prior cache hit; `by_type` shares are of rows that record a split. For week-over-week totals, use `\u002Fhermitd:hermit-evolution` instead.\n- **Non-technical installs** (`config.operator_profile === 'non-technical'`): a client-chat spend question never reaches this skill, since `channel-responder` deflects it with a plain \"handled by your provider\" reply. Spend figures stay maintainer-side (terminal, maintainer chat, weekly review), so a channel-tagged run here is expected only from a maintainer-audience surface.\n","# Cost Reflect\n\nRuns a structural cost audit over the last 7 days of `cost-log.jsonl` and delivers the result to the operator. The math is done by a script — your job is to run it and deliver the output through the right channel.\n\n## Invocation mode\n\n- **Manual (no arguments):** reply only to the invoking terminal or channel conversation.\n- **Automated (`--maintainer`, or any routine\u002Fproactive invocation):** produce the full technical\n  report and send it as a maintainer-tier notice.\n\n## Step 1 — Run the analyzer\n\nOn a channel-tagged turn without `--maintainer` (the inbound prompt contains a `\u003Cchannel source=\"...\">` tag), run\nthe plain-language mode instead of the full breakdown — a channel operator asking \"why is my bill\nhigh\" shouldn't get raw token-category jargon:\n\n```\nbun ${CLAUDE_PLUGIN_ROOT}\u002Fscripts\u002Fcost-report.ts reflect .hermit --plain\n```\n\nOtherwise (terminal\u002Fdev use or `--maintainer`), run the full breakdown:\n\n```\nbun ${CLAUDE_PLUGIN_ROOT}\u002Fscripts\u002Fcost-report.ts reflect .hermit\n```\n\nCapture stdout. `status: \"empty\"` → say no spend is recorded yet and stop; there's nothing to send. On an `error`, say cost data is unavailable and stop.\n\n## Step 2 — Relay the report\n\n**Terminal:** compose the report from the JSON in under 1500 characters: the window total with turns and sessions, the `by_type` split, `by_model` and `cold_starts` when non-empty, `by_source` (with `more_sources`), and `top_sessions`. Report the figures as given, without commentary.\n\n**Channel (`--plain` output):** reply through that channel's reply tool, in the operator's language, for someone with no technical background: today's spend against a typical day (`today_usd`, `vs_typical`, `typical_day_usd`), each `drivers` `work` in everyday words with its `cost_usd` (`background_checks`: background check-ins; `scheduled_routines`: scheduled routines; `channel_messages`: their chat messages; `other_sessions`: other sessions on this machine; `conversations`: conversations with you), the `budget` cap when present, and that the figures are a tracking estimate, not a literal bill. No token types, session IDs, `PROP-`\u002F`T-...` or slash commands.\n\n## Step 3 — Channel delivery\n\nWhen `$ARGUMENTS` contains `--maintainer` (or the invocation is a routine\u002Fproactive prompt rather than\na direct operator conversation), deliver the report through the operator's channel. Spend detail is\nmaintainer-tier by definition, so send it as the `maintainer` leg only (no `client` leg):\n\n```\nbun ${CLAUDE_PLUGIN_ROOT}\u002Fscripts\u002Fchannel-send.ts .hermit --notice\n```\nwith `{\"maintainer\": \"\u003Creport>\"}` on stdin. On a technical install with no maintainer chat configured, `sendOperatorNotice`'s default `fallback: \"client\"` puts it in the primary chat. On a `non-technical` install with no maintainer chat, the report goes to `state\u002Fwatchdog-events.jsonl` and no chat sees it (fail-closed on spend disclosure). If nothing was delivered, follow § Operator Notification's fallback (push if enabled, log to Findings).\n\nTo set a preferred channel, add `\"primary\": \"\u003Cchannel-name>\"` inside `channels` in `config.json`.\n\n## Notes\n\n- **Scheduling:** this skill doesn't self-register a routine. To run it on a schedule, add\n  `hermitd:cost-reflect --maintainer` as a routine via `\u002Fhermitd:hermit-settings`.\n- **What it measures:** cold-start turns are context warm-ups with no prior cache hit; `by_type` shares are of rows that record a split. For week-over-week totals, use `\u002Fhermitd:hermit-evolution` instead.\n- **Non-technical installs** (`config.operator_profile === 'non-technical'`): a client-chat spend question never reaches this skill, since `channel-responder` deflects it with a plain \"handled by your provider\" reply. Spend figures stay maintainer-side (terminal, maintainer chat, weekly review), so a channel-tagged run here is expected only from a maintainer-audience surface.\n",{"name":5,"description":7},"main","79e254360ba999b70a827541bbcfd2d4cc525992","plugins\u002Fhermitd\u002Fskills\u002Fcost-reflect",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-14 03:31:41",{"source":8,"skillName":5,"commands":56,"prompt":66,"zipAvailable":67},[57,60,63],{"tool":58,"command":59},"npx","npx skills add gtapps\u002Fhermitd --skill cost-reflect",{"tool":61,"command":62},"bunx","bunx skills add gtapps\u002Fhermitd --skill cost-reflect",{"tool":64,"command":65},"pnpm","pnpm dlx skills add gtapps\u002Fhermitd --skill cost-reflect","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fgtapps\u002Fhermitd\u002Fblob\u002Fmain\u002Fplugins\u002Fhermitd\u002Fskills\u002Fcost-reflect\u002FSKILL.md",true,[],[70,86,100,126,141,150],{"skillNo":71,"name":72,"nameZh":6,"description":73,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":9,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":74,"categories":75,"keywords":76,"publishedAt":41},"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",[],[72,77,78,79,80,81,82,83,84,85],"with","maintenance","memory","validation","snapshot","pages","auto","memory maintenance","transcript",{"skillNo":87,"name":88,"nameZh":6,"description":89,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":9,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":90,"categories":91,"keywords":92,"publishedAt":41},"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",[],[93,94,95,96,26,97,36,98,99],"when","done","switch","when done switch to","model","drop","sonnet",{"skillNo":101,"name":102,"nameZh":6,"description":103,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":9,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":104,"categories":105,"keywords":106,"publishedAt":41},"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",[],[107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,26,122,123,124,125],"weekly review","review","weekly","hermit","plain","routine","channel","summary","report","at","generate","via","decisions","you","detail","iso","review report","dev","plain-language",{"skillNo":127,"name":128,"nameZh":6,"description":129,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":9,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":130,"categories":131,"keywords":132,"publishedAt":41},"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",[],[128,133,134,135,136,20,137,138,139,118,140],"monitor","ZeRO","tokens","tool","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":41},"01M6HVCRMG53K3Y63WAH59YVFJ","watch-activate","Activate the config watch monitor.","https:\u002F\u002Fgithub.com\u002Fgtapps\u002Fhermitd\u002Fblob\u002Fmain\u002Fplugins\u002Fhermitd\u002Fskills\u002Fwatch-activate\u002FSKILL.md",[],[128,148,149,133,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":41},"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,168,169,170,171,110,93,172,173,174,175,176,177,120,178],"notes","voice","voice notes","SET","Audio","transcribe","operator","understand","transcription","my","read","message","can","telegram","channel message","discord","up"]