Skip to content

feat(skills): T-020 + T-021 — session-start.sh tech skills + ADR-012 #22

feat(skills): T-020 + T-021 — session-start.sh tech skills + ADR-012

feat(skills): T-020 + T-021 — session-start.sh tech skills + ADR-012 #22

Workflow file for this run

name: Validate Skill Integrity
on:
push:
paths:
- '.claude/skills/pm-thyrox/**'
- '.claude/CLAUDE.md'
pull_request:
paths:
- '.claude/skills/pm-thyrox/**'
- '.claude/CLAUDE.md'
jobs:
validate-skill:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Verify skill mapping
run: bash .claude/skills/pm-thyrox/scripts/verify-skill-mapping.sh
- name: Check SKILL.md size
run: |
LINES=$(wc -l < .claude/skills/pm-thyrox/SKILL.md)
echo "SKILL.md: $LINES lines"
if [ "$LINES" -gt 500 ]; then
echo "::error::SKILL.md exceeds 500 lines ($LINES)"
exit 1
fi
- name: Verify YAML frontmatter
run: |
if ! head -1 .claude/skills/pm-thyrox/SKILL.md | grep -q '```yml'; then
echo "::error::SKILL.md missing YAML frontmatter"
exit 1
fi
if ! grep -q '^name:' .claude/skills/pm-thyrox/SKILL.md; then
echo "::error::SKILL.md missing name field"
exit 1
fi
if ! grep -q '^description:' .claude/skills/pm-thyrox/SKILL.md; then
echo "::error::SKILL.md missing description field"
exit 1
fi
validate-commits:
runs-on: ubuntu-latest
if: github.event_name == 'pull_request'
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Check conventional commits
run: |
COMMITS=$(git log --format="%s" origin/${{ github.base_ref }}..HEAD)
PATTERN="^(feat|fix|docs|style|refactor|perf|test|build|ci|chore|revert)(\(.+\))?: .+"
FAILED=0
while IFS= read -r msg; do
if [ -n "$msg" ] && ! echo "$msg" | grep -qE "$PATTERN"; then
echo "::error::Non-conventional commit: $msg"
FAILED=1
fi
done <<< "$COMMITS"
if [ "$FAILED" -eq 1 ]; then
echo "Expected format: type(scope): description"
exit 1
fi
echo "All commits follow conventional format"