AgentSkillsCN

Domain Invariant Assertion

验证领域不变量在所有代码路径中均能有效保持——兼顾非负性约束、零和转移规则、状态机转换逻辑,以及业务规则的严格执行。

SKILL.md
--- frontmatter
name: Domain Invariant Assertion
description: Verify domain invariants hold across all code paths — balance non-negativity, zero-sum transfers, state machine transitions, and business rule enforcement
version: 1.0.0
triggers:
  - model-change
  - service-logic-change
  - invariant-violation
globs: "**/models/**,**/service/**"

Domain Invariant Assertion Skill

Systematically verify that domain invariants are enforced in code and covered by tests. Invariants are properties that must ALWAYS hold regardless of system state.

Trigger Conditions

  • Model struct or enum definitions change
  • Service business logic is modified
  • New financial operations are introduced
  • User invokes with "check invariants" or "domain-invariant-assertion"

Input Contract

  • Required: Path to models and service directories
  • Optional: Path to test files for coverage assessment

Output Contract

  • Inventory of all domain invariants found in the codebase
  • Pass/fail assessment for each invariant's enforcement in code
  • Pass/fail assessment for each invariant's test coverage
  • Missing invariant identification (invariants that SHOULD exist but don't)

Tool Permissions

  • Read: All Go source files, test files, model files
  • Write: None (read-only analysis)
  • Search: Grep for assertion patterns, validation methods, constraint checks

Execution Steps

  • Balance >= 0 (unless overdraft enabled)
  • Transfer amount > 0
  • Transfer source != destination
  • Account status transitions follow state machine
  • Card status transitions follow lifecycle
  • Currency is valid ISO 4217
  • Idempotency key is unique per operation
  • Balance-after = previous_balance +/- amount
  1. Verify code enforcement: For each invariant, find the code path that enforces it. Flag invariants with no enforcement.

  2. Verify test coverage: For each invariant, find property-based tests or unit tests that verify it. Flag invariants with no test coverage.

  3. Report: Produce a table of invariants with enforcement status and test coverage status.

Success Criteria

  • All known domain invariants are enforced in code
  • All known domain invariants have test coverage
  • No code path can bypass an invariant

References

  • .cursor/rules/111-property-based-testing.mdc