@@ -76,13 +76,36 @@ actions/{category}/{action-name}/
76761 . ** Consistent branding** : Use ` author: hoverkraft ` with ` color: blue ` and a meaningful ` icon ` .
77772 . ** Pinned dependencies** : Reference third-party actions via exact SHAs to guarantee reproducibility.
78783 . ** Input validation** : Validate critical inputs early within composite steps or supporting scripts.
79+ 4 . ** Idempotent steps** : Ensure actions can run multiple times without leaving residual state in the workspace.
80+ 5 . ** Multi-platform support** : Test actions in both ` ubuntu-latest ` and ` windows-latest ` runners when applicable.
81+ 6 . ** Cross-platform compatibility** : Uses ` actions/github-script ` steps for cross-platform compatibility. Avoid ` run ` steps.
82+ 7 . ** Logging** : Use structured logs with clear prefixes (` [build-image] ` , ` [helm-test-chart] ` , …) to simplify debugging.
83+ 8 . ** Security** : Avoid shell interpolation with untrusted inputs; prefer parameterized commands or ` set -euo pipefail ` wrappers.
84+
85+ #### File Conventions
86+
87+ - ** Dockerfile** : Provides the Super Linter environment with UID/GID passthrough for local dev parity.
88+ - ** Tests** : Located in ` tests/ ` with fixtures for container builds and chart-testing scenarios.
89+ - ** Workflows** : Reusable definitions live in ` .github/workflows/ ` ; internal/private workflows are prefixed with ` __ ` .
90+
91+ #### JavaScript Development Patterns
92+
93+ - Encapsulate reusable logic in modules under the action directory (for example, ` actions/my-action/index.js ` ).
94+ - Prefer async/await with explicit error handling when interacting with the GitHub API or filesystem.
95+ - Centralize environment variable parsing and validation to keep composite YAML lean.
7996
8097#### Container Delivery Patterns
8198
8299- Prefer multi-architecture builds via ` docker buildx build ` with explicit ` --platform ` lists.
83100- Surface provenance metadata through outputs (` image-name ` , ` digest ` , etc.) to unblock downstream jobs.
84101- Keep secrets and registry credentials in GitHub environments or organization secrets—never hardcode them.
85102
103+ #### Helm Testing Patterns
104+
105+ - Use the chart fixtures under ` tests/charts/ ` to exercise Helm-focused actions.
106+ - Maintain ` Chart.lock ` files alongside ` Chart.yaml ` to document dependency revisions.
107+ - Commit ` ci/empty-values.yaml ` templates for creating scenario-specific overrides.
108+
86109### Development Workflow
87110
88111#### Linting & Testing
@@ -96,30 +119,6 @@ make test-build-application # Build and push the sample test application image
96119make test-ct-install # Validate Helm charts via chart-testing
97120```
98121
99- #### File Conventions
100-
101- - ** Dockerfile** : Provides the Super Linter environment with UID/GID passthrough for local dev parity.
102- - ** Tests** : Located in ` tests/ ` with fixtures for container builds and chart-testing scenarios.
103- - ** Workflows** : Reusable definitions live in ` .github/workflows/ ` ; internal/private workflows are prefixed with ` __ ` .
104-
105- #### Action Development Conventions
106-
107- 1 . ** Idempotent steps** : Ensure actions can run multiple times without leaving residual state in the workspace.
108- 2 . ** Logging** : Use structured logs with clear prefixes (` [build-image] ` , ` [helm-test-chart] ` , …) to simplify debugging.
109- 3 . ** Security** : Avoid shell interpolation with untrusted inputs; prefer parameterized commands or ` set -euo pipefail ` wrappers.
110-
111- #### JavaScript Development Patterns
112-
113- - Encapsulate reusable logic in modules under the action directory (for example, ` actions/docker/prune-pull-requests-image-tags/index.js ` ).
114- - Prefer async/await with explicit error handling when interacting with the GitHub API or filesystem.
115- - Centralize environment variable parsing and validation to keep composite YAML lean.
116-
117- #### Helm Testing Patterns
118-
119- - Use the chart fixtures under ` tests/charts/ ` to exercise Helm-focused actions.
120- - Maintain ` Chart.lock ` files alongside ` Chart.yaml ` to document dependency revisions.
121- - Commit ` ci/empty-values.yaml ` templates for creating scenario-specific overrides.
122-
123122## Author
124123
125124🏢 ** Hoverkraft < contact@hoverkraft.cloud > **
0 commit comments