ways-of-working — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited ways-of-working (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
Development is agent-first — every change starts as a structured issue and flows through issue → plan → implement → test → review:
Follow the test-driven-development skill rigorously — write the test first, watch it fail, write minimal code to pass.
| Type | Tooling | When to run |
|---|---|---|
| Unit tests | SDK test frameworks (e.g. go test, xunit, jest) | CI on every PR |
| Integration tests | SDK test frameworks | CI on every PR |
| E2E / system tests | GitHub Actions workflows that exercise the app/binary/service as an end user would | CI on every PR; move to merge_group if the suite becomes too heavy |
| Benchmark tests | SDK benchmark frameworks (e.g. BenchmarkDotNet, go test -bench) | CI on every PR |
For platform engineering work, ksail provides the build → run → publish loop and Testkube runs the actual test suites inside the cluster:
| Type | App-repo equivalent | Tooling | What it does |
|---|---|---|---|
| Linting / scanning | Unit tests | Standard linters & scanners (e.g. kubeconform, kube-linter, Trivy) | Validate manifests statically — no cluster needed |
| Integration tests | Integration tests | Ephemeral local cluster (ksail cluster create) + Testkube | Spin up a Docker cluster, deploy workloads, and run Testkube test suites against them |
| E2E / system tests | E2E / system tests | Ephemeral or real cluster + Testkube | Deploy to a full environment (local or remote) and run end-to-end Testkube test suites |
Platform lifecycle commands:
| Command | Purpose |
|---|---|
ksail cluster init | Scaffold a new cluster configuration |
ksail cluster create | Spin up the cluster locally (Docker) or on real infrastructure and verify workloads reconcile |
ksail workload push | Push Kubernetes manifests as OCI artifacts to a container registry |
Every pull request must pass:
// WORKAROUND: comment with a linked issue) and schedule its removal.Prefer popular, well-maintained third-party libraries over writing custom implementations. Only roll your own when no suitable library exists or when the dependency would be disproportionately heavy.
Follow <https://refactoring.guru> guidelines for refactoring techniques and design patterns.
Use GitHub Flow:
main.merge_group) when the repository is configured for it; otherwise merge the pull request normally.Each repository has two core workflow files — ci.yaml and cd.yaml — plus a thin release.yaml that calls a reusable workflow (see Releases). Reusable logic is extracted into local GitHub Actions under .github/actions/:
| Event | What runs |
|---|---|
pull_request | All tests (unit, integration, E2E, benchmarks), linting, security & quality scanning, coverage & benchmark regression checks. Move E2E to merge_group only if the suite becomes too heavy. |
merge_group | CD to dev environment. |
push to main | Publish artifacts (packages, container images, etc.). |
Semver tag (vX.X.X) | CD to prod environment. |
| Event | What runs |
|---|---|
pull_request | Linting & scanning (kubeconform, kube-linter, Trivy, etc.) plus integration tests on an ephemeral local cluster (ksail cluster create + Testkube). Move integration tests to merge_group if the suite becomes too heavy. |
merge_group | CD to dev — deploy to staging infrastructure (e.g. Hetzner). |
Semver tag (vX.X.X) | CD to prod — ksail cluster update, ksail workload push, ksail workload reconcile. |
Releases are automated via the devantler-tech/reusable-workflows/.github/workflows/create-release.yaml reusable workflow. It runs semantic-release on push to main, calculates the next semver from conventional commit history, and creates the tag + GitHub release — which in turn triggers the CD pipeline above.
For application publishing, always use upstream releasers — e.g. GoReleaser for Go or dotnet-releaser for .NET — rather than hand-rolling publish scripts.
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.