cicd-pipelines/SKILL.md
Use when implementing GitHub Actions pipelines for web, API, and mobile apps — Node.js/PHP build and deploy, iOS TestFlight via Fastlane, Android Google Play via Supply, environment promotion, OIDC secrets, caching, and rollback.
npx skillsauth add peterbamuhigire/skills-web-dev cicd-pipelinesInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
cicd-pipeline-design for the higher-level structure first.cicd-devsecops for secrets, scan policy, and compliance gates.cicd-jenkins-debian.dev, staging, and production with protection rules and required reviewers.actionlint) and the entire tree passes workflow_call reusability checks.permissions: block required — never the default all-write token.AWS_ACCESS_KEY_ID in repo secrets.secrets.AWS_* — always prefer OIDC.staging and main drift apart.@v4) instead of by SHA for security-critical jobs..github/workflows/*.yml files producing the required builds and deployments.release.yml or equivalent that promotes artefacts through environments with gates.world-class-engineering and git-collaboration-workflow for the baseline.cicd-pipeline-design for the high-level pipeline shape.cicd-devsecops for secrets and scan policy, deployment-release-engineering for rollout, observability-monitoring for post-deploy verification, cloud-architecture for the target infrastructure shape.deploy-dev.yml, deploy-staging.yml, deploy-prod.yml)Fastfile for iOS and Android when mobile apps shiprollback.yml) triggered manually with artefact-digest inputname: is human-readable; the filename is the stable reference (build-web.yml).on: push, pull_request, workflow_dispatch, schedule, release, or workflow_call for reusables.ubuntu-latest by default; pin to ubuntu-24.04 for reproducibility on security-critical paths.concurrency blocks guarantee no two runs of the same workflow race on the same environment.concurrency:
group: deploy-${{ github.ref }}-${{ matrix.environment }}
cancel-in-progress: false
Every workflow starts with an explicit minimum:
permissions:
contents: read
id-token: write # for OIDC
packages: read
Add other scopes (pull-requests: write, issues: write) only when a job needs them.
AWS_ACCESS_KEY_ID in any repo.hashicorp/vault-action with OIDC auth.permissions:
id-token: write
contents: read
steps:
- uses: actions/checkout@v4
- uses: aws-actions/configure-aws-credentials@v4
with:
role-to-assume: arn:aws:iam::123456789012:role/github-actions-deploy
aws-region: eu-west-1
- run: aws sts get-caller-identity
actions/cache keyed on package-lock.json; restore ~/.npm.actions/cache on ~/.gradle/caches and ~/.gradle/wrapper.actions/cache on Pods/ keyed on Podfile.lock.actions/cache on ~/.cache/pip keyed on requirements*.txt.type=gha cache with mode=max.See references/github-actions-workflows.md for full caching snippets.
install → lint → test → build → docker build → push ECR → deploy
npm ci for reproducibility.composer install → PHPStan → PHPUnit → rsync/ssh deploy
composer.lock.rsync -avz --delete or a containerised image.linux/amd64,linux/arm64) only when the runtime actually differs; do not do it by reflex.feature branch → pull request checks → merge to main → build+push once →
deploy dev → automated tests → deploy staging → manual approval → deploy prod
Rules:
production environment requires a human reviewer and a passing staging smoke test.workflow_dispatch inputs (image_digest), not free-form shell.jobs:
deploy:
environment:
name: production
url: https://app.example.com
runs-on: ubuntu-24.04
steps: ...
Add a scheduled staging re-deploy (nightly or weekly) to catch drift between what is in main and what is actually live.
rollback.yml.rollback.yml accepts image_digest and environment as inputs, assumes the OIDC role, and re-deploys without a build step. Keep the trigger authenticated and audited.
Record a reason on rollback. If three rollbacks happen inside a week for the same service, freeze deploys and investigate — do not keep re-deploying hoping the next one works.
actionlint as a required status check.actionlint via the CLI. Codex users on the same repo work from the same files — nothing platform-specific goes in workflow YAML.data-ai
Use when adding AI-powered analytics to a SaaS platform — semantic search over business data, natural language queries, trend detection, anomaly alerts, and AI-generated insights for dashboards. Covers embeddings, NL2SQL, and per-tenant analytics...
data-ai
Design AI-powered analytics dashboards — what metrics to show, how to display AI predictions and confidence, drill-down patterns, KPI cards, trend visualisation, AI Insights panels, export design, and role-based dashboard variants. Invoke when...
development
Use when designing, building, reviewing, or upgrading production software systems that must be secure, performant, maintainable, scalable, and user-centered. Apply before writing specs, code, architecture, APIs, databases, mobile apps, SaaS platforms, or ERP systems.
development
Professional web app UI using commercial templates (Tabler/Bootstrap 5) with strong frontend design direction when needed. Use for CRUD interfaces, dashboards, admin panels with SweetAlert2, DataTables, Flatpickr. Clone seeder-page.php, use...