From dev-core
Run all quality gates (lint, typecheck, test, env, i18n, license) and produce a structured pass/fail report. Triggers: "validate" | "check everything" | "quality check" | "pre-push check" | "are we green".
npx claudepluginhub roxabi/roxabi-plugins --plugin dev-coreThis skill is limited to using the following tools:
Let:
Runs quality gates for linting, type checking, unit tests with coverage, spec compliance, and smoke checks at local/CI/deploy levels.
Runs full validator workflow: executes agent-validate checks via Bash, extracts and reports failures from logs using Task, applies fixes before commit/push/PR. For 'run validator' requests.
Runs preflight code quality checks (linting, typechecking, tests) by auto-detecting configs in JavaScript/TypeScript, Python, Go, Rust, .NET projects and offers to fix issues.
Share bugs, ideas, or general feedback.
Let:
χ := quality check (name, command from {commands.*}, timeout, result)
σ := {✅ pass (exit 0), ❌ FAIL (exit ≠0), ⚠️ warn (exit 0 + warnings), ⏭ skip (¬in scope)}
Run all χ sequentially → single structured pass/fail report. ¬stop on first failure — run all for complete picture.
| Step | ID | Required | Notes |
|---|---|---|---|
| 1 | scope | ✓ | — |
| 2 | run-checks | ✓ | continue-on-failure |
| 3 | report | ✓ | — |
| 4 | failure-details | — | ∃ failures |
| 5 | verdict | ✓ | — |
/validate → Run all checks
/validate --quick → Lint + typecheck only (fastest)
/validate --full → All checks including license and coverage
/validate --affected → Only check files changed vs main
| Flag | χ set |
|---|---|
| (none) | lint, typecheck, test, env, i18n |
--quick | lint, typecheck |
--full | lint, typecheck, test, test:coverage, env, i18n, license |
--affected | lint (affected), typecheck:affected, test:affected |
∀ χ ∈ scope: run command, capture stdout+stderr + exit code. Record: name, σ, duration, error summary (first 5 lines if failed).
¬raw runner — always use {commands.*} from stack.yml. Command ¬defined → σ := ⏭ skip.
| χ | Command | Timeout |
|---|---|---|
| Lint | {commands.lint} | 60s |
| Typecheck | {commands.typecheck} | 120s |
| Typecheck (affected) | {package_manager} run typecheck:affected | 120s |
| Test | {commands.test} | 180s |
| Test (affected) | {package_manager} run test:affected | 180s |
| Test coverage | {package_manager} run test:coverage | 300s |
| Env check | {package_manager} run env:check | 10s |
| i18n | {package_manager} run i18n:check | 30s |
| License | {package_manager} run license:check | 30s |
Validate Report
═══════════════
Check │ Status │ Duration │ Notes
Lint │ ✅ pass │ 2.1s │ —
Typecheck │ ✅ pass │ 8.3s │ —
Test │ ❌ FAIL │ 12.4s │ 2 failed, 48 passed
Env check │ ✅ pass │ 0.3s │ —
i18n │ ⚠️ warn │ 1.1s │ 3 missing keys in fr.json
─────────────────────────────────────────────
Result: FAIL (4/5 passed, 1 failed)
Total time: 24.2s
∃ χ ∧ σ = ❌ → append failures. First 10 error lines per failing χ.
Failures
────────
Test:
FAIL src/auth/login.test.ts > should validate token
AssertionError: expected undefined to be defined
FAIL src/api/health.test.ts > should return 200
Error: ECONNREFUSED
All checks passed. Safe to push.{N} check(s) failed. Fix before pushing.--quick ∧ ∀ pass → Quick checks passed. Run /validate for full check.| Scenario | Behavior |
|---|---|
| Command not found | σ := ⚠️ warn, "command not available" |
| Command times out | σ := ❌ FAIL, "timed out after Xs" |
| ¬test files found | σ := ⏭ skip |
| Docker ¬running (env/db) | σ := ⚠️ warn, ¬fail |
| Running in worktree | No special handling needed |
{commands.*} — always use commands from stack.yml, never raw runner (Bun runner ≠ Vitest)/ci-watch/code-review/dev owns the dev-pipeline task lifecycle externally/dev: return control silently. ¬write summary. ¬ask user. ¬announce /code-review. /dev re-scans and advances.Next: /code-review. Stop./dev presents Retry | Skip | Abort.$ARGUMENTS