Contributing¶
Adding a new action¶
- Create a directory under
actions/following the existing naming pattern:actions/<category>/<action-name>/action.yml. - Define the action as a composite action — no custom JavaScript or Docker actions.
- Include clear
name,description,inputs, andoutputsinaction.yml. - Add supporting scripts under
actions/<action-name>/scripts/if needed. - Add the action to the CI workflow (
.github/workflows/ci.yml) using a local path reference (./actions/<path>). - Add a documentation page under
docs/site/docs/actions/and update the nav indocs/site/mkdocs.yml.
Composite action design rules¶
- Shell steps only — Use
shell: bashfor allrunsteps. - No secrets access — Composite actions cannot access secrets directly. Callers must pass secrets as inputs.
- Idempotent when possible — Actions should be safe to re-run (e.g.,
publish/tag-and-releaseskips if the tag exists). - Environment variables for sensitive data — Use
envblocks rather than inline interpolation for values that might contain special characters.
Testing via self-referencing CI¶
This repository tests its own actions by using local path references in the CI workflow:
When you modify an action, the PR's CI run uses your modified version. This provides integration testing without a separate test repository.
Branching workflow¶
- Protected branches:
mainanddevelop— no direct commits. - Branch naming:
feature/*,bugfix/*, orhotfix/*only. - Feature and bugfix PRs target
developwith squash merge. - Release PRs target
mainwith regular merge.
Committing¶
Always use the commit script:
Required flags:
--type:feat|fix|docs|style|refactor|test|chore|ci|build--message: Commit description--agent:claudeorcodex
Optional flags:
--scope: Conventional commit scope--body: Detailed commit body
Submitting PRs¶
Always use the PR script:
Required flags:
--issue: GitHub issue number--summary: One-line PR summary
Optional flags:
--linkage:Fixes|Closes|Resolves|Ref(default:Fixes)--title: PR title (default: most recent commit subject)--notes: Additional notes--dry-run: Print without executing