@uoyo/mvtt 2.0.0-beta.4 → 2.0.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 +299 -64
- package/README.zh-CN.md +419 -0
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +14 -6
- package/dist/cli.js.map +1 -1
- package/dist/commands/doctor.d.ts.map +1 -1
- package/dist/commands/doctor.js +28 -16
- package/dist/commands/doctor.js.map +1 -1
- package/dist/commands/install.d.ts.map +1 -1
- package/dist/commands/install.js +71 -41
- package/dist/commands/install.js.map +1 -1
- package/dist/commands/uninstall.d.ts.map +1 -1
- package/dist/commands/uninstall.js +75 -30
- package/dist/commands/uninstall.js.map +1 -1
- package/dist/commands/update.d.ts.map +1 -1
- package/dist/commands/update.js +34 -21
- 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 +39 -9
- package/dist/fs/materialize.js.map +1 -1
- package/dist/fs/registry-merge.d.ts.map +1 -1
- package/dist/fs/registry-merge.js +72 -29
- package/dist/fs/registry-merge.js.map +1 -1
- package/dist/index.js +0 -1
- package/dist/index.js.map +1 -1
- package/dist/scripts/epic-update.cjs +7713 -0
- package/dist/scripts/plan-update.cjs +491 -275
- package/dist/scripts/session-update.cjs +320 -199
- package/dist/types/platform.d.ts +12 -0
- package/dist/types/platform.d.ts.map +1 -0
- package/dist/types/platform.js +36 -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/dist/util/bilingual.d.ts +10 -0
- package/dist/util/bilingual.d.ts.map +1 -0
- package/dist/util/bilingual.js +14 -0
- package/dist/util/bilingual.js.map +1 -0
- package/dist/util/cancel.d.ts +2 -0
- package/dist/util/cancel.d.ts.map +1 -0
- package/dist/util/cancel.js +6 -0
- package/dist/util/cancel.js.map +1 -0
- package/dist/util/color.d.ts +9 -6
- package/dist/util/color.d.ts.map +1 -1
- package/dist/util/color.js +10 -10
- package/dist/util/color.js.map +1 -1
- package/dist/util/spinner.d.ts +8 -0
- package/dist/util/spinner.d.ts.map +1 -0
- package/dist/util/spinner.js +17 -0
- package/dist/util/spinner.js.map +1 -0
- package/install-manifest.yaml +4 -0
- package/package.json +4 -3
- package/registry.yaml +33 -159
- 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 -353
- package/sources/scripts/session-update.js +102 -2
- package/sources/sections/activation-load-config.md +3 -3
- 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/language-constraint.md +26 -0
- package/sources/sections/output-format-constraint.md +14 -14
- package/sources/sections/project-context-profile.md +29 -29
- package/sources/sections/session-update.md +41 -1
- package/sources/skills/mvt-analyze/business.md +46 -8
- package/sources/skills/mvt-analyze/manifest.yaml +6 -2
- package/sources/skills/mvt-analyze-code/business.md +18 -17
- package/sources/skills/mvt-analyze-code/manifest.yaml +4 -7
- package/sources/skills/mvt-bug-detect/manifest.yaml +3 -0
- package/sources/skills/mvt-check-context/business.md +13 -6
- package/sources/skills/mvt-check-context/manifest.yaml +2 -4
- package/sources/skills/mvt-cleanup/business.md +17 -2
- package/sources/skills/mvt-cleanup/manifest.yaml +1 -1
- package/sources/skills/mvt-config/business.md +5 -5
- package/sources/skills/mvt-config/manifest.yaml +6 -6
- package/sources/skills/mvt-create-skill/business.md +3 -15
- package/sources/skills/mvt-create-skill/manifest.yaml +1 -6
- 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 +1 -1
- package/sources/skills/mvt-fix/business.md +21 -6
- package/sources/skills/mvt-fix/manifest.yaml +2 -2
- package/sources/skills/mvt-help/business.md +11 -9
- package/sources/skills/mvt-help/manifest.yaml +2 -4
- package/sources/skills/mvt-implement/business.md +51 -8
- package/sources/skills/mvt-implement/manifest.yaml +1 -1
- package/sources/skills/mvt-init/business.md +23 -13
- package/sources/skills/mvt-init/manifest.yaml +2 -3
- package/sources/skills/mvt-manage-context/business.md +41 -14
- package/sources/skills/mvt-manage-context/manifest.yaml +3 -7
- package/sources/skills/mvt-plan-dev/business.md +17 -9
- package/sources/skills/mvt-plan-dev/manifest.yaml +1 -1
- package/sources/skills/mvt-quick-dev/business.md +22 -7
- package/sources/skills/mvt-quick-dev/manifest.yaml +1 -2
- package/sources/skills/mvt-refactor/business.md +32 -17
- package/sources/skills/mvt-refactor/manifest.yaml +1 -6
- package/sources/skills/mvt-resume/business.md +32 -12
- package/sources/skills/mvt-resume/manifest.yaml +6 -3
- package/sources/skills/mvt-review/business.md +24 -9
- package/sources/skills/mvt-review/manifest.yaml +1 -1
- package/sources/skills/mvt-status/business.md +37 -9
- package/sources/skills/mvt-status/manifest.yaml +5 -2
- package/sources/skills/mvt-sync-context/business.md +30 -16
- package/sources/skills/mvt-sync-context/manifest.yaml +1 -1
- package/sources/skills/mvt-template/business.md +1 -1
- package/sources/skills/mvt-template/manifest.yaml +2 -4
- package/sources/skills/mvt-test/business.md +30 -15
- package/sources/skills/mvt-test/manifest.yaml +1 -1
- package/sources/skills/mvt-update-plan/business.md +41 -12
- package/sources/skills/mvt-update-plan/manifest.yaml +8 -8
- package/sources/templates/decompose-output/body.md +13 -0
- package/sources/templates/decompose-output/manifest.yaml +11 -0
- package/sources/sections/output-language-constraint.md +0 -11
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
export type PlatformId = "claude" | "qoder" | "cursor" | "opencode";
|
|
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,GAAG,QAAQ,GAAG,UAAU,CAAC;AAEpE,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,EAyBlC,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,36 @@
|
|
|
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
|
+
id: "cursor",
|
|
16
|
+
dir: ".cursor",
|
|
17
|
+
skillDir: ".cursor/skills",
|
|
18
|
+
description: "Cursor IDE",
|
|
19
|
+
},
|
|
20
|
+
{
|
|
21
|
+
id: "opencode",
|
|
22
|
+
dir: ".opencode",
|
|
23
|
+
skillDir: ".opencode/skills",
|
|
24
|
+
description: "Opencode CLI",
|
|
25
|
+
},
|
|
26
|
+
];
|
|
27
|
+
export const DEFAULT_PLATFORMS = ["claude"];
|
|
28
|
+
export function getPlatformById(id) {
|
|
29
|
+
return PLATFORMS.find((p) => p.id === id);
|
|
30
|
+
}
|
|
31
|
+
export function getPlatformsByIds(ids) {
|
|
32
|
+
return ids
|
|
33
|
+
.map((id) => getPlatformById(id))
|
|
34
|
+
.filter((p) => p !== undefined);
|
|
35
|
+
}
|
|
36
|
+
//# 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;IACD;QACE,EAAE,EAAE,QAAQ;QACZ,GAAG,EAAE,SAAS;QACd,QAAQ,EAAE,gBAAgB;QAC1B,WAAW,EAAE,YAAY;KAC1B;IACD;QACE,EAAE,EAAE,UAAU;QACd,GAAG,EAAE,WAAW;QAChB,QAAQ,EAAE,kBAAkB;QAC5B,WAAW,EAAE,cAAc;KAC5B;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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Combine an English string with its Chinese translation into a single
|
|
3
|
+
* bilingual message. The English text always comes first, separated from the
|
|
4
|
+
* Chinese text by " / ".
|
|
5
|
+
*
|
|
6
|
+
* @example
|
|
7
|
+
* bilingual("Install complete", "安装完成") // "Install complete / 安装完成"
|
|
8
|
+
*/
|
|
9
|
+
export declare function bilingual(en: string, zh: string): string;
|
|
10
|
+
//# sourceMappingURL=bilingual.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bilingual.d.ts","sourceRoot":"","sources":["../../src/util/bilingual.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,wBAAgB,SAAS,CAAC,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,MAAM,CAGxD"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Combine an English string with its Chinese translation into a single
|
|
3
|
+
* bilingual message. The English text always comes first, separated from the
|
|
4
|
+
* Chinese text by " / ".
|
|
5
|
+
*
|
|
6
|
+
* @example
|
|
7
|
+
* bilingual("Install complete", "安装完成") // "Install complete / 安装完成"
|
|
8
|
+
*/
|
|
9
|
+
export function bilingual(en, zh) {
|
|
10
|
+
if (en === zh)
|
|
11
|
+
return en; // Avoid redundancy when both languages are the same
|
|
12
|
+
return `${en} / ${zh}`;
|
|
13
|
+
}
|
|
14
|
+
//# sourceMappingURL=bilingual.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bilingual.js","sourceRoot":"","sources":["../../src/util/bilingual.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,MAAM,UAAU,SAAS,CAAC,EAAU,EAAE,EAAU;IAC9C,IAAI,EAAE,KAAK,EAAE;QAAE,OAAO,EAAE,CAAC,CAAC,oDAAoD;IAC9E,OAAO,GAAG,EAAE,MAAM,EAAE,EAAE,CAAC;AACzB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cancel.d.ts","sourceRoot":"","sources":["../../src/util/cancel.ts"],"names":[],"mappings":"AAEA,wBAAgB,SAAS,IAAI,KAAK,CAGjC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cancel.js","sourceRoot":"","sources":["../../src/util/cancel.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,gBAAgB,CAAC;AAEpC,MAAM,UAAU,SAAS;IACvB,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;IACvB,MAAM,IAAI,KAAK,CAAC,WAAW,CAAC,CAAC;AAC/B,CAAC"}
|
package/dist/util/color.d.ts
CHANGED
|
@@ -1,9 +1,12 @@
|
|
|
1
1
|
export declare const color: {
|
|
2
|
-
green: (
|
|
3
|
-
yellow: (
|
|
4
|
-
red: (
|
|
5
|
-
cyan: (
|
|
6
|
-
gray: (
|
|
7
|
-
bold: (
|
|
2
|
+
green: import("picocolors/types.js").Formatter;
|
|
3
|
+
yellow: import("picocolors/types.js").Formatter;
|
|
4
|
+
red: import("picocolors/types.js").Formatter;
|
|
5
|
+
cyan: import("picocolors/types.js").Formatter;
|
|
6
|
+
gray: import("picocolors/types.js").Formatter;
|
|
7
|
+
bold: import("picocolors/types.js").Formatter;
|
|
8
|
+
dim: import("picocolors/types.js").Formatter;
|
|
9
|
+
magenta: import("picocolors/types.js").Formatter;
|
|
10
|
+
blue: import("picocolors/types.js").Formatter;
|
|
8
11
|
};
|
|
9
12
|
//# sourceMappingURL=color.d.ts.map
|
package/dist/util/color.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"color.d.ts","sourceRoot":"","sources":["../../src/util/color.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"color.d.ts","sourceRoot":"","sources":["../../src/util/color.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,KAAK;;;;;;;;;;CAUjB,CAAC"}
|
package/dist/util/color.js
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
|
-
|
|
2
|
-
function wrap(code, text) {
|
|
3
|
-
return useColor ? `\x1b[${code}m${text}\x1b[0m` : text;
|
|
4
|
-
}
|
|
1
|
+
import pc from "picocolors";
|
|
5
2
|
export const color = {
|
|
6
|
-
green:
|
|
7
|
-
yellow:
|
|
8
|
-
red:
|
|
9
|
-
cyan:
|
|
10
|
-
gray:
|
|
11
|
-
bold:
|
|
3
|
+
green: pc.green,
|
|
4
|
+
yellow: pc.yellow,
|
|
5
|
+
red: pc.red,
|
|
6
|
+
cyan: pc.cyan,
|
|
7
|
+
gray: pc.gray,
|
|
8
|
+
bold: pc.bold,
|
|
9
|
+
dim: pc.dim,
|
|
10
|
+
magenta: pc.magenta,
|
|
11
|
+
blue: pc.blue,
|
|
12
12
|
};
|
|
13
13
|
//# sourceMappingURL=color.js.map
|
package/dist/util/color.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"color.js","sourceRoot":"","sources":["../../src/util/color.ts"],"names":[],"mappings":"AAAA,
|
|
1
|
+
{"version":3,"file":"color.js","sourceRoot":"","sources":["../../src/util/color.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,YAAY,CAAC;AAE5B,MAAM,CAAC,MAAM,KAAK,GAAG;IACnB,KAAK,EAAE,EAAE,CAAC,KAAK;IACf,MAAM,EAAE,EAAE,CAAC,MAAM;IACjB,GAAG,EAAE,EAAE,CAAC,GAAG;IACX,IAAI,EAAE,EAAE,CAAC,IAAI;IACb,IAAI,EAAE,EAAE,CAAC,IAAI;IACb,IAAI,EAAE,EAAE,CAAC,IAAI;IACb,GAAG,EAAE,EAAE,CAAC,GAAG;IACX,OAAO,EAAE,EAAE,CAAC,OAAO;IACnB,IAAI,EAAE,EAAE,CAAC,IAAI;CACd,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { type Ora } from "ora";
|
|
2
|
+
export type SpinnerHandle = Ora;
|
|
3
|
+
export declare function startSpinner(text: string): SpinnerHandle;
|
|
4
|
+
export declare function withSpinner<T>(text: string, fn: () => Promise<T> | T, options?: {
|
|
5
|
+
successText?: string;
|
|
6
|
+
failText?: string;
|
|
7
|
+
}): Promise<T>;
|
|
8
|
+
//# sourceMappingURL=spinner.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"spinner.d.ts","sourceRoot":"","sources":["../../src/util/spinner.ts"],"names":[],"mappings":"AAAA,OAAY,EAAE,KAAK,GAAG,EAAE,MAAM,KAAK,CAAC;AAEpC,MAAM,MAAM,aAAa,GAAG,GAAG,CAAC;AAEhC,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,aAAa,CAExD;AAED,wBAAsB,WAAW,CAAC,CAAC,EACjC,IAAI,EAAE,MAAM,EACZ,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,EACxB,OAAO,GAAE;IACP,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACd,GACL,OAAO,CAAC,CAAC,CAAC,CAUZ"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import ora from "ora";
|
|
2
|
+
export function startSpinner(text) {
|
|
3
|
+
return ora({ text, color: "cyan" }).start();
|
|
4
|
+
}
|
|
5
|
+
export async function withSpinner(text, fn, options = {}) {
|
|
6
|
+
const spinner = startSpinner(text);
|
|
7
|
+
try {
|
|
8
|
+
const result = await fn();
|
|
9
|
+
spinner.succeed(options.successText ?? text);
|
|
10
|
+
return result;
|
|
11
|
+
}
|
|
12
|
+
catch (err) {
|
|
13
|
+
spinner.fail(options.failText ?? text);
|
|
14
|
+
throw err;
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
//# sourceMappingURL=spinner.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"spinner.js","sourceRoot":"","sources":["../../src/util/spinner.ts"],"names":[],"mappings":"AAAA,OAAO,GAAiB,MAAM,KAAK,CAAC;AAIpC,MAAM,UAAU,YAAY,CAAC,IAAY;IACvC,OAAO,GAAG,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC;AAC9C,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,WAAW,CAC/B,IAAY,EACZ,EAAwB,EACxB,UAGI,EAAE;IAEN,MAAM,OAAO,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC;IACnC,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,EAAE,EAAE,CAAC;QAC1B,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,WAAW,IAAI,IAAI,CAAC,CAAC;QAC7C,OAAO,MAAM,CAAC;IAChB,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,IAAI,IAAI,CAAC,CAAC;QACvC,MAAM,GAAG,CAAC;IACZ,CAAC;AACH,CAAC"}
|
package/install-manifest.yaml
CHANGED
|
@@ -3,6 +3,8 @@ 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"
|
|
@@ -13,6 +15,8 @@ generated:
|
|
|
13
15
|
source: "bundle:sources/scripts/session-update.js"
|
|
14
16
|
- pattern: ".ai-agents/scripts/plan-update.cjs"
|
|
15
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"
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@uoyo/mvtt",
|
|
3
|
-
"version": "2.0.0
|
|
3
|
+
"version": "2.0.0",
|
|
4
4
|
"description": "My Virtual Tech Team - AI-guided prompt orchestration framework",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|
|
@@ -43,15 +43,16 @@
|
|
|
43
43
|
},
|
|
44
44
|
"devDependencies": {
|
|
45
45
|
"@types/node": "^25.6.0",
|
|
46
|
-
"@types/prompts": "^2.4.9",
|
|
47
46
|
"@vitest/coverage-v8": "^2.1.9",
|
|
48
47
|
"esbuild": "^0.28.0",
|
|
49
48
|
"typescript": "^5.4.0",
|
|
50
49
|
"vitest": "^2.0.0"
|
|
51
50
|
},
|
|
52
51
|
"dependencies": {
|
|
52
|
+
"@clack/prompts": "^1.5.1",
|
|
53
53
|
"commander": "^14.0.3",
|
|
54
|
-
"
|
|
54
|
+
"ora": "^9.4.0",
|
|
55
|
+
"picocolors": "^1.1.1",
|
|
55
56
|
"yaml": "^2.4.0"
|
|
56
57
|
},
|
|
57
58
|
"license": "MIT"
|
package/registry.yaml
CHANGED
|
@@ -1,198 +1,72 @@
|
|
|
1
|
-
# MVTT Framework Registry (v2)
|
|
2
|
-
# Single source of truth for skill metadata and knowledge declarations.
|
|
3
|
-
# Consumed at build-time by mvtt CLI and at runtime by /mvt-status and /mvt-help.
|
|
4
|
-
|
|
5
|
-
version: "2.0"
|
|
6
1
|
last_updated: "2026-05-23"
|
|
7
2
|
|
|
8
3
|
# ============================================================
|
|
9
|
-
#
|
|
10
|
-
#
|
|
11
|
-
#
|
|
12
|
-
# Reviewed by /mvt-config and /mvt-check-context.
|
|
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.
|
|
13
7
|
# ============================================================
|
|
14
8
|
knowledge:
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
- id: "project-context"
|
|
20
|
-
source: "knowledge/project/_generated/"
|
|
21
|
-
files: ["project-context.md"]
|
|
9
|
+
# _all:
|
|
10
|
+
# - id: "core"
|
|
11
|
+
# source: "knowledge/core/"
|
|
12
|
+
# files_from_manifest: true
|
|
22
13
|
|
|
23
14
|
# ============================================================
|
|
24
15
|
# Skills
|
|
25
16
|
# ============================================================
|
|
26
17
|
skills:
|
|
27
|
-
# --- Conductor Skills ---
|
|
28
18
|
mvt-init:
|
|
29
|
-
|
|
30
|
-
description: "Initialize or refresh a project by scanning its structure, detecting tech stack, and inferring project type. This skill should be used when starting a new project, re-initializing after structural changes, or setting up the MVTT workspace."
|
|
31
|
-
path: .claude/skills/mvt-init/SKILL.md
|
|
32
|
-
template: null
|
|
33
|
-
category: project
|
|
34
|
-
|
|
19
|
+
description: "Initialize or refresh a project: scan structure, detect tech stack, infer project type."
|
|
35
20
|
mvt-status:
|
|
36
|
-
|
|
37
|
-
description: "Display current project and workflow status including skill history, active changes, and session state. This skill should be used when user wants to check project status, review workflow progress, or see where they are in the development cycle."
|
|
38
|
-
path: .claude/skills/mvt-status/SKILL.md
|
|
39
|
-
template: null
|
|
40
|
-
category: project
|
|
41
|
-
|
|
21
|
+
description: "Display current project and workflow status: skill history, active changes, session state."
|
|
42
22
|
mvt-config:
|
|
43
|
-
|
|
44
|
-
description: "Manage MVTT framework configuration interactively. This skill should be used when user wants to change language, output format, or other framework settings."
|
|
45
|
-
path: .claude/skills/mvt-config/SKILL.md
|
|
46
|
-
template: null
|
|
47
|
-
category: project
|
|
48
|
-
|
|
23
|
+
description: "Manage framework configuration: language, output format, and other settings."
|
|
49
24
|
mvt-sync-context:
|
|
50
|
-
|
|
51
|
-
description: "Synchronize workspace context with code changes after manual modifications or git operations. This skill should be used when context appears out of sync with code, after manual edits outside the workflow, or after git merge/rebase."
|
|
52
|
-
path: .claude/skills/mvt-sync-context/SKILL.md
|
|
53
|
-
template: null
|
|
54
|
-
category: project
|
|
55
|
-
|
|
25
|
+
description: "Synchronize workspace context with code after manual edits or git operations."
|
|
56
26
|
mvt-cleanup:
|
|
57
|
-
|
|
58
|
-
description: "Clean up workspace artifacts, summarize completed changes, and maintain workspace health. This skill should be used when workspace has accumulated old artifacts, token footprint needs reduction, or to archive completed change records."
|
|
59
|
-
path: .claude/skills/mvt-cleanup/SKILL.md
|
|
60
|
-
template: null
|
|
61
|
-
category: project
|
|
62
|
-
|
|
63
|
-
# --- Analyst Skills ---
|
|
27
|
+
description: "Clean up workspace artifacts, summarize completed changes, and archive change records."
|
|
64
28
|
mvt-analyze:
|
|
65
|
-
|
|
66
|
-
description: "Analyze requirements documents and extract domain concepts. This skill should be used when user wants to analyze requirements, extract features and business rules, or start the analysis phase of a development workflow."
|
|
67
|
-
path: .claude/skills/mvt-analyze/SKILL.md
|
|
29
|
+
description: "Analyze requirements and extract domain concepts, features, and business rules."
|
|
68
30
|
template: .ai-agents/skills/_templates/analyze-output.md
|
|
69
|
-
category: workflow
|
|
70
|
-
|
|
71
31
|
mvt-analyze-code:
|
|
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
|
|
32
|
+
description: "Reverse-analyze existing code into project-context.md (terms, modules, layers, rules)."
|
|
75
33
|
template: .ai-agents/skills/_templates/project-context.md
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
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
|
|
79
37
|
mvt-design:
|
|
80
|
-
|
|
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
|
|
38
|
+
description: "Create architecture design from analyzed requirements."
|
|
83
39
|
template: .ai-agents/skills/_templates/design-output.md
|
|
84
|
-
category: workflow
|
|
85
|
-
depends_on: [mvt-analyze]
|
|
86
|
-
|
|
87
40
|
mvt-plan-dev:
|
|
88
|
-
|
|
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
|
-
|
|
41
|
+
description: "Generate a tracked development plan (plan.yaml) for a large change."
|
|
95
42
|
mvt-update-plan:
|
|
96
|
-
|
|
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 ---
|
|
43
|
+
description: "Update one task in the active plan.yaml: status, artifacts, notes; auto-advance current_task."
|
|
103
44
|
mvt-bug-detect:
|
|
104
|
-
|
|
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
|
|
45
|
+
description: "Diagnose a bug (root cause, severity, impact scope) without applying fixes."
|
|
109
46
|
mvt-implement:
|
|
110
|
-
|
|
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
|
|
47
|
+
description: "Implement features from architecture design; write production code."
|
|
113
48
|
template: .ai-agents/skills/_templates/implement-output.md
|
|
114
|
-
category: workflow
|
|
115
|
-
depends_on: [mvt-design]
|
|
116
|
-
|
|
117
49
|
mvt-fix:
|
|
118
|
-
|
|
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
|
-
|
|
50
|
+
description: "Diagnose and fix bugs or errors in the codebase."
|
|
124
51
|
mvt-refactor:
|
|
125
|
-
|
|
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
|
-
|
|
52
|
+
description: "Refactor existing code while preserving behavior."
|
|
131
53
|
mvt-quick-dev:
|
|
132
|
-
|
|
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 ---
|
|
54
|
+
description: "Quickly implement small, well-scoped changes (1-3 files) without the full workflow."
|
|
139
55
|
mvt-review:
|
|
140
|
-
|
|
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
|
|
56
|
+
description: "Review code for quality, standards compliance, and best practices."
|
|
143
57
|
template: .ai-agents/skills/_templates/review-output.md
|
|
144
|
-
category: workflow
|
|
145
|
-
depends_on: [mvt-implement]
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
# --- Tester Skills ---
|
|
149
58
|
mvt-test:
|
|
150
|
-
|
|
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
|
|
59
|
+
description: "Generate and design tests to validate implementations."
|
|
153
60
|
template: .ai-agents/skills/_templates/test-output.md
|
|
154
|
-
category: workflow
|
|
155
|
-
depends_on: [mvt-implement]
|
|
156
|
-
|
|
157
|
-
# --- Utility Skills ---
|
|
158
61
|
mvt-help:
|
|
159
|
-
|
|
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
|
-
|
|
62
|
+
description: "Show available skills, project status, and workflow guidance."
|
|
165
63
|
mvt-resume:
|
|
166
|
-
|
|
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
|
-
|
|
64
|
+
description: "Resume an in-progress task in a new conversation from session.yaml and recent artifacts."
|
|
172
65
|
mvt-create-skill:
|
|
173
|
-
|
|
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
|
-
|
|
66
|
+
description: "Create custom MVTT skills through an interactive guided workflow."
|
|
179
67
|
mvt-manage-context:
|
|
180
|
-
|
|
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
|
-
|
|
68
|
+
description: "Manage knowledge and registry: add (with AI routing), remove, move, rename, list."
|
|
186
69
|
mvt-check-context:
|
|
187
|
-
|
|
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
|
-
|
|
70
|
+
description: "Analyze context token load and provide optimization recommendations."
|
|
193
71
|
mvt-template:
|
|
194
|
-
|
|
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
|
|
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"
|