Synthèse automatique
Ce skill guide la configuration des workflows GitHub Actions, la publication automatisée via Changesets et la gestion des hooks Husky pour le projet Saleor Configurator.
Points forts
- Fournit des modèles YAML complets et prêts à l'emploi pour test-on-pr, release et changeset-bot
- Décrit le flux de release Changesets étape par étape, de la création du changeset à la publication npm
- Inclut une table des vérifications obligatoires (typecheck, lint, test, build) et des commandes gh CLI pour le diagnostic
- Couvre les hooks pre-push Husky et la gestion des secrets (GITHUB_TOKEN, NPM_TOKEN)
Limites
- Contenu très lié au projet Saleor Configurator (pnpm, Biome, Vitest, Node 20) et peu réutilisable tel quel ailleurs
- La section changeset-bot et la résolution des échecs CI sont annoncées dans le sommaire mais restent partielles
- Suppose une familiarité avec GitHub Actions, Changesets et le CLI gh
À utiliser lorsqu'il faut créer ou modifier un workflow GitHub Actions, automatiser une release Changesets ou diagnostiquer un échec de CI sur ce dépôt.
À éviter pour des pipelines d'un autre fournisseur (GitLab CI, Jenkins) ou pour un projet utilisant npm/yarn sans Changesets.
Analyse de sécurité
PrudenceThe skill primarily documents configuration and management of GitHub CI/CD pipelines. The allowed Bash(gh:*) tool can perform network operations and alter repository state (e.g., creating PRs, releases), which is legitimate but warrants caution. No destructive, exfiltrating, or obfuscated actions are present.
- •Uses Bash with gh CLI to manage GitHub Actions, PRs, and releases, which can modify repository state and trigger CI workflows.
- •Includes shell snippets with git commit and pnpm commands that may be executed if tool restrictions are bypassed.
Exemples
Create a GitHub Actions workflow that runs typecheck, lint, test, and build on every pull request targeting main, using pnpm 9 and Node 20 with pnpm caching.Set up a release.yml workflow that uses changesets/action to open a Version Packages PR on main and publish to npm once it merges, wiring GITHUB_TOKEN and NPM_TOKEN.The test-on-pr workflow is failing on the install step — use gh to pull the failing run logs and tell me whether the frozen lockfile is out of sync.name: managing-github-ci description: "Configures GitHub Actions workflows and CI/CD pipelines. Manages automated releases via Changesets, PR validation, and Husky hooks. Troubleshoots CI failures. Triggers on: GitHub Actions, CI pipeline, workflow, release automation, Husky hooks, gh CLI, workflow failure." allowed-tools: "Read, Grep, Glob, Write, Edit, Bash(gh:*)"
GitHub CI Automation
Purpose
Guide the configuration and management of GitHub Actions workflows, release automation, and CI/CD pipelines for the Saleor Configurator project.
When to Use
- Creating or modifying GitHub Actions workflows
- Setting up automated releases
- Troubleshooting CI failures
- Configuring pre-commit/pre-push hooks
- Managing Changesets releases
Table of Contents
- Project CI Architecture
- Workflow: test-on-pr.yml
- Workflow: release.yml
- Workflow: changeset-bot.yml
- Pre-Push Hooks (Husky)
- Changesets Configuration
- GitHub CLI Commands
- Troubleshooting CI Failures
- Adding New Workflows
- Secrets Management
- References
Project CI Architecture
.github/
├── workflows/
│ ├── test-on-pr.yml # PR validation
│ ├── release.yml # Automated releases
│ └── changeset-bot.yml # Changeset automation
└── ...
.husky/
├── pre-push # Pre-push hooks
└── ...
.changeset/
├── config.json # Changeset configuration
└── *.md # Pending changesets
Workflow: test-on-pr.yml
Purpose: Validate PRs before merge
name: Test on PR
on:
pull_request:
branches: [main]
jobs:
test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Setup pnpm
uses: pnpm/action-setup@v2
with:
version: 9
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: '20'
cache: 'pnpm'
- name: Install dependencies
run: pnpm install --frozen-lockfile
- name: Type check
run: pnpm typecheck
- name: Lint
run: pnpm lint
- name: Test
run: pnpm test
- name: Build
run: pnpm build
Required Checks
| Check | Command | Purpose |
|-------|---------|---------|
| Type check | pnpm typecheck | TypeScript validation |
| Lint | pnpm lint | Biome linting |
| Test | pnpm test | Vitest test suite |
| Build | pnpm build | Compilation check |
Workflow: release.yml
Purpose: Automated npm releases via Changesets
name: Release
on:
push:
branches: [main]
concurrency: ${{ github.workflow }}-${{ github.ref }}
jobs:
release:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Setup pnpm
uses: pnpm/action-setup@v2
with:
version: 9
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: '20'
cache: 'pnpm'
registry-url: 'https://registry.npmjs.org'
- name: Install dependencies
run: pnpm install --frozen-lockfile
- name: Build
run: pnpm build
- name: Create Release Pull Request or Publish
uses: changesets/action@v1
with:
publish: pnpm publish:ci-prod
version: pnpm changeset version
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
NPM_TOKEN: ${{ secrets.NPM_TOKEN }}
Release Flow
1. Developer creates changeset → pnpm changeset
2. PR merged to main
3. Changesets action runs:
a. If changesets exist → Creates "Version Packages" PR
b. If version PR merged → Publishes to npm
Workflow: changeset-bot.yml
Purpose: Comment on PRs about missing changesets
name: Changeset Bot
on:
pull_request:
types: [opened, synchronize]
jobs:
bot:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Changeset Bot
uses: changesets/bot@v1
with:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
Pre-Push Hooks (Husky)
Located in .husky/pre-push:
#!/usr/bin/env sh
. "$(dirname -- "$0")/_/husky.sh"
# Generate schema documentation before push
pnpm generate-schema-docs
git add docs/SCHEMA.md
# Check if there are changes to commit
if ! git diff --staged --quiet; then
git commit -m "docs: update schema documentation"
fi
Hook Behavior
- Runs
generate-schema-docsbefore every push - Auto-commits schema documentation updates
- Ensures docs stay in sync with schema changes
Changesets Configuration
Located in .changeset/config.json:
{
"$schema": "https://unpkg.com/@changesets/config@3.0.0/schema.json",
"changelog": "@changesets/cli/changelog",
"commit": false,
"fixed": [],
"linked": [],
"access": "public",
"baseBranch": "main",
"updateInternalDependencies": "patch",
"ignore": []
}
Changeset Types
| Type | When to Use |
|------|-------------|
| patch | Bug fixes, documentation, refactoring |
| minor | New features, non-breaking enhancements |
| major | Breaking changes, API modifications |
GitHub CLI Commands
Check Workflow Status
# List recent workflow runs
gh run list --limit 10
# View specific run
gh run view <run-id>
# Watch running workflow
gh run watch <run-id>
PR Management
# Create PR
gh pr create --title "feat: new feature" --body "Description"
# List PRs
gh pr list
# View PR details
gh pr view <pr-number>
# Check PR status
gh pr checks <pr-number>
Release Management
# List releases
gh release list
# Create release (manual)
gh release create v1.0.0 --title "v1.0.0" --notes "Release notes"
# View release
gh release view v1.0.0
Troubleshooting CI Failures
Common Failures
Type Check Fails:
# Reproduce locally
pnpm typecheck
# or
npx tsc --noEmit
Lint Fails:
# Check and auto-fix
pnpm lint
pnpm check:fix
Tests Fail:
# Run specific test
pnpm test -- --filter=<test-file>
# Run with verbose output
pnpm test -- --reporter=verbose
Build Fails:
# Reproduce locally
pnpm build
Debugging Workflow
- Check workflow logs in GitHub Actions UI
- Reproduce failure locally
- Fix the issue
- Push fix to PR
- Re-run failed jobs:
gh run rerun <run-id>
Rate Limiting
If npm publish fails due to rate limiting:
- Wait and retry
- Check npm status: https://status.npmjs.org/
Adding New Workflows
Template Structure
name: Workflow Name
on:
# Trigger events
push:
branches: [main]
pull_request:
branches: [main]
jobs:
job-name:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Setup pnpm
uses: pnpm/action-setup@v2
with:
version: 9
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: '20'
cache: 'pnpm'
- name: Install dependencies
run: pnpm install --frozen-lockfile
# Add your steps here
Best Practices
- Always use
--frozen-lockfilefor installs - Cache pnpm store for faster runs
- Use specific action versions (@v4, not @latest)
- Set
concurrencyto prevent duplicate runs - Use secrets for sensitive values
Secrets Management
Required Secrets
| Secret | Purpose | Where Set |
|--------|---------|-----------|
| GITHUB_TOKEN | Auto-provided | GitHub |
| NPM_TOKEN | npm publishing | Repository Settings |
Adding Secrets
- Go to repository Settings
- Navigate to Secrets and variables → Actions
- Click "New repository secret"
- Add name and value
References
Skill Reference Files
- Workflow Templates - Reusable workflow patterns
- Troubleshooting Guide - Detailed debugging patterns
Project Resources
{baseDir}/.github/workflows/- Workflow files{baseDir}/.husky/- Git hooks{baseDir}/.changeset/- Changeset configuration
External Documentation
- GitHub Actions docs: https://docs.github.com/en/actions
- Changesets docs: https://github.com/changesets/changesets
Related Skills
- Creating releases: See
creating-changesetsfor changeset creation - Local validation: See
validating-pre-commitfor reproducing CI checks locally
Du fichier au premier essai
Le téléchargement contient exactement le contenu affiché sur cette fiche. Cette copie peut différer de la dernière version du dépôt source.
Consulter la source et ses fichiers annexesCe téléchargement contient uniquement SKILL.md. Les scripts, références, modèles et dépendances éventuels ne sont pas inclus. Récupérez les fichiers nécessaires depuis la source en conservant leur arborescence avant de poursuivre.
1. Télécharger le fichier
Télécharger SKILL.mdDepuis la racine d’un projet de test, enregistrez le fichier sous .skill-downloads/manage-github-actions-ci-cd-mts7ikpo/SKILL.md, ou utilisez la commande suivante. Ce dossier sert à examiner la skill avant son installation.
Commande pour macOS/Linux ou WSL : un shell POSIX et curl sont nécessaires. Sous Windows sans WSL, utilisez le bouton de téléchargement et créez le dossier manuellement.
mkdir -p '.skill-downloads/manage-github-actions-ci-cd-mts7ikpo' && curl --fail --show-error --location 'https://skills-guides.com/api/skills/manage-github-actions-ci-cd-mts7ikpo/download' --output '.skill-downloads/manage-github-actions-ci-cd-mts7ikpo/SKILL.md.part' && mv '.skill-downloads/manage-github-actions-ci-cd-mts7ikpo/SKILL.md.part' '.skill-downloads/manage-github-actions-ci-cd-mts7ikpo/SKILL.md'2. Vérifier les prérequis
Lisez SKILL.md avant de l’utiliser. Si le fichier cite des scripts ou services externes, examinez-les et préparez les accès nécessaires dans votre environnement de test.
Outils déclarés par l’auteur (à vérifier dans votre agent) : Read, Grep, Glob, Write, Edit, Bash(gh:*)
Aucune section de prérequis reconnue dans ce fichier. Cela ne signifie pas qu’il est autonome : les bibliothèques, outils et accès peuvent être cités ailleurs dans le contenu ou dans le dépôt source.
Les plateformes de la fiche sont des indications du catalogue. Les chemins ci-dessous suivent la documentation des outils ; ils ne prouvent pas que cette skill y a été exécutée. Aucune version minimale de ces outils n’est attestée pour cette fiche.
3. Charger la skill
Après vérification, copiez le dossier complet dans le projet avec l’une des commandes ci-dessous, puis ouvrez une nouvelle session de l’outil. La commande s’arrête si un dossier du même nom existe déjà : comparez les fichiers avant de le remplacer.
Claude Code
test -f '.skill-downloads/manage-github-actions-ci-cd-mts7ikpo/SKILL.md' && test -s '.skill-downloads/manage-github-actions-ci-cd-mts7ikpo/SKILL.md' && mkdir -p '.claude/skills' && test ! -e '.claude/skills/managing-github-ci' && cp -R '.skill-downloads/manage-github-actions-ci-cd-mts7ikpo' '.claude/skills/managing-github-ci'Cursor
test -f '.skill-downloads/manage-github-actions-ci-cd-mts7ikpo/SKILL.md' && test -s '.skill-downloads/manage-github-actions-ci-cd-mts7ikpo/SKILL.md' && mkdir -p '.cursor/skills' && test ! -e '.cursor/skills/managing-github-ci' && cp -R '.skill-downloads/manage-github-actions-ci-cd-mts7ikpo' '.cursor/skills/managing-github-ci'Codex
test -f '.skill-downloads/manage-github-actions-ci-cd-mts7ikpo/SKILL.md' && test -s '.skill-downloads/manage-github-actions-ci-cd-mts7ikpo/SKILL.md' && mkdir -p '.agents/skills' && test ! -e '.agents/skills/managing-github-ci' && cp -R '.skill-downloads/manage-github-actions-ci-cd-mts7ikpo' '.agents/skills/managing-github-ci'OpenSkills
OpenSkills doit déjà être installé. La procédure locale install/read est contrôlée avec OpenSkills 1.5.0, qui exige Node.js ≥ 20.6.0. Aucun slug du catalogue n’est résolu automatiquement.
Installation officielle d’OpenSkillsopenskills install './.skill-downloads/manage-github-actions-ci-cd-mts7ikpo'openskills read 'manage-github-actions-ci-cd-mts7ikpo'La lecture doit afficher le contenu du fichier installé et son dossier de base. Elle ne lance ni la skill ni ses dépendances.
Pour un agent qui lit AGENTS.md, synchronisez ensuite l’index. Cette commande modifie AGENTS.md : relisez le diff avant de l’utiliser.
openskills syncMode manuel ou autre outil : joignez SKILL.md à une conversation, ou ouvrez-le dans un agent capable de lire les fichiers. Ajoutez les ressources annexes nécessaires. Il n’existe pas de dossier universel reconnu par tous les outils.
4. Faire un premier essai
Utilisez une entrée courte et fictive : un endpoint d’API, un petit document ou un brief d’interface. Dans une nouvelle conversation, joignez le fichier ou donnez son chemin à l’agent, puis adaptez cette demande :
Lis .skill-downloads/manage-github-actions-ci-cd-mts7ikpo/SKILL.md et applique ses instructions à cet exemple : [décrire une entrée de test]. Indique les fichiers, dépendances ou accès qui manquent. Produis le résultat demandé par la skill sans inventer de données ni exécuter de script non examiné.Résultat attendu : une sortie correspondant aux instructions de la skill, ou une liste précise des prérequis manquants. Une simple confirmation de lecture ne valide pas le premier usage. Si une ressource externe est indisponible, ce parcours reste à tester.
Configurer un canal de discussion avec SecretRefs
DevOps
Configurez des canaux de discussion avec des commandes non interactives, les secrets étant uniquement des SecretRefs. Couvre les étapes de collecte, modification, réparation et vérification.
Enquêter sur les échecs CI de ClickHouse
DevOps
Investigue un échec CI de ClickHouse de bout en bout à partir d'une URL de PR ou de rapport S3. Récupère les tests échoués, classe flaky vs vraie régression, et cherche des issues/fixes existants.
Revue de PR Ansible
DevOps
Examine une PR Ansible selon le processus standardisé du projet, incluant la validation des changelogs, la couverture de tests et le suivi des commentaires.