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.
Files changed (46) hide show
  1. crucible_mcp-0.2.0/PKG-INFO +140 -0
  2. crucible_mcp-0.2.0/README.md +123 -0
  3. {crucible_mcp-0.1.0 → crucible_mcp-0.2.0}/pyproject.toml +2 -1
  4. crucible_mcp-0.2.0/src/crucible/cli.py +1570 -0
  5. crucible_mcp-0.2.0/src/crucible/hooks/__init__.py +15 -0
  6. crucible_mcp-0.2.0/src/crucible/hooks/precommit.py +660 -0
  7. {crucible_mcp-0.1.0 → crucible_mcp-0.2.0}/src/crucible/knowledge/loader.py +70 -1
  8. {crucible_mcp-0.1.0 → crucible_mcp-0.2.0}/src/crucible/models.py +15 -0
  9. crucible_mcp-0.2.0/src/crucible/server.py +971 -0
  10. crucible_mcp-0.2.0/src/crucible/skills/__init__.py +23 -0
  11. crucible_mcp-0.2.0/src/crucible/skills/loader.py +281 -0
  12. {crucible_mcp-0.1.0 → crucible_mcp-0.2.0}/src/crucible/tools/delegation.py +96 -10
  13. crucible_mcp-0.2.0/src/crucible/tools/git.py +317 -0
  14. crucible_mcp-0.2.0/src/crucible_mcp.egg-info/PKG-INFO +140 -0
  15. {crucible_mcp-0.1.0 → crucible_mcp-0.2.0}/src/crucible_mcp.egg-info/SOURCES.txt +10 -0
  16. crucible_mcp-0.2.0/tests/test_cli.py +833 -0
  17. crucible_mcp-0.2.0/tests/test_full_review.py +351 -0
  18. crucible_mcp-0.2.0/tests/test_git.py +389 -0
  19. crucible_mcp-0.2.0/tests/test_hooks_cli.py +234 -0
  20. {crucible_mcp-0.1.0 → crucible_mcp-0.2.0}/tests/test_integration.py +4 -4
  21. {crucible_mcp-0.1.0 → crucible_mcp-0.2.0}/tests/test_knowledge.py +109 -0
  22. crucible_mcp-0.2.0/tests/test_precommit.py +579 -0
  23. crucible_mcp-0.2.0/tests/test_server.py +205 -0
  24. crucible_mcp-0.2.0/tests/test_skills_loader.py +425 -0
  25. {crucible_mcp-0.1.0 → crucible_mcp-0.2.0}/tests/test_tools.py +59 -0
  26. crucible_mcp-0.1.0/PKG-INFO +0 -158
  27. crucible_mcp-0.1.0/README.md +0 -141
  28. crucible_mcp-0.1.0/src/crucible/cli.py +0 -523
  29. crucible_mcp-0.1.0/src/crucible/server.py +0 -376
  30. crucible_mcp-0.1.0/src/crucible_mcp.egg-info/PKG-INFO +0 -158
  31. crucible_mcp-0.1.0/tests/test_cli.py +0 -230
  32. crucible_mcp-0.1.0/tests/test_server.py +0 -60
  33. {crucible_mcp-0.1.0 → crucible_mcp-0.2.0}/setup.cfg +0 -0
  34. {crucible_mcp-0.1.0 → crucible_mcp-0.2.0}/src/crucible/__init__.py +0 -0
  35. {crucible_mcp-0.1.0 → crucible_mcp-0.2.0}/src/crucible/domain/__init__.py +0 -0
  36. {crucible_mcp-0.1.0 → crucible_mcp-0.2.0}/src/crucible/domain/detection.py +0 -0
  37. {crucible_mcp-0.1.0 → crucible_mcp-0.2.0}/src/crucible/errors.py +0 -0
  38. {crucible_mcp-0.1.0 → crucible_mcp-0.2.0}/src/crucible/knowledge/__init__.py +0 -0
  39. {crucible_mcp-0.1.0 → crucible_mcp-0.2.0}/src/crucible/synthesis/__init__.py +0 -0
  40. {crucible_mcp-0.1.0 → crucible_mcp-0.2.0}/src/crucible/tools/__init__.py +0 -0
  41. {crucible_mcp-0.1.0 → crucible_mcp-0.2.0}/src/crucible_mcp.egg-info/dependency_links.txt +0 -0
  42. {crucible_mcp-0.1.0 → crucible_mcp-0.2.0}/src/crucible_mcp.egg-info/entry_points.txt +0 -0
  43. {crucible_mcp-0.1.0 → crucible_mcp-0.2.0}/src/crucible_mcp.egg-info/requires.txt +0 -0
  44. {crucible_mcp-0.1.0 → crucible_mcp-0.2.0}/src/crucible_mcp.egg-info/top_level.txt +0 -0
  45. {crucible_mcp-0.1.0 → crucible_mcp-0.2.0}/tests/test_detection.py +0 -0
  46. {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.1.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\"')"]