justfile 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. # claude-mods justfile
  2. # Run tasks with: just <task>
  3. # Default: list available tasks
  4. default:
  5. @just --list
  6. # Run all validation tests
  7. test:
  8. @echo "Running claude-mods validation..."
  9. @bash tests/validate.sh
  10. # Validate YAML frontmatter only
  11. validate-yaml:
  12. @bash tests/validate.sh --yaml-only
  13. # Check file naming conventions
  14. validate-names:
  15. @bash tests/validate.sh --names-only
  16. # Windows test runner
  17. test-win:
  18. powershell -ExecutionPolicy Bypass -File tests/validate.ps1
  19. # Count extensions
  20. stats:
  21. @echo "Agents: $(find agents -name '*.md' | wc -l)"
  22. @echo "Commands: $(find commands -name '*.md' | wc -l)"
  23. @echo "Skills: $(find skills -name 'SKILL.md' | wc -l)"
  24. @echo "Rules: $(find templates/rules -name '*.md' 2>/dev/null | wc -l)"
  25. # List all agents
  26. list-agents:
  27. @ls -1 agents/*.md | xargs -n1 basename | sed 's/\.md$//'
  28. # List all commands
  29. list-commands:
  30. @find commands -name '*.md' -not -path '*/\.*' | xargs -n1 basename | sed 's/\.md$//' | sort -u
  31. # List all skills
  32. list-skills:
  33. @ls -1 skills/*/SKILL.md | xargs -n1 dirname | xargs -n1 basename
  34. # List all rules
  35. list-rules:
  36. @find templates/rules -name '*.md' 2>/dev/null | xargs -n1 basename | sed 's/\.md$//' || echo "(none)"
  37. # Validate settings template
  38. validate-settings:
  39. @echo "Validating settings template..."
  40. @jq empty templates/settings.local.json && echo "Valid JSON" || echo "Invalid JSON"
  41. # Validate plugin + marketplace manifests (.claude-plugin/)
  42. # Uses the authoritative `claude plugin validate` when available.
  43. validate-plugin:
  44. @echo "Validating plugin manifests..."
  45. @test ! -f marketplace.json || (echo "ERROR: stray marketplace.json at repo root - move to .claude-plugin/" && exit 1)
  46. @claude plugin validate .
  47. @tmp="$(mktemp -d)"; mkdir -p "$tmp/.claude-plugin"; cp .claude-plugin/plugin.json "$tmp/.claude-plugin/plugin.json"; claude plugin validate "$tmp"; rm -rf "$tmp"