[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6F308SC285Y5BMB7V51Q493":3,"skill-same:01M6F308SC285Y5BMB7V51Q493":57},{"skillNo":4,"name":5,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":11,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":15,"categories":16,"keywords":25,"publishedAt":30,"linkOnly":31,"markdownContent":32,"markdownBody":32,"frontMatter":33,"refName":34,"commitSha":35,"skillDirectory":36,"forksCount":37,"repositoryHtmlUrl":38,"repositoryHomepageUrl":39,"ownerHtmlUrl":40,"ownerBlogUrl":6,"ownerDescription":41,"updatedAt":42,"install":43,"resources":56},"01M6F308SC285Y5BMB7V51Q493","github-actions-skill",null,"ComeOnOliver\u002Fskillshub","ComeOnOliver","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F43215937?v=4","01M6E5JNFECJAAVFE0W7SMWWD2","Haoran Shu","01M6E5JNNDQS7AJZDYFQ8TPZCK",66,"MIT","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fandrewneilson\u002Fgithub-actions-skill\u002Fgithub-actions-skill\u002FSKILL.md",[17,22],{"categoryNo":18,"categoryName":19,"taxonomyType":20,"taxonomyTypeDesc":21},"01JBSEEDCAT000000000000011","运维与部署","SCENARIO","使用场景",{"categoryNo":23,"categoryName":24,"taxonomyType":20,"taxonomyTypeDesc":21},"01JBSEEDCAT000000000000023","Skill与智能体开发",[26,27,28,29],"github","actions","github actions","github actions skill","2026-11-10 10:12:30",false,"# GitHub Actions Skill\n\nThis skill helps write and modify GitHub Actions workflows and custom actions.\n\n## Workflow Basics\n\nWorkflows are YAML files stored in `.github\u002Fworkflows\u002F`. They define automated processes triggered by events.\n\n### Minimal Workflow Structure\n\n```yaml\nname: CI                          # Optional: Display name\non: push                          # Trigger event(s)\njobs:\n  build:                          # Job ID (must be unique)\n    runs-on: ubuntu-latest        # Runner environment\n    steps:\n      - uses: actions\u002Fcheckout@v5 # Use an action\n      - run: echo \"Hello\"         # Run a command\n```\n\n## Triggers (on:)\n\n### Common Events\n\n```yaml\non: push                              # Any push\non: [push, pull_request]              # Multiple events\non:\n  push:\n    branches: [main, 'releases\u002F**']   # Branch filter\n    paths: ['src\u002F**']                 # Path filter\n  pull_request:\n    types: [opened, synchronize]      # Activity types\n  workflow_dispatch:                  # Manual trigger\n    inputs:\n      environment:\n        description: 'Deploy target'\n        required: true\n        type: choice\n        options: [dev, staging, prod]\n  schedule:\n    - cron: '0 0 * * *'               # Daily at midnight UTC\n```\n\n### Key Events Reference\n\n| Event | Use Case |\n|-------|----------|\n| `push` | Commits pushed to branches\u002Ftags |\n| `pull_request` | PR opened, updated, closed |\n| `pull_request_target` | PR from fork (runs in base context) |\n| `workflow_dispatch` | Manual trigger with inputs |\n| `workflow_call` | Reusable workflow |\n| `schedule` | Cron-based scheduling |\n| `release` | Release published\u002Fcreated |\n| `workflow_run` | After another workflow completes |\n\n## Jobs\n\n### Job Dependencies and Outputs\n\n```yaml\njobs:\n  build:\n    runs-on: ubuntu-latest\n    outputs:\n      version: ${{ steps.version.outputs.value }}\n    steps:\n      - id: version\n        run: echo \"value=1.0.0\" >> \"$GITHUB_OUTPUT\"\n\n  deploy:\n    needs: build                      # Depends on build job\n    runs-on: ubuntu-latest\n    steps:\n      - run: echo \"Deploying ${{ needs.build.outputs.version }}\"\n```\n\n### Job Conditions\n\n```yaml\njobs:\n  deploy:\n    if: github.ref == 'refs\u002Fheads\u002Fmain'\n    runs-on: ubuntu-latest\n```\n\n### Matrix Strategy\n\n```yaml\njobs:\n  test:\n    strategy:\n      matrix:\n        os: [ubuntu-latest, windows-latest]\n        node: [18, 20]\n        exclude:\n          - os: windows-latest\n            node: 18\n        include:\n          - os: ubuntu-latest\n            node: 20\n            coverage: true\n    runs-on: ${{ matrix.os }}\n    steps:\n      - uses: actions\u002Fsetup-node@v4\n        with:\n          node-version: ${{ matrix.node }}\n```\n\n## Steps\n\n### Using Actions\n\n```yaml\nsteps:\n  - uses: actions\u002Fcheckout@v5           # Public action (owner\u002Frepo@ref)\n  - uses: actions\u002Fcheckout@8f4b7f84...  # Pin to commit SHA (most secure)\n  - uses: .\u002F.github\u002Factions\u002Fmy-action   # Local action\n  - uses: docker:\u002F\u002Falpine:3.8           # Docker image\n```\n\n### Running Commands\n\n```yaml\nsteps:\n  - run: npm install\n  - run: |\n      echo \"Multi-line\"\n      echo \"commands\"\n    shell: bash\n    working-directory: .\u002Fapp\n```\n\n### Step Conditions\n\n```yaml\nsteps:\n  - run: echo \"Always runs\"\n    if: always()\n\n  - run: echo \"On failure\"\n    if: failure()\n\n  - run: echo \"Main branch only\"\n    if: github.ref == 'refs\u002Fheads\u002Fmain'\n\n  - run: echo \"Not cancelled\"\n    if: ${{ !cancelled() }}\n```\n\n## Expressions and Contexts\n\n### Expression Syntax\n\nUse `${{ expression }}` to evaluate expressions. In `if:` conditions, `${{ }}` is optional.\n\n### Common Contexts\n\n| Context | Description |\n|---------|-------------|\n| `github.*` | Workflow run info (ref, sha, actor, repository) |\n| `env.*` | Environment variables |\n| `vars.*` | Repository\u002Forg variables |\n| `secrets.*` | Secrets |\n| `steps.\u003Cid>.outputs.*` | Step outputs |\n| `needs.\u003Cjob>.outputs.*` | Job outputs |\n| `matrix.*` | Matrix values |\n| `runner.*` | Runner info (os, arch) |\n\n### Useful Expressions\n\n```yaml\n# Context access\n${{ github.event_name }}\n${{ github.ref_name }}\n${{ github.sha }}\n${{ github.actor }}\n\n# Conditionals\n${{ github.ref == 'refs\u002Fheads\u002Fmain' }}\n${{ contains(github.event.head_commit.message, '[skip ci]') }}\n${{ startsWith(github.ref, 'refs\u002Ftags\u002F') }}\n\n# Default values\n${{ github.head_ref || github.run_id }}\n\n# JSON manipulation\n${{ toJSON(github.event) }}\n${{ fromJSON(needs.job1.outputs.matrix) }}\n```\n\n### Built-in Functions\n\n| Function | Example |\n|----------|---------|\n| `contains(search, item)` | `contains(github.event.issue.labels.*.name, 'bug')` |\n| `startsWith(str, value)` | `startsWith(github.ref, 'refs\u002Ftags\u002F')` |\n| `endsWith(str, value)` | `endsWith(github.repository, '-demo')` |\n| `format(str, ...)` | `format('Hello {0}', github.actor)` |\n| `join(array, sep)` | `join(matrix.os, ', ')` |\n| `toJSON(value)` | `toJSON(steps.test.outputs)` |\n| `fromJSON(str)` | `fromJSON(needs.setup.outputs.matrix)` |\n| `hashFiles(path)` | `hashFiles('**\u002Fpackage-lock.json')` |\n\n## Secrets and Variables\n\n### Accessing Secrets\n\n```yaml\nsteps:\n  - run: echo \"Token: $TOKEN\"\n    env:\n      TOKEN: ${{ secrets.MY_TOKEN }}\n\n  - uses: some-action@v1\n    with:\n      api-key: ${{ secrets.API_KEY }}\n```\n\n### Environment Variables\n\n```yaml\nenv:                              # Workflow-level\n  NODE_ENV: production\n\njobs:\n  build:\n    env:                          # Job-level\n      CI: true\n    steps:\n      - run: echo $MY_VAR\n        env:                      # Step-level\n          MY_VAR: value\n```\n\n### Setting Outputs\n\n```yaml\nsteps:\n  - id: set-output\n    run: echo \"result=success\" >> \"$GITHUB_OUTPUT\"\n\n  - run: echo \"${{ steps.set-output.outputs.result }}\"\n```\n\n## Runners\n\nCommon labels: `ubuntu-latest`, `windows-latest`, `macos-latest`. Self-hosted: `runs-on: [self-hosted, linux, x64]`. See `references\u002FRUNNERS.md` for full specs.\n\n## Permissions\n\n```yaml\npermissions:\n  contents: read\n  pull-requests: write\n  id-token: write         # Required for OIDC\n\n# Or disable all\npermissions: {}\n```\n\n## Concurrency\n\n```yaml\nconcurrency:\n  group: ${{ github.workflow }}-${{ github.ref }}\n  cancel-in-progress: true\n```\n\n## Artifacts and Caching\n\n### Upload\u002FDownload Artifacts\n\n```yaml\n- uses: actions\u002Fupload-artifact@v4\n  with:\n    name: build-output\n    path: dist\u002F\n\n- uses: actions\u002Fdownload-artifact@v4\n  with:\n    name: build-output\n```\n\n### Dependency Caching\n\n```yaml\n- uses: actions\u002Fcache@v4\n  with:\n    path: ~\u002F.npm\n    key: ${{ runner.os }}-npm-${{ hashFiles('**\u002Fpackage-lock.json') }}\n    restore-keys: |\n      ${{ runner.os }}-npm-\n```\n\n## Environments\n\n```yaml\njobs:\n  deploy:\n    environment:\n      name: production\n      url: https:\u002F\u002Fexample.com\n    runs-on: ubuntu-latest\n```\n\n## Reusable Workflows\n\n### Calling a Reusable Workflow\n\n```yaml\njobs:\n  call-workflow:\n    uses: owner\u002Frepo\u002F.github\u002Fworkflows\u002Freusable.yml@main\n    with:\n      input1: value\n    secrets:\n      token: ${{ secrets.TOKEN }}\n```\n\n### Creating a Reusable Workflow\n\n```yaml\non:\n  workflow_call:\n    inputs:\n      environment:\n        required: true\n        type: string\n    secrets:\n      token:\n        required: true\n\njobs:\n  deploy:\n    runs-on: ubuntu-latest\n    steps:\n      - run: echo \"Deploying to ${{ inputs.environment }}\"\n        env:\n          TOKEN: ${{ secrets.token }}\n```\n\n## Common Patterns\n\n### Checkout and Setup\n\n```yaml\nsteps:\n  - uses: actions\u002Fcheckout@v5\n  - uses: actions\u002Fsetup-node@v4\n    with:\n      node-version: '20'\n      cache: 'npm'\n  - run: npm ci\n```\n\n### Conditional on File Changes\n\n```yaml\non:\n  push:\n    paths:\n      - 'src\u002F**'\n      - '!src\u002F**\u002F*.md'\n```\n\n### Run on Tag Push\n\n```yaml\non:\n  push:\n    tags:\n      - 'v*'\n```\n\n## Workflow Commands Quick Reference\n\n```bash\n# Step outputs (use in later steps via steps.\u003Cid>.outputs.\u003Cname>)\necho \"name=value\" >> \"$GITHUB_OUTPUT\"\n\n# Set environment variable for subsequent steps\necho \"VAR_NAME=value\" >> \"$GITHUB_ENV\"\n\n# Job summary (supports markdown)\necho \"### Build Results :rocket:\" >> \"$GITHUB_STEP_SUMMARY\"\necho \"| Test | Status |\" >> \"$GITHUB_STEP_SUMMARY\"\necho \"| --- | --- |\" >> \"$GITHUB_STEP_SUMMARY\"\necho \"| Unit | Passed |\" >> \"$GITHUB_STEP_SUMMARY\"\n\n# Add to PATH for subsequent steps\necho \"\u002Fpath\u002Fto\u002Ftool\" >> \"$GITHUB_PATH\"\n\n# Log annotations\necho \"::error file=app.js,line=10::Something failed\"\necho \"::warning::Deprecation notice\"\necho \"::notice::FYI message\"\n\n# Mask a value from logs\necho \"::add-mask::$SECRET_VALUE\"\n```\n\nSee `references\u002FWORKFLOW-COMMANDS.md` for full details including `::group::`, `::debug::`, multiline values, and GITHUB_STATE.\n\n## Key Limits\n\n| Limit | Value |\n|-------|-------|\n| Workflow run time | 35 days |\n| Job execution time | 6 hours (self-hosted: unlimited) |\n| Matrix combinations | 256 per workflow |\n| Concurrent jobs (Free) | 20 (macOS: 5) |\n| Concurrent jobs (Team\u002FEnterprise) | 60 (macOS: 5) |\n| Workflow file size | 512 KB |\n| Caches total per repo | 10 GB |\n| Artifact retention | 90 days (configurable) |\n| Log retention | 400 days (configurable to 90) |\n\nSee `references\u002FLIMITS.md` for full limits including API rates and storage quotas.\n\n## Troubleshooting\n\n1. **Workflow not triggering**: Check branch\u002Fpath filters, verify file is in `.github\u002Fworkflows\u002F`\n2. **Permission denied**: Add required `permissions:` block\n3. **Secret not found**: Verify secret name matches exactly (case-sensitive)\n4. **Step output empty**: Ensure using `>> \"$GITHUB_OUTPUT\"` (not deprecated set-output)\n5. **Matrix job failing**: Check `exclude`\u002F`include` syntax and values\n6. **Debug logging**: Re-run workflow with `ACTIONS_RUNNER_DEBUG: true` or `ACTIONS_STEP_DEBUG: true`\n\n## References\n\nCore:\n- `references\u002FWORKFLOW-SYNTAX.md` - Full workflow YAML syntax\n- `references\u002FEXPRESSIONS.md` - Contexts, functions, operators\n- `references\u002FTRIGGERS.md` - Event types and filtering\n- `references\u002FWORKFLOW-COMMANDS.md` - GITHUB_OUTPUT, GITHUB_ENV, annotations, job summaries\n- `references\u002FLIMITS.md` - Time limits, quotas, rate limits by plan\n\nBuild and deploy:\n- `references\u002FACTIONS.md` - Creating custom actions (JS, Docker, composite)\n- `references\u002FRUNNERS.md` - Runner specs, self-hosted configuration\n- `references\u002FPATTERNS.md` - Common workflow patterns\n- `references\u002FLANGUAGE-CI.md` - CI setup per language (Node, Python, Java, Go, Rust, Ruby, .NET, Swift)\n- `references\u002FPUBLISHING.md` - Publish to npm, PyPI, Docker Hub, GHCR, Maven Central\n- `references\u002FCLOUD-DEPLOYMENTS.md` - Deploy to AWS, Azure, GCP with OIDC\n\nSecurity and ops:\n- `references\u002FSECURITY.md` - Secrets, OIDC (AWS\u002FAzure\u002FGCP), attestations, script injection\n- `references\u002FMIGRATION.md` - Migrate from Jenkins, Travis CI, CircleCI, GitLab, Azure DevOps\n- `references\u002FENTERPRISE.md` - ARC, runner groups, larger runners, billing, private networking\n",{},"main","def8531e65114c0fca8fb8551c1871ee0eed705c","skills\u002Fandrewneilson\u002Fgithub-actions-skill\u002Fgithub-actions-skill",24,"https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub","https:\u002F\u002Fskillshub.wtf","https:\u002F\u002Fgithub.com\u002FComeOnOliver","AI & Blockchain Engineer\r\n","2026-06-24 22:07:19",{"source":7,"skillName":5,"commands":44,"prompt":54,"zipAvailable":55},[45,48,51],{"tool":46,"command":47},"npx","npx skills add ComeOnOliver\u002Fskillshub --skill github-actions-skill",{"tool":49,"command":50},"bunx","bunx skills add ComeOnOliver\u002Fskillshub --skill github-actions-skill",{"tool":52,"command":53},"pnpm","pnpm dlx skills add ComeOnOliver\u002Fskillshub --skill github-actions-skill","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fandrewneilson\u002Fgithub-actions-skill\u002Fgithub-actions-skill\u002FSKILL.md",true,[],[58,68,78,87,93,100],{"skillNo":59,"name":60,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":11,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":61,"categories":62,"keywords":64,"publishedAt":30},"01M6FKJN13GMG4KY57J3QD8GY5","model-hierarchy-skill","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzscole\u002Fmodel-hierarchy-skill\u002Fmodel-hierarchy-skill\u002FSKILL.md",[63],{"categoryNo":23,"categoryName":24,"taxonomyType":20,"taxonomyTypeDesc":21},[65,66,67],"model","model hierarchy","model hierarchy skill",{"skillNo":69,"name":70,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":11,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":71,"categories":72,"keywords":74,"publishedAt":30},"01M6FKJJJ6GCAMR4PPPRD12M5X","zoom-mcp","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzoom\u002Fskills\u002Fzoom-mcp\u002FSKILL.md",[73],{"categoryNo":23,"categoryName":24,"taxonomyType":20,"taxonomyTypeDesc":21},[75,76,77],"MCP","zoom","zoom mcp",{"skillNo":79,"name":80,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":11,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":81,"categories":82,"keywords":83,"publishedAt":30},"01M6FKJE3KYT3KPEZMEEHYKA6K","zoom-apps-sdk","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzoom\u002Fskills\u002Fzoom-apps-sdk\u002FSKILL.md",[],[84,85,86,76],"sdk","zoom apps sdk","apps",{"skillNo":88,"name":89,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":11,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":90,"categories":91,"keywords":92,"publishedAt":30},"01M6FKJ9EDH9Q5VWDF8HAJRSP0","windows","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzoom\u002Fskills\u002Fwindows\u002FSKILL.md",[],[89],{"skillNo":94,"name":95,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":11,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":96,"categories":97,"keywords":99,"publishedAt":30},"01M6FKJ666BEEFC3AE9GJ72Q93","whiteboard","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzoom\u002Fskills\u002Fwhiteboard\u002FSKILL.md",[98],{"categoryNo":23,"categoryName":24,"taxonomyType":20,"taxonomyTypeDesc":21},[95],{"skillNo":101,"name":102,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":11,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":103,"categories":104,"keywords":105,"publishedAt":30},"01M6FKJ21WFCDGTJQ2Q91T9DVW","websockets","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzoom\u002Fskills\u002Fwebsockets\u002FSKILL.md",[],[102]]