meto-cli 0.11.0 → 0.11.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.
- package/README.md +66 -0
- package/dist/cli/audit/index.d.ts.map +1 -1
- package/dist/cli/audit/index.js +12 -8
- package/dist/cli/audit/index.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -16,6 +16,13 @@ npx meto-cli init
|
|
|
16
16
|
|
|
17
17
|
Answer a few questions, and Meto generates a fully structured repository in seconds -- with AI-powered content if Claude Code is installed.
|
|
18
18
|
|
|
19
|
+
**Already have a project?** Run the audit to bring it up to standard:
|
|
20
|
+
|
|
21
|
+
```bash
|
|
22
|
+
cd your-existing-project
|
|
23
|
+
npx meto-cli audit
|
|
24
|
+
```
|
|
25
|
+
|
|
19
26
|
---
|
|
20
27
|
|
|
21
28
|
## How It Works
|
|
@@ -39,6 +46,62 @@ Use `--no-ai` to force the static path even when Claude Code is available.
|
|
|
39
46
|
|
|
40
47
|
---
|
|
41
48
|
|
|
49
|
+
## Audit — For Existing Projects
|
|
50
|
+
|
|
51
|
+
Already built a project before Meto? Run `meto-cli audit` to scan it against the methodology blueprint and fix what's missing — interactively, one layer at a time.
|
|
52
|
+
|
|
53
|
+
```bash
|
|
54
|
+
cd your-existing-project
|
|
55
|
+
npx meto-cli audit
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
The audit checks 4 layers, each gating the next:
|
|
59
|
+
|
|
60
|
+
```
|
|
61
|
+
Layer 0 — Project Basics ████████████ 100%
|
|
62
|
+
✓ git repo ✓ README ✓ source code
|
|
63
|
+
|
|
64
|
+
Layer 1 — Methodology ██████░░░░░░ 50%
|
|
65
|
+
✓ CLAUDE.md
|
|
66
|
+
✓ ai/context/product-vision.md
|
|
67
|
+
✗ ai/tasks/ (no kanban board)
|
|
68
|
+
→ Create board files? [y/n]
|
|
69
|
+
✗ ai/workflows/ (no definition of done)
|
|
70
|
+
→ Create definition-of-done.md? [y/n]
|
|
71
|
+
|
|
72
|
+
Layer 2 — Agents not reached
|
|
73
|
+
Layer 3 — Governance not reached
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
| Layer | What it checks |
|
|
77
|
+
|---|---|
|
|
78
|
+
| **Layer 0** | Git initialized, README exists, source code present |
|
|
79
|
+
| **Layer 1** | CLAUDE.md, ai/ context files, kanban board, workflows |
|
|
80
|
+
| **Layer 2** | Agent definitions (PM, developer, tester), agent memory, settings |
|
|
81
|
+
| **Layer 3** | Governance: commit conventions, definition of done, code guidelines, session checkpoints, agent cross-references |
|
|
82
|
+
|
|
83
|
+
Each missing item offers a fix — create the file from Meto's templates, never overwriting existing content. Run it repeatedly to ratchet your project up one layer at a time.
|
|
84
|
+
|
|
85
|
+
The audit also **auto-detects your tech stack** from `package.json`, `go.mod`, `pyproject.toml`, `pubspec.yaml`, or `Cargo.toml` to provide stack-specific templates.
|
|
86
|
+
|
|
87
|
+
---
|
|
88
|
+
|
|
89
|
+
## Code Guidelines
|
|
90
|
+
|
|
91
|
+
Every scaffolded project includes `ai/workflows/code-guidelines.md` — enforced by both the developer and tester agents:
|
|
92
|
+
|
|
93
|
+
| Rule | Limit |
|
|
94
|
+
|---|---|
|
|
95
|
+
| Max file length | 300 lines (hard stop at 500) |
|
|
96
|
+
| Max function length | 50 lines |
|
|
97
|
+
| Max component length | 200 lines (React/Flutter) |
|
|
98
|
+
| Nesting depth | 3 levels max |
|
|
99
|
+
| Circular imports | Not allowed |
|
|
100
|
+
|
|
101
|
+
Guidelines include stack-specific rules (e.g., "never call Supabase directly from components" for Next.js, "always check error returns" for Go). The developer agent reads these at session start, and the tester agent verifies them before sign-off.
|
|
102
|
+
|
|
103
|
+
---
|
|
104
|
+
|
|
42
105
|
## Stack Presets
|
|
43
106
|
|
|
44
107
|
Choose from 7 built-in tech stacks, each with a tailored description, definition of done, and starter epics:
|
|
@@ -90,6 +153,7 @@ your-project/
|
|
|
90
153
|
│ │ ├── tasks-in-testing.md
|
|
91
154
|
│ │ └── tasks-todo.md
|
|
92
155
|
│ └── workflows/
|
|
156
|
+
│ ├── code-guidelines.md
|
|
93
157
|
│ ├── commit-conventions.md
|
|
94
158
|
│ ├── definition-of-done.md
|
|
95
159
|
│ └── session-checkpoint.md
|
|
@@ -122,6 +186,7 @@ your-project/
|
|
|
122
186
|
- **4 agent definitions** -- PM, developer, tester, and community manager agents configured to follow your methodology from day one
|
|
123
187
|
- **Agent memory** -- persistent memory files so agents retain context across sessions
|
|
124
188
|
- **Product context** -- vision, tech stack, and decisions captured in structured files
|
|
189
|
+
- **Code guidelines** -- file size limits, naming conventions, and stack-specific rules enforced by agents
|
|
125
190
|
- **Epics and workflows** -- definition of done, commit conventions, session checkpoints, and an epic backlog to plan against
|
|
126
191
|
- **Agent Teams ready** -- four agents configured to work in parallel with file ownership boundaries
|
|
127
192
|
- **Swarm mode** -- parallel epic agents with domain ownership, checkpoint rhythm, and a live status dashboard
|
|
@@ -230,6 +295,7 @@ Meto scaffolds projects ready for Agent Teams out of the box:
|
|
|
230
295
|
| `meto-cli init` | Scaffold a new structured project (AI-powered if Claude Code is detected) |
|
|
231
296
|
| `meto-cli init --no-ai` | Scaffold using static prompts only, skip AI generation |
|
|
232
297
|
| `meto-cli init --dry-run` | Preview the generated file tree without writing to disk |
|
|
298
|
+
| `meto-cli audit` | Scan an existing project against the methodology blueprint and fix gaps interactively |
|
|
233
299
|
| `meto-cli doctor` | Check methodology health of the current project |
|
|
234
300
|
| `meto-cli status` | Show swarm progress dashboard (reads SWARM_AWARENESS.md) |
|
|
235
301
|
| `meto-cli --help` | Show available commands and options |
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/cli/audit/index.ts"],"names":[],"mappings":"AAWA,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;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/cli/audit/index.ts"],"names":[],"mappings":"AAWA,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;AA8HD;;;;;;;;GAQG;AACH,wBAAsB,QAAQ,IAAI,OAAO,CAAC,eAAe,EAAE,CAAC,CAmI3D"}
|
package/dist/cli/audit/index.js
CHANGED
|
@@ -4,7 +4,7 @@ import { AUDIT_BLUEPRINT } from "./blueprint.js";
|
|
|
4
4
|
import { detectStack } from "./detect-stack.js";
|
|
5
5
|
import { scanLayer, skipLayer, layerPassed, getFailedResults, } from "./scanner.js";
|
|
6
6
|
import { fixLayer, fixLayerTwo, fixLayerThree } from "./fixer.js";
|
|
7
|
-
import { getDefinitionOfDone } from "../stacks.js";
|
|
7
|
+
import { getCodeGuidelines, getDefinitionOfDone } from "../stacks.js";
|
|
8
8
|
// ---------------------------------------------------------------------------
|
|
9
9
|
// Display helpers
|
|
10
10
|
// ---------------------------------------------------------------------------
|
|
@@ -47,7 +47,7 @@ function printAuditHelp() {
|
|
|
47
47
|
"Runs layered checks and offers to fix missing files.",
|
|
48
48
|
"",
|
|
49
49
|
"Layers (gated -- each requires the previous to pass):",
|
|
50
|
-
" Layer 0: Project Prerequisites (git, README, source dir)",
|
|
50
|
+
" Layer 0: Project Prerequisites (git, README, source dir) -- informational, never blocks",
|
|
51
51
|
" Layer 1: Methodology (CLAUDE.md, ai/ structure, task board, workflows)",
|
|
52
52
|
" Layer 2: Agents (.claude/ settings, agent definitions, agent memory)",
|
|
53
53
|
" Layer 3: Governance (definition of done, commit conventions, session checkpoints)",
|
|
@@ -69,7 +69,7 @@ function printAuditHelp() {
|
|
|
69
69
|
* instead of the generic placeholder. This allows Layer 3 governance files to
|
|
70
70
|
* contain stack-appropriate done criteria.
|
|
71
71
|
*/
|
|
72
|
-
function buildAuditTokenMap(projectDir, definitionOfDone) {
|
|
72
|
+
function buildAuditTokenMap(projectDir, definitionOfDone, codeGuidelinesStack) {
|
|
73
73
|
const projectName = projectDir.split("/").pop() ?? "my-project";
|
|
74
74
|
return {
|
|
75
75
|
PROJECT_NAME: projectName,
|
|
@@ -81,6 +81,7 @@ function buildAuditTokenMap(projectDir, definitionOfDone) {
|
|
|
81
81
|
VALUE_PROPOSITION: "To be defined",
|
|
82
82
|
OUT_OF_SCOPE: "To be defined",
|
|
83
83
|
CODE_CONVENTIONS: "To be defined",
|
|
84
|
+
CODE_GUIDELINES_STACK: codeGuidelinesStack ?? "",
|
|
84
85
|
DEFINITION_OF_DONE: definitionOfDone ?? "To be defined by @meto-pm",
|
|
85
86
|
STARTER_EPICS: "",
|
|
86
87
|
STARTER_TASKS: "",
|
|
@@ -149,11 +150,13 @@ export async function runAudit() {
|
|
|
149
150
|
// Detect tech stack for stack-specific definition-of-done content
|
|
150
151
|
const detected = await detectStack(projectDir);
|
|
151
152
|
const stackDod = getDefinitionOfDone(detected.stack);
|
|
153
|
+
const stackGuidelines = getCodeGuidelines(detected.stack);
|
|
152
154
|
const allLayerResults = [];
|
|
153
155
|
let previousLayerPassed = true;
|
|
154
156
|
for (const layer of AUDIT_BLUEPRINT) {
|
|
155
|
-
// Gating:
|
|
156
|
-
|
|
157
|
+
// Gating: Layer 0 is informational only — never blocks.
|
|
158
|
+
// All other layers are gated on the previous layer passing.
|
|
159
|
+
if (!previousLayerPassed && layer.id > 1) {
|
|
157
160
|
const skipped = skipLayer(layer, `Layer ${layer.id - 1} did not pass -- skipping Layer ${layer.id}`);
|
|
158
161
|
allLayerResults.push(skipped);
|
|
159
162
|
displayLayerResults(skipped);
|
|
@@ -166,7 +169,7 @@ export async function runAudit() {
|
|
|
166
169
|
const failures = getFailedResults(scanResult);
|
|
167
170
|
const fixableFailures = failures.filter((r) => r.expectation.fixable);
|
|
168
171
|
if (fixableFailures.length > 0) {
|
|
169
|
-
const tokens = buildAuditTokenMap(projectDir, stackDod);
|
|
172
|
+
const tokens = buildAuditTokenMap(projectDir, stackDod, stackGuidelines);
|
|
170
173
|
let fixResult;
|
|
171
174
|
if (layer.id === 2) {
|
|
172
175
|
fixResult = await fixLayerTwo(projectDir, scanResult, tokens);
|
|
@@ -184,7 +187,7 @@ export async function runAudit() {
|
|
|
184
187
|
// Re-scan to reflect fixes
|
|
185
188
|
const rescanResult = await scanLayer(projectDir, layer);
|
|
186
189
|
allLayerResults.push(rescanResult);
|
|
187
|
-
previousLayerPassed = layerPassed(rescanResult);
|
|
190
|
+
previousLayerPassed = layer.id === 0 ? true : layerPassed(rescanResult);
|
|
188
191
|
}
|
|
189
192
|
else {
|
|
190
193
|
allLayerResults.push(scanResult);
|
|
@@ -193,7 +196,8 @@ export async function runAudit() {
|
|
|
193
196
|
}
|
|
194
197
|
else {
|
|
195
198
|
allLayerResults.push(scanResult);
|
|
196
|
-
|
|
199
|
+
// Layer 0 is informational — its failures never gate Layer 1
|
|
200
|
+
previousLayerPassed = layer.id === 0 ? true : layerPassed(scanResult);
|
|
197
201
|
}
|
|
198
202
|
}
|
|
199
203
|
// Summary
|
|
@@ -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;AACjD,OAAO,KAAK,CAAC,MAAM,gBAAgB,CAAC;AACpC,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AACjD,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EACL,SAAS,EACT,SAAS,EACT,WAAW,EACX,gBAAgB,GACjB,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAGlE,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/cli/audit/index.ts"],"names":[],"mappings":"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"}
|