[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6GEQTYCASHBPWYKHMAPRT86":3,"skill-same:01M6GEQTYCASHBPWYKHMAPRT86":81},{"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":39,"linkOnly":40,"markdownContent":41,"markdownBody":42,"frontMatter":43,"refName":59,"commitSha":60,"skillDirectory":61,"forksCount":62,"repositoryHtmlUrl":63,"repositoryHomepageUrl":6,"ownerHtmlUrl":64,"ownerBlogUrl":6,"ownerDescription":65,"updatedAt":66,"install":67,"resources":80},"01M6GEQTYCASHBPWYKHMAPRT86","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.","zapabob\u002FSkills","zapabob","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F130830376?v=4","01M6DBMYZAGRTFQDSQYW3W764P","峯岸 亮","01M6DBMZ3GKDSJ01NZ9XTZD7JD",2,"MIT","https:\u002F\u002Fgithub.com\u002Fzapabob\u002FSkills\u002Fblob\u002Fmain\u002Farchive\u002Fskill-md-reviewed\u002Fsha256\u002Fcc\u002Fcc9210c3ce36ca67b58c569cfff16588a3db537792aa02b5192e327d453dd569\u002FSKILL.md",[],[19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38],"github","github repo management","management","repo","with","cli","via","back","manage","curl","gh","configure","api","REST","issues","create","pr","auth","workflows","workflow","2026-11-10 10:12:30",false,"---\r\nname: github-repo-management\r\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.\r\nversion: 1.1.0\r\nauthor: Hermes Agent\r\nlicense: MIT\r\nmetadata:\r\n  hermes:\r\n    tags: [GitHub, Repositories, Git, Releases, Secrets, Configuration]\r\n    related_skills: [github-auth, github-pr-workflow, github-issues]\r\n---\r\n\r\n# GitHub Repository Management\r\n\r\nCreate, clone, fork, configure, and manage GitHub repositories. Each section shows `gh` first, then the `git` + `curl` fallback.\r\n\r\n## Prerequisites\r\n\r\n- Authenticated with GitHub (see `github-auth` skill)\r\n\r\n### Setup\r\n\r\n```bash\r\nif command -v gh &>\u002Fdev\u002Fnull && gh auth status &>\u002Fdev\u002Fnull; then\r\n  AUTH=\"gh\"\r\nelse\r\n  AUTH=\"git\"\r\n  if [ -z \"$GITHUB_TOKEN\" ]; then\r\n    if [ -f ~\u002F.hermes\u002F.env ] && grep -q \"^GITHUB_TOKEN=\" ~\u002F.hermes\u002F.env; then\r\n      GITHUB_TOKEN=$(grep \"^GITHUB_TOKEN=\" ~\u002F.hermes\u002F.env | head -1 | cut -d= -f2 | tr -d '\\n\\r')\r\n    elif grep -q \"github.com\" ~\u002F.git-credentials 2>\u002Fdev\u002Fnull; then\r\n      GITHUB_TOKEN=$(grep \"github.com\" ~\u002F.git-credentials 2>\u002Fdev\u002Fnull | head -1 | sed 's|https:\u002F\u002F[REDACTED]@]*\\)@.*|\\1|')\r\n    fi\r\n  fi\r\nfi\r\n\r\n# Get your GitHub username (needed for several operations)\r\nif [ \"$AUTH\" = \"gh\" ]; then\r\n  GH_USER=$(gh api user --jq '.login')\r\nelse\r\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'])\")\r\nfi\r\n```\r\n\r\nIf you're inside a repo already:\r\n\r\n```bash\r\nREMOTE_URL=$(git remote get-url origin)\r\nOWNER_REPO=$(echo \"$REMOTE_URL\" | sed -E 's|.*github\\.com[:\u002F]||; s|\\.git$||')\r\nOWNER=$(echo \"$OWNER_REPO\" | cut -d\u002F -f1)\r\nREPO=$(echo \"$OWNER_REPO\" | cut -d\u002F -f2)\r\n```\r\n\r\n---\r\n\r\n## 1. Cloning Repositories\r\n\r\nCloning is pure `git` — works identically either way:\r\n\r\n```bash\r\n# Clone via HTTPS (works with credential helper or token-embedded URL)\r\ngit clone https:\u002F\u002Fgithub.com\u002Fowner\u002Frepo-name.git\r\n\r\n# Clone into a specific directory\r\ngit clone https:\u002F\u002Fgithub.com\u002Fowner\u002Frepo-name.git .\u002Fmy-local-dir\r\n\r\n# Shallow clone (faster for large repos)\r\ngit clone --depth 1 https:\u002F\u002Fgithub.com\u002Fowner\u002Frepo-name.git\r\n\r\n# Clone a specific branch\r\ngit clone --branch develop https:\u002F\u002Fgithub.com\u002Fowner\u002Frepo-name.git\r\n\r\n# Clone via SSH (if SSH is configured)\r\ngit clone [REDACTED_EMAIL]:owner\u002Frepo-name.git\r\n```\r\n\r\n**With gh (shorthand):**\r\n\r\n```bash\r\ngh repo clone owner\u002Frepo-name\r\ngh repo clone owner\u002Frepo-name -- --depth 1\r\n```\r\n\r\n## 2. Creating Repositories\r\n\r\n**With gh:**\r\n\r\n```bash\r\n# Create a public repo and clone it\r\ngh repo create my-new-project --public --clone\r\n\r\n# Private, with description and license\r\ngh repo create my-new-project --private --description \"A useful tool\" --license MIT --clone\r\n\r\n# Under an organization\r\ngh repo create my-org\u002Fmy-new-project --public --clone\r\n\r\n# From existing local directory\r\ncd \u002Fpath\u002Fto\u002Fexisting\u002Fproject\r\ngh repo create my-project --source . --public --push\r\n```\r\n\r\n**With git + curl:**\r\n\r\n```bash\r\n# Create the remote repo via API\r\ncurl -s -X POST \\\r\n  -H \"Authorization: token $GITHUB_TOKEN\" \\\r\n  https:\u002F\u002Fapi.github.com\u002Fuser\u002Frepos \\\r\n  -d '{\r\n    \"name\": \"my-new-project\",\r\n    \"description\": \"A useful tool\",\r\n    \"private\": false,\r\n    \"auto_init\": true,\r\n    \"license_template\": \"mit\"\r\n  }'\r\n\r\n# Clone it\r\ngit clone https:\u002F\u002Fgithub.com\u002F$GH_USER\u002Fmy-new-project.git\r\ncd my-new-project\r\n\r\n# -- OR -- push an existing local directory to the new repo\r\ncd \u002Fpath\u002Fto\u002Fexisting\u002Fproject\r\ngit init\r\ngit add .\r\ngit commit -m \"Initial commit\"\r\ngit remote add origin https:\u002F\u002Fgithub.com\u002F$GH_USER\u002Fmy-new-project.git\r\ngit push -u origin main\r\n```\r\n\r\nTo create under an organization:\r\n\r\n```bash\r\ncurl -s -X POST \\\r\n  -H \"Authorization: token $GITHUB_TOKEN\" \\\r\n  https:\u002F\u002Fapi.github.com\u002Forgs\u002Fmy-org\u002Frepos \\\r\n  -d '{\"name\": \"my-new-project\", \"private\": false}'\r\n```\r\n\r\n### From a Template\r\n\r\n**With gh:**\r\n\r\n```bash\r\ngh repo create my-new-app --template owner\u002Ftemplate-repo --public --clone\r\n```\r\n\r\n**With curl:**\r\n\r\n```bash\r\ncurl -s -X POST \\\r\n  -H \"Authorization: token $GITHUB_TOKEN\" \\\r\n  https:\u002F\u002Fapi.github.com\u002Frepos\u002Fowner\u002Ftemplate-repo\u002Fgenerate \\\r\n  -d '{\"owner\": \"'\"$GH_USER\"'\", \"name\": \"my-new-app\", \"private\": false}'\r\n```\r\n\r\n## 3. Forking Repositories\r\n\r\n**With gh:**\r\n\r\n```bash\r\ngh repo fork owner\u002Frepo-name --clone\r\n```\r\n\r\n**With git + curl:**\r\n\r\n```bash\r\n# Create the fork via API\r\ncurl -s -X POST \\\r\n  -H \"Authorization: token $GITHUB_TOKEN\" \\\r\n  https:\u002F\u002Fapi.github.com\u002Frepos\u002Fowner\u002Frepo-name\u002Fforks\r\n\r\n# Wait a moment for GitHub to create it, then clone\r\nsleep 3\r\ngit clone https:\u002F\u002Fgithub.com\u002F$GH_USER\u002Frepo-name.git\r\ncd repo-name\r\n\r\n# Add the original repo as \"upstream\" remote\r\ngit remote add upstream https:\u002F\u002Fgithub.com\u002Fowner\u002Frepo-name.git\r\n```\r\n\r\n### Keeping a Fork in Sync\r\n\r\n```bash\r\n# Pure git — works everywhere\r\ngit fetch upstream\r\ngit checkout main\r\ngit merge upstream\u002Fmain\r\ngit push origin main\r\n```\r\n\r\n**With gh (shortcut):**\r\n\r\n```bash\r\ngh repo sync $GH_USER\u002Frepo-name\r\n```\r\n\r\n## 4. Repository Information\r\n\r\n**With gh:**\r\n\r\n```bash\r\ngh repo view owner\u002Frepo-name\r\ngh repo list --limit 20\r\ngh search repos \"machine learning\" --language python --sort stars\r\n```\r\n\r\n**With curl:**\r\n\r\n```bash\r\n# View repo details\r\ncurl -s \\\r\n  -H \"Authorization: token $GITHUB_TOKEN\" \\\r\n  https:\u002F\u002Fapi.github.com\u002Frepos\u002F$OWNER\u002F$REPO \\\r\n  | python3 -c \"\r\nimport sys, json\r\nr = json.load(sys.stdin)\r\nprint(f\\\"Name: {r['full_name']}\\\")\r\nprint(f\\\"Description: {r['description']}\\\")\r\nprint(f\\\"Stars: {r['stargazers_count']}  Forks: {r['forks_count']}\\\")\r\nprint(f\\\"Default branch: {r['default_branch']}\\\")\r\nprint(f\\\"Language: {r['language']}\\\")\"\r\n\r\n# List your repos\r\ncurl -s \\\r\n  -H \"Authorization: token $GITHUB_TOKEN\" \\\r\n  \"https:\u002F\u002Fapi.github.com\u002Fuser\u002Frepos?per_page=20&sort=updated\" \\\r\n  | python3 -c \"\r\nimport sys, json\r\nfor r in json.load(sys.stdin):\r\n    vis = 'private' if r['private'] else 'public'\r\n    print(f\\\"  {r['full_name']:40}  {vis:8}  {r.get('language', ''):10}  ★{r['stargazers_count']}\\\")\"\r\n\r\n# Search repos\r\ncurl -s \\\r\n  \"https:\u002F\u002Fapi.github.com\u002Fsearch\u002Frepositories?q=machine+learning+language:python&sort=stars&per_page=10\" \\\r\n  | python3 -c \"\r\nimport sys, json\r\nfor r in json.load(sys.stdin)['items']:\r\n    print(f\\\"  {r['full_name']:40}  ★{r['stargazers_count']:6}  {r['description'][:60] if r['description'] else ''}\\\")\"\r\n```\r\n\r\n## 5. Repository Settings\r\n\r\n**With gh:**\r\n\r\n```bash\r\ngh repo edit --description \"Updated description\" --visibility public\r\ngh repo edit --enable-wiki=false --enable-issues=true\r\ngh repo edit --default-branch main\r\ngh repo edit --add-topic \"machine-learning,python\"\r\ngh repo edit --enable-auto-merge\r\n```\r\n\r\n**With curl:**\r\n\r\n```bash\r\ncurl -s -X PATCH \\\r\n  -H \"Authorization: token $GITHUB_TOKEN\" \\\r\n  https:\u002F\u002Fapi.github.com\u002Frepos\u002F$OWNER\u002F$REPO \\\r\n  -d '{\r\n    \"description\": \"Updated description\",\r\n    \"has_wiki\": false,\r\n    \"has_issues\": true,\r\n    \"allow_auto_merge\": true\r\n  }'\r\n\r\n# Update topics\r\ncurl -s -X PUT \\\r\n  -H \"Authorization: token $GITHUB_TOKEN\" \\\r\n  -H \"Accept: application\u002Fvnd.github.mercy-preview+json\" \\\r\n  https:\u002F\u002Fapi.github.com\u002Frepos\u002F$OWNER\u002F$REPO\u002Ftopics \\\r\n  -d '{\"names\": [\"machine-learning\", \"python\", \"automation\"]}'\r\n```\r\n\r\n## 6. Branch Protection\r\n\r\n```bash\r\n# View current protection\r\ncurl -s \\\r\n  -H \"Authorization: token $GITHUB_TOKEN\" \\\r\n  https:\u002F\u002Fapi.github.com\u002Frepos\u002F$OWNER\u002F$REPO\u002Fbranches\u002Fmain\u002Fprotection\r\n\r\n# Set up branch protection\r\ncurl -s -X PUT \\\r\n  -H \"Authorization: token $GITHUB_TOKEN\" \\\r\n  https:\u002F\u002Fapi.github.com\u002Frepos\u002F$OWNER\u002F$REPO\u002Fbranches\u002Fmain\u002Fprotection \\\r\n  -d '{\r\n    \"required_status_checks\": {\r\n      \"strict\": true,\r\n      \"contexts\": [\"ci\u002Ftest\", \"ci\u002Flint\"]\r\n    },\r\n    \"enforce_admins\": false,\r\n    \"required_pull_request_reviews\": {\r\n      \"required_approving_review_count\": 1\r\n    },\r\n    \"restrictions\": null\r\n  }'\r\n```\r\n\r\n## 7. Secrets Management (GitHub Actions)\r\n\r\n**With gh:**\r\n\r\n```bash\r\ngh secret set API_KEY --body \"your-secret-value\"\r\ngh secret set SSH_KEY \u003C ~\u002F.ssh\u002Fid_rsa\r\ngh secret list\r\ngh secret delete API_KEY\r\n```\r\n\r\n**With curl:**\r\n\r\nSecrets require encryption with the repo's public key — more involved via API:\r\n\r\n```bash\r\n# Get the repo's public key for encrypting secrets\r\ncurl -s \\\r\n  -H \"Authorization: token $GITHUB_TOKEN\" \\\r\n  https:\u002F\u002Fapi.github.com\u002Frepos\u002F$OWNER\u002F$REPO\u002Factions\u002Fsecrets\u002Fpublic-key\r\n\r\n# Encrypt and set (requires Python with PyNaCl)\r\npython3 -c \"\r\nfrom base64 import b64encode\r\nfrom nacl import encoding, public\r\nimport json, sys\r\n\r\n# Get the public key\r\nkey_id = '\u003Ckey_id_from_above>'\r\npublic_key = '\u003Cbase64_key_from_above>'\r\n\r\n# Encrypt\r\nsealed = public.SealedBox(\r\n    public.PublicKey(public_key.encode('utf-8'), encoding.Base64Encoder)\r\n).encrypt('your-secret-value'.encode('utf-8'))\r\nprint(json.dumps({\r\n    'encrypted_value': b64encode(sealed).decode('utf-8'),\r\n    'key_id': key_id\r\n}))\"\r\n\r\n# Then PUT the encrypted secret\r\ncurl -s -X PUT \\\r\n  -H \"Authorization: token $GITHUB_TOKEN\" \\\r\n  https:\u002F\u002Fapi.github.com\u002Frepos\u002F$OWNER\u002F$REPO\u002Factions\u002Fsecrets\u002FAPI_KEY \\\r\n  -d '\u003Coutput from python script above>'\r\n\r\n# List secrets (names only, values hidden)\r\ncurl -s \\\r\n  -H \"Authorization: token $GITHUB_TOKEN\" \\\r\n  https:\u002F\u002Fapi.github.com\u002Frepos\u002F$OWNER\u002F$REPO\u002Factions\u002Fsecrets \\\r\n  | python3 -c \"\r\nimport sys, json\r\nfor s in json.load(sys.stdin)['secrets']:\r\n    print(f\\\"  {s['name']:30}  updated: {s['updated_at']}\\\")\"\r\n```\r\n\r\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.\r\n\r\n## 8. Releases\r\n\r\n**With gh:**\r\n\r\n```bash\r\ngh release create v1.0.0 --title \"v1.0.0\" --generate-notes\r\ngh release create v2.0.0-rc1 --draft --prerelease --generate-notes\r\ngh release create v1.0.0 .\u002Fdist\u002Fbinary --title \"v1.0.0\" --notes \"Release notes\"\r\ngh release list\r\ngh release download v1.0.0 --dir .\u002Fdownloads\r\n```\r\n\r\n**With curl:**\r\n\r\n```bash\r\n# Create a release\r\ncurl -s -X POST \\\r\n  -H \"Authorization: token $GITHUB_TOKEN\" \\\r\n  https:\u002F\u002Fapi.github.com\u002Frepos\u002F$OWNER\u002F$REPO\u002Freleases \\\r\n  -d '{\r\n    \"tag_name\": \"v1.0.0\",\r\n    \"name\": \"v1.0.0\",\r\n    \"body\": \"## Changelog\\n- Feature A\\n- Bug fix B\",\r\n    \"draft\": false,\r\n    \"prerelease\": false,\r\n    \"generate_release_notes\": true\r\n  }'\r\n\r\n# List releases\r\ncurl -s \\\r\n  -H \"Authorization: token $GITHUB_TOKEN\" \\\r\n  https:\u002F\u002Fapi.github.com\u002Frepos\u002F$OWNER\u002F$REPO\u002Freleases \\\r\n  | python3 -c \"\r\nimport sys, json\r\nfor r in json.load(sys.stdin):\r\n    tag = r.get('tag_name', 'no tag')\r\n    print(f\\\"  {tag:15}  {r['name']:30}  {'draft' if r['draft'] else 'published'}\\\")\"\r\n\r\n# Upload a release asset (binary file)\r\nRELEASE_ID=\u003Cid_from_create_response>\r\ncurl -s -X POST \\\r\n  -H \"Authorization: token $GITHUB_TOKEN\" \\\r\n  -H \"Content-Type: application\u002Foctet-stream\" \\\r\n  \"https:\u002F\u002Fuploads.github.com\u002Frepos\u002F$OWNER\u002F$REPO\u002Freleases\u002F$RELEASE_ID\u002Fassets?name=binary-amd64\" \\\r\n  --data-binary @.\u002Fdist\u002Fbinary-amd64\r\n```\r\n\r\n## 9. GitHub Actions Workflows\r\n\r\n**With gh:**\r\n\r\n```bash\r\ngh workflow list\r\ngh run list --limit 10\r\ngh run view \u003CRUN_ID>\r\ngh run view \u003CRUN_ID> --log-failed\r\ngh run rerun \u003CRUN_ID>\r\ngh run rerun \u003CRUN_ID> --failed\r\ngh workflow run ci.yml --ref main\r\ngh workflow run deploy.yml -f environment=staging\r\n```\r\n\r\n**With curl:**\r\n\r\n```bash\r\n# List workflows\r\ncurl -s \\\r\n  -H \"Authorization: token $GITHUB_TOKEN\" \\\r\n  https:\u002F\u002Fapi.github.com\u002Frepos\u002F$OWNER\u002F$REPO\u002Factions\u002Fworkflows \\\r\n  | python3 -c \"\r\nimport sys, json\r\nfor w in json.load(sys.stdin)['workflows']:\r\n    print(f\\\"  {w['id']:10}  {w['name']:30}  {w['state']}\\\")\"\r\n\r\n# List recent runs\r\ncurl -s \\\r\n  -H \"Authorization: token $GITHUB_TOKEN\" \\\r\n  \"https:\u002F\u002Fapi.github.com\u002Frepos\u002F$OWNER\u002F$REPO\u002Factions\u002Fruns?per_page=10\" \\\r\n  | python3 -c \"\r\nimport sys, json\r\nfor r in json.load(sys.stdin)['workflow_runs']:\r\n    print(f\\\"  Run {r['id']}  {r['name']:30}  {r['conclusion'] or r['status']}\\\")\"\r\n\r\n# Download failed run logs\r\nRUN_ID=\u003Crun_id>\r\ncurl -s -L \\\r\n  -H \"Authorization: token $GITHUB_TOKEN\" \\\r\n  https:\u002F\u002Fapi.github.com\u002Frepos\u002F$OWNER\u002F$REPO\u002Factions\u002Fruns\u002F$RUN_ID\u002Flogs \\\r\n  -o \u002Ftmp\u002Fci-logs.zip\r\ncd \u002Ftmp && unzip -o ci-logs.zip -d ci-logs\r\n\r\n# Re-run a failed workflow\r\ncurl -s -X POST \\\r\n  -H \"Authorization: token $GITHUB_TOKEN\" \\\r\n  https:\u002F\u002Fapi.github.com\u002Frepos\u002F$OWNER\u002F$REPO\u002Factions\u002Fruns\u002F$RUN_ID\u002Frerun\r\n\r\n# Re-run only failed jobs\r\ncurl -s -X POST \\\r\n  -H \"Authorization: token $GITHUB_TOKEN\" \\\r\n  https:\u002F\u002Fapi.github.com\u002Frepos\u002F$OWNER\u002F$REPO\u002Factions\u002Fruns\u002F$RUN_ID\u002Frerun-failed-jobs\r\n\r\n# Trigger a workflow manually (workflow_dispatch)\r\nWORKFLOW_ID=\u003Cworkflow_id_or_filename>\r\ncurl -s -X POST \\\r\n  -H \"Authorization: token $GITHUB_TOKEN\" \\\r\n  https:\u002F\u002Fapi.github.com\u002Frepos\u002F$OWNER\u002F$REPO\u002Factions\u002Fworkflows\u002F$WORKFLOW_ID\u002Fdispatches \\\r\n  -d '{\"ref\": \"main\", \"inputs\": {\"environment\": \"staging\"}}'\r\n```\r\n\r\n## 10. Gists\r\n\r\n**With gh:**\r\n\r\n```bash\r\ngh gist create script.py --public --desc \"Useful script\"\r\ngh gist list\r\n```\r\n\r\n**With curl:**\r\n\r\n```bash\r\n# Create a gist\r\ncurl -s -X POST \\\r\n  -H \"Authorization: token $GITHUB_TOKEN\" \\\r\n  https:\u002F\u002Fapi.github.com\u002Fgists \\\r\n  -d '{\r\n    \"description\": \"Useful script\",\r\n    \"public\": true,\r\n    \"files\": {\r\n      \"script.py\": {\"content\": \"print(\\\"hello\\\")\"}\r\n    }\r\n  }'\r\n\r\n# List your gists\r\ncurl -s \\\r\n  -H \"Authorization: token $GITHUB_TOKEN\" \\\r\n  https:\u002F\u002Fapi.github.com\u002Fgists \\\r\n  | python3 -c \"\r\nimport sys, json\r\nfor g in json.load(sys.stdin):\r\n    files = ', '.join(g['files'].keys())\r\n    print(f\\\"  {g['id']}  {g['description'] or '(no desc)':40}  {files}\\\")\"\r\n```\r\n\r\n## Quick Reference Table\r\n\r\n| Action | gh | git + curl |\r\n|--------|-----|-----------|\r\n| Clone | `gh repo clone o\u002Fr` | `git clone https:\u002F\u002Fgithub.com\u002Fo\u002Fr.git` |\r\n| Create repo | `gh repo create name --public` | `curl POST \u002Fuser\u002Frepos` |\r\n| Fork | `gh repo fork o\u002Fr --clone` | `curl POST \u002Frepos\u002Fo\u002Fr\u002Fforks` + `git clone` |\r\n| Repo info | `gh repo view o\u002Fr` | `curl GET \u002Frepos\u002Fo\u002Fr` |\r\n| Edit settings | `gh repo edit --...` | `curl PATCH \u002Frepos\u002Fo\u002Fr` |\r\n| Create release | `gh release create v1.0` | `curl POST \u002Frepos\u002Fo\u002Fr\u002Freleases` |\r\n| List workflows | `gh workflow list` | `curl GET \u002Frepos\u002Fo\u002Fr\u002Factions\u002Fworkflows` |\r\n| Rerun CI | `gh run rerun ID` | `curl POST \u002Frepos\u002Fo\u002Fr\u002Factions\u002Fruns\u002FID\u002Frerun` |\r\n| Set secret | `gh secret set KEY` | `curl PUT \u002Frepos\u002Fo\u002Fr\u002Factions\u002Fsecrets\u002FKEY` (+ encryption) |\r\n","# GitHub Repository Management\r\n\r\nCreate, clone, fork, configure, and manage GitHub repositories. Each section shows `gh` first, then the `git` + `curl` fallback.\r\n\r\n## Prerequisites\r\n\r\n- Authenticated with GitHub (see `github-auth` skill)\r\n\r\n### Setup\r\n\r\n```bash\r\nif command -v gh &>\u002Fdev\u002Fnull && gh auth status &>\u002Fdev\u002Fnull; then\r\n  AUTH=\"gh\"\r\nelse\r\n  AUTH=\"git\"\r\n  if [ -z \"$GITHUB_TOKEN\" ]; then\r\n    if [ -f ~\u002F.hermes\u002F.env ] && grep -q \"^GITHUB_TOKEN=\" ~\u002F.hermes\u002F.env; then\r\n      GITHUB_TOKEN=$(grep \"^GITHUB_TOKEN=\" ~\u002F.hermes\u002F.env | head -1 | cut -d= -f2 | tr -d '\\n\\r')\r\n    elif grep -q \"github.com\" ~\u002F.git-credentials 2>\u002Fdev\u002Fnull; then\r\n      GITHUB_TOKEN=$(grep \"github.com\" ~\u002F.git-credentials 2>\u002Fdev\u002Fnull | head -1 | sed 's|https:\u002F\u002F[REDACTED]@]*\\)@.*|\\1|')\r\n    fi\r\n  fi\r\nfi\r\n\r\n# Get your GitHub username (needed for several operations)\r\nif [ \"$AUTH\" = \"gh\" ]; then\r\n  GH_USER=$(gh api user --jq '.login')\r\nelse\r\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'])\")\r\nfi\r\n```\r\n\r\nIf you're inside a repo already:\r\n\r\n```bash\r\nREMOTE_URL=$(git remote get-url origin)\r\nOWNER_REPO=$(echo \"$REMOTE_URL\" | sed -E 's|.*github\\.com[:\u002F]||; s|\\.git$||')\r\nOWNER=$(echo \"$OWNER_REPO\" | cut -d\u002F -f1)\r\nREPO=$(echo \"$OWNER_REPO\" | cut -d\u002F -f2)\r\n```\r\n\r\n---\r\n\r\n## 1. Cloning Repositories\r\n\r\nCloning is pure `git` — works identically either way:\r\n\r\n```bash\r\n# Clone via HTTPS (works with credential helper or token-embedded URL)\r\ngit clone https:\u002F\u002Fgithub.com\u002Fowner\u002Frepo-name.git\r\n\r\n# Clone into a specific directory\r\ngit clone https:\u002F\u002Fgithub.com\u002Fowner\u002Frepo-name.git .\u002Fmy-local-dir\r\n\r\n# Shallow clone (faster for large repos)\r\ngit clone --depth 1 https:\u002F\u002Fgithub.com\u002Fowner\u002Frepo-name.git\r\n\r\n# Clone a specific branch\r\ngit clone --branch develop https:\u002F\u002Fgithub.com\u002Fowner\u002Frepo-name.git\r\n\r\n# Clone via SSH (if SSH is configured)\r\ngit clone [REDACTED_EMAIL]:owner\u002Frepo-name.git\r\n```\r\n\r\n**With gh (shorthand):**\r\n\r\n```bash\r\ngh repo clone owner\u002Frepo-name\r\ngh repo clone owner\u002Frepo-name -- --depth 1\r\n```\r\n\r\n## 2. Creating Repositories\r\n\r\n**With gh:**\r\n\r\n```bash\r\n# Create a public repo and clone it\r\ngh repo create my-new-project --public --clone\r\n\r\n# Private, with description and license\r\ngh repo create my-new-project --private --description \"A useful tool\" --license MIT --clone\r\n\r\n# Under an organization\r\ngh repo create my-org\u002Fmy-new-project --public --clone\r\n\r\n# From existing local directory\r\ncd \u002Fpath\u002Fto\u002Fexisting\u002Fproject\r\ngh repo create my-project --source . --public --push\r\n```\r\n\r\n**With git + curl:**\r\n\r\n```bash\r\n# Create the remote repo via API\r\ncurl -s -X POST \\\r\n  -H \"Authorization: token $GITHUB_TOKEN\" \\\r\n  https:\u002F\u002Fapi.github.com\u002Fuser\u002Frepos \\\r\n  -d '{\r\n    \"name\": \"my-new-project\",\r\n    \"description\": \"A useful tool\",\r\n    \"private\": false,\r\n    \"auto_init\": true,\r\n    \"license_template\": \"mit\"\r\n  }'\r\n\r\n# Clone it\r\ngit clone https:\u002F\u002Fgithub.com\u002F$GH_USER\u002Fmy-new-project.git\r\ncd my-new-project\r\n\r\n# -- OR -- push an existing local directory to the new repo\r\ncd \u002Fpath\u002Fto\u002Fexisting\u002Fproject\r\ngit init\r\ngit add .\r\ngit commit -m \"Initial commit\"\r\ngit remote add origin https:\u002F\u002Fgithub.com\u002F$GH_USER\u002Fmy-new-project.git\r\ngit push -u origin main\r\n```\r\n\r\nTo create under an organization:\r\n\r\n```bash\r\ncurl -s -X POST \\\r\n  -H \"Authorization: token $GITHUB_TOKEN\" \\\r\n  https:\u002F\u002Fapi.github.com\u002Forgs\u002Fmy-org\u002Frepos \\\r\n  -d '{\"name\": \"my-new-project\", \"private\": false}'\r\n```\r\n\r\n### From a Template\r\n\r\n**With gh:**\r\n\r\n```bash\r\ngh repo create my-new-app --template owner\u002Ftemplate-repo --public --clone\r\n```\r\n\r\n**With curl:**\r\n\r\n```bash\r\ncurl -s -X POST \\\r\n  -H \"Authorization: token $GITHUB_TOKEN\" \\\r\n  https:\u002F\u002Fapi.github.com\u002Frepos\u002Fowner\u002Ftemplate-repo\u002Fgenerate \\\r\n  -d '{\"owner\": \"'\"$GH_USER\"'\", \"name\": \"my-new-app\", \"private\": false}'\r\n```\r\n\r\n## 3. Forking Repositories\r\n\r\n**With gh:**\r\n\r\n```bash\r\ngh repo fork owner\u002Frepo-name --clone\r\n```\r\n\r\n**With git + curl:**\r\n\r\n```bash\r\n# Create the fork via API\r\ncurl -s -X POST \\\r\n  -H \"Authorization: token $GITHUB_TOKEN\" \\\r\n  https:\u002F\u002Fapi.github.com\u002Frepos\u002Fowner\u002Frepo-name\u002Fforks\r\n\r\n# Wait a moment for GitHub to create it, then clone\r\nsleep 3\r\ngit clone https:\u002F\u002Fgithub.com\u002F$GH_USER\u002Frepo-name.git\r\ncd repo-name\r\n\r\n# Add the original repo as \"upstream\" remote\r\ngit remote add upstream https:\u002F\u002Fgithub.com\u002Fowner\u002Frepo-name.git\r\n```\r\n\r\n### Keeping a Fork in Sync\r\n\r\n```bash\r\n# Pure git — works everywhere\r\ngit fetch upstream\r\ngit checkout main\r\ngit merge upstream\u002Fmain\r\ngit push origin main\r\n```\r\n\r\n**With gh (shortcut):**\r\n\r\n```bash\r\ngh repo sync $GH_USER\u002Frepo-name\r\n```\r\n\r\n## 4. Repository Information\r\n\r\n**With gh:**\r\n\r\n```bash\r\ngh repo view owner\u002Frepo-name\r\ngh repo list --limit 20\r\ngh search repos \"machine learning\" --language python --sort stars\r\n```\r\n\r\n**With curl:**\r\n\r\n```bash\r\n# View repo details\r\ncurl -s \\\r\n  -H \"Authorization: token $GITHUB_TOKEN\" \\\r\n  https:\u002F\u002Fapi.github.com\u002Frepos\u002F$OWNER\u002F$REPO \\\r\n  | python3 -c \"\r\nimport sys, json\r\nr = json.load(sys.stdin)\r\nprint(f\\\"Name: {r['full_name']}\\\")\r\nprint(f\\\"Description: {r['description']}\\\")\r\nprint(f\\\"Stars: {r['stargazers_count']}  Forks: {r['forks_count']}\\\")\r\nprint(f\\\"Default branch: {r['default_branch']}\\\")\r\nprint(f\\\"Language: {r['language']}\\\")\"\r\n\r\n# List your repos\r\ncurl -s \\\r\n  -H \"Authorization: token $GITHUB_TOKEN\" \\\r\n  \"https:\u002F\u002Fapi.github.com\u002Fuser\u002Frepos?per_page=20&sort=updated\" \\\r\n  | python3 -c \"\r\nimport sys, json\r\nfor r in json.load(sys.stdin):\r\n    vis = 'private' if r['private'] else 'public'\r\n    print(f\\\"  {r['full_name']:40}  {vis:8}  {r.get('language', ''):10}  ★{r['stargazers_count']}\\\")\"\r\n\r\n# Search repos\r\ncurl -s \\\r\n  \"https:\u002F\u002Fapi.github.com\u002Fsearch\u002Frepositories?q=machine+learning+language:python&sort=stars&per_page=10\" \\\r\n  | python3 -c \"\r\nimport sys, json\r\nfor r in json.load(sys.stdin)['items']:\r\n    print(f\\\"  {r['full_name']:40}  ★{r['stargazers_count']:6}  {r['description'][:60] if r['description'] else ''}\\\")\"\r\n```\r\n\r\n## 5. Repository Settings\r\n\r\n**With gh:**\r\n\r\n```bash\r\ngh repo edit --description \"Updated description\" --visibility public\r\ngh repo edit --enable-wiki=false --enable-issues=true\r\ngh repo edit --default-branch main\r\ngh repo edit --add-topic \"machine-learning,python\"\r\ngh repo edit --enable-auto-merge\r\n```\r\n\r\n**With curl:**\r\n\r\n```bash\r\ncurl -s -X PATCH \\\r\n  -H \"Authorization: token $GITHUB_TOKEN\" \\\r\n  https:\u002F\u002Fapi.github.com\u002Frepos\u002F$OWNER\u002F$REPO \\\r\n  -d '{\r\n    \"description\": \"Updated description\",\r\n    \"has_wiki\": false,\r\n    \"has_issues\": true,\r\n    \"allow_auto_merge\": true\r\n  }'\r\n\r\n# Update topics\r\ncurl -s -X PUT \\\r\n  -H \"Authorization: token $GITHUB_TOKEN\" \\\r\n  -H \"Accept: application\u002Fvnd.github.mercy-preview+json\" \\\r\n  https:\u002F\u002Fapi.github.com\u002Frepos\u002F$OWNER\u002F$REPO\u002Ftopics \\\r\n  -d '{\"names\": [\"machine-learning\", \"python\", \"automation\"]}'\r\n```\r\n\r\n## 6. Branch Protection\r\n\r\n```bash\r\n# View current protection\r\ncurl -s \\\r\n  -H \"Authorization: token $GITHUB_TOKEN\" \\\r\n  https:\u002F\u002Fapi.github.com\u002Frepos\u002F$OWNER\u002F$REPO\u002Fbranches\u002Fmain\u002Fprotection\r\n\r\n# Set up branch protection\r\ncurl -s -X PUT \\\r\n  -H \"Authorization: token $GITHUB_TOKEN\" \\\r\n  https:\u002F\u002Fapi.github.com\u002Frepos\u002F$OWNER\u002F$REPO\u002Fbranches\u002Fmain\u002Fprotection \\\r\n  -d '{\r\n    \"required_status_checks\": {\r\n      \"strict\": true,\r\n      \"contexts\": [\"ci\u002Ftest\", \"ci\u002Flint\"]\r\n    },\r\n    \"enforce_admins\": false,\r\n    \"required_pull_request_reviews\": {\r\n      \"required_approving_review_count\": 1\r\n    },\r\n    \"restrictions\": null\r\n  }'\r\n```\r\n\r\n## 7. Secrets Management (GitHub Actions)\r\n\r\n**With gh:**\r\n\r\n```bash\r\ngh secret set API_KEY --body \"your-secret-value\"\r\ngh secret set SSH_KEY \u003C ~\u002F.ssh\u002Fid_rsa\r\ngh secret list\r\ngh secret delete API_KEY\r\n```\r\n\r\n**With curl:**\r\n\r\nSecrets require encryption with the repo's public key — more involved via API:\r\n\r\n```bash\r\n# Get the repo's public key for encrypting secrets\r\ncurl -s \\\r\n  -H \"Authorization: token $GITHUB_TOKEN\" \\\r\n  https:\u002F\u002Fapi.github.com\u002Frepos\u002F$OWNER\u002F$REPO\u002Factions\u002Fsecrets\u002Fpublic-key\r\n\r\n# Encrypt and set (requires Python with PyNaCl)\r\npython3 -c \"\r\nfrom base64 import b64encode\r\nfrom nacl import encoding, public\r\nimport json, sys\r\n\r\n# Get the public key\r\nkey_id = '\u003Ckey_id_from_above>'\r\npublic_key = '\u003Cbase64_key_from_above>'\r\n\r\n# Encrypt\r\nsealed = public.SealedBox(\r\n    public.PublicKey(public_key.encode('utf-8'), encoding.Base64Encoder)\r\n).encrypt('your-secret-value'.encode('utf-8'))\r\nprint(json.dumps({\r\n    'encrypted_value': b64encode(sealed).decode('utf-8'),\r\n    'key_id': key_id\r\n}))\"\r\n\r\n# Then PUT the encrypted secret\r\ncurl -s -X PUT \\\r\n  -H \"Authorization: token $GITHUB_TOKEN\" \\\r\n  https:\u002F\u002Fapi.github.com\u002Frepos\u002F$OWNER\u002F$REPO\u002Factions\u002Fsecrets\u002FAPI_KEY \\\r\n  -d '\u003Coutput from python script above>'\r\n\r\n# List secrets (names only, values hidden)\r\ncurl -s \\\r\n  -H \"Authorization: token $GITHUB_TOKEN\" \\\r\n  https:\u002F\u002Fapi.github.com\u002Frepos\u002F$OWNER\u002F$REPO\u002Factions\u002Fsecrets \\\r\n  | python3 -c \"\r\nimport sys, json\r\nfor s in json.load(sys.stdin)['secrets']:\r\n    print(f\\\"  {s['name']:30}  updated: {s['updated_at']}\\\")\"\r\n```\r\n\r\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.\r\n\r\n## 8. Releases\r\n\r\n**With gh:**\r\n\r\n```bash\r\ngh release create v1.0.0 --title \"v1.0.0\" --generate-notes\r\ngh release create v2.0.0-rc1 --draft --prerelease --generate-notes\r\ngh release create v1.0.0 .\u002Fdist\u002Fbinary --title \"v1.0.0\" --notes \"Release notes\"\r\ngh release list\r\ngh release download v1.0.0 --dir .\u002Fdownloads\r\n```\r\n\r\n**With curl:**\r\n\r\n```bash\r\n# Create a release\r\ncurl -s -X POST \\\r\n  -H \"Authorization: token $GITHUB_TOKEN\" \\\r\n  https:\u002F\u002Fapi.github.com\u002Frepos\u002F$OWNER\u002F$REPO\u002Freleases \\\r\n  -d '{\r\n    \"tag_name\": \"v1.0.0\",\r\n    \"name\": \"v1.0.0\",\r\n    \"body\": \"## Changelog\\n- Feature A\\n- Bug fix B\",\r\n    \"draft\": false,\r\n    \"prerelease\": false,\r\n    \"generate_release_notes\": true\r\n  }'\r\n\r\n# List releases\r\ncurl -s \\\r\n  -H \"Authorization: token $GITHUB_TOKEN\" \\\r\n  https:\u002F\u002Fapi.github.com\u002Frepos\u002F$OWNER\u002F$REPO\u002Freleases \\\r\n  | python3 -c \"\r\nimport sys, json\r\nfor r in json.load(sys.stdin):\r\n    tag = r.get('tag_name', 'no tag')\r\n    print(f\\\"  {tag:15}  {r['name']:30}  {'draft' if r['draft'] else 'published'}\\\")\"\r\n\r\n# Upload a release asset (binary file)\r\nRELEASE_ID=\u003Cid_from_create_response>\r\ncurl -s -X POST \\\r\n  -H \"Authorization: token $GITHUB_TOKEN\" \\\r\n  -H \"Content-Type: application\u002Foctet-stream\" \\\r\n  \"https:\u002F\u002Fuploads.github.com\u002Frepos\u002F$OWNER\u002F$REPO\u002Freleases\u002F$RELEASE_ID\u002Fassets?name=binary-amd64\" \\\r\n  --data-binary @.\u002Fdist\u002Fbinary-amd64\r\n```\r\n\r\n## 9. GitHub Actions Workflows\r\n\r\n**With gh:**\r\n\r\n```bash\r\ngh workflow list\r\ngh run list --limit 10\r\ngh run view \u003CRUN_ID>\r\ngh run view \u003CRUN_ID> --log-failed\r\ngh run rerun \u003CRUN_ID>\r\ngh run rerun \u003CRUN_ID> --failed\r\ngh workflow run ci.yml --ref main\r\ngh workflow run deploy.yml -f environment=staging\r\n```\r\n\r\n**With curl:**\r\n\r\n```bash\r\n# List workflows\r\ncurl -s \\\r\n  -H \"Authorization: token $GITHUB_TOKEN\" \\\r\n  https:\u002F\u002Fapi.github.com\u002Frepos\u002F$OWNER\u002F$REPO\u002Factions\u002Fworkflows \\\r\n  | python3 -c \"\r\nimport sys, json\r\nfor w in json.load(sys.stdin)['workflows']:\r\n    print(f\\\"  {w['id']:10}  {w['name']:30}  {w['state']}\\\")\"\r\n\r\n# List recent runs\r\ncurl -s \\\r\n  -H \"Authorization: token $GITHUB_TOKEN\" \\\r\n  \"https:\u002F\u002Fapi.github.com\u002Frepos\u002F$OWNER\u002F$REPO\u002Factions\u002Fruns?per_page=10\" \\\r\n  | python3 -c \"\r\nimport sys, json\r\nfor r in json.load(sys.stdin)['workflow_runs']:\r\n    print(f\\\"  Run {r['id']}  {r['name']:30}  {r['conclusion'] or r['status']}\\\")\"\r\n\r\n# Download failed run logs\r\nRUN_ID=\u003Crun_id>\r\ncurl -s -L \\\r\n  -H \"Authorization: token $GITHUB_TOKEN\" \\\r\n  https:\u002F\u002Fapi.github.com\u002Frepos\u002F$OWNER\u002F$REPO\u002Factions\u002Fruns\u002F$RUN_ID\u002Flogs \\\r\n  -o \u002Ftmp\u002Fci-logs.zip\r\ncd \u002Ftmp && unzip -o ci-logs.zip -d ci-logs\r\n\r\n# Re-run a failed workflow\r\ncurl -s -X POST \\\r\n  -H \"Authorization: token $GITHUB_TOKEN\" \\\r\n  https:\u002F\u002Fapi.github.com\u002Frepos\u002F$OWNER\u002F$REPO\u002Factions\u002Fruns\u002F$RUN_ID\u002Frerun\r\n\r\n# Re-run only failed jobs\r\ncurl -s -X POST \\\r\n  -H \"Authorization: token $GITHUB_TOKEN\" \\\r\n  https:\u002F\u002Fapi.github.com\u002Frepos\u002F$OWNER\u002F$REPO\u002Factions\u002Fruns\u002F$RUN_ID\u002Frerun-failed-jobs\r\n\r\n# Trigger a workflow manually (workflow_dispatch)\r\nWORKFLOW_ID=\u003Cworkflow_id_or_filename>\r\ncurl -s -X POST \\\r\n  -H \"Authorization: token $GITHUB_TOKEN\" \\\r\n  https:\u002F\u002Fapi.github.com\u002Frepos\u002F$OWNER\u002F$REPO\u002Factions\u002Fworkflows\u002F$WORKFLOW_ID\u002Fdispatches \\\r\n  -d '{\"ref\": \"main\", \"inputs\": {\"environment\": \"staging\"}}'\r\n```\r\n\r\n## 10. Gists\r\n\r\n**With gh:**\r\n\r\n```bash\r\ngh gist create script.py --public --desc \"Useful script\"\r\ngh gist list\r\n```\r\n\r\n**With curl:**\r\n\r\n```bash\r\n# Create a gist\r\ncurl -s -X POST \\\r\n  -H \"Authorization: token $GITHUB_TOKEN\" \\\r\n  https:\u002F\u002Fapi.github.com\u002Fgists \\\r\n  -d '{\r\n    \"description\": \"Useful script\",\r\n    \"public\": true,\r\n    \"files\": {\r\n      \"script.py\": {\"content\": \"print(\\\"hello\\\")\"}\r\n    }\r\n  }'\r\n\r\n# List your gists\r\ncurl -s \\\r\n  -H \"Authorization: token $GITHUB_TOKEN\" \\\r\n  https:\u002F\u002Fapi.github.com\u002Fgists \\\r\n  | python3 -c \"\r\nimport sys, json\r\nfor g in json.load(sys.stdin):\r\n    files = ', '.join(g['files'].keys())\r\n    print(f\\\"  {g['id']}  {g['description'] or '(no desc)':40}  {files}\\\")\"\r\n```\r\n\r\n## Quick Reference Table\r\n\r\n| Action | gh | git + curl |\r\n|--------|-----|-----------|\r\n| Clone | `gh repo clone o\u002Fr` | `git clone https:\u002F\u002Fgithub.com\u002Fo\u002Fr.git` |\r\n| Create repo | `gh repo create name --public` | `curl POST \u002Fuser\u002Frepos` |\r\n| Fork | `gh repo fork o\u002Fr --clone` | `curl POST \u002Frepos\u002Fo\u002Fr\u002Fforks` + `git clone` |\r\n| Repo info | `gh repo view o\u002Fr` | `curl GET \u002Frepos\u002Fo\u002Fr` |\r\n| Edit settings | `gh repo edit --...` | `curl PATCH \u002Frepos\u002Fo\u002Fr` |\r\n| Create release | `gh release create v1.0` | `curl POST \u002Frepos\u002Fo\u002Fr\u002Freleases` |\r\n| List workflows | `gh workflow list` | `curl GET \u002Frepos\u002Fo\u002Fr\u002Factions\u002Fworkflows` |\r\n| Rerun CI | `gh run rerun ID` | `curl POST \u002Frepos\u002Fo\u002Fr\u002Factions\u002Fruns\u002FID\u002Frerun` |\r\n| Set secret | `gh secret set KEY` | `curl PUT \u002Frepos\u002Fo\u002Fr\u002Factions\u002Fsecrets\u002FKEY` (+ encryption) |\r\n",{"name":5,"author":44,"license":15,"version":45,"metadata":46,"description":7},"Hermes Agent","1.1.0",{"hermes":47},{"tags":48,"related_skills":55},[49,50,51,52,53,54],"GitHub","Repositories","Git","Releases","Secrets","Configuration",[56,57,58],"github-auth","github-pr-workflow","github-issues","main","0d1434f89f4bc6b07e9d272accd8c1013768820f","archive\u002Fskill-md-reviewed\u002Fsha256\u002Fcc\u002Fcc9210c3ce36ca67b58c569cfff16588a3db537792aa02b5192e327d453dd569",0,"https:\u002F\u002Fgithub.com\u002Fzapabob\u002FSkills","https:\u002F\u002Fgithub.com\u002Fzapabob","The Open University of JAPAN　2019-now\r\n\r\nTokyo University of Science　2007-2010","2026-10-26 16:29:01",{"source":8,"skillName":5,"commands":68,"prompt":78,"zipAvailable":79},[69,72,75],{"tool":70,"command":71},"npx","npx skills add zapabob\u002FSkills --skill github-repo-management",{"tool":73,"command":74},"bunx","bunx skills add zapabob\u002FSkills --skill github-repo-management",{"tool":76,"command":77},"pnpm","pnpm dlx skills add zapabob\u002FSkills --skill github-repo-management","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fzapabob\u002FSkills\u002Fblob\u002Fmain\u002Farchive\u002Fskill-md-reviewed\u002Fsha256\u002Fcc\u002Fcc9210c3ce36ca67b58c569cfff16588a3db537792aa02b5192e327d453dd569\u002FSKILL.md",true,[],[82,116,150,177,204,220],{"skillNo":83,"name":84,"nameZh":6,"description":85,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":86,"categories":87,"keywords":101,"publishedAt":39},"01M6GJTE1GESGGF9K028Y7753E","xurl","X\u002FTwitter via xurl CLI: post, search, DM, media, v2 API.","https:\u002F\u002Fgithub.com\u002Fzapabob\u002FSkills\u002Fblob\u002Fmain\u002Fregistry\u002Fskills\u002Fxurl\u002Fvariants\u002Fhermes-agent\u002FSKILL.md",[88,93,96],{"categoryNo":89,"categoryName":90,"taxonomyType":91,"taxonomyTypeDesc":92},"01JBSEEDCAT000000000000010","后端与接口","SCENARIO","使用场景",{"categoryNo":94,"categoryName":95,"taxonomyType":91,"taxonomyTypeDesc":92},"01JBSEEDCAT000000000000023","Skill与智能体开发",{"categoryNo":97,"categoryName":98,"taxonomyType":99,"taxonomyTypeDesc":100},"01JBSEEDCAT000000000000030","开发工程师","PROFESSION","适用职业",[84,102,103,24,19,104,105,106,107,108,109,31,110,111,112,113,59,114,25,115],"openclaw","macos","linux","windows","official","search","https","social-media","Media","hermes","hermes agent","twitter","social","post",{"skillNo":117,"name":118,"nameZh":6,"description":119,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":120,"categories":121,"keywords":133,"publishedAt":39},"01M6GJT8S1PXQ8WPXT1HSNBWH2","writing-plans","Write implementation plans: bite-sized tasks, paths, code.","https:\u002F\u002Fgithub.com\u002Fzapabob\u002FSkills\u002Fblob\u002Fmain\u002Fregistry\u002Fskills\u002Fwriting-plans\u002Fvariants\u002Fhermes-agent\u002FSKILL.md",[122,125,128,129,130],{"categoryNo":123,"categoryName":124,"taxonomyType":91,"taxonomyTypeDesc":92},"01JBSEEDCAT000000000000015","视觉设计",{"categoryNo":126,"categoryName":127,"taxonomyType":91,"taxonomyTypeDesc":92},"01JBSEEDCAT000000000000018","写作与文案",{"categoryNo":94,"categoryName":95,"taxonomyType":91,"taxonomyTypeDesc":92},{"categoryNo":97,"categoryName":98,"taxonomyType":99,"taxonomyTypeDesc":100},{"categoryNo":131,"categoryName":132,"taxonomyType":99,"taxonomyTypeDesc":100},"01JBSEEDCAT000000000000036","内容创作者",[134,135,136,137,103,138,104,38,105,139,140,141,142,143,144,145,146,147,148,149],"writing","writing plans","plans","design","review","documentation","tasks","development","code","planning","code-review","subagent","write","superpowers","paths","test-driven-development",{"skillNo":151,"name":152,"nameZh":6,"description":153,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":154,"categories":155,"keywords":159,"publishedAt":39},"01M6GJST0H5X7WHBJ3BZK0DVKH","whisper","OpenAI's general-purpose speech recognition model. Supports 99 languages, transcription, translation to English, and language identification. Six model sizes from tiny (39M params) to large (1550M params). Use for speech-to-text, podcast transcription, or multilingual audio processing. Best for robust, multilingual ASR.","https:\u002F\u002Fgithub.com\u002Fzapabob\u002FSkills\u002Fblob\u002Fmain\u002Fregistry\u002Fskills\u002Fwhisper\u002Fvariants\u002Fhermes-agent-optional\u002FSKILL.md",[156],{"categoryNo":157,"categoryName":158,"taxonomyType":91,"taxonomyTypeDesc":92},"01JBSEEDCAT000000000000016","图像与多媒体",[152,103,104,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176],"openai","speech","multimodal","Transformers","ASR","Audio","text","model","speech recognition","use","general","multilingual","translation","english","identification","processing","Audio Processing",{"skillNo":178,"name":179,"nameZh":6,"description":180,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":181,"categories":182,"keywords":186,"publishedAt":39},"01M6GJSMRQ8EETZTYMG72P70EA","weights-and-biases","W&B: log ML experiments, sweeps, model registry, dashboards.","https:\u002F\u002Fgithub.com\u002Fzapabob\u002FSkills\u002Fblob\u002Fmain\u002Fregistry\u002Fskills\u002Fweights-and-biases\u002Fvariants\u002Fhermes-agent\u002FSKILL.md",[183],{"categoryNo":184,"categoryName":185,"taxonomyType":91,"taxonomyTypeDesc":92},"01JBSEEDCAT000000000000013","分析与可视化",[187,103,188,189,105,190,191,192,193,194,195,167,196,197,198,199,200,201,202,203],"weights and biases","tensorflow","experiments","pytorch","visualization","registry","real-time","tuning","dashboards","experiment","log","time","Experiment Tracking","Model Registry","Hyperparameter Tuning","WandB","Real-Time Visualization",{"skillNo":205,"name":206,"nameZh":6,"description":207,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":208,"categories":209,"keywords":211,"publishedAt":39},"01M6GJS19KDPRY112JTR326S06","watchers","Poll RSS, JSON APIs, and GitHub with watermark dedup.","https:\u002F\u002Fgithub.com\u002Fzapabob\u002FSkills\u002Fblob\u002Fmain\u002Fregistry\u002Fskills\u002Fwatchers\u002Fvariants\u002Fhermes-agent-optional\u002FSKILL.md",[210],{"categoryNo":94,"categoryName":95,"taxonomyType":91,"taxonomyTypeDesc":92},[206,103,212,19,104,213,214,215,216,217,218,111,112,219,23],"terminal","automation","http","monitoring","cron","json","rss","devops",{"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":39},"01M6GJRHJD2A6Q830SWF9W48BC","serving-llms-vllm","vLLM: high-throughput LLM serving, OpenAI API, quantization.","https:\u002F\u002Fgithub.com\u002Fzapabob\u002FSkills\u002Fblob\u002Fmain\u002Fregistry\u002Fskills\u002Fvllm\u002Fvariants\u002Fhermes-agent\u002FSKILL.md",[226,227],{"categoryNo":89,"categoryName":90,"taxonomyType":91,"taxonomyTypeDesc":92},{"categoryNo":97,"categoryName":98,"taxonomyType":99,"taxonomyTypeDesc":100},[229,230,231,104,232,160,233,234,235,163,236,31,237,238,239,240,241,242,243,244],"llms","vLLM","serving llms vllm","research","openai api","tensor","Inference Serving","Production","llm serving","High Throughput","PagedAttention","Continuous Batching","Quantization","Tensor Parallelism","high-throughput","throughput"]