用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
直接命令不会经过审查 Prompt;运行前请先检查来源。
npx skills add https://github.com/go-to-k/cdk-real-drift --skill check命令会保持在同一行。复制前请横向滚动并检查完整内容。
想先保存到本地?可下载 SkillsMP 当前能够提供的文件。
Work through already-filed GitHub issues (typically the bug-hunt's output) end to end — triage safely, pick a few FILE-DISJOINT issues to fix in parallel, claim each on the issue before starting (collision-safe with other agents), verify, then carry each through merge → pull → release → global install → worktree cleanup. Use when asked to "handle/address filed issues", not to hunt for new bugs (that is /hunt-bugs).
Comprehensive PR-readiness verification. Run quality checks, docs consistency, a live-test of changed behavior, and a short retrospective before opening or merging a PR.
Proactively hunt for cdkrd bugs by deploying real CDK stacks that exercise common-but-untested AWS resources, configs, and CloudFormation notations against real AWS, then catch false positives + missed detection and fix what breaks. Use for a periodic "find latent bugs" sweep, not for verifying a specific change.
正在显示 SKILL.md
| name | check |
| description | Run local quality checks (typecheck, lint, build, tests). Quick check during development. |
Run all local quality checks. Use during development to verify the current state quickly.
cdk-real-drift (cdkrd) is developed solo, but on a GitHub remote and through
PRs: work lands via wt-* worktree branches, and .claude/hooks/verify-pr-gate.sh
gates gh pr create / gh pr merge. This skill is the LOCAL half of that flow —
it runs no real-AWS deploy/destroy — and mirrors the CI workflow
(.github/workflows/ci.yml), which runs typecheck / lint+format / build / unit
tests on every push.
Run these sequentially and report results:
vp run typecheck — tsc --project tsconfig.json --noEmit.vp check --fix — lint + Prettier formatting, with auto-fix. Use this, not
vp run lint:fix: CI runs vp check (which includes formatting), and
lint:fix does NOT touch formatting — so a lint:fix-only run can pass
locally while CI fails with formatting issues on the same branch.vp pack (tsdown ESM bundle to dist/) — and run it BEFORE step 4, because a
fresh worktree has no dist/ and 13 tests fail without it (they spawn the built
CLI). Either
invocation rebuilds: build is cache: false in vite.config.ts and has been
since the toolchain landed, so vp run build cannot serve a stale dist/. What
HAS caused a false-negative live-test is a dist/ nobody rebuilt: a stale
binary that lacked the change under test.vp test run (Vitest unit tests; tests/integration/** is excluded by
vite.config.ts). The run-task cache is a real foot-gun — PR go-to-k/cdk-real-drift#438's duplicate
object key passed a CACHED vp run typecheck and reached main, which is why
typecheck is now cache: false — but test reported a cache MISS on every
run measured on 2026-08-19 (go-to-k/cdk-real-drift#1768). Prefer the direct form; do not treat a
vp run test result as suspect on cache grounds alone.When piping any of the above to tail / head / grep, check the actual
output content for Error / Command failed markers — $? after a pipeline
reflects the LAST stage (usually 0), NOT the build tool's exit. When in doubt,
capture without piping: vp <cmd> > /tmp/out 2>&1; rc=$?; tail -3 /tmp/out; echo "[rc=$rc]".
Report as a table:
| Check | Result |
|---|---|
typecheck (vp run typecheck) | pass/fail |
lint + format (vp check --fix) | pass/fail |
build (vp pack) | pass/fail |
| tests (N files, M tests) | pass/fail |
If all pass, confirm "All checks passed." If any fail, show the error output and STOP — do not write the commit-gate marker.
Before treating a failure in a file you did NOT touch as a real (or peer-introduced)
main regression, rule out a stale worktree cache. A long-lived worktree's
tsc/oxc cache can REPLAY phantom errors from an earlier dependency/lockfile state
(the inverse of the cache MASKING real ones). If CI on main is green and the
failure is in code outside your diff, REPRODUCE it in a throwaway fresh worktree
(git worktree add … main → pnpm install → vp check) before reporting "main is
red" or opening a fix lane — a clean fresh worktree means the error was a local cache
artifact, not a regression.
After all four checks pass, record the check marker so the markgate check
gate is satisfied. The marker captures the current working-tree state of the
gate's scope; any subsequent edit in that scope invalidates it and requires
re-running /check. Since go-to-k/cdk-real-drift#1837 that scope is src/**,
tests/**, the build inputs (package.json, pnpm-lock.yaml,
pnpm-workspace.yaml, tsconfig*.json, vite.config.ts, .mise.toml), this gate's own definition
(.markgate.yml), and the checker-INPUT files the unit suite reads from
outside src/tests — .claude/skills/**, .claude/settings.json,
.claude/hooks/**, scripts/**, .releaserc.json, .github/workflows/**,
plus the hand-written markdown OUTSIDE those trees (README.md, DESIGN.md,
CLAUDE.md, CONTRIBUTING.md, docs/**, demo/README.md), which
tests/markdown-fmt-corruption-1771.test.ts reads.
A markdown edit therefore stales check — with exactly one exception. Three
buckets: README.md / DESIGN.md / docs/** are also the docs gate's
subject, so they need /check AND /check-docs; CLAUDE.md,
CONTRIBUTING.md and demo/README.md are check-only inputs, because the
docs gate includes just src/**, docs/**, README.md and DESIGN.md; and
CHANGELOG.md is in NEITHER gate — it is machine-generated by semantic-release
and is the one file the markdown scanner itself excludes, so an edit there
stales nothing. (The scanner's population is every tracked *.md bar that one,
so tests/integration/README.md is in it too — already covered by tests/**.)
Read .markgate.yml for the
authoritative list, not this sentence: each entry there names the test that
reads it, and this copy has already gone stale once (go-to-k/cdk-real-drift#1837
widened the gate and had to repair the enumeration here in the same PR).
Run from the root of the tree you are WORKING in — the worktree, not the main
checkout, whenever the lane lives in one. The marker store is .git/markgate,
shared by every worktree, but the hashes come from the cwd's files, so setting it
from the main checkout records main's content instead of yours: measured
2026-08-19, with the worktree dirty and the marker set from the main checkout,
markgate verify check returns rc=1 from the worktree and rc=0 from main. It fails
CLOSED, so the cost is a wasted gate cycle plus a "run /check first" message right
after you ran it. Also set it in its OWN command, separate from the git commit —
check-gate is a PreToolUse hook and judges the call before anything in it runs, so
a markgate set … && git commit one-liner is blocked in full.
cdkrd pins markgate via mise, so use mise exec to avoid PATH issues when shims
aren't active:
mise exec -- markgate set check
Skip this step if any check failed — a stale or missing marker correctly forces
re-running /check after fixing the failure.