[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6C5XEYFWRG1KDM55JMT8ZZS":3,"skill-same:01M6C5XEYFWRG1KDM55JMT8ZZS":77},{"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":40,"linkOnly":41,"markdownContent":42,"markdownBody":43,"frontMatter":44,"refName":49,"commitSha":50,"skillDirectory":51,"forksCount":52,"repositoryHtmlUrl":53,"repositoryHomepageUrl":6,"ownerHtmlUrl":54,"ownerBlogUrl":6,"ownerDescription":55,"updatedAt":56,"install":57,"resources":70},"01M6C5XEYFWRG1KDM55JMT8ZZS","git-cli-agentic",null,"Machine-readable git output for scripts: status --porcelain=v2, diff --numstat, log --format placeholders, ahead\u002Fbehind counts. Use when a script or agent parses git state, not to make a commit.","laurigates\u002Fclaude-plugins","laurigates","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F13014001?v=4","01M6C59YHWS9C7KMXKSRX1YXNP","Lauri Gates","01M6C59YP2APG9YAM4DWYQYGFJ",60,"MIT","https:\u002F\u002Fgithub.com\u002Flaurigates\u002Fclaude-plugins\u002Fblob\u002Fmain\u002Fgit-plugin\u002Fskills\u002Fgit-cli-agentic\u002FSKILL.md",[],[19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39],"agentic","cli","git","git cli agentic","git cli","2026","make","add","scripts","when","false","remote","2025","status","read","log","commit","Bash","diff","push","branch","2026-11-10 10:12:30",false,"---\nname: git-cli-agentic\ndescription: \"Machine-readable git output for scripts: status --porcelain=v2, diff --numstat, log --format placeholders, ahead\u002Fbehind counts. Use when a script or agent parses git state, not to make a commit.\"\nuser-invocable: false\nallowed-tools: Bash(git status *), Bash(git diff *), Bash(git log *), Bash(git branch *), Bash(git remote *), Bash(git add *), Bash(git commit *), Bash(git push *), Bash(git restore *), Read\ncreated: 2025-01-16\nmodified: 2026-11-06\nreviewed: 2026-04-25\n---\n\n# Git CLI Agentic Patterns\n\n## When to Use This Skill\n\n| Use this skill when... | Use the alternative when... |\n|---|---|\n| Writing scriptable `git status\u002Fdiff\u002Flog` calls in porcelain or `--format` mode | Use `gh-cli-agentic` for `gh` JSON queries against the GitHub API |\n| Needing `--porcelain=v2` status, `--numstat` diff counts, or custom `--format` log placeholders | Use `git-commit-workflow` for staging conventions and commit message structure |\n| Reading branch tracking info or main-branch-development push patterns | Use `git-branch-pr-workflow` for the broader branch + PR design choices |\n| Producing deterministic output for parsers and downstream tooling | Use `git-derive-docs` to mine commit history for rules\u002FPRDs\u002FADRs\u002FPRPs |\n\nOptimized git commands for AI agent consumption using porcelain output and stable formats.\n\n## Core Principle\n\nUse `--porcelain` for machine-readable output that remains stable across Git versions and user configurations.\n\n## Working Directory\n\n**Run git commands directly — your working directory is the repo:**\n```bash\ngit status\ngit log --oneline -5\ngit diff --stat\n```\n\nThe `-C` flag is only needed when targeting a different repository from your current directory:\n```bash\n# Submodule: run command against parent repo\ngit -C \"$(git rev-parse --show-toplevel)\" remote get-url origin\n\n# Script: iterate over multiple repos\nfor repo in repos\u002F*; do\n  git -C \"$repo\" status --porcelain\ndone\n```\n\n## Status Operations\n\n### Porcelain Status\n\n```bash\n# Version 2 porcelain with branch info (recommended)\ngit status --porcelain=v2 --branch\n\n# Version 1 porcelain (simpler)\ngit status --porcelain\n\n# Short format (human-readable but stable)\ngit status --short --branch\n```\n\n**Porcelain v2 Format**:\n```\n# branch.oid \u003Ccommit>\n# branch.head \u003Cbranch>\n# branch.upstream \u003Cupstream>\n# branch.ab +\u003Cahead> -\u003Cbehind>\n1 \u003CXY> \u003Csub> \u003CmH> \u003CmI> \u003CmW> \u003ChH> \u003ChI> \u003Cpath>\n2 \u003CXY> \u003Csub> \u003CmH> \u003CmI> \u003CmW> \u003ChH> \u003ChI> \u003CX>\u003Cscore> \u003Cpath>\u003Ctab>\u003CorigPath>\n? \u003Cpath>\n! \u003Cpath>\n```\n\n**Status Codes**:\n\n| Code | Meaning |\n|------|---------|\n| M | Modified |\n| A | Added |\n| D | Deleted |\n| R | Renamed |\n| C | Copied |\n| ? | Untracked |\n| ! | Ignored |\n\n### Quick Checks\n\n```bash\n# Check if clean (empty output = clean)\ngit status --porcelain\n\n# Count changed files\ngit status --porcelain | wc -l\n\n# Check for uncommitted changes\ngit diff --quiet || echo \"has changes\"\n```\n\n## Diff Operations\n\n### Stat Output\n\n```bash\n# File change summary\ngit diff --stat\n\n# Numeric stats (machine-readable)\ngit diff --numstat\n\n# Name and status only\ngit diff --name-status\n\n# Names only\ngit diff --name-only\n```\n\n**Numstat Format**: `\u003Cadded>\\t\u003Cdeleted>\\t\u003Cfilename>`\n\n### Staged vs Unstaged\n\n```bash\n# Unstaged changes\ngit diff --numstat\n\n# Staged changes\ngit diff --cached --numstat\n\n# Both (working tree vs HEAD)\ngit diff HEAD --numstat\n```\n\n### Specific Comparisons\n\n```bash\n# Against specific commit\ngit diff $COMMIT --numstat\n\n# Between branches\ngit diff main..feature --numstat\n\n# Between commits\ngit diff $COMMIT1..$COMMIT2 --name-status\n```\n\n### Pathspecs: use `:(glob)` for `**`\n\nA plain git pathspec is not a gitignore-style glob. Without magic, `*` matches\nacross `\u002F` and `**` is just two of them, so a filter can silently miss files:\n\n| Pathspec | `src\u002Fproxy.ts` | `src\u002Flib\u002Fa.ts` |\n|----------|:---:|:---:|\n| `'src\u002F**\u002F*.ts'` | no (needs a second `\u002F`) | yes |\n| `':(glob)src\u002F**\u002F*.ts'` | yes | yes |\n| `'src\u002F*.ts'` | yes | yes (`*` crosses `\u002F`) |\n| `':(glob)src\u002F*.ts'` | yes | no |\n\n```bash\ngit diff --name-only origin\u002Fmain...HEAD -- ':(glob)src\u002F**\u002F*.ts'\n```\n\nThe miss produces no error, only a shorter file list. A changed-files step that\nfeeds CI checks then skips top-level files without anyone noticing. Test a new\npathspec against a repo that has both top-level and nested matches.\n\n## Log Operations\n\n### Custom Format\n\n```bash\n# Hash and subject only\ngit log --format='%H %s' -n 10\n\n# Oneline (built-in)\ngit log --oneline -n 10\n\n# With stats\ngit log --oneline --stat -n 5\n\n# Machine-parseable with multiple fields\ngit log --format='%H|%an|%ae|%s' -n 10\n```\n\n**Format Placeholders**:\n\n| Placeholder | Meaning |\n|-------------|---------|\n| `%H` | Full commit hash |\n| `%h` | Short hash |\n| `%s` | Subject |\n| `%b` | Body |\n| `%an` | Author name |\n| `%ae` | Author email |\n| `%ad` | Author date |\n| `%cn` | Committer name |\n\n### Filtering\n\n```bash\n# By author\ngit log --author=\"name\" --oneline -n 10\n\n# By date range\ngit log --since=\"2025-01-01\" --oneline\n\n# By path\ngit log --oneline -n 10 -- path\u002Fto\u002Ffile\n\n# Merge commits only\ngit log --merges --oneline -n 5\n```\n\n## Branch Operations\n\n### Branch Info\n\n```bash\n# List with tracking info\ngit branch -vv\n\n# Formatted output\ngit branch --format='%(refname:short) %(upstream:short) %(upstream:track)'\n\n# Current branch only\ngit branch --show-current\n\n# Remote branches\ngit branch -r --format='%(refname:short)'\n```\n\n### Tracking Status\n\n```bash\n# Ahead\u002Fbehind count\ngit rev-list --left-right --count origin\u002Fmain...HEAD\n\n# Output: \u003Cbehind>\\t\u003Cahead>\n```\n\n## Remote Operations\n\n```bash\n# List remotes with URLs\ngit remote -v\n\n# Get specific remote URL\ngit remote get-url origin\n\n# Show remote details\ngit remote show origin\n```\n\n## Staging Operations\n\n```bash\n# Stage specific files\ngit add path\u002Fto\u002Ffile\n\n# Stage several files: name each path you changed (bulk staging also\n# sweeps up another agent's uncommitted work in a shared checkout)\ngit add src\u002Fa.ts src\u002Fb.ts tests\u002Fa.test.ts\n\n# Stage selected hunks of one file\ngit add -p path\u002Fto\u002Ffile\n\n# Unstage file\ngit restore --staged path\u002Fto\u002Ffile\n\n# Discard changes\ngit restore path\u002Fto\u002Ffile\n```\n\n## Commit Operations\n\n```bash\n# Simple commit\ngit commit -m \"message\"\n\n# With body (heredoc)\n# Inside \u003C\u003C'EOF' (quoted delimiter), backticks, $, and \\ are already\n# literal — never backslash-escape them, or the backslash survives into\n# the commit message.\ngit commit -m \"$(cat \u003C\u003C'EOF'\nSubject line\n\nBody paragraph with `code` and $vars written verbatim.\n\nCo-Authored-By: Name \u003Cemail>\nEOF\n)\"\n\n# Amend last commit (use carefully)\ngit commit --amend -m \"new message\"\n```\n\n## Push Operations\n\n```bash\n# Push current branch\ngit push origin HEAD\n\n# Push to different remote branch (main-branch development)\ngit push origin main:feature-branch\n\n# Push commit range\ngit push origin start^..end:feature-branch\n\n# Set upstream\ngit push -u origin HEAD\n```\n\n## Agentic Optimizations\n\n| Context | Command |\n|---------|---------|\n| Quick status | `git status --porcelain=v2 --branch` |\n| Changed files | `git diff --name-status` |\n| Staged changes | `git diff --cached --numstat` |\n| Recent commits | `git log --format='%h %s' -n 5` |\n| Branch tracking | `git branch -vv --format='%(refname:short) %(upstream:track)'` |\n| Current branch | `git branch --show-current` |\n\n## Error Handling in Context\n\nUse `2>\u002Fdev\u002Fnull` to suppress errors in context expressions (do NOT use `||` fallbacks - blocked by Claude Code 2.1.7+):\n\n```markdown\n- Git status: !`git status --porcelain=v2 --branch`\n- Current branch: !`git branch --show-current`\n- Remote URL: !`git remote -v`\n```\n\n## Combining with GH CLI\n\nFor GitHub-specific operations, combine with `gh` commands:\n\n```bash\n# Get repo owner\u002Fname\ngh repo view --json nameWithOwner --jq '.nameWithOwner'\n\n# Then use in git operations\ngit push origin main:$(gh pr view --json headRefName --jq '.headRefName')\n```\n\n## Best Practices\n\n1. **Use porcelain v2** for status when parsing programmatically\n2. **Use --numstat** for diff when counting changes\n3. **Use custom --format** for log when extracting specific fields\n4. **Always add 2>\u002Fdev\u002Fnull fallback** in context expressions\n5. **Prefer git switch\u002Frestore** over checkout for clarity\n","# Git CLI Agentic Patterns\n\n## When to Use This Skill\n\n| Use this skill when... | Use the alternative when... |\n|---|---|\n| Writing scriptable `git status\u002Fdiff\u002Flog` calls in porcelain or `--format` mode | Use `gh-cli-agentic` for `gh` JSON queries against the GitHub API |\n| Needing `--porcelain=v2` status, `--numstat` diff counts, or custom `--format` log placeholders | Use `git-commit-workflow` for staging conventions and commit message structure |\n| Reading branch tracking info or main-branch-development push patterns | Use `git-branch-pr-workflow` for the broader branch + PR design choices |\n| Producing deterministic output for parsers and downstream tooling | Use `git-derive-docs` to mine commit history for rules\u002FPRDs\u002FADRs\u002FPRPs |\n\nOptimized git commands for AI agent consumption using porcelain output and stable formats.\n\n## Core Principle\n\nUse `--porcelain` for machine-readable output that remains stable across Git versions and user configurations.\n\n## Working Directory\n\n**Run git commands directly — your working directory is the repo:**\n```bash\ngit status\ngit log --oneline -5\ngit diff --stat\n```\n\nThe `-C` flag is only needed when targeting a different repository from your current directory:\n```bash\n# Submodule: run command against parent repo\ngit -C \"$(git rev-parse --show-toplevel)\" remote get-url origin\n\n# Script: iterate over multiple repos\nfor repo in repos\u002F*; do\n  git -C \"$repo\" status --porcelain\ndone\n```\n\n## Status Operations\n\n### Porcelain Status\n\n```bash\n# Version 2 porcelain with branch info (recommended)\ngit status --porcelain=v2 --branch\n\n# Version 1 porcelain (simpler)\ngit status --porcelain\n\n# Short format (human-readable but stable)\ngit status --short --branch\n```\n\n**Porcelain v2 Format**:\n```\n# branch.oid \u003Ccommit>\n# branch.head \u003Cbranch>\n# branch.upstream \u003Cupstream>\n# branch.ab +\u003Cahead> -\u003Cbehind>\n1 \u003CXY> \u003Csub> \u003CmH> \u003CmI> \u003CmW> \u003ChH> \u003ChI> \u003Cpath>\n2 \u003CXY> \u003Csub> \u003CmH> \u003CmI> \u003CmW> \u003ChH> \u003ChI> \u003CX>\u003Cscore> \u003Cpath>\u003Ctab>\u003CorigPath>\n? \u003Cpath>\n! \u003Cpath>\n```\n\n**Status Codes**:\n\n| Code | Meaning |\n|------|---------|\n| M | Modified |\n| A | Added |\n| D | Deleted |\n| R | Renamed |\n| C | Copied |\n| ? | Untracked |\n| ! | Ignored |\n\n### Quick Checks\n\n```bash\n# Check if clean (empty output = clean)\ngit status --porcelain\n\n# Count changed files\ngit status --porcelain | wc -l\n\n# Check for uncommitted changes\ngit diff --quiet || echo \"has changes\"\n```\n\n## Diff Operations\n\n### Stat Output\n\n```bash\n# File change summary\ngit diff --stat\n\n# Numeric stats (machine-readable)\ngit diff --numstat\n\n# Name and status only\ngit diff --name-status\n\n# Names only\ngit diff --name-only\n```\n\n**Numstat Format**: `\u003Cadded>\\t\u003Cdeleted>\\t\u003Cfilename>`\n\n### Staged vs Unstaged\n\n```bash\n# Unstaged changes\ngit diff --numstat\n\n# Staged changes\ngit diff --cached --numstat\n\n# Both (working tree vs HEAD)\ngit diff HEAD --numstat\n```\n\n### Specific Comparisons\n\n```bash\n# Against specific commit\ngit diff $COMMIT --numstat\n\n# Between branches\ngit diff main..feature --numstat\n\n# Between commits\ngit diff $COMMIT1..$COMMIT2 --name-status\n```\n\n### Pathspecs: use `:(glob)` for `**`\n\nA plain git pathspec is not a gitignore-style glob. Without magic, `*` matches\nacross `\u002F` and `**` is just two of them, so a filter can silently miss files:\n\n| Pathspec | `src\u002Fproxy.ts` | `src\u002Flib\u002Fa.ts` |\n|----------|:---:|:---:|\n| `'src\u002F**\u002F*.ts'` | no (needs a second `\u002F`) | yes |\n| `':(glob)src\u002F**\u002F*.ts'` | yes | yes |\n| `'src\u002F*.ts'` | yes | yes (`*` crosses `\u002F`) |\n| `':(glob)src\u002F*.ts'` | yes | no |\n\n```bash\ngit diff --name-only origin\u002Fmain...HEAD -- ':(glob)src\u002F**\u002F*.ts'\n```\n\nThe miss produces no error, only a shorter file list. A changed-files step that\nfeeds CI checks then skips top-level files without anyone noticing. Test a new\npathspec against a repo that has both top-level and nested matches.\n\n## Log Operations\n\n### Custom Format\n\n```bash\n# Hash and subject only\ngit log --format='%H %s' -n 10\n\n# Oneline (built-in)\ngit log --oneline -n 10\n\n# With stats\ngit log --oneline --stat -n 5\n\n# Machine-parseable with multiple fields\ngit log --format='%H|%an|%ae|%s' -n 10\n```\n\n**Format Placeholders**:\n\n| Placeholder | Meaning |\n|-------------|---------|\n| `%H` | Full commit hash |\n| `%h` | Short hash |\n| `%s` | Subject |\n| `%b` | Body |\n| `%an` | Author name |\n| `%ae` | Author email |\n| `%ad` | Author date |\n| `%cn` | Committer name |\n\n### Filtering\n\n```bash\n# By author\ngit log --author=\"name\" --oneline -n 10\n\n# By date range\ngit log --since=\"2025-01-01\" --oneline\n\n# By path\ngit log --oneline -n 10 -- path\u002Fto\u002Ffile\n\n# Merge commits only\ngit log --merges --oneline -n 5\n```\n\n## Branch Operations\n\n### Branch Info\n\n```bash\n# List with tracking info\ngit branch -vv\n\n# Formatted output\ngit branch --format='%(refname:short) %(upstream:short) %(upstream:track)'\n\n# Current branch only\ngit branch --show-current\n\n# Remote branches\ngit branch -r --format='%(refname:short)'\n```\n\n### Tracking Status\n\n```bash\n# Ahead\u002Fbehind count\ngit rev-list --left-right --count origin\u002Fmain...HEAD\n\n# Output: \u003Cbehind>\\t\u003Cahead>\n```\n\n## Remote Operations\n\n```bash\n# List remotes with URLs\ngit remote -v\n\n# Get specific remote URL\ngit remote get-url origin\n\n# Show remote details\ngit remote show origin\n```\n\n## Staging Operations\n\n```bash\n# Stage specific files\ngit add path\u002Fto\u002Ffile\n\n# Stage several files: name each path you changed (bulk staging also\n# sweeps up another agent's uncommitted work in a shared checkout)\ngit add src\u002Fa.ts src\u002Fb.ts tests\u002Fa.test.ts\n\n# Stage selected hunks of one file\ngit add -p path\u002Fto\u002Ffile\n\n# Unstage file\ngit restore --staged path\u002Fto\u002Ffile\n\n# Discard changes\ngit restore path\u002Fto\u002Ffile\n```\n\n## Commit Operations\n\n```bash\n# Simple commit\ngit commit -m \"message\"\n\n# With body (heredoc)\n# Inside \u003C\u003C'EOF' (quoted delimiter), backticks, $, and \\ are already\n# literal — never backslash-escape them, or the backslash survives into\n# the commit message.\ngit commit -m \"$(cat \u003C\u003C'EOF'\nSubject line\n\nBody paragraph with `code` and $vars written verbatim.\n\nCo-Authored-By: Name \u003Cemail>\nEOF\n)\"\n\n# Amend last commit (use carefully)\ngit commit --amend -m \"new message\"\n```\n\n## Push Operations\n\n```bash\n# Push current branch\ngit push origin HEAD\n\n# Push to different remote branch (main-branch development)\ngit push origin main:feature-branch\n\n# Push commit range\ngit push origin start^..end:feature-branch\n\n# Set upstream\ngit push -u origin HEAD\n```\n\n## Agentic Optimizations\n\n| Context | Command |\n|---------|---------|\n| Quick status | `git status --porcelain=v2 --branch` |\n| Changed files | `git diff --name-status` |\n| Staged changes | `git diff --cached --numstat` |\n| Recent commits | `git log --format='%h %s' -n 5` |\n| Branch tracking | `git branch -vv --format='%(refname:short) %(upstream:track)'` |\n| Current branch | `git branch --show-current` |\n\n## Error Handling in Context\n\nUse `2>\u002Fdev\u002Fnull` to suppress errors in context expressions (do NOT use `||` fallbacks - blocked by Claude Code 2.1.7+):\n\n```markdown\n- Git status: !`git status --porcelain=v2 --branch`\n- Current branch: !`git branch --show-current`\n- Remote URL: !`git remote -v`\n```\n\n## Combining with GH CLI\n\nFor GitHub-specific operations, combine with `gh` commands:\n\n```bash\n# Get repo owner\u002Fname\ngh repo view --json nameWithOwner --jq '.nameWithOwner'\n\n# Then use in git operations\ngit push origin main:$(gh pr view --json headRefName --jq '.headRefName')\n```\n\n## Best Practices\n\n1. **Use porcelain v2** for status when parsing programmatically\n2. **Use --numstat** for diff when counting changes\n3. **Use custom --format** for log when extracting specific fields\n4. **Always add 2>\u002Fdev\u002Fnull fallback** in context expressions\n5. **Prefer git switch\u002Frestore** over checkout for clarity\n",{"name":5,"created":45,"modified":46,"reviewed":47,"description":7,"allowed-tools":48,"user-invocable":41},1736985600000,1793923200000,1777075200000,"Bash(git status *), Bash(git diff *), Bash(git log *), Bash(git branch *), Bash(git remote *), Bash(git add *), Bash(git commit *), Bash(git push *), Bash(git restore *), Read","main","9d783554148f9c8a9c55a486b480760d3da673e6","git-plugin\u002Fskills\u002Fgit-cli-agentic",6,"https:\u002F\u002Fgithub.com\u002Flaurigates\u002Fclaude-plugins","https:\u002F\u002Fgithub.com\u002Flaurigates","Linux enthusiast, cloud engineer, neovim addict, electronics hobbyist.","2026-11-13 20:24:11",{"source":8,"skillName":5,"commands":58,"prompt":68,"zipAvailable":69},[59,62,65],{"tool":60,"command":61},"npx","npx skills add laurigates\u002Fclaude-plugins --skill git-cli-agentic",{"tool":63,"command":64},"bunx","bunx skills add laurigates\u002Fclaude-plugins --skill git-cli-agentic",{"tool":66,"command":67},"pnpm","pnpm dlx skills add laurigates\u002Fclaude-plugins --skill git-cli-agentic","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Flaurigates\u002Fclaude-plugins\u002Fblob\u002Fmain\u002Fgit-plugin\u002Fskills\u002Fgit-cli-agentic\u002FSKILL.md",true,[71],{"path":72,"resourceType":73,"resourceTypeDesc":74,"sizeBytes":75,"sourceHtmlUrl":76},"evals.json","REFERENCE","参考文档",3783,"https:\u002F\u002Fgithub.com\u002Flaurigates\u002Fclaude-plugins\u002Fblob\u002Fmain\u002Fgit-plugin\u002Fskills\u002Fgit-cli-agentic\u002Fevals.json",[78,106,126,141,164,194],{"skillNo":79,"name":80,"nameZh":6,"description":81,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":82,"categories":83,"keywords":89,"publishedAt":40},"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",[84],{"categoryNo":85,"categoryName":86,"taxonomyType":87,"taxonomyTypeDesc":88},"01JBSEEDCAT000000000000016","图像与多媒体","SCENARIO","使用场景",[90,91,92,93,94,95,96,97,98,99,100,28,36,101,102,103,104,105,24,33],"show","kitty show image","image","kitty","show image","ls","get","send","open","dev","use","file","text","with","xdg","via",{"skillNo":107,"name":108,"nameZh":6,"description":109,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":110,"categories":111,"keywords":112,"publishedAt":40},"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",[],[93,113,114,115,29,116,28,36,117,118,119,24,33,120,121,122,123,124,125,100],"kitty session persistence","session","persistence","snapshots","uname","reboot","terminal","write","edit","snapshot","macos","sessions","restore",{"skillNo":127,"name":128,"nameZh":6,"description":129,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":130,"categories":131,"keywords":132,"publishedAt":40},"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",[],[133,30,93,134,135,95,136,137,96,138,139,100,28,140,36,102,103,119,24,33],"kitty remote control","control","remote control","running","never","panes","notify","query",{"skillNo":142,"name":143,"nameZh":6,"description":144,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":145,"categories":146,"keywords":147,"publishedAt":40},"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",[],[148,149,150,151,152,153,154,155,156,157,100,28,36,158,101,159,160,161,162,163],"docs reference check","check","reference check","reference","docs","links","python3","repo","files","auto","drift","lint","wiring","chezmoi","references","cp",{"skillNo":165,"name":166,"nameZh":6,"description":167,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":168,"categories":169,"keywords":179,"publishedAt":40},"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",[170,173,174],{"categoryNo":171,"categoryName":172,"taxonomyType":87,"taxonomyTypeDesc":88},"01JBSEEDCAT000000000000010","后端与接口",{"categoryNo":85,"categoryName":86,"taxonomyType":87,"taxonomyTypeDesc":88},{"categoryNo":175,"categoryName":176,"taxonomyType":177,"taxonomyTypeDesc":178},"01JBSEEDCAT000000000000030","开发工程师","PROFESSION","适用职业",[180,181,182,183,154,184,33,185,121,186,187,188,100,36,101,189,190,28,191,192,193,105,24],"youtube upload","upload","youtube","Video","run","uv run","publishing","data","uv","api","v3","tags","id","title",{"skillNo":195,"name":196,"nameZh":6,"description":197,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":198,"categories":199,"keywords":203,"publishedAt":40},"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",[200],{"categoryNo":201,"categoryName":202,"taxonomyType":87,"taxonomyTypeDesc":88},"01JBSEEDCAT000000000000023","Skill与智能体开发",[204,205,206,207,182,183,208,209,210,211,212,33,213,214,215,216,100,217,28,103,218,24],"youtube studio share","share","youtube studio","studio","browser","javascript","scripting","google workspace","workspace","tool","google","only","MCP","chrome","organization"]