crucible-mcp 0.3.0__tar.gz → 0.5.0__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 (49) hide show
  1. {crucible_mcp-0.3.0 → crucible_mcp-0.5.0}/PKG-INFO +11 -3
  2. {crucible_mcp-0.3.0 → crucible_mcp-0.5.0}/README.md +9 -2
  3. {crucible_mcp-0.3.0 → crucible_mcp-0.5.0}/pyproject.toml +2 -1
  4. {crucible_mcp-0.3.0 → crucible_mcp-0.5.0}/src/crucible/__init__.py +1 -1
  5. {crucible_mcp-0.3.0 → crucible_mcp-0.5.0}/src/crucible/cli.py +772 -172
  6. crucible_mcp-0.5.0/src/crucible/enforcement/__init__.py +40 -0
  7. crucible_mcp-0.5.0/src/crucible/enforcement/assertions.py +276 -0
  8. crucible_mcp-0.5.0/src/crucible/enforcement/budget.py +179 -0
  9. crucible_mcp-0.5.0/src/crucible/enforcement/compliance.py +486 -0
  10. crucible_mcp-0.5.0/src/crucible/enforcement/models.py +177 -0
  11. crucible_mcp-0.5.0/src/crucible/enforcement/patterns.py +337 -0
  12. crucible_mcp-0.5.0/src/crucible/review/__init__.py +23 -0
  13. crucible_mcp-0.5.0/src/crucible/review/core.py +454 -0
  14. {crucible_mcp-0.3.0 → crucible_mcp-0.5.0}/src/crucible/server.py +171 -327
  15. {crucible_mcp-0.3.0 → crucible_mcp-0.5.0}/src/crucible/tools/git.py +17 -4
  16. {crucible_mcp-0.3.0 → crucible_mcp-0.5.0}/src/crucible_mcp.egg-info/PKG-INFO +11 -3
  17. {crucible_mcp-0.3.0 → crucible_mcp-0.5.0}/src/crucible_mcp.egg-info/SOURCES.txt +10 -0
  18. {crucible_mcp-0.3.0 → crucible_mcp-0.5.0}/src/crucible_mcp.egg-info/requires.txt +1 -0
  19. {crucible_mcp-0.3.0 → crucible_mcp-0.5.0}/tests/test_cli.py +21 -21
  20. crucible_mcp-0.5.0/tests/test_compliance.py +617 -0
  21. crucible_mcp-0.5.0/tests/test_enforcement.py +613 -0
  22. {crucible_mcp-0.3.0 → crucible_mcp-0.5.0}/tests/test_full_review.py +41 -41
  23. {crucible_mcp-0.3.0 → crucible_mcp-0.5.0}/tests/test_git.py +27 -7
  24. {crucible_mcp-0.3.0 → crucible_mcp-0.5.0}/tests/test_hooks_cli.py +1 -1
  25. {crucible_mcp-0.3.0 → crucible_mcp-0.5.0}/tests/test_integration.py +4 -4
  26. {crucible_mcp-0.3.0 → crucible_mcp-0.5.0}/tests/test_server.py +29 -25
  27. {crucible_mcp-0.3.0 → crucible_mcp-0.5.0}/setup.cfg +0 -0
  28. {crucible_mcp-0.3.0 → crucible_mcp-0.5.0}/src/crucible/domain/__init__.py +0 -0
  29. {crucible_mcp-0.3.0 → crucible_mcp-0.5.0}/src/crucible/domain/detection.py +0 -0
  30. {crucible_mcp-0.3.0 → crucible_mcp-0.5.0}/src/crucible/errors.py +0 -0
  31. {crucible_mcp-0.3.0 → crucible_mcp-0.5.0}/src/crucible/hooks/__init__.py +0 -0
  32. {crucible_mcp-0.3.0 → crucible_mcp-0.5.0}/src/crucible/hooks/precommit.py +0 -0
  33. {crucible_mcp-0.3.0 → crucible_mcp-0.5.0}/src/crucible/knowledge/__init__.py +0 -0
  34. {crucible_mcp-0.3.0 → crucible_mcp-0.5.0}/src/crucible/knowledge/loader.py +0 -0
  35. {crucible_mcp-0.3.0 → crucible_mcp-0.5.0}/src/crucible/models.py +0 -0
  36. {crucible_mcp-0.3.0 → crucible_mcp-0.5.0}/src/crucible/skills/__init__.py +0 -0
  37. {crucible_mcp-0.3.0 → crucible_mcp-0.5.0}/src/crucible/skills/loader.py +0 -0
  38. {crucible_mcp-0.3.0 → crucible_mcp-0.5.0}/src/crucible/synthesis/__init__.py +0 -0
  39. {crucible_mcp-0.3.0 → crucible_mcp-0.5.0}/src/crucible/tools/__init__.py +0 -0
  40. {crucible_mcp-0.3.0 → crucible_mcp-0.5.0}/src/crucible/tools/delegation.py +0 -0
  41. {crucible_mcp-0.3.0 → crucible_mcp-0.5.0}/src/crucible_mcp.egg-info/dependency_links.txt +0 -0
  42. {crucible_mcp-0.3.0 → crucible_mcp-0.5.0}/src/crucible_mcp.egg-info/entry_points.txt +0 -0
  43. {crucible_mcp-0.3.0 → crucible_mcp-0.5.0}/src/crucible_mcp.egg-info/top_level.txt +0 -0
  44. {crucible_mcp-0.3.0 → crucible_mcp-0.5.0}/tests/test_detection.py +0 -0
  45. {crucible_mcp-0.3.0 → crucible_mcp-0.5.0}/tests/test_knowledge.py +0 -0
  46. {crucible_mcp-0.3.0 → crucible_mcp-0.5.0}/tests/test_precommit.py +0 -0
  47. {crucible_mcp-0.3.0 → crucible_mcp-0.5.0}/tests/test_skills.py +0 -0
  48. {crucible_mcp-0.3.0 → crucible_mcp-0.5.0}/tests/test_skills_loader.py +0 -0
  49. {crucible_mcp-0.3.0 → crucible_mcp-0.5.0}/tests/test_tools.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: crucible-mcp
