@uoyo/mvtt 2.0.0-beta.3 → 2.0.0-beta.6
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 +299 -64
- package/README.zh-CN.md +419 -0
- package/dist/commands/install.d.ts.map +1 -1
- package/dist/commands/install.js +27 -2
- package/dist/commands/install.js.map +1 -1
- package/dist/commands/uninstall.d.ts.map +1 -1
- package/dist/commands/uninstall.js +19 -7
- package/dist/commands/uninstall.js.map +1 -1
- package/dist/commands/update.d.ts.map +1 -1
- package/dist/commands/update.js +4 -2
- package/dist/commands/update.js.map +1 -1
- package/dist/fs/install-manifest.d.ts +4 -1
- package/dist/fs/install-manifest.d.ts.map +1 -1
- package/dist/fs/install-manifest.js +13 -1
- package/dist/fs/install-manifest.js.map +1 -1
- package/dist/fs/materialize.d.ts +2 -0
- package/dist/fs/materialize.d.ts.map +1 -1
- package/dist/fs/materialize.js +46 -13
- package/dist/fs/materialize.js.map +1 -1
- package/dist/fs/registry-merge.d.ts +19 -0
- package/dist/fs/registry-merge.d.ts.map +1 -0
- package/dist/fs/registry-merge.js +220 -0
- package/dist/fs/registry-merge.js.map +1 -0
- package/dist/scripts/epic-update.cjs +7670 -0
- package/dist/scripts/plan-update.cjs +7736 -0
- package/dist/scripts/session-update.cjs +84 -6
- package/dist/types/platform.d.ts +12 -0
- package/dist/types/platform.d.ts.map +1 -0
- package/dist/types/platform.js +24 -0
- package/dist/types/platform.js.map +1 -0
- package/dist/types/registry.d.ts +3 -24
- package/dist/types/registry.d.ts.map +1 -1
- package/install-manifest.yaml +10 -2
- package/package.json +1 -1
- package/registry.yaml +72 -198
- package/sources/defaults/config.yaml +8 -13
- package/sources/defaults/project-context.yaml +2 -5
- package/sources/defaults/session.yaml +14 -2
- package/sources/knowledge/core/manifest.yaml +1 -4
- package/sources/scripts/epic-update.js +512 -0
- package/sources/scripts/plan-update.js +614 -0
- package/sources/scripts/session-update.js +102 -2
- package/sources/sections/activation-load-config.md +1 -1
- package/sources/sections/activation-load-context.md +42 -13
- package/sources/sections/activation-preflight.md +1 -1
- package/sources/sections/footer-next-steps.md +3 -2
- package/sources/sections/output-format-constraint.md +14 -0
- package/sources/sections/project-context-profile.md +29 -0
- package/sources/sections/session-update.md +41 -1
- package/sources/skills/mvt-analyze/business.md +46 -8
- package/sources/skills/mvt-analyze/manifest.yaml +8 -1
- package/sources/skills/mvt-analyze-code/business.md +18 -17
- package/sources/skills/mvt-analyze-code/manifest.yaml +9 -6
- package/sources/skills/mvt-check-context/business.md +13 -6
- package/sources/skills/mvt-check-context/manifest.yaml +0 -5
- package/sources/skills/mvt-cleanup/business.md +17 -2
- package/sources/skills/mvt-cleanup/manifest.yaml +3 -0
- package/sources/skills/mvt-config/business.md +5 -5
- package/sources/skills/mvt-config/manifest.yaml +3 -6
- package/sources/skills/mvt-create-skill/business.md +2 -14
- package/sources/skills/mvt-create-skill/manifest.yaml +2 -4
- package/sources/skills/mvt-decompose/business.md +94 -0
- package/sources/skills/mvt-decompose/manifest.yaml +121 -0
- package/sources/skills/mvt-design/manifest.yaml +3 -0
- package/sources/skills/mvt-fix/business.md +21 -6
- package/sources/skills/mvt-fix/manifest.yaml +4 -1
- package/sources/skills/mvt-help/business.md +11 -9
- package/sources/skills/mvt-help/manifest.yaml +0 -5
- package/sources/skills/mvt-implement/business.md +57 -10
- package/sources/skills/mvt-implement/manifest.yaml +3 -0
- package/sources/skills/mvt-init/business.md +23 -13
- package/sources/skills/mvt-init/manifest.yaml +4 -2
- package/sources/skills/mvt-manage-context/business.md +41 -14
- package/sources/skills/mvt-manage-context/manifest.yaml +7 -5
- package/sources/skills/mvt-plan-dev/business.md +17 -9
- package/sources/skills/mvt-plan-dev/manifest.yaml +3 -0
- package/sources/skills/mvt-quick-dev/business.md +22 -7
- package/sources/skills/mvt-quick-dev/manifest.yaml +3 -1
- package/sources/skills/mvt-refactor/business.md +32 -17
- package/sources/skills/mvt-refactor/manifest.yaml +2 -4
- package/sources/skills/mvt-resume/business.md +32 -12
- package/sources/skills/mvt-resume/manifest.yaml +3 -3
- package/sources/skills/mvt-review/business.md +24 -9
- package/sources/skills/mvt-review/manifest.yaml +3 -0
- package/sources/skills/mvt-status/business.md +37 -9
- package/sources/skills/mvt-status/manifest.yaml +2 -2
- package/sources/skills/mvt-sync-context/business.md +77 -34
- package/sources/skills/mvt-sync-context/manifest.yaml +6 -0
- package/sources/skills/mvt-template/business.md +1 -1
- package/sources/skills/mvt-template/manifest.yaml +0 -5
- package/sources/skills/mvt-test/business.md +30 -15
- package/sources/skills/mvt-test/manifest.yaml +3 -0
- package/sources/skills/mvt-update-plan/business.md +64 -33
- package/sources/skills/mvt-update-plan/manifest.yaml +10 -7
- package/sources/templates/decompose-output/body.md +13 -0
- package/sources/templates/decompose-output/manifest.yaml +11 -0
|
@@ -7326,7 +7326,11 @@ var ERRORS = {
|
|
|
7326
7326
|
NO_SESSION_YAML: () => "session.yaml not found. Run /mvt-init first to initialize the project.",
|
|
7327
7327
|
SESSION_PARSE_FAILED: (detail) => `Failed to parse session.yaml: ${detail}. Check the file for syntax errors.`,
|
|
7328
7328
|
SESSION_WRITE_FAILED: (detail) => `Failed to write session.yaml: ${detail}`,
|
|
7329
|
-
CONFIG_LIMIT_INVALID: (key, val, min, max, fallback) => `Warning: config history_limits.${key} value "${val}" is invalid (must be integer ${min}-${max}). Using default ${fallback}
|
|
7329
|
+
CONFIG_LIMIT_INVALID: (key, val, min, max, fallback) => `Warning: config history_limits.${key} value "${val}" is invalid (must be integer ${min}-${max}). Using default ${fallback}.`,
|
|
7330
|
+
EPIC_ID_REQUIRED: () => "--new-epic requires --epic-id",
|
|
7331
|
+
CLOSE_NEW_EPIC_CONFLICT: () => "--close-epic and --new-epic are mutually exclusive",
|
|
7332
|
+
NO_ACTIVE_EPIC: (flag) => `${flag} requires an active epic (active_epic.id is empty)`,
|
|
7333
|
+
EPIC_ID_ORPHAN: () => "--epic-id (for sub-change) requires --new-change"
|
|
7330
7334
|
};
|
|
7331
7335
|
var DEFAULT_LIMITS = {
|
|
7332
7336
|
history: 20,
|
|
@@ -7388,6 +7392,9 @@ function validate(args) {
|
|
|
7388
7392
|
if (!args.skill) return ERRORS.MISSING_SKILL();
|
|
7389
7393
|
if (!args.summary) return ERRORS.MISSING_SUMMARY();
|
|
7390
7394
|
if (args["new-change"] && !args["change-id"]) return ERRORS.CHANGE_ID_REQUIRED();
|
|
7395
|
+
if (args["new-epic"] && !args["epic-id"]) return ERRORS.EPIC_ID_REQUIRED();
|
|
7396
|
+
if (args["close-epic"] && args["new-epic"]) return ERRORS.CLOSE_NEW_EPIC_CONFLICT();
|
|
7397
|
+
if (args["epic-id"] && !args["new-change"] && !args["new-epic"]) return ERRORS.EPIC_ID_ORPHAN();
|
|
7391
7398
|
return null;
|
|
7392
7399
|
}
|
|
7393
7400
|
function main() {
|
|
@@ -7440,7 +7447,8 @@ function main() {
|
|
|
7440
7447
|
title: session.active_change.title || "",
|
|
7441
7448
|
plan_path: session.active_change.plan_path || "",
|
|
7442
7449
|
status: "active",
|
|
7443
|
-
updated_at: now
|
|
7450
|
+
updated_at: now,
|
|
7451
|
+
epic_id: session.active_change.epic_id || ""
|
|
7444
7452
|
};
|
|
7445
7453
|
if (existingIdx >= 0) {
|
|
7446
7454
|
session.changes[existingIdx] = snapshotEntry;
|
|
@@ -7456,6 +7464,7 @@ function main() {
|
|
|
7456
7464
|
session.active_change.title = args["new-change"];
|
|
7457
7465
|
session.active_change.created_at = now;
|
|
7458
7466
|
session.active_change.plan_path = "";
|
|
7467
|
+
session.active_change.epic_id = args["epic-id"] || "";
|
|
7459
7468
|
}
|
|
7460
7469
|
if (args["set-initialized"]) {
|
|
7461
7470
|
session.session = session.session || {};
|
|
@@ -7482,7 +7491,8 @@ function main() {
|
|
|
7482
7491
|
title: ac.title || "",
|
|
7483
7492
|
plan_path: ac.plan_path || "",
|
|
7484
7493
|
status: "active",
|
|
7485
|
-
updated_at: now
|
|
7494
|
+
updated_at: now,
|
|
7495
|
+
epic_id: ac.epic_id || ""
|
|
7486
7496
|
};
|
|
7487
7497
|
if (existingIdx >= 0) {
|
|
7488
7498
|
session.changes[existingIdx] = entry;
|
|
@@ -7508,7 +7518,8 @@ function main() {
|
|
|
7508
7518
|
title: ac.title || "",
|
|
7509
7519
|
plan_path: ac.plan_path || "",
|
|
7510
7520
|
status: "done",
|
|
7511
|
-
updated_at: now
|
|
7521
|
+
updated_at: now,
|
|
7522
|
+
epic_id: ac.epic_id || ""
|
|
7512
7523
|
};
|
|
7513
7524
|
if (existingIdx >= 0) {
|
|
7514
7525
|
session.changes[existingIdx] = entry;
|
|
@@ -7526,7 +7537,8 @@ function main() {
|
|
|
7526
7537
|
id: "",
|
|
7527
7538
|
title: "",
|
|
7528
7539
|
created_at: "",
|
|
7529
|
-
plan_path: ""
|
|
7540
|
+
plan_path: "",
|
|
7541
|
+
epic_id: ""
|
|
7530
7542
|
};
|
|
7531
7543
|
}
|
|
7532
7544
|
if (args["set-change-status"]) {
|
|
@@ -7551,9 +7563,75 @@ function main() {
|
|
|
7551
7563
|
}
|
|
7552
7564
|
}
|
|
7553
7565
|
}
|
|
7566
|
+
if (args["new-epic"]) {
|
|
7567
|
+
session.active_epic = session.active_epic || {};
|
|
7568
|
+
if (session.active_epic.id) {
|
|
7569
|
+
session.epics = session.epics || [];
|
|
7570
|
+
const existingIdx = session.epics.findIndex(
|
|
7571
|
+
(e) => e.id === session.active_epic.id
|
|
7572
|
+
);
|
|
7573
|
+
const snapshotEntry = {
|
|
7574
|
+
id: session.active_epic.id,
|
|
7575
|
+
title: session.active_epic.title || "",
|
|
7576
|
+
epic_path: session.active_epic.epic_path || "",
|
|
7577
|
+
status: "active",
|
|
7578
|
+
updated_at: now
|
|
7579
|
+
};
|
|
7580
|
+
if (existingIdx >= 0) {
|
|
7581
|
+
session.epics[existingIdx] = snapshotEntry;
|
|
7582
|
+
} else {
|
|
7583
|
+
session.epics.push(snapshotEntry);
|
|
7584
|
+
}
|
|
7585
|
+
}
|
|
7586
|
+
session.active_epic.id = args["epic-id"];
|
|
7587
|
+
session.active_epic.title = args["new-epic"];
|
|
7588
|
+
session.active_epic.created_at = now;
|
|
7589
|
+
session.active_epic.epic_path = "";
|
|
7590
|
+
}
|
|
7591
|
+
if (args["set-epic-path"]) {
|
|
7592
|
+
session.active_epic = session.active_epic || {};
|
|
7593
|
+
if (!session.active_epic.id && !args["new-epic"]) {
|
|
7594
|
+
process.stderr.write(ERRORS.NO_ACTIVE_EPIC("--set-epic-path") + "\n");
|
|
7595
|
+
process.exit(1);
|
|
7596
|
+
}
|
|
7597
|
+
session.active_epic.epic_path = args["set-epic-path"];
|
|
7598
|
+
}
|
|
7599
|
+
if (args["set-epic-status"]) {
|
|
7600
|
+
session.active_epic = session.active_epic || {};
|
|
7601
|
+
if (!session.active_epic.id && !args["new-epic"]) {
|
|
7602
|
+
process.stderr.write(ERRORS.NO_ACTIVE_EPIC("--set-epic-status") + "\n");
|
|
7603
|
+
process.exit(1);
|
|
7604
|
+
}
|
|
7605
|
+
session.epics = session.epics || [];
|
|
7606
|
+
const epicIdx = session.epics.findIndex(
|
|
7607
|
+
(e) => e.id === session.active_epic.id
|
|
7608
|
+
);
|
|
7609
|
+
if (epicIdx >= 0) {
|
|
7610
|
+
session.epics[epicIdx].status = args["set-epic-status"];
|
|
7611
|
+
session.epics[epicIdx].updated_at = now;
|
|
7612
|
+
}
|
|
7613
|
+
}
|
|
7614
|
+
if (args["close-epic"]) {
|
|
7615
|
+
session.epics = session.epics || [];
|
|
7616
|
+
session.active_epic = session.active_epic || {};
|
|
7617
|
+
const aeId = session.active_epic.id;
|
|
7618
|
+
if (aeId) {
|
|
7619
|
+
const epicIdx = session.epics.findIndex((e) => e.id === aeId);
|
|
7620
|
+
if (epicIdx >= 0) {
|
|
7621
|
+
session.epics[epicIdx].status = "done";
|
|
7622
|
+
session.epics[epicIdx].updated_at = now;
|
|
7623
|
+
}
|
|
7624
|
+
}
|
|
7625
|
+
session.active_epic = {
|
|
7626
|
+
id: "",
|
|
7627
|
+
title: "",
|
|
7628
|
+
created_at: "",
|
|
7629
|
+
epic_path: ""
|
|
7630
|
+
};
|
|
7631
|
+
}
|
|
7554
7632
|
const tmpPath = sessionPath + ".tmp";
|
|
7555
7633
|
try {
|
|
7556
|
-
(0, import_node_fs.writeFileSync)(tmpPath, (0, import_yaml.stringify)(session), "utf-8");
|
|
7634
|
+
(0, import_node_fs.writeFileSync)(tmpPath, (0, import_yaml.stringify)(session, { lineWidth: 200 }), "utf-8");
|
|
7557
7635
|
(0, import_node_fs.renameSync)(tmpPath, sessionPath);
|
|
7558
7636
|
} catch (e) {
|
|
7559
7637
|
try {
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
export type PlatformId = "claude" | "qoder";
|
|
2
|
+
export interface PlatformDef {
|
|
3
|
+
id: PlatformId;
|
|
4
|
+
dir: string;
|
|
5
|
+
skillDir: string;
|
|
6
|
+
description: string;
|
|
7
|
+
}
|
|
8
|
+
export declare const PLATFORMS: PlatformDef[];
|
|
9
|
+
export declare const DEFAULT_PLATFORMS: PlatformId[];
|
|
10
|
+
export declare function getPlatformById(id: string): PlatformDef | undefined;
|
|
11
|
+
export declare function getPlatformsByIds(ids: PlatformId[]): PlatformDef[];
|
|
12
|
+
//# sourceMappingURL=platform.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"platform.d.ts","sourceRoot":"","sources":["../../src/types/platform.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,UAAU,GAAG,QAAQ,GAAG,OAAO,CAAC;AAE5C,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,UAAU,CAAC;IACf,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,eAAO,MAAM,SAAS,EAAE,WAAW,EAalC,CAAC;AAEF,eAAO,MAAM,iBAAiB,EAAE,UAAU,EAAe,CAAC;AAE1D,wBAAgB,eAAe,CAAC,EAAE,EAAE,MAAM,GAAG,WAAW,GAAG,SAAS,CAEnE;AAED,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,UAAU,EAAE,GAAG,WAAW,EAAE,CAIlE"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
export const PLATFORMS = [
|
|
2
|
+
{
|
|
3
|
+
id: "claude",
|
|
4
|
+
dir: ".claude",
|
|
5
|
+
skillDir: ".claude/skills",
|
|
6
|
+
description: "Claude Code / Claude Desktop / Github Copilot",
|
|
7
|
+
},
|
|
8
|
+
{
|
|
9
|
+
id: "qoder",
|
|
10
|
+
dir: ".qoder",
|
|
11
|
+
skillDir: ".qoder/skills",
|
|
12
|
+
description: "Qoder IDE",
|
|
13
|
+
},
|
|
14
|
+
];
|
|
15
|
+
export const DEFAULT_PLATFORMS = ["claude"];
|
|
16
|
+
export function getPlatformById(id) {
|
|
17
|
+
return PLATFORMS.find((p) => p.id === id);
|
|
18
|
+
}
|
|
19
|
+
export function getPlatformsByIds(ids) {
|
|
20
|
+
return ids
|
|
21
|
+
.map((id) => getPlatformById(id))
|
|
22
|
+
.filter((p) => p !== undefined);
|
|
23
|
+
}
|
|
24
|
+
//# sourceMappingURL=platform.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"platform.js","sourceRoot":"","sources":["../../src/types/platform.ts"],"names":[],"mappings":"AASA,MAAM,CAAC,MAAM,SAAS,GAAkB;IACtC;QACE,EAAE,EAAE,QAAQ;QACZ,GAAG,EAAE,SAAS;QACd,QAAQ,EAAE,gBAAgB;QAC1B,WAAW,EAAE,+CAA+C;KAC7D;IACD;QACE,EAAE,EAAE,OAAO;QACX,GAAG,EAAE,QAAQ;QACb,QAAQ,EAAE,eAAe;QACzB,WAAW,EAAE,WAAW;KACzB;CACF,CAAC;AAEF,MAAM,CAAC,MAAM,iBAAiB,GAAiB,CAAC,QAAQ,CAAC,CAAC;AAE1D,MAAM,UAAU,eAAe,CAAC,EAAU;IACxC,OAAO,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;AAC5C,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,GAAiB;IACjD,OAAO,GAAG;SACP,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,eAAe,CAAC,EAAE,CAAC,CAAC;SAChC,MAAM,CAAC,CAAC,CAAC,EAAoB,EAAE,CAAC,CAAC,KAAK,SAAS,CAAC,CAAC;AACtD,CAAC"}
|
package/dist/types/registry.d.ts
CHANGED
|
@@ -1,33 +1,12 @@
|
|
|
1
|
-
export interface NextSuggestionBranch {
|
|
2
|
-
condition: string;
|
|
3
|
-
primary: string;
|
|
4
|
-
primary_desc: string;
|
|
5
|
-
}
|
|
6
|
-
export interface NextSuggestionAlternative {
|
|
7
|
-
skill: string;
|
|
8
|
-
desc?: string;
|
|
9
|
-
when?: string;
|
|
10
|
-
}
|
|
11
|
-
export interface NextSuggestions {
|
|
12
|
-
primary?: string;
|
|
13
|
-
primary_desc?: string;
|
|
14
|
-
conditional?: NextSuggestionBranch[];
|
|
15
|
-
alternatives?: NextSuggestionAlternative[];
|
|
16
|
-
}
|
|
17
1
|
export interface SkillEntry {
|
|
18
|
-
agent: string;
|
|
19
2
|
description: string;
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
category: "workflow" | "shortcut" | "utility" | "project";
|
|
23
|
-
mode: string;
|
|
24
|
-
phase?: string | null;
|
|
25
|
-
depends_on?: string[];
|
|
26
|
-
next_suggestions?: NextSuggestions;
|
|
3
|
+
knowledge?: Record<string, unknown[]>;
|
|
4
|
+
[key: string]: unknown;
|
|
27
5
|
}
|
|
28
6
|
export interface Registry {
|
|
29
7
|
version: string;
|
|
30
8
|
last_updated: string;
|
|
9
|
+
knowledge?: Record<string, unknown[]>;
|
|
31
10
|
skills: Record<string, SkillEntry>;
|
|
32
11
|
}
|
|
33
12
|
//# sourceMappingURL=registry.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/types/registry.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,
|
|
1
|
+
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/types/registry.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,UAAU;IACzB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,EAAE,CAAC,CAAC;IACtC,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED,MAAM,WAAW,QAAQ;IACvB,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,EAAE,CAAC,CAAC;IACtC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;CACpC"}
|
package/install-manifest.yaml
CHANGED
|
@@ -3,16 +3,20 @@ version: 2
|
|
|
3
3
|
generated:
|
|
4
4
|
- pattern: ".claude/skills/mvt-*/SKILL.md"
|
|
5
5
|
source: "build:skills"
|
|
6
|
+
- pattern: ".qoder/skills/mvt-*/SKILL.md"
|
|
7
|
+
source: "build:skills"
|
|
6
8
|
- pattern: ".ai-agents/skills/_templates/*-output.md"
|
|
7
9
|
source: "build:templates"
|
|
8
10
|
- pattern: ".ai-agents/skills/_templates/project-context.md"
|
|
9
11
|
source: "build:templates"
|
|
10
12
|
- pattern: ".ai-agents/knowledge/core/_framework/**"
|
|
11
13
|
source: "copy:sources/knowledge/core/_framework/"
|
|
12
|
-
- pattern: ".ai-agents/registry.yaml"
|
|
13
|
-
source: "copy:registry.yaml"
|
|
14
14
|
- pattern: ".ai-agents/scripts/session-update.cjs"
|
|
15
15
|
source: "bundle:sources/scripts/session-update.js"
|
|
16
|
+
- pattern: ".ai-agents/scripts/plan-update.cjs"
|
|
17
|
+
source: "bundle:sources/scripts/plan-update.js"
|
|
18
|
+
- pattern: ".ai-agents/scripts/epic-update.cjs"
|
|
19
|
+
source: "bundle:sources/scripts/epic-update.js"
|
|
16
20
|
|
|
17
21
|
create_once:
|
|
18
22
|
- path: ".ai-agents/config.yaml"
|
|
@@ -23,6 +27,10 @@ create_once:
|
|
|
23
27
|
source: "sources/defaults/project-context.yaml"
|
|
24
28
|
- path: ".ai-agents/knowledge/core/manifest.yaml"
|
|
25
29
|
source: "sources/knowledge/core/manifest.yaml"
|
|
30
|
+
# Reconcile-merged on update (see src/fs/registry-merge.ts): framework skills
|
|
31
|
+
# are refreshed, user `custom: true` skills and added knowledge bindings kept.
|
|
32
|
+
- path: ".ai-agents/registry.yaml"
|
|
33
|
+
source: "registry.yaml"
|
|
26
34
|
|
|
27
35
|
user_data_dirs:
|
|
28
36
|
- ".ai-agents/workspace/artifacts/"
|
package/package.json
CHANGED
package/registry.yaml
CHANGED
|
@@ -1,198 +1,72 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
#
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
#
|
|
10
|
-
#
|
|
11
|
-
#
|
|
12
|
-
#
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
mvt-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
template:
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
mvt-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
mvt-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
template:
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
description: "
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
mvt-
|
|
72
|
-
|
|
73
|
-
description: "Analyze existing code to generate project-context.md with terms, modules, layers, and business rules. This skill should be used when user wants to understand an existing codebase, generate documentation for legacy code, onboard to a new project, or extract requirements from source code."
|
|
74
|
-
path: .claude/skills/mvt-analyze-code/SKILL.md
|
|
75
|
-
template: .ai-agents/skills/_templates/project-context.md
|
|
76
|
-
category: workflow
|
|
77
|
-
|
|
78
|
-
# --- Architect Skills ---
|
|
79
|
-
mvt-design:
|
|
80
|
-
agent: architect
|
|
81
|
-
description: "Create architecture design based on analyzed requirements. This skill should be used when user wants to design system architecture, define module structure, or create technical blueprints for implementation."
|
|
82
|
-
path: .claude/skills/mvt-design/SKILL.md
|
|
83
|
-
template: .ai-agents/skills/_templates/design-output.md
|
|
84
|
-
category: workflow
|
|
85
|
-
depends_on: [mvt-analyze]
|
|
86
|
-
|
|
87
|
-
mvt-plan-dev:
|
|
88
|
-
agent: architect
|
|
89
|
-
description: "Generate a structured development plan (plan.yaml) for a large change so progress can be tracked across sessions. This skill should be used after /mvt-design when a change is too big to implement in one pass and needs task-level tracking."
|
|
90
|
-
path: .claude/skills/mvt-plan-dev/SKILL.md
|
|
91
|
-
template: null
|
|
92
|
-
category: workflow
|
|
93
|
-
depends_on: [mvt-analyze]
|
|
94
|
-
|
|
95
|
-
mvt-update-plan:
|
|
96
|
-
agent: architect
|
|
97
|
-
description: "Update a single task in the active change's plan.yaml: change status, attach artifacts, leave notes, and auto-advance current_task. This skill should be used after a workflow skill finishes work that maps to a plan task."
|
|
98
|
-
path: .claude/skills/mvt-update-plan/SKILL.md
|
|
99
|
-
template: null
|
|
100
|
-
category: project
|
|
101
|
-
|
|
102
|
-
# --- Developer Skills ---
|
|
103
|
-
mvt-bug-detect:
|
|
104
|
-
agent: analyst
|
|
105
|
-
description: "Analyze and detect bugs by investigating root cause, assessing severity and impact scope. Produces a structured diagnosis in conversation without applying fixes. This skill should be used when user suspects a bug, wants to understand a problem before fixing, or needs impact analysis."
|
|
106
|
-
path: .claude/skills/mvt-bug-detect/SKILL.md
|
|
107
|
-
template: null
|
|
108
|
-
category: shortcut
|
|
109
|
-
mvt-implement:
|
|
110
|
-
agent: developer
|
|
111
|
-
description: "Implement features based on architecture design. This skill should be used when user wants to implement a feature, write production code, or translate design blueprints into working code."
|
|
112
|
-
path: .claude/skills/mvt-implement/SKILL.md
|
|
113
|
-
template: .ai-agents/skills/_templates/implement-output.md
|
|
114
|
-
category: workflow
|
|
115
|
-
depends_on: [mvt-design]
|
|
116
|
-
|
|
117
|
-
mvt-fix:
|
|
118
|
-
agent: developer
|
|
119
|
-
description: "Diagnose and fix bugs or issues in the codebase. This skill should be used when user reports a bug, encounters an error, or wants to diagnose and resolve an issue."
|
|
120
|
-
path: .claude/skills/mvt-fix/SKILL.md
|
|
121
|
-
template: null
|
|
122
|
-
category: shortcut
|
|
123
|
-
|
|
124
|
-
mvt-refactor:
|
|
125
|
-
agent: developer
|
|
126
|
-
description: "Refactor existing code while preserving behavior. This skill should be used when user wants to improve code structure, rename symbols, extract methods or classes, or reorganize code without changing functionality."
|
|
127
|
-
path: .claude/skills/mvt-refactor/SKILL.md
|
|
128
|
-
template: null
|
|
129
|
-
category: shortcut
|
|
130
|
-
|
|
131
|
-
mvt-quick-dev:
|
|
132
|
-
agent: developer
|
|
133
|
-
description: "Quickly implement simple, well-scoped changes without the full analyze-design-implement workflow. This skill should be used when the change is small (1-3 files), architecturally neutral, and clearly specified — such as adding a field, fixing a label, adjusting config, or making a targeted enhancement."
|
|
134
|
-
path: .claude/skills/mvt-quick-dev/SKILL.md
|
|
135
|
-
template: null
|
|
136
|
-
category: shortcut
|
|
137
|
-
|
|
138
|
-
# --- Reviewer Skills ---
|
|
139
|
-
mvt-review:
|
|
140
|
-
agent: reviewer
|
|
141
|
-
description: "Perform code review for quality, standards compliance, and best practices. This skill should be used when user wants code reviewed, quality checked, or to identify issues before merging."
|
|
142
|
-
path: .claude/skills/mvt-review/SKILL.md
|
|
143
|
-
template: .ai-agents/skills/_templates/review-output.md
|
|
144
|
-
category: workflow
|
|
145
|
-
depends_on: [mvt-implement]
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
# --- Tester Skills ---
|
|
149
|
-
mvt-test:
|
|
150
|
-
agent: tester
|
|
151
|
-
description: "Generate and design tests to validate implementations. This skill should be used when user wants to write tests, validate code, generate test cases, or analyze test coverage."
|
|
152
|
-
path: .claude/skills/mvt-test/SKILL.md
|
|
153
|
-
template: .ai-agents/skills/_templates/test-output.md
|
|
154
|
-
category: workflow
|
|
155
|
-
depends_on: [mvt-implement]
|
|
156
|
-
|
|
157
|
-
# --- Utility Skills ---
|
|
158
|
-
mvt-help:
|
|
159
|
-
agent: conductor
|
|
160
|
-
description: "Show available skills, current project status, and workflow guidance. This skill should be used when user is new to MVTT, wants to discover available commands, or needs guidance on what to do next."
|
|
161
|
-
path: .claude/skills/mvt-help/SKILL.md
|
|
162
|
-
template: null
|
|
163
|
-
category: utility
|
|
164
|
-
|
|
165
|
-
mvt-resume:
|
|
166
|
-
agent: conductor
|
|
167
|
-
description: "Resume an in-progress development task in a new conversation. Reads session.yaml (active_change, skill_history, recent_actions) and recent artifacts to reconstruct context. Does not read git state."
|
|
168
|
-
path: .claude/skills/mvt-resume/SKILL.md
|
|
169
|
-
template: null
|
|
170
|
-
category: utility
|
|
171
|
-
|
|
172
|
-
mvt-create-skill:
|
|
173
|
-
agent: conductor
|
|
174
|
-
description: "Create custom MVTT skills through interactive guided workflow. This skill should be used when user wants to create a new skill, extend the framework with custom functionality, or build project-specific automation."
|
|
175
|
-
path: .claude/skills/mvt-create-skill/SKILL.md
|
|
176
|
-
template: null
|
|
177
|
-
category: utility
|
|
178
|
-
|
|
179
|
-
mvt-manage-context:
|
|
180
|
-
agent: conductor
|
|
181
|
-
description: "Unified entry point for managing knowledge and registry. Supports subcommands: add (with AI routing), remove, move, rename, list. Use this skill instead of mvt-add-context."
|
|
182
|
-
path: .claude/skills/mvt-manage-context/SKILL.md
|
|
183
|
-
template: null
|
|
184
|
-
category: utility
|
|
185
|
-
|
|
186
|
-
mvt-check-context:
|
|
187
|
-
agent: conductor
|
|
188
|
-
description: "Analyze context token load and provide optimization recommendations. This skill should be used when user wants to check how much context MVTT loads, identify large files, or optimize workspace size for better performance."
|
|
189
|
-
path: .claude/skills/mvt-check-context/SKILL.md
|
|
190
|
-
template: null
|
|
191
|
-
category: utility
|
|
192
|
-
|
|
193
|
-
mvt-template:
|
|
194
|
-
agent: conductor
|
|
195
|
-
description: "View, customize, and manage output templates for MVTT skills. This skill should be used when user wants to inspect available templates, create custom template versions, reset customizations, or export templates."
|
|
196
|
-
path: .claude/skills/mvt-template/SKILL.md
|
|
197
|
-
template: null
|
|
198
|
-
category: utility
|
|
1
|
+
last_updated: "2026-05-23"
|
|
2
|
+
|
|
3
|
+
# ============================================================
|
|
4
|
+
# Knowledge
|
|
5
|
+
# Project-keyed map. Each key is a project name;
|
|
6
|
+
# "_all" is the reserved key for entries loaded by all projects and all skills.
|
|
7
|
+
# ============================================================
|
|
8
|
+
knowledge:
|
|
9
|
+
# _all:
|
|
10
|
+
# - id: "core"
|
|
11
|
+
# source: "knowledge/core/"
|
|
12
|
+
# files_from_manifest: true
|
|
13
|
+
|
|
14
|
+
# ============================================================
|
|
15
|
+
# Skills
|
|
16
|
+
# ============================================================
|
|
17
|
+
skills:
|
|
18
|
+
mvt-init:
|
|
19
|
+
description: "Initialize or refresh a project: scan structure, detect tech stack, infer project type."
|
|
20
|
+
mvt-status:
|
|
21
|
+
description: "Display current project and workflow status: skill history, active changes, session state."
|
|
22
|
+
mvt-config:
|
|
23
|
+
description: "Manage framework configuration: language, output format, and other settings."
|
|
24
|
+
mvt-sync-context:
|
|
25
|
+
description: "Synchronize workspace context with code after manual edits or git operations."
|
|
26
|
+
mvt-cleanup:
|
|
27
|
+
description: "Clean up workspace artifacts, summarize completed changes, and archive change records."
|
|
28
|
+
mvt-analyze:
|
|
29
|
+
description: "Analyze requirements and extract domain concepts, features, and business rules."
|
|
30
|
+
template: .ai-agents/skills/_templates/analyze-output.md
|
|
31
|
+
mvt-analyze-code:
|
|
32
|
+
description: "Reverse-analyze existing code into project-context.md (terms, modules, layers, rules)."
|
|
33
|
+
template: .ai-agents/skills/_templates/project-context.md
|
|
34
|
+
mvt-decompose:
|
|
35
|
+
description: "Decompose epic-scale requirements into right-sized sub-changes with DAG dependencies."
|
|
36
|
+
template: .ai-agents/skills/_templates/decompose-output.md
|
|
37
|
+
mvt-design:
|
|
38
|
+
description: "Create architecture design from analyzed requirements."
|
|
39
|
+
template: .ai-agents/skills/_templates/design-output.md
|
|
40
|
+
mvt-plan-dev:
|
|
41
|
+
description: "Generate a tracked development plan (plan.yaml) for a large change."
|
|
42
|
+
mvt-update-plan:
|
|
43
|
+
description: "Update one task in the active plan.yaml: status, artifacts, notes; auto-advance current_task."
|
|
44
|
+
mvt-bug-detect:
|
|
45
|
+
description: "Diagnose a bug (root cause, severity, impact scope) without applying fixes."
|
|
46
|
+
mvt-implement:
|
|
47
|
+
description: "Implement features from architecture design; write production code."
|
|
48
|
+
template: .ai-agents/skills/_templates/implement-output.md
|
|
49
|
+
mvt-fix:
|
|
50
|
+
description: "Diagnose and fix bugs or errors in the codebase."
|
|
51
|
+
mvt-refactor:
|
|
52
|
+
description: "Refactor existing code while preserving behavior."
|
|
53
|
+
mvt-quick-dev:
|
|
54
|
+
description: "Quickly implement small, well-scoped changes (1-3 files) without the full workflow."
|
|
55
|
+
mvt-review:
|
|
56
|
+
description: "Review code for quality, standards compliance, and best practices."
|
|
57
|
+
template: .ai-agents/skills/_templates/review-output.md
|
|
58
|
+
mvt-test:
|
|
59
|
+
description: "Generate and design tests to validate implementations."
|
|
60
|
+
template: .ai-agents/skills/_templates/test-output.md
|
|
61
|
+
mvt-help:
|
|
62
|
+
description: "Show available skills, project status, and workflow guidance."
|
|
63
|
+
mvt-resume:
|
|
64
|
+
description: "Resume an in-progress task in a new conversation from session.yaml and recent artifacts."
|
|
65
|
+
mvt-create-skill:
|
|
66
|
+
description: "Create custom MVTT skills through an interactive guided workflow."
|
|
67
|
+
mvt-manage-context:
|
|
68
|
+
description: "Manage knowledge and registry: add (with AI routing), remove, move, rename, list."
|
|
69
|
+
mvt-check-context:
|
|
70
|
+
description: "Analyze context token load and provide optimization recommendations."
|
|
71
|
+
mvt-template:
|
|
72
|
+
description: "View, customize, and manage output templates for MVTT skills."
|
|
@@ -1,27 +1,22 @@
|
|
|
1
|
-
# MVTT Framework - User Configuration
|
|
2
|
-
|
|
3
|
-
version: "2.0"
|
|
4
|
-
|
|
5
1
|
preferences:
|
|
6
2
|
# Language used for interactive responses
|
|
7
|
-
# Options: en-US, zh-CN
|
|
3
|
+
# Options: en-US (English), zh-CN (简体中文)
|
|
8
4
|
interaction_language: en-US
|
|
9
5
|
|
|
10
6
|
# Language used for persistent document output
|
|
11
|
-
#
|
|
12
|
-
# Options: en-US, zh-CN
|
|
7
|
+
# Options: en-US (English), zh-CN (简体中文)
|
|
13
8
|
document_output_language: en-US
|
|
14
9
|
|
|
15
10
|
# Output style
|
|
16
11
|
output:
|
|
17
|
-
no_emojis: true
|
|
18
|
-
data_format: yaml
|
|
12
|
+
no_emojis: true
|
|
13
|
+
data_format: yaml
|
|
19
14
|
|
|
20
|
-
# AI routing for /mvt-manage-context
|
|
15
|
+
# AI routing for skill selection in /mvt-manage-context
|
|
21
16
|
context_routing:
|
|
22
|
-
relevance_threshold: 70
|
|
17
|
+
relevance_threshold: 70
|
|
23
18
|
|
|
24
19
|
# Session history limits
|
|
25
20
|
history_limits:
|
|
26
|
-
history:
|
|
27
|
-
changes:
|
|
21
|
+
history: 10
|
|
22
|
+
changes: 10
|
|
@@ -1,12 +1,9 @@
|
|
|
1
1
|
# Project Context Index
|
|
2
|
-
# Lean index: structural info only. Semantic data lives in project-context.md.
|
|
3
|
-
# Single project: one entry with name="default", path="."
|
|
4
|
-
# Multi-project: one entry per detected sub-project.
|
|
5
|
-
|
|
6
2
|
projects:
|
|
7
3
|
- name: "default" # Project identifier (unique within workspace)
|
|
8
4
|
path: "." # Relative path from repo root
|
|
9
|
-
type: "" # web-frontend
|
|
5
|
+
type: "" # web-frontend,api-service,etc.
|
|
6
|
+
source_paths: []
|
|
10
7
|
tech_stack:
|
|
11
8
|
primary_language: ""
|
|
12
9
|
secondary_languages: []
|
|
@@ -1,14 +1,26 @@
|
|
|
1
|
-
# Workspace Session State
|
|
2
|
-
|
|
3
1
|
session:
|
|
4
2
|
initialized_at: ""
|
|
5
3
|
last_synced_at: ""
|
|
6
4
|
|
|
5
|
+
active_epic:
|
|
6
|
+
id: ""
|
|
7
|
+
title: ""
|
|
8
|
+
created_at: ""
|
|
9
|
+
epic_path: ""
|
|
10
|
+
|
|
11
|
+
epics: []
|
|
12
|
+
# - id: "epic-20260608-ecommerce-platform"
|
|
13
|
+
# title: "ecommerce platform"
|
|
14
|
+
# epic_path: ".ai-agents/workspace/artifacts/epic-20260608-ecommerce-platform/epic.yaml"
|
|
15
|
+
# status: "active" # active | done | abandoned
|
|
16
|
+
# updated_at: "..."
|
|
17
|
+
|
|
7
18
|
active_change:
|
|
8
19
|
id: ""
|
|
9
20
|
title: ""
|
|
10
21
|
created_at: ""
|
|
11
22
|
plan_path: ""
|
|
23
|
+
epic_id: "" # epic parent id or empty
|
|
12
24
|
|
|
13
25
|
changes: []
|
|
14
26
|
# - id: "chg-001"
|