crucible-mcp 1.1.0__py3-none-any.whl → 1.3.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/cli.py +153 -4
- crucible/ignore.py +294 -0
- crucible/knowledge/loader.py +6 -3
- crucible/models.py +0 -13
- crucible/review/core.py +60 -7
- crucible/server.py +20 -528
- crucible/skills/code-hygiene/SKILL.md +83 -0
- {crucible_mcp-1.1.0.dist-info → crucible_mcp-1.3.0.dist-info}/METADATA +15 -1
- {crucible_mcp-1.1.0.dist-info → crucible_mcp-1.3.0.dist-info}/RECORD +12 -10
- {crucible_mcp-1.1.0.dist-info → crucible_mcp-1.3.0.dist-info}/WHEEL +0 -0
- {crucible_mcp-1.1.0.dist-info → crucible_mcp-1.3.0.dist-info}/entry_points.txt +0 -0
- {crucible_mcp-1.1.0.dist-info → crucible_mcp-1.3.0.dist-info}/top_level.txt +0 -0
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
---
|
|
2
|
+
version: "1.0"
|
|
3
|
+
triggers: [cleanup, refactor, deprecate, dead-code, unused, tech-debt, maintenance]
|
|
4
|
+
always_run: false
|
|
5
|
+
always_run_for_domains: []
|
|
6
|
+
knowledge: []
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
# Code Hygiene Engineer
|
|
10
|
+
|
|
11
|
+
You are reviewing code for cleanliness and maintainability. Your job is to identify dead code, deprecated patterns, stale task markers, and cleanup opportunities.
|
|
12
|
+
|
|
13
|
+
## Key Questions
|
|
14
|
+
|
|
15
|
+
Ask yourself these questions about the code:
|
|
16
|
+
|
|
17
|
+
- Is this code still used? By what?
|
|
18
|
+
- Are these imports actually needed?
|
|
19
|
+
- Is this marked deprecated but still present?
|
|
20
|
+
- Are there task markers (FIXME/XXX) that reference completed work?
|
|
21
|
+
- Is there commented-out code that should be deleted?
|
|
22
|
+
|
|
23
|
+
## Red Flags
|
|
24
|
+
|
|
25
|
+
Watch for these patterns:
|
|
26
|
+
|
|
27
|
+
- Functions/classes with no callers
|
|
28
|
+
- Imports that are never used
|
|
29
|
+
- `DEPRECATED` or `@deprecated` markers
|
|
30
|
+
- Stale task markers like `FIXME: remove` or `XXX: delete`
|
|
31
|
+
- Large blocks of commented-out code
|
|
32
|
+
- Feature flags for features that shipped long ago
|
|
33
|
+
- Backwards-compatibility shims that are no longer needed
|
|
34
|
+
- Variables assigned but never read
|
|
35
|
+
- Unreachable code after return/raise/break
|
|
36
|
+
|
|
37
|
+
## Before Approving
|
|
38
|
+
|
|
39
|
+
Verify these criteria:
|
|
40
|
+
|
|
41
|
+
- [ ] No deprecated code introduced
|
|
42
|
+
- [ ] No unused imports added
|
|
43
|
+
- [ ] Task markers have actionable context (ticket/date/owner)
|
|
44
|
+
- [ ] Commented-out code removed or justified
|
|
45
|
+
- [ ] No dead code paths
|
|
46
|
+
- [ ] Backwards-compat shims have removal dates
|
|
47
|
+
- [ ] Feature flags have cleanup tickets
|
|
48
|
+
|
|
49
|
+
## Cleanup Opportunities
|
|
50
|
+
|
|
51
|
+
When reviewing, note opportunities to:
|
|
52
|
+
|
|
53
|
+
- Remove unused parameters
|
|
54
|
+
- Delete deprecated functions after migration
|
|
55
|
+
- Clean up old feature flags
|
|
56
|
+
- Remove backwards-compat code after version bump
|
|
57
|
+
- Consolidate duplicate code
|
|
58
|
+
- Remove redundant comments
|
|
59
|
+
|
|
60
|
+
## Output Format
|
|
61
|
+
|
|
62
|
+
Structure your hygiene review as:
|
|
63
|
+
|
|
64
|
+
### Dead Code Found
|
|
65
|
+
List unused or unreachable code with confidence level.
|
|
66
|
+
|
|
67
|
+
### Deprecation Issues
|
|
68
|
+
Code marked deprecated or using deprecated patterns.
|
|
69
|
+
|
|
70
|
+
### Stale Task Markers
|
|
71
|
+
FIXME/XXX comments that appear outdated or reference completed work.
|
|
72
|
+
|
|
73
|
+
### Cleanup Opportunities
|
|
74
|
+
Suggestions for improving code cleanliness.
|
|
75
|
+
|
|
76
|
+
### Approval Status
|
|
77
|
+
- APPROVE: Code is clean
|
|
78
|
+
- REQUEST CHANGES: Dead code or deprecated patterns must be addressed
|
|
79
|
+
- COMMENT: Minor cleanup suggestions
|
|
80
|
+
|
|
81
|
+
---
|
|
82
|
+
|
|
83
|
+
*Template. Adapt to your needs.*
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: crucible-mcp
|
|
3
|
-
Version: 1.
|
|
3
|
+
Version: 1.3.0
|
|
4
4
|
Summary: Code review MCP server for Claude. Not affiliated with Atlassian.
|
|
5
5
|
Author: be.nvy
|
|
6
6
|
License-Expression: MIT
|
|
@@ -58,6 +58,20 @@ That's it. Crucible will now:
|
|
|
58
58
|
2. Review files Claude edits (Claude Code hook)
|
|
59
59
|
3. Block code that violates bundled assertions (security, error handling, smart contracts)
|
|
60
60
|
|
|
61
|
+
## CLAUDE.md Setup
|
|
62
|
+
|
|
63
|
+
Add to your `CLAUDE.md` to inject rules at session start:
|
|
64
|
+
|
|
65
|
+
```markdown
|
|
66
|
+
# Project
|
|
67
|
+
|
|
68
|
+
At session start, call get_assertions() to load enforcement rules.
|
|
69
|
+
|
|
70
|
+
For code review: crucible review
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
This tells Claude to load the active assertions *before* writing code, not just catch violations after.
|
|
74
|
+
|
|
61
75
|
## How Enforcement Works
|
|
62
76
|
|
|
63
77
|
```
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
crucible/__init__.py,sha256=M4v_CsJVOdiAAPgmd54mxkkbnes8e5ifMznDuOJhzzY,77
|
|
2
|
-
crucible/cli.py,sha256=
|
|
2
|
+
crucible/cli.py,sha256=MBzzzjZtTRIJyPi7TI-UJpDivs-E1sEFjJk54LKCoew,83532
|
|
3
3
|
crucible/errors.py,sha256=HrX_yvJEhXJoKodXGo_iY9wqx2J3ONYy0a_LbrVC5As,819
|
|
4
|
-
crucible/
|
|
5
|
-
crucible/
|
|
4
|
+
crucible/ignore.py,sha256=iFuFHTqkxvA-YkTtYXHz01bINsnjiaqk7LpG1lsIyps,7963
|
|
5
|
+
crucible/models.py,sha256=VBRnoL5e9-zmbIMkcegxVQCXTgsdBFZ13XQVUxKuA1M,1626
|
|
6
|
+
crucible/server.py,sha256=PqIu4x8vrOLiHJM7KzERUnIQcI6YxOC0TaJx5MK8Pdc,31676
|
|
6
7
|
crucible/domain/__init__.py,sha256=2fsoB5wH2Pl3vtGRt4voYOSZ04-zLoW8pNq6nvzVMgU,118
|
|
7
8
|
crucible/domain/detection.py,sha256=TNeLB_VQgS1AsT5BKDf_tIpGa47THrFoRXwU4u54VB0,1797
|
|
8
9
|
crucible/enforcement/__init__.py,sha256=FOaGSrE1SWFPxBJ1L5VoDhQDmlJgRXXs_iiI20wHf2Q,867
|
|
@@ -18,7 +19,7 @@ crucible/hooks/__init__.py,sha256=k5oEWhTJKEQi-QWBfTbp1p6HaKg55_wVCBVD5pZzdqw,27
|
|
|
18
19
|
crucible/hooks/claudecode.py,sha256=9wAHbxYJkmvPPAt-GqGyMASItorF7uruMpYRDL-W-M0,11396
|
|
19
20
|
crucible/hooks/precommit.py,sha256=5W8ty_ji2F9NknvpHIUr8BU75KlXaplq5Itdcfazw68,25190
|
|
20
21
|
crucible/knowledge/__init__.py,sha256=unb7kyO1MtB3Zt-TGx_O8LE79KyrGrNHoFFHgUWUvGU,40
|
|
21
|
-
crucible/knowledge/loader.py,sha256=
|
|
22
|
+
crucible/knowledge/loader.py,sha256=GZn-pnxcCHdzu_IMkscW0b-g5SZ50PCfAmp7QwmKIvU,12582
|
|
22
23
|
crucible/knowledge/principles/API_DESIGN.md,sha256=XBYfi2Q-i47p88I72ZlmXtkj7Ph4UMHT43t3HOR6lhQ,3133
|
|
23
24
|
crucible/knowledge/principles/COMMITS.md,sha256=JlP-z_izywF2qObTQabE4hlgQTcHsZn9AJM32VTk-Ng,2044
|
|
24
25
|
crucible/knowledge/principles/DATABASE.md,sha256=FxxK_UWrfdwl-6f9l7esOmC2WFscwrmcziTYPmEWPXc,2816
|
|
@@ -34,11 +35,12 @@ crucible/knowledge/principles/SYSTEM_DESIGN.md,sha256=7Ujd133Rifz_4aropkg6b3p4lc
|
|
|
34
35
|
crucible/knowledge/principles/TESTING.md,sha256=ghttumBTvISEornFFgX2CZei0E3c7qqICbBT61tm72I,2470
|
|
35
36
|
crucible/knowledge/principles/TYPE_SAFETY.md,sha256=AkB28HjUlNUe3JaiEl01cFUgF0QnzPVXJTmHb9xopWE,3167
|
|
36
37
|
crucible/review/__init__.py,sha256=Ssva6Yaqcc44AqL9OUMjxypu5R1PPkrmLGk6OKtP15w,547
|
|
37
|
-
crucible/review/core.py,sha256
|
|
38
|
+
crucible/review/core.py,sha256=-jwjxt_oW2jES-ZznsBKm8lcMHA-rAnT8OAMLccQH64,17128
|
|
38
39
|
crucible/skills/__init__.py,sha256=L3heXWF0T3aR9yYLFphs1LNlkxAFSPkPuRFMH-S1taI,495
|
|
39
40
|
crucible/skills/loader.py,sha256=iC0_V1s6CIse5NXyFGtpLbON8xDxYh8xXmHH7hAX5O0,8642
|
|
40
41
|
crucible/skills/accessibility-engineer/SKILL.md,sha256=x6Un_EhM-Z8Jt2AwpIdnu68TUU4kNbu4uwCp7fG-tAE,2008
|
|
41
42
|
crucible/skills/backend-engineer/SKILL.md,sha256=tImXlAXUFkQikKiwBe9Bh-P43IQleIGa2PphoUjt_Hs,1859
|
|
43
|
+
crucible/skills/code-hygiene/SKILL.md,sha256=mr3C_c-d2R5-FMg_4jqvrakA-nZiFezIAsid7UWhPeQ,2268
|
|
42
44
|
crucible/skills/customer-success/SKILL.md,sha256=--b4j_FHahRk9cilDnIm5UTE3sIqawq_rWOkcPV_-dM,1927
|
|
43
45
|
crucible/skills/data-engineer/SKILL.md,sha256=0G66CxJUOqNAy3E7wg5OK28SngmER_RXCrdoVxcVwUc,1913
|
|
44
46
|
crucible/skills/devops-engineer/SKILL.md,sha256=tQRETfZRkZB1Q0wbzGO_UPmJBZ8zBpSiCjKrgEgILy0,1912
|
|
@@ -59,8 +61,8 @@ crucible/synthesis/__init__.py,sha256=CYrkZG4bdAjp8XdOh1smfKscd3YU5lZlaDLGwLE9c-
|
|
|
59
61
|
crucible/tools/__init__.py,sha256=gFRThTk1E-fHzpe8bB5rtBG6Z6G-ysPzjVEHfKGbEYU,400
|
|
60
62
|
crucible/tools/delegation.py,sha256=_x1y76No3qkmGjjROVvMx1pSKKwU59aRu5R-r07lVFU,12871
|
|
61
63
|
crucible/tools/git.py,sha256=7-aJCesoQe3ZEBFcRxHBhY8RpZrBlNtHSns__RqiG04,10406
|
|
62
|
-
crucible_mcp-1.
|
|
63
|
-
crucible_mcp-1.
|
|
64
|
-
crucible_mcp-1.
|
|
65
|
-
crucible_mcp-1.
|
|
66
|
-
crucible_mcp-1.
|
|
64
|
+
crucible_mcp-1.3.0.dist-info/METADATA,sha256=nhbj7p1aULzd6vDuoubn5rf95hDUoDrVwZcZy3jV5Mg,6784
|
|
65
|
+
crucible_mcp-1.3.0.dist-info/WHEEL,sha256=wUyA8OaulRlbfwMtmQsvNngGrxQHAvkKcvRmdizlJi0,92
|
|
66
|
+
crucible_mcp-1.3.0.dist-info/entry_points.txt,sha256=18BZaH1OlFSFYtKuHq0Z8yYX8Wmx7Ikfqay-P00ZX3Q,83
|
|
67
|
+
crucible_mcp-1.3.0.dist-info/top_level.txt,sha256=4hzuFgqbFPOO-WiU_DYxTm8VYIxTXh7Wlp0gRcWR0Cs,9
|
|
68
|
+
crucible_mcp-1.3.0.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|