crucible-mcp 0.1.0__tar.gz → 0.2.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.
- crucible_mcp-0.2.0/PKG-INFO +140 -0
- crucible_mcp-0.2.0/README.md +123 -0
- {crucible_mcp-0.1.0 → crucible_mcp-0.2.0}/pyproject.toml +2 -1
- crucible_mcp-0.2.0/src/crucible/cli.py +1570 -0
- crucible_mcp-0.2.0/src/crucible/hooks/__init__.py +15 -0
- crucible_mcp-0.2.0/src/crucible/hooks/precommit.py +660 -0
- {crucible_mcp-0.1.0 → crucible_mcp-0.2.0}/src/crucible/knowledge/loader.py +70 -1
- {crucible_mcp-0.1.0 → crucible_mcp-0.2.0}/src/crucible/models.py +15 -0
- crucible_mcp-0.2.0/src/crucible/server.py +971 -0
- crucible_mcp-0.2.0/src/crucible/skills/__init__.py +23 -0
- crucible_mcp-0.2.0/src/crucible/skills/loader.py +281 -0
- {crucible_mcp-0.1.0 → crucible_mcp-0.2.0}/src/crucible/tools/delegation.py +96 -10
- crucible_mcp-0.2.0/src/crucible/tools/git.py +317 -0
- crucible_mcp-0.2.0/src/crucible_mcp.egg-info/PKG-INFO +140 -0
- {crucible_mcp-0.1.0 → crucible_mcp-0.2.0}/src/crucible_mcp.egg-info/SOURCES.txt +10 -0
- crucible_mcp-0.2.0/tests/test_cli.py +833 -0
- crucible_mcp-0.2.0/tests/test_full_review.py +351 -0
- crucible_mcp-0.2.0/tests/test_git.py +389 -0
- crucible_mcp-0.2.0/tests/test_hooks_cli.py +234 -0
- {crucible_mcp-0.1.0 → crucible_mcp-0.2.0}/tests/test_integration.py +4 -4
- {crucible_mcp-0.1.0 → crucible_mcp-0.2.0}/tests/test_knowledge.py +109 -0
- crucible_mcp-0.2.0/tests/test_precommit.py +579 -0
- crucible_mcp-0.2.0/tests/test_server.py +205 -0
- crucible_mcp-0.2.0/tests/test_skills_loader.py +425 -0
- {crucible_mcp-0.1.0 → crucible_mcp-0.2.0}/tests/test_tools.py +59 -0
- crucible_mcp-0.1.0/PKG-INFO +0 -158
- crucible_mcp-0.1.0/README.md +0 -141
- crucible_mcp-0.1.0/src/crucible/cli.py +0 -523
- crucible_mcp-0.1.0/src/crucible/server.py +0 -376
- crucible_mcp-0.1.0/src/crucible_mcp.egg-info/PKG-INFO +0 -158
- crucible_mcp-0.1.0/tests/test_cli.py +0 -230
- crucible_mcp-0.1.0/tests/test_server.py +0 -60
- {crucible_mcp-0.1.0 → crucible_mcp-0.2.0}/setup.cfg +0 -0
- {crucible_mcp-0.1.0 → crucible_mcp-0.2.0}/src/crucible/__init__.py +0 -0
- {crucible_mcp-0.1.0 → crucible_mcp-0.2.0}/src/crucible/domain/__init__.py +0 -0
- {crucible_mcp-0.1.0 → crucible_mcp-0.2.0}/src/crucible/domain/detection.py +0 -0
- {crucible_mcp-0.1.0 → crucible_mcp-0.2.0}/src/crucible/errors.py +0 -0
- {crucible_mcp-0.1.0 → crucible_mcp-0.2.0}/src/crucible/knowledge/__init__.py +0 -0
- {crucible_mcp-0.1.0 → crucible_mcp-0.2.0}/src/crucible/synthesis/__init__.py +0 -0
- {crucible_mcp-0.1.0 → crucible_mcp-0.2.0}/src/crucible/tools/__init__.py +0 -0
- {crucible_mcp-0.1.0 → crucible_mcp-0.2.0}/src/crucible_mcp.egg-info/dependency_links.txt +0 -0
- {crucible_mcp-0.1.0 → crucible_mcp-0.2.0}/src/crucible_mcp.egg-info/entry_points.txt +0 -0
- {crucible_mcp-0.1.0 → crucible_mcp-0.2.0}/src/crucible_mcp.egg-info/requires.txt +0 -0
- {crucible_mcp-0.1.0 → crucible_mcp-0.2.0}/src/crucible_mcp.egg-info/top_level.txt +0 -0
- {crucible_mcp-0.1.0 → crucible_mcp-0.2.0}/tests/test_detection.py +0 -0
- {crucible_mcp-0.1.0 → crucible_mcp-0.2.0}/tests/test_skills.py +0 -0
|
@@ -0,0 +1,140 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: crucible-mcp
|
|
3
|
+
Version: 0.2.0
|
|
4
|
+
Summary: Code review MCP server for Claude. Not affiliated with Atlassian.
|
|
5
|
+
Author: be.nvy
|
|
6
|
+
License-Expression: MIT
|
|
7
|
+
Keywords: mcp,code-review,static-analysis,claude
|
|
8
|
+
Requires-Python: >=3.11
|
|
9
|
+
Description-Content-Type: text/markdown
|
|
10
|
+
Requires-Dist: mcp>=1.0.0
|
|
11
|
+
Requires-Dist: pyyaml>=6.0
|
|
12
|
+
Provides-Extra: dev
|
|
13
|
+
Requires-Dist: pytest>=8.0; extra == "dev"
|
|
14
|
+
Requires-Dist: pytest-asyncio>=0.23; extra == "dev"
|
|
15
|
+
Requires-Dist: mypy>=1.8; extra == "dev"
|
|
16
|
+
Requires-Dist: ruff>=0.3; extra == "dev"
|
|
17
|
+
|
|
18
|
+
# Crucible
|
|
19
|
+
|
|
20
|
+
Load your coding patterns into Claude Code.
|
|
21
|
+
|
|
22
|
+
```
|
|
23
|
+
├── Personas: Domain-specific thinking (how to approach problems)
|
|
24
|
+
├── Knowledge: Coding patterns and principles (what to apply)
|
|
25
|
+
├── Cascade: Project → User → Bundled (customizable at every level)
|
|
26
|
+
└── Context-aware: Loads relevant skills based on what you're working on
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
**Personas for domains. Knowledge for patterns. All customizable.**
|
|
30
|
+
|
|
31
|
+
> Not affiliated with Atlassian's Crucible.
|
|
32
|
+
|
|
33
|
+
## Install
|
|
34
|
+
|
|
35
|
+
```bash
|
|
36
|
+
pip install crucible-mcp
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
Add to Claude Code (`.mcp.json`):
|
|
40
|
+
|
|
41
|
+
```json
|
|
42
|
+
{
|
|
43
|
+
"mcpServers": {
|
|
44
|
+
"crucible": {
|
|
45
|
+
"command": "crucible-mcp"
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
With hot reload (recommended for customization):
|
|
52
|
+
|
|
53
|
+
```json
|
|
54
|
+
{
|
|
55
|
+
"mcpServers": {
|
|
56
|
+
"crucible": {
|
|
57
|
+
"command": "mcpmon",
|
|
58
|
+
"args": ["--watch", "~/.crucible/", "--", "crucible-mcp"]
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
## How It Works
|
|
65
|
+
|
|
66
|
+
```
|
|
67
|
+
Code → Detect Domain → Load Personas + Knowledge → Claude with YOUR patterns
|
|
68
|
+
|
|
69
|
+
.sol file → web3 domain → security-engineer + SMART_CONTRACT.md → Knows your security rules
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
## MCP Tools
|
|
73
|
+
|
|
74
|
+
| Tool | Purpose |
|
|
75
|
+
|------|---------|
|
|
76
|
+
| `quick_review(path)` | Run analysis, return findings + domains |
|
|
77
|
+
| `get_principles(topic)` | Load engineering knowledge |
|
|
78
|
+
| `delegate_*` | Direct tool access (semgrep, ruff, slither, bandit) |
|
|
79
|
+
| `check_tools()` | Show installed analysis tools |
|
|
80
|
+
|
|
81
|
+
## CLI
|
|
82
|
+
|
|
83
|
+
```bash
|
|
84
|
+
crucible skills list # List all skills
|
|
85
|
+
crucible skills show <skill> # Show which version is active
|
|
86
|
+
crucible skills init <skill> # Copy to .crucible/ for customization
|
|
87
|
+
|
|
88
|
+
crucible knowledge list # List all knowledge files
|
|
89
|
+
crucible knowledge init <file> # Copy for customization
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
See [ARCHITECTURE.md](docs/ARCHITECTURE.md) for the full flow.
|
|
93
|
+
|
|
94
|
+
## Customization
|
|
95
|
+
|
|
96
|
+
Override skills and knowledge for your project or personal preferences:
|
|
97
|
+
|
|
98
|
+
```bash
|
|
99
|
+
# Customize a skill for your project
|
|
100
|
+
crucible skills init security-engineer
|
|
101
|
+
# Creates .crucible/skills/security-engineer/SKILL.md
|
|
102
|
+
|
|
103
|
+
# Add project-specific concerns, team conventions, etc.
|
|
104
|
+
```
|
|
105
|
+
|
|
106
|
+
Resolution order (first found wins):
|
|
107
|
+
1. `.crucible/` — Project overrides
|
|
108
|
+
2. `~/.claude/crucible/` — User preferences
|
|
109
|
+
3. Bundled — Package defaults
|
|
110
|
+
|
|
111
|
+
See [CUSTOMIZATION.md](docs/CUSTOMIZATION.md) for the full guide.
|
|
112
|
+
|
|
113
|
+
## What's Included
|
|
114
|
+
|
|
115
|
+
**18 Personas** — Domain-specific thinking: security, performance, accessibility, web3, backend, and more.
|
|
116
|
+
|
|
117
|
+
See [SKILLS.md](docs/SKILLS.md) for the full list.
|
|
118
|
+
|
|
119
|
+
**12 Knowledge Files** — Coding patterns and principles for security, testing, APIs, databases, smart contracts, etc.
|
|
120
|
+
|
|
121
|
+
See [KNOWLEDGE.md](docs/KNOWLEDGE.md) for topics covered.
|
|
122
|
+
|
|
123
|
+
## Documentation
|
|
124
|
+
|
|
125
|
+
| Doc | What's In It |
|
|
126
|
+
|-----|--------------|
|
|
127
|
+
| [FEATURES.md](docs/FEATURES.md) | Complete feature reference |
|
|
128
|
+
| [ARCHITECTURE.md](docs/ARCHITECTURE.md) | How MCP, tools, skills, and knowledge fit together |
|
|
129
|
+
| [CUSTOMIZATION.md](docs/CUSTOMIZATION.md) | Override skills and knowledge for your project |
|
|
130
|
+
| [SKILLS.md](docs/SKILLS.md) | All 18 personas with triggers and focus areas |
|
|
131
|
+
| [KNOWLEDGE.md](docs/KNOWLEDGE.md) | All 12 knowledge files with topics covered |
|
|
132
|
+
| [CONTRIBUTING.md](docs/CONTRIBUTING.md) | Adding tools, skills, and knowledge |
|
|
133
|
+
|
|
134
|
+
## Development
|
|
135
|
+
|
|
136
|
+
```bash
|
|
137
|
+
pip install -e ".[dev]"
|
|
138
|
+
pytest # Run tests (494 tests)
|
|
139
|
+
ruff check src/ --fix # Lint
|
|
140
|
+
```
|
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
# Crucible
|
|
2
|
+
|
|
3
|
+
Load your coding patterns into Claude Code.
|
|
4
|
+
|
|
5
|
+
```
|
|
6
|
+
├── Personas: Domain-specific thinking (how to approach problems)
|
|
7
|
+
├── Knowledge: Coding patterns and principles (what to apply)
|
|
8
|
+
├── Cascade: Project → User → Bundled (customizable at every level)
|
|
9
|
+
└── Context-aware: Loads relevant skills based on what you're working on
|
|
10
|
+
```
|
|
11
|
+
|
|
12
|
+
**Personas for domains. Knowledge for patterns. All customizable.**
|
|
13
|
+
|
|
14
|
+
> Not affiliated with Atlassian's Crucible.
|
|
15
|
+
|
|
16
|
+
## Install
|
|
17
|
+
|
|
18
|
+
```bash
|
|
19
|
+
pip install crucible-mcp
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
Add to Claude Code (`.mcp.json`):
|
|
23
|
+
|
|
24
|
+
```json
|
|
25
|
+
{
|
|
26
|
+
"mcpServers": {
|
|
27
|
+
"crucible": {
|
|
28
|
+
"command": "crucible-mcp"
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
With hot reload (recommended for customization):
|
|
35
|
+
|
|
36
|
+
```json
|
|
37
|
+
{
|
|
38
|
+
"mcpServers": {
|
|
39
|
+
"crucible": {
|
|
40
|
+
"command": "mcpmon",
|
|
41
|
+
"args": ["--watch", "~/.crucible/", "--", "crucible-mcp"]
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
## How It Works
|
|
48
|
+
|
|
49
|
+
```
|
|
50
|
+
Code → Detect Domain → Load Personas + Knowledge → Claude with YOUR patterns
|
|
51
|
+
|
|
52
|
+
.sol file → web3 domain → security-engineer + SMART_CONTRACT.md → Knows your security rules
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
## MCP Tools
|
|
56
|
+
|
|
57
|
+
| Tool | Purpose |
|
|
58
|
+
|------|---------|
|
|
59
|
+
| `quick_review(path)` | Run analysis, return findings + domains |
|
|
60
|
+
| `get_principles(topic)` | Load engineering knowledge |
|
|
61
|
+
| `delegate_*` | Direct tool access (semgrep, ruff, slither, bandit) |
|
|
62
|
+
| `check_tools()` | Show installed analysis tools |
|
|
63
|
+
|
|
64
|
+
## CLI
|
|
65
|
+
|
|
66
|
+
```bash
|
|
67
|
+
crucible skills list # List all skills
|
|
68
|
+
crucible skills show <skill> # Show which version is active
|
|
69
|
+
crucible skills init <skill> # Copy to .crucible/ for customization
|
|
70
|
+
|
|
71
|
+
crucible knowledge list # List all knowledge files
|
|
72
|
+
crucible knowledge init <file> # Copy for customization
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
See [ARCHITECTURE.md](docs/ARCHITECTURE.md) for the full flow.
|
|
76
|
+
|
|
77
|
+
## Customization
|
|
78
|
+
|
|
79
|
+
Override skills and knowledge for your project or personal preferences:
|
|
80
|
+
|
|
81
|
+
```bash
|
|
82
|
+
# Customize a skill for your project
|
|
83
|
+
crucible skills init security-engineer
|
|
84
|
+
# Creates .crucible/skills/security-engineer/SKILL.md
|
|
85
|
+
|
|
86
|
+
# Add project-specific concerns, team conventions, etc.
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
Resolution order (first found wins):
|
|
90
|
+
1. `.crucible/` — Project overrides
|
|
91
|
+
2. `~/.claude/crucible/` — User preferences
|
|
92
|
+
3. Bundled — Package defaults
|
|
93
|
+
|
|
94
|
+
See [CUSTOMIZATION.md](docs/CUSTOMIZATION.md) for the full guide.
|
|
95
|
+
|
|
96
|
+
## What's Included
|
|
97
|
+
|
|
98
|
+
**18 Personas** — Domain-specific thinking: security, performance, accessibility, web3, backend, and more.
|
|
99
|
+
|
|
100
|
+
See [SKILLS.md](docs/SKILLS.md) for the full list.
|
|
101
|
+
|
|
102
|
+
**12 Knowledge Files** — Coding patterns and principles for security, testing, APIs, databases, smart contracts, etc.
|
|
103
|
+
|
|
104
|
+
See [KNOWLEDGE.md](docs/KNOWLEDGE.md) for topics covered.
|
|
105
|
+
|
|
106
|
+
## Documentation
|
|
107
|
+
|
|
108
|
+
| Doc | What's In It |
|
|
109
|
+
|-----|--------------|
|
|
110
|
+
| [FEATURES.md](docs/FEATURES.md) | Complete feature reference |
|
|
111
|
+
| [ARCHITECTURE.md](docs/ARCHITECTURE.md) | How MCP, tools, skills, and knowledge fit together |
|
|
112
|
+
| [CUSTOMIZATION.md](docs/CUSTOMIZATION.md) | Override skills and knowledge for your project |
|
|
113
|
+
| [SKILLS.md](docs/SKILLS.md) | All 18 personas with triggers and focus areas |
|
|
114
|
+
| [KNOWLEDGE.md](docs/KNOWLEDGE.md) | All 12 knowledge files with topics covered |
|
|
115
|
+
| [CONTRIBUTING.md](docs/CONTRIBUTING.md) | Adding tools, skills, and knowledge |
|
|
116
|
+
|
|
117
|
+
## Development
|
|
118
|
+
|
|
119
|
+
```bash
|
|
120
|
+
pip install -e ".[dev]"
|
|
121
|
+
pytest # Run tests (494 tests)
|
|
122
|
+
ruff check src/ --fix # Lint
|
|
123
|
+
```
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[project]
|
|
2
2
|
name = "crucible-mcp"
|
|
3
|
-
version = "0.
|
|
3
|
+
version = "0.2.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"
|
|
@@ -49,3 +49,4 @@ warn_unused_ignores = true
|
|
|
49
49
|
[tool.pytest.ini_options]
|
|
50
50
|
asyncio_mode = "auto"
|
|
51
51
|
testpaths = ["tests"]
|
|
52
|
+
markers = ["integration: marks tests as integration tests (deselect with '-m \"not integration\"')"]
|