Add TIL workflow system for Claude #26
Workflow file for this run
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: Test Claude | |
| on: | |
| # Run on pull requests to main | |
| pull_request: | |
| branches: [main] | |
| paths: | |
| - 'tools/claude/config/skills/**/*.py' | |
| - 'tools/claude/config/skills/**/pyproject.toml' | |
| - '.github/workflows/test-claude-skills.yml' | |
| # Run on pushes to main branch | |
| push: | |
| branches: [main] | |
| paths: | |
| - 'tools/claude/config/skills/**/*.py' | |
| - 'tools/claude/config/skills/**/pyproject.toml' | |
| - '.github/workflows/test-claude-skills.yml' | |
| # Allow manual triggering for debugging | |
| workflow_dispatch: | |
| jobs: | |
| skills: | |
| name: Skills | |
| runs-on: macos-latest | |
| steps: | |
| - name: Checkout repository | |
| uses: actions/checkout@v4 | |
| - name: Install uv | |
| run: brew install uv | |
| - name: Run ruff checks | |
| run: | | |
| echo "Running ruff checks on all skills..." | |
| cd tools/claude/config/skills | |
| for skill_dir in */; do | |
| if [[ -f "$skill_dir/pyproject.toml" ]]; then | |
| echo "" | |
| echo "Checking $skill_dir with ruff..." | |
| cd "$skill_dir" | |
| uv run --with ruff ruff check . || exit 1 | |
| cd .. | |
| echo "✅ Passed" | |
| fi | |
| done | |
| echo "" | |
| echo "✅ All ruff checks passed" | |
| - name: Run mypy checks | |
| run: | | |
| echo "Running mypy checks on all skills..." | |
| cd tools/claude/config/skills | |
| for skill_dir in */; do | |
| if [[ -f "$skill_dir/pyproject.toml" ]]; then | |
| echo "" | |
| echo "Type checking $skill_dir with mypy..." | |
| cd "$skill_dir" | |
| uv run --with mypy --with notion-client --with pydantic --with pytest mypy --python-version 3.11 . || exit 1 | |
| cd .. | |
| echo "✅ Passed" | |
| fi | |
| done | |
| echo "" | |
| echo "✅ All mypy checks passed" | |
| - name: Run tests | |
| run: | | |
| echo "Searching for skill tests..." | |
| cd tools/claude/config/skills | |
| FAILED_TESTS="" | |
| PASSED_TESTS=0 | |
| # Find all test_*.py files | |
| for test_file in */test_*.py; do | |
| if [[ -f "$test_file" ]]; then | |
| echo "" | |
| echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━" | |
| echo "Running: $test_file" | |
| echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━" | |
| if uv run "$test_file"; then | |
| ((PASSED_TESTS++)) | |
| echo "✅ Passed: $test_file" | |
| else | |
| FAILED_TESTS="$FAILED_TESTS$test_file\n" | |
| echo "❌ Failed: $test_file" | |
| fi | |
| fi | |
| done | |
| echo "" | |
| echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━" | |
| echo "Test Summary" | |
| echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━" | |
| if [[ -n "$FAILED_TESTS" ]]; then | |
| echo "❌ Failed tests:" | |
| echo -e "$FAILED_TESTS" | |
| echo "" | |
| echo "Passed: $PASSED_TESTS" | |
| exit 1 | |
| fi | |
| if [[ $PASSED_TESTS -eq 0 ]]; then | |
| echo "⚠️ No test files found" | |
| exit 0 | |
| fi | |
| echo "✅ All $PASSED_TESTS test file(s) passed" | |
| - name: Summary | |
| if: always() | |
| run: | | |
| echo "=== Test Summary ===" | |
| echo "Repository: ${{ github.repository }}" | |
| echo "Branch: ${{ github.ref_name }}" | |
| echo "Commit: ${{ github.sha }}" | |
| echo "Runner OS: ${{ runner.os }}" | |
| if [[ "${{ job.status }}" == "success" ]]; then | |
| echo "🎉 All Claude skill tests passed!" | |
| else | |
| echo "❌ Some tests failed. Check the logs above for details." | |
| fi |