mcpbeat

Workflow Setup

athola/workflow-setup

Configures GitHub Actions CI/CD workflows for testing, linting, and deployment. Use when setting up automation for a Python, Rust, or TypeScript project.

2k tokens
context cost
the whole folder, loaded on every use
1
files
instructions only
0
copies elsewhere
how many repositories repackaged it
324
stars on the repo
on the repository, not the skill itself

Install

one command, takes just this skill from the repository
npx skills add https://github.com/athola/claude-night-market --skill workflow-setup

The instruction itself

21 sections, as written by the author

Table of Contents

  • When To Use
  • Standard Workflows
  • Python Workflows
  • Rust Workflows
  • TypeScript Workflows
  • Workflow
  • 1. Check Existing Workflows
  • 2. Identify Missing Workflows
  • 3. Render Workflow Templates
  • 4. Validate Workflows
  • Workflow Best Practices
  • Use Latest Action Versions
  • Matrix Testing (Python)
  • Caching Dependencies
  • Updating Workflows
  • Related Skills

Workflow Setup Skill

Set up GitHub Actions workflows for continuous integration and deployment.

When To Use

  • Need CI/CD for a new project
  • Adding missing workflows to existing project
  • Updating workflow versions to latest
  • Automating testing and quality checks
  • Setting up deployment pipelines

When NOT To Use

  • GitHub Actions workflows already configured and current
  • Project uses different CI platform (GitLab CI, CircleCI, etc.)
  • Not hosted on GitHub
  • Use /attune:upgrade-project instead for updating existing workflows

Standard Workflows

Python Workflows

  • test.yml - Run pytest on push/PR
  • lint.yml - Run ruff linting
  • typecheck.yml - Run mypy type checking
  • publish.yml - Publish to PyPI on release

Rust Workflows

  • ci.yml - Combined test/lint/check workflow
  • release.yml - Build and publish releases

TypeScript Workflows

  • test.yml - Run Jest tests
  • lint.yml - Run ESLint
  • build.yml - Build for production
  • deploy.yml - Deploy to hosting (Vercel, Netlify, etc.)

Workflow

1. Check Existing Workflows

ls -la .github/workflows/

Verification: Run the command with --help flag to verify availability.

2. Identify Missing Workflows

from project_detector import ProjectDetector

detector = ProjectDetector(Path.cwd())
language = detector.detect_language()

required_workflows = {
    "python": ["test.yml", "lint.yml", "typecheck.yml"],
    "rust": ["ci.yml"],
    "typescript": ["test.yml", "lint.yml", "build.yml"],
}

missing = detector.get_missing_configurations(language)

Verification: Run pytest -v to verify tests pass.

3. Render Workflow Templates

workflows_dir = Path(".github/workflows")
workflows_dir.mkdir(parents=True, exist_ok=True)

for workflow in required_workflows[language]:
    template = templates_dir / language / "workflows" / f"{workflow}.template"
    output = workflows_dir / workflow

    engine.render_file(template, output)
    print(f"✓ Created: {output}")

Verification: Run the command with --help flag to verify availability.

4. Validate Workflows

# Syntax check (requires act or gh CLI)
gh workflow list

# Or manually check YAML syntax
python3 -c "import yaml; yaml.safe_load(open('.github/workflows/test.yml'))"

Verification: Run pytest -v to verify tests pass.

Workflow Best Practices

Use Latest Action Versions

# Good - pinned to major version
- uses: actions/checkout@v4
- uses: actions/setup-python@v5

# Avoid - unpinned or outdated
- uses: actions/checkout@v2
- uses: actions/setup-python@latest

Verification: Run pytest -v to verify tests pass.

Matrix Testing (Python)

strategy:
  matrix:
    python-version: ["3.10", "3.11", "3.12"]
    os: [ubuntu-latest, macos-latest, windows-latest]

Verification: Run pytest -v to verify tests pass.

Caching Dependencies

- uses: actions/setup-python@v5
  with:
    python-version: '3.10'
    cache: 'pip'  # Cache pip dependencies

Verification: Run python --version to verify Python environment.

Shell Script Safety in Workflows

When writing inline shell scripts in workflows, ensure proper exit code handling:

# BAD - pipeline masks exit code
- run: |
    make typecheck 2>&1 | grep -v "^make\["
    echo "Typecheck passed"  # Runs even if make failed!

# GOOD - use pipefail
- run: |
    set -eo pipefail
    make typecheck 2>&1 | grep -v "^make\["

# GOOD - capture exit code explicitly
- run: |
    output=$(make typecheck 2>&1) || exit_code=$?
    echo "$output" | grep -v "^make\[" || true
    exit ${exit_code:-0}

For complex wrapper scripts, run /pensive:shell-review before integrating.

Updating Workflows

To update workflows to latest versions:

/attune:upgrade-project --component workflows

Verification: Run the command with --help flag to verify availability.

  • Skill(attune:project-init) - Full project initialization
  • Skill(sanctum:pr-prep) - PR preparation with CI checks

Exit Criteria

  • [ ] All required workflow files for the detected language exist under .github/workflows/

(Python: test.yml + lint.yml + typecheck.yml; Rust: ci.yml; TypeScript: test.yml + lint.yml +

build.yml) and contain valid YAML syntax verified by

python3 -c "import yaml; yaml.safe_load(open('...'))".

  • [ ] gh workflow list returns each created workflow file as an entry, confirming GitHub

recognizes the workflow definitions.

  • [ ] Any inline shell script in a workflow uses set -eo pipefail or explicit exit-code

capture; pipeline-masked failures (cmd | grep) without pipefail are flagged as errors.

  • [ ] If the project uses a CI platform other than GitHub Actions (GitLab CI, CircleCI), the

skill reports this incompatibility and stops rather than generating GitHub-specific files.

How to use it

Copy the folder

Take athola/workflow-setup from the repository into ~/.claude/skills for personal use, or into .claude/skills inside a project.

Check the name does not clash

The agent identifies a skill by the name field in its header. Two skills with the same name cannot sit side by side — one of them will be ignored.