crucible-mcp 0.2.0__py3-none-any.whl → 0.4.0__py3-none-any.whl
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.
- crucible/__init__.py +1 -1
- crucible/cli.py +410 -158
- crucible/enforcement/__init__.py +40 -0
- crucible/enforcement/assertions.py +276 -0
- crucible/enforcement/models.py +107 -0
- crucible/enforcement/patterns.py +337 -0
- crucible/review/__init__.py +23 -0
- crucible/review/core.py +383 -0
- crucible/server.py +508 -273
- {crucible_mcp-0.2.0.dist-info → crucible_mcp-0.4.0.dist-info}/METADATA +27 -7
- {crucible_mcp-0.2.0.dist-info → crucible_mcp-0.4.0.dist-info}/RECORD +14 -8
- {crucible_mcp-0.2.0.dist-info → crucible_mcp-0.4.0.dist-info}/WHEEL +0 -0
- {crucible_mcp-0.2.0.dist-info → crucible_mcp-0.4.0.dist-info}/entry_points.txt +0 -0
- {crucible_mcp-0.2.0.dist-info → crucible_mcp-0.4.0.dist-info}/top_level.txt +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: crucible-mcp
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.4.0
|
|
4
4
|
Summary: Code review MCP server for Claude. Not affiliated with Atlassian.
|
|
5
5
|
Author: be.nvy
|
|
6
6
|
License-Expression: MIT
|
|
@@ -17,7 +17,9 @@ Requires-Dist: ruff>=0.3; extra == "dev"
|
|
|
17
17
|
|
|
18
18
|
# Crucible
|
|
19
19
|
|
|
20
|
-
|
|
20
|
+
**Your team's standards, applied by Claude, every time.**
|
|
21
|
+
|
|
22
|
+
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
23
|
|
|
22
24
|
```
|
|
23
25
|
├── Personas: Domain-specific thinking (how to approach problems)
|
|
@@ -26,7 +28,12 @@ Load your coding patterns into Claude Code.
|
|
|
26
28
|
└── Context-aware: Loads relevant skills based on what you're working on
|
|
27
29
|
```
|
|
28
30
|
|
|
29
|
-
**
|
|
31
|
+
**Why Crucible?**
|
|
32
|
+
- **Consistency** — Same checklist every time, for every engineer, every session
|
|
33
|
+
- **Automation** — Runs in CI and pre-commit, not just interactively
|
|
34
|
+
- **Institutional knowledge** — Your senior engineer's mental checklist, in the repo
|
|
35
|
+
- **Your context** — Security fundamentals plus *your* auth patterns, *your* conventions, *your* definition of "done"
|
|
36
|
+
- **Cost efficiency** — Filter with free tools first, LLM only on what needs judgment
|
|
30
37
|
|
|
31
38
|
> Not affiliated with Atlassian's Crucible.
|
|
32
39
|
|
|
@@ -73,20 +80,33 @@ Code → Detect Domain → Load Personas + Knowledge → Claude with YOUR patter
|
|
|
73
80
|
|
|
74
81
|
| Tool | Purpose |
|
|
75
82
|
|------|---------|
|
|
76
|
-
| `
|
|
77
|
-
| `
|
|
83
|
+
| `review(path)` | Full review: analysis + skills + knowledge |
|
|
84
|
+
| `review(mode='staged')` | Review git changes with skills + knowledge |
|
|
85
|
+
| `load_knowledge(files)` | Load specific knowledge files |
|
|
86
|
+
| `get_principles(topic)` | Load engineering knowledge by topic |
|
|
78
87
|
| `delegate_*` | Direct tool access (semgrep, ruff, slither, bandit) |
|
|
79
88
|
| `check_tools()` | Show installed analysis tools |
|
|
80
89
|
|
|
90
|
+
The unified `review` tool supports:
|
|
91
|
+
- **Path-based**: `review(path="src/")` - analyze files/directories
|
|
92
|
+
- **Git-aware**: `review(mode="staged")` - analyze changes (staged, unstaged, branch, commits)
|
|
93
|
+
- **Quick mode**: `review(path, include_skills=false)` - analysis only, no skills/knowledge
|
|
94
|
+
|
|
81
95
|
## CLI
|
|
82
96
|
|
|
83
97
|
```bash
|
|
98
|
+
crucible init # Initialize .crucible/ for your project
|
|
99
|
+
crucible review # Review staged changes
|
|
100
|
+
crucible review --mode branch # Review current branch vs main
|
|
101
|
+
crucible ci generate # Generate GitHub Actions workflow
|
|
102
|
+
|
|
84
103
|
crucible skills list # List all skills
|
|
85
|
-
crucible skills show <skill> # Show which version is active
|
|
86
104
|
crucible skills init <skill> # Copy to .crucible/ for customization
|
|
87
105
|
|
|
88
106
|
crucible knowledge list # List all knowledge files
|
|
89
107
|
crucible knowledge init <file> # Copy for customization
|
|
108
|
+
|
|
109
|
+
crucible hooks install # Install pre-commit hook
|
|
90
110
|
```
|
|
91
111
|
|
|
92
112
|
See [ARCHITECTURE.md](docs/ARCHITECTURE.md) for the full flow.
|
|
@@ -135,6 +155,6 @@ See [KNOWLEDGE.md](docs/KNOWLEDGE.md) for topics covered.
|
|
|
135
155
|
|
|
136
156
|
```bash
|
|
137
157
|
pip install -e ".[dev]"
|
|
138
|
-
pytest # Run tests (
|
|
158
|
+
pytest # Run tests (509 tests)
|
|
139
159
|
ruff check src/ --fix # Lint
|
|
140
160
|
```
|
|
@@ -1,22 +1,28 @@
|
|
|
1
|
-
crucible/__init__.py,sha256=
|
|
2
|
-
crucible/cli.py,sha256=
|
|
1
|
+
crucible/__init__.py,sha256=M4v_CsJVOdiAAPgmd54mxkkbnes8e5ifMznDuOJhzzY,77
|
|
2
|
+
crucible/cli.py,sha256=8rmzsh92h1kFSCFBGfd50pKWTdd7r2c3W_klk9c5JnY,60527
|
|
3
3
|
crucible/errors.py,sha256=HrX_yvJEhXJoKodXGo_iY9wqx2J3ONYy0a_LbrVC5As,819
|
|
4
4
|
crucible/models.py,sha256=jaxbiPc1E7bJxKPLadZe1dbSJdq-WINsxjveeSNNqeg,2066
|
|
5
|
-
crucible/server.py,sha256=
|
|
5
|
+
crucible/server.py,sha256=rzSi1sfuu1o5CpjMUgxFjJB6zjra9-M9WFmmelmORWA,43817
|
|
6
6
|
crucible/domain/__init__.py,sha256=2fsoB5wH2Pl3vtGRt4voYOSZ04-zLoW8pNq6nvzVMgU,118
|
|
7
7
|
crucible/domain/detection.py,sha256=TNeLB_VQgS1AsT5BKDf_tIpGa47THrFoRXwU4u54VB0,1797
|
|
8
|
+
crucible/enforcement/__init__.py,sha256=FOaGSrE1SWFPxBJ1L5VoDhQDmlJgRXXs_iiI20wHf2Q,867
|
|
9
|
+
crucible/enforcement/assertions.py,sha256=ay5QvJIr_YaqWYbrJNhbouafJOiy4ZhwiX7E9VAY3s4,8166
|
|
10
|
+
crucible/enforcement/models.py,sha256=aIuxjqZfACpabT2lB1J3LKVzkcc1RTdbr7mAuBEAreU,2435
|
|
11
|
+
crucible/enforcement/patterns.py,sha256=hE4Z-JJ9OBruSFPBDxw_aNaSJbyUPD2SWCEwA1KzDmI,9720
|
|
8
12
|
crucible/hooks/__init__.py,sha256=k5oEWhTJKEQi-QWBfTbp1p6HaKg55_wVCBVD5pZzdqw,271
|
|
9
13
|
crucible/hooks/precommit.py,sha256=OAwvjEACopcrTmWmZMO0S8TqZkvFY_392pJBFCHGSaQ,21561
|
|
10
14
|
crucible/knowledge/__init__.py,sha256=unb7kyO1MtB3Zt-TGx_O8LE79KyrGrNHoFFHgUWUvGU,40
|
|
11
15
|
crucible/knowledge/loader.py,sha256=DD4gqU6xkssaWvEkbymMOu6YtHab7YLEk-tU9cPTeaE,6666
|
|
16
|
+
crucible/review/__init__.py,sha256=Ssva6Yaqcc44AqL9OUMjxypu5R1PPkrmLGk6OKtP15w,547
|
|
17
|
+
crucible/review/core.py,sha256=Yl7NFFrUtzwjonovhv6sP2fDoplosAjxLvi5vASx08o,12671
|
|
12
18
|
crucible/skills/__init__.py,sha256=L3heXWF0T3aR9yYLFphs1LNlkxAFSPkPuRFMH-S1taI,495
|
|
13
19
|
crucible/skills/loader.py,sha256=iC0_V1s6CIse5NXyFGtpLbON8xDxYh8xXmHH7hAX5O0,8642
|
|
14
20
|
crucible/synthesis/__init__.py,sha256=CYrkZG4bdAjp8XdOh1smfKscd3YU5lZlaDLGwLE9c-0,46
|
|
15
21
|
crucible/tools/__init__.py,sha256=gFRThTk1E-fHzpe8bB5rtBG6Z6G-ysPzjVEHfKGbEYU,400
|
|
16
22
|
crucible/tools/delegation.py,sha256=_x1y76No3qkmGjjROVvMx1pSKKwU59aRu5R-r07lVFU,12871
|
|
17
23
|
crucible/tools/git.py,sha256=EmxRUt0jSFLa_mm_2Czt5rHdiFC0YK9IpaPDfRwlXVo,10051
|
|
18
|
-
crucible_mcp-0.
|
|
19
|
-
crucible_mcp-0.
|
|
20
|
-
crucible_mcp-0.
|
|
21
|
-
crucible_mcp-0.
|
|
22
|
-
crucible_mcp-0.
|
|
24
|
+
crucible_mcp-0.4.0.dist-info/METADATA,sha256=hmhKr9GR0M9x0qV-edCMibj8lFrgKb4Bgv-Kx-cJoSY,5168
|
|
25
|
+
crucible_mcp-0.4.0.dist-info/WHEEL,sha256=wUyA8OaulRlbfwMtmQsvNngGrxQHAvkKcvRmdizlJi0,92
|
|
26
|
+
crucible_mcp-0.4.0.dist-info/entry_points.txt,sha256=18BZaH1OlFSFYtKuHq0Z8yYX8Wmx7Ikfqay-P00ZX3Q,83
|
|
27
|
+
crucible_mcp-0.4.0.dist-info/top_level.txt,sha256=4hzuFgqbFPOO-WiU_DYxTm8VYIxTXh7Wlp0gRcWR0Cs,9
|
|
28
|
+
crucible_mcp-0.4.0.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|