搜索

PythonReactSEOPDF
GitHub Skill

validate

Pre-commit validation ensuring lint and tests pass

UnaMentis☆ 3 仓库 Stars1 仓库 Forks

安装与使用

请根据来源仓库和你的 AI 工具说明安装此技能。先阅读技能文件和依赖要求,再添加到工作流。

查看来源 ↗使用指南

技能说明

/validate - Pre-Commit Validation

Purpose

Enforces the "Definition of Done" mandate by running all quality checks before work is marked complete. This skill ensures that no code is considered "done" until it compiles, lints, and tests successfully.

Critical Rule: NO IMPLEMENTATION IS COMPLETE UNTIL THIS SKILL REPORTS PASS.

Usage

/validate           # Run lint + quick tests (default)
/validate --full    # Run lint + full test suite with coverage

Workflow

1. Swift Lint Check
./scripts/lint.sh
  • SwiftLint strict mode must pass
  • Zero violations required
  • If violations found, report them with file:line and stop
2. Python Lint Check (if Python files changed)
./scripts/lint-python.sh
  • ruff linter must pass
  • bandit security scan (medium+ severity)
  • Matches CI Python lint behavior
3. Test Execution

Default (quick):

./scripts/test-quick.sh
  • Unit tests only
  • Faster validation for routine checks

Full suite (--full):

./scripts/test-all.sh
  • Complete test suite (unit + integration)
  • Includes code coverage with 80% threshold enforcement
  • Matches CI behavior exactly
  • Use for significant changes and before PR
3. Report Results
  • Summary of lint status (pass/fail, violation count)
  • Test results (pass/fail count)
  • Clear PASS or FAIL verdict
  • Specific failure details if any

Success Criteria

  • PASS: Lint clean + all tests green + (for --full) coverage >= 80%
  • FAIL: Any lint violation OR any test failure OR (for --full) coverage below 80%

Exit codes:

  • 0 = All checks passed
  • 1 = One or more checks failed

When to Run

  • Before marking any task "complete"
  • Before staging changes for commit
  • After making code modifications
  • When the pre-commit hook runs (automatic)

Examples

Successful validation:

User: /validate
Claude: Running pre-commit validation...

Lint Check: PASSED (0 violations)
Tests: PASSED (47/47 tests)

VALIDATION PASSED - Ready for commit

Failed validation (lint):

User: /validate
Claude: Running pre-commit validation...

Lint Check: FAILED (2 violations)
- UnaMentis/Services/AudioEngine.swift:42: Line length exceeds 120 characters
- UnaMentis/Views/SessionView.swift:18: Unused import 'Foundation'

VALIDATION FAILED - Fix lint violations before proceeding

Failed validation (tests):

User: /validate
Claude: Running pre-commit validation...

Lint Check: PASSED (0 violations)
Tests: FAILED (45/47 tests passed, 2 failed)

Failed tests:
- SessionManagerTests.testSessionTimeout
- AudioEngineTests.testBufferOverflow

VALIDATION FAILED - Fix failing tests before proceeding

CI Parity

The validation is designed to catch issues locally that would fail in CI:

  • Swift Strict Concurrency: Test scripts use SWIFT_STRICT_CONCURRENCY=complete to catch Sendable violations
  • Python Security: bandit catches common security issues (though not as comprehensive as CodeQL)
  • Linting: Both Swift and Python linting match CI checks

If CI fails with an issue that local validation missed, investigate and add the check to local validation.

Integration

This skill replaces .claude/commands/pre-commit.md and complements the pre-commit hook in .claude/hooks/pre-commit-check.sh.

使用示例

查看来源仓库中的使用示例与配置说明。

查看来源 ↗

来源历史

收录时间
2026-01-20
索引更新时间
2026-02-03
Branch
main

收录与同步日期属于本站记录。源码修改历史请查看来源仓库。

GitHub ↗

chat Comments (0)

chat_bubble_outline

No comments yet. Be the first to share your thoughts!