Claude-skill-registry-data managing-github-ci
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.
install
source · Clone the upstream repo
git clone https://github.com/majiayu000/claude-skill-registry-data
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/majiayu000/claude-skill-registry-data "$T" && mkdir -p ~/.claude/skills && cp -r "$T/data/managing-github-ci" ~/.claude/skills/majiayu000-claude-skill-registry-data-managing-github-ci && rm -rf "$T"
manifest:
data/managing-github-ci/SKILL.mdsource content
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 | | TypeScript validation |
| Lint | | Biome linting |
| Test | | Vitest test suite |
| 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
before every pushgenerate-schema-docs - 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 |
|---|---|
| Bug fixes, documentation, refactoring |
| New features, non-breaking enhancements |
| 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
for installs--frozen-lockfile - Cache pnpm store for faster runs
- Use specific action versions (@v4, not @latest)
- Set
to prevent duplicate runsconcurrency - Use secrets for sensitive values
Secrets Management
Required Secrets
| Secret | Purpose | Where Set |
|---|---|---|
| Auto-provided | GitHub |
| 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
- Workflow files{baseDir}/.github/workflows/
- Git hooks{baseDir}/.husky/
- Changeset configuration{baseDir}/.changeset/
External Documentation
- GitHub Actions docs: https://docs.github.com/en/actions
- Changesets docs: https://github.com/changesets/changesets
Related Skills
- Creating releases: See
for changeset creationcreating-changesets - Local validation: See
for reproducing CI checks locallyvalidating-pre-commit