[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6QEAVDZQRKP05NHQ2AWR3MY":3,"skill-same:01M6QEAVDZQRKP05NHQ2AWR3MY":66},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":16,"categories":17,"keywords":23,"publishedAt":38,"linkOnly":39,"markdownContent":40,"markdownBody":41,"frontMatter":42,"refName":43,"commitSha":44,"skillDirectory":45,"forksCount":46,"repositoryHtmlUrl":47,"repositoryHomepageUrl":48,"ownerHtmlUrl":49,"ownerBlogUrl":6,"ownerDescription":50,"updatedAt":51,"install":52,"resources":65},"01M6QEAVDZQRKP05NHQ2AWR3MY","gx-act",null,"Run GitHub Actions workflows locally with nektos\u002Fact before pushing, so CI failures are caught on the laptop and the PR can be squash-merged on the first remote run.","opencue\u002Fgitguardex","opencue","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F271874627?v=4","01M6QDWWMZFB8A08PDTA8D0VJ3","Opencue","01M6QDWWSJGBEGVPMCEJFWVACT",28,"MIT","https:\u002F\u002Fgithub.com\u002Fopencue\u002Fgitguardex\u002Fblob\u002Fmain\u002Fskills\u002Fgx-act\u002FSKILL.md",[18],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000011","运维与部署","SCENARIO","使用场景",[24,25,26,27,28,29,30,31,32,33,34,35,36,37],"act","gx act","github","workflows","pr","run","actions","ci","github actions","first","squash","remote","with","can","2026-11-10 10:12:30",false,"---\nname: gx-act\ndescription: \"Run GitHub Actions workflows locally with nektos\u002Fact before pushing, so CI failures are caught on the laptop and the PR can be squash-merged on the first remote run.\"\n---\n\n# gx-act — local GitHub Actions\n\nUse whenever a change touches code that would trigger CI on GitHub. Run the workflows locally with `act` first; only push the branch when the local run is green, then squash-merge the PR on GitHub.\n\n## When to invoke\n\n- Before `gx pr open` \u002F `gx pr sync` \u002F `gx branch finish --via-pr`.\n- Before re-pushing after a CI failure.\n- When iterating on `.github\u002Fworkflows\u002F*.yml` itself.\n\n## Install `act`\n\n`act` requires Docker (or Podman). Check the binary:\n\n```sh\ncommand -v act || echo \"act not installed\"\n```\n\nInstall one way:\n\n```sh\n# Linux\u002FmacOS via the upstream installer\ncurl -fsSL https:\u002F\u002Fraw.githubusercontent.com\u002Fnektos\u002Fact\u002Fmaster\u002Finstall.sh | bash -s -- -b \"$HOME\u002F.local\u002Fbin\"\n\n# macOS via Homebrew\nbrew install act\n\n# Arch\nsudo pacman -S act\n\n# Or use the GitHub CLI extension\ngh extension install https:\u002F\u002Fgithub.com\u002Fnektos\u002Fgh-act\n```\n\nUpstream: https:\u002F\u002Fgithub.com\u002Fnektos\u002Fact\n\n## Quick commands\n\n```sh\n# List jobs the local runner would execute for the push event\nact -l\n\n# Run the default push workflows (what GitHub runs on a normal push)\nact push\n\n# Run a specific event\nact pull_request\nact workflow_dispatch -W .github\u002Fworkflows\u002Frelease.yml\n\n# Run a single job\nact -j test\n\n# Pin a runner image (medium is the act default; large matches real GH closer)\nact -P ubuntu-latest=catthehacker\u002Fubuntu:act-latest\n\n# Pass secrets \u002F env without committing them\nact -s GITHUB_TOKEN=\"$GITHUB_TOKEN\" --env-file .env.act\n\n# Reuse containers between runs (faster iteration)\nact --reuse\n```\n\n## Workflow (local CI → squash-merge on GitHub)\n\n1. Implement the change in the agent worktree.\n2. `act -l` to confirm which jobs will fire for the event you care about.\n3. `act push` (or the specific event\u002Fjob) until it is green locally.\n4. `gx branch finish --branch \"\u003Cagent-branch>\" --base main --via-pr --wait-for-merge --cleanup`.\n   - Or `gx pr open` then `gx pr sync --auto-merge --merge-strategy squash` for explicit PR control.\n5. On GitHub: squash-merge once the remote run mirrors the local one.\n\n## Notes\n\n- `act` does not reproduce GitHub-hosted services exactly (no real secrets, different runner image, no concurrency groups). Treat a green `act` run as a strong signal, not a proof — the remote run is still authoritative.\n- Keep `act` config in `.actrc` at the repo root so every agent uses the same runner image.\n- If a workflow uses `GITHUB_TOKEN` for API calls, pass a PAT via `-s GITHUB_TOKEN=...`; do not commit it.\n- Add `.actrc`, `.cache\u002Fact`, and any `act`-specific event payloads to `.gitignore` if they appear.\n","# gx-act — local GitHub Actions\n\nUse whenever a change touches code that would trigger CI on GitHub. Run the workflows locally with `act` first; only push the branch when the local run is green, then squash-merge the PR on GitHub.\n\n## When to invoke\n\n- Before `gx pr open` \u002F `gx pr sync` \u002F `gx branch finish --via-pr`.\n- Before re-pushing after a CI failure.\n- When iterating on `.github\u002Fworkflows\u002F*.yml` itself.\n\n## Install `act`\n\n`act` requires Docker (or Podman). Check the binary:\n\n```sh\ncommand -v act || echo \"act not installed\"\n```\n\nInstall one way:\n\n```sh\n# Linux\u002FmacOS via the upstream installer\ncurl -fsSL https:\u002F\u002Fraw.githubusercontent.com\u002Fnektos\u002Fact\u002Fmaster\u002Finstall.sh | bash -s -- -b \"$HOME\u002F.local\u002Fbin\"\n\n# macOS via Homebrew\nbrew install act\n\n# Arch\nsudo pacman -S act\n\n# Or use the GitHub CLI extension\ngh extension install https:\u002F\u002Fgithub.com\u002Fnektos\u002Fgh-act\n```\n\nUpstream: https:\u002F\u002Fgithub.com\u002Fnektos\u002Fact\n\n## Quick commands\n\n```sh\n# List jobs the local runner would execute for the push event\nact -l\n\n# Run the default push workflows (what GitHub runs on a normal push)\nact push\n\n# Run a specific event\nact pull_request\nact workflow_dispatch -W .github\u002Fworkflows\u002Frelease.yml\n\n# Run a single job\nact -j test\n\n# Pin a runner image (medium is the act default; large matches real GH closer)\nact -P ubuntu-latest=catthehacker\u002Fubuntu:act-latest\n\n# Pass secrets \u002F env without committing them\nact -s GITHUB_TOKEN=\"$GITHUB_TOKEN\" --env-file .env.act\n\n# Reuse containers between runs (faster iteration)\nact --reuse\n```\n\n## Workflow (local CI → squash-merge on GitHub)\n\n1. Implement the change in the agent worktree.\n2. `act -l` to confirm which jobs will fire for the event you care about.\n3. `act push` (or the specific event\u002Fjob) until it is green locally.\n4. `gx branch finish --branch \"\u003Cagent-branch>\" --base main --via-pr --wait-for-merge --cleanup`.\n   - Or `gx pr open` then `gx pr sync --auto-merge --merge-strategy squash` for explicit PR control.\n5. On GitHub: squash-merge once the remote run mirrors the local one.\n\n## Notes\n\n- `act` does not reproduce GitHub-hosted services exactly (no real secrets, different runner image, no concurrency groups). Treat a green `act` run as a strong signal, not a proof — the remote run is still authoritative.\n- Keep `act` config in `.actrc` at the repo root so every agent uses the same runner image.\n- If a workflow uses `GITHUB_TOKEN` for API calls, pass a PAT via `-s GITHUB_TOKEN=...`; do not commit it.\n- Add `.actrc`, `.cache\u002Fact`, and any `act`-specific event payloads to `.gitignore` if they appear.\n",{"name":5,"description":7},"main","7546eb50cf658dad033c5a047a7ec89c9d1ee7f4","skills\u002Fgx-act",4,"https:\u002F\u002Fgithub.com\u002Fopencue\u002Fgitguardex","https:\u002F\u002Fgitguardex.com\u002F","https:\u002F\u002Fgithub.com\u002Fopencue","Building in the open. From AI-powered workflows and developer tools to web experiences, automation, and e-commerce — practical software for real-world problems.","2026-11-12 18:11:01",{"source":8,"skillName":5,"commands":53,"prompt":63,"zipAvailable":64},[54,57,60],{"tool":55,"command":56},"npx","npx skills add opencue\u002Fgitguardex --skill gx-act",{"tool":58,"command":59},"bunx","bunx skills add opencue\u002Fgitguardex --skill gx-act",{"tool":61,"command":62},"pnpm","pnpm dlx skills add opencue\u002Fgitguardex --skill gx-act","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fopencue\u002Fgitguardex\u002Fblob\u002Fmain\u002Fskills\u002Fgx-act\u002FSKILL.md",true,[],[67,86,92,117,135,151],{"skillNo":68,"name":69,"nameZh":6,"description":70,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":71,"categories":72,"keywords":73,"publishedAt":38},"01M6QEBH0VSDT0T2HX5XE3VW5F","opensrc","Fetch exact dependency or external repository source before inspecting internals. Use for package implementation, upstream behavior, or external GitHub source lookup.","https:\u002F\u002Fgithub.com\u002Fopencue\u002Fgitguardex\u002Fblob\u002Fmain\u002Ftemplates\u002Fcodex\u002Fskills\u002Fopensrc\u002FSKILL.md",[],[69,74,75,76,77,78,79,80,81,82,83,84,85,26],"lookup","source","for","upstream","implementation","dependency","use","fetch","behavior","Bash","repository","package",{"skillNo":87,"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":88,"categories":89,"keywords":91,"publishedAt":38},"01M6QEBDNSWK5R390QHGFWP601","https:\u002F\u002Fgithub.com\u002Fopencue\u002Fgitguardex\u002Fblob\u002Fmain\u002Ftemplates\u002Fcodex\u002Fskills\u002Fgx-act\u002FSKILL.md",[90],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},[25,24,33,32,31,30,29,28,27,26,34,37,36,35],{"skillNo":93,"name":94,"nameZh":6,"description":95,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":96,"categories":97,"keywords":101,"publishedAt":38},"01M6QEBAQ8HA4ZGNDS03AB25Y7","guardex-merge-skills-to-dev","Use when you need to merge SKILL.md updates from agent branches\u002Fworktrees into the local base branch (default: dev) with the multiagent-safety flow.","https:\u002F\u002Fgithub.com\u002Fopencue\u002Fgitguardex\u002Fblob\u002Fmain\u002Ftemplates\u002Fcodex\u002Fskills\u002Fguardex-merge-skills-to-dev\u002FSKILL.md",[98],{"categoryNo":99,"categoryName":100,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000023","Skill与智能体开发",[102,103,104,105,106,107,36,108,109,110,111,112,80,113,114,115,116],"guardex","guardex merge skills to dev","dev","merge","updates","you","local","branches","base","default","worktrees","branch","multiagent","Safety","flow",{"skillNo":118,"name":119,"nameZh":6,"description":120,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":121,"categories":122,"keywords":124,"publishedAt":38},"01M6QEB1MG3NCEZ9DP310AAANC","gitguardex","Use for GitGuardex branch\u002Fworktree safety, agent or subagent collision avoidance, file ownership, and gated PR finishing. Not for code-quality review.","https:\u002F\u002Fgithub.com\u002Fopencue\u002Fgitguardex\u002Fblob\u002Fmain\u002Ftemplates\u002Fcodex\u002Fskills\u002Fgitguardex\u002FSKILL.md",[123],{"categoryNo":99,"categoryName":100,"taxonomyType":21,"taxonomyTypeDesc":22},[119,125,28,126,127,128,76,129,130,80,113,131,132,133,115,134],"code","review","worktree","quality review","ownership","gated","quality","subagent","code-quality","file",{"skillNo":136,"name":137,"nameZh":6,"description":138,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":139,"categories":140,"keywords":141,"publishedAt":38},"01M6QEAYMVDN8RZCVHQS7YNCBJ","pr-lens","Generate local PR Lens architecture and data-flow diagrams alongside a GitGuardex Codex or Claude PR review.","https:\u002F\u002Fgithub.com\u002Fopencue\u002Fgitguardex\u002Fblob\u002Fmain\u002Fskills\u002Fpr-lens\u002FSKILL.md",[],[142,143,28,144,119,108,145,146,116,147,148,149,150,126],"pr lens","lens","data","diagrams","data-flow","generate","pr review","architecture","codex",{"skillNo":152,"name":94,"nameZh":6,"description":95,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":153,"categories":154,"keywords":156,"publishedAt":38},"01M6QEARBHH7N7VTWS69P2E9MW","https:\u002F\u002Fgithub.com\u002Fopencue\u002Fgitguardex\u002Fblob\u002Fmain\u002Fskills\u002Fguardex-merge-skills-to-dev\u002FSKILL.md",[155],{"categoryNo":99,"categoryName":100,"taxonomyType":21,"taxonomyTypeDesc":22},[104,102,103,105,113,114,115,116,110,109,108,36,107,80,112,111,106]]