invar-tools 1.7.0__tar.gz → 1.7.1__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (281) hide show
  1. {invar_tools-1.7.0 → invar_tools-1.7.1}/.claude/hooks/invar.PostToolUse.sh +1 -1
  2. {invar_tools-1.7.0 → invar_tools-1.7.1}/.claude/hooks/invar.PreToolUse.sh +1 -1
  3. {invar_tools-1.7.0 → invar_tools-1.7.1}/.claude/hooks/invar.Stop.sh +1 -1
  4. {invar_tools-1.7.0 → invar_tools-1.7.1}/.claude/hooks/invar.UserPromptSubmit.sh +2 -1
  5. {invar_tools-1.7.0 → invar_tools-1.7.1}/PKG-INFO +55 -45
  6. {invar_tools-1.7.0 → invar_tools-1.7.1}/README.md +53 -44
  7. {invar_tools-1.7.0 → invar_tools-1.7.1}/docs/agents.md +1 -2
  8. {invar_tools-1.7.0 → invar_tools-1.7.1}/docs/design.md +5 -4
  9. {invar_tools-1.7.0 → invar_tools-1.7.1}/docs/guides/multi-agent.md +21 -17
  10. {invar_tools-1.7.0 → invar_tools-1.7.1}/docs/index.html +8 -9
  11. invar_tools-1.7.1/docs/proposals/DX-70-init-simplification.md +273 -0
  12. {invar_tools-1.7.0 → invar_tools-1.7.1}/docs/proposals/index.md +3 -2
  13. {invar_tools-1.7.0 → invar_tools-1.7.1}/pyproject.toml +2 -1
  14. {invar_tools-1.7.0 → invar_tools-1.7.1}/src/invar/core/utils.py +3 -1
  15. {invar_tools-1.7.0 → invar_tools-1.7.1}/src/invar/shell/claude_hooks.py +90 -0
  16. invar_tools-1.7.1/src/invar/shell/commands/init.py +410 -0
  17. {invar_tools-1.7.0 → invar_tools-1.7.1}/src/invar/shell/commands/uninstall.py +145 -7
  18. {invar_tools-1.7.0 → invar_tools-1.7.1}/src/invar/shell/contract_coverage.py +4 -1
  19. {invar_tools-1.7.0 → invar_tools-1.7.1}/src/invar/shell/templates.py +35 -29
  20. {invar_tools-1.7.0/.claude → invar_tools-1.7.1/src/invar/templates}/commands/audit.md +6 -0
  21. {invar_tools-1.7.0/.claude → invar_tools-1.7.1/src/invar/templates}/commands/guard.md +6 -0
  22. {invar_tools-1.7.0 → invar_tools-1.7.1}/src/invar/templates/config/pre-commit.yaml.jinja +2 -0
  23. invar_tools-1.7.0/src/invar/shell/commands/init.py +0 -420
  24. invar_tools-1.7.0/src/invar/templates/pre-commit-config.yaml.template +0 -46
  25. {invar_tools-1.7.0 → invar_tools-1.7.1}/.aider.conf.yml +0 -0
  26. {invar_tools-1.7.0/src/invar/templates → invar_tools-1.7.1/.claude}/commands/audit.md +0 -0
  27. {invar_tools-1.7.0/src/invar/templates → invar_tools-1.7.1/.claude}/commands/guard.md +0 -0
  28. {invar_tools-1.7.0 → invar_tools-1.7.1}/.claude/hooks/PostToolUse.sh +0 -0
  29. {invar_tools-1.7.0 → invar_tools-1.7.1}/.claude/hooks/PreToolUse.sh +0 -0
  30. {invar_tools-1.7.0 → invar_tools-1.7.1}/.claude/hooks/Stop.sh +0 -0
  31. {invar_tools-1.7.0 → invar_tools-1.7.1}/.claude/hooks/UserPromptSubmit.sh +0 -0
  32. {invar_tools-1.7.0 → invar_tools-1.7.1}/.claude/skills/develop/SKILL.md +0 -0
  33. {invar_tools-1.7.0 → invar_tools-1.7.1}/.claude/skills/investigate/SKILL.md +0 -0
  34. {invar_tools-1.7.0 → invar_tools-1.7.1}/.claude/skills/propose/SKILL.md +0 -0
  35. {invar_tools-1.7.0 → invar_tools-1.7.1}/.claude/skills/review/SKILL.md +0 -0
  36. {invar_tools-1.7.0 → invar_tools-1.7.1}/.cursorrules +0 -0
  37. {invar_tools-1.7.0 → invar_tools-1.7.1}/.github/workflows/ci.yml +0 -0
  38. {invar_tools-1.7.0 → invar_tools-1.7.1}/.github/workflows/publish.yml +0 -0
  39. {invar_tools-1.7.0 → invar_tools-1.7.1}/.gitignore +0 -0
  40. {invar_tools-1.7.0 → invar_tools-1.7.1}/.invar/archive/sessions-2025-12.md +0 -0
  41. {invar_tools-1.7.0 → invar_tools-1.7.1}/.invar/context.md +0 -0
  42. {invar_tools-1.7.0 → invar_tools-1.7.1}/.invar/examples/README.md +0 -0
  43. {invar_tools-1.7.0 → invar_tools-1.7.1}/.invar/examples/conftest.py +0 -0
  44. {invar_tools-1.7.0 → invar_tools-1.7.1}/.invar/examples/contracts.py +0 -0
  45. {invar_tools-1.7.0 → invar_tools-1.7.1}/.invar/examples/core_shell.py +0 -0
  46. {invar_tools-1.7.0 → invar_tools-1.7.1}/.invar/examples/functional.py +0 -0
  47. {invar_tools-1.7.0 → invar_tools-1.7.1}/.invar/examples/workflow.md +0 -0
  48. {invar_tools-1.7.0 → invar_tools-1.7.1}/.invar/mcp-setup.md +0 -0
  49. {invar_tools-1.7.0 → invar_tools-1.7.1}/.invar/project-additions.md +0 -0
  50. {invar_tools-1.7.0 → invar_tools-1.7.1}/.invar/proposals/TEMPLATE.md +0 -0
  51. {invar_tools-1.7.0 → invar_tools-1.7.1}/.mcp.json +0 -0
  52. {invar_tools-1.7.0 → invar_tools-1.7.1}/.pre-commit-config.yaml +0 -0
  53. {invar_tools-1.7.0 → invar_tools-1.7.1}/.serena/.gitignore +0 -0
  54. {invar_tools-1.7.0 → invar_tools-1.7.1}/.serena/project.yml +0 -0
  55. {invar_tools-1.7.0 → invar_tools-1.7.1}/CLAUDE.md +0 -0
  56. {invar_tools-1.7.0 → invar_tools-1.7.1}/INVAR.md +0 -0
  57. {invar_tools-1.7.0 → invar_tools-1.7.1}/LICENSE +0 -0
  58. {invar_tools-1.7.0 → invar_tools-1.7.1}/LICENSE-GPL +0 -0
  59. {invar_tools-1.7.0 → invar_tools-1.7.1}/NOTICE +0 -0
  60. {invar_tools-1.7.0 → invar_tools-1.7.1}/docs/.nojekyll +0 -0
  61. {invar_tools-1.7.0 → invar_tools-1.7.1}/docs/diagrams.md +0 -0
  62. {invar_tools-1.7.0 → invar_tools-1.7.1}/docs/guide.md +0 -0
  63. {invar_tools-1.7.0 → invar_tools-1.7.1}/docs/guides/aider.md +0 -0
  64. {invar_tools-1.7.0 → invar_tools-1.7.1}/docs/guides/cline.md +0 -0
  65. {invar_tools-1.7.0 → invar_tools-1.7.1}/docs/guides/continue.md +0 -0
  66. {invar_tools-1.7.0 → invar_tools-1.7.1}/docs/guides/cursor.md +0 -0
  67. {invar_tools-1.7.0 → invar_tools-1.7.1}/docs/history/decisions-2024.md +0 -0
  68. {invar_tools-1.7.0 → invar_tools-1.7.1}/docs/history/feedback/compliance-analysis.md +0 -0
  69. {invar_tools-1.7.0 → invar_tools-1.7.1}/docs/history/feedback/feedback-memo.md +0 -0
  70. {invar_tools-1.7.0 → invar_tools-1.7.1}/docs/history/feedback/index.md +0 -0
  71. {invar_tools-1.7.0 → invar_tools-1.7.1}/docs/history/index.md +0 -0
  72. {invar_tools-1.7.0 → invar_tools-1.7.1}/docs/history/original-vision.md +0 -0
  73. {invar_tools-1.7.0 → invar_tools-1.7.1}/docs/history/protocol-evolution.md +0 -0
  74. {invar_tools-1.7.0 → invar_tools-1.7.1}/docs/history/research/cruxeval-quick-validation.md +0 -0
  75. {invar_tools-1.7.0 → invar_tools-1.7.1}/docs/logo.svg +0 -0
  76. {invar_tools-1.7.0 → invar_tools-1.7.1}/docs/proposals/DX-23-entry-point-detection.md +0 -0
  77. {invar_tools-1.7.0 → invar_tools-1.7.1}/docs/proposals/DX-25-functional-patterns.md +0 -0
  78. {invar_tools-1.7.0 → invar_tools-1.7.1}/docs/proposals/DX-29-pure-content-detection.md +0 -0
  79. {invar_tools-1.7.0 → invar_tools-1.7.1}/docs/proposals/DX-37-coverage-integration.md +0 -0
  80. {invar_tools-1.7.0 → invar_tools-1.7.1}/docs/proposals/DX-38-contract-quality-rules.md +0 -0
  81. {invar_tools-1.7.0 → invar_tools-1.7.1}/docs/proposals/DX-39-workflow-efficiency.md +0 -0
  82. {invar_tools-1.7.0 → invar_tools-1.7.1}/docs/proposals/DX-40-smart-tool-redirect-hook.md +0 -0
  83. {invar_tools-1.7.0 → invar_tools-1.7.1}/docs/proposals/DX-41-automatic-review-orchestration.md +0 -0
  84. {invar_tools-1.7.0 → invar_tools-1.7.1}/docs/proposals/DX-42-workflow-auto-routing.md +0 -0
  85. {invar_tools-1.7.0 → invar_tools-1.7.1}/docs/proposals/DX-43-cross-platform-distribution.md +0 -0
  86. {invar_tools-1.7.0 → invar_tools-1.7.1}/docs/proposals/DX-46-documentation-audit.md +0 -0
  87. {invar_tools-1.7.0 → invar_tools-1.7.1}/docs/proposals/DX-48-code-structure-reorganization.md +0 -0
  88. {invar_tools-1.7.0 → invar_tools-1.7.1}/docs/proposals/DX-49-protocol-distribution-unification.md +0 -0
  89. {invar_tools-1.7.0 → invar_tools-1.7.1}/docs/proposals/DX-50-workflow-enforcement.md +0 -0
  90. {invar_tools-1.7.0 → invar_tools-1.7.1}/docs/proposals/DX-51-workflow-phase-visibility.md +0 -0
  91. {invar_tools-1.7.0 → invar_tools-1.7.1}/docs/proposals/DX-52-venv-dependency-injection.md +0 -0
  92. {invar_tools-1.7.0 → invar_tools-1.7.1}/docs/proposals/DX-53-review-loop-effectiveness.md +0 -0
  93. {invar_tools-1.7.0 → invar_tools-1.7.1}/docs/proposals/DX-54-agent-native-context-management.md +0 -0
  94. {invar_tools-1.7.0 → invar_tools-1.7.1}/docs/proposals/DX-55-claude-init-conflict-resolution.md +0 -0
  95. {invar_tools-1.7.0 → invar_tools-1.7.1}/docs/proposals/DX-56-template-sync-unification.md +0 -0
  96. {invar_tools-1.7.0 → invar_tools-1.7.1}/docs/proposals/DX-60-structured-rules-ssot.md +0 -0
  97. {invar_tools-1.7.0 → invar_tools-1.7.1}/docs/proposals/DX-61-functional-pattern-guidance.md +0 -0
  98. {invar_tools-1.7.0 → invar_tools-1.7.1}/docs/proposals/DX-61-implementation-design.md +0 -0
  99. {invar_tools-1.7.0 → invar_tools-1.7.1}/docs/proposals/DX-62-proactive-reference-reading.md +0 -0
  100. {invar_tools-1.7.0 → invar_tools-1.7.1}/docs/proposals/DX-64-version-display-unification.md +0 -0
  101. {invar_tools-1.7.0 → invar_tools-1.7.1}/docs/proposals/DX-65-single-file-guard.md +0 -0
  102. {invar_tools-1.7.0 → invar_tools-1.7.1}/docs/proposals/DX-66-escape-hatch-visibility.md +0 -0
  103. {invar_tools-1.7.0 → invar_tools-1.7.1}/docs/proposals/DX-67-explicit-skill-invocation.md +0 -0
  104. {invar_tools-1.7.0 → invar_tools-1.7.1}/docs/proposals/DX-68-agent-behavior-optimization.md +0 -0
  105. {invar_tools-1.7.0 → invar_tools-1.7.1}/docs/proposals/DX-69-project-uninstall.md +0 -0
  106. {invar_tools-1.7.0 → invar_tools-1.7.1}/docs/proposals/LX-01-multi-language-feasibility.md +0 -0
  107. {invar_tools-1.7.0 → invar_tools-1.7.1}/docs/proposals/LX-02-agent-portability-analysis.md +0 -0
  108. {invar_tools-1.7.0 → invar_tools-1.7.1}/docs/proposals/LX-04-pi-agent-support.md +0 -0
  109. {invar_tools-1.7.0 → invar_tools-1.7.1}/docs/proposals/completed/2024-12-21-guard-enhancements.md +0 -0
  110. {invar_tools-1.7.0 → invar_tools-1.7.1}/docs/proposals/completed/2024-12-21-language-inspired-enhancements.md +0 -0
  111. {invar_tools-1.7.0 → invar_tools-1.7.1}/docs/proposals/completed/2024-12-21-test-first-enhancement.md +0 -0
  112. {invar_tools-1.7.0 → invar_tools-1.7.1}/docs/proposals/completed/2025-12-21-dx-improvements.md +0 -0
  113. {invar_tools-1.7.0 → invar_tools-1.7.1}/docs/proposals/completed/2025-12-23-dx-20-property-testing-enhancements.md +0 -0
  114. {invar_tools-1.7.0 → invar_tools-1.7.1}/docs/proposals/completed/2025-12-23-dx-21-package-and-init.md +0 -0
  115. {invar_tools-1.7.0 → invar_tools-1.7.1}/docs/proposals/completed/AGENT-IMPROVEMENTS.md +0 -0
  116. {invar_tools-1.7.0 → invar_tools-1.7.1}/docs/proposals/completed/DX-11-documentation-restructure.md +0 -0
  117. {invar_tools-1.7.0 → invar_tools-1.7.1}/docs/proposals/completed/DX-12-hypothesis-fallback.md +0 -0
  118. {invar_tools-1.7.0 → invar_tools-1.7.1}/docs/proposals/completed/DX-13-incremental-prove.md +0 -0
  119. {invar_tools-1.7.0 → invar_tools-1.7.1}/docs/proposals/completed/DX-14-expanded-prove-usage.md +0 -0
  120. {invar_tools-1.7.0 → invar_tools-1.7.1}/docs/proposals/completed/DX-16-agent-tool-enforcement.md +0 -0
  121. {invar_tools-1.7.0 → invar_tools-1.7.1}/docs/proposals/completed/DX-17-workflow-enforcement.md +0 -0
  122. {invar_tools-1.7.0 → invar_tools-1.7.1}/docs/proposals/completed/DX-22-verification-strategy.md +0 -0
  123. {invar_tools-1.7.0 → invar_tools-1.7.1}/docs/proposals/completed/DX-24-mechanism-documentation.md +0 -0
  124. {invar_tools-1.7.0 → invar_tools-1.7.1}/docs/proposals/completed/DX-26-guard-simplification.md +0 -0
  125. {invar_tools-1.7.0 → invar_tools-1.7.1}/docs/proposals/completed/DX-27-system-prompt-protocol.md +0 -0
  126. {invar_tools-1.7.0 → invar_tools-1.7.1}/docs/proposals/completed/DX-28-semantic-verification.md +0 -0
  127. {invar_tools-1.7.0 → invar_tools-1.7.1}/docs/proposals/completed/DX-30-visible-workflow.md +0 -0
  128. {invar_tools-1.7.0 → invar_tools-1.7.1}/docs/proposals/completed/DX-31-adversarial-reviewer.md +0 -0
  129. {invar_tools-1.7.0 → invar_tools-1.7.1}/docs/proposals/completed/DX-32-workflow-iteration.md +0 -0
  130. {invar_tools-1.7.0 → invar_tools-1.7.1}/docs/proposals/completed/DX-33-verification-blind-spots.md +0 -0
  131. {invar_tools-1.7.0 → invar_tools-1.7.1}/docs/proposals/completed/DX-34-review-cycle.md +0 -0
  132. {invar_tools-1.7.0 → invar_tools-1.7.1}/docs/proposals/completed/DX-35-workflow-phase-separation.md +0 -0
  133. {invar_tools-1.7.0 → invar_tools-1.7.1}/docs/proposals/completed/DX-36-documentation-restructuring.md +0 -0
  134. {invar_tools-1.7.0 → invar_tools-1.7.1}/docs/proposals/completed/DX-45-template-consistency.md +0 -0
  135. {invar_tools-1.7.0 → invar_tools-1.7.1}/docs/proposals/completed/DX-47-command-skill-naming.md +0 -0
  136. {invar_tools-1.7.0 → invar_tools-1.7.1}/docs/proposals/completed/DX-57-claude-code-hooks.md +0 -0
  137. {invar_tools-1.7.0 → invar_tools-1.7.1}/docs/proposals/completed/DX-58-document-structure-optimization.md +0 -0
  138. {invar_tools-1.7.0 → invar_tools-1.7.1}/docs/proposals/completed/DX-63-contracts-first-enforcement.md +0 -0
  139. {invar_tools-1.7.0 → invar_tools-1.7.1}/docs/proposals/completed/LX-03-multi-agent-support.md +0 -0
  140. {invar_tools-1.7.0 → invar_tools-1.7.1}/docs/reference/agent-information-hierarchy.md +0 -0
  141. {invar_tools-1.7.0 → invar_tools-1.7.1}/docs/reference/architecture/index.md +0 -0
  142. {invar_tools-1.7.0 → invar_tools-1.7.1}/docs/reference/contracts/advanced.md +0 -0
  143. {invar_tools-1.7.0 → invar_tools-1.7.1}/docs/reference/contracts/completeness.md +0 -0
  144. {invar_tools-1.7.0 → invar_tools-1.7.1}/docs/reference/contracts/doctests.md +0 -0
  145. {invar_tools-1.7.0 → invar_tools-1.7.1}/docs/reference/contracts/index.md +0 -0
  146. {invar_tools-1.7.0 → invar_tools-1.7.1}/docs/reference/contracts/pre-post.md +0 -0
  147. {invar_tools-1.7.0 → invar_tools-1.7.1}/docs/reference/documentation.md +0 -0
  148. {invar_tools-1.7.0 → invar_tools-1.7.1}/docs/reference/index.md +0 -0
  149. {invar_tools-1.7.0 → invar_tools-1.7.1}/docs/reference/proposal-workflow.md +0 -0
  150. {invar_tools-1.7.0 → invar_tools-1.7.1}/docs/reference/rules/index.md +0 -0
  151. {invar_tools-1.7.0 → invar_tools-1.7.1}/docs/reference/rules/severity.md +0 -0
  152. {invar_tools-1.7.0 → invar_tools-1.7.1}/docs/reference/verification/crosshair-vs-hypothesis.md +0 -0
  153. {invar_tools-1.7.0 → invar_tools-1.7.1}/docs/reference/verification/index.md +0 -0
  154. {invar_tools-1.7.0 → invar_tools-1.7.1}/docs/reference/verification/smart-routing.md +0 -0
  155. {invar_tools-1.7.0 → invar_tools-1.7.1}/docs/reference/workflow/index.md +0 -0
  156. {invar_tools-1.7.0 → invar_tools-1.7.1}/docs/reference/workflow/session-start.md +0 -0
  157. {invar_tools-1.7.0 → invar_tools-1.7.1}/docs/reference/workflow/usbv.md +0 -0
  158. {invar_tools-1.7.0 → invar_tools-1.7.1}/docs/terminal-gif-guide.md +0 -0
  159. {invar_tools-1.7.0 → invar_tools-1.7.1}/docs/test-reports/DX-55-test-report.md +0 -0
  160. {invar_tools-1.7.0 → invar_tools-1.7.1}/docs/test-reports/DX-56-test-report.md +0 -0
  161. {invar_tools-1.7.0 → invar_tools-1.7.1}/docs/test-reports/DX-58-test-scenario.md +0 -0
  162. {invar_tools-1.7.0 → invar_tools-1.7.1}/docs/testing/v1.5.0-stress-test.md +0 -0
  163. {invar_tools-1.7.0 → invar_tools-1.7.1}/docs/testing/v1.5.0-test-report.md +0 -0
  164. {invar_tools-1.7.0 → invar_tools-1.7.1}/docs/testing/v1.5.0-workflow-compliance.md +0 -0
  165. {invar_tools-1.7.0 → invar_tools-1.7.1}/docs/vision.md +0 -0
  166. {invar_tools-1.7.0 → invar_tools-1.7.1}/runtime/LICENSE +0 -0
  167. {invar_tools-1.7.0 → invar_tools-1.7.1}/runtime/README.md +0 -0
  168. {invar_tools-1.7.0 → invar_tools-1.7.1}/runtime/pyproject.toml +0 -0
  169. {invar_tools-1.7.0 → invar_tools-1.7.1}/runtime/src/invar_runtime/__init__.py +0 -0
  170. {invar_tools-1.7.0 → invar_tools-1.7.1}/runtime/src/invar_runtime/contracts.py +0 -0
  171. {invar_tools-1.7.0 → invar_tools-1.7.1}/runtime/src/invar_runtime/decorators.py +0 -0
  172. {invar_tools-1.7.0 → invar_tools-1.7.1}/runtime/src/invar_runtime/invariant.py +0 -0
  173. {invar_tools-1.7.0 → invar_tools-1.7.1}/runtime/src/invar_runtime/relations.py +0 -0
  174. {invar_tools-1.7.0 → invar_tools-1.7.1}/runtime/src/invar_runtime/resource.py +0 -0
  175. {invar_tools-1.7.0 → invar_tools-1.7.1}/scripts/smart-guard.sh +0 -0
  176. {invar_tools-1.7.0 → invar_tools-1.7.1}/src/core/__init__.py +0 -0
  177. {invar_tools-1.7.0 → invar_tools-1.7.1}/src/invar/__init__.py +0 -0
  178. {invar_tools-1.7.0 → invar_tools-1.7.1}/src/invar/core/__init__.py +0 -0
  179. {invar_tools-1.7.0 → invar_tools-1.7.1}/src/invar/core/contracts.py +0 -0
  180. {invar_tools-1.7.0 → invar_tools-1.7.1}/src/invar/core/entry_points.py +0 -0
  181. {invar_tools-1.7.0 → invar_tools-1.7.1}/src/invar/core/extraction.py +0 -0
  182. {invar_tools-1.7.0 → invar_tools-1.7.1}/src/invar/core/format_specs.py +0 -0
  183. {invar_tools-1.7.0 → invar_tools-1.7.1}/src/invar/core/format_strategies.py +0 -0
  184. {invar_tools-1.7.0 → invar_tools-1.7.1}/src/invar/core/formatter.py +0 -0
  185. {invar_tools-1.7.0 → invar_tools-1.7.1}/src/invar/core/hypothesis_strategies.py +0 -0
  186. {invar_tools-1.7.0 → invar_tools-1.7.1}/src/invar/core/inspect.py +0 -0
  187. {invar_tools-1.7.0 → invar_tools-1.7.1}/src/invar/core/lambda_helpers.py +0 -0
  188. {invar_tools-1.7.0 → invar_tools-1.7.1}/src/invar/core/models.py +0 -0
  189. {invar_tools-1.7.0 → invar_tools-1.7.1}/src/invar/core/must_use.py +0 -0
  190. {invar_tools-1.7.0 → invar_tools-1.7.1}/src/invar/core/parser.py +0 -0
  191. {invar_tools-1.7.0 → invar_tools-1.7.1}/src/invar/core/patterns/__init__.py +0 -0
  192. {invar_tools-1.7.0 → invar_tools-1.7.1}/src/invar/core/patterns/detector.py +0 -0
  193. {invar_tools-1.7.0 → invar_tools-1.7.1}/src/invar/core/patterns/p0_exhaustive.py +0 -0
  194. {invar_tools-1.7.0 → invar_tools-1.7.1}/src/invar/core/patterns/p0_literal.py +0 -0
  195. {invar_tools-1.7.0 → invar_tools-1.7.1}/src/invar/core/patterns/p0_newtype.py +0 -0
  196. {invar_tools-1.7.0 → invar_tools-1.7.1}/src/invar/core/patterns/p0_nonempty.py +0 -0
  197. {invar_tools-1.7.0 → invar_tools-1.7.1}/src/invar/core/patterns/p0_validation.py +0 -0
  198. {invar_tools-1.7.0 → invar_tools-1.7.1}/src/invar/core/patterns/registry.py +0 -0
  199. {invar_tools-1.7.0 → invar_tools-1.7.1}/src/invar/core/patterns/types.py +0 -0
  200. {invar_tools-1.7.0 → invar_tools-1.7.1}/src/invar/core/postcondition_scope.py +0 -0
  201. {invar_tools-1.7.0 → invar_tools-1.7.1}/src/invar/core/property_gen.py +0 -0
  202. {invar_tools-1.7.0 → invar_tools-1.7.1}/src/invar/core/purity.py +0 -0
  203. {invar_tools-1.7.0 → invar_tools-1.7.1}/src/invar/core/purity_heuristics.py +0 -0
  204. {invar_tools-1.7.0 → invar_tools-1.7.1}/src/invar/core/references.py +0 -0
  205. {invar_tools-1.7.0 → invar_tools-1.7.1}/src/invar/core/review_trigger.py +0 -0
  206. {invar_tools-1.7.0 → invar_tools-1.7.1}/src/invar/core/rule_meta.py +0 -0
  207. {invar_tools-1.7.0 → invar_tools-1.7.1}/src/invar/core/rules.py +0 -0
  208. {invar_tools-1.7.0 → invar_tools-1.7.1}/src/invar/core/shell_analysis.py +0 -0
  209. {invar_tools-1.7.0 → invar_tools-1.7.1}/src/invar/core/shell_architecture.py +0 -0
  210. {invar_tools-1.7.0 → invar_tools-1.7.1}/src/invar/core/strategies.py +0 -0
  211. {invar_tools-1.7.0 → invar_tools-1.7.1}/src/invar/core/suggestions.py +0 -0
  212. {invar_tools-1.7.0 → invar_tools-1.7.1}/src/invar/core/sync_helpers.py +0 -0
  213. {invar_tools-1.7.0 → invar_tools-1.7.1}/src/invar/core/tautology.py +0 -0
  214. {invar_tools-1.7.0 → invar_tools-1.7.1}/src/invar/core/template_parser.py +0 -0
  215. {invar_tools-1.7.0 → invar_tools-1.7.1}/src/invar/core/timeout_inference.py +0 -0
  216. {invar_tools-1.7.0 → invar_tools-1.7.1}/src/invar/core/trivial_detection.py +0 -0
  217. {invar_tools-1.7.0 → invar_tools-1.7.1}/src/invar/core/verification_routing.py +0 -0
  218. {invar_tools-1.7.0 → invar_tools-1.7.1}/src/invar/mcp/__init__.py +0 -0
  219. {invar_tools-1.7.0 → invar_tools-1.7.1}/src/invar/mcp/__main__.py +0 -0
  220. {invar_tools-1.7.0 → invar_tools-1.7.1}/src/invar/mcp/server.py +0 -0
  221. {invar_tools-1.7.0 → invar_tools-1.7.1}/src/invar/py.typed +0 -0
  222. {invar_tools-1.7.0 → invar_tools-1.7.1}/src/invar/shell/__init__.py +0 -0
  223. {invar_tools-1.7.0 → invar_tools-1.7.1}/src/invar/shell/commands/__init__.py +0 -0
  224. {invar_tools-1.7.0 → invar_tools-1.7.1}/src/invar/shell/commands/guard.py +0 -0
  225. {invar_tools-1.7.0 → invar_tools-1.7.1}/src/invar/shell/commands/hooks.py +0 -0
  226. {invar_tools-1.7.0 → invar_tools-1.7.1}/src/invar/shell/commands/merge.py +0 -0
  227. {invar_tools-1.7.0 → invar_tools-1.7.1}/src/invar/shell/commands/mutate.py +0 -0
  228. {invar_tools-1.7.0 → invar_tools-1.7.1}/src/invar/shell/commands/perception.py +0 -0
  229. {invar_tools-1.7.0 → invar_tools-1.7.1}/src/invar/shell/commands/sync_self.py +0 -0
  230. {invar_tools-1.7.0 → invar_tools-1.7.1}/src/invar/shell/commands/template_sync.py +0 -0
  231. {invar_tools-1.7.0 → invar_tools-1.7.1}/src/invar/shell/commands/test.py +0 -0
  232. {invar_tools-1.7.0 → invar_tools-1.7.1}/src/invar/shell/commands/update.py +0 -0
  233. {invar_tools-1.7.0 → invar_tools-1.7.1}/src/invar/shell/config.py +0 -0
  234. {invar_tools-1.7.0 → invar_tools-1.7.1}/src/invar/shell/coverage.py +0 -0
  235. {invar_tools-1.7.0 → invar_tools-1.7.1}/src/invar/shell/fs.py +0 -0
  236. {invar_tools-1.7.0 → invar_tools-1.7.1}/src/invar/shell/git.py +0 -0
  237. {invar_tools-1.7.0 → invar_tools-1.7.1}/src/invar/shell/guard_helpers.py +0 -0
  238. {invar_tools-1.7.0 → invar_tools-1.7.1}/src/invar/shell/guard_output.py +0 -0
  239. {invar_tools-1.7.0 → invar_tools-1.7.1}/src/invar/shell/mcp_config.py +0 -0
  240. {invar_tools-1.7.0 → invar_tools-1.7.1}/src/invar/shell/mutation.py +0 -0
  241. {invar_tools-1.7.0 → invar_tools-1.7.1}/src/invar/shell/pattern_integration.py +0 -0
  242. {invar_tools-1.7.0 → invar_tools-1.7.1}/src/invar/shell/property_tests.py +0 -0
  243. {invar_tools-1.7.0 → invar_tools-1.7.1}/src/invar/shell/prove/__init__.py +0 -0
  244. {invar_tools-1.7.0 → invar_tools-1.7.1}/src/invar/shell/prove/accept.py +0 -0
  245. {invar_tools-1.7.0 → invar_tools-1.7.1}/src/invar/shell/prove/cache.py +0 -0
  246. {invar_tools-1.7.0 → invar_tools-1.7.1}/src/invar/shell/prove/crosshair.py +0 -0
  247. {invar_tools-1.7.0 → invar_tools-1.7.1}/src/invar/shell/prove/hypothesis.py +0 -0
  248. {invar_tools-1.7.0 → invar_tools-1.7.1}/src/invar/shell/subprocess_env.py +0 -0
  249. {invar_tools-1.7.0 → invar_tools-1.7.1}/src/invar/shell/template_engine.py +0 -0
  250. {invar_tools-1.7.0 → invar_tools-1.7.1}/src/invar/shell/testing.py +0 -0
  251. {invar_tools-1.7.0 → invar_tools-1.7.1}/src/invar/templates/CLAUDE.md.template +0 -0
  252. {invar_tools-1.7.0 → invar_tools-1.7.1}/src/invar/templates/__init__.py +0 -0
  253. {invar_tools-1.7.0 → invar_tools-1.7.1}/src/invar/templates/config/CLAUDE.md.jinja +0 -0
  254. {invar_tools-1.7.0 → invar_tools-1.7.1}/src/invar/templates/config/context.md.jinja +0 -0
  255. {invar_tools-1.7.0 → invar_tools-1.7.1}/src/invar/templates/context.md.template +0 -0
  256. {invar_tools-1.7.0 → invar_tools-1.7.1}/src/invar/templates/examples/README.md +0 -0
  257. {invar_tools-1.7.0 → invar_tools-1.7.1}/src/invar/templates/examples/conftest.py +0 -0
  258. {invar_tools-1.7.0 → invar_tools-1.7.1}/src/invar/templates/examples/contracts.py +0 -0
  259. {invar_tools-1.7.0 → invar_tools-1.7.1}/src/invar/templates/examples/core_shell.py +0 -0
  260. {invar_tools-1.7.0 → invar_tools-1.7.1}/src/invar/templates/examples/workflow.md +0 -0
  261. {invar_tools-1.7.0 → invar_tools-1.7.1}/src/invar/templates/hooks/PostToolUse.sh.jinja +0 -0
  262. {invar_tools-1.7.0 → invar_tools-1.7.1}/src/invar/templates/hooks/PreToolUse.sh.jinja +0 -0
  263. {invar_tools-1.7.0 → invar_tools-1.7.1}/src/invar/templates/hooks/Stop.sh.jinja +0 -0
  264. {invar_tools-1.7.0 → invar_tools-1.7.1}/src/invar/templates/hooks/UserPromptSubmit.sh.jinja +0 -0
  265. {invar_tools-1.7.0 → invar_tools-1.7.1}/src/invar/templates/hooks/__init__.py +0 -0
  266. {invar_tools-1.7.0 → invar_tools-1.7.1}/src/invar/templates/manifest.toml +0 -0
  267. {invar_tools-1.7.0 → invar_tools-1.7.1}/src/invar/templates/proposal.md.template +0 -0
  268. {invar_tools-1.7.0 → invar_tools-1.7.1}/src/invar/templates/protocol/INVAR.md +0 -0
  269. {invar_tools-1.7.0 → invar_tools-1.7.1}/src/invar/templates/skills/develop/SKILL.md.jinja +0 -0
  270. {invar_tools-1.7.0 → invar_tools-1.7.1}/src/invar/templates/skills/investigate/SKILL.md.jinja +0 -0
  271. {invar_tools-1.7.0 → invar_tools-1.7.1}/src/invar/templates/skills/propose/SKILL.md.jinja +0 -0
  272. {invar_tools-1.7.0 → invar_tools-1.7.1}/src/invar/templates/skills/review/SKILL.md.jinja +0 -0
  273. {invar_tools-1.7.0 → invar_tools-1.7.1}/src/shell/__init__.py +0 -0
  274. {invar_tools-1.7.0 → invar_tools-1.7.1}/tests/__init__.py +0 -0
  275. {invar_tools-1.7.0 → invar_tools-1.7.1}/tests/conftest.py +0 -0
  276. {invar_tools-1.7.0 → invar_tools-1.7.1}/tests/integration/__init__.py +0 -0
  277. {invar_tools-1.7.0 → invar_tools-1.7.1}/tests/integration/test_cli_flags.py +0 -0
  278. {invar_tools-1.7.0 → invar_tools-1.7.1}/tests/integration/test_dx55_regression.py +0 -0
  279. {invar_tools-1.7.0 → invar_tools-1.7.1}/tests/integration/test_dx56_sync.py +0 -0
  280. {invar_tools-1.7.0 → invar_tools-1.7.1}/tests/test_subprocess_env.py +0 -0
  281. {invar_tools-1.7.0 → invar_tools-1.7.1}/uv.lock +0 -0
