Nm Attune Workflow Setup
by @athola
Configures GitHub Actions CI/CD workflows for testing, linting, and deployment
clawhub install nm-attune-workflow-setupπ About This Skill
name: workflow-setup description: | Configure GitHub Actions CI/CD workflows for automated testing, linting, and deployment pipelines version: 1.9.4 triggers: - github-actions - ci-cd - workflows - automation - testing metadata: {"openclaw": {"homepage": "https://github.com/athola/claude-night-market/tree/master/plugins/attune", "emoji": "\ud83e\udd9e"}} source: claude-night-market source_plugin: attune
> Night Market Skill β ported from claude-night-market/attune. For the full experience with agents, hooks, and commands, install the Claude Code plugin.
Table of Contents
Workflow Setup Skill
Set up GitHub Actions workflows for continuous integration and deployment.
When To Use
When NOT To Use
/attune:upgrade-project instead for updating existing workflowsStandard Workflows
Python Workflows
1. test.yml - Run pytest on push/PR 2. lint.yml - Run ruff linting 3. typecheck.yml - Run mypy type checking 4. publish.yml - Publish to PyPI on release
Rust Workflows
1. ci.yml - Combined test/lint/check workflow 2. release.yml - Build and publish releases
TypeScript Workflows
1. test.yml - Run Jest tests 2. lint.yml - Run ESLint 3. build.yml - Build for production 4. 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 ProjectDetectordetector = 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 listOr 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.Related Skills
Skill(attune:project-init) - Full project initializationSkill(sanctum:pr-prep) - PR preparation with CI checksTroubleshooting
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
β‘ When to Use
π Tips & Best Practices
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