forgecraft-mcp 0.1.0 → 0.2.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/README.md +16 -14
- package/dist/analyzers/completeness.js +29 -1
- package/dist/analyzers/completeness.js.map +1 -1
- package/dist/index.js +5 -5
- package/dist/index.js.map +1 -1
- package/dist/registry/composer.d.ts +6 -2
- package/dist/registry/composer.d.ts.map +1 -1
- package/dist/registry/composer.js +16 -7
- package/dist/registry/composer.js.map +1 -1
- package/dist/registry/loader.d.ts.map +1 -1
- package/dist/registry/loader.js +16 -9
- package/dist/registry/loader.js.map +1 -1
- package/dist/registry/renderer.d.ts +14 -4
- package/dist/registry/renderer.d.ts.map +1 -1
- package/dist/registry/renderer.js +41 -12
- package/dist/registry/renderer.js.map +1 -1
- package/dist/shared/types.d.ts +54 -7
- package/dist/shared/types.d.ts.map +1 -1
- package/dist/shared/types.js +71 -0
- package/dist/shared/types.js.map +1 -1
- package/dist/tools/audit.js +2 -2
- package/dist/tools/audit.js.map +1 -1
- package/dist/tools/convert.js +2 -2
- package/dist/tools/convert.js.map +1 -1
- package/dist/tools/generate-claude-md.d.ts +29 -3
- package/dist/tools/generate-claude-md.d.ts.map +1 -1
- package/dist/tools/generate-claude-md.js +58 -27
- package/dist/tools/generate-claude-md.js.map +1 -1
- package/dist/tools/refresh-project.d.ts +3 -0
- package/dist/tools/refresh-project.d.ts.map +1 -1
- package/dist/tools/refresh-project.js +22 -10
- package/dist/tools/refresh-project.js.map +1 -1
- package/dist/tools/scaffold.d.ts +3 -0
- package/dist/tools/scaffold.d.ts.map +1 -1
- package/dist/tools/scaffold.js +20 -8
- package/dist/tools/scaffold.js.map +1 -1
- package/dist/tools/setup-project.d.ts +3 -0
- package/dist/tools/setup-project.d.ts.map +1 -1
- package/dist/tools/setup-project.js +58 -31
- package/dist/tools/setup-project.js.map +1 -1
- package/package.json +1 -1
- package/templates/analytics/{claude-md.yaml → instructions.yaml} +1 -1
- package/templates/api/{claude-md.yaml → instructions.yaml} +1 -1
- package/templates/cli/{claude-md.yaml → instructions.yaml} +1 -1
- package/templates/data-pipeline/{claude-md.yaml → instructions.yaml} +1 -1
- package/templates/fintech/{claude-md.yaml → instructions.yaml} +1 -1
- package/templates/game/{claude-md.yaml → instructions.yaml} +1 -1
- package/templates/healthcare/{claude-md.yaml → instructions.yaml} +1 -1
- package/templates/infra/{claude-md.yaml → instructions.yaml} +1 -1
- package/templates/library/{claude-md.yaml → instructions.yaml} +1 -1
- package/templates/ml/{claude-md.yaml → instructions.yaml} +1 -1
- package/templates/mobile/{claude-md.yaml → instructions.yaml} +1 -1
- package/templates/realtime/{claude-md.yaml → instructions.yaml} +1 -1
- package/templates/social/{claude-md.yaml → instructions.yaml} +1 -1
- package/templates/state-machine/{claude-md.yaml → instructions.yaml} +1 -1
- package/templates/universal/hooks.yaml +1 -1
- package/templates/universal/{claude-md.yaml → instructions.yaml} +3 -3
- package/templates/web-react/{claude-md.yaml → instructions.yaml} +1 -1
- package/templates/web-static/{claude-md.yaml → instructions.yaml} +1 -1
- package/templates/web3/{claude-md.yaml → instructions.yaml} +1 -1
package/dist/shared/types.d.ts
CHANGED
|
@@ -73,19 +73,60 @@ export interface HookInfo {
|
|
|
73
73
|
export type ContentTier = "core" | "recommended" | "optional";
|
|
74
74
|
/** All valid content tiers as a constant array for schema validation. */
|
|
75
75
|
export declare const CONTENT_TIERS: readonly ContentTier[];
|
|
76
|
-
/**
|
|
77
|
-
|
|
76
|
+
/**
|
|
77
|
+
* Supported AI assistant output targets.
|
|
78
|
+
* Each target maps to a specific instruction file format.
|
|
79
|
+
*/
|
|
80
|
+
export declare const ALL_OUTPUT_TARGETS: readonly ["claude", "cursor", "copilot", "windsurf", "cline", "aider"];
|
|
81
|
+
export type OutputTarget = (typeof ALL_OUTPUT_TARGETS)[number];
|
|
82
|
+
/** Configuration for a specific output target. */
|
|
83
|
+
export interface OutputTargetConfig {
|
|
84
|
+
/** Target identifier. */
|
|
85
|
+
readonly target: OutputTarget;
|
|
86
|
+
/** Output filename (e.g., "CLAUDE.md", ".cursorrules"). */
|
|
87
|
+
readonly filename: string;
|
|
88
|
+
/** Subdirectory relative to project root, if any (e.g., ".github" for copilot, ".cursor/rules" for cursor). */
|
|
89
|
+
readonly directory?: string;
|
|
90
|
+
/** Heading used at the top of the generated file. */
|
|
91
|
+
readonly heading: string;
|
|
92
|
+
/** Human-readable display name for the AI tool. */
|
|
93
|
+
readonly displayName: string;
|
|
94
|
+
/** Whether the target uses frontmatter metadata (e.g., Cursor .mdc files). */
|
|
95
|
+
readonly usesFrontmatter?: boolean;
|
|
96
|
+
}
|
|
97
|
+
/** Registry of all supported output target configurations. */
|
|
98
|
+
export declare const OUTPUT_TARGET_CONFIGS: Record<OutputTarget, OutputTargetConfig>;
|
|
99
|
+
/** Default output target when none specified. */
|
|
100
|
+
export declare const DEFAULT_OUTPUT_TARGET: OutputTarget;
|
|
101
|
+
/**
|
|
102
|
+
* Resolve the full output file path for a target relative to project root.
|
|
103
|
+
*
|
|
104
|
+
* @param projectDir - Absolute path to project root
|
|
105
|
+
* @param target - The output target
|
|
106
|
+
* @returns Absolute path to the instruction file
|
|
107
|
+
*/
|
|
108
|
+
export declare function resolveOutputPath(projectDir: string, target: OutputTarget): string;
|
|
109
|
+
/** An instruction content block from a template. */
|
|
110
|
+
export interface InstructionBlock {
|
|
78
111
|
readonly id: string;
|
|
79
112
|
readonly title: string;
|
|
80
113
|
readonly content: string;
|
|
81
114
|
readonly tier?: ContentTier;
|
|
82
115
|
}
|
|
83
|
-
/** A template YAML file structure for
|
|
84
|
-
export interface
|
|
116
|
+
/** A template YAML file structure for instruction content. */
|
|
117
|
+
export interface InstructionTemplate {
|
|
85
118
|
readonly tag: Tag;
|
|
86
|
-
readonly section: "
|
|
87
|
-
readonly blocks:
|
|
119
|
+
readonly section: "instructions";
|
|
120
|
+
readonly blocks: InstructionBlock[];
|
|
88
121
|
}
|
|
122
|
+
/**
|
|
123
|
+
* @deprecated Use InstructionBlock instead. Alias kept for backward compatibility.
|
|
124
|
+
*/
|
|
125
|
+
export type ClaudeMdBlock = InstructionBlock;
|
|
126
|
+
/**
|
|
127
|
+
* @deprecated Use InstructionTemplate instead. Alias kept for backward compatibility.
|
|
128
|
+
*/
|
|
129
|
+
export type ClaudeMdTemplate = InstructionTemplate;
|
|
89
130
|
/** A folder/file entry in a structure template. */
|
|
90
131
|
export interface StructureEntry {
|
|
91
132
|
readonly path: string;
|
|
@@ -160,11 +201,15 @@ export interface ReviewDimensionOutput {
|
|
|
160
201
|
/** Complete template set for a tag. */
|
|
161
202
|
export interface TagTemplateSet {
|
|
162
203
|
readonly tag: Tag;
|
|
163
|
-
readonly
|
|
204
|
+
readonly instructions?: InstructionTemplate;
|
|
164
205
|
readonly nfr?: NfrTemplate;
|
|
165
206
|
readonly structure?: StructureTemplate;
|
|
166
207
|
readonly hooks?: HookTemplate[];
|
|
167
208
|
readonly review?: ReviewTemplate;
|
|
209
|
+
/**
|
|
210
|
+
* @deprecated Use `instructions` instead. Alias kept for backward compatibility.
|
|
211
|
+
*/
|
|
212
|
+
readonly claudeMd?: InstructionTemplate;
|
|
168
213
|
}
|
|
169
214
|
/** Module scaffold configuration. */
|
|
170
215
|
export interface ModuleConfig {
|
|
@@ -186,6 +231,8 @@ export interface ForgeCraftConfig {
|
|
|
186
231
|
readonly tags?: Tag[];
|
|
187
232
|
/** Content tier preference: which tiers to auto-include. */
|
|
188
233
|
readonly tier?: ContentTier;
|
|
234
|
+
/** Output targets: which AI assistant instruction files to generate. Defaults to ['claude']. */
|
|
235
|
+
readonly outputTargets?: OutputTarget[];
|
|
189
236
|
/** Specific block IDs to always include regardless of tier. */
|
|
190
237
|
readonly include?: string[];
|
|
191
238
|
/** Specific block IDs to always exclude regardless of tier. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/shared/types.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,iDAAiD;AACjD,eAAO,MAAM,QAAQ,mNAmBX,CAAC;AAEX,MAAM,MAAM,GAAG,GAAG,CAAC,OAAO,QAAQ,CAAC,CAAC,MAAM,CAAC,CAAC;AAE5C,6CAA6C;AAC7C,MAAM,WAAW,OAAO;IACtB,QAAQ,CAAC,GAAG,EAAE,GAAG,CAAC;IAClB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;CAC9B;AAED,iDAAiD;AACjD,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,aAAa,EAAE,GAAG,EAAE,CAAC;IAC9B,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAC/B,MAAM,EACN;QAAE,UAAU,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,EAAE,CAAA;KAAE,CAC3C,CAAC;IACF,QAAQ,CAAC,uBAAuB,EAAE,MAAM,CACtC,MAAM,EACN;QAAE,UAAU,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,EAAE,CAAA;KAAE,CAC3C,CAAC;IACF,QAAQ,CAAC,aAAa,EAAE,SAAS,GAAG,EAAE,CAAC;IACvC,QAAQ,CAAC,oBAAoB,EAAE,OAAO,CAAC;CACxC;AAED,+CAA+C;AAC/C,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC;IACrB,QAAQ,CAAC,QAAQ,EAAE,YAAY,GAAG,QAAQ,CAAC;IAC3C,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,gBAAgB,CAAC,EAAE,OAAO,CAAC;IACpC,QAAQ,CAAC,WAAW,CAAC,EAAE,gBAAgB,GAAG,MAAM,CAAC;IACjD,QAAQ,CAAC,aAAa,CAAC,EAAE,OAAO,CAAC;CAClC;AAED,sCAAsC;AACtC,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,YAAY,EAAE,MAAM,EAAE,CAAC;IAChC,QAAQ,CAAC,oBAAoB,EAAE,MAAM,EAAE,CAAC;IACxC,QAAQ,CAAC,SAAS,EAAE,MAAM,EAAE,CAAC;IAC7B,QAAQ,CAAC,eAAe,EAAE,OAAO,CAAC;CACnC;AAED,iCAAiC;AACjC,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,OAAO,EAAE,UAAU,EAAE,CAAC;IAC/B,QAAQ,CAAC,OAAO,EAAE,UAAU,EAAE,CAAC;IAC/B,QAAQ,CAAC,eAAe,EAAE,MAAM,EAAE,CAAC;CACpC;AAED,mCAAmC;AACnC,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,GAAG,SAAS,GAAG,MAAM,CAAC;CAClD;AAED,2CAA2C;AAC3C,MAAM,WAAW,QAAQ;IACvB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,GAAG,EAAE,GAAG,CAAC;IAClB,QAAQ,CAAC,OAAO,EAAE,YAAY,GAAG,UAAU,GAAG,UAAU,CAAC;IACzD,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;CAC3B;AAED;;;;;GAKG;AACH,MAAM,MAAM,WAAW,GAAG,MAAM,GAAG,aAAa,GAAG,UAAU,CAAC;AAE9D,yEAAyE;AACzE,eAAO,MAAM,aAAa,EAAE,SAAS,WAAW,EAAiD,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/shared/types.ts"],"names":[],"mappings":"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"}
|
package/dist/shared/types.js
CHANGED
|
@@ -27,4 +27,75 @@ export const ALL_TAGS = [
|
|
|
27
27
|
];
|
|
28
28
|
/** All valid content tiers as a constant array for schema validation. */
|
|
29
29
|
export const CONTENT_TIERS = ["core", "recommended", "optional"];
|
|
30
|
+
// ── Output Targets ───────────────────────────────────────────────────
|
|
31
|
+
/**
|
|
32
|
+
* Supported AI assistant output targets.
|
|
33
|
+
* Each target maps to a specific instruction file format.
|
|
34
|
+
*/
|
|
35
|
+
export const ALL_OUTPUT_TARGETS = [
|
|
36
|
+
"claude",
|
|
37
|
+
"cursor",
|
|
38
|
+
"copilot",
|
|
39
|
+
"windsurf",
|
|
40
|
+
"cline",
|
|
41
|
+
"aider",
|
|
42
|
+
];
|
|
43
|
+
/** Registry of all supported output target configurations. */
|
|
44
|
+
export const OUTPUT_TARGET_CONFIGS = {
|
|
45
|
+
claude: {
|
|
46
|
+
target: "claude",
|
|
47
|
+
filename: "CLAUDE.md",
|
|
48
|
+
heading: "# CLAUDE.md",
|
|
49
|
+
displayName: "Claude Code",
|
|
50
|
+
},
|
|
51
|
+
cursor: {
|
|
52
|
+
target: "cursor",
|
|
53
|
+
filename: "project-standards.mdc",
|
|
54
|
+
directory: ".cursor/rules",
|
|
55
|
+
heading: "# Project Standards",
|
|
56
|
+
displayName: "Cursor",
|
|
57
|
+
usesFrontmatter: true,
|
|
58
|
+
},
|
|
59
|
+
copilot: {
|
|
60
|
+
target: "copilot",
|
|
61
|
+
filename: "copilot-instructions.md",
|
|
62
|
+
directory: ".github",
|
|
63
|
+
heading: "# Copilot Instructions",
|
|
64
|
+
displayName: "GitHub Copilot",
|
|
65
|
+
},
|
|
66
|
+
windsurf: {
|
|
67
|
+
target: "windsurf",
|
|
68
|
+
filename: ".windsurfrules",
|
|
69
|
+
heading: "# Windsurf Rules",
|
|
70
|
+
displayName: "Windsurf",
|
|
71
|
+
},
|
|
72
|
+
cline: {
|
|
73
|
+
target: "cline",
|
|
74
|
+
filename: ".clinerules",
|
|
75
|
+
heading: "# Cline Rules",
|
|
76
|
+
displayName: "Cline",
|
|
77
|
+
},
|
|
78
|
+
aider: {
|
|
79
|
+
target: "aider",
|
|
80
|
+
filename: "CONVENTIONS.md",
|
|
81
|
+
heading: "# CONVENTIONS.md",
|
|
82
|
+
displayName: "Aider",
|
|
83
|
+
},
|
|
84
|
+
};
|
|
85
|
+
/** Default output target when none specified. */
|
|
86
|
+
export const DEFAULT_OUTPUT_TARGET = "claude";
|
|
87
|
+
/**
|
|
88
|
+
* Resolve the full output file path for a target relative to project root.
|
|
89
|
+
*
|
|
90
|
+
* @param projectDir - Absolute path to project root
|
|
91
|
+
* @param target - The output target
|
|
92
|
+
* @returns Absolute path to the instruction file
|
|
93
|
+
*/
|
|
94
|
+
export function resolveOutputPath(projectDir, target) {
|
|
95
|
+
const config = OUTPUT_TARGET_CONFIGS[target];
|
|
96
|
+
if (config.directory) {
|
|
97
|
+
return `${projectDir}/${config.directory}/${config.filename}`;
|
|
98
|
+
}
|
|
99
|
+
return `${projectDir}/${config.filename}`;
|
|
100
|
+
}
|
|
30
101
|
//# sourceMappingURL=types.js.map
|
package/dist/shared/types.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/shared/types.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,iDAAiD;AACjD,MAAM,CAAC,MAAM,QAAQ,GAAG;IACtB,WAAW;IACX,WAAW;IACX,YAAY;IACZ,KAAK;IACL,eAAe;IACf,IAAI;IACJ,YAAY;IACZ,SAAS;IACT,MAAM;IACN,UAAU;IACV,eAAe;IACf,MAAM;IACN,QAAQ;IACR,KAAK;IACL,SAAS;IACT,OAAO;IACP,QAAQ;IACR,WAAW;CACH,CAAC;AA4EX,yEAAyE;AACzE,MAAM,CAAC,MAAM,aAAa,GAA2B,CAAC,MAAM,EAAE,aAAa,EAAE,UAAU,CAAU,CAAC"}
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/shared/types.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,iDAAiD;AACjD,MAAM,CAAC,MAAM,QAAQ,GAAG;IACtB,WAAW;IACX,WAAW;IACX,YAAY;IACZ,KAAK;IACL,eAAe;IACf,IAAI;IACJ,YAAY;IACZ,SAAS;IACT,MAAM;IACN,UAAU;IACV,eAAe;IACf,MAAM;IACN,QAAQ;IACR,KAAK;IACL,SAAS;IACT,OAAO;IACP,QAAQ;IACR,WAAW;CACH,CAAC;AA4EX,yEAAyE;AACzE,MAAM,CAAC,MAAM,aAAa,GAA2B,CAAC,MAAM,EAAE,aAAa,EAAE,UAAU,CAAU,CAAC;AAElG,wEAAwE;AAExE;;;GAGG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG;IAChC,QAAQ;IACR,QAAQ;IACR,SAAS;IACT,UAAU;IACV,OAAO;IACP,OAAO;CACC,CAAC;AAoBX,8DAA8D;AAC9D,MAAM,CAAC,MAAM,qBAAqB,GAA6C;IAC7E,MAAM,EAAE;QACN,MAAM,EAAE,QAAQ;QAChB,QAAQ,EAAE,WAAW;QACrB,OAAO,EAAE,aAAa;QACtB,WAAW,EAAE,aAAa;KAC3B;IACD,MAAM,EAAE;QACN,MAAM,EAAE,QAAQ;QAChB,QAAQ,EAAE,uBAAuB;QACjC,SAAS,EAAE,eAAe;QAC1B,OAAO,EAAE,qBAAqB;QAC9B,WAAW,EAAE,QAAQ;QACrB,eAAe,EAAE,IAAI;KACtB;IACD,OAAO,EAAE;QACP,MAAM,EAAE,SAAS;QACjB,QAAQ,EAAE,yBAAyB;QACnC,SAAS,EAAE,SAAS;QACpB,OAAO,EAAE,wBAAwB;QACjC,WAAW,EAAE,gBAAgB;KAC9B;IACD,QAAQ,EAAE;QACR,MAAM,EAAE,UAAU;QAClB,QAAQ,EAAE,gBAAgB;QAC1B,OAAO,EAAE,kBAAkB;QAC3B,WAAW,EAAE,UAAU;KACxB;IACD,KAAK,EAAE;QACL,MAAM,EAAE,OAAO;QACf,QAAQ,EAAE,aAAa;QACvB,OAAO,EAAE,eAAe;QACxB,WAAW,EAAE,OAAO;KACrB;IACD,KAAK,EAAE;QACL,MAAM,EAAE,OAAO;QACf,QAAQ,EAAE,gBAAgB;QAC1B,OAAO,EAAE,kBAAkB;QAC3B,WAAW,EAAE,OAAO;KACrB;CACF,CAAC;AAEF,iDAAiD;AACjD,MAAM,CAAC,MAAM,qBAAqB,GAAiB,QAAQ,CAAC;AAE5D;;;;;;GAMG;AACH,MAAM,UAAU,iBAAiB,CAAC,UAAkB,EAAE,MAAoB;IACxE,MAAM,MAAM,GAAG,qBAAqB,CAAC,MAAM,CAAC,CAAC;IAC7C,IAAI,MAAM,CAAC,SAAS,EAAE,CAAC;QACrB,OAAO,GAAG,UAAU,IAAI,MAAM,CAAC,SAAS,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;IAChE,CAAC;IACD,OAAO,GAAG,UAAU,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;AAC5C,CAAC"}
|
package/dist/tools/audit.js
CHANGED
|
@@ -88,8 +88,8 @@ export async function auditProjectHandler(args) {
|
|
|
88
88
|
function generateRecommendations(failing) {
|
|
89
89
|
const recommendations = [];
|
|
90
90
|
const failingChecks = new Set(failing.map((f) => f.check));
|
|
91
|
-
if (failingChecks.has("
|
|
92
|
-
recommendations.push("Run `
|
|
91
|
+
if (failingChecks.has("instruction_file_exists")) {
|
|
92
|
+
recommendations.push("Run `generate_instructions` to create instruction files for your AI assistant.");
|
|
93
93
|
}
|
|
94
94
|
if (failingChecks.has("status_md_exists") || failingChecks.has("status_md_current")) {
|
|
95
95
|
recommendations.push("Create/update Status.md — update it at the end of each coding session.");
|
package/dist/tools/audit.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"audit.js","sourceRoot":"","sources":["../../src/tools/audit.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"audit.js","sourceRoot":"","sources":["../../src/tools/audit.ts"],"names":[],"mappings":"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"}
|
package/dist/tools/convert.js
CHANGED
|
@@ -76,8 +76,8 @@ function buildMigrationPlan(completeness, antiPatterns, _tags) {
|
|
|
76
76
|
const missingChecks = new Set(completeness.failing.map((f) => f.check));
|
|
77
77
|
// Phase 1: Foundation (always first)
|
|
78
78
|
const foundationSteps = [];
|
|
79
|
-
if (missingChecks.has("
|
|
80
|
-
foundationSteps.push("Generate
|
|
79
|
+
if (missingChecks.has("instruction_file_exists")) {
|
|
80
|
+
foundationSteps.push("Generate instruction files with `generate_instructions`");
|
|
81
81
|
}
|
|
82
82
|
if (missingChecks.has("status_md_exists")) {
|
|
83
83
|
foundationSteps.push("Create Status.md for session continuity");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"convert.js","sourceRoot":"","sources":["../../src/tools/convert.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"convert.js","sourceRoot":"","sources":["../../src/tools/convert.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,29 +1,55 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
2
|
+
* generate_instructions tool handler.
|
|
3
3
|
*
|
|
4
|
-
* Generates
|
|
4
|
+
* Generates instruction files for AI assistants (Claude, Cursor, Copilot, Windsurf, Cline, Aider).
|
|
5
|
+
* Replaces the former generate_claude_md tool with multi-target support.
|
|
5
6
|
*/
|
|
6
7
|
import { z } from "zod";
|
|
8
|
+
export declare const generateInstructionsSchema: z.ZodObject<{
|
|
9
|
+
tags: z.ZodArray<z.ZodEnum<[string, ...string[]]>, "many">;
|
|
10
|
+
project_dir: z.ZodOptional<z.ZodString>;
|
|
11
|
+
project_name: z.ZodDefault<z.ZodString>;
|
|
12
|
+
output_targets: z.ZodDefault<z.ZodArray<z.ZodEnum<[string, ...string[]]>, "many">>;
|
|
13
|
+
merge_with_existing: z.ZodDefault<z.ZodBoolean>;
|
|
14
|
+
}, "strip", z.ZodTypeAny, {
|
|
15
|
+
tags: string[];
|
|
16
|
+
project_name: string;
|
|
17
|
+
output_targets: string[];
|
|
18
|
+
merge_with_existing: boolean;
|
|
19
|
+
project_dir?: string | undefined;
|
|
20
|
+
}, {
|
|
21
|
+
tags: string[];
|
|
22
|
+
project_dir?: string | undefined;
|
|
23
|
+
project_name?: string | undefined;
|
|
24
|
+
output_targets?: string[] | undefined;
|
|
25
|
+
merge_with_existing?: boolean | undefined;
|
|
26
|
+
}>;
|
|
27
|
+
/** @deprecated Use generateInstructionsSchema instead. */
|
|
7
28
|
export declare const generateClaudeMdSchema: z.ZodObject<{
|
|
8
29
|
tags: z.ZodArray<z.ZodEnum<[string, ...string[]]>, "many">;
|
|
9
30
|
project_dir: z.ZodOptional<z.ZodString>;
|
|
10
31
|
project_name: z.ZodDefault<z.ZodString>;
|
|
32
|
+
output_targets: z.ZodDefault<z.ZodArray<z.ZodEnum<[string, ...string[]]>, "many">>;
|
|
11
33
|
merge_with_existing: z.ZodDefault<z.ZodBoolean>;
|
|
12
34
|
}, "strip", z.ZodTypeAny, {
|
|
13
35
|
tags: string[];
|
|
14
36
|
project_name: string;
|
|
37
|
+
output_targets: string[];
|
|
15
38
|
merge_with_existing: boolean;
|
|
16
39
|
project_dir?: string | undefined;
|
|
17
40
|
}, {
|
|
18
41
|
tags: string[];
|
|
19
42
|
project_dir?: string | undefined;
|
|
20
43
|
project_name?: string | undefined;
|
|
44
|
+
output_targets?: string[] | undefined;
|
|
21
45
|
merge_with_existing?: boolean | undefined;
|
|
22
46
|
}>;
|
|
23
|
-
export declare function
|
|
47
|
+
export declare function generateInstructionsHandler(args: z.infer<typeof generateInstructionsSchema>): Promise<{
|
|
24
48
|
content: Array<{
|
|
25
49
|
type: "text";
|
|
26
50
|
text: string;
|
|
27
51
|
}>;
|
|
28
52
|
}>;
|
|
53
|
+
/** @deprecated Use generateInstructionsHandler instead. */
|
|
54
|
+
export declare const generateClaudeMdHandler: typeof generateInstructionsHandler;
|
|
29
55
|
//# sourceMappingURL=generate-claude-md.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generate-claude-md.d.ts","sourceRoot":"","sources":["../../src/tools/generate-claude-md.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"generate-claude-md.d.ts","sourceRoot":"","sources":["../../src/tools/generate-claude-md.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAWxB,eAAO,MAAM,0BAA0B;;;;;;;;;;;;;;;;;;EAqBrC,CAAC;AAEH,0DAA0D;AAC1D,eAAO,MAAM,sBAAsB;;;;;;;;;;;;;;;;;;EAA6B,CAAC;AAIjE,wBAAsB,2BAA2B,CAC/C,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,0BAA0B,CAAC,GAC/C,OAAO,CAAC;IAAE,OAAO,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;CAAE,CAAC,CAqE7D;AAED,2DAA2D;AAC3D,eAAO,MAAM,uBAAuB,oCAA8B,CAAC"}
|
|
@@ -1,17 +1,18 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
2
|
+
* generate_instructions tool handler.
|
|
3
3
|
*
|
|
4
|
-
* Generates
|
|
4
|
+
* Generates instruction files for AI assistants (Claude, Cursor, Copilot, Windsurf, Cline, Aider).
|
|
5
|
+
* Replaces the former generate_claude_md tool with multi-target support.
|
|
5
6
|
*/
|
|
6
7
|
import { z } from "zod";
|
|
7
|
-
import { existsSync, readFileSync, writeFileSync } from "node:fs";
|
|
8
|
-
import { join } from "node:path";
|
|
9
|
-
import { ALL_TAGS } from "../shared/types.js";
|
|
8
|
+
import { existsSync, readFileSync, writeFileSync, mkdirSync } from "node:fs";
|
|
9
|
+
import { join, dirname } from "node:path";
|
|
10
|
+
import { ALL_TAGS, ALL_OUTPUT_TARGETS, OUTPUT_TARGET_CONFIGS, DEFAULT_OUTPUT_TARGET } from "../shared/types.js";
|
|
10
11
|
import { loadAllTemplatesWithExtras, loadUserOverrides } from "../registry/loader.js";
|
|
11
12
|
import { composeTemplates } from "../registry/composer.js";
|
|
12
|
-
import {
|
|
13
|
+
import { renderInstructionFile } from "../registry/renderer.js";
|
|
13
14
|
// ── Schema ───────────────────────────────────────────────────────────
|
|
14
|
-
export const
|
|
15
|
+
export const generateInstructionsSchema = z.object({
|
|
15
16
|
tags: z
|
|
16
17
|
.array(z.enum(ALL_TAGS))
|
|
17
18
|
.min(1)
|
|
@@ -19,21 +20,28 @@ export const generateClaudeMdSchema = z.object({
|
|
|
19
20
|
project_dir: z
|
|
20
21
|
.string()
|
|
21
22
|
.optional()
|
|
22
|
-
.describe("Absolute path to project. If provided, writes
|
|
23
|
+
.describe("Absolute path to project. If provided, writes instruction files to disk."),
|
|
23
24
|
project_name: z
|
|
24
25
|
.string()
|
|
25
26
|
.default("My Project")
|
|
26
27
|
.describe("Project name for variable substitution."),
|
|
28
|
+
output_targets: z
|
|
29
|
+
.array(z.enum(ALL_OUTPUT_TARGETS))
|
|
30
|
+
.default(["claude"])
|
|
31
|
+
.describe("AI assistant targets to generate for. Defaults to ['claude']. Options: claude, cursor, copilot, windsurf, cline, aider."),
|
|
27
32
|
merge_with_existing: z
|
|
28
33
|
.boolean()
|
|
29
34
|
.default(false)
|
|
30
|
-
.describe("If true, merge with existing
|
|
35
|
+
.describe("If true, merge with existing instruction files instead of replacing."),
|
|
31
36
|
});
|
|
37
|
+
/** @deprecated Use generateInstructionsSchema instead. */
|
|
38
|
+
export const generateClaudeMdSchema = generateInstructionsSchema;
|
|
32
39
|
// ── Handler ──────────────────────────────────────────────────────────
|
|
33
|
-
export async function
|
|
40
|
+
export async function generateInstructionsHandler(args) {
|
|
34
41
|
const tags = args.tags.includes("UNIVERSAL")
|
|
35
42
|
? args.tags
|
|
36
43
|
: ["UNIVERSAL", ...args.tags];
|
|
44
|
+
const targets = (args.output_targets ?? [DEFAULT_OUTPUT_TARGET]);
|
|
37
45
|
const userConfig = args.project_dir ? loadUserOverrides(args.project_dir) : null;
|
|
38
46
|
const templateSets = await loadAllTemplatesWithExtras(undefined, userConfig?.templateDirs);
|
|
39
47
|
const composed = composeTemplates(tags, templateSets, {
|
|
@@ -44,43 +52,66 @@ export async function generateClaudeMdHandler(args) {
|
|
|
44
52
|
language: "typescript",
|
|
45
53
|
tags,
|
|
46
54
|
};
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
const
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
55
|
+
const filesWritten = [];
|
|
56
|
+
const targetSummaries = [];
|
|
57
|
+
for (const target of targets) {
|
|
58
|
+
const targetConfig = OUTPUT_TARGET_CONFIGS[target];
|
|
59
|
+
let content = renderInstructionFile(composed.instructionBlocks, context, target);
|
|
60
|
+
// Handle merge with existing
|
|
61
|
+
if (args.merge_with_existing && args.project_dir) {
|
|
62
|
+
const existingPath = resolveTargetPath(args.project_dir, target);
|
|
63
|
+
if (existsSync(existingPath)) {
|
|
64
|
+
const existing = readFileSync(existingPath, "utf-8");
|
|
65
|
+
content = mergeInstructionFile(existing, content);
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
// Write to disk if project_dir provided
|
|
69
|
+
if (args.project_dir) {
|
|
70
|
+
const targetPath = resolveTargetPath(args.project_dir, target);
|
|
71
|
+
mkdirSync(dirname(targetPath), { recursive: true });
|
|
72
|
+
writeFileSync(targetPath, content, "utf-8");
|
|
73
|
+
filesWritten.push(targetPath);
|
|
74
|
+
targetSummaries.push(`- **${targetConfig.displayName}**: \`${targetConfig.directory ? targetConfig.directory + "/" : ""}${targetConfig.filename}\``);
|
|
54
75
|
}
|
|
55
76
|
}
|
|
56
|
-
|
|
57
|
-
if (args.project_dir) {
|
|
58
|
-
const targetPath = join(args.project_dir, "CLAUDE.md");
|
|
59
|
-
writeFileSync(targetPath, claudeMdContent, "utf-8");
|
|
77
|
+
if (args.project_dir && filesWritten.length > 0) {
|
|
60
78
|
return {
|
|
61
79
|
content: [
|
|
62
80
|
{
|
|
63
81
|
type: "text",
|
|
64
|
-
text:
|
|
82
|
+
text: `# Instruction Files Generated\n\n**Tags:** ${tags.map((t) => `[${t}]`).join(" ")}\n**Blocks:** ${composed.instructionBlocks.length}\n\n## Files Written\n${targetSummaries.join("\n")}\n\n⚠️ Restart may be required to pick up changes.`,
|
|
65
83
|
},
|
|
66
84
|
],
|
|
67
85
|
};
|
|
68
86
|
}
|
|
69
|
-
// Return content only
|
|
87
|
+
// Return content for first target only (when no project_dir)
|
|
88
|
+
const content = renderInstructionFile(composed.instructionBlocks, context, targets[0]);
|
|
70
89
|
return {
|
|
71
90
|
content: [
|
|
72
91
|
{
|
|
73
92
|
type: "text",
|
|
74
|
-
text:
|
|
93
|
+
text: content,
|
|
75
94
|
},
|
|
76
95
|
],
|
|
77
96
|
};
|
|
78
97
|
}
|
|
98
|
+
/** @deprecated Use generateInstructionsHandler instead. */
|
|
99
|
+
export const generateClaudeMdHandler = generateInstructionsHandler;
|
|
100
|
+
/**
|
|
101
|
+
* Resolve the full file path for an output target.
|
|
102
|
+
*/
|
|
103
|
+
function resolveTargetPath(projectDir, target) {
|
|
104
|
+
const config = OUTPUT_TARGET_CONFIGS[target];
|
|
105
|
+
if (config.directory) {
|
|
106
|
+
return join(projectDir, config.directory, config.filename);
|
|
107
|
+
}
|
|
108
|
+
return join(projectDir, config.filename);
|
|
109
|
+
}
|
|
79
110
|
/**
|
|
80
|
-
* Merge generated
|
|
111
|
+
* Merge generated instruction file with existing one.
|
|
81
112
|
* Keeps any custom sections from the existing file.
|
|
82
113
|
*/
|
|
83
|
-
function
|
|
114
|
+
function mergeInstructionFile(existing, generated) {
|
|
84
115
|
const existingLines = existing.split("\n");
|
|
85
116
|
const generatedLines = generated.split("\n");
|
|
86
117
|
// Find custom sections (sections not in generated)
|
|
@@ -108,7 +139,7 @@ function mergeClaudeMd(existing, generated) {
|
|
|
108
139
|
// Append custom sections to generated content
|
|
109
140
|
if (customSections.length > 0) {
|
|
110
141
|
return (generated +
|
|
111
|
-
"\n\n<!-- Custom Sections (preserved from previous
|
|
142
|
+
"\n\n<!-- Custom Sections (preserved from previous file) -->\n\n" +
|
|
112
143
|
customSections.join("\n\n"));
|
|
113
144
|
}
|
|
114
145
|
return generated;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generate-claude-md.js","sourceRoot":"","sources":["../../src/tools/generate-claude-md.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"generate-claude-md.js","sourceRoot":"","sources":["../../src/tools/generate-claude-md.ts"],"names":[],"mappings":"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"}
|
|
@@ -12,15 +12,18 @@ export declare const refreshProjectSchema: z.ZodObject<{
|
|
|
12
12
|
tier: z.ZodOptional<z.ZodEnum<[string, ...string[]]>>;
|
|
13
13
|
add_tags: z.ZodOptional<z.ZodArray<z.ZodEnum<[string, ...string[]]>, "many">>;
|
|
14
14
|
remove_tags: z.ZodOptional<z.ZodArray<z.ZodEnum<[string, ...string[]]>, "many">>;
|
|
15
|
+
output_targets: z.ZodOptional<z.ZodArray<z.ZodEnum<[string, ...string[]]>, "many">>;
|
|
15
16
|
}, "strip", z.ZodTypeAny, {
|
|
16
17
|
project_dir: string;
|
|
17
18
|
apply: boolean;
|
|
18
19
|
tier?: string | undefined;
|
|
20
|
+
output_targets?: string[] | undefined;
|
|
19
21
|
add_tags?: string[] | undefined;
|
|
20
22
|
remove_tags?: string[] | undefined;
|
|
21
23
|
}, {
|
|
22
24
|
project_dir: string;
|
|
23
25
|
tier?: string | undefined;
|
|
26
|
+
output_targets?: string[] | undefined;
|
|
24
27
|
apply?: boolean | undefined;
|
|
25
28
|
add_tags?: string[] | undefined;
|
|
26
29
|
remove_tags?: string[] | undefined;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"refresh-project.d.ts","sourceRoot":"","sources":["../../src/tools/refresh-project.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAoBxB,eAAO,MAAM,oBAAoB
|
|
1
|
+
{"version":3,"file":"refresh-project.d.ts","sourceRoot":"","sources":["../../src/tools/refresh-project.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAoBxB,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;;;EAwB/B,CAAC;AAgBH,wBAAsB,qBAAqB,CACzC,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,GACzC,OAAO,CAAC;IAAE,OAAO,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;CAAE,CAAC,CA+E7D"}
|
|
@@ -6,15 +6,15 @@
|
|
|
6
6
|
* Can optionally apply updates to config and CLAUDE.md.
|
|
7
7
|
*/
|
|
8
8
|
import { z } from "zod";
|
|
9
|
-
import { writeFileSync } from "node:fs";
|
|
10
|
-
import { join } from "node:path";
|
|
9
|
+
import { writeFileSync, mkdirSync } from "node:fs";
|
|
10
|
+
import { join, dirname } from "node:path";
|
|
11
11
|
import yaml from "js-yaml";
|
|
12
|
-
import { ALL_TAGS, CONTENT_TIERS } from "../shared/types.js";
|
|
12
|
+
import { ALL_TAGS, CONTENT_TIERS, ALL_OUTPUT_TARGETS, OUTPUT_TARGET_CONFIGS, DEFAULT_OUTPUT_TARGET } from "../shared/types.js";
|
|
13
13
|
import { analyzeProject } from "../analyzers/package-json.js";
|
|
14
14
|
import { checkCompleteness } from "../analyzers/completeness.js";
|
|
15
15
|
import { loadAllTemplatesWithExtras, loadUserOverrides } from "../registry/loader.js";
|
|
16
16
|
import { composeTemplates } from "../registry/composer.js";
|
|
17
|
-
import {
|
|
17
|
+
import { renderInstructionFile } from "../registry/renderer.js";
|
|
18
18
|
import { createLogger } from "../shared/logger/index.js";
|
|
19
19
|
const logger = createLogger("tools/refresh-project");
|
|
20
20
|
/** Minimum confidence to suggest a new tag. */
|
|
@@ -40,6 +40,10 @@ export const refreshProjectSchema = z.object({
|
|
|
40
40
|
.array(z.enum(ALL_TAGS))
|
|
41
41
|
.optional()
|
|
42
42
|
.describe("Explicitly remove these tags during refresh."),
|
|
43
|
+
output_targets: z
|
|
44
|
+
.array(z.enum(ALL_OUTPUT_TARGETS))
|
|
45
|
+
.optional()
|
|
46
|
+
.describe("Override output targets. If omitted, uses current config value or defaults to ['claude']."),
|
|
43
47
|
});
|
|
44
48
|
// ── Handler ──────────────────────────────────────────────────────────
|
|
45
49
|
export async function refreshProjectHandler(args) {
|
|
@@ -80,14 +84,22 @@ export async function refreshProjectHandler(args) {
|
|
|
80
84
|
// Write updated config
|
|
81
85
|
const configYaml = yaml.dump(updatedConfig, { lineWidth: 100, noRefs: true });
|
|
82
86
|
writeFileSync(join(projectDir, "forgecraft.yaml"), configYaml, "utf-8");
|
|
83
|
-
// Regenerate
|
|
87
|
+
// Regenerate instruction files for all targets
|
|
88
|
+
const outputTargets = (args.output_targets ?? updatedConfig.outputTargets ?? [DEFAULT_OUTPUT_TARGET]);
|
|
84
89
|
const context = {
|
|
85
90
|
projectName: updatedConfig.projectName ?? inferProjectName(projectDir),
|
|
86
91
|
language: "typescript",
|
|
87
92
|
tags: updatedTags,
|
|
88
93
|
};
|
|
89
|
-
const
|
|
90
|
-
|
|
94
|
+
for (const target of outputTargets) {
|
|
95
|
+
const targetConfig = OUTPUT_TARGET_CONFIGS[target];
|
|
96
|
+
const content = renderInstructionFile(composed.instructionBlocks, context, target);
|
|
97
|
+
const outputPath = targetConfig.directory
|
|
98
|
+
? join(projectDir, targetConfig.directory, targetConfig.filename)
|
|
99
|
+
: join(projectDir, targetConfig.filename);
|
|
100
|
+
mkdirSync(dirname(outputPath), { recursive: true });
|
|
101
|
+
writeFileSync(outputPath, content, "utf-8");
|
|
102
|
+
}
|
|
91
103
|
return {
|
|
92
104
|
content: [{
|
|
93
105
|
type: "text",
|
|
@@ -219,8 +231,8 @@ function buildPreviewOutput(drift, updatedTags, _config, composed, tier) {
|
|
|
219
231
|
}
|
|
220
232
|
// Block delta
|
|
221
233
|
text += `## Content Impact\n`;
|
|
222
|
-
text += `-
|
|
223
|
-
text += `- Total available: ${composed.
|
|
234
|
+
text += `- Instruction blocks: ${drift.blockCountDelta.before} → ${drift.blockCountDelta.after}\n`;
|
|
235
|
+
text += `- Total available: ${composed.instructionBlocks.length} blocks, ${composed.nfrBlocks.length} NFRs, ${composed.hooks.length} hooks\n\n`;
|
|
224
236
|
// Gaps
|
|
225
237
|
if (drift.completenessGaps.length > 0) {
|
|
226
238
|
text += `## Remaining Gaps\n`;
|
|
@@ -240,7 +252,7 @@ function buildAppliedOutput(drift, updatedTags, config, composed, tier) {
|
|
|
240
252
|
text += `**Tier:** ${tier}\n\n`;
|
|
241
253
|
text += `## Changes Applied\n`;
|
|
242
254
|
text += `- forgecraft.yaml — updated\n`;
|
|
243
|
-
text += `-
|
|
255
|
+
text += `- Instruction files — regenerated (${composed.instructionBlocks.length} blocks)\n\n`;
|
|
244
256
|
if (drift.newTagSuggestions.length > 0) {
|
|
245
257
|
const added = drift.newTagSuggestions.filter((s) => s.confidence >= 0.6);
|
|
246
258
|
if (added.length > 0) {
|