@@ -1,6 +1,6 @@
1
1
  #!/bin/bash
2
2
  # Invar PostToolUse Hook
3
- # Protocol: v5.0 | Generated: 2025-12-29
3
+ # Protocol: v5.0 | Generated: 2025-12-30
4
4
  # DX-57: Git-based change detection with fallback
5
5
 
6
6
  TOOL_NAME="$1"
@@ -1,6 +1,6 @@
1
1
  #!/bin/bash
2
2
  # Invar PreToolUse Hook
3
- # Protocol: v5.0 | Generated: 2025-12-29
3
+ # Protocol: v5.0 | Generated: 2025-12-30
4
4
  # DX-57: Smart blocking with auto-escape for pytest/crosshair
5
5
 
6
6
  TOOL_NAME="$1"
@@ -1,6 +1,6 @@
1
1
  #!/bin/bash
2
2
  # Invar Stop Hook
3
- # Protocol: v5.0 | Generated: 2025-12-29
3
+ # Protocol: v5.0 | Generated: 2025-12-30
4
4
  # DX-57: Session cleanup and unverified changes warning
5
5
 
6
6
  # Use session-specific state
@@ -1,6 +1,6 @@
1
1
  #!/bin/bash
2
2
  # Invar UserPromptSubmit Hook
3
- # Protocol: v5.0 | Generated: 2025-12-29
3
+ # Protocol: v5.0 | Generated: 2025-12-30
4
4
  # DX-57: Protocol refresh with full INVAR.md injection
