[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6MF9MPZWWPAMHM07TRY7DFR":3,"skill-same:01M6MF9MPZWWPAMHM07TRY7DFR":83},{"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":23,"publishedAt":44,"linkOnly":45,"markdownContent":46,"markdownBody":47,"frontMatter":48,"refName":62,"commitSha":63,"skillDirectory":64,"forksCount":65,"repositoryHtmlUrl":66,"repositoryHomepageUrl":6,"ownerHtmlUrl":67,"ownerBlogUrl":6,"ownerDescription":6,"updatedAt":68,"install":69,"resources":82},"01M6MF9MPZWWPAMHM07TRY7DFR","github-issues",null,"Create, manage, triage, and close GitHub issues. Search existing issues, add labels, assign people, and link to PRs. Works with gh CLI or falls back to git + GitHub REST API via curl.","ibragimov-oasis\u002Fvibe-coder","ibragimov-oasis","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F240665573?v=4","01M6DF78Y45R8228FHAZ7G6JXM","IBRAGIMOV MUKHAMMADJON","01M6K5ZYR8TDPAFG4R6693E2A6",3,"MIT","https:\u002F\u002Fgithub.com\u002Fibragimov-oasis\u002Fvibe-coder\u002Fblob\u002Fmain\u002Fvc-kit\u002Fcontent\u002FCOMBINED\u002FCOMBINED\u002FREPO_DOCS\u002F02-hermes-agent\u002Fskills\u002Fgithub\u002Fgithub-issues\u002FSKILL.md",[18],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000023","Skill与智能体开发","SCENARIO","使用场景",[24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43],"github","github issues","issues","labels","cli","people","close","add","project","bug-tracking","back","bug","gh cli","project-management","api","search","git","create","auth","workflow","2026-11-10 10:12:30",false,"---\nname: github-issues\ndescription: Create, manage, triage, and close GitHub issues. Search existing issues, add labels, assign people, and link to PRs. Works with gh CLI or falls back to git + GitHub REST API via curl.\nversion: 1.1.0\nauthor: Hermes Agent\nlicense: MIT\nmetadata:\n  hermes:\n    tags: [GitHub, Issues, Project-Management, Bug-Tracking, Triage]\n    related_skills: [github-auth, github-pr-workflow]\n---\n\n# GitHub Issues Management\n\nCreate, search, triage, and manage GitHub issues. Each section shows `gh` first, then the `curl` fallback.\n\n## Prerequisites\n\n- Authenticated with GitHub (see `github-auth` skill)\n- Inside a git repo with a GitHub remote, or specify the repo explicitly\n\n### Setup\n\n```bash\nif command -v gh &>\u002Fdev\u002Fnull && gh auth status &>\u002Fdev\u002Fnull; then\n  AUTH=\"gh\"\nelse\n  AUTH=\"git\"\n  if [ -z \"$GITHUB_TOKEN\" ]; then\n    if [ -f ~\u002F.hermes\u002F.env ] && grep -q \"^GITHUB_TOKEN=\" ~\u002F.hermes\u002F.env; then\n      GITHUB_TOKEN=$(grep \"^GITHUB_TOKEN=\" ~\u002F.hermes\u002F.env | head -1 | cut -d= -f2 | tr -d '\\n\\r')\n    elif grep -q \"github.com\" ~\u002F.git-credentials 2>\u002Fdev\u002Fnull; then\n      GITHUB_TOKEN=$(grep \"github.com\" ~\u002F.git-credentials 2>\u002Fdev\u002Fnull | head -1 | sed 's|https:\u002F\u002F[^:]*:\\([^@]*\\)@.*|\\1|')\n    fi\n  fi\nfi\n\nREMOTE_URL=$(git remote get-url origin)\nOWNER_REPO=$(echo \"$REMOTE_URL\" | sed -E 's|.*github\\.com[:\u002F]||; s|\\.git$||')\nOWNER=$(echo \"$OWNER_REPO\" | cut -d\u002F -f1)\nREPO=$(echo \"$OWNER_REPO\" | cut -d\u002F -f2)\n```\n\n---\n\n## 1. Viewing Issues\n\n**With gh:**\n\n```bash\ngh issue list\ngh issue list --state open --label \"bug\"\ngh issue list --assignee @me\ngh issue list --search \"authentication error\" --state all\ngh issue view 42\n```\n\n**With curl:**\n\n```bash\n# List open issues\ncurl -s \\\n  -H \"Authorization: token $GITHUB_TOKEN\" \\\n  \"https:\u002F\u002Fapi.github.com\u002Frepos\u002F$OWNER\u002F$REPO\u002Fissues?state=open&per_page=20\" \\\n  | python3 -c \"\nimport sys, json\nfor i in json.load(sys.stdin):\n    if 'pull_request' not in i:  # GitHub API returns PRs in \u002Fissues too\n        labels = ', '.join(l['name'] for l in i['labels'])\n        print(f\\\"#{i['number']:5}  {i['state']:6}  {labels:30}  {i['title']}\\\")\"\n\n# Filter by label\ncurl -s \\\n  -H \"Authorization: token $GITHUB_TOKEN\" \\\n  \"https:\u002F\u002Fapi.github.com\u002Frepos\u002F$OWNER\u002F$REPO\u002Fissues?state=open&labels=bug&per_page=20\" \\\n  | python3 -c \"\nimport sys, json\nfor i in json.load(sys.stdin):\n    if 'pull_request' not in i:\n        print(f\\\"#{i['number']}  {i['title']}\\\")\"\n\n# View a specific issue\ncurl -s \\\n  -H \"Authorization: token $GITHUB_TOKEN\" \\\n  https:\u002F\u002Fapi.github.com\u002Frepos\u002F$OWNER\u002F$REPO\u002Fissues\u002F42 \\\n  | python3 -c \"\nimport sys, json\ni = json.load(sys.stdin)\nlabels = ', '.join(l['name'] for l in i['labels'])\nassignees = ', '.join(a['login'] for a in i['assignees'])\nprint(f\\\"#{i['number']}: {i['title']}\\\")\nprint(f\\\"State: {i['state']}  Labels: {labels}  Assignees: {assignees}\\\")\nprint(f\\\"Author: {i['user']['login']}  Created: {i['created_at']}\\\")\nprint(f\\\"\\n{i['body']}\\\")\"\n\n# Search issues\ncurl -s \\\n  -H \"Authorization: token $GITHUB_TOKEN\" \\\n  \"https:\u002F\u002Fapi.github.com\u002Fsearch\u002Fissues?q=authentication+error+repo:$OWNER\u002F$REPO\" \\\n  | python3 -c \"\nimport sys, json\nfor i in json.load(sys.stdin)['items']:\n    print(f\\\"#{i['number']}  {i['state']:6}  {i['title']}\\\")\"\n```\n\n## 2. Creating Issues\n\n**With gh:**\n\n```bash\ngh issue create \\\n  --title \"Login redirect ignores ?next= parameter\" \\\n  --body \"## Description\nAfter logging in, users always land on \u002Fdashboard.\n\n## Steps to Reproduce\n1. Navigate to \u002Fsettings while logged out\n2. Get redirected to \u002Flogin?next=\u002Fsettings\n3. Log in\n4. Actual: redirected to \u002Fdashboard (should go to \u002Fsettings)\n\n## Expected Behavior\nRespect the ?next= query parameter.\" \\\n  --label \"bug,backend\" \\\n  --assignee \"username\"\n```\n\n**With curl:**\n\n```bash\ncurl -s -X POST \\\n  -H \"Authorization: token $GITHUB_TOKEN\" \\\n  https:\u002F\u002Fapi.github.com\u002Frepos\u002F$OWNER\u002F$REPO\u002Fissues \\\n  -d '{\n    \"title\": \"Login redirect ignores ?next= parameter\",\n    \"body\": \"## Description\\nAfter logging in, users always land on \u002Fdashboard.\\n\\n## Steps to Reproduce\\n1. Navigate to \u002Fsettings while logged out\\n2. Get redirected to \u002Flogin?next=\u002Fsettings\\n3. Log in\\n4. Actual: redirected to \u002Fdashboard\\n\\n## Expected Behavior\\nRespect the ?next= query parameter.\",\n    \"labels\": [\"bug\", \"backend\"],\n    \"assignees\": [\"username\"]\n  }'\n```\n\n### Bug Report Template\n\n```\n## Bug Description\n\u003CWhat's happening>\n\n## Steps to Reproduce\n1. \u003Cstep>\n2. \u003Cstep>\n\n## Expected Behavior\n\u003CWhat should happen>\n\n## Actual Behavior\n\u003CWhat actually happens>\n\n## Environment\n- OS: \u003Cos>\n- Version: \u003Cversion>\n```\n\n### Feature Request Template\n\n```\n## Feature Description\n\u003CWhat you want>\n\n## Motivation\n\u003CWhy this would be useful>\n\n## Proposed Solution\n\u003CHow it could work>\n\n## Alternatives Considered\n\u003COther approaches>\n```\n\n## 3. Managing Issues\n\n### Add\u002FRemove Labels\n\n**With gh:**\n\n```bash\ngh issue edit 42 --add-label \"priority:high,bug\"\ngh issue edit 42 --remove-label \"needs-triage\"\n```\n\n**With curl:**\n\n```bash\n# Add labels\ncurl -s -X POST \\\n  -H \"Authorization: token $GITHUB_TOKEN\" \\\n  https:\u002F\u002Fapi.github.com\u002Frepos\u002F$OWNER\u002F$REPO\u002Fissues\u002F42\u002Flabels \\\n  -d '{\"labels\": [\"priority:high\", \"bug\"]}'\n\n# Remove a label\ncurl -s -X DELETE \\\n  -H \"Authorization: token $GITHUB_TOKEN\" \\\n  https:\u002F\u002Fapi.github.com\u002Frepos\u002F$OWNER\u002F$REPO\u002Fissues\u002F42\u002Flabels\u002Fneeds-triage\n\n# List available labels in the repo\ncurl -s \\\n  -H \"Authorization: token $GITHUB_TOKEN\" \\\n  https:\u002F\u002Fapi.github.com\u002Frepos\u002F$OWNER\u002F$REPO\u002Flabels \\\n  | python3 -c \"\nimport sys, json\nfor l in json.load(sys.stdin):\n    print(f\\\"  {l['name']:30}  {l.get('description', '')}\\\")\"\n```\n\n### Assignment\n\n**With gh:**\n\n```bash\ngh issue edit 42 --add-assignee username\ngh issue edit 42 --add-assignee @me\n```\n\n**With curl:**\n\n```bash\ncurl -s -X POST \\\n  -H \"Authorization: token $GITHUB_TOKEN\" \\\n  https:\u002F\u002Fapi.github.com\u002Frepos\u002F$OWNER\u002F$REPO\u002Fissues\u002F42\u002Fassignees \\\n  -d '{\"assignees\": [\"username\"]}'\n```\n\n### Commenting\n\n**With gh:**\n\n```bash\ngh issue comment 42 --body \"Investigated — root cause is in auth middleware. Working on a fix.\"\n```\n\n**With curl:**\n\n```bash\ncurl -s -X POST \\\n  -H \"Authorization: token $GITHUB_TOKEN\" \\\n  https:\u002F\u002Fapi.github.com\u002Frepos\u002F$OWNER\u002F$REPO\u002Fissues\u002F42\u002Fcomments \\\n  -d '{\"body\": \"Investigated — root cause is in auth middleware. Working on a fix.\"}'\n```\n\n### Closing and Reopening\n\n**With gh:**\n\n```bash\ngh issue close 42\ngh issue close 42 --reason \"not planned\"\ngh issue reopen 42\n```\n\n**With curl:**\n\n```bash\n# Close\ncurl -s -X PATCH \\\n  -H \"Authorization: token $GITHUB_TOKEN\" \\\n  https:\u002F\u002Fapi.github.com\u002Frepos\u002F$OWNER\u002F$REPO\u002Fissues\u002F42 \\\n  -d '{\"state\": \"closed\", \"state_reason\": \"completed\"}'\n\n# Reopen\ncurl -s -X PATCH \\\n  -H \"Authorization: token $GITHUB_TOKEN\" \\\n  https:\u002F\u002Fapi.github.com\u002Frepos\u002F$OWNER\u002F$REPO\u002Fissues\u002F42 \\\n  -d '{\"state\": \"open\"}'\n```\n\n### Linking Issues to PRs\n\nIssues are automatically closed when a PR merges with the right keywords in the body:\n\n```\nCloses #42\nFixes #42\nResolves #42\n```\n\nTo create a branch from an issue:\n\n**With gh:**\n\n```bash\ngh issue develop 42 --checkout\n```\n\n**With git (manual equivalent):**\n\n```bash\ngit checkout main && git pull origin main\ngit checkout -b fix\u002Fissue-42-login-redirect\n```\n\n## 4. Issue Triage Workflow\n\nWhen asked to triage issues:\n\n1. **List untriaged issues:**\n\n```bash\n# With gh\ngh issue list --label \"needs-triage\" --state open\n\n# With curl\ncurl -s \\\n  -H \"Authorization: token $GITHUB_TOKEN\" \\\n  \"https:\u002F\u002Fapi.github.com\u002Frepos\u002F$OWNER\u002F$REPO\u002Fissues?labels=needs-triage&state=open\" \\\n  | python3 -c \"\nimport sys, json\nfor i in json.load(sys.stdin):\n    if 'pull_request' not in i:\n        print(f\\\"#{i['number']}  {i['title']}\\\")\"\n```\n\n2. **Read and categorize** each issue (view details, understand the bug\u002Ffeature)\n\n3. **Apply labels and priority** (see Managing Issues above)\n\n4. **Assign** if the owner is clear\n\n5. **Comment with triage notes** if needed\n\n## 5. Bulk Operations\n\nFor batch operations, combine API calls with shell scripting:\n\n**With gh:**\n\n```bash\n# Close all issues with a specific label\ngh issue list --label \"wontfix\" --json number --jq '.[].number' | \\\n  xargs -I {} gh issue close {} --reason \"not planned\"\n```\n\n**With curl:**\n\n```bash\n# List issue numbers with a label, then close each\ncurl -s \\\n  -H \"Authorization: token $GITHUB_TOKEN\" \\\n  \"https:\u002F\u002Fapi.github.com\u002Frepos\u002F$OWNER\u002F$REPO\u002Fissues?labels=wontfix&state=open\" \\\n  | python3 -c \"import sys,json; [print(i['number']) for i in json.load(sys.stdin)]\" \\\n  | while read num; do\n    curl -s -X PATCH \\\n      -H \"Authorization: token $GITHUB_TOKEN\" \\\n      https:\u002F\u002Fapi.github.com\u002Frepos\u002F$OWNER\u002F$REPO\u002Fissues\u002F$num \\\n      -d '{\"state\": \"closed\", \"state_reason\": \"not_planned\"}'\n    echo \"Closed #$num\"\n  done\n```\n\n## Quick Reference Table\n\n| Action | gh | curl endpoint |\n|--------|-----|--------------|\n| List issues | `gh issue list` | `GET \u002Frepos\u002F{o}\u002F{r}\u002Fissues` |\n| View issue | `gh issue view N` | `GET \u002Frepos\u002F{o}\u002F{r}\u002Fissues\u002FN` |\n| Create issue | `gh issue create ...` | `POST \u002Frepos\u002F{o}\u002F{r}\u002Fissues` |\n| Add labels | `gh issue edit N --add-label ...` | `POST \u002Frepos\u002F{o}\u002F{r}\u002Fissues\u002FN\u002Flabels` |\n| Assign | `gh issue edit N --add-assignee ...` | `POST \u002Frepos\u002F{o}\u002F{r}\u002Fissues\u002FN\u002Fassignees` |\n| Comment | `gh issue comment N --body ...` | `POST \u002Frepos\u002F{o}\u002F{r}\u002Fissues\u002FN\u002Fcomments` |\n| Close | `gh issue close N` | `PATCH \u002Frepos\u002F{o}\u002F{r}\u002Fissues\u002FN` |\n| Search | `gh issue list --search \"...\"` | `GET \u002Fsearch\u002Fissues?q=...` |\n\n## ? Связи\n\n- [[000 - Map of Maps]] — REPO_DOCS\n- [[000 - Map of Maps]] — Map of Maps\n\n","# GitHub Issues Management\n\nCreate, search, triage, and manage GitHub issues. Each section shows `gh` first, then the `curl` fallback.\n\n## Prerequisites\n\n- Authenticated with GitHub (see `github-auth` skill)\n- Inside a git repo with a GitHub remote, or specify the repo explicitly\n\n### Setup\n\n```bash\nif command -v gh &>\u002Fdev\u002Fnull && gh auth status &>\u002Fdev\u002Fnull; then\n  AUTH=\"gh\"\nelse\n  AUTH=\"git\"\n  if [ -z \"$GITHUB_TOKEN\" ]; then\n    if [ -f ~\u002F.hermes\u002F.env ] && grep -q \"^GITHUB_TOKEN=\" ~\u002F.hermes\u002F.env; then\n      GITHUB_TOKEN=$(grep \"^GITHUB_TOKEN=\" ~\u002F.hermes\u002F.env | head -1 | cut -d= -f2 | tr -d '\\n\\r')\n    elif grep -q \"github.com\" ~\u002F.git-credentials 2>\u002Fdev\u002Fnull; then\n      GITHUB_TOKEN=$(grep \"github.com\" ~\u002F.git-credentials 2>\u002Fdev\u002Fnull | head -1 | sed 's|https:\u002F\u002F[^:]*:\\([^@]*\\)@.*|\\1|')\n    fi\n  fi\nfi\n\nREMOTE_URL=$(git remote get-url origin)\nOWNER_REPO=$(echo \"$REMOTE_URL\" | sed -E 's|.*github\\.com[:\u002F]||; s|\\.git$||')\nOWNER=$(echo \"$OWNER_REPO\" | cut -d\u002F -f1)\nREPO=$(echo \"$OWNER_REPO\" | cut -d\u002F -f2)\n```\n\n---\n\n## 1. Viewing Issues\n\n**With gh:**\n\n```bash\ngh issue list\ngh issue list --state open --label \"bug\"\ngh issue list --assignee @me\ngh issue list --search \"authentication error\" --state all\ngh issue view 42\n```\n\n**With curl:**\n\n```bash\n# List open issues\ncurl -s \\\n  -H \"Authorization: token $GITHUB_TOKEN\" \\\n  \"https:\u002F\u002Fapi.github.com\u002Frepos\u002F$OWNER\u002F$REPO\u002Fissues?state=open&per_page=20\" \\\n  | python3 -c \"\nimport sys, json\nfor i in json.load(sys.stdin):\n    if 'pull_request' not in i:  # GitHub API returns PRs in \u002Fissues too\n        labels = ', '.join(l['name'] for l in i['labels'])\n        print(f\\\"#{i['number']:5}  {i['state']:6}  {labels:30}  {i['title']}\\\")\"\n\n# Filter by label\ncurl -s \\\n  -H \"Authorization: token $GITHUB_TOKEN\" \\\n  \"https:\u002F\u002Fapi.github.com\u002Frepos\u002F$OWNER\u002F$REPO\u002Fissues?state=open&labels=bug&per_page=20\" \\\n  | python3 -c \"\nimport sys, json\nfor i in json.load(sys.stdin):\n    if 'pull_request' not in i:\n        print(f\\\"#{i['number']}  {i['title']}\\\")\"\n\n# View a specific issue\ncurl -s \\\n  -H \"Authorization: token $GITHUB_TOKEN\" \\\n  https:\u002F\u002Fapi.github.com\u002Frepos\u002F$OWNER\u002F$REPO\u002Fissues\u002F42 \\\n  | python3 -c \"\nimport sys, json\ni = json.load(sys.stdin)\nlabels = ', '.join(l['name'] for l in i['labels'])\nassignees = ', '.join(a['login'] for a in i['assignees'])\nprint(f\\\"#{i['number']}: {i['title']}\\\")\nprint(f\\\"State: {i['state']}  Labels: {labels}  Assignees: {assignees}\\\")\nprint(f\\\"Author: {i['user']['login']}  Created: {i['created_at']}\\\")\nprint(f\\\"\\n{i['body']}\\\")\"\n\n# Search issues\ncurl -s \\\n  -H \"Authorization: token $GITHUB_TOKEN\" \\\n  \"https:\u002F\u002Fapi.github.com\u002Fsearch\u002Fissues?q=authentication+error+repo:$OWNER\u002F$REPO\" \\\n  | python3 -c \"\nimport sys, json\nfor i in json.load(sys.stdin)['items']:\n    print(f\\\"#{i['number']}  {i['state']:6}  {i['title']}\\\")\"\n```\n\n## 2. Creating Issues\n\n**With gh:**\n\n```bash\ngh issue create \\\n  --title \"Login redirect ignores ?next= parameter\" \\\n  --body \"## Description\nAfter logging in, users always land on \u002Fdashboard.\n\n## Steps to Reproduce\n1. Navigate to \u002Fsettings while logged out\n2. Get redirected to \u002Flogin?next=\u002Fsettings\n3. Log in\n4. Actual: redirected to \u002Fdashboard (should go to \u002Fsettings)\n\n## Expected Behavior\nRespect the ?next= query parameter.\" \\\n  --label \"bug,backend\" \\\n  --assignee \"username\"\n```\n\n**With curl:**\n\n```bash\ncurl -s -X POST \\\n  -H \"Authorization: token $GITHUB_TOKEN\" \\\n  https:\u002F\u002Fapi.github.com\u002Frepos\u002F$OWNER\u002F$REPO\u002Fissues \\\n  -d '{\n    \"title\": \"Login redirect ignores ?next= parameter\",\n    \"body\": \"## Description\\nAfter logging in, users always land on \u002Fdashboard.\\n\\n## Steps to Reproduce\\n1. Navigate to \u002Fsettings while logged out\\n2. Get redirected to \u002Flogin?next=\u002Fsettings\\n3. Log in\\n4. Actual: redirected to \u002Fdashboard\\n\\n## Expected Behavior\\nRespect the ?next= query parameter.\",\n    \"labels\": [\"bug\", \"backend\"],\n    \"assignees\": [\"username\"]\n  }'\n```\n\n### Bug Report Template\n\n```\n## Bug Description\n\u003CWhat's happening>\n\n## Steps to Reproduce\n1. \u003Cstep>\n2. \u003Cstep>\n\n## Expected Behavior\n\u003CWhat should happen>\n\n## Actual Behavior\n\u003CWhat actually happens>\n\n## Environment\n- OS: \u003Cos>\n- Version: \u003Cversion>\n```\n\n### Feature Request Template\n\n```\n## Feature Description\n\u003CWhat you want>\n\n## Motivation\n\u003CWhy this would be useful>\n\n## Proposed Solution\n\u003CHow it could work>\n\n## Alternatives Considered\n\u003COther approaches>\n```\n\n## 3. Managing Issues\n\n### Add\u002FRemove Labels\n\n**With gh:**\n\n```bash\ngh issue edit 42 --add-label \"priority:high,bug\"\ngh issue edit 42 --remove-label \"needs-triage\"\n```\n\n**With curl:**\n\n```bash\n# Add labels\ncurl -s -X POST \\\n  -H \"Authorization: token $GITHUB_TOKEN\" \\\n  https:\u002F\u002Fapi.github.com\u002Frepos\u002F$OWNER\u002F$REPO\u002Fissues\u002F42\u002Flabels \\\n  -d '{\"labels\": [\"priority:high\", \"bug\"]}'\n\n# Remove a label\ncurl -s -X DELETE \\\n  -H \"Authorization: token $GITHUB_TOKEN\" \\\n  https:\u002F\u002Fapi.github.com\u002Frepos\u002F$OWNER\u002F$REPO\u002Fissues\u002F42\u002Flabels\u002Fneeds-triage\n\n# List available labels in the repo\ncurl -s \\\n  -H \"Authorization: token $GITHUB_TOKEN\" \\\n  https:\u002F\u002Fapi.github.com\u002Frepos\u002F$OWNER\u002F$REPO\u002Flabels \\\n  | python3 -c \"\nimport sys, json\nfor l in json.load(sys.stdin):\n    print(f\\\"  {l['name']:30}  {l.get('description', '')}\\\")\"\n```\n\n### Assignment\n\n**With gh:**\n\n```bash\ngh issue edit 42 --add-assignee username\ngh issue edit 42 --add-assignee @me\n```\n\n**With curl:**\n\n```bash\ncurl -s -X POST \\\n  -H \"Authorization: token $GITHUB_TOKEN\" \\\n  https:\u002F\u002Fapi.github.com\u002Frepos\u002F$OWNER\u002F$REPO\u002Fissues\u002F42\u002Fassignees \\\n  -d '{\"assignees\": [\"username\"]}'\n```\n\n### Commenting\n\n**With gh:**\n\n```bash\ngh issue comment 42 --body \"Investigated — root cause is in auth middleware. Working on a fix.\"\n```\n\n**With curl:**\n\n```bash\ncurl -s -X POST \\\n  -H \"Authorization: token $GITHUB_TOKEN\" \\\n  https:\u002F\u002Fapi.github.com\u002Frepos\u002F$OWNER\u002F$REPO\u002Fissues\u002F42\u002Fcomments \\\n  -d '{\"body\": \"Investigated — root cause is in auth middleware. Working on a fix.\"}'\n```\n\n### Closing and Reopening\n\n**With gh:**\n\n```bash\ngh issue close 42\ngh issue close 42 --reason \"not planned\"\ngh issue reopen 42\n```\n\n**With curl:**\n\n```bash\n# Close\ncurl -s -X PATCH \\\n  -H \"Authorization: token $GITHUB_TOKEN\" \\\n  https:\u002F\u002Fapi.github.com\u002Frepos\u002F$OWNER\u002F$REPO\u002Fissues\u002F42 \\\n  -d '{\"state\": \"closed\", \"state_reason\": \"completed\"}'\n\n# Reopen\ncurl -s -X PATCH \\\n  -H \"Authorization: token $GITHUB_TOKEN\" \\\n  https:\u002F\u002Fapi.github.com\u002Frepos\u002F$OWNER\u002F$REPO\u002Fissues\u002F42 \\\n  -d '{\"state\": \"open\"}'\n```\n\n### Linking Issues to PRs\n\nIssues are automatically closed when a PR merges with the right keywords in the body:\n\n```\nCloses #42\nFixes #42\nResolves #42\n```\n\nTo create a branch from an issue:\n\n**With gh:**\n\n```bash\ngh issue develop 42 --checkout\n```\n\n**With git (manual equivalent):**\n\n```bash\ngit checkout main && git pull origin main\ngit checkout -b fix\u002Fissue-42-login-redirect\n```\n\n## 4. Issue Triage Workflow\n\nWhen asked to triage issues:\n\n1. **List untriaged issues:**\n\n```bash\n# With gh\ngh issue list --label \"needs-triage\" --state open\n\n# With curl\ncurl -s \\\n  -H \"Authorization: token $GITHUB_TOKEN\" \\\n  \"https:\u002F\u002Fapi.github.com\u002Frepos\u002F$OWNER\u002F$REPO\u002Fissues?labels=needs-triage&state=open\" \\\n  | python3 -c \"\nimport sys, json\nfor i in json.load(sys.stdin):\n    if 'pull_request' not in i:\n        print(f\\\"#{i['number']}  {i['title']}\\\")\"\n```\n\n2. **Read and categorize** each issue (view details, understand the bug\u002Ffeature)\n\n3. **Apply labels and priority** (see Managing Issues above)\n\n4. **Assign** if the owner is clear\n\n5. **Comment with triage notes** if needed\n\n## 5. Bulk Operations\n\nFor batch operations, combine API calls with shell scripting:\n\n**With gh:**\n\n```bash\n# Close all issues with a specific label\ngh issue list --label \"wontfix\" --json number --jq '.[].number' | \\\n  xargs -I {} gh issue close {} --reason \"not planned\"\n```\n\n**With curl:**\n\n```bash\n# List issue numbers with a label, then close each\ncurl -s \\\n  -H \"Authorization: token $GITHUB_TOKEN\" \\\n  \"https:\u002F\u002Fapi.github.com\u002Frepos\u002F$OWNER\u002F$REPO\u002Fissues?labels=wontfix&state=open\" \\\n  | python3 -c \"import sys,json; [print(i['number']) for i in json.load(sys.stdin)]\" \\\n  | while read num; do\n    curl -s -X PATCH \\\n      -H \"Authorization: token $GITHUB_TOKEN\" \\\n      https:\u002F\u002Fapi.github.com\u002Frepos\u002F$OWNER\u002F$REPO\u002Fissues\u002F$num \\\n      -d '{\"state\": \"closed\", \"state_reason\": \"not_planned\"}'\n    echo \"Closed #$num\"\n  done\n```\n\n## Quick Reference Table\n\n| Action | gh | curl endpoint |\n|--------|-----|--------------|\n| List issues | `gh issue list` | `GET \u002Frepos\u002F{o}\u002F{r}\u002Fissues` |\n| View issue | `gh issue view N` | `GET \u002Frepos\u002F{o}\u002F{r}\u002Fissues\u002FN` |\n| Create issue | `gh issue create ...` | `POST \u002Frepos\u002F{o}\u002F{r}\u002Fissues` |\n| Add labels | `gh issue edit N --add-label ...` | `POST \u002Frepos\u002F{o}\u002F{r}\u002Fissues\u002FN\u002Flabels` |\n| Assign | `gh issue edit N --add-assignee ...` | `POST \u002Frepos\u002F{o}\u002F{r}\u002Fissues\u002FN\u002Fassignees` |\n| Comment | `gh issue comment N --body ...` | `POST \u002Frepos\u002F{o}\u002F{r}\u002Fissues\u002FN\u002Fcomments` |\n| Close | `gh issue close N` | `PATCH \u002Frepos\u002F{o}\u002F{r}\u002Fissues\u002FN` |\n| Search | `gh issue list --search \"...\"` | `GET \u002Fsearch\u002Fissues?q=...` |\n\n## ? Связи\n\n- [[000 - Map of Maps]] — REPO_DOCS\n- [[000 - Map of Maps]] — Map of Maps\n\n",{"name":5,"author":49,"license":15,"version":50,"metadata":51,"description":7},"Hermes Agent","1.1.0",{"hermes":52},{"tags":53,"related_skills":59},[54,55,56,57,58],"GitHub","Issues","Project-Management","Bug-Tracking","Triage",[60,61],"github-auth","github-pr-workflow","main","bdd9f958d7bb1a0f19b8ad8da020b0bab0f53eb1","vc-kit\u002Fcontent\u002FCOMBINED\u002FCOMBINED\u002FREPO_DOCS\u002F02-hermes-agent\u002Fskills\u002Fgithub\u002Fgithub-issues",1,"https:\u002F\u002Fgithub.com\u002Fibragimov-oasis\u002Fvibe-coder","https:\u002F\u002Fgithub.com\u002Fibragimov-oasis","2026-06-24 16:31:18",{"source":8,"skillName":5,"commands":70,"prompt":80,"zipAvailable":81},[71,74,77],{"tool":72,"command":73},"npx","npx skills add ibragimov-oasis\u002Fvibe-coder --skill github-issues",{"tool":75,"command":76},"bunx","bunx skills add ibragimov-oasis\u002Fvibe-coder --skill github-issues",{"tool":78,"command":79},"pnpm","pnpm dlx skills add ibragimov-oasis\u002Fvibe-coder --skill github-issues","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fibragimov-oasis\u002Fvibe-coder\u002Fblob\u002Fmain\u002Fvc-kit\u002Fcontent\u002FCOMBINED\u002FCOMBINED\u002FREPO_DOCS\u002F02-hermes-agent\u002Fskills\u002Fgithub\u002Fgithub-issues\u002FSKILL.md",true,[],[84,118,143,163,189,220],{"skillNo":85,"name":86,"nameZh":6,"description":87,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":88,"categories":89,"keywords":98,"publishedAt":44},"01M6Q4Q22KKKVMJJYA411DQ4ER","ckm:ui-styling","Create beautiful, accessible user interfaces with shadcn\u002Fui components (built on Radix UI + Tailwind), Tailwind CSS utility-first styling, and canvas-based visual designs. Use when building user interfaces, implementing design systems, creating responsive layouts, adding accessible components (dialogs, dropdowns, forms, tables), customizing themes and colors, implementing dark mode, generating visual designs and posters, or establishing consistent styling patterns across applications.","https:\u002F\u002Fgithub.com\u002Fibragimov-oasis\u002Fvibe-coder\u002Fblob\u002Fmain\u002Fvc-kit\u002Fcontent\u002FCOMBINED\u002FCOMBINED\u002Fui-design\u002Fui-rules\u002Fui-ux-pro-max\u002Fclaude\u002Fskills\u002Fui-styling\u002FSKILL.md",[90,93],{"categoryNo":91,"categoryName":92,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000015","视觉设计",{"categoryNo":94,"categoryName":95,"taxonomyType":96,"taxonomyTypeDesc":97},"01JBSEEDCAT000000000000032","设计师","PROFESSION","适用职业",[99,100,101,102,103,104,105,106,107,108,41,109,110,111,112,113,114,115,116,117],"ui styling","ui","styling","ckm:ui styling","ckm","design","css","canvas","components","component","design systems","Tailwind","across","themes","utility","mode","implementing","artifact\u002Fui-component","source\u002Fui-design",{"skillNo":119,"name":120,"nameZh":6,"description":121,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":122,"categories":123,"keywords":130,"publishedAt":44},"01M6Q4PQ2NX4NDVWTEHA3MQ2R0","ckm:design","Comprehensive design skill: brand identity, design tokens, UI styling, logo generation (55 styles, Gemini AI), corporate identity program (50 deliverables, CIP mockups), HTML presentations (Chart.js), banner design (22 styles, social\u002Fads\u002Fweb\u002Fprint), icon design (15 styles, SVG, Gemini 3.1 Pro), social photos (HTML→screenshot, multi-platform). Actions: design logo, create CIP, generate mockups, build slides, design banner, generate icon, create social photos, social media images, brand identity, design system. Platforms: Facebook, Twitter, LinkedIn, YouTube, Instagram, Pinterest, TikTok, Threads, Google Ads.","https:\u002F\u002Fgithub.com\u002Fibragimov-oasis\u002Fvibe-coder\u002Fblob\u002Fmain\u002Fvc-kit\u002Fcontent\u002FCOMBINED\u002FCOMBINED\u002Fui-design\u002Fui-rules\u002Fui-ux-pro-max\u002Fclaude\u002Fskills\u002Fdesign\u002FSKILL.md",[124,127,128,129],{"categoryNo":125,"categoryName":126,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000003","演示文稿",{"categoryNo":91,"categoryName":92,"taxonomyType":21,"taxonomyTypeDesc":22},{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},{"categoryNo":94,"categoryName":95,"taxonomyType":96,"taxonomyTypeDesc":97},[104,120,103,131,108,99,132,41,133,134,135,136,137,138,139,140,141,142,116,117],"google","presentations","generate","screenshot","actions","Media","logo","ads","youtube","tiktok","artifact","chart",{"skillNo":144,"name":145,"nameZh":6,"description":146,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":147,"categories":148,"keywords":151,"publishedAt":44},"01M6Q4PJE27GEA3M0CECEBCZKS","ckm:design-system","Token architecture, component specifications, and slide generation. Three-layer tokens (primitive→semantic→component), CSS variables, spacing\u002Ftypography scales, component specs, strategic slide creation. Use for design tokens, systematic design, brand-compliant presentations.","https:\u002F\u002Fgithub.com\u002Fibragimov-oasis\u002Fvibe-coder\u002Fblob\u002Fmain\u002Fvc-kit\u002Fcontent\u002FCOMBINED\u002FCOMBINED\u002Fui-design\u002Fui-rules\u002Fui-ux-pro-max\u002Fclaude\u002Fskills\u002Fdesign-system\u002FSKILL.md",[149,150],{"categoryNo":91,"categoryName":92,"taxonomyType":21,"taxonomyTypeDesc":22},{"categoryNo":94,"categoryName":95,"taxonomyType":96,"taxonomyTypeDesc":97},[104,152,153,154,120,103,105,108,155,132,141,156,157,158,159,160,161,162,116,117],"design system","system","ckm:design system","architecture","token","creation","systematic","css variables","Variables","spacing","layer",{"skillNo":164,"name":165,"nameZh":6,"description":166,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":167,"categories":168,"keywords":174,"publishedAt":44},"01M6Q4P90JXFYMH2S634QM6SQJ","ckm:banner-design","Design banners for social media, ads, website heroes, creative assets, and print. Multiple art direction options with AI-generated visuals. Actions: design, create, generate banner. Platforms: Facebook, Twitter\u002FX, LinkedIn, YouTube, Instagram, Google Display, website hero, print. Styles: minimalist, gradient, bold typography, photo-based, illustrated, geometric, retro, glassmorphism, 3D, neon, duotone, editorial, collage. Uses ui-ux-pro-max, frontend-design, ai-artist, ai-multimodal skills.","https:\u002F\u002Fgithub.com\u002Fibragimov-oasis\u002Fvibe-coder\u002Fblob\u002Fmain\u002Fvc-kit\u002Fcontent\u002FCOMBINED\u002FCOMBINED\u002Fui-design\u002Fui-rules\u002Fui-ux-pro-max\u002Fclaude\u002Fskills\u002Fbanner-design\u002FSKILL.md",[169,172,173],{"categoryNo":170,"categoryName":171,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000009","前端开发",{"categoryNo":91,"categoryName":92,"taxonomyType":21,"taxonomyTypeDesc":22},{"categoryNo":94,"categoryName":95,"taxonomyType":96,"taxonomyTypeDesc":97},[104,175,176,177,103,178,135,136,179,180,181,182,183,184,185,186,116,117,187,188],"banner design","ckm:banner design","banner","frontend","3D","generated","Art","social","dimensions","neon","direction","display","frontend-design","hero",{"skillNo":190,"name":191,"nameZh":6,"description":192,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":193,"categories":194,"keywords":201,"publishedAt":44},"01M6Q2RZXBJ9TBE413GXCYQNDB","seo","Comprehensive SEO analysis for any website or business type. Performs full site audits, single-page deep analysis, technical SEO checks (crawlability, indexability, Core Web Vitals with INP), schema markup detection\u002Fvalidation\u002Fgeneration, content quality assessment (E-E-A-T framework per Dec 2025 update extending to all competitive queries), image optimization, sitemap analysis, and Generative Engine Optimization (GEO) for AI Overviews, ChatGPT, and Perplexity citations. Analyzes AI crawler accessibility (GPTBot, ClaudeBot, PerplexityBot), llms.txt compliance, brand mention signals, and passage-level citability. Industry detection for SaaS, e-commerce, local business, publishers, agencies. Triggers on: \"SEO\", \"audit\", \"schema\", \"Core Web Vitals\", \"sitemap\", \"E-E-A-T\", \"AI Overviews\", \"GEO\", \"technical SEO\", \"content quality\", \"page speed\", \"structured data\".","https:\u002F\u002Fgithub.com\u002Fibragimov-oasis\u002Fvibe-coder\u002Fblob\u002Fmain\u002Fvc-kit\u002Fcontent\u002FCOMBINED\u002FCOMBINED\u002Fskills\u002Fskills-seo\u002Fseo\u002Fclaude-seo\u002Fskills\u002Fseo\u002FSKILL.md",[195,198],{"categoryNo":196,"categoryName":197,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000019","营销推广",{"categoryNo":199,"categoryName":200,"taxonomyType":96,"taxonomyTypeDesc":97},"01JBSEEDCAT000000000000035","市场营销",[191,202,203,204,205,206,207,141,208,209,210,211,212,213,214,215,216,217,218,219],"image","llms","assessment","deep analysis","Citations","analysis","local","deep","crawlability","seo analysis","2025","commerce","URL","domain\u002Fseo","source\u002Fskills-seo","vitals","generative","publishers",{"skillNo":221,"name":222,"nameZh":6,"description":223,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":224,"categories":225,"keywords":228,"publishedAt":44},"01M6Q2RVE7VGFCFQKBK468NHVY","seo-technical","Technical SEO audit across 9 categories: crawlability, indexability, security, URL structure, mobile, Core Web Vitals, structured data, JavaScript rendering, and IndexNow protocol. Use when user says \"technical SEO\", \"crawl issues\", \"robots.txt\", \"Core Web Vitals\", \"site speed\", or \"security headers\".","https:\u002F\u002Fgithub.com\u002Fibragimov-oasis\u002Fvibe-coder\u002Fblob\u002Fmain\u002Fvc-kit\u002Fcontent\u002FCOMBINED\u002FCOMBINED\u002Fskills\u002Fskills-seo\u002Fseo\u002Fclaude-seo\u002Fskills\u002Fseo-technical\u002FSKILL.md",[226,227],{"categoryNo":196,"categoryName":197,"taxonomyType":21,"taxonomyTypeDesc":22},{"categoryNo":199,"categoryName":200,"taxonomyType":96,"taxonomyTypeDesc":97},[191,229,230,26,231,232,233,234,235,141,111,210,236,237,214,238,239,215,216,217],"technical","seo technical","audit","data","mobile","crawl","structure","rendering","technical seo audit","headers","categories"]