[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6HTZKBBYNQV9WWABAMV0VHK":3,"skill-same:01M6HTZKBBYNQV9WWABAMV0VHK":70},{"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":42,"linkOnly":43,"markdownContent":44,"markdownBody":45,"frontMatter":46,"refName":47,"commitSha":48,"skillDirectory":49,"forksCount":50,"repositoryHtmlUrl":51,"repositoryHomepageUrl":52,"ownerHtmlUrl":53,"ownerBlogUrl":6,"ownerDescription":54,"updatedAt":55,"install":56,"resources":69},"01M6HTZKBBYNQV9WWABAMV0VHK","bump-core-req",null,"Updates the minimum core version requirement for a fleet plugin in all three canonical places: `required_core_version` and `requires[\"hermitd\"]` in `hermit-meta.json`, and the `dependencies` entry in `plugin.json`. Use this skill whenever the user says \"bump core requirement\", \"raise required_core_version\", \"make \u003Cfleet> require core X.Y.Z\", \"update min core for \u003Cfleet> plugin\", or finishes shipping a core feature that fleet plugins need to declare they depend on. Also trigger when the user says \"align fleet deps\" or asks which version the fleet plugins are pinned to and wants to update them.","gtapps\u002Fhermitd","gtapps","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F16778396?v=4","01M6HTX8TNTPQN3NXRVA63VHTH","01M6HTX8Z23S531ZPPA5DKJVD0",85,"MIT","https:\u002F\u002Fgithub.com\u002Fgtapps\u002Fhermitd\u002Fblob\u002Fmain\u002F.claude\u002Fskills\u002Fbump-core-req\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,41],"core","bump core req","bump","when","plugin","for","fleet","updates","which","canonical","make","raise","trigger","feature","dependencies","align","three","version","use","json","deps","Meta","shipping","update","2026-11-10 10:12:30",false,"---\nname: bump-core-req\ndescription: >\n  Updates the minimum core version requirement for a fleet plugin in all three canonical places:\n  `required_core_version` and `requires[\"hermitd\"]` in `hermit-meta.json`, and\n  the `dependencies` entry in `plugin.json`. Use this skill whenever the user says\n  \"bump core requirement\", \"raise required_core_version\", \"make \u003Cfleet> require core X.Y.Z\",\n  \"update min core for \u003Cfleet> plugin\", or finishes shipping a core feature that fleet plugins\n  need to declare they depend on. Also trigger when the user says \"align fleet deps\" or asks\n  which version the fleet plugins are pinned to and wants to update them.\n---\n\n# bump-core-req\n\nUpdate a fleet plugin's minimum core version in all three canonical locations.\n\n## Background: why three places?\n\nPer this monorepo's conventions (`CLAUDE.md` → Conventions), the core version requirement lives in:\n1. `plugins\u002F\u003Cslug>\u002F.claude-plugin\u002Fhermit-meta.json` → `required_core_version` — **authoritative**, read by `doctor-check.ts` at runtime to detect incompatible siblings\n2. `plugins\u002F\u003Cslug>\u002F.claude-plugin\u002Fhermit-meta.json` → `requires[\"hermitd\"]` — documentation mirror\n3. `plugins\u002F\u003Cslug>\u002F.claude-plugin\u002Fplugin.json` → `dependencies[name=hermitd].version` — native Claude Code resolver field\n\nAll three must stay in sync. This skill is the single operation that touches all of them atomically. It leaves committing to the operator via `\u002Fcommit`.\n\n## Usage\n\n```\n\u002Fbump-core-req \u003Cfleet-slug> [version]\n```\n\n- `\u003Cfleet-slug>` — directory name of the fleet plugin under `plugins\u002F` (e.g. `hermitd-fitness`)\n- `[version]` — optional target version like `1.0.26`. If omitted, read `plugins\u002Fhermitd\u002F.claude-plugin\u002Fplugin.json` → `.version` and use that.\n\n## Steps\n\n### Step 0: Resolve slug\n\nIf no slug was passed, or it's invalid:\n\n1. Glob `plugins\u002F*\u002F.claude-plugin\u002Fplugin.json`. Collect directory names.\n2. Remove `hermitd` from the list — that's core, not a fleet plugin.\n3. Ask via `AskUserQuestion`: \"Which fleet plugin to update?\" with one option per slug.\n\nIf `hermitd` was explicitly passed as slug, abort: \"Core doesn't depend on itself — pass a fleet plugin slug.\"\n\nValidate `plugins\u002F\u003Cslug>\u002F.claude-plugin\u002Fhermit-meta.json` exists. If not:\n> Abort: \"`\u003Cslug>` has no `hermit-meta.json` — not a fleet plugin or migration is incomplete.\"\n\n### Step 1: Resolve target version\n\nIf version was passed as an argument, strip a leading `v` if present. Validate the result matches `X.Y.Z` (digits only, two dots). If it doesn't match, abort with a clear message.\n\nIf no version arg, read `plugins\u002Fhermitd\u002F.claude-plugin\u002Fplugin.json` → `.version`. This is the current shipped core version. Report it to the operator: \"Autodetected core version: X.Y.Z\".\n\n### Step 2: Read current state\n\nRead both files:\n- `plugins\u002F\u003Cslug>\u002F.claude-plugin\u002Fhermit-meta.json`\n- `plugins\u002F\u003Cslug>\u002F.claude-plugin\u002Fplugin.json`\n\nExtract the **current** values of:\n- `required_core_version` (from hermit-meta.json) → call this `old_range` (e.g. `>=1.0.22`)\n- `requires[\"hermitd\"]` (from hermit-meta.json) → same value, confirm they match\n- `dependencies[name=hermitd].version` (from plugin.json) → call this `old_dep_ver` (e.g. `^1.0.22`)\n\nIdentify the **prefix** on `old_dep_ver`: it's always one of `^`, `~`, `>=`, or exact (no prefix). Preserve it exactly when constructing the new value. The new dep version will be `\u003Cprefix>X.Y.Z`.\n\n### Step 3: No-op short-circuit\n\nIf all three fields already encode the target version (`old_range == \">=X.Y.Z\"` and `old_dep_ver == \"\u003Cprefix>X.Y.Z\"`), print:\n\n> `\u003Cslug> already requires core >=X.Y.Z — nothing to do.`\n\nExit cleanly. No edits made.\n\n### Step 4: Edit the three fields\n\nDo **surgical string replacements** — do not rewrite whole files. Use the `Edit` tool, targeting the exact text you read in Step 2.\n\n**hermit-meta.json** (two replacements):\n- Replace `\"required_core_version\": \"\u003Cold_range>\"` → `\"required_core_version\": \">=X.Y.Z\"`\n- Replace `\"hermitd\": \"\u003Cold_range>\"` → `\"hermitd\": \">=X.Y.Z\"`\n\nBoth old values will be identical (e.g. `>=1.0.22`), but they appear in different key positions, so the surrounding context makes each Edit unambiguous.\n\n**plugin.json** (one replacement):\n- Locate the exact string `\"\u003Cold_dep_ver>\"` that appears as the version value inside the `hermitd` dependency entry. Because there is exactly one `hermitd` dependency, replace the precise version string in context. Use enough surrounding text (the `\"name\": \"hermitd\"` line or inline prefix) to make the replacement unambiguous if the version string is short.\n\nNew value: `\"\u003Cprefix>X.Y.Z\"` — same prefix, new version.\n\n### Step 5: Verify\n\nRe-read both files and confirm each of the three fields now contains the target version. If any field doesn't match, abort loudly with the field name and what was found vs expected.\n\nThen run plugin validation:\n```bash\nclaude plugin validate plugins\u002F\u003Cslug> 2>&1\n```\nAbort on any error.\n\n### Step 6: Report\n\nPrint a concise summary block:\n\n```\nBumped core requirement for \u003Cslug>:\n  hermit-meta.json  required_core_version : \u003Cold_range> → >=X.Y.Z\n  hermit-meta.json  requires              : \u003Cold_range> → >=X.Y.Z\n  plugin.json       dependencies          : \u003Cold_dep_ver> → \u003Cprefix>X.Y.Z\n\nNext steps:\n  Run \u002Fcommit to stage and commit this change.\n  When ready to ship to operators: \u002Frelease \u003Cslug>\n```\n\nNo version bump, no CHANGELOG entry — those are for `\u002Frelease` when the operator decides to ship.\n","# bump-core-req\n\nUpdate a fleet plugin's minimum core version in all three canonical locations.\n\n## Background: why three places?\n\nPer this monorepo's conventions (`CLAUDE.md` → Conventions), the core version requirement lives in:\n1. `plugins\u002F\u003Cslug>\u002F.claude-plugin\u002Fhermit-meta.json` → `required_core_version` — **authoritative**, read by `doctor-check.ts` at runtime to detect incompatible siblings\n2. `plugins\u002F\u003Cslug>\u002F.claude-plugin\u002Fhermit-meta.json` → `requires[\"hermitd\"]` — documentation mirror\n3. `plugins\u002F\u003Cslug>\u002F.claude-plugin\u002Fplugin.json` → `dependencies[name=hermitd].version` — native Claude Code resolver field\n\nAll three must stay in sync. This skill is the single operation that touches all of them atomically. It leaves committing to the operator via `\u002Fcommit`.\n\n## Usage\n\n```\n\u002Fbump-core-req \u003Cfleet-slug> [version]\n```\n\n- `\u003Cfleet-slug>` — directory name of the fleet plugin under `plugins\u002F` (e.g. `hermitd-fitness`)\n- `[version]` — optional target version like `1.0.26`. If omitted, read `plugins\u002Fhermitd\u002F.claude-plugin\u002Fplugin.json` → `.version` and use that.\n\n## Steps\n\n### Step 0: Resolve slug\n\nIf no slug was passed, or it's invalid:\n\n1. Glob `plugins\u002F*\u002F.claude-plugin\u002Fplugin.json`. Collect directory names.\n2. Remove `hermitd` from the list — that's core, not a fleet plugin.\n3. Ask via `AskUserQuestion`: \"Which fleet plugin to update?\" with one option per slug.\n\nIf `hermitd` was explicitly passed as slug, abort: \"Core doesn't depend on itself — pass a fleet plugin slug.\"\n\nValidate `plugins\u002F\u003Cslug>\u002F.claude-plugin\u002Fhermit-meta.json` exists. If not:\n> Abort: \"`\u003Cslug>` has no `hermit-meta.json` — not a fleet plugin or migration is incomplete.\"\n\n### Step 1: Resolve target version\n\nIf version was passed as an argument, strip a leading `v` if present. Validate the result matches `X.Y.Z` (digits only, two dots). If it doesn't match, abort with a clear message.\n\nIf no version arg, read `plugins\u002Fhermitd\u002F.claude-plugin\u002Fplugin.json` → `.version`. This is the current shipped core version. Report it to the operator: \"Autodetected core version: X.Y.Z\".\n\n### Step 2: Read current state\n\nRead both files:\n- `plugins\u002F\u003Cslug>\u002F.claude-plugin\u002Fhermit-meta.json`\n- `plugins\u002F\u003Cslug>\u002F.claude-plugin\u002Fplugin.json`\n\nExtract the **current** values of:\n- `required_core_version` (from hermit-meta.json) → call this `old_range` (e.g. `>=1.0.22`)\n- `requires[\"hermitd\"]` (from hermit-meta.json) → same value, confirm they match\n- `dependencies[name=hermitd].version` (from plugin.json) → call this `old_dep_ver` (e.g. `^1.0.22`)\n\nIdentify the **prefix** on `old_dep_ver`: it's always one of `^`, `~`, `>=`, or exact (no prefix). Preserve it exactly when constructing the new value. The new dep version will be `\u003Cprefix>X.Y.Z`.\n\n### Step 3: No-op short-circuit\n\nIf all three fields already encode the target version (`old_range == \">=X.Y.Z\"` and `old_dep_ver == \"\u003Cprefix>X.Y.Z\"`), print:\n\n> `\u003Cslug> already requires core >=X.Y.Z — nothing to do.`\n\nExit cleanly. No edits made.\n\n### Step 4: Edit the three fields\n\nDo **surgical string replacements** — do not rewrite whole files. Use the `Edit` tool, targeting the exact text you read in Step 2.\n\n**hermit-meta.json** (two replacements):\n- Replace `\"required_core_version\": \"\u003Cold_range>\"` → `\"required_core_version\": \">=X.Y.Z\"`\n- Replace `\"hermitd\": \"\u003Cold_range>\"` → `\"hermitd\": \">=X.Y.Z\"`\n\nBoth old values will be identical (e.g. `>=1.0.22`), but they appear in different key positions, so the surrounding context makes each Edit unambiguous.\n\n**plugin.json** (one replacement):\n- Locate the exact string `\"\u003Cold_dep_ver>\"` that appears as the version value inside the `hermitd` dependency entry. Because there is exactly one `hermitd` dependency, replace the precise version string in context. Use enough surrounding text (the `\"name\": \"hermitd\"` line or inline prefix) to make the replacement unambiguous if the version string is short.\n\nNew value: `\"\u003Cprefix>X.Y.Z\"` — same prefix, new version.\n\n### Step 5: Verify\n\nRe-read both files and confirm each of the three fields now contains the target version. If any field doesn't match, abort loudly with the field name and what was found vs expected.\n\nThen run plugin validation:\n```bash\nclaude plugin validate plugins\u002F\u003Cslug> 2>&1\n```\nAbort on any error.\n\n### Step 6: Report\n\nPrint a concise summary block:\n\n```\nBumped core requirement for \u003Cslug>:\n  hermit-meta.json  required_core_version : \u003Cold_range> → >=X.Y.Z\n  hermit-meta.json  requires              : \u003Cold_range> → >=X.Y.Z\n  plugin.json       dependencies          : \u003Cold_dep_ver> → \u003Cprefix>X.Y.Z\n\nNext steps:\n  Run \u002Fcommit to stage and commit this change.\n  When ready to ship to operators: \u002Frelease \u003Cslug>\n```\n\nNo version bump, no CHANGELOG entry — those are for `\u002Frelease` when the operator decides to ship.\n",{"name":5,"description":7},"main","79e254360ba999b70a827541bbcfd2d4cc525992",".claude\u002Fskills\u002Fbump-core-req",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":57,"prompt":67,"zipAvailable":68},[58,61,64],{"tool":59,"command":60},"npx","npx skills add gtapps\u002Fhermitd --skill bump-core-req",{"tool":62,"command":63},"bunx","bunx skills add gtapps\u002Fhermitd --skill bump-core-req",{"tool":65,"command":66},"pnpm","pnpm dlx skills add gtapps\u002Fhermitd --skill bump-core-req","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fgtapps\u002Fhermitd\u002Fblob\u002Fmain\u002F.claude\u002Fskills\u002Fbump-core-req\u002FSKILL.md",true,[],[71,87,100,126,142,151],{"skillNo":72,"name":73,"nameZh":6,"description":74,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":9,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":75,"categories":76,"keywords":77,"publishedAt":42},"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",[],[73,78,79,80,81,82,83,84,85,86],"with","maintenance","memory","validation","snapshot","pages","auto","memory maintenance","transcript",{"skillNo":88,"name":89,"nameZh":6,"description":90,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":9,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":91,"categories":92,"keywords":93,"publishedAt":42},"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",[],[21,94,95,96,23,97,36,98,99],"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":42},"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,23,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":42},"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,137,138,139,140,118,141],"monitor","ZeRO","tokens","tool","cost","ad","config","background","events",{"skillNo":143,"name":144,"nameZh":6,"description":145,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":9,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":146,"categories":147,"keywords":148,"publishedAt":42},"01M6HVCRMG53K3Y63WAH59YVFJ","watch-activate","Activate the config watch monitor.","https:\u002F\u002Fgithub.com\u002Fgtapps\u002Fhermitd\u002Fblob\u002Fmain\u002Fplugins\u002Fhermitd\u002Fskills\u002Fwatch-activate\u002FSKILL.md",[],[128,149,150,133,139],"activate","watch activate",{"skillNo":152,"name":153,"nameZh":6,"description":154,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":9,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":155,"categories":156,"keywords":162,"publishedAt":42},"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",[157],{"categoryNo":158,"categoryName":159,"taxonomyType":160,"taxonomyTypeDesc":161},"01JBSEEDCAT000000000000016","图像与多媒体","SCENARIO","使用场景",[163,164,165,166,167,168,169,170,171,172,110,21,173,174,175,176,177,178,120,179],"notes","voice","voice notes","SET","Audio","transcribe","operator","understand","transcription","my","read","message","can","telegram","channel message","discord","up"]