AgentSkillsCN

ci-gate

在推送前在本地运行所有CI检查——代码检查器、类型检查、测试和漏洞扫描,并行生成通过/失败汇总表。当用户说“运行CI”、“推送前检查”、“运行所有测试”、“代码检查”、“推送前检查”、“PR前验证”、“CI关口”、“是否通过CI”、“是否干净”、“运行检查”或希望在推送前验证项目能否成功构建并顺利通过时使用。

SKILL.md
--- frontmatter
name: ci-gate
description: >
  Run all CI checks locally before pushing — linters, type checks, tests, and
  vulnerability scans in parallel with a pass/fail summary table. Use when the
  user says "run CI", "check before push", "run all tests", "lint check", "pre-push
  checks", "validate before PR", "CI gate", "does it pass CI", "is it clean",
  "run checks", or wants to verify the project builds and passes before pushing.
disable-model-invocation: true
allowed-tools: Bash, Read, Edit, Write, Glob
argument-hint: [--fix to also auto-fix]

CI Gate

Run every CI check locally. Fail fast, report everything.

1. Detect project types

Look for marker files in the working directory:

MarkerStackChecks
go.modGogo vet ./..., golangci-lint run ./..., go test -race -count=1 ./..., govulncheck ./...
package.jsonJS/TSlint, typecheck, test (detect pm: bun.lockb->bun, pnpm-lock.yaml->pnpm, yarn.lock->yarn, else npm). If turbo.json exists, use turbo run lint typecheck test instead.
Cargo.tomlRustcargo clippy -- -D warnings, cargo test, cargo audit
pyproject.tomlPythonruff check ., ruff format --check ., python -m pytest

If multiple markers exist, run checks for ALL detected stacks.

2. Prerequisites

Before running, command -v check every tool needed for the detected stack(s). Collect ALL missing tools into a single list and report them together. If a critical tool is missing (go, cargo, node, python), stop and tell the user. If only optional tools are missing (golangci-lint, govulncheck, cargo-audit, turbo), warn but continue without those checks.

3. Execution

Run all checks for all detected stacks in parallel using background jobs in a single Bash call. Capture each check's exit code, wall-clock duration (via SECONDS), and stderr/stdout.

4. Output

Print a summary table FIRST:

code
| Check                      | Status | Duration |
|----------------------------|--------|----------|
| go vet ./...               | PASS   | 2.1s     |
| cargo clippy -- -D warnings| FAIL   | 5.4s     |

For any FAIL row, print its full error output below the table. Exit with code 1 if any check failed, 0 if all passed.

5. --fix mode

If $ARGUMENTS contains --fix, run auto-fix variants BEFORE the regular checks:

  • Go: golangci-lint run --fix ./...
  • JS/TS: <pm> run lint -- --fix (the -- is required for npm to forward args) or turbo run lint -- --fix
  • Rust: cargo clippy --fix --allow-dirty -- -D warnings
  • Python: ruff check --fix ., ruff format .

Then re-run all checks to verify fixes. Without --fix, change nothing.

6. Idempotency

Without --fix: read-only, no side effects. With --fix: changes are visible via git diff.

Check $ARGUMENTS for flags.