Github actions expert
Skill WhiteMuush/Your-Claude-DevOps-Teacher/skills/github-actions-expert
My own configuration CLAUDE, Dev & Ops specialist and 100% educational.
npx -y skills add WhiteMuush/Your-Claude-DevOps-Teacher --skill github-actions-expertAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
2 things to look at
- no licenseNo license file was found in the repository. Code published without one is not open source by default, so using it at work is a question for whoever answers licensing questions where you are.
- 1 stars1 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
What its author says it does
Copied from the file, not written here
Maîtrise de GitHub Actions, workflows CI/CD, actions custom, matrix builds, secrets, environments et reusable workflows. Se déclenche avec "GitHub Actions", "workflow GitHub", "actions", "CI/CD GitHub", ".github/workflows".
SKILL.md
7.3 KB, as published. Nobody here has run it
GitHub Actions Expert
Workflow
-
Analyser le pipeline requis, Identifier les étapes (build, test, lint, SAST, déploiement), les triggers adaptés et les branches concernées.
Trigger Quand l'utiliser pushsurmainCI post-merge, déploiement continu pull_requestValidation avant merge, checks obligatoires scheduleJobs de maintenance, audit de sécurité nocturne workflow_dispatchDéploiement manuel avec paramètres release(published)Publication de packages, binaires -
Structurer le YAML, Organiser les jobs avec dépendances explicites et conditions.
name: CI on: push: branches: [main] pull_request: branches: [main] permissions: # Principe du moindre privilège global contents: read jobs: build: runs-on: ubuntu-latest permissions: contents: read steps: - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0 with: node-version: '22' cache: 'npm' - run: npm ci - run: npm run build test: needs: build runs-on: ubuntu-latest steps: - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 - run: npm ci && npm test -
Configurer les matrix builds, Tester plusieurs environnements sans duplication.
strategy: fail-fast: false # Ne pas annuler les autres axes si un échoue matrix: node: ['20', '22'] os: [ubuntu-latest, windows-latest] include: - node: '22' os: ubuntu-latest coverage: true # Variable custom pour un axe précis exclude: - node: '20' os: windows-latest runs-on: ${{ matrix.os }} steps: - if: matrix.coverage run: npm run test:coverage -
Gérer les secrets et variables, Hiérarchie : Organization > Repository > Environment.
env: DATABASE_URL: ${{ vars.DATABASE_URL }} # Variable non-sensible steps: - name: Deploy env: API_KEY: ${{ secrets.PROD_API_KEY }} # Secret injecté en env, jamais en arg CLI run: ./deploy.shOIDC (recommandé sur AWS/Azure/GCP), supprime les secrets statiques cloud :
permissions: id-token: write contents: read steps: - uses: aws-actions/configure-aws-credentials@e3dd6a429d7300a6a4c196c26e071d42e0343502 # v4 with: role-to-assume: arn:aws:iam::123456789012:role/GitHubActions aws-region: eu-west-1 -
Cacher les dépendances, Impact direct sur la durée du pipeline.
- uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 with: node-version: '22' cache: 'npm' # Gère le cache automatiquement (préférer cette option) # Ou cache manuel pour des cas custom : - uses: actions/cache@5a3ec84eff668545956fd18022155c47e93e2684 # v4 with: path: ~/.m2/repository key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }} restore-keys: | ${{ runner.os }}-maven- -
Créer des reusable workflows, Extraire les patterns communs dès qu'ils se répètent.
# .github/workflows/reusable-deploy.yml on: workflow_call: inputs: environment: required: true type: string secrets: DEPLOY_TOKEN: required: true jobs: deploy: runs-on: ubuntu-latest environment: ${{ inputs.environment }} steps: - run: echo "Deploying to ${{ inputs.environment }}"Appel depuis un autre workflow :
jobs: deploy-prod: uses: my-org/.github/.github/workflows/reusable-deploy.yml@main with: environment: production secrets: DEPLOY_TOKEN: ${{ secrets.DEPLOY_TOKEN }} -
Sécuriser le pipeline, Checklist obligatoire.
# Épingler sur SHA (jamais sur tag mutable) - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 # Attester la provenance du build permissions: id-token: write attestations: write steps: - uses: actions/attest-build-provenance@v2 with: subject-path: dist/app.tar.gz -
Optimiser les temps d'exécution, Techniques d'accélération.
# Skip jobs si les fichiers concernés n'ont pas changé - uses: dorny/paths-filter@de90cc6fb38fc0963ad72b210f1f284cd68cea36 # v3 id: changes with: filters: | backend: - 'src/**' - if: steps.changes.outputs.backend == 'true' run: npm run test:backend # Partager des artifacts entre jobs - uses: actions/upload-artifact@v4 with: name: dist path: dist/ retention-days: 1
Anti-patterns et pièges
| Anti-pattern | Risque | Correction |
|---|---|---|
uses: actions/checkout@v4 (tag mutable) | Supply chain attack | Épingler sur le SHA du commit |
permissions: write-all global | Élévation de privilèges | Déclarer seulement les permissions nécessaires par job |
Secrets affichés dans les run | Fuite dans les logs | Injecter via env: jamais via ${{ secrets.X }} dans les commandes shell |
continue-on-error: true sans logging | Masquer des défaillances silencieuses | Utiliser avec un step de reporting explicite |
Pas de timeout-minutes | Job bloqué indéfiniment = facture | Toujours fixer un timeout (par défaut GitHub : 6h) |
| Stocker des credentials dans les variables (vars) | Exposition accidentelle | Vars = config publique, secrets = credentials |
| Concurrence non gérée sur déploiements | Double déploiement | Utiliser concurrency avec cancel-in-progress: true |
# Gestion de la concurrence pour les déploiements
concurrency:
group: deploy-${{ github.ref }}
cancel-in-progress: true
Bonnes pratiques 2026
- Dependabot pour les actions, Ajouter
.github/dependabot.ymlpour maintenir les SHA à jour automatiquement :updates: - package-ecosystem: "github-actions" directory: "/" schedule: interval: "weekly" - Required status checks, Protéger
main: activer les branch protection rules avec au moins un check CI obligatoire etRequire branches to be up to date. - Environments de déploiement, Toujours utiliser un Environment GitHub (
Settings > Environments) avec reviewers pour la production ; les secrets d'environnement écrasent les secrets repo. - Self-hosted runners, Isoler dans des VMs éphémères (ou containers) ; ne jamais utiliser sur des repos publics sans
if: github.event.pull_request.head.repo.full_name == github.repositorypour bloquer les forks. - Audit des logs, Activer
ACTIONS_STEP_DEBUGetACTIONS_RUNNER_DEBUGen secrets (valeurtrue) pour le debugging ; les désactiver en production.
Gives 3 of the 12 instructions most ci cd skills give
Counted across 392 of the 394 authors here whose files we hold, read 2026-08-06
- pin third-party actions to full commit SHAshere, and in 33 of 392
- cache dependencies appropriatelyhere, and in 24 of 392, across 12 files
- optimize pipelines exceeding ten minutesin 20 of 392, across 6 files
- enforce all quality gates before mergein 20 of 392, across 7 files
- Configure branch protection rulesin 19 of 392, across 5 files
- use environments for deployment trackinghere, and in 19 of 392, across 7 files
- implement manual gates for productionin 19 of 392, across 7 files
- implement security scanningin 18 of 392, across 5 files
- fix failing code instead of disabling checksin 18 of 392, across 4 files
- use CI/CD variables for secretsin 18 of 392, across 6 files
- move checks upstream in the pipelinein 17 of 392, across 3 files
- use specific image tagsin 17 of 392, across 5 files
Said here and by no other author read
- declare minimal job permissions
- use concurrency for deployments
- skip jobs when paths are unchanged
- add dependabot for actions
- enable required status checks
Grouped from the skills themselves: near-identical wordings counted once, and counted by distinct author, so one author publishing three of these counts once.