forgecraft-mcp 1.0.0 → 1.0.2
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 +95 -49
- package/dist/analyzers/anti-pattern.d.ts.map +1 -1
- package/dist/analyzers/anti-pattern.js +28 -0
- package/dist/analyzers/anti-pattern.js.map +1 -1
- package/dist/cli/assistant-detector.d.ts +28 -0
- package/dist/cli/assistant-detector.d.ts.map +1 -0
- package/dist/cli/assistant-detector.js +107 -0
- package/dist/cli/assistant-detector.js.map +1 -0
- package/dist/cli/commands.d.ts.map +1 -1
- package/dist/cli/commands.js +18 -3
- package/dist/cli/commands.js.map +1 -1
- package/dist/cli/help.js +44 -44
- package/dist/http-server-contribute.d.ts +21 -0
- package/dist/http-server-contribute.d.ts.map +1 -0
- package/dist/http-server-contribute.js +168 -0
- package/dist/http-server-contribute.js.map +1 -0
- package/dist/http-server.d.ts +16 -0
- package/dist/http-server.d.ts.map +1 -0
- package/dist/http-server.js +200 -0
- package/dist/http-server.js.map +1 -0
- package/dist/registry/remote-gates.js +10 -4
- package/dist/registry/remote-gates.js.map +1 -1
- package/dist/tools/check-cascade-report.js +64 -64
- package/dist/tools/forgecraft-dispatch.d.ts.map +1 -1
- package/dist/tools/forgecraft-dispatch.js +1 -0
- package/dist/tools/forgecraft-dispatch.js.map +1 -1
- package/dist/tools/forgecraft-schema.d.ts +2 -2
- package/dist/tools/scaffold-spec-stubs.js +24 -24
- package/dist/tools/scaffold-templates.d.ts +1 -1
- package/dist/tools/scaffold-templates.d.ts.map +1 -1
- package/dist/tools/scaffold-templates.js +73 -64
- package/dist/tools/scaffold-templates.js.map +1 -1
- package/dist/tools/setup-phase2.d.ts +1 -0
- package/dist/tools/setup-phase2.d.ts.map +1 -1
- package/dist/tools/setup-phase2.js +24 -6
- package/dist/tools/setup-phase2.js.map +1 -1
- package/dist/tools/setup-project.d.ts +6 -0
- package/dist/tools/setup-project.d.ts.map +1 -1
- package/dist/tools/setup-project.js +25 -8
- package/dist/tools/setup-project.js.map +1 -1
- package/dist/tools/spec-parser-inference.d.ts +10 -0
- package/dist/tools/spec-parser-inference.d.ts.map +1 -1
- package/dist/tools/spec-parser-inference.js +134 -31
- package/dist/tools/spec-parser-inference.js.map +1 -1
- package/package.json +7 -2
package/README.md
CHANGED
|
@@ -26,7 +26,7 @@ npx forgecraft-mcp setup .
|
|
|
26
26
|
|
|
27
27
|
---
|
|
28
28
|
|
|
29
|
-
##
|
|
29
|
+
## A quality framework for AI-assisted software development
|
|
30
30
|
|
|
31
31
|
Every session, every project, every AI assistant — measured against the same 7-property **Generative Specification** model. Not vibes. Not a linter score. A score out of 14 that tells you exactly where the gap is and why.
|
|
32
32
|
|
|
@@ -68,6 +68,8 @@ Before installing: `code --list-extensions | grep -i <name>`. Only install if no
|
|
|
68
68
|
**Docker containers**
|
|
69
69
|
Check before creating: `docker ps -a --filter name=<service>`. If it exists, start it — don't create it. Prefer `docker compose up` (reuse) over bare `docker run` (always creates new). Logs capped at 500 MB. `docker system prune -f` is documented as a periodic maintenance step, not an emergency.
|
|
70
70
|
|
|
71
|
+
> **Exception:** Multiple containers of the same service are permitted when they differ meaningfully in plugin set or major version — for example, a `postgres-pgvector` container alongside a standard `postgres` container. Name containers to reflect the variant (e.g., `db-pgvector`, `db-timescale`); otherwise the deduplication rule applies.
|
|
72
|
+
|
|
71
73
|
**Python virtual environments**
|
|
72
74
|
One `.venv` per project root. Reuse if the Python major.minor version matches. Never create a venv in a subdirectory unless it's a standalone installable package. Unused dependencies flagged by `pip list --not-required`.
|
|
73
75
|
|
|
@@ -86,25 +88,29 @@ Read the spec in docs/specs/, set up this project with ForgeCraft,
|
|
|
86
88
|
scaffold it with the right tags, recommend the tech stack, start building.
|
|
87
89
|
```
|
|
88
90
|
|
|
89
|
-
That's the entire onboarding prompt. ForgeCraft reads the spec,
|
|
91
|
+
That's the entire onboarding prompt. ForgeCraft reads the spec, the AI assigns the tags, and ForgeCraft writes the instruction file, emits `Status.md`, `docs/adrs/`, `docs/PRD.md`, `docs/TechSpec.md`, hooks, and skills. The AI has full context. You start building.
|
|
90
92
|
|
|
91
93
|
ForgeCraft scans your project, auto-detects your stack, and generates tailored instruction files from 116 curated blocks — SOLID, hexagonal architecture, testing pyramids, CI/CD, and 24 domain-specific rule sets — in seconds.
|
|
92
94
|
|
|
93
95
|
---
|
|
94
96
|
|
|
95
|
-
## Quality gates
|
|
97
|
+
## Quality gates
|
|
98
|
+
|
|
99
|
+
Quality gates are structured pass/fail checks your AI assistant runs at defined moments — before a commit, before a release, after a deployment. They're not linter rules. Each gate has a condition, an evidence requirement, and a flag for whether human review is mandatory.
|
|
96
100
|
|
|
97
|
-
|
|
101
|
+
Gates are organized by release phase so you're not running pre-release chaos tests on day one of a greenfield project:
|
|
98
102
|
|
|
99
|
-
| Phase |
|
|
103
|
+
| Phase | Example gates |
|
|
100
104
|
|---|---|
|
|
101
105
|
| **development** | Unit tests pass · lint clean · no layer violations · no hardcoded secrets |
|
|
102
106
|
| **pre-release hardening** | Mutation testing ≥80% · DAST scan · 2× peak load · chaos (Toxiproxy) |
|
|
103
107
|
| **release candidate** | OWASP Top 10 pentest · full mutation audit · compatibility matrix · accessibility |
|
|
104
|
-
| **deployment
|
|
108
|
+
| **deployment** | Canary config verified · smoke tests pass · observability confirmed |
|
|
105
109
|
| **post-deployment** | Synthetic probes live · 30-min error window monitored · incident runbook reviewed |
|
|
106
110
|
|
|
107
|
-
|
|
111
|
+
Gates tagged `requires_human_review: true` cannot be auto-passed — some checks require a human.
|
|
112
|
+
|
|
113
|
+
The full gate library, contribution guide, and schema are in the [quality gates repository →](https://github.com/jghiringhelli/genspec-dev-quality-gates)
|
|
108
114
|
|
|
109
115
|
---
|
|
110
116
|
|
|
@@ -122,14 +128,14 @@ npx forgecraft-mcp generate_adr . --title "Use event sourcing for order history"
|
|
|
122
128
|
|
|
123
129
|
---
|
|
124
130
|
|
|
125
|
-
##
|
|
131
|
+
## AI assistant setup vs ForgeCraft
|
|
126
132
|
|
|
127
|
-
`claude init
|
|
133
|
+
`claude init`, Cursor's workspace rules, or Copilot's instructions file get you started. ForgeCraft gets you to production standards — across every AI assistant, every session, every engineer on the team.
|
|
128
134
|
|
|
129
|
-
| |
|
|
135
|
+
| | Default AI setup | ForgeCraft |
|
|
130
136
|
|---|---|---|
|
|
131
137
|
| **Instruction file** | Generic, one-size-fits-all | 116 curated blocks matched to your stack |
|
|
132
|
-
| **AI assistants** |
|
|
138
|
+
| **AI assistants** | Varies by tool | Claude, Cursor, Copilot, Windsurf, Cline, Aider |
|
|
133
139
|
| **Architecture** | None | SOLID, hexagonal, clean code, DDD |
|
|
134
140
|
| **Testing** | Basic mention | Testing pyramid, coverage targets, mutation gates |
|
|
135
141
|
| **Domain rules** | None | 24 domains (fintech, healthcare, gaming…) |
|
|
@@ -168,12 +174,34 @@ After setup, your AI has the context. These prompts direct the work. Copy, paste
|
|
|
168
174
|
```bash
|
|
169
175
|
# First-time setup — auto-detects your stack
|
|
170
176
|
npx forgecraft-mcp setup .
|
|
177
|
+
```
|
|
171
178
|
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
179
|
+
```mermaid
|
|
180
|
+
flowchart TD
|
|
181
|
+
A["<b>setup .</b><br/>npx forgecraft-mcp setup ."] --> B["Phase 1 — Analyze<br/>Reads spec · infers tags"]
|
|
182
|
+
B --> C{AI assistant\nin the loop?}
|
|
183
|
+
C -->|"Yes (MCP)"| D["Phase 2 — Calibrate<br/>LLM corrects tags from spec<br/>Writes forgecraft.yaml · CLAUDE.md<br/>PRD.md · hooks · ADR-000"]
|
|
184
|
+
C -->|"No (CLI only)"| E["⚠️ CLI-only mode<br/>Directory heuristics only<br/>→ configure an AI assistant"]
|
|
185
|
+
D --> F["<b>check_cascade</b><br/>5-step readiness gate<br/>1 · Functional spec<br/>2 · Architecture + C4<br/>3 · Constitution<br/>4 · ADRs<br/>5 · Use cases"]
|
|
186
|
+
F --> G{All 5 passing?}
|
|
187
|
+
G -->|"Stubs / missing"| H["Fill artifacts<br/>docs/PRD.md · docs/adrs/<br/>docs/use-cases.md"]
|
|
188
|
+
H --> F
|
|
189
|
+
G -->|"✅ All pass"| I["<b>generate_session_prompt</b><br/>Bound context for next task"]
|
|
190
|
+
I --> J["Implement with TDD<br/>RED → GREEN → REFACTOR<br/>+ Documentation Cascade"]
|
|
191
|
+
J --> K["<b>audit_project</b><br/>Score 0 – 100"]
|
|
192
|
+
K --> L{Score ≥ 90?}
|
|
193
|
+
L -->|"Violations found"| M["WORKFLOWS.md remediation<br/>file_length · layer_violation<br/>hardcoded_url · missing_prd"]
|
|
194
|
+
M --> J
|
|
195
|
+
L -->|"✅ Score ≥ 90"| N["<b>close_cycle</b><br/>Re-check cascade · assess gates<br/>promote to registry · bump version"]
|
|
196
|
+
N --> O{Roadmap\ncomplete?}
|
|
197
|
+
O -->|"More features"| I
|
|
198
|
+
O -->|"All done"| P["<b>start_hardening</b><br/>Mutation tests · OWASP · load test"]
|
|
199
|
+
P --> Q["🚢 Ship"]
|
|
200
|
+
|
|
201
|
+
style A fill:#1a2e1a,color:#90ee90,stroke:#3a6e3a
|
|
202
|
+
style Q fill:#1a2a3e,color:#87ceeb,stroke:#3a5a8e
|
|
203
|
+
style E fill:#2e1a1a,color:#ffaa88,stroke:#6e3a3a
|
|
204
|
+
style M fill:#2e2a00,color:#ffd700,stroke:#6e6000
|
|
177
205
|
```
|
|
178
206
|
|
|
179
207
|
ForgeCraft is a **setup-time CLI tool**. Run it once to configure your project, then remove it — it has no runtime footprint.
|
|
@@ -218,9 +246,11 @@ This is the core value. Assembled from curated blocks covering:
|
|
|
218
246
|
|
|
219
247
|
Every block is sourced from established engineering literature (Martin, Evans, Wiggins) and adapted for AI-assisted development.
|
|
220
248
|
|
|
221
|
-
## 24 Tags —
|
|
249
|
+
## 24 Tags — AI-detected, user-adjustable
|
|
250
|
+
|
|
251
|
+
Tags tell ForgeCraft what your project is. On first setup, the AI analyzes your spec and codebase and assigns them. You can review and override in `forgecraft.yaml`. Blocks merge without conflicts — add or remove tags as the project evolves.
|
|
222
252
|
|
|
223
|
-
|
|
253
|
+
The full tag list and contribution guide live in the [quality gates repository →](https://github.com/jghiringhelli/genspec-dev-quality-gates)
|
|
224
254
|
|
|
225
255
|
| Tag | What it adds |
|
|
226
256
|
|-----|-------------|
|
|
@@ -249,7 +279,7 @@ Tags are domain classifiers. ForgeCraft auto-detects them from your code, or you
|
|
|
249
279
|
| `MEDALLION-ARCHITECTURE` | Bronze=immutable, Silver=validated, Gold=aggregated |
|
|
250
280
|
| `ZERO-TRUST` | Deny-by-default IAM, explicit allow rules |
|
|
251
281
|
|
|
252
|
-
## Content
|
|
282
|
+
## Content depth tiers
|
|
253
283
|
|
|
254
284
|
Not every project needs DDD on day one.
|
|
255
285
|
|
|
@@ -306,24 +336,20 @@ npx forgecraft-mcp <command> [dir] [flags]
|
|
|
306
336
|
|
|
307
337
|
Optionally add the ForgeCraft MCP sentinel to let your AI assistant diagnose your project and suggest the right CLI command:
|
|
308
338
|
|
|
309
|
-
|
|
310
|
-
claude mcp add forgecraft -- npx -y forgecraft-mcp
|
|
311
|
-
```
|
|
339
|
+
The sentinel is a **single minimal tool** (~200 tokens per request, vs ~1,500 for a full tool suite). It checks whether `forgecraft.yaml`, your AI instruction file, and your hooks exist, then returns the targeted CLI command for the project's current state.
|
|
312
340
|
|
|
313
|
-
The
|
|
314
|
-
|
|
315
|
-
**The design is intentional.** The full ForgeCraft command surface — 21 actions — lives in the CLI, not the MCP server. The MCP server exposes exactly one tool that reads three artifacts and returns one recommendation. This is the Generative Specification principle in the tool's own architecture: a stateless reader, a bounded artifact set, a derived action. The tool practices what it writes into your `CLAUDE.md`.
|
|
341
|
+
**The design is intentional.** The full ForgeCraft command surface — 21 actions — lives in the CLI, not the MCP server. The MCP server exposes exactly one tool that reads three artifacts and returns one recommendation. This is the Generative Specification principle in the tool's own architecture: a stateless reader, a bounded artifact set, a derived action. The tool practices what it writes into your instruction files.
|
|
316
342
|
|
|
317
343
|
A side effect: every declared MCP tool is read by the model on every turn whether invoked or not. One tool costs 200 tokens. Twenty-one tools costs 1,500. The sentinel keeps the methodology's recommended MCP budget (≤3 active servers) by design.
|
|
318
344
|
|
|
319
345
|
**Recommended workflow:**
|
|
320
|
-
1. Add the sentinel
|
|
346
|
+
1. Add the sentinel to your AI assistant (see config examples below)
|
|
321
347
|
2. Let your AI assistant run `npx forgecraft-mcp setup .`
|
|
322
|
-
3. Remove the sentinel
|
|
348
|
+
3. Remove the sentinel from your active MCP config
|
|
323
349
|
4. Re-add it when you need to refresh or audit
|
|
324
350
|
|
|
325
351
|
<details>
|
|
326
|
-
<summary>Manual MCP config</summary>
|
|
352
|
+
<summary>Manual MCP config — Claude</summary>
|
|
327
353
|
|
|
328
354
|
Add to `.claude/settings.json`:
|
|
329
355
|
```json
|
|
@@ -338,37 +364,57 @@ Add to `.claude/settings.json`:
|
|
|
338
364
|
```
|
|
339
365
|
</details>
|
|
340
366
|
|
|
341
|
-
>
|
|
367
|
+
<details>
|
|
368
|
+
<summary>Manual MCP config — GitHub Copilot (VS Code)</summary>
|
|
342
369
|
|
|
343
|
-
|
|
370
|
+
Add to `.vscode/mcp.json` in your project root (create it if it doesn't exist):
|
|
371
|
+
```json
|
|
372
|
+
{
|
|
373
|
+
"servers": {
|
|
374
|
+
"forgecraft": {
|
|
375
|
+
"type": "stdio",
|
|
376
|
+
"command": "npx",
|
|
377
|
+
"args": ["-y", "forgecraft-mcp"]
|
|
378
|
+
}
|
|
379
|
+
}
|
|
380
|
+
}
|
|
381
|
+
```
|
|
382
|
+
|
|
383
|
+
Then open the Copilot Chat panel, switch to **Agent mode**, and the forgecraft sentinel will appear in the tools list.
|
|
384
|
+
</details>
|
|
385
|
+
|
|
386
|
+
<details>
|
|
387
|
+
<summary>Manual MCP config — Cursor</summary>
|
|
388
|
+
|
|
389
|
+
Add to `.cursor/mcp.json`:
|
|
390
|
+
```json
|
|
391
|
+
{
|
|
392
|
+
"mcpServers": {
|
|
393
|
+
"forgecraft": {
|
|
394
|
+
"command": "npx",
|
|
395
|
+
"args": ["-y", "forgecraft-mcp"]
|
|
396
|
+
}
|
|
397
|
+
}
|
|
398
|
+
}
|
|
399
|
+
```
|
|
400
|
+
</details>
|
|
344
401
|
|
|
345
|
-
|
|
402
|
+
> **No MCP client?** That's fine — you don't need it. Run `npx forgecraft-mcp setup .` directly in your terminal. The MCP sentinel is optional; the CLI does everything.
|
|
346
403
|
|
|
347
|
-
|
|
348
|
-
|---|---|---|---|
|
|
349
|
-
| Projects / month | 2 | Unlimited | Unlimited |
|
|
350
|
-
| GS scoring (`verify`) | ✓ | ✓ | ✓ |
|
|
351
|
-
| Dev hygiene gates | ✓ | ✓ | ✓ |
|
|
352
|
-
| All 24 tags | ✓ | ✓ | ✓ |
|
|
353
|
-
| ADR generation | ✓ | ✓ | ✓ |
|
|
354
|
-
| Quality gate flywheel | Read-only | **Contribute** | Priority |
|
|
355
|
-
| Custom tags & templates | — | ✓ | ✓ |
|
|
356
|
-
| Org-wide standards | — | — | ✓ |
|
|
357
|
-
| Audit dashboard | — | — | ✓ |
|
|
358
|
-
| Priority support | — | — | ✓ |
|
|
404
|
+
> **Already ran `claude init`?** Use `npx forgecraft-mcp generate . --merge` to merge with your existing CLAUDE.md, keeping your custom sections while adding production standards.
|
|
359
405
|
|
|
360
|
-
|
|
406
|
+
---
|
|
361
407
|
|
|
362
|
-
|
|
408
|
+
## Free and open source
|
|
363
409
|
|
|
364
|
-
|
|
410
|
+
ForgeCraft is free. No limits, no tiers, no API keys.
|
|
365
411
|
|
|
366
|
-
|
|
367
|
-
- **After founding period**: 1 month Pro per accepted gate
|
|
368
|
-
- **3+ accepted gates ever**: Lifetime Pro
|
|
412
|
+
The quality gate library grows through community contribution. If you propose a gate that gets accepted, your name goes in [CONTRIBUTORS.md](CONTRIBUTORS.md) and you helped raise the floor for everyone building with AI.
|
|
369
413
|
|
|
370
414
|
[Open a gate proposal →](.github/ISSUE_TEMPLATE/quality-gate-proposal.md) · [See contributors →](CONTRIBUTORS.md)
|
|
371
415
|
|
|
416
|
+
Running this with a team? → [forgeworkshop.dev](https://forgeworkshop.dev)
|
|
417
|
+
|
|
372
418
|
---
|
|
373
419
|
|
|
374
420
|
## Theoretical foundation
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"anti-pattern.d.ts","sourceRoot":"","sources":["../../src/analyzers/anti-pattern.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAMH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAIrD,uCAAuC;AACvC,UAAU,UAAU;IAClB,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,iBAAiB,EAAE,MAAM,CAAC;CACpC;AAOD;;GAEG;AACH,wBAAgB,gBAAgB,CAC9B,UAAU,EAAE,MAAM,EAClB,MAAM,GAAE,OAAO,CAAC,UAAU,CAAM,GAC/B;IAAE,UAAU,EAAE,UAAU,EAAE,CAAC;IAAC,QAAQ,EAAE,UAAU,EAAE,CAAA;CAAE,
|
|
1
|
+
{"version":3,"file":"anti-pattern.d.ts","sourceRoot":"","sources":["../../src/analyzers/anti-pattern.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAMH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAIrD,uCAAuC;AACvC,UAAU,UAAU;IAClB,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,iBAAiB,EAAE,MAAM,CAAC;CACpC;AAOD;;GAEG;AACH,wBAAgB,gBAAgB,CAC9B,UAAU,EAAE,MAAM,EAClB,MAAM,GAAE,OAAO,CAAC,UAAU,CAAM,GAC/B;IAAE,UAAU,EAAE,UAAU,EAAE,CAAC;IAAC,QAAQ,EAAE,UAAU,EAAE,CAAA;CAAE,CAsGtD"}
|
|
@@ -92,12 +92,40 @@ export function scanAntiPatterns(projectDir, config = {}) {
|
|
|
92
92
|
// Skip unreadable files
|
|
93
93
|
}
|
|
94
94
|
}
|
|
95
|
+
checkRedundantDeployPipeline(projectDir, warnings);
|
|
95
96
|
logger.info("Anti-pattern scan complete", {
|
|
96
97
|
violations: violations.length,
|
|
97
98
|
warnings: warnings.length,
|
|
98
99
|
});
|
|
99
100
|
return { violations, warnings };
|
|
100
101
|
}
|
|
102
|
+
/** Platform deploy config filenames that indicate Railway/Vercel/Fly/Render deploys. */
|
|
103
|
+
const PLATFORM_DEPLOY_CONFIGS = [
|
|
104
|
+
"railway.toml",
|
|
105
|
+
"railway.json",
|
|
106
|
+
"vercel.json",
|
|
107
|
+
"fly.toml",
|
|
108
|
+
"render.yaml",
|
|
109
|
+
"render.yml",
|
|
110
|
+
];
|
|
111
|
+
/**
|
|
112
|
+
* Warn when a project has both a platform deploy config and .github/workflows/.
|
|
113
|
+
* Both will trigger on push — the CI/CD is duplicated and one should be removed.
|
|
114
|
+
*/
|
|
115
|
+
function checkRedundantDeployPipeline(projectDir, warnings) {
|
|
116
|
+
const hasPlatformConfig = PLATFORM_DEPLOY_CONFIGS.some((f) => existsSync(join(projectDir, f)));
|
|
117
|
+
if (!hasPlatformConfig)
|
|
118
|
+
return;
|
|
119
|
+
const hasGithubWorkflows = existsSync(join(projectDir, ".github", "workflows"));
|
|
120
|
+
if (!hasGithubWorkflows)
|
|
121
|
+
return;
|
|
122
|
+
const platformFile = PLATFORM_DEPLOY_CONFIGS.find((f) => existsSync(join(projectDir, f)));
|
|
123
|
+
warnings.push({
|
|
124
|
+
check: "redundant_deploy_pipeline",
|
|
125
|
+
message: `${platformFile} and .github/workflows/ both exist. Platform deploy (Railway/Vercel/Fly/Render) and GitHub Actions may both trigger on push — remove the redundant pipeline.`,
|
|
126
|
+
severity: "warning",
|
|
127
|
+
});
|
|
128
|
+
}
|
|
101
129
|
/**
|
|
102
130
|
* Check if a file is a source code file.
|
|
103
131
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"anti-pattern.js","sourceRoot":"","sources":["../../src/analyzers/anti-pattern.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"anti-pattern.js","sourceRoot":"","sources":["../../src/analyzers/anti-pattern.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Detects whether an AI assistant with MCP support is configured
|
|
3
|
+
* in the current project or the user's global environment.
|
|
4
|
+
*
|
|
5
|
+
* ForgeCraft is designed to work inside an AI assistant loop.
|
|
6
|
+
* Without one, tag inference is limited to directory heuristics and
|
|
7
|
+
* the two-phase spec analysis cannot run.
|
|
8
|
+
*/
|
|
9
|
+
export interface AssistantDetectionResult {
|
|
10
|
+
/** True if at least one AI assistant with MCP support is found. */
|
|
11
|
+
readonly detected: boolean;
|
|
12
|
+
/** Human-readable label of the first detected assistant. */
|
|
13
|
+
readonly name: string | null;
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Detect an AI assistant in the given project directory or the global environment.
|
|
17
|
+
*
|
|
18
|
+
* @param projectDir - Absolute path to the project root
|
|
19
|
+
* @returns Detection result with assistant name if found
|
|
20
|
+
*/
|
|
21
|
+
export declare function detectAiAssistant(projectDir: string): AssistantDetectionResult;
|
|
22
|
+
/**
|
|
23
|
+
* Build a human-readable warning message for when no AI assistant is found.
|
|
24
|
+
*
|
|
25
|
+
* @returns Multi-line warning string
|
|
26
|
+
*/
|
|
27
|
+
export declare function buildNoAssistantWarning(): string;
|
|
28
|
+
//# sourceMappingURL=assistant-detector.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"assistant-detector.d.ts","sourceRoot":"","sources":["../../src/cli/assistant-detector.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAMH,MAAM,WAAW,wBAAwB;IACvC,mEAAmE;IACnE,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;IAC3B,4DAA4D;IAC5D,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;CAC9B;AAsDD;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAC/B,UAAU,EAAE,MAAM,GACjB,wBAAwB,CAqB1B;AAED;;;;GAIG;AACH,wBAAgB,uBAAuB,IAAI,MAAM,CAyBhD"}
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Detects whether an AI assistant with MCP support is configured
|
|
3
|
+
* in the current project or the user's global environment.
|
|
4
|
+
*
|
|
5
|
+
* ForgeCraft is designed to work inside an AI assistant loop.
|
|
6
|
+
* Without one, tag inference is limited to directory heuristics and
|
|
7
|
+
* the two-phase spec analysis cannot run.
|
|
8
|
+
*/
|
|
9
|
+
import { existsSync } from "node:fs";
|
|
10
|
+
import { join } from "node:path";
|
|
11
|
+
import { homedir } from "node:os";
|
|
12
|
+
/**
|
|
13
|
+
* Paths relative to the project directory that indicate MCP is configured.
|
|
14
|
+
*/
|
|
15
|
+
const PROJECT_MCP_PATHS = [
|
|
16
|
+
".vscode/mcp.json",
|
|
17
|
+
".cursor/mcp.json",
|
|
18
|
+
".cline/mcp.json",
|
|
19
|
+
"CLAUDE.md",
|
|
20
|
+
".claude/mcp.json",
|
|
21
|
+
];
|
|
22
|
+
/**
|
|
23
|
+
* Paths relative to the user's home directory that indicate a global MCP client.
|
|
24
|
+
*/
|
|
25
|
+
function globalMcpPaths() {
|
|
26
|
+
const home = homedir();
|
|
27
|
+
return [
|
|
28
|
+
{
|
|
29
|
+
path: join(home, "Library", "Application Support", "Claude", "claude_desktop_config.json"),
|
|
30
|
+
name: "Claude Desktop",
|
|
31
|
+
},
|
|
32
|
+
{
|
|
33
|
+
path: join(home, "AppData", "Roaming", "Claude", "claude_desktop_config.json"),
|
|
34
|
+
name: "Claude Desktop",
|
|
35
|
+
},
|
|
36
|
+
{
|
|
37
|
+
path: join(home, ".config", "claude", "claude_desktop_config.json"),
|
|
38
|
+
name: "Claude Desktop",
|
|
39
|
+
},
|
|
40
|
+
{
|
|
41
|
+
path: join(home, ".cursor", "mcp.json"),
|
|
42
|
+
name: "Cursor",
|
|
43
|
+
},
|
|
44
|
+
{
|
|
45
|
+
path: join(home, ".codeium", "windsurf", "mcp_config.json"),
|
|
46
|
+
name: "Windsurf",
|
|
47
|
+
},
|
|
48
|
+
];
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Detect an AI assistant in the given project directory or the global environment.
|
|
52
|
+
*
|
|
53
|
+
* @param projectDir - Absolute path to the project root
|
|
54
|
+
* @returns Detection result with assistant name if found
|
|
55
|
+
*/
|
|
56
|
+
export function detectAiAssistant(projectDir) {
|
|
57
|
+
for (const rel of PROJECT_MCP_PATHS) {
|
|
58
|
+
if (existsSync(join(projectDir, rel))) {
|
|
59
|
+
const name = rel.includes("vscode")
|
|
60
|
+
? "VS Code Copilot / Claude"
|
|
61
|
+
: rel.includes("cursor")
|
|
62
|
+
? "Cursor"
|
|
63
|
+
: rel.includes("cline")
|
|
64
|
+
? "Cline"
|
|
65
|
+
: "Claude";
|
|
66
|
+
return { detected: true, name };
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
for (const { path, name } of globalMcpPaths()) {
|
|
70
|
+
if (existsSync(path)) {
|
|
71
|
+
return { detected: true, name };
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
return { detected: false, name: null };
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* Build a human-readable warning message for when no AI assistant is found.
|
|
78
|
+
*
|
|
79
|
+
* @returns Multi-line warning string
|
|
80
|
+
*/
|
|
81
|
+
export function buildNoAssistantWarning() {
|
|
82
|
+
return [
|
|
83
|
+
"⚠️ No AI assistant detected",
|
|
84
|
+
"",
|
|
85
|
+
"ForgeCraft is designed to work inside an AI coding assistant (Claude, Copilot,",
|
|
86
|
+
"Cursor, Windsurf, etc.). Without one, tag inference is limited to directory",
|
|
87
|
+
"heuristics and the spec-reading phase cannot run.",
|
|
88
|
+
"",
|
|
89
|
+
"To get full value from ForgeCraft, configure your assistant first:",
|
|
90
|
+
"",
|
|
91
|
+
" Claude Desktop / Claude CLI:",
|
|
92
|
+
" claude mcp add forgecraft-mcp -- npx -y forgecraft-mcp",
|
|
93
|
+
"",
|
|
94
|
+
" VS Code Copilot (add to .vscode/mcp.json):",
|
|
95
|
+
' { "servers": { "forgecraft": { "type": "stdio", "command": "npx", "args": ["-y", "forgecraft-mcp"] } } }',
|
|
96
|
+
"",
|
|
97
|
+
" Cursor / Windsurf:",
|
|
98
|
+
" See https://github.com/jghiringhelli/forgecraft-mcp#mcp-sentinel",
|
|
99
|
+
"",
|
|
100
|
+
'Then ask your assistant: "Run forgecraft setup_project on this project."',
|
|
101
|
+
"",
|
|
102
|
+
"Continuing with directory-only analysis (tags may be inaccurate)...",
|
|
103
|
+
"─────────────────────────────────────────────────────────────────────",
|
|
104
|
+
"",
|
|
105
|
+
].join("\n");
|
|
106
|
+
}
|
|
107
|
+
//# sourceMappingURL=assistant-detector.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"assistant-detector.js","sourceRoot":"","sources":["../../src/cli/assistant-detector.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AASlC;;GAEG;AACH,MAAM,iBAAiB,GAAG;IACxB,kBAAkB;IAClB,kBAAkB;IAClB,iBAAiB;IACjB,WAAW;IACX,kBAAkB;CACnB,CAAC;AAEF;;GAEG;AACH,SAAS,cAAc;IACrB,MAAM,IAAI,GAAG,OAAO,EAAE,CAAC;IACvB,OAAO;QACL;YACE,IAAI,EAAE,IAAI,CACR,IAAI,EACJ,SAAS,EACT,qBAAqB,EACrB,QAAQ,EACR,4BAA4B,CAC7B;YACD,IAAI,EAAE,gBAAgB;SACvB;QACD;YACE,IAAI,EAAE,IAAI,CACR,IAAI,EACJ,SAAS,EACT,SAAS,EACT,QAAQ,EACR,4BAA4B,CAC7B;YACD,IAAI,EAAE,gBAAgB;SACvB;QACD;YACE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,4BAA4B,CAAC;YACnE,IAAI,EAAE,gBAAgB;SACvB;QACD;YACE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,SAAS,EAAE,UAAU,CAAC;YACvC,IAAI,EAAE,QAAQ;SACf;QACD;YACE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,UAAU,EAAE,UAAU,EAAE,iBAAiB,CAAC;YAC3D,IAAI,EAAE,UAAU;SACjB;KACF,CAAC;AACJ,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,iBAAiB,CAC/B,UAAkB;IAElB,KAAK,MAAM,GAAG,IAAI,iBAAiB,EAAE,CAAC;QACpC,IAAI,UAAU,CAAC,IAAI,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC;YACtC,MAAM,IAAI,GAAG,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC;gBACjC,CAAC,CAAC,0BAA0B;gBAC5B,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC;oBACtB,CAAC,CAAC,QAAQ;oBACV,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC;wBACrB,CAAC,CAAC,OAAO;wBACT,CAAC,CAAC,QAAQ,CAAC;YACjB,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;QAClC,CAAC;IACH,CAAC;IAED,KAAK,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,cAAc,EAAE,EAAE,CAAC;QAC9C,IAAI,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;YACrB,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;QAClC,CAAC;IACH,CAAC;IAED,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;AACzC,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,uBAAuB;IACrC,OAAO;QACL,8BAA8B;QAC9B,EAAE;QACF,gFAAgF;QAChF,6EAA6E;QAC7E,mDAAmD;QACnD,EAAE;QACF,oEAAoE;QACpE,EAAE;QACF,gCAAgC;QAChC,4DAA4D;QAC5D,EAAE;QACF,8CAA8C;QAC9C,8GAA8G;QAC9G,EAAE;QACF,sBAAsB;QACtB,sEAAsE;QACtE,EAAE;QACF,0EAA0E;QAC1E,EAAE;QACF,qEAAqE;QACrE,uEAAuE;QACvE,EAAE;KACH,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACf,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"commands.d.ts","sourceRoot":"","sources":["../../src/cli/commands.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,OAAO,KAAK,EAAE,GAAG,EAA6B,MAAM,oBAAoB,CAAC;AAmBzE,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"commands.d.ts","sourceRoot":"","sources":["../../src/cli/commands.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,OAAO,KAAK,EAAE,GAAG,EAA6B,MAAM,oBAAoB,CAAC;AAmBzE,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,WAAW,CAAC;AASvC;;;;;;GAMG;AACH,wBAAgB,qBAAqB,CACnC,GAAG,EAAE,MAAM,EACX,QAAQ,EAAE,MAAM,EAAE,GAAG,SAAS,GAC7B,GAAG,EAAE,GAAG,SAAS,CAInB;AAID;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,MAAM,EAAE;IAClC,OAAO,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CAChD,GAAG,IAAI,CAEP;AAID,+DAA+D;AAC/D,wBAAsB,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,CA+BzE;AAED,+DAA+D;AAC/D,wBAAsB,UAAU,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,CAqB3E;AAED,+DAA+D;AAC/D,wBAAsB,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,CAO1E;AAED,+DAA+D;AAC/D,wBAAsB,UAAU,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,CAQ3E;AAED,+DAA+D;AAC/D,wBAAsB,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,CAazE;AAED,+DAA+D;AAC/D,wBAAsB,WAAW,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,CAqB5E;AAED,+DAA+D;AAC/D,wBAAsB,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,CAa1E;AAED,+DAA+D;AAC/D,wBAAsB,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,CAUxE;AAED,+DAA+D;AAC/D,wBAAsB,WAAW,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,CAM5E;AAED,+DAA+D;AAC/D,wBAAsB,WAAW,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,CAyB5E;AAED,+DAA+D;AAC/D,wBAAsB,UAAU,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,CAa3E;AAED,+DAA+D;AAC/D,wBAAsB,UAAU,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,CAe3E;AAED,+DAA+D;AAC/D,wBAAsB,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,CAe1E;AAED,+DAA+D;AAC/D,wBAAsB,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,CAiB7E"}
|
package/dist/cli/commands.js
CHANGED
|
@@ -19,6 +19,7 @@ import { verifyHandler } from "../tools/verify.js";
|
|
|
19
19
|
import { adviceHandler } from "../tools/advice.js";
|
|
20
20
|
import { metricsHandler } from "../tools/metrics.js";
|
|
21
21
|
import { str, arr, bool } from "./args.js";
|
|
22
|
+
import { detectAiAssistant, buildNoAssistantWarning, } from "./assistant-detector.js";
|
|
22
23
|
// ── Config Resolution ────────────────────────────────────────────────
|
|
23
24
|
/**
|
|
24
25
|
* Resolve tags from explicit flags or fall back to forgecraft.yaml.
|
|
@@ -46,13 +47,27 @@ export function printResult(result) {
|
|
|
46
47
|
/** @param pos - Positional args @param flags - Parsed flags */
|
|
47
48
|
export async function cmdSetup(pos, flags) {
|
|
48
49
|
const projectDir = resolve(pos[0] ?? ".");
|
|
50
|
+
const detection = detectAiAssistant(projectDir);
|
|
51
|
+
if (!detection.detected) {
|
|
52
|
+
process.stderr.write(buildNoAssistantWarning());
|
|
53
|
+
}
|
|
54
|
+
// Phase 2 only when all three answers are explicitly provided via flags.
|
|
55
|
+
// Without them, default to Phase 1 (analysis + questions) so the LLM can
|
|
56
|
+
// read the spec and call Phase 2 with corrected tags.
|
|
57
|
+
const mvp = flags["mvp"] !== undefined ? bool(flags, "mvp", false) : undefined;
|
|
58
|
+
const scopeComplete = flags["scope-complete"] !== undefined
|
|
59
|
+
? bool(flags, "scope-complete", true)
|
|
60
|
+
: undefined;
|
|
61
|
+
const hasConsumers = flags["consumers"] !== undefined
|
|
62
|
+
? bool(flags, "consumers", false)
|
|
63
|
+
: undefined;
|
|
49
64
|
const result = await setupProjectHandler({
|
|
50
65
|
project_dir: projectDir,
|
|
51
66
|
spec_path: str(flags, "spec"),
|
|
52
67
|
spec_text: str(flags, "description"),
|
|
53
|
-
mvp
|
|
54
|
-
scope_complete:
|
|
55
|
-
has_consumers:
|
|
68
|
+
mvp,
|
|
69
|
+
scope_complete: scopeComplete,
|
|
70
|
+
has_consumers: hasConsumers,
|
|
56
71
|
});
|
|
57
72
|
printResult(result);
|
|
58
73
|
}
|
package/dist/cli/commands.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"commands.js","sourceRoot":"","sources":["../../src/cli/commands.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"commands.js","sourceRoot":"","sources":["../../src/cli/commands.ts"],"names":[],"mappings":"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"}
|