[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M71J8H2RF9G41XESC76CK8AV":3,"skill-same:01M71J8H2RF9G41XESC76CK8AV":85},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":15,"categories":16,"keywords":17,"publishedAt":38,"linkOnly":39,"markdownContent":40,"markdownBody":41,"frontMatter":42,"refName":58,"commitSha":59,"skillDirectory":60,"forksCount":61,"repositoryHtmlUrl":62,"repositoryHomepageUrl":6,"ownerHtmlUrl":63,"ownerBlogUrl":6,"ownerDescription":6,"updatedAt":64,"install":65,"resources":78},"01M71J8H2RF9G41XESC76CK8AV","github-repo-management",null,"Clone, create, fork, configure, and manage GitHub repositories. Manage remotes, secrets, releases, and workflows. Works with gh CLI or falls back to git + GitHub REST API via curl.","xuanxuan1983\u002Fhermes-skills-backup","xuanxuan1983","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F151701653?v=4","01M71HCZNB5H19QJ6YBF98W2WH","01M71HCZP14T0921BD0TC9EPD3",1,"MIT","https:\u002F\u002Fgithub.com\u002Fxuanxuan1983\u002Fhermes-skills-backup\u002Fblob\u002Fmain\u002Fskills\u002Fgithub\u002Fgithub-repo-management\u002FSKILL.md",[],[18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37],"github repo management","github repo","github","repo management","management","repo","clone","gh cli","git","secrets","releases","cli","create","api","workflow","configure","workflows","issues","auth","back","2026-11-10 10:12:30",false,"---\nname: github-repo-management\ndescription: Clone, create, fork, configure, and manage GitHub repositories. Manage remotes, secrets, releases, and workflows. 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, Repositories, Git, Releases, Secrets, Configuration]\n    related_skills: [github-auth, github-pr-workflow, github-issues]\n---\n\n# GitHub Repository Management\n\nCreate, clone, fork, configure, and manage GitHub repositories. Each section shows `gh` first, then the `git` + `curl` fallback.\n\n## Prerequisites\n\n- Authenticated with GitHub (see `github-auth` skill)\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\n# Get your GitHub username (needed for several operations)\nif [ \"$AUTH\" = \"gh\" ]; then\n  GH_USER=$(gh api user --jq '.login')\nelse\n  GH_USER=$(curl -s -H \"Authorization: token $GITHUB_TOKEN\" https:\u002F\u002Fapi.github.com\u002Fuser | python3 -c \"import sys,json; print(json.load(sys.stdin)['login'])\")\nfi\n```\n\nIf you're inside a repo already:\n\n```bash\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. Cloning Repositories\n\nCloning is pure `git` — works identically either way:\n\n```bash\n# Clone via HTTPS (works with credential helper or token-embedded URL)\ngit clone https:\u002F\u002Fgithub.com\u002Fowner\u002Frepo-name.git\n\n# Clone into a specific directory\ngit clone https:\u002F\u002Fgithub.com\u002Fowner\u002Frepo-name.git .\u002Fmy-local-dir\n\n# Shallow clone (faster for large repos)\ngit clone --depth 1 https:\u002F\u002Fgithub.com\u002Fowner\u002Frepo-name.git\n\n# Clone a specific branch\ngit clone --branch develop https:\u002F\u002Fgithub.com\u002Fowner\u002Frepo-name.git\n\n# Clone via SSH (if SSH is configured)\ngit clone git@github.com:owner\u002Frepo-name.git\n```\n\n**With gh (shorthand):**\n\n```bash\ngh repo clone owner\u002Frepo-name\ngh repo clone owner\u002Frepo-name -- --depth 1\n```\n\n## 2. Creating Repositories\n\n**With gh:**\n\n```bash\n# Create a public repo and clone it\ngh repo create my-new-project --public --clone\n\n# Private, with description and license\ngh repo create my-new-project --private --description \"A useful tool\" --license MIT --clone\n\n# Under an organization\ngh repo create my-org\u002Fmy-new-project --public --clone\n\n# From existing local directory\ncd \u002Fpath\u002Fto\u002Fexisting\u002Fproject\ngh repo create my-project --source . --public --push\n```\n\n**With git + curl:**\n\n```bash\n# Create the remote repo via API\ncurl -s -X POST \\\n  -H \"Authorization: token $GITHUB_TOKEN\" \\\n  https:\u002F\u002Fapi.github.com\u002Fuser\u002Frepos \\\n  -d '{\n    \"name\": \"my-new-project\",\n    \"description\": \"A useful tool\",\n    \"private\": false,\n    \"auto_init\": true,\n    \"license_template\": \"mit\"\n  }'\n\n# Clone it\ngit clone https:\u002F\u002Fgithub.com\u002F$GH_USER\u002Fmy-new-project.git\ncd my-new-project\n\n# -- OR -- push an existing local directory to the new repo\ncd \u002Fpath\u002Fto\u002Fexisting\u002Fproject\ngit init\ngit add .\ngit commit -m \"Initial commit\"\ngit remote add origin https:\u002F\u002Fgithub.com\u002F$GH_USER\u002Fmy-new-project.git\ngit push -u origin main\n```\n\nTo create under an organization:\n\n```bash\ncurl -s -X POST \\\n  -H \"Authorization: token $GITHUB_TOKEN\" \\\n  https:\u002F\u002Fapi.github.com\u002Forgs\u002Fmy-org\u002Frepos \\\n  -d '{\"name\": \"my-new-project\", \"private\": false}'\n```\n\n### From a Template\n\n**With gh:**\n\n```bash\ngh repo create my-new-app --template owner\u002Ftemplate-repo --public --clone\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\u002Fowner\u002Ftemplate-repo\u002Fgenerate \\\n  -d '{\"owner\": \"'\"$GH_USER\"'\", \"name\": \"my-new-app\", \"private\": false}'\n```\n\n## 3. Forking Repositories\n\n**With gh:**\n\n```bash\ngh repo fork owner\u002Frepo-name --clone\n```\n\n**With git + curl:**\n\n```bash\n# Create the fork via API\ncurl -s -X POST \\\n  -H \"Authorization: token $GITHUB_TOKEN\" \\\n  https:\u002F\u002Fapi.github.com\u002Frepos\u002Fowner\u002Frepo-name\u002Fforks\n\n# Wait a moment for GitHub to create it, then clone\nsleep 3\ngit clone https:\u002F\u002Fgithub.com\u002F$GH_USER\u002Frepo-name.git\ncd repo-name\n\n# Add the original repo as \"upstream\" remote\ngit remote add upstream https:\u002F\u002Fgithub.com\u002Fowner\u002Frepo-name.git\n```\n\n### Keeping a Fork in Sync\n\n```bash\n# Pure git — works everywhere\ngit fetch upstream\ngit checkout main\ngit merge upstream\u002Fmain\ngit push origin main\n```\n\n**With gh (shortcut):**\n\n```bash\ngh repo sync $GH_USER\u002Frepo-name\n```\n\n## 4. Repository Information\n\n**With gh:**\n\n```bash\ngh repo view owner\u002Frepo-name\ngh repo list --limit 20\ngh search repos \"machine learning\" --language python --sort stars\n```\n\n**With curl:**\n\n```bash\n# View repo details\ncurl -s \\\n  -H \"Authorization: token $GITHUB_TOKEN\" \\\n  https:\u002F\u002Fapi.github.com\u002Frepos\u002F$OWNER\u002F$REPO \\\n  | python3 -c \"\nimport sys, json\nr = json.load(sys.stdin)\nprint(f\\\"Name: {r['full_name']}\\\")\nprint(f\\\"Description: {r['description']}\\\")\nprint(f\\\"Stars: {r['stargazers_count']}  Forks: {r['forks_count']}\\\")\nprint(f\\\"Default branch: {r['default_branch']}\\\")\nprint(f\\\"Language: {r['language']}\\\")\"\n\n# List your repos\ncurl -s \\\n  -H \"Authorization: token $GITHUB_TOKEN\" \\\n  \"https:\u002F\u002Fapi.github.com\u002Fuser\u002Frepos?per_page=20&sort=updated\" \\\n  | python3 -c \"\nimport sys, json\nfor r in json.load(sys.stdin):\n    vis = 'private' if r['private'] else 'public'\n    print(f\\\"  {r['full_name']:40}  {vis:8}  {r.get('language', ''):10}  ★{r['stargazers_count']}\\\")\"\n\n# Search repos\ncurl -s \\\n  \"https:\u002F\u002Fapi.github.com\u002Fsearch\u002Frepositories?q=machine+learning+language:python&sort=stars&per_page=10\" \\\n  | python3 -c \"\nimport sys, json\nfor r in json.load(sys.stdin)['items']:\n    print(f\\\"  {r['full_name']:40}  ★{r['stargazers_count']:6}  {r['description'][:60] if r['description'] else ''}\\\")\"\n```\n\n## 5. Repository Settings\n\n**With gh:**\n\n```bash\ngh repo edit --description \"Updated description\" --visibility public\ngh repo edit --enable-wiki=false --enable-issues=true\ngh repo edit --default-branch main\ngh repo edit --add-topic \"machine-learning,python\"\ngh repo edit --enable-auto-merge\n```\n\n**With curl:**\n\n```bash\ncurl -s -X PATCH \\\n  -H \"Authorization: token $GITHUB_TOKEN\" \\\n  https:\u002F\u002Fapi.github.com\u002Frepos\u002F$OWNER\u002F$REPO \\\n  -d '{\n    \"description\": \"Updated description\",\n    \"has_wiki\": false,\n    \"has_issues\": true,\n    \"allow_auto_merge\": true\n  }'\n\n# Update topics\ncurl -s -X PUT \\\n  -H \"Authorization: token $GITHUB_TOKEN\" \\\n  -H \"Accept: application\u002Fvnd.github.mercy-preview+json\" \\\n  https:\u002F\u002Fapi.github.com\u002Frepos\u002F$OWNER\u002F$REPO\u002Ftopics \\\n  -d '{\"names\": [\"machine-learning\", \"python\", \"automation\"]}'\n```\n\n## 6. Branch Protection\n\n```bash\n# View current protection\ncurl -s \\\n  -H \"Authorization: token $GITHUB_TOKEN\" \\\n  https:\u002F\u002Fapi.github.com\u002Frepos\u002F$OWNER\u002F$REPO\u002Fbranches\u002Fmain\u002Fprotection\n\n# Set up branch protection\ncurl -s -X PUT \\\n  -H \"Authorization: token $GITHUB_TOKEN\" \\\n  https:\u002F\u002Fapi.github.com\u002Frepos\u002F$OWNER\u002F$REPO\u002Fbranches\u002Fmain\u002Fprotection \\\n  -d '{\n    \"required_status_checks\": {\n      \"strict\": true,\n      \"contexts\": [\"ci\u002Ftest\", \"ci\u002Flint\"]\n    },\n    \"enforce_admins\": false,\n    \"required_pull_request_reviews\": {\n      \"required_approving_review_count\": 1\n    },\n    \"restrictions\": null\n  }'\n```\n\n## 7. Secrets Management (GitHub Actions)\n\n**With gh:**\n\n```bash\ngh secret set API_KEY --body \"your-secret-value\"\ngh secret set SSH_KEY \u003C ~\u002F.ssh\u002Fid_rsa\ngh secret list\ngh secret delete API_KEY\n```\n\n**With curl:**\n\nSecrets require encryption with the repo's public key — more involved via API:\n\n```bash\n# Get the repo's public key for encrypting secrets\ncurl -s \\\n  -H \"Authorization: token $GITHUB_TOKEN\" \\\n  https:\u002F\u002Fapi.github.com\u002Frepos\u002F$OWNER\u002F$REPO\u002Factions\u002Fsecrets\u002Fpublic-key\n\n# Encrypt and set (requires Python with PyNaCl)\npython3 -c \"\nfrom base64 import b64encode\nfrom nacl import encoding, public\nimport json, sys\n\n# Get the public key\nkey_id = '\u003Ckey_id_from_above>'\npublic_key = '\u003Cbase64_key_from_above>'\n\n# Encrypt\nsealed = public.SealedBox(\n    public.PublicKey(public_key.encode('utf-8'), encoding.Base64Encoder)\n).encrypt('your-secret-value'.encode('utf-8'))\nprint(json.dumps({\n    'encrypted_value': b64encode(sealed).decode('utf-8'),\n    'key_id': key_id\n}))\"\n\n# Then PUT the encrypted secret\ncurl -s -X PUT \\\n  -H \"Authorization: token $GITHUB_TOKEN\" \\\n  https:\u002F\u002Fapi.github.com\u002Frepos\u002F$OWNER\u002F$REPO\u002Factions\u002Fsecrets\u002FAPI_KEY \\\n  -d '\u003Coutput from python script above>'\n\n# List secrets (names only, values hidden)\ncurl -s \\\n  -H \"Authorization: token $GITHUB_TOKEN\" \\\n  https:\u002F\u002Fapi.github.com\u002Frepos\u002F$OWNER\u002F$REPO\u002Factions\u002Fsecrets \\\n  | python3 -c \"\nimport sys, json\nfor s in json.load(sys.stdin)['secrets']:\n    print(f\\\"  {s['name']:30}  updated: {s['updated_at']}\\\")\"\n```\n\nNote: For secrets, `gh secret set` is dramatically simpler. If setting secrets is needed and `gh` isn't available, recommend installing it for just that operation.\n\n## 8. Releases\n\n**With gh:**\n\n```bash\ngh release create v1.0.0 --title \"v1.0.0\" --generate-notes\ngh release create v2.0.0-rc1 --draft --prerelease --generate-notes\ngh release create v1.0.0 .\u002Fdist\u002Fbinary --title \"v1.0.0\" --notes \"Release notes\"\ngh release list\ngh release download v1.0.0 --dir .\u002Fdownloads\n```\n\n**With curl:**\n\n```bash\n# Create a release\ncurl -s -X POST \\\n  -H \"Authorization: token $GITHUB_TOKEN\" \\\n  https:\u002F\u002Fapi.github.com\u002Frepos\u002F$OWNER\u002F$REPO\u002Freleases \\\n  -d '{\n    \"tag_name\": \"v1.0.0\",\n    \"name\": \"v1.0.0\",\n    \"body\": \"## Changelog\\n- Feature A\\n- Bug fix B\",\n    \"draft\": false,\n    \"prerelease\": false,\n    \"generate_release_notes\": true\n  }'\n\n# List releases\ncurl -s \\\n  -H \"Authorization: token $GITHUB_TOKEN\" \\\n  https:\u002F\u002Fapi.github.com\u002Frepos\u002F$OWNER\u002F$REPO\u002Freleases \\\n  | python3 -c \"\nimport sys, json\nfor r in json.load(sys.stdin):\n    tag = r.get('tag_name', 'no tag')\n    print(f\\\"  {tag:15}  {r['name']:30}  {'draft' if r['draft'] else 'published'}\\\")\"\n\n# Upload a release asset (binary file)\nRELEASE_ID=\u003Cid_from_create_response>\ncurl -s -X POST \\\n  -H \"Authorization: token $GITHUB_TOKEN\" \\\n  -H \"Content-Type: application\u002Foctet-stream\" \\\n  \"https:\u002F\u002Fuploads.github.com\u002Frepos\u002F$OWNER\u002F$REPO\u002Freleases\u002F$RELEASE_ID\u002Fassets?name=binary-amd64\" \\\n  --data-binary @.\u002Fdist\u002Fbinary-amd64\n```\n\n## 9. GitHub Actions Workflows\n\n**With gh:**\n\n```bash\ngh workflow list\ngh run list --limit 10\ngh run view \u003CRUN_ID>\ngh run view \u003CRUN_ID> --log-failed\ngh run rerun \u003CRUN_ID>\ngh run rerun \u003CRUN_ID> --failed\ngh workflow run ci.yml --ref main\ngh workflow run deploy.yml -f environment=staging\n```\n\n**With curl:**\n\n```bash\n# List workflows\ncurl -s \\\n  -H \"Authorization: token $GITHUB_TOKEN\" \\\n  https:\u002F\u002Fapi.github.com\u002Frepos\u002F$OWNER\u002F$REPO\u002Factions\u002Fworkflows \\\n  | python3 -c \"\nimport sys, json\nfor w in json.load(sys.stdin)['workflows']:\n    print(f\\\"  {w['id']:10}  {w['name']:30}  {w['state']}\\\")\"\n\n# List recent runs\ncurl -s \\\n  -H \"Authorization: token $GITHUB_TOKEN\" \\\n  \"https:\u002F\u002Fapi.github.com\u002Frepos\u002F$OWNER\u002F$REPO\u002Factions\u002Fruns?per_page=10\" \\\n  | python3 -c \"\nimport sys, json\nfor r in json.load(sys.stdin)['workflow_runs']:\n    print(f\\\"  Run {r['id']}  {r['name']:30}  {r['conclusion'] or r['status']}\\\")\"\n\n# Download failed run logs\nRUN_ID=\u003Crun_id>\ncurl -s -L \\\n  -H \"Authorization: token $GITHUB_TOKEN\" \\\n  https:\u002F\u002Fapi.github.com\u002Frepos\u002F$OWNER\u002F$REPO\u002Factions\u002Fruns\u002F$RUN_ID\u002Flogs \\\n  -o \u002Ftmp\u002Fci-logs.zip\ncd \u002Ftmp && unzip -o ci-logs.zip -d ci-logs\n\n# Re-run a failed workflow\ncurl -s -X POST \\\n  -H \"Authorization: token $GITHUB_TOKEN\" \\\n  https:\u002F\u002Fapi.github.com\u002Frepos\u002F$OWNER\u002F$REPO\u002Factions\u002Fruns\u002F$RUN_ID\u002Frerun\n\n# Re-run only failed jobs\ncurl -s -X POST \\\n  -H \"Authorization: token $GITHUB_TOKEN\" \\\n  https:\u002F\u002Fapi.github.com\u002Frepos\u002F$OWNER\u002F$REPO\u002Factions\u002Fruns\u002F$RUN_ID\u002Frerun-failed-jobs\n\n# Trigger a workflow manually (workflow_dispatch)\nWORKFLOW_ID=\u003Cworkflow_id_or_filename>\ncurl -s -X POST \\\n  -H \"Authorization: token $GITHUB_TOKEN\" \\\n  https:\u002F\u002Fapi.github.com\u002Frepos\u002F$OWNER\u002F$REPO\u002Factions\u002Fworkflows\u002F$WORKFLOW_ID\u002Fdispatches \\\n  -d '{\"ref\": \"main\", \"inputs\": {\"environment\": \"staging\"}}'\n```\n\n## 10. Gists\n\n**With gh:**\n\n```bash\ngh gist create script.py --public --desc \"Useful script\"\ngh gist list\n```\n\n**With curl:**\n\n```bash\n# Create a gist\ncurl -s -X POST \\\n  -H \"Authorization: token $GITHUB_TOKEN\" \\\n  https:\u002F\u002Fapi.github.com\u002Fgists \\\n  -d '{\n    \"description\": \"Useful script\",\n    \"public\": true,\n    \"files\": {\n      \"script.py\": {\"content\": \"print(\\\"hello\\\")\"}\n    }\n  }'\n\n# List your gists\ncurl -s \\\n  -H \"Authorization: token $GITHUB_TOKEN\" \\\n  https:\u002F\u002Fapi.github.com\u002Fgists \\\n  | python3 -c \"\nimport sys, json\nfor g in json.load(sys.stdin):\n    files = ', '.join(g['files'].keys())\n    print(f\\\"  {g['id']}  {g['description'] or '(no desc)':40}  {files}\\\")\"\n```\n\n## Quick Reference Table\n\n| Action | gh | git + curl |\n|--------|-----|-----------|\n| Clone | `gh repo clone o\u002Fr` | `git clone https:\u002F\u002Fgithub.com\u002Fo\u002Fr.git` |\n| Create repo | `gh repo create name --public` | `curl POST \u002Fuser\u002Frepos` |\n| Fork | `gh repo fork o\u002Fr --clone` | `curl POST \u002Frepos\u002Fo\u002Fr\u002Fforks` + `git clone` |\n| Repo info | `gh repo view o\u002Fr` | `curl GET \u002Frepos\u002Fo\u002Fr` |\n| Edit settings | `gh repo edit --...` | `curl PATCH \u002Frepos\u002Fo\u002Fr` |\n| Create release | `gh release create v1.0` | `curl POST \u002Frepos\u002Fo\u002Fr\u002Freleases` |\n| List workflows | `gh workflow list` | `curl GET \u002Frepos\u002Fo\u002Fr\u002Factions\u002Fworkflows` |\n| Rerun CI | `gh run rerun ID` | `curl POST \u002Frepos\u002Fo\u002Fr\u002Factions\u002Fruns\u002FID\u002Frerun` |\n| Set secret | `gh secret set KEY` | `curl PUT \u002Frepos\u002Fo\u002Fr\u002Factions\u002Fsecrets\u002FKEY` (+ encryption) |\n","# GitHub Repository Management\n\nCreate, clone, fork, configure, and manage GitHub repositories. Each section shows `gh` first, then the `git` + `curl` fallback.\n\n## Prerequisites\n\n- Authenticated with GitHub (see `github-auth` skill)\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\n# Get your GitHub username (needed for several operations)\nif [ \"$AUTH\" = \"gh\" ]; then\n  GH_USER=$(gh api user --jq '.login')\nelse\n  GH_USER=$(curl -s -H \"Authorization: token $GITHUB_TOKEN\" https:\u002F\u002Fapi.github.com\u002Fuser | python3 -c \"import sys,json; print(json.load(sys.stdin)['login'])\")\nfi\n```\n\nIf you're inside a repo already:\n\n```bash\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. Cloning Repositories\n\nCloning is pure `git` — works identically either way:\n\n```bash\n# Clone via HTTPS (works with credential helper or token-embedded URL)\ngit clone https:\u002F\u002Fgithub.com\u002Fowner\u002Frepo-name.git\n\n# Clone into a specific directory\ngit clone https:\u002F\u002Fgithub.com\u002Fowner\u002Frepo-name.git .\u002Fmy-local-dir\n\n# Shallow clone (faster for large repos)\ngit clone --depth 1 https:\u002F\u002Fgithub.com\u002Fowner\u002Frepo-name.git\n\n# Clone a specific branch\ngit clone --branch develop https:\u002F\u002Fgithub.com\u002Fowner\u002Frepo-name.git\n\n# Clone via SSH (if SSH is configured)\ngit clone git@github.com:owner\u002Frepo-name.git\n```\n\n**With gh (shorthand):**\n\n```bash\ngh repo clone owner\u002Frepo-name\ngh repo clone owner\u002Frepo-name -- --depth 1\n```\n\n## 2. Creating Repositories\n\n**With gh:**\n\n```bash\n# Create a public repo and clone it\ngh repo create my-new-project --public --clone\n\n# Private, with description and license\ngh repo create my-new-project --private --description \"A useful tool\" --license MIT --clone\n\n# Under an organization\ngh repo create my-org\u002Fmy-new-project --public --clone\n\n# From existing local directory\ncd \u002Fpath\u002Fto\u002Fexisting\u002Fproject\ngh repo create my-project --source . --public --push\n```\n\n**With git + curl:**\n\n```bash\n# Create the remote repo via API\ncurl -s -X POST \\\n  -H \"Authorization: token $GITHUB_TOKEN\" \\\n  https:\u002F\u002Fapi.github.com\u002Fuser\u002Frepos \\\n  -d '{\n    \"name\": \"my-new-project\",\n    \"description\": \"A useful tool\",\n    \"private\": false,\n    \"auto_init\": true,\n    \"license_template\": \"mit\"\n  }'\n\n# Clone it\ngit clone https:\u002F\u002Fgithub.com\u002F$GH_USER\u002Fmy-new-project.git\ncd my-new-project\n\n# -- OR -- push an existing local directory to the new repo\ncd \u002Fpath\u002Fto\u002Fexisting\u002Fproject\ngit init\ngit add .\ngit commit -m \"Initial commit\"\ngit remote add origin https:\u002F\u002Fgithub.com\u002F$GH_USER\u002Fmy-new-project.git\ngit push -u origin main\n```\n\nTo create under an organization:\n\n```bash\ncurl -s -X POST \\\n  -H \"Authorization: token $GITHUB_TOKEN\" \\\n  https:\u002F\u002Fapi.github.com\u002Forgs\u002Fmy-org\u002Frepos \\\n  -d '{\"name\": \"my-new-project\", \"private\": false}'\n```\n\n### From a Template\n\n**With gh:**\n\n```bash\ngh repo create my-new-app --template owner\u002Ftemplate-repo --public --clone\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\u002Fowner\u002Ftemplate-repo\u002Fgenerate \\\n  -d '{\"owner\": \"'\"$GH_USER\"'\", \"name\": \"my-new-app\", \"private\": false}'\n```\n\n## 3. Forking Repositories\n\n**With gh:**\n\n```bash\ngh repo fork owner\u002Frepo-name --clone\n```\n\n**With git + curl:**\n\n```bash\n# Create the fork via API\ncurl -s -X POST \\\n  -H \"Authorization: token $GITHUB_TOKEN\" \\\n  https:\u002F\u002Fapi.github.com\u002Frepos\u002Fowner\u002Frepo-name\u002Fforks\n\n# Wait a moment for GitHub to create it, then clone\nsleep 3\ngit clone https:\u002F\u002Fgithub.com\u002F$GH_USER\u002Frepo-name.git\ncd repo-name\n\n# Add the original repo as \"upstream\" remote\ngit remote add upstream https:\u002F\u002Fgithub.com\u002Fowner\u002Frepo-name.git\n```\n\n### Keeping a Fork in Sync\n\n```bash\n# Pure git — works everywhere\ngit fetch upstream\ngit checkout main\ngit merge upstream\u002Fmain\ngit push origin main\n```\n\n**With gh (shortcut):**\n\n```bash\ngh repo sync $GH_USER\u002Frepo-name\n```\n\n## 4. Repository Information\n\n**With gh:**\n\n```bash\ngh repo view owner\u002Frepo-name\ngh repo list --limit 20\ngh search repos \"machine learning\" --language python --sort stars\n```\n\n**With curl:**\n\n```bash\n# View repo details\ncurl -s \\\n  -H \"Authorization: token $GITHUB_TOKEN\" \\\n  https:\u002F\u002Fapi.github.com\u002Frepos\u002F$OWNER\u002F$REPO \\\n  | python3 -c \"\nimport sys, json\nr = json.load(sys.stdin)\nprint(f\\\"Name: {r['full_name']}\\\")\nprint(f\\\"Description: {r['description']}\\\")\nprint(f\\\"Stars: {r['stargazers_count']}  Forks: {r['forks_count']}\\\")\nprint(f\\\"Default branch: {r['default_branch']}\\\")\nprint(f\\\"Language: {r['language']}\\\")\"\n\n# List your repos\ncurl -s \\\n  -H \"Authorization: token $GITHUB_TOKEN\" \\\n  \"https:\u002F\u002Fapi.github.com\u002Fuser\u002Frepos?per_page=20&sort=updated\" \\\n  | python3 -c \"\nimport sys, json\nfor r in json.load(sys.stdin):\n    vis = 'private' if r['private'] else 'public'\n    print(f\\\"  {r['full_name']:40}  {vis:8}  {r.get('language', ''):10}  ★{r['stargazers_count']}\\\")\"\n\n# Search repos\ncurl -s \\\n  \"https:\u002F\u002Fapi.github.com\u002Fsearch\u002Frepositories?q=machine+learning+language:python&sort=stars&per_page=10\" \\\n  | python3 -c \"\nimport sys, json\nfor r in json.load(sys.stdin)['items']:\n    print(f\\\"  {r['full_name']:40}  ★{r['stargazers_count']:6}  {r['description'][:60] if r['description'] else ''}\\\")\"\n```\n\n## 5. Repository Settings\n\n**With gh:**\n\n```bash\ngh repo edit --description \"Updated description\" --visibility public\ngh repo edit --enable-wiki=false --enable-issues=true\ngh repo edit --default-branch main\ngh repo edit --add-topic \"machine-learning,python\"\ngh repo edit --enable-auto-merge\n```\n\n**With curl:**\n\n```bash\ncurl -s -X PATCH \\\n  -H \"Authorization: token $GITHUB_TOKEN\" \\\n  https:\u002F\u002Fapi.github.com\u002Frepos\u002F$OWNER\u002F$REPO \\\n  -d '{\n    \"description\": \"Updated description\",\n    \"has_wiki\": false,\n    \"has_issues\": true,\n    \"allow_auto_merge\": true\n  }'\n\n# Update topics\ncurl -s -X PUT \\\n  -H \"Authorization: token $GITHUB_TOKEN\" \\\n  -H \"Accept: application\u002Fvnd.github.mercy-preview+json\" \\\n  https:\u002F\u002Fapi.github.com\u002Frepos\u002F$OWNER\u002F$REPO\u002Ftopics \\\n  -d '{\"names\": [\"machine-learning\", \"python\", \"automation\"]}'\n```\n\n## 6. Branch Protection\n\n```bash\n# View current protection\ncurl -s \\\n  -H \"Authorization: token $GITHUB_TOKEN\" \\\n  https:\u002F\u002Fapi.github.com\u002Frepos\u002F$OWNER\u002F$REPO\u002Fbranches\u002Fmain\u002Fprotection\n\n# Set up branch protection\ncurl -s -X PUT \\\n  -H \"Authorization: token $GITHUB_TOKEN\" \\\n  https:\u002F\u002Fapi.github.com\u002Frepos\u002F$OWNER\u002F$REPO\u002Fbranches\u002Fmain\u002Fprotection \\\n  -d '{\n    \"required_status_checks\": {\n      \"strict\": true,\n      \"contexts\": [\"ci\u002Ftest\", \"ci\u002Flint\"]\n    },\n    \"enforce_admins\": false,\n    \"required_pull_request_reviews\": {\n      \"required_approving_review_count\": 1\n    },\n    \"restrictions\": null\n  }'\n```\n\n## 7. Secrets Management (GitHub Actions)\n\n**With gh:**\n\n```bash\ngh secret set API_KEY --body \"your-secret-value\"\ngh secret set SSH_KEY \u003C ~\u002F.ssh\u002Fid_rsa\ngh secret list\ngh secret delete API_KEY\n```\n\n**With curl:**\n\nSecrets require encryption with the repo's public key — more involved via API:\n\n```bash\n# Get the repo's public key for encrypting secrets\ncurl -s \\\n  -H \"Authorization: token $GITHUB_TOKEN\" \\\n  https:\u002F\u002Fapi.github.com\u002Frepos\u002F$OWNER\u002F$REPO\u002Factions\u002Fsecrets\u002Fpublic-key\n\n# Encrypt and set (requires Python with PyNaCl)\npython3 -c \"\nfrom base64 import b64encode\nfrom nacl import encoding, public\nimport json, sys\n\n# Get the public key\nkey_id = '\u003Ckey_id_from_above>'\npublic_key = '\u003Cbase64_key_from_above>'\n\n# Encrypt\nsealed = public.SealedBox(\n    public.PublicKey(public_key.encode('utf-8'), encoding.Base64Encoder)\n).encrypt('your-secret-value'.encode('utf-8'))\nprint(json.dumps({\n    'encrypted_value': b64encode(sealed).decode('utf-8'),\n    'key_id': key_id\n}))\"\n\n# Then PUT the encrypted secret\ncurl -s -X PUT \\\n  -H \"Authorization: token $GITHUB_TOKEN\" \\\n  https:\u002F\u002Fapi.github.com\u002Frepos\u002F$OWNER\u002F$REPO\u002Factions\u002Fsecrets\u002FAPI_KEY \\\n  -d '\u003Coutput from python script above>'\n\n# List secrets (names only, values hidden)\ncurl -s \\\n  -H \"Authorization: token $GITHUB_TOKEN\" \\\n  https:\u002F\u002Fapi.github.com\u002Frepos\u002F$OWNER\u002F$REPO\u002Factions\u002Fsecrets \\\n  | python3 -c \"\nimport sys, json\nfor s in json.load(sys.stdin)['secrets']:\n    print(f\\\"  {s['name']:30}  updated: {s['updated_at']}\\\")\"\n```\n\nNote: For secrets, `gh secret set` is dramatically simpler. If setting secrets is needed and `gh` isn't available, recommend installing it for just that operation.\n\n## 8. Releases\n\n**With gh:**\n\n```bash\ngh release create v1.0.0 --title \"v1.0.0\" --generate-notes\ngh release create v2.0.0-rc1 --draft --prerelease --generate-notes\ngh release create v1.0.0 .\u002Fdist\u002Fbinary --title \"v1.0.0\" --notes \"Release notes\"\ngh release list\ngh release download v1.0.0 --dir .\u002Fdownloads\n```\n\n**With curl:**\n\n```bash\n# Create a release\ncurl -s -X POST \\\n  -H \"Authorization: token $GITHUB_TOKEN\" \\\n  https:\u002F\u002Fapi.github.com\u002Frepos\u002F$OWNER\u002F$REPO\u002Freleases \\\n  -d '{\n    \"tag_name\": \"v1.0.0\",\n    \"name\": \"v1.0.0\",\n    \"body\": \"## Changelog\\n- Feature A\\n- Bug fix B\",\n    \"draft\": false,\n    \"prerelease\": false,\n    \"generate_release_notes\": true\n  }'\n\n# List releases\ncurl -s \\\n  -H \"Authorization: token $GITHUB_TOKEN\" \\\n  https:\u002F\u002Fapi.github.com\u002Frepos\u002F$OWNER\u002F$REPO\u002Freleases \\\n  | python3 -c \"\nimport sys, json\nfor r in json.load(sys.stdin):\n    tag = r.get('tag_name', 'no tag')\n    print(f\\\"  {tag:15}  {r['name']:30}  {'draft' if r['draft'] else 'published'}\\\")\"\n\n# Upload a release asset (binary file)\nRELEASE_ID=\u003Cid_from_create_response>\ncurl -s -X POST \\\n  -H \"Authorization: token $GITHUB_TOKEN\" \\\n  -H \"Content-Type: application\u002Foctet-stream\" \\\n  \"https:\u002F\u002Fuploads.github.com\u002Frepos\u002F$OWNER\u002F$REPO\u002Freleases\u002F$RELEASE_ID\u002Fassets?name=binary-amd64\" \\\n  --data-binary @.\u002Fdist\u002Fbinary-amd64\n```\n\n## 9. GitHub Actions Workflows\n\n**With gh:**\n\n```bash\ngh workflow list\ngh run list --limit 10\ngh run view \u003CRUN_ID>\ngh run view \u003CRUN_ID> --log-failed\ngh run rerun \u003CRUN_ID>\ngh run rerun \u003CRUN_ID> --failed\ngh workflow run ci.yml --ref main\ngh workflow run deploy.yml -f environment=staging\n```\n\n**With curl:**\n\n```bash\n# List workflows\ncurl -s \\\n  -H \"Authorization: token $GITHUB_TOKEN\" \\\n  https:\u002F\u002Fapi.github.com\u002Frepos\u002F$OWNER\u002F$REPO\u002Factions\u002Fworkflows \\\n  | python3 -c \"\nimport sys, json\nfor w in json.load(sys.stdin)['workflows']:\n    print(f\\\"  {w['id']:10}  {w['name']:30}  {w['state']}\\\")\"\n\n# List recent runs\ncurl -s \\\n  -H \"Authorization: token $GITHUB_TOKEN\" \\\n  \"https:\u002F\u002Fapi.github.com\u002Frepos\u002F$OWNER\u002F$REPO\u002Factions\u002Fruns?per_page=10\" \\\n  | python3 -c \"\nimport sys, json\nfor r in json.load(sys.stdin)['workflow_runs']:\n    print(f\\\"  Run {r['id']}  {r['name']:30}  {r['conclusion'] or r['status']}\\\")\"\n\n# Download failed run logs\nRUN_ID=\u003Crun_id>\ncurl -s -L \\\n  -H \"Authorization: token $GITHUB_TOKEN\" \\\n  https:\u002F\u002Fapi.github.com\u002Frepos\u002F$OWNER\u002F$REPO\u002Factions\u002Fruns\u002F$RUN_ID\u002Flogs \\\n  -o \u002Ftmp\u002Fci-logs.zip\ncd \u002Ftmp && unzip -o ci-logs.zip -d ci-logs\n\n# Re-run a failed workflow\ncurl -s -X POST \\\n  -H \"Authorization: token $GITHUB_TOKEN\" \\\n  https:\u002F\u002Fapi.github.com\u002Frepos\u002F$OWNER\u002F$REPO\u002Factions\u002Fruns\u002F$RUN_ID\u002Frerun\n\n# Re-run only failed jobs\ncurl -s -X POST \\\n  -H \"Authorization: token $GITHUB_TOKEN\" \\\n  https:\u002F\u002Fapi.github.com\u002Frepos\u002F$OWNER\u002F$REPO\u002Factions\u002Fruns\u002F$RUN_ID\u002Frerun-failed-jobs\n\n# Trigger a workflow manually (workflow_dispatch)\nWORKFLOW_ID=\u003Cworkflow_id_or_filename>\ncurl -s -X POST \\\n  -H \"Authorization: token $GITHUB_TOKEN\" \\\n  https:\u002F\u002Fapi.github.com\u002Frepos\u002F$OWNER\u002F$REPO\u002Factions\u002Fworkflows\u002F$WORKFLOW_ID\u002Fdispatches \\\n  -d '{\"ref\": \"main\", \"inputs\": {\"environment\": \"staging\"}}'\n```\n\n## 10. Gists\n\n**With gh:**\n\n```bash\ngh gist create script.py --public --desc \"Useful script\"\ngh gist list\n```\n\n**With curl:**\n\n```bash\n# Create a gist\ncurl -s -X POST \\\n  -H \"Authorization: token $GITHUB_TOKEN\" \\\n  https:\u002F\u002Fapi.github.com\u002Fgists \\\n  -d '{\n    \"description\": \"Useful script\",\n    \"public\": true,\n    \"files\": {\n      \"script.py\": {\"content\": \"print(\\\"hello\\\")\"}\n    }\n  }'\n\n# List your gists\ncurl -s \\\n  -H \"Authorization: token $GITHUB_TOKEN\" \\\n  https:\u002F\u002Fapi.github.com\u002Fgists \\\n  | python3 -c \"\nimport sys, json\nfor g in json.load(sys.stdin):\n    files = ', '.join(g['files'].keys())\n    print(f\\\"  {g['id']}  {g['description'] or '(no desc)':40}  {files}\\\")\"\n```\n\n## Quick Reference Table\n\n| Action | gh | git + curl |\n|--------|-----|-----------|\n| Clone | `gh repo clone o\u002Fr` | `git clone https:\u002F\u002Fgithub.com\u002Fo\u002Fr.git` |\n| Create repo | `gh repo create name --public` | `curl POST \u002Fuser\u002Frepos` |\n| Fork | `gh repo fork o\u002Fr --clone` | `curl POST \u002Frepos\u002Fo\u002Fr\u002Fforks` + `git clone` |\n| Repo info | `gh repo view o\u002Fr` | `curl GET \u002Frepos\u002Fo\u002Fr` |\n| Edit settings | `gh repo edit --...` | `curl PATCH \u002Frepos\u002Fo\u002Fr` |\n| Create release | `gh release create v1.0` | `curl POST \u002Frepos\u002Fo\u002Fr\u002Freleases` |\n| List workflows | `gh workflow list` | `curl GET \u002Frepos\u002Fo\u002Fr\u002Factions\u002Fworkflows` |\n| Rerun CI | `gh run rerun ID` | `curl POST \u002Frepos\u002Fo\u002Fr\u002Factions\u002Fruns\u002FID\u002Frerun` |\n| Set secret | `gh secret set KEY` | `curl PUT \u002Frepos\u002Fo\u002Fr\u002Factions\u002Fsecrets\u002FKEY` (+ encryption) |\n",{"name":5,"author":43,"license":14,"version":44,"metadata":45,"description":7},"Hermes Agent","1.1.0",{"hermes":46},{"tags":47,"related_skills":54},[48,49,50,51,52,53],"GitHub","Repositories","Git","Releases","Secrets","Configuration",[55,56,57],"github-auth","github-pr-workflow","github-issues","main","17ee50c38aefa9426a89d7e8ee167fdc4c184fb7","skills\u002Fgithub\u002Fgithub-repo-management",0,"https:\u002F\u002Fgithub.com\u002Fxuanxuan1983\u002Fhermes-skills-backup","https:\u002F\u002Fgithub.com\u002Fxuanxuan1983","2026-05-24 00:14:48",{"source":8,"skillName":5,"commands":66,"prompt":76,"zipAvailable":77},[67,70,73],{"tool":68,"command":69},"npx","npx skills add xuanxuan1983\u002Fhermes-skills-backup --skill github-repo-management",{"tool":71,"command":72},"bunx","bunx skills add xuanxuan1983\u002Fhermes-skills-backup --skill github-repo-management",{"tool":74,"command":75},"pnpm","pnpm dlx skills add xuanxuan1983\u002Fhermes-skills-backup --skill github-repo-management","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fxuanxuan1983\u002Fhermes-skills-backup\u002Fblob\u002Fmain\u002Fskills\u002Fgithub\u002Fgithub-repo-management\u002FSKILL.md",true,[79],{"path":80,"resourceType":81,"resourceTypeDesc":82,"sizeBytes":83,"sourceHtmlUrl":84},"references\u002Fgithub-api-cheatsheet.md","REFERENCE","参考文档",6092,"https:\u002F\u002Fgithub.com\u002Fxuanxuan1983\u002Fhermes-skills-backup\u002Fblob\u002Fmain\u002Fskills\u002Fgithub\u002Fgithub-repo-management\u002Freferences\u002Fgithub-api-cheatsheet.md",[86,128,156,172,194,215],{"skillNo":87,"name":88,"nameZh":6,"description":89,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":90,"categories":91,"keywords":108,"publishedAt":38},"01M71JFHVW1W4XE013TY9ZYN9P","writing-plans","Use when you have a spec or requirements for a multi-step task. Creates comprehensive implementation plans with bite-sized tasks, exact file paths, and complete code examples.","https:\u002F\u002Fgithub.com\u002Fxuanxuan1983\u002Fhermes-skills-backup\u002Fblob\u002Fmain\u002Fskills\u002Fsoftware-development\u002Fwriting-plans\u002FSKILL.md",[92,97,100,105],{"categoryNo":93,"categoryName":94,"taxonomyType":95,"taxonomyTypeDesc":96},"01JBSEEDCAT000000000000015","视觉设计","SCENARIO","使用场景",{"categoryNo":98,"categoryName":99,"taxonomyType":95,"taxonomyTypeDesc":96},"01JBSEEDCAT000000000000018","写作与文案",{"categoryNo":101,"categoryName":102,"taxonomyType":103,"taxonomyTypeDesc":104},"01JBSEEDCAT000000000000030","开发工程师","PROFESSION","适用职业",{"categoryNo":106,"categoryName":107,"taxonomyType":103,"taxonomyTypeDesc":104},"01JBSEEDCAT000000000000036","内容创作者",[109,110,111,112,113,114,115,116,32,117,118,119,120,121,122,123,124,125,126,127],"writing","writing plans","plans","test-driven","test-driven-development","superpowers","design","when","you","code","tasks","subagent","code-review","review","documentation","paths","planning","development","for",{"skillNo":129,"name":113,"nameZh":6,"description":130,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":131,"categories":132,"keywords":141,"publishedAt":38},"01M71JFF859RV0XGWS206X1TMB","Use when implementing any feature or bugfix, before writing implementation code. Enforces RED-GREEN-REFACTOR cycle with test-first approach.","https:\u002F\u002Fgithub.com\u002Fxuanxuan1983\u002Fhermes-skills-backup\u002Fblob\u002Fmain\u002Fskills\u002Fsoftware-development\u002Ftest-driven-development\u002FSKILL.md",[133,136,139,140],{"categoryNo":134,"categoryName":135,"taxonomyType":95,"taxonomyTypeDesc":96},"01JBSEEDCAT000000000000007","代码审查",{"categoryNo":137,"categoryName":138,"taxonomyType":95,"taxonomyTypeDesc":96},"01JBSEEDCAT000000000000008","测试与质量",{"categoryNo":98,"categoryName":99,"taxonomyType":95,"taxonomyTypeDesc":96},{"categoryNo":106,"categoryName":107,"taxonomyType":103,"taxonomyTypeDesc":104},[142,126,143,144,145,146,147,148,149,150,114,109,151,116,118,120,152,153,154,155],"test driven development","test","driven","test-first","green","cycle","red-green-refactor","testing","implementing","debugging","systematic","bugfix","refactor","systematic-debugging",{"skillNo":157,"name":155,"nameZh":6,"description":158,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":159,"categories":160,"keywords":162,"publishedAt":38},"01M71JFCA5S48PZ5M7DG31R8K5","Use when encountering any bug, test failure, or unexpected behavior. 4-phase root cause investigation — NO fixes without understanding the problem first.","https:\u002F\u002Fgithub.com\u002Fxuanxuan1983\u002Fhermes-skills-backup\u002Fblob\u002Fmain\u002Fskills\u002Fsoftware-development\u002Fsystematic-debugging\u002FSKILL.md",[161],{"categoryNo":137,"categoryName":138,"taxonomyType":95,"taxonomyTypeDesc":96},[163,151,152,112,164,165,113,114,109,116,120,166,167,126,168,169,111,170,171,143],"systematic debugging","problem","problem-solving","phase","bug","fixes","root cause","use","root-cause",{"skillNo":173,"name":174,"nameZh":6,"description":175,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":176,"categories":177,"keywords":187,"publishedAt":38},"01M71JF9RQ092KM5ZXCBBT6FS1","subagent-driven-development","Use when executing implementation plans with independent tasks. Dispatches fresh delegate_task per task with two-stage review (spec compliance then code quality).","https:\u002F\u002Fgithub.com\u002Fxuanxuan1983\u002Fhermes-skills-backup\u002Fblob\u002Fmain\u002Fskills\u002Fsoftware-development\u002Fsubagent-driven-development\u002FSKILL.md",[178,179,182,183,184],{"categoryNo":98,"categoryName":99,"taxonomyType":95,"taxonomyTypeDesc":96},{"categoryNo":180,"categoryName":181,"taxonomyType":95,"taxonomyTypeDesc":96},"01JBSEEDCAT000000000000023","Skill与智能体开发",{"categoryNo":101,"categoryName":102,"taxonomyType":103,"taxonomyTypeDesc":104},{"categoryNo":106,"categoryName":107,"taxonomyType":103,"taxonomyTypeDesc":104},{"categoryNo":185,"categoryName":186,"taxonomyType":103,"taxonomyTypeDesc":104},"01JBSEEDCAT000000000000037","律师与法务",[188,120,126,144,112,113,189,190,114,109,116,32,118,119,121,122,191,192,193,111],"subagent driven development","delegate","delegation","fresh","parallel","code quality",{"skillNo":195,"name":196,"nameZh":6,"description":197,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":198,"categories":199,"keywords":202,"publishedAt":38},"01M71JF76DA8ARZ4JRYR4VBRWM","requesting-code-review","Pre-commit verification pipeline — static security scan, baseline-aware quality gates, independent reviewer subagent, and auto-fix loop. Use after code changes and before committing, pushing, or opening a PR.","https:\u002F\u002Fgithub.com\u002Fxuanxuan1983\u002Fhermes-skills-backup\u002Fblob\u002Fmain\u002Fskills\u002Fsoftware-development\u002Frequesting-code-review\u002FSKILL.md",[200,201],{"categoryNo":134,"categoryName":135,"taxonomyType":95,"taxonomyTypeDesc":96},{"categoryNo":101,"categoryName":102,"taxonomyType":103,"taxonomyTypeDesc":104},[203,204,118,122,112,205,206,113,207,208,114,209,109,210,211,212,120,121,213,214],"code review","requesting code review","pipeline","static","fix","auto-fix","auto","loop","security scan","commit","reviewer","verification",{"skillNo":216,"name":217,"nameZh":6,"description":218,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":219,"categories":220,"keywords":221,"publishedAt":38},"01M71JF52HZT5VQXFVF9K2H76K","plan","Plan mode for Hermes — inspect context, write a markdown plan into the active workspace's `.hermes\u002Fplans\u002F` directory, and do not execute the work.","https:\u002F\u002Fgithub.com\u002Fxuanxuan1983\u002Fhermes-skills-backup\u002Fblob\u002Fmain\u002Fskills\u002Fsoftware-development\u002Fplan\u002FSKILL.md",[],[217,222,223,125,126,127,224,225,111,109,32,120,226,227,228,229,230,231,232,233],"plan-mode","do","inspect","mode","work","markdown","active","directory","workspace","plan mode","write","implementation"]