5
5
 
6
6
  USER_MESSAGE="$1"
@@ -340,6 +340,7 @@ invar guard # Full: static + doctests + CrossHair + Hypothesis
340
340
  invar guard --static # Static only (quick debug, ~0.5s)
341
341
  invar guard --changed # Modified files only
342
342
  invar guard --coverage # Collect branch coverage
343
+ invar guard -c # Contract coverage only (DX-63)
343
344
  invar sig <file> # Show contracts + signatures
344
345
  invar map --top 10 # Most-referenced symbols
345
346
  invar rules # List all rules with detection/hints (JSON)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: invar-tools
3
- Version: 1.7.0
3
+ Version: 1.7.1
4
4
  Summary: AI-native software engineering tools with design-by-contract verification
5
5
  Project-URL: Homepage, https://github.com/tefx/invar
6
6
  Project-URL: Documentation, https://github.com/tefx/invar#readme
@@ -28,6 +28,7 @@ Requires-Dist: jinja2>=3.0
28
28
  Requires-Dist: mcp>=1.0
29
29
  Requires-Dist: pre-commit>=3.0
30
30
  Requires-Dist: pydantic>=2.0
31
+ Requires-Dist: questionary>=2.0
31
32
  Requires-Dist: returns>=0.20
32
33
  Requires-Dist: rich>=13.0
