Skip to content

Merge pull request #55 from nguyenthienthanh/chore/release-3.8.0-alph… #223

Merge pull request #55 from nguyenthienthanh/chore/release-3.8.0-alph…

Merge pull request #55 from nguyenthienthanh/chore/release-3.8.0-alph… #223

Workflow file for this run

name: Plugin Validation
on:
push:
branches: [main]
pull_request:
branches: [main]
jobs:
validate-counts:
name: Validate Component Counts
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Count components
run: |
echo "## Component Count Validation" >> $GITHUB_STEP_SUMMARY
echo "" >> $GITHUB_STEP_SUMMARY
AGENTS=$(ls aura-frog/agents/*.md 2>/dev/null | grep -v README | wc -l | tr -d ' ')
SKILLS=$(ls -d aura-frog/skills/*/SKILL.md 2>/dev/null | wc -l | tr -d ' ')
COMMANDS=$(find aura-frog/commands -name '*.md' ! -name 'README.md' | wc -l | tr -d ' ')
RULES=$(find aura-frog/rules -name '*.md' ! -name 'README.md' | wc -l | tr -d ' ')
HOOKS=$(ls aura-frog/hooks/*.cjs 2>/dev/null | wc -l | tr -d ' ')
echo "| Component | Count |" >> $GITHUB_STEP_SUMMARY
echo "|-----------|-------|" >> $GITHUB_STEP_SUMMARY
echo "| Agents | $AGENTS |" >> $GITHUB_STEP_SUMMARY
echo "| Skills | $SKILLS |" >> $GITHUB_STEP_SUMMARY
echo "| Commands | $COMMANDS |" >> $GITHUB_STEP_SUMMARY
echo "| Rules | $RULES |" >> $GITHUB_STEP_SUMMARY
echo "| Hooks | $HOOKS |" >> $GITHUB_STEP_SUMMARY
# Verify expected counts from plugin.json
DESC=$(grep '"description"' aura-frog/.claude-plugin/plugin.json)
# plugin.json description uses "15 agents" not "15 specialized agents" β€” fixed in v3.7.2.
EXPECTED_AGENTS=$(echo "$DESC" | grep -oP '\d+ agents' | grep -oP '\d+' | head -1)
EXPECTED_SKILLS=$(echo "$DESC" | grep -oP '\d+ skills' | grep -oP '\d+' | head -1)
EXPECTED_COMMANDS=$(echo "$DESC" | grep -oP '\d+ commands' | grep -oP '\d+' | head -1)
EXPECTED_HOOKS=$(echo "$DESC" | grep -oP '\d+ hooks' | grep -oP '\d+' | head -1)
EXPECTED_RULES=$(echo "$DESC" | grep -oP '\d+ rules' | grep -oP '\d+' | head -1)
PASS=true
[ "$AGENTS" != "$EXPECTED_AGENTS" ] && echo "❌ Agents: expected $EXPECTED_AGENTS, got $AGENTS" && PASS=false
[ "$SKILLS" != "$EXPECTED_SKILLS" ] && echo "❌ Skills: expected $EXPECTED_SKILLS, got $SKILLS" && PASS=false
[ "$COMMANDS" != "$EXPECTED_COMMANDS" ] && echo "❌ Commands: expected $EXPECTED_COMMANDS, got $COMMANDS" && PASS=false
[ "$HOOKS" != "$EXPECTED_HOOKS" ] && echo "❌ Hooks: expected $EXPECTED_HOOKS, got $HOOKS" && PASS=false
[ "$RULES" != "$EXPECTED_RULES" ] && echo "❌ Rules: expected $EXPECTED_RULES, got $RULES" && PASS=false
if [ "$PASS" = true ]; then
echo "" >> $GITHUB_STEP_SUMMARY
echo "βœ… All counts match plugin.json" >> $GITHUB_STEP_SUMMARY
else
echo "" >> $GITHUB_STEP_SUMMARY
echo "❌ Count mismatch detected" >> $GITHUB_STEP_SUMMARY
exit 1
fi
validate-hooks:
name: Validate Hook Syntax
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: '20'
- name: Check hook syntax
run: |
echo "## Hook Syntax Validation" >> $GITHUB_STEP_SUMMARY
echo "" >> $GITHUB_STEP_SUMMARY
PASS=true
for hook in aura-frog/hooks/*.cjs aura-frog/hooks/lib/*.cjs; do
[ ! -f "$hook" ] && continue
name=$(basename "$hook")
if node --check "$hook" 2>/dev/null; then
echo "βœ… $name" >> $GITHUB_STEP_SUMMARY
else
echo "❌ $name β€” syntax error" >> $GITHUB_STEP_SUMMARY
PASS=false
fi
done
[ "$PASS" = false ] && exit 1
echo "" >> $GITHUB_STEP_SUMMARY
echo "All hooks parse successfully" >> $GITHUB_STEP_SUMMARY
- name: "Check hook parity (Fires: header vs hooks.json registration)"
run: node aura-frog/scripts/ci/validate-hook-parity.cjs
validate-structure:
name: Validate File Structure
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Check key files exist
run: |
echo "## File Structure Validation" >> $GITHUB_STEP_SUMMARY
echo "" >> $GITHUB_STEP_SUMMARY
PASS=true
check_exists() {
if [ -e "$1" ]; then
echo "βœ… $1" >> $GITHUB_STEP_SUMMARY
else
echo "❌ $1 β€” MISSING" >> $GITHUB_STEP_SUMMARY
PASS=false
fi
}
# File-structure spot check (v3.7.2): point at files that actually
# exist on the current tree. Routing-related deletions/renames since
# earlier versions: router.md removed (agent-detector skill owns
# routing); workflow-orchestrator β†’ run-orchestrator (renamed);
# CHANGELOG.md lives at docs/reference/, not aura-frog/.
check_exists "aura-frog/.claude-plugin/plugin.json"
check_exists "aura-frog/CLAUDE.md"
check_exists "docs/reference/CHANGELOG.md"
check_exists "aura-frog/hooks/hooks.json"
check_exists "aura-frog/rules/core/"
check_exists "aura-frog/rules/agent/"
check_exists "aura-frog/rules/workflow/"
check_exists "aura-frog/agents/lead.md"
check_exists "aura-frog/skills/agent-detector/SKILL.md"
check_exists "aura-frog/skills/run-orchestrator/SKILL.md"
check_exists "aura-frog/skills/plan-orchestrator/SKILL.md"
check_exists "aura-frog/.mcp.json"
[ "$PASS" = false ] && exit 1
echo "" >> $GITHUB_STEP_SUMMARY
echo "All key files present" >> $GITHUB_STEP_SUMMARY
performance-report:
name: Performance Report
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Run performance measurement
run: |
echo "## Performance Report" >> $GITHUB_STEP_SUMMARY
echo '```' >> $GITHUB_STEP_SUMMARY
bash aura-frog/scripts/measure-performance.sh >> $GITHUB_STEP_SUMMARY
echo '```' >> $GITHUB_STEP_SUMMARY