| name | workflow-setup |
| description | Configure GitHub Actions workflows for CI/CD (test, lint, typecheck, publish) |
| Triggers | github, actions, publish, configure, workflows |
| model | claude-sonnet-4 |
| tools | ["Read","Write","Bash"] |
| version | 1.3.7 |
Table of Contents
Workflow Setup Skill
Set up GitHub Actions workflows for continuous integration and deployment.
Use When
- Need CI/CD for a new project
- Adding missing workflows to existing project
- Updating workflow versions to latest
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
gh workflow list
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
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
- 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'
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:
- run: |
make typecheck 2>&1 | grep -v "^make\["
echo "Typecheck passed" # Runs even if make failed!
- run: |
set -eo pipefail
make typecheck 2>&1 | grep -v "^make\["
- 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.
Related Skills
Skill(attune:project-init) - Full project initialization
Skill(sanctum:pr-prep) - PR preparation with CI checks
Troubleshooting
Common Issues
Command not found
Ensure all dependencies are installed and in PATH
Permission errors
Check file permissions and run with appropriate privileges
Unexpected behavior
Enable verbose logging with --verbose flag