33
34
  Requires-Dist: typer>=0.9
@@ -129,35 +130,24 @@ Guard passed.
129
130
 
130
131
  **Why uvx?** Always uses latest version, doesn't pollute project dependencies, auto-detects your project's venv.
131
132
 
132
- ### 🆕 New Project
133
+ ### 🎯 Setup
133
134
 
134
135
  ```bash
135
- # 1. Enter your project directory
136
136
  cd your-project
137
137
 
138
- # 2. Initialize with Claude Code (full experience)
138
+ # Interactive mode - choose what to install
139
+ uvx invar-tools init
140
+
141
+ # Or quick setup for Claude Code (skip prompts)
139
142
  uvx invar-tools init --claude
140
143
 
141
- # 3. Add runtime contracts to your project
144
+ # Add runtime contracts to your project
142
145
  pip install invar-runtime
143
- # Or add to pyproject.toml: dependencies = ["invar-runtime"]
144
-
145
- # 4. Start coding with AI
146
146
  ```
147
147
 
148
- ### 📁 Existing Project
149
-
150
- ```bash
151
- cd your-project
152
-
153
- # Update managed files, preserve your customizations
154
- uvx invar-tools init --claude
155
-
156
- # Or without Claude Code integration
157
- uvx invar-tools init
158
- ```
148
+ **Safe and idempotent** — Run `invar init` anytime. It always **merges** with existing files, preserving your content.
159
149
 
