validating-pre-commit
npx skills add https://github.com/saleor/configurator --skill validating-pre-commit
Agent 安装分布
Skill 文档
Pre-Commit Quality Gate
Overview
Ensure all code quality standards are met before committing or pushing changes. Runs the mandatory quality checklist and reports failures with actionable fixes.
When to Use
- Before creating a commit or pushing to remote
- After making significant changes
- When CI is failing and you need to reproduce locally
Quick Reference
| Check | Command | Purpose |
|---|---|---|
| Auto-fix | pnpm check:fix |
Fix lint/format issues |
| Build | pnpm build |
Compile TypeScript |
| Test | pnpm test |
Run all tests |
| Type check | npx tsc --noEmit |
Strict TS validation |
| CI check | pnpm check:ci |
Full CI validation |
| Lint only | pnpm lint |
Check linting |
| Format only | pnpm format |
Check formatting |
| All at once | pnpm check:fix && pnpm build && pnpm test && pnpm check:ci |
Full pipeline |
Mandatory Quality Checklist
Execute these steps in order. All must pass before committing.
Step 1: Auto-Fix Linting and Formatting
pnpm check:fix
Auto-fixes Biome issues (imports, commas, quotes, indentation). If issues remain, manually fix complexity warnings, unused variables, or type errors.
Step 2: Verify TypeScript Compilation
pnpm build
Ensures the project compiles. Check recent changes for type mismatches, missing exports, or import resolution errors.
Step 3: Run All Tests
pnpm test
If tests fail: read the failure message, check if expectations match new behavior, update test or fix implementation, re-run with pnpm test -- --filter=<test-file>.
Step 4: Strict TypeScript Check
npx tsc --noEmit
Catches more than build: implicit any, unused imports/variables, stricter null checking.
Step 5: Final CI Validation
pnpm check:ci
Runs the same checks CI will run (linting without auto-fix, format checking, TypeScript compilation).
E2E CLI Testing Protocol
When to Run: Before pushing changes that affect core CLI functionality (commands, services, repositories).
# Test credentials
--url=https://store-rzalldyg.saleor.cloud/graphql/
--token=YbE8g7ZNl0HkxdK92pfNdLJVQwV0Xs
# 1. Clean slate
rm -rf config.yml
# 2. Fresh introspection
pnpm dev introspect --url=<URL> --token=<TOKEN>
# 3. Deploy changes
pnpm dev deploy --url=<URL> --token=<TOKEN>
# 4. Test idempotency (deploy again - should have no changes)
pnpm dev deploy --url=<URL> --token=<TOKEN>
# 5. Clean and re-introspect
rm config.yml
pnpm dev introspect --url=<URL> --token=<TOKEN>
# 6. Verify no drift
pnpm dev diff --url=<URL> --token=<TOKEN>
Success Criteria: Step 4 shows no changes (idempotency). Step 6 shows no diff (round-trip consistency).
Common Mistakes
| Mistake | Fix |
|---|---|
any type in production code |
Use proper type or unknown + type guard |
| Unused import left behind | Remove it or use it (Biome auto-fix handles this) |
| Object possibly undefined | Use optional chaining (?.) or early return guard |
| Type not assignable | Check type definitions and ensure compatibility |
| Mock not returning expected value | vi.mocked(service.method).mockResolvedValue(expected) |
Skipping check:ci after check:fix |
Always run both; check:ci catches non-auto-fixable issues |
| Forgetting E2E test for core changes | Run full E2E protocol above for any CLI command changes |
Automated Checks
The project has Husky pre-push hooks (.husky/pre-push) that auto-generate schema documentation. These run automatically.
References
scripts/validate-all.sh– One-command validation scriptdocs/TESTING_PROTOCOLS.md– E2E testing detailsbiome.json– Linting configuration
Related Skills
- Code standards: See
reviewing-typescript-codefor quality criteria - CI integration: See
managing-github-cifor workflow troubleshooting - Test failures: See
analyzing-test-coveragefor test debugging
Quick Reference Rule
For a condensed quick reference, see .claude/rules/deployment-safety.md (always loaded – applies to all files).