From forwward-teams
Runs lint, typecheck, build, and test in a self-healing loop that reads errors, fixes them, and retries up to 4 times. Useful for pre-commit validation, pre-deploy checks, or any quality gate.
How this skill is triggered — by the user, by Claude, or both
Slash command
/forwward-teams:gateThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Run checks, read errors, fix them, repeat. Prove code WORKS by executing it.
Run checks, read errors, fix them, repeat. Prove code WORKS by executing it.
Read .claude/project.local.json (local, gitignored override) if present, else .claude/project.json, for build commands. If not, detect the stack and infer the right commands:
| Stack marker | Lint | Typecheck | Build | Test |
|---|---|---|---|---|
package.json | npm run lint | npm run typecheck / tsc --noEmit | npm run build | npm test |
go.mod | golangci-lint run | (types checked at build) | go build ./... | go test ./... |
pyproject.toml / requirements.txt | ruff check . / flake8 | mypy . | (no compile step) | pytest |
Gemfile | rubocop | (Sorbet if present) | bundle exec rake assets:precompile | bundle exec rspec |
pom.xml | mvn checkstyle:check | (compiled) | mvn package | mvn test |
Cargo.toml | cargo clippy | (compiled) | cargo build | cargo test |
Also check Makefile — many projects centralize all commands there (make lint, make test, make build).
Or init from the plugin CLI if available:
${CLAUDE_PLUGIN_ROOT}/scripts/cli init
Before running the loop, gate can invoke /audit to clean the branch first:
/audit # de-slop + DRY + dead code on changed files only
Run audit when: the user says "clean before shipping", the diff is large and messy, or this is a pre-release gate. Skip audit for hotfixes and small patches — the loop is enough.
Audit scope when invoked from gate: files changed on this branch only (git diff main...HEAD). Full-codebase audit is a separate invocation.
Run up to 4 iterations:
| Error Type | Fix | Don't |
|---|---|---|
| Type errors | Fix the type, add the import | Use @ts-ignore |
| Build errors | Fix imports, exports, modules | Skip the check |
| Lint errors | Fix the actual issue | Blanket disable |
| Test failures | Fix the code or the test | Delete the test |
NEVER change business logic during gate. Only fix types, imports, lint.
After 4 iterations without full pass:
| Flag | What |
|---|---|
-l | Lint only |
-c | Typecheck only |
-b | Build only |
-t | Tests only |
-a | App startup (dev server + health check) |
-u | UI tests (Playwright/Cypress) |
-g | Full gate: lint + typecheck + build + test |
--all | Everything including app + UI |
npx claudepluginhub iankiku/forwward-teamsRuns quality gates for linting, type checking, unit tests with coverage, spec compliance, and smoke checks at local/CI/deploy levels.
Defines canonical quality check commands for typecheck, test, and lint with four variants (Baseline, Incremental, Full Gate, Per-File). Reference skill consumed by session-start, wave-executor, session-end, and session-reviewer.
Enforces quality gates in TypeScript/Node.js projects: pre-commit linting/formatting with ESLint/Prettier/tsc, tests/coverage with Vitest, builds, CI checks, security audits, E2E with Playwright, and Lighthouse performance.