@hybridlabor-api/aos 4.8.0 → 4.10.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.agents/{agents.md → AGENTS.md} +3 -1
- package/.agents/nodes.json +3 -1
- package/.agents/vendor-manifest.json +23 -1
- package/.claude/agents/godmode-media-eventtech.md +1 -1
- package/.claude/hooks/conventional-commits.mjs +125 -0
- package/.claude/hooks/env-file-protection.mjs +105 -0
- package/.claude/hooks/go-gate.mjs +101 -81
- package/.claude/hooks/memb-inject.mjs +29 -1
- package/.claude/settings.json +13 -0
- package/.claude/workflows/startcycle-dispatch.mjs +23 -1
- package/.opencode/agents/godmode-media-eventtech.md +1 -1
- package/.opencode/plugins/bdb-aos.js +31 -4
- package/CLAUDE.md +0 -571
- package/README.de.md +1 -1
- package/README.md +1 -1
- package/README.pt.md +1 -1
- package/THIRD_PARTY_NOTICES.md +126 -0
- package/bin/aos-doctor.mjs +1 -1
- package/docs/skills_table.md +1 -1
- package/installer.js +187 -55
- package/package.json +7 -3
- package/packages/aos-cli/README.md +80 -0
- package/packages/aos-cli/bin/aos-cli.mjs +134 -0
- package/packages/aos-cli/core-skills.json +12 -0
- package/packages/aos-cli/extensions/aos.ts +321 -0
- package/packages/aos-cli/package-lock.json +1923 -0
- package/packages/aos-cli/package.json +29 -0
- package/packages/aos-cli/scripts/check-theme.mjs +63 -0
- package/packages/aos-cli/themes/aos.json +97 -0
- package/scripts/build-plugin-manifest.mjs +131 -0
- package/scripts/validate-skills.mjs +81 -6
- package/skills/basic/ao-orchestrator/SKILL.md +116 -0
- package/skills/basic/bdb-eventagency-skill/SKILL.md +252 -0
- package/skills/basic/bdb-shipping-skill/SKILL.md +161 -0
- package/skills/basic/godmode-eventtech/SKILL.md +4 -1
- package/skills/global_config/agenttrail/SKILL.md +6 -1
- package/skills/global_config/aos-project-init/SKILL.md +2 -0
- package/skills/global_config/aos-project-init/assets/AGENTS.template.md +1 -1
- package/skills/global_config/aos-project-init/scripts/aos-project-doctor.mjs +1 -1
- package/skills/global_config/aos-setup/SKILL.md +1 -1
- package/skills/global_config/aos-setup/scripts/aos-doctor.mjs +1 -1
- package/skills/global_config/ask-tim/SKILL.md +7 -7
- package/skills/global_config/bash-script-generator/SKILL.md +201 -0
- package/skills/global_config/bash-script-generator/assets/templates/standard-template.sh +96 -0
- package/skills/global_config/bash-script-generator/docs/bash-scripting-guide.md +729 -0
- package/skills/global_config/bash-script-generator/docs/generation-best-practices.md +193 -0
- package/skills/global_config/bash-script-generator/docs/script-patterns.md +566 -0
- package/skills/global_config/bash-script-generator/docs/text-processing-guide.md +437 -0
- package/skills/global_config/bash-script-generator/examples/log-analyzer.sh +92 -0
- package/skills/global_config/bash-script-generator/scripts/generate_script_template.sh +123 -0
- package/skills/global_config/bash-script-generator/scripts/run_ci_checks.sh +172 -0
- package/skills/global_config/bash-script-generator/scripts/test_generator.sh +413 -0
- package/skills/global_config/bash-script-validator/SKILL.md +249 -0
- package/skills/global_config/bash-script-validator/docs/awk-reference.md +449 -0
- package/skills/global_config/bash-script-validator/docs/bash-reference.md +468 -0
- package/skills/global_config/bash-script-validator/docs/common-mistakes.md +623 -0
- package/skills/global_config/bash-script-validator/docs/grep-reference.md +395 -0
- package/skills/global_config/bash-script-validator/docs/regex-reference.md +391 -0
- package/skills/global_config/bash-script-validator/docs/sed-reference.md +454 -0
- package/skills/global_config/bash-script-validator/docs/shell-reference.md +463 -0
- package/skills/global_config/bash-script-validator/docs/shellcheck-reference.md +399 -0
- package/skills/global_config/bash-script-validator/examples/bad-bash.sh +55 -0
- package/skills/global_config/bash-script-validator/examples/bad-shell.sh +54 -0
- package/skills/global_config/bash-script-validator/examples/good-bash.sh +71 -0
- package/skills/global_config/bash-script-validator/examples/good-shell.sh +69 -0
- package/skills/global_config/bash-script-validator/scripts/run_ci_checks.sh +23 -0
- package/skills/global_config/bash-script-validator/scripts/shellcheck_wrapper.sh +174 -0
- package/skills/global_config/bash-script-validator/scripts/test_validate.sh +446 -0
- package/skills/global_config/bash-script-validator/scripts/validate.sh +512 -0
- package/skills/global_config/ci-pipeline/SKILL.md +135 -0
- package/skills/global_config/deja-memory/SKILL.md +3 -1
- package/skills/global_config/dispatching-parallel-agents/SKILL.md +170 -0
- package/skills/global_config/dockerfile-generator/SKILL.md +1038 -0
- package/skills/global_config/dockerfile-generator/examples/example.dockerignore +95 -0
- package/skills/global_config/dockerfile-generator/examples/golang-distroless.Dockerfile +34 -0
- package/skills/global_config/dockerfile-generator/examples/java-springboot.Dockerfile +45 -0
- package/skills/global_config/dockerfile-generator/examples/nextjs-production.Dockerfile +49 -0
- package/skills/global_config/dockerfile-generator/examples/nodejs-multistage.Dockerfile +55 -0
- package/skills/global_config/dockerfile-generator/examples/python-fastapi.Dockerfile +48 -0
- package/skills/global_config/dockerfile-generator/references/language_specific_guides.md +510 -0
- package/skills/global_config/dockerfile-generator/references/multistage_builds.md +570 -0
- package/skills/global_config/dockerfile-generator/references/optimization_patterns.md +492 -0
- package/skills/global_config/dockerfile-generator/references/security_best_practices.md +375 -0
- package/skills/global_config/dockerfile-generator/scripts/generate_dockerignore.sh +199 -0
- package/skills/global_config/dockerfile-generator/scripts/generate_golang.sh +172 -0
- package/skills/global_config/dockerfile-generator/scripts/generate_java.sh +185 -0
- package/skills/global_config/dockerfile-generator/scripts/generate_nodejs.sh +279 -0
- package/skills/global_config/dockerfile-generator/scripts/generate_python.sh +218 -0
- package/skills/global_config/dockerfile-generator/scripts/test_generator.sh +210 -0
- package/skills/global_config/dockerfile-validator/SKILL.md +300 -0
- package/skills/global_config/dockerfile-validator/examples/.dockerignore.example +34 -0
- package/skills/global_config/dockerfile-validator/examples/bad-example.Dockerfile +37 -0
- package/skills/global_config/dockerfile-validator/examples/golang-distroless.Dockerfile +50 -0
- package/skills/global_config/dockerfile-validator/examples/good-example.Dockerfile +52 -0
- package/skills/global_config/dockerfile-validator/examples/python-optimized.Dockerfile +53 -0
- package/skills/global_config/dockerfile-validator/examples/security-issues.Dockerfile +42 -0
- package/skills/global_config/dockerfile-validator/references/docker_best_practices.md +348 -0
- package/skills/global_config/dockerfile-validator/references/optimization_guide.md +473 -0
- package/skills/global_config/dockerfile-validator/references/security_checklist.md +208 -0
- package/skills/global_config/dockerfile-validator/scripts/dockerfile-validate.sh +699 -0
- package/skills/global_config/dockerfile-validator/scripts/test_validate.sh +35 -0
- package/skills/global_config/dockerfile-validator/tests/fixtures/copy-before-yarn-lock-read.Dockerfile +6 -0
- package/skills/global_config/dockerfile-validator/tests/fixtures/copy-before-yarn.Dockerfile +6 -0
- package/skills/global_config/dockerfile-validator/tests/fixtures/from-platform-nonroot.Dockerfile +7 -0
- package/skills/global_config/dockerfile-validator/tests/test_regression.sh +164 -0
- package/skills/global_config/finishing-a-development-branch/SKILL.md +228 -0
- package/skills/global_config/github-actions-generator/SKILL.md +353 -0
- package/skills/global_config/github-actions-generator/assets/templates/action/composite/action.yml +82 -0
- package/skills/global_config/github-actions-generator/assets/templates/action/docker/Dockerfile +25 -0
- package/skills/global_config/github-actions-generator/assets/templates/action/docker/action.yml +42 -0
- package/skills/global_config/github-actions-generator/assets/templates/action/docker/entrypoint.sh +27 -0
- package/skills/global_config/github-actions-generator/assets/templates/action/javascript/action.yml +33 -0
- package/skills/global_config/github-actions-generator/assets/templates/action/javascript/index.js +50 -0
- package/skills/global_config/github-actions-generator/assets/templates/action/javascript/package.json +27 -0
- package/skills/global_config/github-actions-generator/assets/templates/workflow/basic_workflow.yml +242 -0
- package/skills/global_config/github-actions-generator/assets/templates/workflow/reusable_workflow.yml +106 -0
- package/skills/global_config/github-actions-generator/examples/README.md +147 -0
- package/skills/global_config/github-actions-generator/examples/actions/setup-node-cached/action.yml +93 -0
- package/skills/global_config/github-actions-generator/examples/caching/docker-buildkit.yml +256 -0
- package/skills/global_config/github-actions-generator/examples/security/dependency-review.yml +62 -0
- package/skills/global_config/github-actions-generator/examples/security/sbom-attestation.yml +119 -0
- package/skills/global_config/github-actions-generator/examples/triggers/chatops-commands.yml +475 -0
- package/skills/global_config/github-actions-generator/examples/triggers/repository-dispatch.yml +418 -0
- package/skills/global_config/github-actions-generator/examples/triggers/workflow-orchestration.yml +404 -0
- package/skills/global_config/github-actions-generator/examples/workflows/docker-build-push.yml +68 -0
- package/skills/global_config/github-actions-generator/examples/workflows/go-ci.yml +161 -0
- package/skills/global_config/github-actions-generator/examples/workflows/monorepo-ci.yml +340 -0
- package/skills/global_config/github-actions-generator/examples/workflows/multi-environment-deploy.yml +406 -0
- package/skills/global_config/github-actions-generator/examples/workflows/nodejs-ci.yml +122 -0
- package/skills/global_config/github-actions-generator/examples/workflows/python-ci.yml +157 -0
- package/skills/global_config/github-actions-generator/examples/workflows/scheduled-tasks.yml +376 -0
- package/skills/global_config/github-actions-generator/references/advanced-triggers.md +917 -0
- package/skills/global_config/github-actions-generator/references/best-practices.md +755 -0
- package/skills/global_config/github-actions-generator/references/common-actions.md +715 -0
- package/skills/global_config/github-actions-generator/references/custom-actions.md +320 -0
- package/skills/global_config/github-actions-generator/references/expressions-and-contexts.md +688 -0
- package/skills/global_config/github-actions-generator/references/modern-features.md +421 -0
- package/skills/global_config/github-actions-generator/scripts/test_generator.sh +344 -0
- package/skills/global_config/github-actions-templates/SKILL.md +7 -0
- package/skills/global_config/github-actions-validator/SKILL.md +576 -0
- package/skills/global_config/github-actions-validator/examples/README.md +88 -0
- package/skills/global_config/github-actions-validator/examples/outdated-versions.yml +76 -0
- package/skills/global_config/github-actions-validator/examples/valid-ci.yml +79 -0
- package/skills/global_config/github-actions-validator/examples/with-errors.yml +47 -0
- package/skills/global_config/github-actions-validator/references/act_usage.md +233 -0
- package/skills/global_config/github-actions-validator/references/action_versions.md +122 -0
- package/skills/global_config/github-actions-validator/references/actionlint_usage.md +343 -0
- package/skills/global_config/github-actions-validator/references/common_errors.md +512 -0
- package/skills/global_config/github-actions-validator/references/modern_features.md +384 -0
- package/skills/global_config/github-actions-validator/references/runners.md +317 -0
- package/skills/global_config/github-actions-validator/scripts/install_tools.sh +113 -0
- package/skills/global_config/github-actions-validator/scripts/validate_workflow.sh +910 -0
- package/skills/global_config/github-actions-validator/tests/test_validate_workflow.sh +237 -0
- package/skills/global_config/makefile-generator/SKILL.md +614 -0
- package/skills/global_config/makefile-generator/assets/templates/.gitkeep +1 -0
- package/skills/global_config/makefile-generator/docs/makefile-structure.md +530 -0
- package/skills/global_config/makefile-generator/docs/optimization-guide.md +784 -0
- package/skills/global_config/makefile-generator/docs/patterns-guide.md +642 -0
- package/skills/global_config/makefile-generator/docs/security-guide.md +361 -0
- package/skills/global_config/makefile-generator/docs/targets-guide.md +642 -0
- package/skills/global_config/makefile-generator/docs/variables-guide.md +596 -0
- package/skills/global_config/makefile-generator/scripts/add_standard_targets.sh +539 -0
- package/skills/global_config/makefile-generator/scripts/generate_makefile_template.sh +690 -0
- package/skills/global_config/makefile-generator/test/test_helper_scripts.sh +190 -0
- package/skills/global_config/makefile-validator/SKILL.md +244 -0
- package/skills/global_config/makefile-validator/docs/bake-tool.md +1000 -0
- package/skills/global_config/makefile-validator/docs/best-practices.md +858 -0
- package/skills/global_config/makefile-validator/docs/common-mistakes.md +944 -0
- package/skills/global_config/makefile-validator/examples/bad-makefile.mk +77 -0
- package/skills/global_config/makefile-validator/examples/good-makefile.mk +103 -0
- package/skills/global_config/makefile-validator/scripts/test_validate.sh +382 -0
- package/skills/global_config/makefile-validator/scripts/validate_makefile.sh +712 -0
- package/skills/global_config/{MCP_Manage → mcp-manage}/SKILL.md +3 -3
- package/skills/global_config/plan-canvas/SKILL.md +9 -2
- package/skills/global_config/plan-canvas/scripts/lib/plan-canvas/ui.js +10 -2
- package/skills/global_config/plan-canvas/scripts/plan-canvas.js +1 -1
- package/skills/global_config/read-the-damn-docs/SKILL.md +175 -0
- package/skills/global_config/requesting-code-review/SKILL.md +98 -0
- package/skills/global_config/requesting-code-review/code-reviewer.md +198 -0
- package/skills/global_config/using-git-worktrees/SKILL.md +170 -0
- package/skills/global_config/verification-before-completion/SKILL.md +123 -0
- package/skills/global_config/writing-plans/SKILL.md +126 -46
- package/skills/global_config/writing-plans-legacy/SKILL.md +152 -0
- package/.claude/CLAUDE.md +0 -12
- package/mcps/RhinoMCP/docs/content/docs/getting-started/gemini.md +0 -61
- /package/{GEMINI.md → RULES.md} +0 -0
|
@@ -0,0 +1,343 @@
|
|
|
1
|
+
# Actionlint (rhysd/actionlint) - Usage Reference
|
|
2
|
+
|
|
3
|
+
Actionlint is a static checker for GitHub Actions workflow files that catches errors before they cause CI failures.
|
|
4
|
+
|
|
5
|
+
## Installation
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
# Download and install using the official script
|
|
9
|
+
bash <(curl https://raw.githubusercontent.com/rhysd/actionlint/main/scripts/download-actionlint.bash)
|
|
10
|
+
|
|
11
|
+
# Or use the skill's installation script
|
|
12
|
+
bash scripts/install_tools.sh
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
## Core Usage
|
|
16
|
+
|
|
17
|
+
### Basic Validation
|
|
18
|
+
|
|
19
|
+
Validate a single workflow file:
|
|
20
|
+
|
|
21
|
+
```bash
|
|
22
|
+
actionlint .github/workflows/ci.yml
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
Validate all workflow files in a directory:
|
|
26
|
+
|
|
27
|
+
```bash
|
|
28
|
+
actionlint .github/workflows/*.yml
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
Validate all workflows in the default location:
|
|
32
|
+
|
|
33
|
+
```bash
|
|
34
|
+
actionlint
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
### Output Formats
|
|
38
|
+
|
|
39
|
+
#### Default Format (human-readable)
|
|
40
|
+
|
|
41
|
+
```bash
|
|
42
|
+
actionlint
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
Output example:
|
|
46
|
+
```
|
|
47
|
+
.github/workflows/ci.yml:5:7: unexpected key "job" for "workflow" section [syntax-check]
|
|
48
|
+
.github/workflows/ci.yml:10:15: invalid CRON format "0 0 * * 8" in schedule event [events]
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
#### JSON Format
|
|
52
|
+
|
|
53
|
+
```bash
|
|
54
|
+
actionlint -format '{{json .}}'
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
Useful for programmatic processing and integration with other tools.
|
|
58
|
+
|
|
59
|
+
#### Sarif Format
|
|
60
|
+
|
|
61
|
+
```bash
|
|
62
|
+
actionlint -format sarif
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
For integration with GitHub Code Scanning and other security tools.
|
|
66
|
+
|
|
67
|
+
## Validation Categories
|
|
68
|
+
|
|
69
|
+
### 1. Syntax Checking
|
|
70
|
+
|
|
71
|
+
Validates YAML syntax and GitHub Actions schema:
|
|
72
|
+
|
|
73
|
+
- Required fields
|
|
74
|
+
- Valid keys and values
|
|
75
|
+
- Proper nesting
|
|
76
|
+
- Type correctness
|
|
77
|
+
|
|
78
|
+
### 2. Expression Validation
|
|
79
|
+
|
|
80
|
+
Validates GitHub Actions expressions `${{ }}`:
|
|
81
|
+
|
|
82
|
+
- Syntax errors
|
|
83
|
+
- Type checking (string, number, boolean)
|
|
84
|
+
- Function calls
|
|
85
|
+
- Context access
|
|
86
|
+
|
|
87
|
+
Example caught errors:
|
|
88
|
+
```yaml
|
|
89
|
+
# Error: Boolean expression expected
|
|
90
|
+
if: ${{ 'true' }} # String, not boolean
|
|
91
|
+
|
|
92
|
+
# Error: Unknown function
|
|
93
|
+
run: echo ${{ unknown() }}
|
|
94
|
+
|
|
95
|
+
# Error: Type mismatch
|
|
96
|
+
if: ${{ 42 }} # Number, not boolean
|
|
97
|
+
```
|
|
98
|
+
|
|
99
|
+
### 3. Runner Label Validation
|
|
100
|
+
|
|
101
|
+
Validates runner labels against known GitHub-hosted runners:
|
|
102
|
+
|
|
103
|
+
**Ubuntu:**
|
|
104
|
+
- `ubuntu-latest` (currently ubuntu-24.04)
|
|
105
|
+
- `ubuntu-24.04`, `ubuntu-22.04`, `ubuntu-20.04`
|
|
106
|
+
|
|
107
|
+
**Windows:**
|
|
108
|
+
- `windows-latest` (currently windows-2022)
|
|
109
|
+
- `windows-2025` (NEW - recently added)
|
|
110
|
+
- `windows-2022`, `windows-2019`
|
|
111
|
+
|
|
112
|
+
**macOS:**
|
|
113
|
+
- `macos-latest` (currently macos-15)
|
|
114
|
+
- `macos-15` (Apple Silicon M1/M2/M3)
|
|
115
|
+
- `macos-14` (Apple Silicon M1)
|
|
116
|
+
- `macos-26` (preview)
|
|
117
|
+
- `macos-13` (Intel - RETIRED November 14, 2025)
|
|
118
|
+
- `macos-12` (Intel - RETIRED)
|
|
119
|
+
|
|
120
|
+
Example:
|
|
121
|
+
```yaml
|
|
122
|
+
runs-on: ubuntu-lastest # Error: Did you mean "ubuntu-latest"?
|
|
123
|
+
```
|
|
124
|
+
|
|
125
|
+
### 4. Action Validation
|
|
126
|
+
|
|
127
|
+
Validates action references:
|
|
128
|
+
|
|
129
|
+
- Action exists
|
|
130
|
+
- Valid version/ref
|
|
131
|
+
- Required inputs provided
|
|
132
|
+
- No unknown inputs
|
|
133
|
+
|
|
134
|
+
Example:
|
|
135
|
+
```yaml
|
|
136
|
+
# Error: Missing required input "path"
|
|
137
|
+
- uses: actions/checkout@v5
|
|
138
|
+
|
|
139
|
+
# Error: Unknown input "invalid_input"
|
|
140
|
+
- uses: actions/checkout@v5
|
|
141
|
+
with:
|
|
142
|
+
invalid_input: value
|
|
143
|
+
```
|
|
144
|
+
|
|
145
|
+
### 5. Job Dependencies
|
|
146
|
+
|
|
147
|
+
Validates `needs:` dependencies:
|
|
148
|
+
|
|
149
|
+
- Referenced jobs exist
|
|
150
|
+
- No circular dependencies
|
|
151
|
+
- Valid job IDs
|
|
152
|
+
|
|
153
|
+
### 6. CRON Syntax
|
|
154
|
+
|
|
155
|
+
Validates schedule event CRON expressions:
|
|
156
|
+
|
|
157
|
+
```yaml
|
|
158
|
+
# Error: Day of week must be 0-6
|
|
159
|
+
schedule:
|
|
160
|
+
- cron: '0 0 * * 8'
|
|
161
|
+
```
|
|
162
|
+
|
|
163
|
+
### 7. Shell Script Validation
|
|
164
|
+
|
|
165
|
+
Integrates with shellcheck to validate shell scripts in `run:` steps:
|
|
166
|
+
|
|
167
|
+
```yaml
|
|
168
|
+
# Warning: Quote to prevent word splitting
|
|
169
|
+
run: echo $VARIABLE
|
|
170
|
+
```
|
|
171
|
+
|
|
172
|
+
### 8. Glob Pattern Validation
|
|
173
|
+
|
|
174
|
+
Validates glob patterns in `paths:` and `paths-ignore:` filters for structural errors (e.g., empty patterns or malformed syntax).
|
|
175
|
+
|
|
176
|
+
**Note:** The pattern `**.js` (double-star without a slash) is **not flagged** by actionlint as of v1.7.x. It is functionally equivalent to `**/*.js` in GitHub's glob engine but `**/*.js` is more explicit and widely understood. Use `**/*.js` as a best practice, not because actionlint will warn about the alternative.
|
|
177
|
+
|
|
178
|
+
```yaml
|
|
179
|
+
# Best practice (clear intent)
|
|
180
|
+
on:
|
|
181
|
+
push:
|
|
182
|
+
paths:
|
|
183
|
+
- '**/*.js' # Matches any .js file in any subdirectory
|
|
184
|
+
- 'src/**' # Matches everything under src/
|
|
185
|
+
```
|
|
186
|
+
|
|
187
|
+
### 9. Security Checks
|
|
188
|
+
|
|
189
|
+
Detects potential security issues:
|
|
190
|
+
|
|
191
|
+
- Injection vulnerabilities
|
|
192
|
+
- Insecure credential handling
|
|
193
|
+
- Dangerous patterns
|
|
194
|
+
|
|
195
|
+
Example:
|
|
196
|
+
```yaml
|
|
197
|
+
# Warning: Potential script injection
|
|
198
|
+
run: echo ${{ github.event.issue.title }}
|
|
199
|
+
```
|
|
200
|
+
|
|
201
|
+
## Configuration
|
|
202
|
+
|
|
203
|
+
Create `.github/actionlint.yaml` or `.github/actionlint.yml`:
|
|
204
|
+
|
|
205
|
+
```yaml
|
|
206
|
+
# Configure shellcheck
|
|
207
|
+
shellcheck:
|
|
208
|
+
enable: true
|
|
209
|
+
shell: bash
|
|
210
|
+
|
|
211
|
+
# Configure pyflakes for Python
|
|
212
|
+
pyflakes:
|
|
213
|
+
enable: true
|
|
214
|
+
executable: pyflakes
|
|
215
|
+
|
|
216
|
+
# Ignore specific rules
|
|
217
|
+
ignore:
|
|
218
|
+
- 'SC2086' # Ignore shellcheck rule
|
|
219
|
+
- 'action-validation' # Ignore action validation
|
|
220
|
+
|
|
221
|
+
# Custom runner labels
|
|
222
|
+
self-hosted-runner:
|
|
223
|
+
labels:
|
|
224
|
+
- my-custom-runner
|
|
225
|
+
- gpu-runner
|
|
226
|
+
```
|
|
227
|
+
|
|
228
|
+
## Exit Codes
|
|
229
|
+
|
|
230
|
+
- `0`: Success - no errors found
|
|
231
|
+
- `1`: Validation errors found
|
|
232
|
+
- `2`: Fatal error (invalid file, config error, etc.)
|
|
233
|
+
|
|
234
|
+
## Integration
|
|
235
|
+
|
|
236
|
+
### Pre-commit Hook
|
|
237
|
+
|
|
238
|
+
```yaml
|
|
239
|
+
# .pre-commit-config.yaml
|
|
240
|
+
repos:
|
|
241
|
+
- repo: https://github.com/rhysd/actionlint
|
|
242
|
+
rev: v1.7.9 # Check https://github.com/rhysd/actionlint/releases for latest version
|
|
243
|
+
hooks:
|
|
244
|
+
- id: actionlint
|
|
245
|
+
```
|
|
246
|
+
|
|
247
|
+
**Note:** Always use the latest version of actionlint. Check the [releases page](https://github.com/rhysd/actionlint/releases) for the most recent version.
|
|
248
|
+
|
|
249
|
+
### GitHub Actions Workflow
|
|
250
|
+
|
|
251
|
+
```yaml
|
|
252
|
+
name: Lint GitHub Actions workflows
|
|
253
|
+
on: [push, pull_request]
|
|
254
|
+
jobs:
|
|
255
|
+
actionlint:
|
|
256
|
+
runs-on: ubuntu-latest
|
|
257
|
+
steps:
|
|
258
|
+
- uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6.0.0
|
|
259
|
+
- name: Download actionlint
|
|
260
|
+
run: bash <(curl https://raw.githubusercontent.com/rhysd/actionlint/main/scripts/download-actionlint.bash)
|
|
261
|
+
- name: Run actionlint
|
|
262
|
+
run: ./actionlint
|
|
263
|
+
```
|
|
264
|
+
|
|
265
|
+
### VS Code Integration
|
|
266
|
+
|
|
267
|
+
Install the "actionlint" extension for real-time validation in VS Code.
|
|
268
|
+
|
|
269
|
+
## Common Error Examples
|
|
270
|
+
|
|
271
|
+
### 1. Typo in Runner Label
|
|
272
|
+
|
|
273
|
+
```yaml
|
|
274
|
+
# Error
|
|
275
|
+
runs-on: ubuntu-lastest
|
|
276
|
+
|
|
277
|
+
# Fix
|
|
278
|
+
runs-on: ubuntu-latest
|
|
279
|
+
```
|
|
280
|
+
|
|
281
|
+
### 2. Invalid CRON Expression
|
|
282
|
+
|
|
283
|
+
```yaml
|
|
284
|
+
# Error
|
|
285
|
+
schedule:
|
|
286
|
+
- cron: '0 0 * * 8' # Day of week 8 doesn't exist
|
|
287
|
+
|
|
288
|
+
# Fix
|
|
289
|
+
schedule:
|
|
290
|
+
- cron: '0 0 * * 0' # Sunday = 0
|
|
291
|
+
```
|
|
292
|
+
|
|
293
|
+
### 3. Missing Required Input
|
|
294
|
+
|
|
295
|
+
```yaml
|
|
296
|
+
# Error
|
|
297
|
+
- uses: actions/checkout@v4
|
|
298
|
+
|
|
299
|
+
# Fix (if repository input is required)
|
|
300
|
+
- uses: actions/checkout@v4
|
|
301
|
+
with:
|
|
302
|
+
repository: owner/repo
|
|
303
|
+
```
|
|
304
|
+
|
|
305
|
+
### 4. Invalid Expression
|
|
306
|
+
|
|
307
|
+
```yaml
|
|
308
|
+
# Error
|
|
309
|
+
if: ${{ success() && 'true' }} # Mixing boolean and string
|
|
310
|
+
|
|
311
|
+
# Fix
|
|
312
|
+
if: ${{ success() && true }}
|
|
313
|
+
```
|
|
314
|
+
|
|
315
|
+
### 5. Undefined Job in needs
|
|
316
|
+
|
|
317
|
+
```yaml
|
|
318
|
+
# Error
|
|
319
|
+
jobs:
|
|
320
|
+
deploy:
|
|
321
|
+
needs: biuld # Typo
|
|
322
|
+
|
|
323
|
+
# Fix
|
|
324
|
+
jobs:
|
|
325
|
+
deploy:
|
|
326
|
+
needs: build
|
|
327
|
+
```
|
|
328
|
+
|
|
329
|
+
## Best Practices
|
|
330
|
+
|
|
331
|
+
1. **Run locally before pushing**: Catch errors early
|
|
332
|
+
2. **Use in CI/CD**: Add actionlint to your workflow
|
|
333
|
+
3. **Configure for custom runners**: Update config for self-hosted runners
|
|
334
|
+
4. **Enable shellcheck**: Catch shell script issues
|
|
335
|
+
5. **Review all warnings**: Even non-fatal warnings can indicate issues
|
|
336
|
+
6. **Keep actionlint updated**: New rules and features are added regularly
|
|
337
|
+
|
|
338
|
+
## Limitations
|
|
339
|
+
|
|
340
|
+
- Cannot validate runtime behavior (only static analysis)
|
|
341
|
+
- Cannot access private actions (must be public to validate)
|
|
342
|
+
- May not catch all possible issues (e.g., environment-specific problems)
|
|
343
|
+
- Custom actions may require manual verification
|