[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6C6ECTV0C5FV4EC06THJD77":3,"skill-same:01M6C6ECTV0C5FV4EC06THJD77":87},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":16,"categories":17,"keywords":18,"publishedAt":42,"linkOnly":43,"markdownContent":44,"markdownBody":45,"frontMatter":46,"refName":53,"commitSha":54,"skillDirectory":55,"forksCount":56,"repositoryHtmlUrl":57,"repositoryHomepageUrl":6,"ownerHtmlUrl":58,"ownerBlogUrl":6,"ownerDescription":59,"updatedAt":60,"install":61,"resources":74},"01M6C6ECTV0C5FV4EC06THJD77","task-reconcile",null,"Close taskwarrior tasks whose linked GitHub issue\u002FPR closed or merged. Use when stale trackers pile up, after a PR-merge sweep, or auditing queue drift.","laurigates\u002Fclaude-plugins","laurigates","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F13014001?v=4","01M6C59YHWS9C7KMXKSRX1YXNP","Lauri Gates","01M6C59YP2APG9YAM4DWYQYGFJ",59,"MIT","https:\u002F\u002Fgithub.com\u002Flaurigates\u002Fclaude-plugins\u002Fblob\u002Fmain\u002Ftaskwarrior-plugin\u002Fskills\u002Ftask-reconcile\u002FSKILL.md",[],[19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41],"reconcile","task reconcile","task","2026","when","parse","issue","git","read","merge","run","close","dry","drift","preview","default","project","tasks","Bash","up","gh pr","pr","gh issue","2026-11-10 10:12:30",false,"---\nname: task-reconcile\ndescription: Close taskwarrior tasks whose linked GitHub issue\u002FPR closed or merged. Use when stale trackers pile up, after a PR-merge sweep, or auditing queue drift.\nargs: \"[--apply] [--project=\u003Cname>] [--all]\"\nallowed-tools: Bash(task *), Bash(gh issue *), Bash(gh pr *), Bash(jq *), Bash(bash *), Bash(git rev-parse *), Read, TodoWrite\nargument-hint: optional --apply to close (default dry-run preview)\ncreated: 2026-06-20\nmodified: 2026-11-02\nreviewed: 2026-07-02\n---\n\n# \u002Ftaskwarrior:task-reconcile\n\nClose the tasks that have gone stale because the GitHub issue or PR they\nmirror has closed or merged. `task-status` *detects* this drift; this skill\n*acts* on it, so the queue does not silently fill with trackers for work that\nalready shipped.\n\nA task is \"linked\" whether it carries a `ghid`\u002F`ghpr` UDA **or** references an\nissue\u002FPR in its description\u002Fannotation text (a `#N`, an `owner\u002Frepo#N`, or a\n`github.com\u002Fowner\u002Frepo\u002F(issues|pull)\u002FN` URL) — so tasks filed with a plain\n`#N` in the description are reconciled too, and a cross-repo `owner\u002Frepo#N` is\nchecked against *that* repo, not the current one. Only a `ghid`\u002F`ghpr` UDA can\nclose a task: a task linked by text refs alone gets verdict `review` when its\nitems are done, and is reported but never closed, because tasks often cite a\nmerged PR as context for work that is still open (#3126).\n\n## When to Use This Skill\n\n| Use this skill when... | Use a sibling skill instead when... |\n|---|---|\n| Stale tasks (`ghid`\u002F`ghpr` UDA **or** a `#N`\u002F`owner\u002Frepo#N`\u002FURL in the description) have piled up after issues\u002FPRs closed | Auditing queue health without mutating it — use `task-status` |\n| Sweeping the queue after a batch of PRs merged | Closing one specific task by ID with a landing commit — use `task-done` |\n| Reconciling the local queue against GitHub as the source of record | Filing a new linked task — use `task-add` |\n\n## Context\n\n- Task CLI available: !`task --version`\n- Git repo detected: !`find . -maxdepth 1 -name '.git' -print -quit`\n- GH auth: !`gh auth status`\n\nGitHub-mode and project resolution run in the body (Step 1) via the bundled\nscripts, where stderr suppression and exit-code handling are available — git \u002F\ngh probes in a Context backtick abort the skill in a no-git\u002Fno-remote cwd.\n\n## Parameters\n\nParse `$ARGUMENTS`:\n\n- `--apply` — perform the close. Without it the skill runs a **dry-run preview**\n  first, then asks once before closing.\n- `--project=\u003Cname>` — override the auto-detected project filter.\n- `--all` — reconcile across every project (rare; usually you want one repo).\n- `--limit=N` — cap how many linked tasks are inspected (default 200).\n\n## Execution\n\nExecute this reconciliation workflow:\n\n### Step 1: Resolve scope\n\nRun the shared project resolver (handles `--project` \u002F `--all` \u002F git-toplevel \u002F\ncwd, with no stderr-emitting git probes):\n\n```bash\nbash \"${CLAUDE_SKILL_DIR}\u002F..\u002F..\u002Fscripts\u002Fresolve-project.sh\" --project-dir \"$(pwd)\"\n```\n\nRead `PROJECT=` from the output. GitHub mode must be on (an authenticated `gh`\nplus a remote) — the reconcile script reports `GH_AVAILABLE=false` and exits\ncleanly if not.\n\n### Step 2: Dry-run classification\n\nRun the reconcile script **without** `--apply` to classify every linked task:\n\n```bash\nbash \"${CLAUDE_SKILL_DIR}\u002Fscripts\u002Freconcile.sh\" --project=PROJECT --project-dir \"$(pwd)\"\n```\n\nIt emits one `TASK ...` line per linked task with its `refs` count, `upstream`\nstate(s), a `verdict` (`live` \u002F `issue-closed` \u002F `pr-merged` \u002F `pr-closed` \u002F\n`review`), and\nthe close `method` it would use (`bulk` \u002F `done` \u002F `keep`). A task with several\nrefs is stale only when **every** ref is done — any open ref keeps it `live`,\nany unreadable ref keeps it (uncertain), and a `pr-closed` among them makes the\naggregate `pr-closed` (kept out of the bounded auto-apply set). A task with no\n`ghid`\u002F`ghpr` UDA whose text refs are all done is `review` (`method=keep`),\ncounted in `REVIEW_COUNT` and never in `STALE_COUNT`. Render the stale set as a\ntable for the user, list the `review` tasks separately for the user to check by\nhand, and read the `STALE_COUNT` \u002F `REVIEW_COUNT` \u002F `BULK_COUNT` \u002F `DONE_COUNT`\nsummary.\n\n### Step 3: Confirm and apply\n\nIf `STALE_COUNT` is 0, report \"queue is in sync\" and stop.\n\nIf `--apply` was passed in `$ARGUMENTS`, skip straight to running with `--apply`.\nOtherwise confirm once with **AskUserQuestion** (never a freeform \"y\u002Fn\" — see\n`.claude\u002Frules\u002Fskill-execution-structure.md`): \"Close N stale task(s)?\" with\noptions to proceed, review the table again, or cancel.\n\nOn confirmation, re-run with `--apply`:\n\n```bash\nbash \"${CLAUDE_SKILL_DIR}\u002Fscripts\u002Freconcile.sh\" --apply --project=PROJECT --project-dir \"$(pwd)\"\n```\n\nEach closed task is annotated with the reason (`reconcile: PR #45 merged`).\nLeaf tasks close via a bulk `task import` round-trip; tasks that block others\nclose via per-task `task done` so taskwarrior's dependency auto-unblock fires\n(see [REFERENCE.md](REFERENCE.md) for why the two paths differ).\n\n### Step 4: Report\n\nPrint `CLOSED_COUNT`, the per-task verdicts, and any `UNKNOWN_UPSTREAM` count\n(tasks whose issue\u002FPR could not be fetched — left untouched, never closed on\nuncertainty) or `AMBIGUOUS_REPO` count (`--all` only: tasks outside the cwd's\nproject whose refs name no repo, so the cwd repo cannot answer for them — run\nthe skill from that project's repo to reconcile them). Suggest `\u002Ftaskwarrior:task-status` to confirm the queue is clean.\n\n## Agentic Optimizations\n\n| Context | Command |\n|---------|---------|\n| Dry-run classify | `bash scripts\u002Freconcile.sh --project=PROJECT` |\n| Apply the close | `bash scripts\u002Freconcile.sh --apply --project=PROJECT` |\n| Cross-project sweep | `bash scripts\u002Freconcile.sh --all` |\n| UDA-linked snapshot (description refs also matched by the script) | `task project:PROJECT status:pending export \\| jq '[.[] \\| select(.ghid != null or .ghpr != null)]'` |\n| Issue state | `gh issue view N --json state --jq '.state'` |\n| PR state (per gh-json-fields) | `gh pr view N --json state --jq '.state'` |\n| Cross-repo ref state | `gh pr view N -R owner\u002Frepo --json state --jq '.state'` |\n| Skip empty-filter failures | Always `export \\| jq`, never `list` |\n\n## Quick Reference\n\n| Flag | Default | Purpose |\n|------|---------|---------|\n| `--apply` | off (dry-run) | Perform the close |\n| `--project=\u003Cname>` | repo basename | Override the project filter |\n| `--all` | off | Reconcile across every project. A ref that names no repo (bare `#N`, `ghid`\u002F`ghpr` UDA) resolves only for tasks in the cwd's project or a dotted child of it; elsewhere it is `upstream=AMBIGUOUS`, never sent to `gh`, and the task is kept (`AMBIGUOUS_REPO`) |\n| `--limit=N` | 200 | Max linked tasks to inspect |\n| `--only-verdicts=\u003Ccsv>` | unset (all stale closeable) | Restrict the apply set to these verdicts (e.g. `pr-merged,issue-closed`); other stale verdicts (notably `pr-closed`) are reported `method=keep` but never closed. `review` is never closeable, even when listed. Used by the scheduled bounded auto-apply (`scripts\u002Fscheduled-reconcile.sh --apply`) |\n\n| Verdict | Meaning | Close method |\n|---------|---------|--------------|\n| `live` | A referenced issue\u002FPR is still open (or a ref was unreadable) | keep |\n| `issue-closed` | Every referenced issue is CLOSED (no merged\u002Fclosed PR among them) | bulk \u002F done |\n| `pr-merged` | A referenced PR is MERGED and no referenced item is still open | bulk \u002F done |\n| `pr-closed` | A referenced PR is CLOSED unmerged (ambiguous — abandoned vs superseded) | bulk \u002F done |\n| `review` | No `ghid`\u002F`ghpr` UDA, and every text-ref item is closed or merged — the task may only cite it as context | keep (never closed) |\n\n## Related\n\n- `\u002Ftaskwarrior:task-status` — detects the drift this skill resolves\n- `\u002Ftaskwarrior:task-done` — close one task with a landing commit\n- `\u002Ftaskwarrior:task-add` — file the linked tasks this skill later reconciles\n- `.claude\u002Frules\u002Fgh-json-fields.md` — `state`\u002F`mergedAt` (never a `merged` field)\n- `.claude\u002Frules\u002Fparallel-safe-queries.md` — the `export | jq` idiom\n- `taskwarrior-plugin\u002Fskills\u002Ftask-reconcile\u002FREFERENCE.md` — bulk-vs-done routing, `task import` caveats\n","# \u002Ftaskwarrior:task-reconcile\n\nClose the tasks that have gone stale because the GitHub issue or PR they\nmirror has closed or merged. `task-status` *detects* this drift; this skill\n*acts* on it, so the queue does not silently fill with trackers for work that\nalready shipped.\n\nA task is \"linked\" whether it carries a `ghid`\u002F`ghpr` UDA **or** references an\nissue\u002FPR in its description\u002Fannotation text (a `#N`, an `owner\u002Frepo#N`, or a\n`github.com\u002Fowner\u002Frepo\u002F(issues|pull)\u002FN` URL) — so tasks filed with a plain\n`#N` in the description are reconciled too, and a cross-repo `owner\u002Frepo#N` is\nchecked against *that* repo, not the current one. Only a `ghid`\u002F`ghpr` UDA can\nclose a task: a task linked by text refs alone gets verdict `review` when its\nitems are done, and is reported but never closed, because tasks often cite a\nmerged PR as context for work that is still open (#3126).\n\n## When to Use This Skill\n\n| Use this skill when... | Use a sibling skill instead when... |\n|---|---|\n| Stale tasks (`ghid`\u002F`ghpr` UDA **or** a `#N`\u002F`owner\u002Frepo#N`\u002FURL in the description) have piled up after issues\u002FPRs closed | Auditing queue health without mutating it — use `task-status` |\n| Sweeping the queue after a batch of PRs merged | Closing one specific task by ID with a landing commit — use `task-done` |\n| Reconciling the local queue against GitHub as the source of record | Filing a new linked task — use `task-add` |\n\n## Context\n\n- Task CLI available: !`task --version`\n- Git repo detected: !`find . -maxdepth 1 -name '.git' -print -quit`\n- GH auth: !`gh auth status`\n\nGitHub-mode and project resolution run in the body (Step 1) via the bundled\nscripts, where stderr suppression and exit-code handling are available — git \u002F\ngh probes in a Context backtick abort the skill in a no-git\u002Fno-remote cwd.\n\n## Parameters\n\nParse `$ARGUMENTS`:\n\n- `--apply` — perform the close. Without it the skill runs a **dry-run preview**\n  first, then asks once before closing.\n- `--project=\u003Cname>` — override the auto-detected project filter.\n- `--all` — reconcile across every project (rare; usually you want one repo).\n- `--limit=N` — cap how many linked tasks are inspected (default 200).\n\n## Execution\n\nExecute this reconciliation workflow:\n\n### Step 1: Resolve scope\n\nRun the shared project resolver (handles `--project` \u002F `--all` \u002F git-toplevel \u002F\ncwd, with no stderr-emitting git probes):\n\n```bash\nbash \"${CLAUDE_SKILL_DIR}\u002F..\u002F..\u002Fscripts\u002Fresolve-project.sh\" --project-dir \"$(pwd)\"\n```\n\nRead `PROJECT=` from the output. GitHub mode must be on (an authenticated `gh`\nplus a remote) — the reconcile script reports `GH_AVAILABLE=false` and exits\ncleanly if not.\n\n### Step 2: Dry-run classification\n\nRun the reconcile script **without** `--apply` to classify every linked task:\n\n```bash\nbash \"${CLAUDE_SKILL_DIR}\u002Fscripts\u002Freconcile.sh\" --project=PROJECT --project-dir \"$(pwd)\"\n```\n\nIt emits one `TASK ...` line per linked task with its `refs` count, `upstream`\nstate(s), a `verdict` (`live` \u002F `issue-closed` \u002F `pr-merged` \u002F `pr-closed` \u002F\n`review`), and\nthe close `method` it would use (`bulk` \u002F `done` \u002F `keep`). A task with several\nrefs is stale only when **every** ref is done — any open ref keeps it `live`,\nany unreadable ref keeps it (uncertain), and a `pr-closed` among them makes the\naggregate `pr-closed` (kept out of the bounded auto-apply set). A task with no\n`ghid`\u002F`ghpr` UDA whose text refs are all done is `review` (`method=keep`),\ncounted in `REVIEW_COUNT` and never in `STALE_COUNT`. Render the stale set as a\ntable for the user, list the `review` tasks separately for the user to check by\nhand, and read the `STALE_COUNT` \u002F `REVIEW_COUNT` \u002F `BULK_COUNT` \u002F `DONE_COUNT`\nsummary.\n\n### Step 3: Confirm and apply\n\nIf `STALE_COUNT` is 0, report \"queue is in sync\" and stop.\n\nIf `--apply` was passed in `$ARGUMENTS`, skip straight to running with `--apply`.\nOtherwise confirm once with **AskUserQuestion** (never a freeform \"y\u002Fn\" — see\n`.claude\u002Frules\u002Fskill-execution-structure.md`): \"Close N stale task(s)?\" with\noptions to proceed, review the table again, or cancel.\n\nOn confirmation, re-run with `--apply`:\n\n```bash\nbash \"${CLAUDE_SKILL_DIR}\u002Fscripts\u002Freconcile.sh\" --apply --project=PROJECT --project-dir \"$(pwd)\"\n```\n\nEach closed task is annotated with the reason (`reconcile: PR #45 merged`).\nLeaf tasks close via a bulk `task import` round-trip; tasks that block others\nclose via per-task `task done` so taskwarrior's dependency auto-unblock fires\n(see [REFERENCE.md](REFERENCE.md) for why the two paths differ).\n\n### Step 4: Report\n\nPrint `CLOSED_COUNT`, the per-task verdicts, and any `UNKNOWN_UPSTREAM` count\n(tasks whose issue\u002FPR could not be fetched — left untouched, never closed on\nuncertainty) or `AMBIGUOUS_REPO` count (`--all` only: tasks outside the cwd's\nproject whose refs name no repo, so the cwd repo cannot answer for them — run\nthe skill from that project's repo to reconcile them). Suggest `\u002Ftaskwarrior:task-status` to confirm the queue is clean.\n\n## Agentic Optimizations\n\n| Context | Command |\n|---------|---------|\n| Dry-run classify | `bash scripts\u002Freconcile.sh --project=PROJECT` |\n| Apply the close | `bash scripts\u002Freconcile.sh --apply --project=PROJECT` |\n| Cross-project sweep | `bash scripts\u002Freconcile.sh --all` |\n| UDA-linked snapshot (description refs also matched by the script) | `task project:PROJECT status:pending export \\| jq '[.[] \\| select(.ghid != null or .ghpr != null)]'` |\n| Issue state | `gh issue view N --json state --jq '.state'` |\n| PR state (per gh-json-fields) | `gh pr view N --json state --jq '.state'` |\n| Cross-repo ref state | `gh pr view N -R owner\u002Frepo --json state --jq '.state'` |\n| Skip empty-filter failures | Always `export \\| jq`, never `list` |\n\n## Quick Reference\n\n| Flag | Default | Purpose |\n|------|---------|---------|\n| `--apply` | off (dry-run) | Perform the close |\n| `--project=\u003Cname>` | repo basename | Override the project filter |\n| `--all` | off | Reconcile across every project. A ref that names no repo (bare `#N`, `ghid`\u002F`ghpr` UDA) resolves only for tasks in the cwd's project or a dotted child of it; elsewhere it is `upstream=AMBIGUOUS`, never sent to `gh`, and the task is kept (`AMBIGUOUS_REPO`) |\n| `--limit=N` | 200 | Max linked tasks to inspect |\n| `--only-verdicts=\u003Ccsv>` | unset (all stale closeable) | Restrict the apply set to these verdicts (e.g. `pr-merged,issue-closed`); other stale verdicts (notably `pr-closed`) are reported `method=keep` but never closed. `review` is never closeable, even when listed. Used by the scheduled bounded auto-apply (`scripts\u002Fscheduled-reconcile.sh --apply`) |\n\n| Verdict | Meaning | Close method |\n|---------|---------|--------------|\n| `live` | A referenced issue\u002FPR is still open (or a ref was unreadable) | keep |\n| `issue-closed` | Every referenced issue is CLOSED (no merged\u002Fclosed PR among them) | bulk \u002F done |\n| `pr-merged` | A referenced PR is MERGED and no referenced item is still open | bulk \u002F done |\n| `pr-closed` | A referenced PR is CLOSED unmerged (ambiguous — abandoned vs superseded) | bulk \u002F done |\n| `review` | No `ghid`\u002F`ghpr` UDA, and every text-ref item is closed or merged — the task may only cite it as context | keep (never closed) |\n\n## Related\n\n- `\u002Ftaskwarrior:task-status` — detects the drift this skill resolves\n- `\u002Ftaskwarrior:task-done` — close one task with a landing commit\n- `\u002Ftaskwarrior:task-add` — file the linked tasks this skill later reconciles\n- `.claude\u002Frules\u002Fgh-json-fields.md` — `state`\u002F`mergedAt` (never a `merged` field)\n- `.claude\u002Frules\u002Fparallel-safe-queries.md` — the `export | jq` idiom\n- `taskwarrior-plugin\u002Fskills\u002Ftask-reconcile\u002FREFERENCE.md` — bulk-vs-done routing, `task import` caveats\n",{"args":47,"name":5,"created":48,"modified":49,"reviewed":50,"description":7,"allowed-tools":51,"argument-hint":52},"[--apply] [--project=\u003Cname>] [--all]",1781913600000,1793577600000,1782950400000,"Bash(task *), Bash(gh issue *), Bash(gh pr *), Bash(jq *), Bash(bash *), Bash(git rev-parse *), Read, TodoWrite","optional --apply to close (default dry-run preview)","main","0f16c3d5530537790787dc648f3e78f5f32b1825","taskwarrior-plugin\u002Fskills\u002Ftask-reconcile",6,"https:\u002F\u002Fgithub.com\u002Flaurigates\u002Fclaude-plugins","https:\u002F\u002Fgithub.com\u002Flaurigates","Linux enthusiast, cloud engineer, neovim addict, electronics hobbyist.","2026-11-12 03:43:32",{"source":8,"skillName":5,"commands":62,"prompt":72,"zipAvailable":73},[63,66,69],{"tool":64,"command":65},"npx","npx skills add laurigates\u002Fclaude-plugins --skill task-reconcile",{"tool":67,"command":68},"bunx","bunx skills add laurigates\u002Fclaude-plugins --skill task-reconcile",{"tool":70,"command":71},"pnpm","pnpm dlx skills add laurigates\u002Fclaude-plugins --skill task-reconcile","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Flaurigates\u002Fclaude-plugins\u002Fblob\u002Fmain\u002Ftaskwarrior-plugin\u002Fskills\u002Ftask-reconcile\u002FSKILL.md",true,[75,81],{"path":76,"resourceType":77,"resourceTypeDesc":78,"sizeBytes":79,"sourceHtmlUrl":80},"REFERENCE.md","REFERENCE","参考文档",9740,"https:\u002F\u002Fgithub.com\u002Flaurigates\u002Fclaude-plugins\u002Fblob\u002Fmain\u002Ftaskwarrior-plugin\u002Fskills\u002Ftask-reconcile\u002FREFERENCE.md",{"path":82,"resourceType":83,"resourceTypeDesc":84,"sizeBytes":85,"sourceHtmlUrl":86},"scripts\u002Freconcile.sh","SCRIPT","脚本",20792,"https:\u002F\u002Fgithub.com\u002Flaurigates\u002Fclaude-plugins\u002Fblob\u002Fmain\u002Ftaskwarrior-plugin\u002Fskills\u002Ftask-reconcile\u002Fscripts\u002Freconcile.sh",[88,116,137,153,175,204],{"skillNo":89,"name":90,"nameZh":6,"description":91,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":92,"categories":93,"keywords":99,"publishedAt":42},"01M70PFHMH9ADY0CRE6047Y4B2","kitty-show-image","Show the user an image with a note on what to judge, via a file send or a labelled kitty tab. Use when the user must see an image, or icat fails with no \u002Fdev\u002Ftty.","https:\u002F\u002Fgithub.com\u002Flaurigates\u002Fclaude-plugins\u002Fblob\u002Fmain\u002Fkitty-plugin\u002Fskills\u002Fkitty-show-image\u002FSKILL.md",[94],{"categoryNo":95,"categoryName":96,"taxonomyType":97,"taxonomyTypeDesc":98},"01JBSEEDCAT000000000000016","图像与多媒体","SCENARIO","使用场景",[100,101,102,103,104,105,106,107,108,109,110,23,37,111,112,113,114,115,22,27],"show","kitty show image","image","kitty","show image","ls","get","send","open","dev","use","file","text","with","xdg","via",{"skillNo":117,"name":118,"nameZh":6,"description":119,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":120,"categories":121,"keywords":122,"publishedAt":42},"01M70PFEN18HKQ4RCQ1VPGMPTB","kitty-session-persistence","Snapshot and restore kitty terminal sessions on macOS. Use when surviving WindowServer hangs without losing tabs, configuring snapshots, or restoring after a force-reboot.","https:\u002F\u002Fgithub.com\u002Flaurigates\u002Fclaude-plugins\u002Fblob\u002Fmain\u002Fkitty-plugin\u002Fskills\u002Fkitty-session-persistence\u002FSKILL.md",[],[103,123,124,125,126,127,23,37,128,129,130,22,27,131,132,133,134,135,136,110],"kitty session persistence","session","persistence","false","snapshots","uname","reboot","terminal","write","edit","snapshot","macos","sessions","restore",{"skillNo":138,"name":139,"nameZh":6,"description":140,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":141,"categories":142,"keywords":143,"publishedAt":42},"01M70PFC77XGXCVQ1543VGZHYR","kitty-remote-control","Safe kitty remote control from an agent — read panes with kitty @ ls\u002Fget-text, notify, and never mutate the live terminal unasked. Use when running inside kitty.","https:\u002F\u002Fgithub.com\u002Flaurigates\u002Fclaude-plugins\u002Fblob\u002Fmain\u002Fkitty-plugin\u002Fskills\u002Fkitty-remote-control\u002FSKILL.md",[],[144,145,103,146,147,105,148,149,106,150,151,110,23,152,37,112,113,130,22,27],"kitty remote control","remote","control","remote control","running","never","panes","notify","query",{"skillNo":154,"name":155,"nameZh":6,"description":156,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":157,"categories":158,"keywords":159,"publishedAt":42},"01M70P6WVMCT5JG4SACTM69AF9","docs-reference-check","Dangling doc-reference gate: flag markdown naming repo paths or relative links that no longer exist. Use when docs cite moved\u002Fdeleted files, or wiring a doc-drift lint.","https:\u002F\u002Fgithub.com\u002Flaurigates\u002Fclaude-plugins\u002Fblob\u002Fmain\u002Fdocumentation-plugin\u002Fskills\u002Fdocs-reference-check\u002FSKILL.md",[],[160,161,162,163,164,165,166,167,168,169,110,23,37,32,111,170,171,172,173,174],"docs reference check","check","reference check","reference","docs","links","python3","repo","files","auto","lint","wiring","chezmoi","references","cp",{"skillNo":176,"name":177,"nameZh":6,"description":178,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":179,"categories":180,"keywords":190,"publishedAt":42},"01M6C6NDE7DAQGNWSF22J5CJ0Z","youtube-upload","Upload a video to YouTube via the Data API v3 and edit its title, description, tags or thumbnail afterwards. Use when publishing or retitling a YouTube video.","https:\u002F\u002Fgithub.com\u002Flaurigates\u002Fclaude-plugins\u002Fblob\u002Fmain\u002Fyoutube-plugin\u002Fskills\u002Fyoutube-upload\u002FSKILL.md",[181,184,185],{"categoryNo":182,"categoryName":183,"taxonomyType":97,"taxonomyTypeDesc":98},"01JBSEEDCAT000000000000010","后端与接口",{"categoryNo":95,"categoryName":96,"taxonomyType":97,"taxonomyTypeDesc":98},{"categoryNo":186,"categoryName":187,"taxonomyType":188,"taxonomyTypeDesc":189},"01JBSEEDCAT000000000000030","开发工程师","PROFESSION","适用职业",[191,192,193,194,166,29,27,195,132,196,197,198,110,37,111,199,200,23,201,202,203,115,22],"youtube upload","upload","youtube","Video","uv run","publishing","data","uv","api","v3","tags","id","title",{"skillNo":205,"name":206,"nameZh":6,"description":207,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":208,"categories":209,"keywords":213,"publishedAt":42},"01M6C6NABWW1X58KJJM4F6GQMQ","youtube-studio-share","Share a private YouTube video with a whole Google Workspace organization by scripting YouTube Studio in the browser. Use when a video must be org-only.","https:\u002F\u002Fgithub.com\u002Flaurigates\u002Fclaude-plugins\u002Fblob\u002Fmain\u002Fyoutube-plugin\u002Fskills\u002Fyoutube-studio-share\u002FSKILL.md",[210],{"categoryNo":211,"categoryName":212,"taxonomyType":97,"taxonomyTypeDesc":98},"01JBSEEDCAT000000000000023","Skill与智能体开发",[214,215,216,217,193,194,218,219,220,221,222,27,223,224,225,226,110,227,23,113,228,22],"youtube studio share","share","youtube studio","studio","browser","javascript","scripting","google workspace","workspace","tool","google","only","MCP","chrome","organization"]