3
- Version: 0.3.0
3
+ Version: 0.5.0
4
4
  Summary: Code review MCP server for Claude. Not affiliated with Atlassian.
5
5
  Author: be.nvy
6
6
  License-Expression: MIT
@@ -9,6 +9,7 @@ Requires-Python: >=3.11
9
9
  Description-Content-Type: text/markdown
10
10
  Requires-Dist: mcp>=1.0.0
11
11
  Requires-Dist: pyyaml>=6.0
12
+ Requires-Dist: anthropic>=0.40.0
12
13
  Provides-Extra: dev
13
14
  Requires-Dist: pytest>=8.0; extra == "dev"
14
15
  Requires-Dist: pytest-asyncio>=0.23; extra == "dev"
@@ -17,7 +18,9 @@ Requires-Dist: ruff>=0.3; extra == "dev"
17
18
 
18
19
  # Crucible
19
20
 
20
- Load your coding patterns into Claude Code.
21
+ **Your team's standards, applied by Claude, every time.**
22
+
23
+ Claude without context applies generic best practices. Crucible loads *your* patterns—so Claude reviews code the way your team would, not the way the internet would.
21
24
 
22
25
  ```
23
26
  ├── Personas: Domain-specific thinking (how to approach problems)
@@ -26,7 +29,12 @@ Load your coding patterns into Claude Code.
26
29
  └── Context-aware: Loads relevant skills based on what you're working on
27
30
  ```
28
31
 
29
- **Personas for domains. Knowledge for patterns. All customizable.**
32
+ **Why Crucible?**
33
+ - **Consistency** — Same checklist every time, for every engineer, every session
34
+ - **Automation** — Runs in CI and pre-commit, not just interactively
35
+ - **Institutional knowledge** — Your senior engineer's mental checklist, in the repo
36
+ - **Your context** — Security fundamentals plus *your* auth patterns, *your* conventions, *your* definition of "done"
37
+ - **Cost efficiency** — Filter with free tools first, LLM only on what needs judgment
30
38
 
31
39
  > Not affiliated with Atlassian's Crucible.
32
40
 
@@ -1,6 +1,8 @@
1
1
  # Crucible
2
2
 
3
- Load your coding patterns into Claude Code.
3
+ **Your team's standards, applied by Claude, every time.**
4
+
5
+ Claude without context applies generic best practices. Crucible loads *your* patterns—so Claude reviews code the way your team would, not the way the internet would.
4
6
 
5
7
  ```
6
8
  ├── Personas: Domain-specific thinking (how to approach problems)
@@ -9,7 +11,12 @@ Load your coding patterns into Claude Code.
9
11
  └── Context-aware: Loads relevant skills based on what you're working on
10
12
  ```
11
13
 
12
- **Personas for domains. Knowledge for patterns. All customizable.**
14
+ **Why Crucible?**
15
+ - **Consistency** — Same checklist every time, for every engineer, every session
16
+ - **Automation** — Runs in CI and pre-commit, not just interactively
17
+ - **Institutional knowledge** — Your senior engineer's mental checklist, in the repo
18
+ - **Your context** — Security fundamentals plus *your* auth patterns, *your* conventions, *your* definition of "done"
19
+ - **Cost efficiency** — Filter with free tools first, LLM only on what needs judgment
13
20
 
14
21
  > Not affiliated with Atlassian's Crucible.
15
22
 
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "crucible-mcp"
3
- version = "0.3.0"
3
+ version = "0.5.0"
4
4
  description = "Code review MCP server for Claude. Not affiliated with Atlassian."
5
5
  readme = "README.md"
6
6
  requires-python = ">=3.11"
@@ -11,6 +11,7 @@ keywords = ["mcp", "code-review", "static-analysis", "claude"]
11
11
  dependencies = [
12
12
  "mcp>=1.0.0",
13
13
  "pyyaml>=6.0",
14
+ "anthropic>=0.40.0",
14
15
  ]
15
16
 
16
17
  [project.optional-dependencies]
@@ -1,3 +1,3 @@
1
1
  """crucible: Code review orchestration MCP server."""
2
2
 
3
- __version__ = "0.1.0"
3
+ __version__ = "0.4.0"