160
- Invar's init is idempotent—safe to run multiple times. It detects existing configuration and updates only managed regions.
150
+ > 💡 **After `claude /init`?** Just run `invar init` again to restore Invar configuration.
161
151
 
162
152
  ### 💬 Example Interaction
163
153
 
@@ -375,39 +365,57 @@ AlphaCodium · Parsel · Reflexion · Clover
375
365
 
376
366
  ---
377
367
 
378
- ## 🖥️ Platform Experience
368
+ ## 🖥️ Agent Support
369
+
370
+ | Agent | Status | Setup |
371
+ |-------|--------|-------|
372
+ | **Claude Code** | ✅ Full | `invar init` → select Claude Code |
373
+ | **Pi / Cursor** | 🚧 In progress | `invar init` → select Other, include `AGENT.md` in prompt |
374
+ | **Other** | 📝 Manual | `invar init` → select Other, include `AGENT.md` in prompt |
379
375
 
380
- | Feature | Claude Code | Other Editors |
381
- |---------|-------------|---------------|
382
- | CLI verification (`invar guard`) | ✅ | ✅ |
383
- | Protocol document (INVAR.md) | ✅ | ✅ |
384
- | MCP tool integration | ✅ Auto-configured | Manual setup possible |
385
- | Workflow skills | ✅ Auto-configured | Include in system prompt |
386
- | Pre-commit hooks | ✅ | ✅ |
387
- | Sub-agent review | ✅ | — |
376
+ ### Claude Code (Full Experience)
388
377
 
