Agent Skills: Pre-Commit Quality Gate

Runs quality gate checks before commit or push. Use when preparing to commit, reproducing CI failures locally, or validating changes pass all checks.

UncategorizedID: saleor/configurator/validating-pre-commit

Repository

saleorLicense: BSD-3-Clause
284

Install this agent skill to your local

pnpm dlx add-skill https://github.com/saleor/configurator/tree/HEAD/.claude/skills/validating-pre-commit

Skill Files

Browse the full folder contents for validating-pre-commit.

Download Skill

Loading file tree…

.claude/skills/validating-pre-commit/SKILL.md

Skill Metadata

Name
validating-pre-commit
Description
"Runs quality gate checks before commit or push. Use when preparing to commit, reproducing CI failures locally, or validating changes pass all checks."

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).

# Credentials from .env.local (see .env.example for template)
# source .env.local

# 1. Clean slate
rm -rf config.yml

# 2. Fresh introspection
pnpm dev introspect --url=$SALEOR_URL --token=$SALEOR_TOKEN

# 3. Deploy changes
pnpm dev deploy --url=$SALEOR_URL --token=$SALEOR_TOKEN

# 4. Test idempotency (deploy again - should have no changes)
pnpm dev deploy --url=$SALEOR_URL --token=$SALEOR_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 script
  • docs/TESTING_PROTOCOLS.md - E2E testing details
  • biome.json - Linting configuration

Related Skills

  • Code standards: See reviewing-typescript-code for quality criteria
  • CI integration: See managing-github-ci for workflow troubleshooting
  • Test failures: See analyzing-test-coverage for test debugging

Quick Reference Rule

For a condensed quick reference, see .claude/rules/deployment-safety.md (always loaded - applies to all files).