This repository was archived by the owner on Apr 5, 2026. It is now read-only.
feat: devkit promote command for pattern promotion (#86) #121
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: Lint | |
| on: | |
| push: | |
| branches: [main] | |
| pull_request: | |
| branches: [main] | |
| jobs: | |
| markdown: | |
| name: Markdown lint | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - uses: DavidAnson/markdownlint-cli2-action@v19 | |
| with: | |
| globs: "**/*.md" | |
| validate-skills: | |
| name: Validate skill routing | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: Check skill routing targets exist | |
| run: | | |
| errors=0 | |
| for skill_md in claude/skills/*/SKILL.md; do | |
| skill_dir=$(dirname "$skill_md") | |
| for wf in $(grep -oP 'workflows/[a-z0-9-]+\.md' "$skill_md" | sort -u); do | |
| if [ ! -f "$skill_dir/$wf" ]; then | |
| echo "::error file=$skill_md::References $wf but file not found at $skill_dir/$wf" | |
| errors=$((errors + 1)) | |
| fi | |
| done | |
| done | |
| if [ "$errors" -gt 0 ]; then | |
| echo "Found $errors missing workflow file(s)" | |
| exit 1 | |
| fi | |
| echo "All skill routing targets exist" | |
| verify-skill-count: | |
| name: Verify skill counts | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: README skill count matches directory count | |
| run: | | |
| ACTUAL=$(ls -d claude/skills/*/ | wc -l | tr -d ' ') | |
| README_COUNT=$(grep -oP '\d+(?= skills)' README.md | head -1) | |
| if [ "$ACTUAL" != "$README_COUNT" ]; then | |
| echo "::error file=README.md::README says $README_COUNT skills but claude/skills/ has $ACTUAL directories. Update README." | |
| exit 1 | |
| fi | |
| echo "OK: $ACTUAL skills match README" | |
| - name: Verify script skill list matches directories | |
| run: | | |
| LISTED=$(grep 'for skill in' setup/legacy/verify.sh | sed 's/.*for skill in //;s/;.*//' | tr ' ' '\n' | sort) | |
| PRESENT=$(ls claude/skills/ | sort) | |
| MISSING=$(comm -23 <(echo "$LISTED") <(echo "$PRESENT")) | |
| if [ -n "$MISSING" ]; then | |
| echo "::error file=setup/legacy/verify.sh::Skills listed in verify.sh but not found in claude/skills/: $MISSING" | |
| exit 1 | |
| fi | |
| UNLISTED=$(comm -13 <(echo "$LISTED") <(echo "$PRESENT")) | |
| if [ -n "$UNLISTED" ]; then | |
| echo "::warning::Skills in claude/skills/ not listed in verify.sh: $UNLISTED" | |
| fi | |
| echo "OK: verify.sh skill list is accurate" |