forgecraft-mcp 0.2.1 → 0.4.0
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/dist/analyzers/language-detector.d.ts +17 -0
- package/dist/analyzers/language-detector.d.ts.map +1 -0
- package/dist/analyzers/language-detector.js +89 -0
- package/dist/analyzers/language-detector.js.map +1 -0
- package/dist/analyzers/package-json.d.ts.map +1 -1
- package/dist/analyzers/package-json.js +5 -5
- package/dist/analyzers/package-json.js.map +1 -1
- package/dist/analyzers/project-context.d.ts +23 -0
- package/dist/analyzers/project-context.d.ts.map +1 -0
- package/dist/analyzers/project-context.js +181 -0
- package/dist/analyzers/project-context.js.map +1 -0
- package/dist/index.js +4 -27
- package/dist/index.js.map +1 -1
- package/dist/registry/composer.d.ts +3 -1
- package/dist/registry/composer.d.ts.map +1 -1
- package/dist/registry/composer.js +28 -0
- package/dist/registry/composer.js.map +1 -1
- package/dist/registry/loader.d.ts.map +1 -1
- package/dist/registry/loader.js +40 -1
- package/dist/registry/loader.js.map +1 -1
- package/dist/registry/mcp-discovery.js +1 -0
- package/dist/registry/mcp-discovery.js.map +1 -1
- package/dist/registry/renderer.d.ts +19 -2
- package/dist/registry/renderer.d.ts.map +1 -1
- package/dist/registry/renderer.js +64 -2
- package/dist/registry/renderer.js.map +1 -1
- package/dist/shared/filesystem.d.ts +45 -0
- package/dist/shared/filesystem.d.ts.map +1 -0
- package/dist/shared/filesystem.js +122 -0
- package/dist/shared/filesystem.js.map +1 -0
- package/dist/shared/types.d.ts +48 -0
- package/dist/shared/types.d.ts.map +1 -1
- package/dist/tools/add-module.d.ts +1 -1
- package/dist/tools/audit.js +2 -2
- package/dist/tools/audit.js.map +1 -1
- package/dist/tools/configure-mcp.d.ts +3 -0
- package/dist/tools/configure-mcp.d.ts.map +1 -1
- package/dist/tools/configure-mcp.js +38 -1
- package/dist/tools/configure-mcp.js.map +1 -1
- package/dist/tools/convert.js +4 -4
- package/dist/tools/convert.js.map +1 -1
- package/dist/tools/forgecraft-router.d.ts +127 -0
- package/dist/tools/forgecraft-router.d.ts.map +1 -0
- package/dist/tools/forgecraft-router.js +305 -0
- package/dist/tools/forgecraft-router.js.map +1 -0
- package/dist/tools/generate-claude-md.d.ts +1 -0
- package/dist/tools/generate-claude-md.d.ts.map +1 -1
- package/dist/tools/generate-claude-md.js +23 -57
- package/dist/tools/generate-claude-md.js.map +1 -1
- package/dist/tools/get-reference.d.ts +28 -0
- package/dist/tools/get-reference.d.ts.map +1 -0
- package/dist/tools/get-reference.js +63 -0
- package/dist/tools/get-reference.js.map +1 -0
- package/dist/tools/list.d.ts +18 -2
- package/dist/tools/list.d.ts.map +1 -1
- package/dist/tools/list.js +50 -2
- package/dist/tools/list.js.map +1 -1
- package/dist/tools/refresh-project.d.ts.map +1 -1
- package/dist/tools/refresh-project.js +8 -10
- package/dist/tools/refresh-project.js.map +1 -1
- package/dist/tools/scaffold.d.ts +5 -1
- package/dist/tools/scaffold.d.ts.map +1 -1
- package/dist/tools/scaffold.js +58 -31
- package/dist/tools/scaffold.js.map +1 -1
- package/dist/tools/setup-project.d.ts +3 -3
- package/dist/tools/setup-project.d.ts.map +1 -1
- package/dist/tools/setup-project.js +8 -4
- package/dist/tools/setup-project.js.map +1 -1
- package/package.json +1 -1
- package/templates/analytics/mcp-servers.yaml +1 -0
- package/templates/api/mcp-servers.yaml +1 -0
- package/templates/api/skills.yaml +54 -0
- package/templates/cli/mcp-servers.yaml +1 -0
- package/templates/data-lineage/mcp-servers.yaml +2 -0
- package/templates/data-pipeline/mcp-servers.yaml +1 -0
- package/templates/data-pipeline/skills.yaml +56 -0
- package/templates/fintech/mcp-servers.yaml +1 -0
- package/templates/fintech/skills.yaml +35 -0
- package/templates/game/mcp-servers.yaml +1 -0
- package/templates/healthcare/mcp-servers.yaml +1 -0
- package/templates/healthcare/skills.yaml +35 -0
- package/templates/hipaa/mcp-servers.yaml +1 -0
- package/templates/hipaa/skills.yaml +39 -0
- package/templates/infra/mcp-servers.yaml +2 -0
- package/templates/library/mcp-servers.yaml +2 -0
- package/templates/medallion-architecture/mcp-servers.yaml +2 -0
- package/templates/ml/mcp-servers.yaml +1 -0
- package/templates/mobile/mcp-servers.yaml +1 -0
- package/templates/observability-xray/mcp-servers.yaml +1 -0
- package/templates/realtime/mcp-servers.yaml +1 -0
- package/templates/soc2/mcp-servers.yaml +2 -0
- package/templates/social/mcp-servers.yaml +2 -0
- package/templates/state-machine/mcp-servers.yaml +1 -0
- package/templates/universal/hooks.yaml +63 -0
- package/templates/universal/instructions.yaml +41 -118
- package/templates/universal/mcp-servers.yaml +12 -0
- package/templates/universal/nfr.yaml +1 -1
- package/templates/universal/reference.yaml +111 -0
- package/templates/universal/review.yaml +2 -2
- package/templates/universal/skills.yaml +106 -0
- package/templates/web-react/mcp-servers.yaml +2 -0
- package/templates/web-react/skills.yaml +56 -0
- package/templates/web-static/mcp-servers.yaml +2 -0
- package/templates/web3/mcp-servers.yaml +1 -0
- package/templates/zero-trust/mcp-servers.yaml +1 -0
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Language detector.
|
|
3
|
+
*
|
|
4
|
+
* Detects the primary programming language of a project from filesystem
|
|
5
|
+
* indicators. Falls back to "typescript" when no clear signal is found.
|
|
6
|
+
*/
|
|
7
|
+
/** Languages supported by ForgeCraft template rendering. */
|
|
8
|
+
export type SupportedLanguage = "typescript" | "python";
|
|
9
|
+
/**
|
|
10
|
+
* Detect the primary language of a project from filesystem indicators.
|
|
11
|
+
* Falls back to "typescript" when no clear signal is found.
|
|
12
|
+
*
|
|
13
|
+
* @param projectDir - Absolute path to project root
|
|
14
|
+
* @returns Detected language
|
|
15
|
+
*/
|
|
16
|
+
export declare function detectLanguage(projectDir: string): SupportedLanguage;
|
|
17
|
+
//# sourceMappingURL=language-detector.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"language-detector.d.ts","sourceRoot":"","sources":["../../src/analyzers/language-detector.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAQH,4DAA4D;AAC5D,MAAM,MAAM,iBAAiB,GAAG,YAAY,GAAG,QAAQ,CAAC;AAgBxD;;;;;;GAMG;AACH,wBAAgB,cAAc,CAAC,UAAU,EAAE,MAAM,GAAG,iBAAiB,CAkCpE"}
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Language detector.
|
|
3
|
+
*
|
|
4
|
+
* Detects the primary programming language of a project from filesystem
|
|
5
|
+
* indicators. Falls back to "typescript" when no clear signal is found.
|
|
6
|
+
*/
|
|
7
|
+
import { existsSync, readdirSync } from "node:fs";
|
|
8
|
+
import { join } from "node:path";
|
|
9
|
+
import { createLogger } from "../shared/logger/index.js";
|
|
10
|
+
const logger = createLogger("analyzers/language-detector");
|
|
11
|
+
/** File indicators for each language. */
|
|
12
|
+
const PYTHON_INDICATORS = [
|
|
13
|
+
"pyproject.toml",
|
|
14
|
+
"setup.py",
|
|
15
|
+
"setup.cfg",
|
|
16
|
+
"requirements.txt",
|
|
17
|
+
"Pipfile",
|
|
18
|
+
];
|
|
19
|
+
const TYPESCRIPT_INDICATORS = [
|
|
20
|
+
"tsconfig.json",
|
|
21
|
+
"package.json",
|
|
22
|
+
];
|
|
23
|
+
/**
|
|
24
|
+
* Detect the primary language of a project from filesystem indicators.
|
|
25
|
+
* Falls back to "typescript" when no clear signal is found.
|
|
26
|
+
*
|
|
27
|
+
* @param projectDir - Absolute path to project root
|
|
28
|
+
* @returns Detected language
|
|
29
|
+
*/
|
|
30
|
+
export function detectLanguage(projectDir) {
|
|
31
|
+
const hasPython = PYTHON_INDICATORS.some((f) => existsSync(join(projectDir, f)));
|
|
32
|
+
const hasTypeScript = TYPESCRIPT_INDICATORS.some((f) => existsSync(join(projectDir, f)));
|
|
33
|
+
// Clear signal: only one language present
|
|
34
|
+
if (hasPython && !hasTypeScript) {
|
|
35
|
+
logger.info("Detected Python project", { projectDir });
|
|
36
|
+
return "python";
|
|
37
|
+
}
|
|
38
|
+
if (hasTypeScript && !hasPython) {
|
|
39
|
+
logger.info("Detected TypeScript project", { projectDir });
|
|
40
|
+
return "typescript";
|
|
41
|
+
}
|
|
42
|
+
// Both present (monorepo or mixed): count source files in src/
|
|
43
|
+
if (hasPython && hasTypeScript) {
|
|
44
|
+
const language = countSourceFiles(projectDir);
|
|
45
|
+
logger.info("Mixed project, detected by file count", {
|
|
46
|
+
projectDir,
|
|
47
|
+
language,
|
|
48
|
+
});
|
|
49
|
+
return language;
|
|
50
|
+
}
|
|
51
|
+
// No indicators found — default to TypeScript
|
|
52
|
+
logger.info("No language indicators found, defaulting to typescript", {
|
|
53
|
+
projectDir,
|
|
54
|
+
});
|
|
55
|
+
return "typescript";
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Count source files in src/ to determine majority language.
|
|
59
|
+
* Shallow scan only (max 100 entries) to keep it fast.
|
|
60
|
+
*/
|
|
61
|
+
function countSourceFiles(projectDir) {
|
|
62
|
+
const srcDir = join(projectDir, "src");
|
|
63
|
+
if (!existsSync(srcDir)) {
|
|
64
|
+
return "typescript";
|
|
65
|
+
}
|
|
66
|
+
try {
|
|
67
|
+
const entries = readdirSync(srcDir, { recursive: false });
|
|
68
|
+
const limited = entries.slice(0, 100);
|
|
69
|
+
let pyCount = 0;
|
|
70
|
+
let tsCount = 0;
|
|
71
|
+
for (const entry of limited) {
|
|
72
|
+
const name = String(entry);
|
|
73
|
+
if (name.endsWith(".py")) {
|
|
74
|
+
pyCount++;
|
|
75
|
+
}
|
|
76
|
+
else if (name.endsWith(".ts") ||
|
|
77
|
+
name.endsWith(".tsx") ||
|
|
78
|
+
name.endsWith(".js") ||
|
|
79
|
+
name.endsWith(".jsx")) {
|
|
80
|
+
tsCount++;
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
return pyCount > tsCount ? "python" : "typescript";
|
|
84
|
+
}
|
|
85
|
+
catch {
|
|
86
|
+
return "typescript";
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
//# sourceMappingURL=language-detector.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"language-detector.js","sourceRoot":"","sources":["../../src/analyzers/language-detector.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"package-json.d.ts","sourceRoot":"","sources":["../../src/analyzers/package-json.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAKH,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,oBAAoB,CAAC;AAI9C,qDAAqD;AACrD,MAAM,WAAW,SAAS;IACxB,QAAQ,CAAC,GAAG,EAAE,GAAG,CAAC;IAClB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,CAAC;CAC7B;
|
|
1
|
+
{"version":3,"file":"package-json.d.ts","sourceRoot":"","sources":["../../src/analyzers/package-json.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAKH,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,oBAAoB,CAAC;AAI9C,qDAAqD;AACrD,MAAM,WAAW,SAAS;IACxB,QAAQ,CAAC,GAAG,EAAE,GAAG,CAAC;IAClB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,CAAC;CAC7B;AAqCD;;GAEG;AACH,wBAAgB,cAAc,CAAC,UAAU,EAAE,MAAM,GAAG,SAAS,EAAE,CAoC9D;AAgJD;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,WAAW,EAAE,MAAM,GAAG,SAAS,EAAE,CAuCnE"}
|
|
@@ -14,7 +14,6 @@ const DEPENDENCY_PATTERNS = [
|
|
|
14
14
|
{ packages: ["next"], tag: "WEB-REACT", evidence: "next.js in dependencies" },
|
|
15
15
|
{ packages: ["@remix-run/react"], tag: "WEB-REACT", evidence: "remix in dependencies" },
|
|
16
16
|
{ packages: ["express", "fastify", "koa", "hapi", "nestjs"], tag: "API", evidence: "HTTP framework in dependencies" },
|
|
17
|
-
{ packages: ["@modelcontextprotocol/sdk"], tag: "API", evidence: "MCP SDK in dependencies" },
|
|
18
17
|
{ packages: ["ethers", "web3", "viem", "@solana/web3.js"], tag: "WEB3", evidence: "blockchain library in dependencies" },
|
|
19
18
|
{ packages: ["socket.io", "ws", "pusher"], tag: "REALTIME", evidence: "WebSocket library in dependencies" },
|
|
20
19
|
{ packages: ["xstate", "robot3"], tag: "STATE-MACHINE", evidence: "state machine library in dependencies" },
|
|
@@ -24,13 +23,14 @@ const DEPENDENCY_PATTERNS = [
|
|
|
24
23
|
{ packages: ["@tensorflow/tfjs", "onnxruntime-node"], tag: "ML", evidence: "ML library in dependencies" },
|
|
25
24
|
{ packages: ["terraform-cdk", "pulumi", "@aws-cdk"], tag: "INFRA", evidence: "IaC library in dependencies" },
|
|
26
25
|
];
|
|
27
|
-
/** File patterns that indicate tags. */
|
|
26
|
+
/** File patterns that indicate tags. Optional confidence overrides the default 0.7. */
|
|
28
27
|
const FILE_PATTERNS = [
|
|
29
28
|
{ files: ["next.config.js", "next.config.mjs", "next.config.ts"], tag: "WEB-REACT", evidence: "next.config found" },
|
|
30
29
|
{ files: ["tsconfig.json"], tag: "LIBRARY", evidence: "TypeScript project" },
|
|
31
|
-
{ files: ["pyproject.toml", "setup.py", "setup.cfg"], tag: "API", evidence: "Python project config found" },
|
|
32
30
|
{ files: [".solhint.json", "hardhat.config.ts", "foundry.toml"], tag: "WEB3", evidence: "smart contract tooling found" },
|
|
33
|
-
|
|
31
|
+
// Docker alone is insufficient for INFRA — set below 0.6 threshold.
|
|
32
|
+
// IaC deps (terraform-cdk, pulumi, @aws-cdk) in DEPENDENCY_PATTERNS correctly trigger INFRA at 0.6+.
|
|
33
|
+
{ files: ["Dockerfile", "docker-compose.yml", "docker-compose.yaml"], tag: "INFRA", evidence: "Docker config found", confidence: 0.45 },
|
|
34
34
|
];
|
|
35
35
|
/**
|
|
36
36
|
* Analyze a project directory and detect likely tags from config files.
|
|
@@ -108,7 +108,7 @@ function analyzeFilePresence(projectDir) {
|
|
|
108
108
|
if (found.length > 0) {
|
|
109
109
|
detections.push({
|
|
110
110
|
tag: pattern.tag,
|
|
111
|
-
confidence: 0.7,
|
|
111
|
+
confidence: pattern.confidence ?? 0.7,
|
|
112
112
|
evidence: [pattern.evidence, `found: ${found.join(", ")}`],
|
|
113
113
|
});
|
|
114
114
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"package-json.js","sourceRoot":"","sources":["../../src/analyzers/package-json.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACnD,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAGzD,MAAM,MAAM,GAAG,YAAY,CAAC,wBAAwB,CAAC,CAAC;AAStD,sDAAsD;AACtD,MAAM,mBAAmB,GAIpB;IACH,EAAE,QAAQ,EAAE,CAAC,OAAO,EAAE,WAAW,CAAC,EAAE,GAAG,EAAE,WAAW,EAAE,QAAQ,EAAE,uBAAuB,EAAE;IACzF,EAAE,QAAQ,EAAE,CAAC,MAAM,CAAC,EAAE,GAAG,EAAE,WAAW,EAAE,QAAQ,EAAE,yBAAyB,EAAE;IAC7E,EAAE,QAAQ,EAAE,CAAC,kBAAkB,CAAC,EAAE,GAAG,EAAE,WAAW,EAAE,QAAQ,EAAE,uBAAuB,EAAE;IACvF,EAAE,QAAQ,EAAE,CAAC,SAAS,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,QAAQ,EAAE,gCAAgC,EAAE;IACrH,EAAE,QAAQ,EAAE,CAAC,
|
|
1
|
+
{"version":3,"file":"package-json.js","sourceRoot":"","sources":["../../src/analyzers/package-json.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Project context detector.
|
|
3
|
+
*
|
|
4
|
+
* Auto-fills RenderContext fields from the project filesystem and
|
|
5
|
+
* optional description. Resolves {{repo_url}}, {{framework}}, {{domain}},
|
|
6
|
+
* and {{sensitive_data}} placeholders that would otherwise remain unsubstituted.
|
|
7
|
+
*/
|
|
8
|
+
import type { RenderContext } from "../registry/renderer.js";
|
|
9
|
+
import type { Tag } from "../shared/types.js";
|
|
10
|
+
/**
|
|
11
|
+
* Detect project context from filesystem and optional description.
|
|
12
|
+
* Auto-fills RenderContext fields for template variable substitution.
|
|
13
|
+
* Falls back gracefully — returns partial context, never throws.
|
|
14
|
+
*
|
|
15
|
+
* @param projectDir - Absolute path to project root
|
|
16
|
+
* @param projectName - Known project name
|
|
17
|
+
* @param language - Detected language
|
|
18
|
+
* @param tags - Active tags
|
|
19
|
+
* @param description - Optional project description for domain extraction
|
|
20
|
+
* @returns Populated render context
|
|
21
|
+
*/
|
|
22
|
+
export declare function detectProjectContext(projectDir: string, projectName: string, language: string, tags: Tag[], description?: string): RenderContext;
|
|
23
|
+
//# sourceMappingURL=project-context.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"project-context.d.ts","sourceRoot":"","sources":["../../src/analyzers/project-context.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAMH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,oBAAoB,CAAC;AAI9C;;;;;;;;;;;GAWG;AACH,wBAAgB,oBAAoB,CAClC,UAAU,EAAE,MAAM,EAClB,WAAW,EAAE,MAAM,EACnB,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,GAAG,EAAE,EACX,WAAW,CAAC,EAAE,MAAM,GACnB,aAAa,CAuBf"}
|
|
@@ -0,0 +1,181 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Project context detector.
|
|
3
|
+
*
|
|
4
|
+
* Auto-fills RenderContext fields from the project filesystem and
|
|
5
|
+
* optional description. Resolves {{repo_url}}, {{framework}}, {{domain}},
|
|
6
|
+
* and {{sensitive_data}} placeholders that would otherwise remain unsubstituted.
|
|
7
|
+
*/
|
|
8
|
+
import { existsSync, readFileSync } from "node:fs";
|
|
9
|
+
import { execSync } from "node:child_process";
|
|
10
|
+
import { join } from "node:path";
|
|
11
|
+
import { createLogger } from "../shared/logger/index.js";
|
|
12
|
+
const logger = createLogger("analyzers/project-context");
|
|
13
|
+
/**
|
|
14
|
+
* Detect project context from filesystem and optional description.
|
|
15
|
+
* Auto-fills RenderContext fields for template variable substitution.
|
|
16
|
+
* Falls back gracefully — returns partial context, never throws.
|
|
17
|
+
*
|
|
18
|
+
* @param projectDir - Absolute path to project root
|
|
19
|
+
* @param projectName - Known project name
|
|
20
|
+
* @param language - Detected language
|
|
21
|
+
* @param tags - Active tags
|
|
22
|
+
* @param description - Optional project description for domain extraction
|
|
23
|
+
* @returns Populated render context
|
|
24
|
+
*/
|
|
25
|
+
export function detectProjectContext(projectDir, projectName, language, tags, description) {
|
|
26
|
+
const repoUrl = detectRepoUrl(projectDir);
|
|
27
|
+
const framework = detectFramework(projectDir, language);
|
|
28
|
+
const domain = description ?? undefined;
|
|
29
|
+
const sensitiveData = detectSensitiveData(tags);
|
|
30
|
+
logger.info("Project context detected", {
|
|
31
|
+
projectDir,
|
|
32
|
+
repoUrl: repoUrl ? "detected" : "not found",
|
|
33
|
+
framework: framework ?? "not detected",
|
|
34
|
+
hasDomain: !!domain,
|
|
35
|
+
sensitiveData,
|
|
36
|
+
});
|
|
37
|
+
return {
|
|
38
|
+
projectName,
|
|
39
|
+
language,
|
|
40
|
+
tags,
|
|
41
|
+
repoUrl,
|
|
42
|
+
framework,
|
|
43
|
+
domain,
|
|
44
|
+
sensitiveData,
|
|
45
|
+
};
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Detect the git remote URL for the project.
|
|
49
|
+
*/
|
|
50
|
+
function detectRepoUrl(projectDir) {
|
|
51
|
+
try {
|
|
52
|
+
const url = execSync("git remote get-url origin", {
|
|
53
|
+
cwd: projectDir,
|
|
54
|
+
timeout: 5_000,
|
|
55
|
+
encoding: "utf-8",
|
|
56
|
+
stdio: ["pipe", "pipe", "pipe"],
|
|
57
|
+
}).trim();
|
|
58
|
+
// Convert SSH URLs to HTTPS for display
|
|
59
|
+
if (url.startsWith("git@")) {
|
|
60
|
+
return url
|
|
61
|
+
.replace("git@", "https://")
|
|
62
|
+
.replace(":", "/")
|
|
63
|
+
.replace(/\.git$/, "");
|
|
64
|
+
}
|
|
65
|
+
return url.replace(/\.git$/, "");
|
|
66
|
+
}
|
|
67
|
+
catch {
|
|
68
|
+
return "";
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* Detect the primary framework from project config files.
|
|
73
|
+
*/
|
|
74
|
+
function detectFramework(projectDir, language) {
|
|
75
|
+
if (language === "typescript") {
|
|
76
|
+
return detectTypeScriptFramework(projectDir);
|
|
77
|
+
}
|
|
78
|
+
if (language === "python") {
|
|
79
|
+
return detectPythonFramework(projectDir);
|
|
80
|
+
}
|
|
81
|
+
return undefined;
|
|
82
|
+
}
|
|
83
|
+
/** Framework patterns for TypeScript/JavaScript projects. */
|
|
84
|
+
const TS_FRAMEWORK_PATTERNS = [
|
|
85
|
+
{ packages: ["next"], name: "Next.js" },
|
|
86
|
+
{ packages: ["@remix-run/react"], name: "Remix" },
|
|
87
|
+
{ packages: ["nuxt"], name: "Nuxt" },
|
|
88
|
+
{ packages: ["@angular/core"], name: "Angular" },
|
|
89
|
+
{ packages: ["vue"], name: "Vue" },
|
|
90
|
+
{ packages: ["svelte"], name: "Svelte" },
|
|
91
|
+
{ packages: ["fastify"], name: "Fastify" },
|
|
92
|
+
{ packages: ["express"], name: "Express" },
|
|
93
|
+
{ packages: ["nestjs", "@nestjs/core"], name: "NestJS" },
|
|
94
|
+
{ packages: ["hono"], name: "Hono" },
|
|
95
|
+
{ packages: ["react"], name: "React" },
|
|
96
|
+
];
|
|
97
|
+
/**
|
|
98
|
+
* Detect TypeScript framework from package.json dependencies.
|
|
99
|
+
*/
|
|
100
|
+
function detectTypeScriptFramework(projectDir) {
|
|
101
|
+
const pkgPath = join(projectDir, "package.json");
|
|
102
|
+
if (!existsSync(pkgPath)) {
|
|
103
|
+
return undefined;
|
|
104
|
+
}
|
|
105
|
+
try {
|
|
106
|
+
const content = readFileSync(pkgPath, "utf-8");
|
|
107
|
+
const pkg = JSON.parse(content);
|
|
108
|
+
const allDeps = {
|
|
109
|
+
...pkg["dependencies"],
|
|
110
|
+
...pkg["devDependencies"],
|
|
111
|
+
};
|
|
112
|
+
const depNames = Object.keys(allDeps);
|
|
113
|
+
for (const pattern of TS_FRAMEWORK_PATTERNS) {
|
|
114
|
+
if (pattern.packages.some((p) => depNames.includes(p))) {
|
|
115
|
+
return pattern.name;
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
catch {
|
|
120
|
+
// Invalid package.json — skip
|
|
121
|
+
}
|
|
122
|
+
return undefined;
|
|
123
|
+
}
|
|
124
|
+
/** Framework patterns for Python projects. */
|
|
125
|
+
const PY_FRAMEWORK_PATTERNS = [
|
|
126
|
+
{ keyword: "fastapi", name: "FastAPI" },
|
|
127
|
+
{ keyword: "django", name: "Django" },
|
|
128
|
+
{ keyword: "flask", name: "Flask" },
|
|
129
|
+
{ keyword: "streamlit", name: "Streamlit" },
|
|
130
|
+
{ keyword: "gradio", name: "Gradio" },
|
|
131
|
+
{ keyword: "pytorch", name: "PyTorch" },
|
|
132
|
+
{ keyword: "torch", name: "PyTorch" },
|
|
133
|
+
{ keyword: "tensorflow", name: "TensorFlow" },
|
|
134
|
+
{ keyword: "pandas", name: "Pandas" },
|
|
135
|
+
{ keyword: "prefect", name: "Prefect" },
|
|
136
|
+
{ keyword: "airflow", name: "Airflow" },
|
|
137
|
+
];
|
|
138
|
+
/**
|
|
139
|
+
* Detect Python framework from pyproject.toml or requirements.txt.
|
|
140
|
+
*/
|
|
141
|
+
function detectPythonFramework(projectDir) {
|
|
142
|
+
// Try pyproject.toml first
|
|
143
|
+
const pyprojectPath = join(projectDir, "pyproject.toml");
|
|
144
|
+
if (existsSync(pyprojectPath)) {
|
|
145
|
+
try {
|
|
146
|
+
const content = readFileSync(pyprojectPath, "utf-8").toLowerCase();
|
|
147
|
+
for (const pattern of PY_FRAMEWORK_PATTERNS) {
|
|
148
|
+
if (content.includes(pattern.keyword)) {
|
|
149
|
+
return pattern.name;
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
catch {
|
|
154
|
+
// skip
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
// Try requirements.txt
|
|
158
|
+
const reqPath = join(projectDir, "requirements.txt");
|
|
159
|
+
if (existsSync(reqPath)) {
|
|
160
|
+
try {
|
|
161
|
+
const content = readFileSync(reqPath, "utf-8").toLowerCase();
|
|
162
|
+
for (const pattern of PY_FRAMEWORK_PATTERNS) {
|
|
163
|
+
if (content.includes(pattern.keyword)) {
|
|
164
|
+
return pattern.name;
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
catch {
|
|
169
|
+
// skip
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
return undefined;
|
|
173
|
+
}
|
|
174
|
+
/**
|
|
175
|
+
* Determine sensitive data flag from active tags.
|
|
176
|
+
*/
|
|
177
|
+
function detectSensitiveData(tags) {
|
|
178
|
+
const sensitiveTags = ["HEALTHCARE", "HIPAA", "FINTECH", "SOC2"];
|
|
179
|
+
return tags.some((t) => sensitiveTags.includes(t)) ? "YES" : "NO";
|
|
180
|
+
}
|
|
181
|
+
//# sourceMappingURL=project-context.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"project-context.js","sourceRoot":"","sources":["../../src/analyzers/project-context.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -9,42 +9,19 @@ import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
|
|
|
9
9
|
import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
|
|
10
10
|
import { createLogger } from "./shared/logger/index.js";
|
|
11
11
|
// ── Tool imports ─────────────────────────────────────────────────────
|
|
12
|
-
import { listTagsSchema, listTagsHandler, listHooksSchema, listHooksHandler, } from "./tools/list.js";
|
|
13
|
-
import { classifyProjectSchema, classifyProjectHandler, } from "./tools/classify.js";
|
|
14
|
-
import { scaffoldProjectSchema, scaffoldProjectHandler, } from "./tools/scaffold.js";
|
|
15
|
-
import { generateInstructionsSchema, generateInstructionsHandler, } from "./tools/generate-claude-md.js";
|
|
16
|
-
import { auditProjectSchema, auditProjectHandler, } from "./tools/audit.js";
|
|
17
|
-
import { addHookSchema, addHookHandler, } from "./tools/add-hook.js";
|
|
18
|
-
import { addModuleSchema, addModuleHandler, } from "./tools/add-module.js";
|
|
19
|
-
import { configureMcpSchema, configureMcpHandler, } from "./tools/configure-mcp.js";
|
|
20
|
-
import { getNfrTemplateSchema, getNfrTemplateHandler, } from "./tools/get-nfr.js";
|
|
21
|
-
import { convertExistingSchema, convertExistingHandler, } from "./tools/convert.js";
|
|
22
|
-
import { reviewProjectSchema, reviewProjectHandler, } from "./tools/review.js";
|
|
23
12
|
import { setupProjectSchema, setupProjectHandler, } from "./tools/setup-project.js";
|
|
24
|
-
import {
|
|
13
|
+
import { forgecraftSchema, forgecraftHandler, } from "./tools/forgecraft-router.js";
|
|
25
14
|
// ── Server Setup ─────────────────────────────────────────────────────
|
|
26
15
|
const logger = createLogger("server");
|
|
27
16
|
async function main() {
|
|
28
17
|
logger.info("Starting ForgeCraft MCP server");
|
|
29
18
|
const server = new McpServer({
|
|
30
19
|
name: "forgecraft",
|
|
31
|
-
version: "0.
|
|
20
|
+
version: "0.4.0",
|
|
32
21
|
});
|
|
33
|
-
// ── Register Tools
|
|
34
|
-
server.tool("list_tags", "List all available project classification tags with descriptions.", listTagsSchema.shape, listTagsHandler);
|
|
35
|
-
server.tool("list_hooks", "List available hooks, optionally filtered by tags.", listHooksSchema.shape, listHooksHandler);
|
|
36
|
-
server.tool("classify_project", "Analyze a project directory and/or description to suggest classification tags.", classifyProjectSchema.shape, classifyProjectHandler);
|
|
37
|
-
server.tool("scaffold_project", "Generate full project structure (instruction files, Status.md, hooks, folders) from tags. Supports multiple AI assistant targets.", scaffoldProjectSchema.shape, scaffoldProjectHandler);
|
|
38
|
-
server.tool("generate_instructions", "Generate AI assistant instruction files for given tags. Supports multiple targets: Claude (CLAUDE.md), Cursor (.cursor/rules/), GitHub Copilot (.github/copilot-instructions.md), Windsurf (.windsurfrules), Cline (.clinerules), Aider (CONVENTIONS.md). Adds SOLID principles, testing pyramid, architecture patterns, CI/CD, and domain-specific standards from 112 curated blocks. Can merge with existing files to preserve custom sections.", generateInstructionsSchema.shape, generateInstructionsHandler);
|
|
39
|
-
server.tool("audit_project", "Audit project against template standards and report violations with a score.", auditProjectSchema.shape, auditProjectHandler);
|
|
40
|
-
server.tool("add_hook", "Add a specific quality-gate hook script to the project.", addHookSchema.shape, addHookHandler);
|
|
41
|
-
server.tool("add_module", "Scaffold a new feature module following established patterns.", addModuleSchema.shape, addModuleHandler);
|
|
42
|
-
server.tool("configure_mcp", "Generate .claude/settings.json with recommended MCP servers for active tags.", configureMcpSchema.shape, configureMcpHandler);
|
|
43
|
-
server.tool("get_nfr_template", "Get NFR (Non-Functional Requirement) sections for specific tags.", getNfrTemplateSchema.shape, getNfrTemplateHandler);
|
|
44
|
-
server.tool("convert_existing", "Analyze an existing codebase and generate a phased migration plan.", convertExistingSchema.shape, convertExistingHandler);
|
|
45
|
-
server.tool("review_project", "Generate a structured code review checklist for active tags. Covers architecture, code quality, tests, and performance with per-issue guidance format.", reviewProjectSchema.shape, reviewProjectHandler);
|
|
22
|
+
// ── Register Tools (2 only — minimizes per-request token overhead) ──
|
|
46
23
|
server.tool("setup_project", "RECOMMENDED FIRST STEP — generates production-grade AI assistant instruction files from 112 curated template blocks. Supports Claude, Cursor, Copilot, Windsurf, Cline, and Aider. Analyzes project, auto-detects tags from code/dependencies, creates forgecraft.yaml config, and adds engineering standards (SOLID, testing pyramid, architecture patterns, CI/CD, domain rules). Works for new and existing projects. Supports tier-based content filtering (core/recommended/optional).", setupProjectSchema.shape, setupProjectHandler);
|
|
47
|
-
server.tool("
|
|
24
|
+
server.tool("forgecraft", "Execute ForgeCraft operations. Actions: refresh (re-sync after changes), scaffold (generate project structure), generate (instruction files only), audit (check standards), review (code review checklist), list (discover tags/hooks/skills via resource param), classify (suggest tags), add_hook, add_module, configure_mcp (MCP server settings), get_reference (design patterns/NFR via resource param), convert (migration plan). Use setup_project for first-time setup instead.", forgecraftSchema.shape, forgecraftHandler);
|
|
48
25
|
// ── Start Stdio Transport ────────────────────────────────────────
|
|
49
26
|
const transport = new StdioServerTransport();
|
|
50
27
|
await server.connect(transport);
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA;;;;;GAKG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAExD,wEAAwE;AACxE,OAAO,EACL,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA;;;;;GAKG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAExD,wEAAwE;AACxE,OAAO,EACL,kBAAkB,EAClB,mBAAmB,GACpB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EACL,gBAAgB,EAChB,iBAAiB,GAClB,MAAM,8BAA8B,CAAC;AAEtC,wEAAwE;AAExE,MAAM,MAAM,GAAG,YAAY,CAAC,QAAQ,CAAC,CAAC;AAEtC,KAAK,UAAU,IAAI;IACjB,MAAM,CAAC,IAAI,CAAC,gCAAgC,CAAC,CAAC;IAE9C,MAAM,MAAM,GAAG,IAAI,SAAS,CAAC;QAC3B,IAAI,EAAE,YAAY;QAClB,OAAO,EAAE,OAAO;KACjB,CAAC,CAAC;IAEH,uEAAuE;IAEvE,MAAM,CAAC,IAAI,CACT,eAAe,EACf,6dAA6d,EAC7d,kBAAkB,CAAC,KAAK,EACxB,mBAAmB,CACpB,CAAC;IAEF,MAAM,CAAC,IAAI,CACT,YAAY,EACZ,ydAAyd,EACzd,gBAAgB,CAAC,KAAK,EACtB,iBAAiB,CAClB,CAAC;IAEF,oEAAoE;IAEpE,MAAM,SAAS,GAAG,IAAI,oBAAoB,EAAE,CAAC;IAC7C,MAAM,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IAEhC,MAAM,CAAC,IAAI,CAAC,wCAAwC,CAAC,CAAC;AACxD,CAAC;AAED,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;IACrB,MAAM,CAAC,KAAK,CAAC,oBAAoB,EAAE;QACjC,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;KAC9D,CAAC,CAAC;IACH,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
|
|
@@ -5,14 +5,16 @@
|
|
|
5
5
|
* hooks, and NFRs from all matching templates into unified outputs.
|
|
6
6
|
* Handles merge, deduplication, ordering, and tier-based filtering.
|
|
7
7
|
*/
|
|
8
|
-
import type { Tag, TagTemplateSet, InstructionBlock, StructureEntry, NfrBlock, HookTemplate, ReviewBlock, ForgeCraftConfig } from "../shared/types.js";
|
|
8
|
+
import type { Tag, TagTemplateSet, InstructionBlock, StructureEntry, NfrBlock, HookTemplate, SkillTemplate, ReviewBlock, ReferenceBlock, ForgeCraftConfig } from "../shared/types.js";
|
|
9
9
|
/** Composed output for a set of active tags. */
|
|
10
10
|
export interface ComposedTemplates {
|
|
11
11
|
readonly instructionBlocks: InstructionBlock[];
|
|
12
12
|
readonly structureEntries: StructureEntry[];
|
|
13
13
|
readonly nfrBlocks: NfrBlock[];
|
|
14
14
|
readonly hooks: HookTemplate[];
|
|
15
|
+
readonly skills: SkillTemplate[];
|
|
15
16
|
readonly reviewBlocks: ReviewBlock[];
|
|
17
|
+
readonly referenceBlocks: ReferenceBlock[];
|
|
16
18
|
/**
|
|
17
19
|
* @deprecated Use `instructionBlocks` instead. Alias for backward compatibility.
|
|
18
20
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"composer.d.ts","sourceRoot":"","sources":["../../src/registry/composer.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,KAAK,EACV,GAAG,EACH,cAAc,EACd,gBAAgB,EAChB,cAAc,EACd,QAAQ,EACR,YAAY,EACZ,WAAW,
|
|
1
|
+
{"version":3,"file":"composer.d.ts","sourceRoot":"","sources":["../../src/registry/composer.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,KAAK,EACV,GAAG,EACH,cAAc,EACd,gBAAgB,EAChB,cAAc,EACd,QAAQ,EACR,YAAY,EACZ,aAAa,EACb,WAAW,EACX,cAAc,EAEd,gBAAgB,EACjB,MAAM,oBAAoB,CAAC;AAoB5B,gDAAgD;AAChD,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,iBAAiB,EAAE,gBAAgB,EAAE,CAAC;IAC/C,QAAQ,CAAC,gBAAgB,EAAE,cAAc,EAAE,CAAC;IAC5C,QAAQ,CAAC,SAAS,EAAE,QAAQ,EAAE,CAAC;IAC/B,QAAQ,CAAC,KAAK,EAAE,YAAY,EAAE,CAAC;IAC/B,QAAQ,CAAC,MAAM,EAAE,aAAa,EAAE,CAAC;IACjC,QAAQ,CAAC,YAAY,EAAE,WAAW,EAAE,CAAC;IACrC,QAAQ,CAAC,eAAe,EAAE,cAAc,EAAE,CAAC;IAC3C;;OAEG;IACH,QAAQ,CAAC,cAAc,EAAE,gBAAgB,EAAE,CAAC;CAC7C;AAED,oDAAoD;AACpD,MAAM,WAAW,cAAc;IAC7B,2EAA2E;IAC3E,QAAQ,CAAC,MAAM,CAAC,EAAE,gBAAgB,CAAC;CACpC;AAwCD;;;;;;;;GAQG;AACH,wBAAgB,gBAAgB,CAC9B,UAAU,EAAE,GAAG,EAAE,EACjB,YAAY,EAAE,GAAG,CAAC,GAAG,EAAE,cAAc,CAAC,EACtC,OAAO,CAAC,EAAE,cAAc,GACvB,iBAAiB,CAgJnB"}
|
|
@@ -71,12 +71,16 @@ export function composeTemplates(activeTags, allTemplates, options) {
|
|
|
71
71
|
const structureEntries = [];
|
|
72
72
|
const nfrBlocks = [];
|
|
73
73
|
const hooks = [];
|
|
74
|
+
const skills = [];
|
|
74
75
|
const reviewBlocks = [];
|
|
76
|
+
const referenceBlocks = [];
|
|
75
77
|
const seenBlockIds = new Set();
|
|
76
78
|
const seenPaths = new Set();
|
|
77
79
|
const seenHookNames = new Set();
|
|
80
|
+
const seenSkillIds = new Set();
|
|
78
81
|
const seenNfrIds = new Set();
|
|
79
82
|
const seenReviewIds = new Set();
|
|
83
|
+
const seenReferenceIds = new Set();
|
|
80
84
|
for (const tag of orderedTags) {
|
|
81
85
|
const templateSet = allTemplates.get(tag);
|
|
82
86
|
if (!templateSet) {
|
|
@@ -124,6 +128,17 @@ export function composeTemplates(activeTags, allTemplates, options) {
|
|
|
124
128
|
}
|
|
125
129
|
}
|
|
126
130
|
}
|
|
131
|
+
// Compose skills (deduplicate by id, filter by tier)
|
|
132
|
+
if (templateSet.skills) {
|
|
133
|
+
for (const skill of templateSet.skills) {
|
|
134
|
+
if (!seenSkillIds.has(skill.id) &&
|
|
135
|
+
isTierAllowed(skill.tier, allowedTiers) &&
|
|
136
|
+
isBlockAllowed(skill.id, includeList, excludeList)) {
|
|
137
|
+
seenSkillIds.add(skill.id);
|
|
138
|
+
skills.push(skill);
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
}
|
|
127
142
|
// Compose review blocks (deduplicate by id, filter by tier)
|
|
128
143
|
if (templateSet.review?.blocks) {
|
|
129
144
|
for (const block of templateSet.review.blocks) {
|
|
@@ -135,6 +150,15 @@ export function composeTemplates(activeTags, allTemplates, options) {
|
|
|
135
150
|
}
|
|
136
151
|
}
|
|
137
152
|
}
|
|
153
|
+
// Compose reference blocks (deduplicate by id — no tier filtering, always available on demand)
|
|
154
|
+
if (templateSet.reference?.blocks) {
|
|
155
|
+
for (const block of templateSet.reference.blocks) {
|
|
156
|
+
if (!seenReferenceIds.has(block.id)) {
|
|
157
|
+
seenReferenceIds.add(block.id);
|
|
158
|
+
referenceBlocks.push(block);
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
}
|
|
138
162
|
}
|
|
139
163
|
logger.info("Templates composed", {
|
|
140
164
|
tags: orderedTags,
|
|
@@ -143,14 +167,18 @@ export function composeTemplates(activeTags, allTemplates, options) {
|
|
|
143
167
|
structureEntries: structureEntries.length,
|
|
144
168
|
nfrBlocks: nfrBlocks.length,
|
|
145
169
|
hooks: hooks.length,
|
|
170
|
+
skills: skills.length,
|
|
146
171
|
reviewBlocks: reviewBlocks.length,
|
|
172
|
+
referenceBlocks: referenceBlocks.length,
|
|
147
173
|
});
|
|
148
174
|
return {
|
|
149
175
|
instructionBlocks,
|
|
150
176
|
structureEntries,
|
|
151
177
|
nfrBlocks,
|
|
152
178
|
hooks,
|
|
179
|
+
skills,
|
|
153
180
|
reviewBlocks,
|
|
181
|
+
referenceBlocks,
|
|
154
182
|
// Backward-compat alias
|
|
155
183
|
claudeMdBlocks: instructionBlocks,
|
|
156
184
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"composer.js","sourceRoot":"","sources":["../../src/registry/composer.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;
|
|
1
|
+
{"version":3,"file":"composer.js","sourceRoot":"","sources":["../../src/registry/composer.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"loader.d.ts","sourceRoot":"","sources":["../../src/registry/loader.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAQH,OAAO,KAAK,EACV,GAAG,EACH,cAAc,
|
|
1
|
+
{"version":3,"file":"loader.d.ts","sourceRoot":"","sources":["../../src/registry/loader.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAQH,OAAO,KAAK,EACV,GAAG,EACH,cAAc,EASd,gBAAgB,EACjB,MAAM,oBAAoB,CAAC;AAkB5B;;;GAGG;AACH,wBAAgB,mBAAmB,IAAI,MAAM,CAuB5C;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAC9B,YAAY,CAAC,EAAE,MAAM,GACpB,GAAG,CAAC,GAAG,EAAE,cAAc,CAAC,CA0B1B;AAkID;;GAEG;AACH,wBAAgB,YAAY,CAAC,GAAG,EAAE,GAAG,GAAG,MAAM,CAE7C;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,CAC/B,UAAU,EAAE,MAAM,GACjB,gBAAgB,GAAG,IAAI,CA4BzB;AAED;;;;;;;GAOG;AACH,wBAAgB,0BAA0B,CACxC,UAAU,CAAC,EAAE,MAAM,EACnB,SAAS,CAAC,EAAE,MAAM,EAAE,GACnB,GAAG,CAAC,GAAG,EAAE,cAAc,CAAC,CA0C1B"}
|