389
- **Claude Code** provides the full experience—MCP tools, skill routing, and hooks are auto-configured by `invar init --claude`.
378
+ All features auto-configured:
379
+ - MCP tools (`invar_guard`, `invar_sig`, `invar_map`)
380
+ - Workflow skills (`/develop`, `/review`, `/investigate`, `/propose`)
381
+ - Claude Code hooks (tool guidance, verification reminders)
382
+ - Pre-commit hooks
390
383
 
391
- **Other editors** can achieve similar results by:
392
- 1. Adding INVAR.md content to system prompts
393
- 2. Manually configuring MCP servers (if supported)
394
- 3. Using CLI commands for verification
384
+ ### Pi / Cursor (In Progress)
385
+
386
+ Currently available:
387
+ - Protocol document (INVAR.md)
388
+ - CLI verification (`invar guard`)
389
+ - Pre-commit hooks
390
+ - MCP server (manual configuration)
391
+
392
+ ### Other Editors (Manual)
393
+
394
+ 1. Run `invar init` → select "Other (AGENT.md)"
395
+ 2. Include generated `AGENT.md` in your agent's prompt
396
+ 3. Configure MCP server if supported
397
+ 4. Use CLI commands (`invar guard`) for verification
395
398
 
396
399
  ---
397
400
 
398
401
  ## 📂 What Gets Installed
399
402
 
400
- `invar init --claude` creates:
403
+ `invar init` creates (select in interactive mode):
404
+
405
+ | File/Directory | Purpose | Category |
406
+ |----------------|---------|----------|
407
+ | `INVAR.md` | Protocol for AI agents | Required |
408
+ | `.invar/` | Config, context, examples | Required |
409
+ | `.pre-commit-config.yaml` | Verification before commit | Optional |
410
+ | `src/core/`, `src/shell/` | Recommended structure | Optional |
411
+ | `CLAUDE.md` | Agent instructions | Claude Code |
412
+ | `.claude/skills/` | Workflow automation | Claude Code |
413
+ | `.claude/commands/` | User commands (/audit, /guard) | Claude Code |
414
+ | `.claude/hooks/` | Tool guidance | Claude Code |
415
+ | `.mcp.json` | MCP server config | Claude Code |
416
+ | `AGENT.md` | Universal agent instructions | Other agents |
401
417
 
