meto-cli 0.12.0 → 0.12.1
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.
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/cli/audit/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/cli/audit/index.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAQpD;;;GAGG;AACH,MAAM,WAAW,gBAAgB;IAC/B,uCAAuC;IACvC,IAAI,EAAE,MAAM,CAAC;IACb,yCAAyC;IACzC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC;IACxB,gDAAgD;IAChD,OAAO,EAAE,MAAM,CAAC;CACjB;AA6LD;;;;;;;;GAQG;AACH,wBAAsB,QAAQ,IAAI,OAAO,CAAC,eAAe,EAAE,CAAC,CAyJ3D"}
|
package/dist/cli/audit/index.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import { readdir, stat } from "node:fs/promises";
|
|
1
|
+
import { readdir, stat, writeFile, mkdir } from "node:fs/promises";
|
|
2
|
+
import { join } from "node:path";
|
|
2
3
|
import * as p from "@clack/prompts";
|
|
3
4
|
import { AUDIT_BLUEPRINT } from "./blueprint.js";
|
|
4
5
|
import { detectStack } from "./detect-stack.js";
|
|
@@ -104,6 +105,62 @@ async function isDirectory(dirPath) {
|
|
|
104
105
|
}
|
|
105
106
|
}
|
|
106
107
|
// ---------------------------------------------------------------------------
|
|
108
|
+
// Migration prompt generator
|
|
109
|
+
// ---------------------------------------------------------------------------
|
|
110
|
+
/**
|
|
111
|
+
* Generates a Claude Code migration prompt and writes it to ai/migrate.md.
|
|
112
|
+
*
|
|
113
|
+
* Called after audit when new meto files were created in an existing project.
|
|
114
|
+
* The prompt tells @meto-pm exactly what to do: read existing project files,
|
|
115
|
+
* fill in the meto placeholders, and clean up superseded content.
|
|
116
|
+
*/
|
|
117
|
+
async function writeMigrationPrompt(projectDir, createdFiles) {
|
|
118
|
+
const fileList = createdFiles.map((f) => `- \`${f}\``).join("\n");
|
|
119
|
+
const prompt = `# Meto Migration — Paste this into Claude Code and run with @meto-pm
|
|
120
|
+
|
|
121
|
+
Meto has added its methodology structure to this existing project.
|
|
122
|
+
The files below were created with placeholder content and need to be filled in
|
|
123
|
+
from the existing project. Your job is to do that merge.
|
|
124
|
+
|
|
125
|
+
## Files created with placeholders
|
|
126
|
+
|
|
127
|
+
${fileList}
|
|
128
|
+
|
|
129
|
+
## What to do
|
|
130
|
+
|
|
131
|
+
1. **Scan the existing project** — read README.md, package.json, any docs/ or
|
|
132
|
+
wiki/ folders, architecture docs, CONTRIBUTING.md, and any other files that
|
|
133
|
+
describe what this project is and how it works.
|
|
134
|
+
|
|
135
|
+
2. **Fill in the meto files** — replace every "To be defined" placeholder with
|
|
136
|
+
real content extracted from the existing files:
|
|
137
|
+
- \`ai/context/product-vision.md\` ← README intro, any vision or pitch docs
|
|
138
|
+
- \`ai/context/tech-stack.md\` ← README stack section, package.json dependencies
|
|
139
|
+
- \`ai/context/decisions.md\` ← any ADRs, architecture decisions, or "why we chose X" docs
|
|
140
|
+
- \`CLAUDE.md\` ← project name, stack summary, coding conventions from existing linting/style configs
|
|
141
|
+
- \`ai/workflows/definition-of-done.md\` ← any existing QA checklists or PR templates
|
|
142
|
+
- Agent definitions in \`.claude/agents/\` ← adapt to the actual stack and domain
|
|
143
|
+
|
|
144
|
+
3. **Do not delete anything** without confirming with the user first. If an
|
|
145
|
+
existing file is fully superseded by a new meto file, flag it with a note
|
|
146
|
+
rather than deleting it.
|
|
147
|
+
|
|
148
|
+
4. **Populate the backlog** — once context files are filled in, create 3-5 epics
|
|
149
|
+
in \`ai/backlog/epics.md\` based on the project's current state and known
|
|
150
|
+
remaining work.
|
|
151
|
+
|
|
152
|
+
5. **Delete this file** (\`ai/migrate.md\`) when the migration is complete.
|
|
153
|
+
|
|
154
|
+
## Guiding principle
|
|
155
|
+
|
|
156
|
+
The goal is one coherent project — not old files next to new files.
|
|
157
|
+
Everything the project knows about itself should live in the meto structure.
|
|
158
|
+
`;
|
|
159
|
+
const aiDir = join(projectDir, "ai");
|
|
160
|
+
await mkdir(aiDir, { recursive: true });
|
|
161
|
+
await writeFile(join(aiDir, "migrate.md"), prompt, "utf-8");
|
|
162
|
+
}
|
|
163
|
+
// ---------------------------------------------------------------------------
|
|
107
164
|
// Entry point
|
|
108
165
|
// ---------------------------------------------------------------------------
|
|
109
166
|
/**
|
|
@@ -152,6 +209,7 @@ export async function runAudit() {
|
|
|
152
209
|
const stackDod = getDefinitionOfDone(detected.stack);
|
|
153
210
|
const stackGuidelines = getCodeGuidelines(detected.stack);
|
|
154
211
|
const allLayerResults = [];
|
|
212
|
+
const allCreatedFiles = [];
|
|
155
213
|
let previousLayerPassed = true;
|
|
156
214
|
for (const layer of AUDIT_BLUEPRINT) {
|
|
157
215
|
// Gating: Layer 0 is informational only — never blocks.
|
|
@@ -183,6 +241,7 @@ export async function runAudit() {
|
|
|
183
241
|
// Re-scan after fixes to get updated results
|
|
184
242
|
const created = fixResult.fixes.filter((f) => f.outcome === "created");
|
|
185
243
|
if (created.length > 0) {
|
|
244
|
+
allCreatedFiles.push(...created.map((f) => f.scanResult.expectation.path));
|
|
186
245
|
p.log.info(`Fixed ${created.length} issue${created.length === 1 ? "" : "s"} in Layer ${layer.id}`);
|
|
187
246
|
// Re-scan to reflect fixes
|
|
188
247
|
const rescanResult = await scanLayer(projectDir, layer);
|
|
@@ -204,6 +263,22 @@ export async function runAudit() {
|
|
|
204
263
|
const totalExpectations = allLayerResults.reduce((sum, lr) => sum + lr.results.length, 0);
|
|
205
264
|
const totalPassed = allLayerResults.reduce((sum, lr) => sum + lr.results.filter((r) => r.status === "pass").length, 0);
|
|
206
265
|
const totalFailed = allLayerResults.reduce((sum, lr) => sum + lr.results.filter((r) => r.status === "fail").length, 0);
|
|
266
|
+
if (allCreatedFiles.length > 0) {
|
|
267
|
+
await writeMigrationPrompt(projectDir, allCreatedFiles);
|
|
268
|
+
p.note([
|
|
269
|
+
"Meto created new methodology files alongside your existing project files.",
|
|
270
|
+
"To merge your existing content into the new structure:",
|
|
271
|
+
"",
|
|
272
|
+
"1. Open Claude Code in this project",
|
|
273
|
+
" claude",
|
|
274
|
+
"",
|
|
275
|
+
"2. Run @meto-pm and paste the contents of ai/migrate.md",
|
|
276
|
+
' "@meto-pm — read ai/migrate.md and follow the instructions"',
|
|
277
|
+
"",
|
|
278
|
+
"The agent will fill in placeholders, consolidate old files,",
|
|
279
|
+
"and leave you with one coherent project.",
|
|
280
|
+
].join("\n"), "Next step: migrate your existing content");
|
|
281
|
+
}
|
|
207
282
|
if (totalFailed > 0) {
|
|
208
283
|
p.outro(`Audit complete: ${totalPassed}/${totalExpectations} passed, ${totalFailed} failed`);
|
|
209
284
|
process.exit(1);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/cli/audit/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/cli/audit/index.ts"],"names":[],"mappings":"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"}
|