About github-actions
A GitHub Actions guide for creating and troubleshooting workflows and custom actions. It emphasizes inspecting logs and actual values, testing locally, and avoiding unnecessary CI runs.
Key features
- 01Custom action deployment guidance
- 02Workflow debugging steps
- 03Local testing with act
- 04Focused reproduction planning
- 05Security and permissions gotchas
Use cases
- 01Troubleshooting failed workflow runs
- 02Testing workflows locally before CI
- 03Configuring permissions and fork PR handling
Install
Copy the command and run it in a terminal.
$
npx skills add https:/ / github.com/ openhands/ extensions --skill github-actionsAfter installing, type/github-actionsin Claude Code to confirm it loaded.
Bundled files.plugin/plugin.jsonREADME.md
Details
From the project READMEGitHub Actions Guide
Critical Rules
Custom Action Deployment:
- New custom actions MUST be merged to the main branch before they can be used
- After the initial merge, they should be tested from feature branches
Debug Steps: Add debug steps that print non-secret parameters when:
- Creating a new action, OR
- Troubleshooting a particularly tricky issue
(Not required for every workflow - use when needed)
Effectiveness Principles
Actions cost CI minutes. Be deliberate, not iterative:
- Monitor, don't poll - use
gh run watch/gh pr checks --watchto follow runs live - Read logs, don't guess - fetch the failed job's log before changing code
- Print actual values - debug steps reveal the real
inputs/githubcontext, not your assumptions - Test locally first -
actruns workflows on your machine and avoids burning CI minutes - Plan the smallest reproduction - one job, minimal matrix, narrow trigger before scaling up
See README.md for the full debugging workflow, gh commands, and YAML debug-step examples.
Key Gotchas
- Secrets unavailable in fork PRs -
pull_requesthas no secrets for forks;pull_request_targetdoes but never check out or execute fork PR code inside it (RCE with write permissions) - Pin action versions - Use
@v4or SHA, not@main(prevents breaking changes) - Explicit permissions - Set
permissions:block for GITHUB_TOKEN operations - Artifacts for job-to-job data - Files don't persist between jobs without
upload-artifact/download-artifact
Comments
Markdown supported