@corbat-tech/coding-standards-mcp 1.0.2 → 1.0.3

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.
package/README.md CHANGED
@@ -1,10 +1,11 @@
1
1
  <div align="center">
2
2
 
3
- # CORBAT - Coding Standards MCP
3
+ # CORBAT MCP
4
+ #### Coding Standards Server for Claude
4
5
 
5
- ### Stop repeating yourself. Start coding.
6
+ ### AI-generated code that passes code review on the first try.
6
7
 
7
- **Your architecture rules, TDD workflow, and SOLID principlesinjected automatically into every AI response.**
8
+ **The only MCP that makes Claude generate professional-grade code with proper architecture, comprehensive tests, and zero code smells.**
8
9
 
9
10
  [![npm version](https://img.shields.io/npm/v/@corbat-tech/coding-standards-mcp.svg)](https://www.npmjs.com/package/@corbat-tech/coding-standards-mcp)
10
11
  [![CI](https://github.com/corbat-tech/coding-standards-mcp/actions/workflows/ci.yml/badge.svg)](https://github.com/corbat-tech/coding-standards-mcp/actions/workflows/ci.yml)
@@ -19,53 +20,176 @@
19
20
 
20
21
  ---
21
22
 
22
- ## The Problem
23
+ ## The Real Problem With AI-Generated Code
23
24
 
24
- Every time you ask AI to write code, you repeat the same instructions:
25
+ When you ask Claude to write code, it works. But does it pass code review?
25
26
 
26
27
  ```
27
- "Create a payment service. Use hexagonal architecture. Follow TDD.
28
- Apply SOLID. Use our naming conventions. Ensure 80% coverage..."
28
+ No dependency injection
29
+ Missing error handling
30
+ ❌ Basic tests (if any)
31
+ ❌ No input validation
32
+ ❌ God classes and long methods
33
+ ❌ Fails SonarQube quality gates
29
34
  ```
30
35
 
31
- **This is tedious, error-prone, and inconsistent.**
36
+ **You spend hours fixing AI-generated code to meet your team's standards.**
32
37
 
33
- ## The Solution
38
+ ---
39
+
40
+ ## What If Claude Wrote Code Like Your Senior Engineers?
41
+
42
+ <table>
43
+ <tr>
44
+ <td width="50%">
45
+
46
+ ### Without Corbat MCP
34
47
 
35
- Define your standards once. Corbat MCP injects them automatically.
48
+ ```typescript
49
+ class UserService {
50
+ private users: User[] = [];
51
+
52
+ getUser(id: string) {
53
+ return this.users.find(u => u.id === id);
54
+ }
36
55
 
56
+ createUser(name: string, email: string) {
57
+ const user = { id: Date.now(), name, email };
58
+ this.users.push(user);
59
+ return user;
60
+ }
61
+ }
37
62
  ```
38
- You: "Create a payment service"
39
63
 
40
- Corbat: Detected Java/Spring project
41
- Applied hexagonal architecture
42
- Enforced TDD workflow
43
- Injected SOLID principles
44
- Set 80%+ coverage requirement
64
+ - Returns `undefined` on not found
65
+ - No validation
66
+ - No error types
67
+ - No interfaces
68
+ - 6 basic tests
69
+
70
+ </td>
71
+ <td width="50%">
72
+
73
+ ### With Corbat MCP
74
+
75
+ ```typescript
76
+ interface UserRepository {
77
+ findById(id: UserId): User | null;
78
+ save(user: User): void;
79
+ }
80
+
81
+ class UserService {
82
+ constructor(
83
+ private readonly repository: UserRepository,
84
+ private readonly idGenerator: IdGenerator
85
+ ) {}
86
+
87
+ getUser(id: UserId): User {
88
+ const user = this.repository.findById(id);
89
+ if (!user) throw new UserNotFoundError(id);
90
+ return user;
91
+ }
92
+
93
+ createUser(input: CreateUserInput): User {
94
+ this.validateInput(input);
95
+ const user = User.create(
96
+ this.idGenerator.generate(),
97
+ input.name.trim(),
98
+ input.email.toLowerCase()
99
+ );
100
+ this.repository.save(user);
101
+ return user;
102
+ }
103
+ }
45
104
  ```
46
105
 
47
- **One prompt. Full compliance.**
106
+ - Dependency injection
107
+ - Custom error types
108
+ - Input validation & normalization
109
+ - Repository pattern (ports & adapters)
110
+ - 15 comprehensive tests
111
+
112
+ </td>
113
+ </tr>
114
+ </table>
115
+
116
+ ---
117
+
118
+ ## Benchmark Results: The Numbers Don't Lie
119
+
120
+ We tested Claude generating identical tasks **with and without** Corbat MCP across 20 scenarios.
121
+
122
+ <table>
123
+ <tr>
124
+ <th>Metric</th>
125
+ <th>Without MCP</th>
126
+ <th>With MCP</th>
127
+ <th>Improvement</th>
128
+ </tr>
129
+ <tr>
130
+ <td><b>Quality Score</b></td>
131
+ <td>63/100</td>
132
+ <td>93/100</td>
133
+ <td><b>+48%</b></td>
134
+ </tr>
135
+ <tr>
136
+ <td><b>Code Smells</b></td>
137
+ <td>43</td>
138
+ <td>0</td>
139
+ <td><b>-100%</b></td>
140
+ </tr>
141
+ <tr>
142
+ <td><b>SOLID Compliance</b></td>
143
+ <td>50%</td>
144
+ <td>89%</td>
145
+ <td><b>+78%</b></td>
146
+ </tr>
147
+ <tr>
148
+ <td><b>Test Coverage</b></td>
149
+ <td>219 tests</td>
150
+ <td>558 tests</td>
151
+ <td><b>+155%</b></td>
152
+ </tr>
153
+ <tr>
154
+ <td><b>SonarQube Gate</b></td>
155
+ <td>FAIL</td>
156
+ <td>PASS</td>
157
+ <td><b>Fixed</b></td>
158
+ </tr>
159
+ </table>
160
+
161
+ > **Key finding:** Code generated with Corbat MCP passes SonarQube quality gates. Without it, code fails.
162
+
163
+ [View Full Benchmark Report](docs/comparison-tests/RESULTS-REPORT.md)
48
164
 
49
165
  ---
50
166
 
51
- ## Why Corbat MCP vs Alternatives?
167
+ ## Why Corbat MCP vs Other Solutions?
168
+
169
+ | Approach | When it acts | What it catches | Auto-detects stack |
170
+ |----------|:------------:|:---------------:|:------------------:|
171
+ | **Corbat MCP** | **BEFORE** code is written | Architecture, SOLID, TDD, DDD | **Yes** |
172
+ | ESLint/Prettier | After code exists | Syntax, formatting | No |
173
+ | SonarQube | After PR/commit | Code smells, bugs | No |
174
+ | Manual prompts | Every time | Whatever you remember | No |
175
+
176
+ **Linters and analyzers catch problems after the fact. Corbat MCP prevents them.**
52
177
 
53
- | Feature | Corbat MCP | Linters (ESLint, etc.) | Manual prompts |
54
- |---------|:------:|:----------------------:|:--------------:|
55
- | Enforces **before** code is written | ✅ | ❌ | ❌ |
56
- | Architecture patterns (hexagonal, DDD) | ✅ | ❌ | ⚠️ |
57
- | TDD workflow enforcement | ✅ | ❌ | ⚠️ |
58
- | Task-specific guardrails | ✅ | ❌ | ❌ |
59
- | Auto-detects your stack | ✅ | ❌ | ❌ |
60
- | Zero repetition | ✅ | ✅ | ❌ |
178
+ ### vs Other Coding MCPs
61
179
 
62
- **Linters catch errors after the fact. Corbat MCP prevents them.**
180
+ | Feature | Corbat MCP | Generic coding MCPs |
181
+ |---------|:----------:|:-------------------:|
182
+ | Task-specific guardrails (feature vs bugfix vs refactor) | **Yes** | No |
183
+ | Auto-detects your stack from project files | **Yes** | No |
184
+ | Enforces architectural patterns (Hexagonal, DDD) | **Yes** | Limited |
185
+ | Comprehensive benchmark data | **Yes** | No |
186
+ | 7 production-ready profiles | **Yes** | Basic |
63
187
 
64
188
  ---
65
189
 
66
- ## Quick Start
190
+ ## Quick Start (2 minutes)
67
191
 
68
- **Step 1** — Connect to Claude:
192
+ **Step 1** — Add to Claude:
69
193
 
70
194
  <table>
71
195
  <tr>
@@ -98,131 +222,128 @@ Edit `~/.config/Claude/claude_desktop_config.json`:
98
222
  </tr>
99
223
  </table>
100
224
 
101
- **Step 2** — Use it:
225
+ **Step 2** — Just code:
226
+
102
227
  ```
103
- "Create a user service"
228
+ You: "Create a payment service"
229
+
230
+ Corbat: ✓ Detected Java/Spring project
231
+ ✓ Loaded java-spring-backend profile
232
+ ✓ Applied hexagonal architecture rules
233
+ ✓ Enforced TDD workflow
234
+ ✓ Set 80%+ coverage requirement
104
235
  ```
105
236
 
106
- Corbat MCP auto-detects your stack and applies all standards. **That's it.**
237
+ **That's it.** Claude now generates code that passes code review.
107
238
 
108
239
  ---
109
240
 
110
- ## What You Get
241
+ ## What Gets Injected Automatically
111
242
 
112
- When you ask Claude to create code, Corbat MCP injects this context automatically:
243
+ When you ask Claude to create code, Corbat MCP injects professional standards:
113
244
 
114
245
  ```markdown
115
- # Task: Create payment service
116
-
117
246
  ## Detected
118
247
  - Stack: Java 21 · Spring Boot 3 · Maven
119
248
  - Task type: FEATURE
120
249
  - Profile: java-spring-backend
121
250
 
122
- ## Guardrails
123
-
124
- ### MUST
251
+ ## MUST
125
252
  ✓ Write tests BEFORE implementation (TDD)
126
- ✓ Use hexagonal architecture (domain/application/infrastructure)
253
+ ✓ Use hexagonal architecture (domainapplicationinfrastructure)
127
254
  ✓ Apply SOLID principles
128
255
  ✓ Ensure 80%+ test coverage
129
- Validate all inputs
130
- Document public APIs
256
+ Create custom error types with context
257
+ Validate all inputs at boundaries
131
258
 
132
- ### AVOID
259
+ ## AVOID
133
260
  ✗ God classes (>200 lines) or god methods (>20 lines)
134
261
  ✗ Hard-coded configuration values
135
262
  ✗ Mixing business logic with infrastructure
136
- Circular dependencies between layers
137
-
138
- ## Workflow
139
- 1. CLARIFY → Confirm requirements
140
- 2. PLAN → Create task checklist
141
- 3. BUILD → TDD cycle: Red → Green → Refactor
142
- 4. VERIFY → Tests pass, linter clean
143
- 5. REVIEW → Self-check against standards
144
-
145
- ## Naming Conventions
146
- - Classes: PascalCase (PaymentService)
147
- - Methods: camelCase (processPayment)
148
- - Constants: SCREAMING_SNAKE_CASE
149
- - Packages: lowercase (com.example.payment)
263
+ Returning null/undefined (use Result types or throw)
264
+ ```
265
+
266
+ ---
267
+
268
+ ## Smart Guardrails by Task Type
269
+
270
+ Corbat MCP automatically detects what you're doing and applies different rules:
271
+
272
+ | Task | Key Rules |
273
+ |------|-----------|
274
+ | **Feature** | TDD workflow, 80%+ coverage, SOLID, hexagonal architecture |
275
+ | **Bugfix** | Write failing test first, minimal changes, document root cause |
276
+ | **Refactor** | Tests pass before AND after, no behavior changes, incremental |
277
+ | **Test** | AAA pattern, one assertion per test, descriptive names |
278
+
150
279
  ```
280
+ You: "Fix the login timeout bug"
151
281
 
152
- **Claude now generates code that follows ALL your standards.**
282
+ Corbat detects: BUGFIX
283
+ Applies: Failing test first → Minimal fix → Verify no regressions
284
+ ```
153
285
 
154
286
  ---
155
287
 
156
- ## Task-Specific Guardrails
288
+ ## Built-in Profiles for Every Stack
157
289
 
158
- Corbat MCP adapts its rules based on what you're doing:
290
+ | Profile | Stack | Architecture |
291
+ |---------|-------|--------------|
292
+ | `java-spring-backend` | Java 21, Spring Boot 3 | Hexagonal + DDD + CQRS |
293
+ | `nodejs` | Node.js, TypeScript | Clean Architecture |
294
+ | `python` | Python, FastAPI | Clean Architecture |
295
+ | `react` | React 18+ | Feature-based components |
296
+ | `angular` | Angular 19+ | Feature-based + Signals |
297
+ | `vue` | Vue 3.5+ | Composition API |
298
+ | `minimal` | Any | Basic quality standards |
159
299
 
160
- <table>
161
- <tr>
162
- <th>Task</th>
163
- <th>MUST</th>
164
- <th>AVOID</th>
165
- </tr>
166
- <tr>
167
- <td><b>Feature</b></td>
168
- <td>TDD, 80%+ coverage, SOLID, hexagonal</td>
169
- <td>God classes, coupled layers</td>
170
- </tr>
171
- <tr>
172
- <td><b>Bugfix</b></td>
173
- <td>Failing test first, minimal changes</td>
174
- <td>Refactoring, adding features</td>
175
- </tr>
176
- <tr>
177
- <td><b>Refactor</b></td>
178
- <td>Tests pass before AND after, incremental</td>
179
- <td>Behavior changes, big bang</td>
180
- </tr>
181
- <tr>
182
- <td><b>Test</b></td>
183
- <td>AAA pattern, one assertion, descriptive names</td>
184
- <td>Implementation details, flaky tests</td>
185
- </tr>
186
- </table>
300
+ **Auto-detection:** Corbat reads `pom.xml`, `package.json`, `requirements.txt` to select the right profile automatically.
187
301
 
188
302
  ---
189
303
 
190
- ## Compatibility
304
+ ## ROI for Development Teams
191
305
 
192
- | Client | Status |
193
- |--------|:------:|
194
- | Claude Code (CLI) | Tested |
195
- | Claude Desktop | ✅ Tested |
196
- | Cursor | ⚠️ Experimental |
197
- | Windsurf | ⚠️ Experimental |
198
- | Other MCP clients | Standard protocol |
306
+ Based on our benchmark data:
307
+
308
+ | Benefit | Impact |
309
+ |---------|--------|
310
+ | Code review time | **-40%** (fewer issues to catch) |
311
+ | Bug density | **-50%** (better test coverage) |
312
+ | Onboarding time | **-30%** (consistent architecture) |
313
+ | Technical debt | **-90%** (zero code smells) |
314
+ | Debugging time | **-60%** (custom errors with context) |
199
315
 
200
316
  ---
201
317
 
202
- ## Built-in Profiles
318
+ ## How It Works
203
319
 
204
- | Profile | Best for | Architecture |
205
- |---------|----------|--------------|
206
- | `java-spring-backend` | Enterprise Java | Hexagonal + DDD |
207
- | `nodejs` | Node.js/TypeScript APIs | Clean Architecture |
208
- | `python` | Python/FastAPI | Clean Architecture |
209
- | `react` | React applications | Feature-based |
210
- | `angular` | Angular 19+ applications | Feature-based + Signals |
211
- | `vue` | Vue 3.5+ applications | Feature-based + Composition |
212
- | `minimal` | MVPs, prototypes | Basic standards |
320
+ ```
321
+ ┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐
322
+ │ Your Prompt │────▶│ Corbat MCP │────▶│ Claude + Rules
323
+ │ │ │ │ │ │
324
+ "Create user │ │ 1. Detect stack │ │ Generates code │
325
+ │ service" │ │ 2. Classify task│ │ that passes │
326
+ │ │ │ 3. Load profile │ │ code review │
327
+ │ │ │ 4. Inject rules │ │ │
328
+ └─────────────────┘ └─────────────────┘ └─────────────────┘
329
+ ```
213
330
 
214
- **Auto-detection**: Corbat MCP reads `pom.xml`, `package.json`, `requirements.txt`, etc. to select the right profile.
331
+ Corbat MCP acts as a **quality layer** between you and Claude. It automatically:
332
+ 1. **Detects** your project's technology stack
333
+ 2. **Classifies** the type of task (feature, bugfix, refactor, test)
334
+ 3. **Loads** the appropriate profile with architecture rules
335
+ 4. **Injects** guardrails before Claude generates any code
215
336
 
216
337
  ---
217
338
 
218
339
  ## Customize (Optional)
219
340
 
220
- ### Option A: Interactive generator
341
+ ### Interactive Setup
221
342
  ```bash
222
343
  npx corbat-init
223
344
  ```
224
345
 
225
- ### Option B: Manual config
346
+ ### Manual Config
226
347
 
227
348
  Create `.corbat.json` in your project root:
228
349
 
@@ -248,46 +369,36 @@ Create `.corbat.json` in your project root:
248
369
  | Tool | Purpose |
249
370
  |------|---------|
250
371
  | `get_context` | **Primary** — Returns all standards for your task |
251
- | `validate` | Check code against standards |
252
- | `search` | Search standards documentation |
253
- | `profiles` | List available profiles |
254
- | `health` | Server status check |
255
-
256
- ## Available Prompts
257
-
258
- | Prompt | Purpose |
259
- |--------|---------|
260
- | `implement` | Guided implementation with TDD workflow |
261
- | `review` | Expert code review (architecture, SOLID, security) |
372
+ | `validate` | Check code against standards (returns compliance score) |
373
+ | `search` | Search 15 standards documents |
374
+ | `profiles` | List all available profiles |
375
+ | `health` | Server status and diagnostics |
262
376
 
263
377
  ---
264
378
 
265
- ## How It Works
379
+ ## Compatibility
266
380
 
267
- ```
268
- ┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐
269
- │ Your Prompt │────▶│ Corbat MCP │────▶│ Claude + Rules
270
- │ │ │ │ │ │
271
- "Create user │ │ 1. Detect stack │ │ Generates code │
272
- │ service" │ │ 2. Classify task│ │ following ALL │
273
- │ │ │ 3. Load profile │ │ your standards │
274
- │ │ │ 4. Inject rules │ │ │
275
- └─────────────────┘ └─────────────────┘ └─────────────────┘
276
- ```
381
+ | Client | Status |
382
+ |--------|:------:|
383
+ | Claude Code (CLI) | ✅ Tested |
384
+ | Claude Desktop | ✅ Tested |
385
+ | Cursor | ⚠️ Experimental |
386
+ | Windsurf | ⚠️ Experimental |
387
+ | Other MCP clients | Standard protocol |
277
388
 
278
389
  ---
279
390
 
280
391
  ## Included Documentation
281
392
 
282
- Corbat MCP comes with 15 standards documents you can search:
393
+ Corbat MCP comes with 15 searchable standards documents:
283
394
 
284
- - **Architecture**: Hexagonal, DDD, Clean Architecture
285
- - **Code Quality**: SOLID, Clean Code, Naming Conventions
286
- - **Testing**: TDD, Unit/Integration/E2E guidelines
287
- - **DevOps**: Docker, Kubernetes, CI/CD
288
- - **Observability**: Logging, Metrics, Tracing
395
+ - **Architecture:** Hexagonal, DDD, Clean Architecture
396
+ - **Code Quality:** SOLID principles, Clean Code, Naming Conventions
397
+ - **Testing:** TDD workflow, Unit/Integration/E2E guidelines
398
+ - **DevOps:** Docker, Kubernetes, CI/CD best practices
399
+ - **Observability:** Structured logging, Metrics, Distributed tracing
289
400
 
290
- Use `search` tool: *"search kafka"* → Returns event-driven architecture guidelines.
401
+ Use the search tool: `"search kafka"` → Returns event-driven architecture guidelines.
291
402
 
292
403
  ---
293
404
 
@@ -319,39 +430,17 @@ Or specify in prompt: *"...using profile nodejs"*
319
430
  <summary><b>Standards not being applied</b></summary>
320
431
 
321
432
  1. Check if `.corbat.json` exists in project root
322
- 2. Verify profile exists in `profiles/templates/`
433
+ 2. Verify profile exists
323
434
  3. Try explicit: *"Use corbat get_context for: your task"*
324
435
 
325
436
  </details>
326
437
 
327
- <details>
328
- <summary><b>Permission errors (macOS/Linux)</b></summary>
329
-
330
- ```bash
331
- # Clear npx cache and retry
332
- npx clear-npx-cache
333
- npx @corbat-tech/coding-standards-mcp
334
- ```
335
-
336
- </details>
337
-
338
- ---
339
-
340
- ## Project Quality
341
-
342
- | Metric | Value |
343
- |--------|-------|
344
- | Test coverage | 80%+ |
345
- | Tests passing | 78 |
346
- | TypeScript | Strict mode |
347
- | Linting | Biome |
348
- | Architecture validation | dependency-cruiser |
349
-
350
438
  ---
351
439
 
352
440
  ## Links
353
441
 
354
442
  - [Full Documentation](docs/full-documentation.md)
443
+ - [Benchmark Report](docs/comparison-tests/RESULTS-REPORT.md)
355
444
  - [Model Context Protocol](https://modelcontextprotocol.io/)
356
445
  - [Report Issues](https://github.com/corbat-tech/coding-standards-mcp/issues)
357
446
 
@@ -359,8 +448,8 @@ npx @corbat-tech/coding-standards-mcp
359
448
 
360
449
  <div align="center">
361
450
 
362
- **Define once. Apply everywhere. Ship faster.**
451
+ **Stop fixing AI-generated code. Start shipping it.**
363
452
 
364
- [Get Started](#quick-start) · [Documentation](docs/full-documentation.md) · [Report Bug](https://github.com/corbat-tech/coding-standards-mcp/issues)
453
+ [Get Started](#quick-start-2-minutes) · [View Benchmarks](docs/comparison-tests/RESULTS-REPORT.md) · [Documentation](docs/full-documentation.md)
365
454
 
366
455
  </div>
package/assets/demo.gif CHANGED
Binary file
@@ -0,0 +1,63 @@
1
+ # VHS Demo for CORBAT MCP - Ultra compact version
2
+
3
+ Output assets/demo.gif
4
+
5
+ Set Shell "bash"
6
+ Set FontSize 15
7
+ Set Width 800
8
+ Set Height 400
9
+ Set Theme "Catppuccin Mocha"
10
+ Set TypingSpeed 25ms
11
+ Set Padding 20
12
+
13
+ Type "# CORBAT MCP - AI code that passes code review"
14
+ Enter
15
+ Sleep 300ms
16
+
17
+ Type "# Problem: Claude writes code, but it fails quality gates"
18
+ Enter
19
+ Sleep 400ms
20
+
21
+ Enter
22
+ Type "# Solution: One command, professional-grade code forever"
23
+ Enter
24
+ Sleep 300ms
25
+
26
+ Type "claude mcp add corbat -- npx -y @corbat-tech/coding-standards-mcp"
27
+ Enter
28
+ Sleep 500ms
29
+
30
+ Enter
31
+ Type "# You: 'Create a payment service'"
32
+ Enter
33
+ Sleep 300ms
34
+
35
+ Type "# Corbat: Detects stack, injects architecture rules, enforces TDD"
36
+ Enter
37
+ Sleep 400ms
38
+
39
+ Enter
40
+ Type "# Results (20 benchmarks):"
41
+ Enter
42
+ Sleep 200ms
43
+
44
+ Type "# Quality: 63 -> 93 (+48%)"
45
+ Enter
46
+ Sleep 150ms
47
+
48
+ Type "# Smells: 43 -> 0 (-100%)"
49
+ Enter
50
+ Sleep 150ms
51
+
52
+ Type "# Tests: 219 -> 558 (+155%)"
53
+ Enter
54
+ Sleep 150ms
55
+
56
+ Type "# SonarQube: FAIL -> PASS"
57
+ Enter
58
+ Sleep 500ms
59
+
60
+ Enter
61
+ Type "# Stop fixing AI code. Start shipping it."
62
+ Enter
63
+ Sleep 5s
package/dist/cli/init.js CHANGED
@@ -1,5 +1,5 @@
1
1
  #!/usr/bin/env node
2
- import { access, readFile, readdir, writeFile } from 'node:fs/promises';
2
+ import { access, readdir, readFile, writeFile } from 'node:fs/promises';
3
3
  import { dirname, join } from 'node:path';
4
4
  import { createInterface } from 'node:readline';
5
5
  import { fileURLToPath } from 'node:url';