402
- | File/Directory | Purpose | Editable? |
403
- |----------------|---------|-----------|
404
- | `INVAR.md` | Protocol for AI agents | No (managed) |
405
- | `CLAUDE.md` | Project configuration | Yes |
406
- | `.claude/skills/` | Workflow skills | Yes |
407
- | `.claude/hooks/` | Tool call interception | Yes |
408
- | `.invar/examples/` | Reference patterns | No (managed) |
409
- | `.invar/context.md` | Project state, lessons | Yes |
410
- | `pyproject.toml` | `[tool.invar]` section | Yes |
418
+ **Note:** If `pyproject.toml` exists, Guard configuration goes there as `[tool.invar.guard]` instead of `.invar/config.toml`.
411
419
 
412
420
  **Recommended structure:**
413
421
 
@@ -473,7 +481,9 @@ rules = ["missing_contract", "shell_result"]
473
481
  | `invar guard` | Full verification (static + doctest + property + symbolic) |
474
482
  | `invar guard --changed` | Only git-modified files |
475
483
  | `invar guard --static` | Static analysis only (~0.5s) |
476
- | `invar init` | Initialize or update project |
484
+ | `invar init` | Initialize or update project (interactive) |
485
+ | `invar init --claude` | Quick setup for Claude Code |
486
+ | `invar uninstall` | Remove Invar from project (preserves user content) |
477
487
  | `invar sig <file>` | Show signatures and contracts |
478
488
  | `invar map` | Symbol map with reference counts |
479
489
  | `invar rules` | List all rules |
@@ -88,35 +88,24 @@ Guard passed.
88
88
 
89
89
  **Why uvx?** Always uses latest version, doesn't pollute project dependencies, auto-detects your project's venv.
90
90
 
91
- ### 🆕 New Project
91
+ ### 🎯 Setup
92
92
 
93
93
  ```bash
94
- # 1. Enter your project directory
95
94
  cd your-project
96
95
 
97
- # 2. Initialize with Claude Code (full experience)
96
+ # Interactive mode - choose what to install
97
+ uvx invar-tools init
98
+
99
+ # Or quick setup for Claude Code (skip prompts)
98
100
  uvx invar-tools init --claude
99
101
 
100
- # 3. Add runtime contracts to your project
102
+ # Add runtime contracts to your project
101
103
  pip install invar-runtime
102
- # Or add to pyproject.toml: dependencies = ["invar-runtime"]
103
-
104
- # 4. Start coding with AI
105
104
  ```
106
105
 
107
- ### 📁 Existing Project
108
-
109
- ```bash
110
- cd your-project
111
-
112
- # Update managed files, preserve your customizations
113
- uvx invar-tools init --claude
114
-
115
- # Or without Claude Code integration
116
- uvx invar-tools init
117
- ```
106
+ **Safe and idempotent** — Run `invar init` anytime. It always **merges** with existing files, preserving your content.
118
107
 
119
- Invar's init is idempotent—safe to run multiple times. It detects existing configuration and updates only managed regions.
108
+ > 💡 **After `claude /init`?** Just run `invar init` again to restore Invar configuration.
120
109
 
121
110
  ### 💬 Example Interaction
122
111
 
@@ -334,39 +323,57 @@ AlphaCodium · Parsel · Reflexion · Clover
334
323
 
335
324
  ---
336
325
 
337
- ## 🖥️ Platform Experience
326
+ ## 🖥️ Agent Support
327
+
328
+ | Agent | Status | Setup |
329
+ |-------|--------|-------|
330
+ | **Claude Code** | ✅ Full | `invar init` → select Claude Code |
331
+ | **Pi / Cursor** | 🚧 In progress | `invar init` → select Other, include `AGENT.md` in prompt |
332
+ | **Other** | 📝 Manual | `invar init` → select Other, include `AGENT.md` in prompt |
338
333
 
339
- | Feature | Claude Code | Other Editors |
340
- |---------|-------------|---------------|
341
- | CLI verification (`invar guard`) | ✅ | ✅ |
342
- | Protocol document (INVAR.md) | ✅ | ✅ |
343
- | MCP tool integration | ✅ Auto-configured | Manual setup possible |
344
- | Workflow skills | ✅ Auto-configured | Include in system prompt |
345
- | Pre-commit hooks | ✅ | ✅ |
346
- | Sub-agent review | ✅ | — |
334
+ ### Claude Code (Full Experience)
347
335
 
348
- **Claude Code** provides the full experience—MCP tools, skill routing, and hooks are auto-configured by `invar init --claude`.
336
+ All features auto-configured:
337
+ - MCP tools (`invar_guard`, `invar_sig`, `invar_map`)
338
+ - Workflow skills (`/develop`, `/review`, `/investigate`, `/propose`)
339
+ - Claude Code hooks (tool guidance, verification reminders)
340
+ - Pre-commit hooks
349
341
 
350
- **Other editors** can achieve similar results by:
351
- 1. Adding INVAR.md content to system prompts
352
- 2. Manually configuring MCP servers (if supported)
353
- 3. Using CLI commands for verification
342
+ ### Pi / Cursor (In Progress)
343
+
344
+ Currently available:
345
+ - Protocol document (INVAR.md)
346
+ - CLI verification (`invar guard`)
347
+ - Pre-commit hooks
348
+ - MCP server (manual configuration)
349
+
350
+ ### Other Editors (Manual)
351
+
352
+ 1. Run `invar init` → select "Other (AGENT.md)"
353
+ 2. Include generated `AGENT.md` in your agent's prompt
354
+ 3. Configure MCP server if supported
355
+ 4. Use CLI commands (`invar guard`) for verification
354
356
 
355
357
  ---
356
358
 
357
359
  ## 📂 What Gets Installed
358
360
 
359
- `invar init --claude` creates:
361
+ `invar init` creates (select in interactive mode):
362
+
363
+ | File/Directory | Purpose | Category |
364
+ |----------------|---------|----------|
365
+ | `INVAR.md` | Protocol for AI agents | Required |
366
+ | `.invar/` | Config, context, examples | Required |
367
+ | `.pre-commit-config.yaml` | Verification before commit | Optional |
368
+ | `src/core/`, `src/shell/` | Recommended structure | Optional |
369
+ | `CLAUDE.md` | Agent instructions | Claude Code |
370
+ | `.claude/skills/` | Workflow automation | Claude Code |
371
+ | `.claude/commands/` | User commands (/audit, /guard) | Claude Code |
372
+ | `.claude/hooks/` | Tool guidance | Claude Code |
373
+ | `.mcp.json` | MCP server config | Claude Code |
374
+ | `AGENT.md` | Universal agent instructions | Other agents |
360
375
 
361
- | File/Directory | Purpose | Editable? |
362
- |----------------|---------|-----------|
363
- | `INVAR.md` | Protocol for AI agents | No (managed) |
364
- | `CLAUDE.md` | Project configuration | Yes |
365
- | `.claude/skills/` | Workflow skills | Yes |
366
- | `.claude/hooks/` | Tool call interception | Yes |
367
- | `.invar/examples/` | Reference patterns | No (managed) |
368
- | `.invar/context.md` | Project state, lessons | Yes |
369
- | `pyproject.toml` | `[tool.invar]` section | Yes |
376
+ **Note:** If `pyproject.toml` exists, Guard configuration goes there as `[tool.invar.guard]` instead of `.invar/config.toml`.
370
377
 
371
378
  **Recommended structure:**
372
379
 
@@ -432,7 +439,9 @@ rules = ["missing_contract", "shell_result"]
432
439
  | `invar guard` | Full verification (static + doctest + property + symbolic) |
433
440
  | `invar guard --changed` | Only git-modified files |
434
441
  | `invar guard --static` | Static analysis only (~0.5s) |
435
- | `invar init` | Initialize or update project |
442
+ | `invar init` | Initialize or update project (interactive) |
443
+ | `invar init --claude` | Quick setup for Claude Code |
444
+ | `invar uninstall` | Remove Invar from project (preserves user content) |
436
445
  | `invar sig <file>` | Show signatures and contracts |
437
446
  | `invar map` | Symbol map with reference counts |
438
447
  | `invar rules` | List all rules |
@@ -345,8 +345,7 @@ Invar provides MCP (Model Context Protocol) tools for deeper integration with Cl
345
345
  ### Setup
346
346
 
347
347
  ```bash
348
- uvx invar-tools init # Auto-creates .mcp.json at project root
349
- # or: invar init (if installed globally)
348
+ uvx invar-tools init # Interactive mode, auto-creates .mcp.json
350
349
  ```
351
350
 
352
351
  ### Available Tools
@@ -768,10 +768,11 @@ Create src/core and src/shell? [Y/n]
768
768
  **CLI Options:**
769
769
 
770
770
  ```bash
771
- invar init # Interactive, asks about directories
772
- invar init --dirs # Always create src/core, src/shell
773
- invar init --no-dirs # Never create directories
774
- invar init --config-only # Only add config, no INVAR.md/CLAUDE.md
771
+ invar init # Interactive mode with menus
772
+ invar init --claude # Auto-select Claude Code, skip prompts
773
+ invar init --preview # Show what would be done (dry run)
774
+ invar uninstall # Remove Invar from project (preserves user content)
775
+ invar uninstall --dry-run # Preview what would be removed
775
776
  ```
776
777
 
777
778
  ---
@@ -2,15 +2,23 @@
2
2
 
3
3
  Invar's core value—USBV workflow, contract-driven development, and automated verification—works with any AI coding agent. This guide covers integration with popular alternatives to Claude Code.
4
4
 
5
+ ## Agent Support Status
6
+
7
+ | Agent | Status | Setup |
8
+ |-------|--------|-------|
9
+ | **Claude Code** | ✅ Full | `invar init` → select Claude Code |
10
+ | **Pi / Cursor** | 🚧 In progress | `invar init` → select Other, include `AGENT.md` in prompt |
11
+ | **Other** | 📝 Manual | `invar init` → select Other, include `AGENT.md` in prompt |
12
+
5
13
  ## Quick Comparison
6
14
 
7
15
  | Agent | Instruction File | MCP Support | Hooks | Effort |
8
16
  |-------|------------------|-------------|-------|--------|
9
17
  | [Claude Code](../agents.md) | CLAUDE.md | ✅ Full | ✅ 4 types | Native |
10
- | [Cline](#cline) | .clinerules | ✅ Full | ❌ | Low |
11
- | [Cursor](#cursor) | .cursorrules | ✅ Full | ✅ Beta | Medium |
12
- | [Aider](#aider) | CONVENTIONS.md | ⚠️ CLI | ❌ | Low |
13
- | [Continue](#continue) | config.yaml | ✅ Full | ❌ | Low |
18
+ | [Cline](#cline) | .clinerules | ✅ Full | ❌ | Manual |
19
+ | [Cursor](#cursor) | .cursorrules | ✅ Full | ✅ Beta | Manual |
20
+ | [Aider](#aider) | CONVENTIONS.md | ⚠️ CLI | ❌ | Manual |
21
+ | [Continue](#continue) | config.yaml | ✅ Full | ❌ | Manual |
14
22
 
15
23
  ## What Works Everywhere
16
24
 
@@ -39,10 +47,8 @@ Invar's core value—USBV workflow, contract-driven development, and automated v
39
47
  → [Full Guide: Cline Integration](./cline.md)
40
48
 
41
49
  ```bash
42
- # Quick setup
43
- invar init --agent=cline # Coming soon
44
-
45
- # Or manual setup - create .clinerules in project root
50
+ # Setup
51
+ invar init # Select "Other (AGENT.md)", then copy to .clinerules
46
52
  ```
47
53
 
48
54
  **Key features:**
@@ -59,10 +65,8 @@ invar init --agent=cline # Coming soon
59
65
  → [Full Guide: Cursor Integration](./cursor.md)
60
66
 
61
67
  ```bash
62
- # Quick setup
63
- invar init --agent=cursor # Coming soon
64
-
65
- # Or manual setup - create .cursorrules in project root
68
+ # Setup
69
+ invar init # Select "Other (AGENT.md)", then copy to .cursorrules
66
70
  ```
67
71
 
68
72
  **Key features:**
@@ -174,14 +178,14 @@ Or if installed in a virtual environment:
174
178
 
175
179
  ### From Claude Code to Others
176
180
 
177
- 1. Copy CLAUDE.md content to target instruction file
178
- 2. Configure MCP (if supported)
179
- 3. Replace skill triggers with manual workflow
181
+ 1. Run `invar init` select "Other (AGENT.md)"
182
+ 2. Copy AGENT.md content to target instruction file
183
+ 3. Configure MCP (if supported)
180
184
 
181
185
  ### From Others to Claude Code
182
186
 
183
- 1. Run `invar init` to generate full setup
184
- 2. Enjoy skills, hooks, and commands
187
+ 1. Run `invar init` select Claude Code
188
+ 2. All features auto-configured (skills, hooks, MCP)
185
189
 
186
190
  ---
187
191
 
@@ -666,26 +666,25 @@
666
666
  <p class="subtitle">One command to set up your project</p>
667
667
 
668
668
  <div class="install-command">
669
- <code>cd your-project && uvx invar-tools init --claude</code>
669
+ <code>cd your-project && uvx invar-tools init</code>
670
670
  </div>
671
671
 
672
672
  <p class="install-note">
673
- Enter your project directory first. <code>uvx</code> runs tools in an isolated environment.
674
- Add <code>pip install invar-runtime</code> for runtime contracts.
673
+ Interactive mode select your agent. Add <code>pip install invar-runtime</code> for runtime contracts.
675
674
  </p>
676
675
 
677
676
  <div class="experience-tiers">
678
677
  <div class="tier full">
679
- <h4>Claude Code</h4>
680
- <p>Full experience: Skills, MCP tools, sub-agent review</p>
678
+ <h4>✅ Claude Code</h4>
679
+ <p>Full support: Skills, MCP, hooks, sub-agent review</p>
681
680
  </div>
682
681
  <div class="tier">
683
- <h4>Cursor / Windsurf</h4>
684
- <p>Protocol document + CLI verification</p>
682
+ <h4>🚧 Pi / Cursor</h4>
683
+ <p>In progress: Select Other, include AGENT.md</p>
685
684
  </div>
686
685
  <div class="tier">
687
- <h4>Others</h4>
688
- <p>CLI commands work everywhere</p>
686
+ <h4>📝 Other</h4>
687
+ <p>Manual: Select Other, include AGENT.md in prompt</p>
689
688
  </div>
690
689
  </div>
691
690
  </div>