@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.
Files changed (122) hide show
  1. package/README.md +299 -64
  2. package/README.zh-CN.md +419 -0
  3. package/dist/cli.d.ts.map +1 -1
  4. package/dist/cli.js +14 -6
  5. package/dist/cli.js.map +1 -1
  6. package/dist/commands/doctor.d.ts.map +1 -1
  7. package/dist/commands/doctor.js +28 -16
  8. package/dist/commands/doctor.js.map +1 -1
  9. package/dist/commands/install.d.ts.map +1 -1
  10. package/dist/commands/install.js +71 -41
  11. package/dist/commands/install.js.map +1 -1
  12. package/dist/commands/uninstall.d.ts.map +1 -1
  13. package/dist/commands/uninstall.js +75 -30
  14. package/dist/commands/uninstall.js.map +1 -1
  15. package/dist/commands/update.d.ts.map +1 -1
  16. package/dist/commands/update.js +34 -21
  17. package/dist/commands/update.js.map +1 -1
  18. package/dist/fs/install-manifest.d.ts +4 -1
  19. package/dist/fs/install-manifest.d.ts.map +1 -1
  20. package/dist/fs/install-manifest.js +13 -1
  21. package/dist/fs/install-manifest.js.map +1 -1
  22. package/dist/fs/materialize.d.ts +2 -0
  23. package/dist/fs/materialize.d.ts.map +1 -1
  24. package/dist/fs/materialize.js +39 -9
  25. package/dist/fs/materialize.js.map +1 -1
  26. package/dist/fs/registry-merge.d.ts.map +1 -1
  27. package/dist/fs/registry-merge.js +72 -29
  28. package/dist/fs/registry-merge.js.map +1 -1
  29. package/dist/index.js +0 -1
  30. package/dist/index.js.map +1 -1
  31. package/dist/scripts/epic-update.cjs +7713 -0
  32. package/dist/scripts/plan-update.cjs +491 -275
  33. package/dist/scripts/session-update.cjs +320 -199
  34. package/dist/types/platform.d.ts +12 -0
  35. package/dist/types/platform.d.ts.map +1 -0
  36. package/dist/types/platform.js +36 -0
  37. package/dist/types/platform.js.map +1 -0
  38. package/dist/types/registry.d.ts +3 -24
  39. package/dist/types/registry.d.ts.map +1 -1
  40. package/dist/util/bilingual.d.ts +10 -0
  41. package/dist/util/bilingual.d.ts.map +1 -0
  42. package/dist/util/bilingual.js +14 -0
  43. package/dist/util/bilingual.js.map +1 -0
  44. package/dist/util/cancel.d.ts +2 -0
  45. package/dist/util/cancel.d.ts.map +1 -0
  46. package/dist/util/cancel.js +6 -0
  47. package/dist/util/cancel.js.map +1 -0
  48. package/dist/util/color.d.ts +9 -6
  49. package/dist/util/color.d.ts.map +1 -1
  50. package/dist/util/color.js +10 -10
  51. package/dist/util/color.js.map +1 -1
  52. package/dist/util/spinner.d.ts +8 -0
  53. package/dist/util/spinner.d.ts.map +1 -0
  54. package/dist/util/spinner.js +17 -0
  55. package/dist/util/spinner.js.map +1 -0
  56. package/install-manifest.yaml +4 -0
  57. package/package.json +4 -3
  58. package/registry.yaml +33 -159
  59. package/sources/defaults/config.yaml +8 -13
  60. package/sources/defaults/project-context.yaml +2 -5
  61. package/sources/defaults/session.yaml +14 -2
  62. package/sources/knowledge/core/manifest.yaml +1 -4
  63. package/sources/scripts/epic-update.js +512 -0
  64. package/sources/scripts/plan-update.js +614 -353
  65. package/sources/scripts/session-update.js +102 -2
  66. package/sources/sections/activation-load-config.md +3 -3
  67. package/sources/sections/activation-load-context.md +42 -13
  68. package/sources/sections/activation-preflight.md +1 -1
  69. package/sources/sections/footer-next-steps.md +3 -2
  70. package/sources/sections/language-constraint.md +26 -0
  71. package/sources/sections/output-format-constraint.md +14 -14
  72. package/sources/sections/project-context-profile.md +29 -29
  73. package/sources/sections/session-update.md +41 -1
  74. package/sources/skills/mvt-analyze/business.md +46 -8
  75. package/sources/skills/mvt-analyze/manifest.yaml +6 -2
  76. package/sources/skills/mvt-analyze-code/business.md +18 -17
  77. package/sources/skills/mvt-analyze-code/manifest.yaml +4 -7
  78. package/sources/skills/mvt-bug-detect/manifest.yaml +3 -0
  79. package/sources/skills/mvt-check-context/business.md +13 -6
  80. package/sources/skills/mvt-check-context/manifest.yaml +2 -4
  81. package/sources/skills/mvt-cleanup/business.md +17 -2
  82. package/sources/skills/mvt-cleanup/manifest.yaml +1 -1
  83. package/sources/skills/mvt-config/business.md +5 -5
  84. package/sources/skills/mvt-config/manifest.yaml +6 -6
  85. package/sources/skills/mvt-create-skill/business.md +3 -15
  86. package/sources/skills/mvt-create-skill/manifest.yaml +1 -6
  87. package/sources/skills/mvt-decompose/business.md +94 -0
  88. package/sources/skills/mvt-decompose/manifest.yaml +121 -0
  89. package/sources/skills/mvt-design/manifest.yaml +1 -1
  90. package/sources/skills/mvt-fix/business.md +21 -6
  91. package/sources/skills/mvt-fix/manifest.yaml +2 -2
  92. package/sources/skills/mvt-help/business.md +11 -9
  93. package/sources/skills/mvt-help/manifest.yaml +2 -4
  94. package/sources/skills/mvt-implement/business.md +51 -8
  95. package/sources/skills/mvt-implement/manifest.yaml +1 -1
  96. package/sources/skills/mvt-init/business.md +23 -13
  97. package/sources/skills/mvt-init/manifest.yaml +2 -3
  98. package/sources/skills/mvt-manage-context/business.md +41 -14
  99. package/sources/skills/mvt-manage-context/manifest.yaml +3 -7
  100. package/sources/skills/mvt-plan-dev/business.md +17 -9
  101. package/sources/skills/mvt-plan-dev/manifest.yaml +1 -1
  102. package/sources/skills/mvt-quick-dev/business.md +22 -7
  103. package/sources/skills/mvt-quick-dev/manifest.yaml +1 -2
  104. package/sources/skills/mvt-refactor/business.md +32 -17
  105. package/sources/skills/mvt-refactor/manifest.yaml +1 -6
  106. package/sources/skills/mvt-resume/business.md +32 -12
  107. package/sources/skills/mvt-resume/manifest.yaml +6 -3
  108. package/sources/skills/mvt-review/business.md +24 -9
  109. package/sources/skills/mvt-review/manifest.yaml +1 -1
  110. package/sources/skills/mvt-status/business.md +37 -9
  111. package/sources/skills/mvt-status/manifest.yaml +5 -2
  112. package/sources/skills/mvt-sync-context/business.md +30 -16
  113. package/sources/skills/mvt-sync-context/manifest.yaml +1 -1
  114. package/sources/skills/mvt-template/business.md +1 -1
  115. package/sources/skills/mvt-template/manifest.yaml +2 -4
  116. package/sources/skills/mvt-test/business.md +30 -15
  117. package/sources/skills/mvt-test/manifest.yaml +1 -1
  118. package/sources/skills/mvt-update-plan/business.md +41 -12
  119. package/sources/skills/mvt-update-plan/manifest.yaml +8 -8
  120. package/sources/templates/decompose-output/body.md +13 -0
  121. package/sources/templates/decompose-output/manifest.yaml +11 -0
  122. 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"}
@@ -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
- path: string;
21
- template: string | null;
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,oBAAoB;IACnC,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,yBAAyB;IACxC,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,eAAe;IAE9B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,YAAY,CAAC,EAAE,MAAM,CAAC;IAEtB,WAAW,CAAC,EAAE,oBAAoB,EAAE,CAAC;IACrC,YAAY,CAAC,EAAE,yBAAyB,EAAE,CAAC;CAC5C;AAED,MAAM,WAAW,UAAU;IACzB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,QAAQ,EAAE,UAAU,GAAG,UAAU,GAAG,SAAS,GAAG,SAAS,CAAC;IAC1D,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB,gBAAgB,CAAC,EAAE,eAAe,CAAC;CACpC;AAED,MAAM,WAAW,QAAQ;IACvB,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;CACpC"}
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,2 @@
1
+ export declare function cancelled(): never;
2
+ //# sourceMappingURL=cancel.d.ts.map
@@ -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,6 @@
1
+ import * as p from "@clack/prompts";
2
+ export function cancelled() {
3
+ p.cancel("Cancelled.");
4
+ throw new Error("Cancelled");
5
+ }
6
+ //# sourceMappingURL=cancel.js.map
@@ -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"}
@@ -1,9 +1,12 @@
1
1
  export declare const color: {
2
- green: (s: string) => string;
3
- yellow: (s: string) => string;
4
- red: (s: string) => string;
5
- cyan: (s: string) => string;
6
- gray: (s: string) => string;
7
- bold: (s: string) => string;
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
@@ -1 +1 @@
1
- {"version":3,"file":"color.d.ts","sourceRoot":"","sources":["../../src/util/color.ts"],"names":[],"mappings":"AAMA,eAAO,MAAM,KAAK;eACL,MAAM;gBACL,MAAM;aACT,MAAM;cACL,MAAM;cACN,MAAM;cACN,MAAM;CACjB,CAAC"}
1
+ {"version":3,"file":"color.d.ts","sourceRoot":"","sources":["../../src/util/color.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,KAAK;;;;;;;;;;CAUjB,CAAC"}
@@ -1,13 +1,13 @@
1
- const useColor = process.stdout.isTTY && !process.env.NO_COLOR;
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: (s) => wrap(32, s),
7
- yellow: (s) => wrap(33, s),
8
- red: (s) => wrap(31, s),
9
- cyan: (s) => wrap(36, s),
10
- gray: (s) => wrap(90, s),
11
- bold: (s) => wrap(1, s),
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
@@ -1 +1 @@
1
- {"version":3,"file":"color.js","sourceRoot":"","sources":["../../src/util/color.ts"],"names":[],"mappings":"AAAA,MAAM,QAAQ,GAAG,OAAO,CAAC,MAAM,CAAC,KAAK,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC;AAE/D,SAAS,IAAI,CAAC,IAAY,EAAE,IAAY;IACtC,OAAO,QAAQ,CAAC,CAAC,CAAC,QAAQ,IAAI,IAAI,IAAI,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC;AACzD,CAAC;AAED,MAAM,CAAC,MAAM,KAAK,GAAG;IACnB,KAAK,EAAE,CAAC,CAAS,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC;IACjC,MAAM,EAAE,CAAC,CAAS,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC;IAClC,GAAG,EAAE,CAAC,CAAS,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC;IAC/B,IAAI,EAAE,CAAC,CAAS,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC;IAChC,IAAI,EAAE,CAAC,CAAS,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC;IAChC,IAAI,EAAE,CAAC,CAAS,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC;CAChC,CAAC"}
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"}
@@ -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-beta.4",
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
- "prompts": "^2.4.2",
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
- # Shared Knowledge
10
- # Loaded by ALL skills at execution time.
11
- # Managed by /mvt-manage-context (user selects "shared") and /mvt-init (project-context).
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
- shared:
16
- - id: "core"
17
- source: "knowledge/core/"
18
- files_from_manifest: true
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
- agent: conductor
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
- agent: conductor
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
- agent: conductor
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
- agent: conductor
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
- agent: conductor
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
- agent: analyst
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
- agent: analyst
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
- category: workflow
77
-
78
- # --- Architect Skills ---
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
- 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
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
- 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
-
41
+ description: "Generate a tracked development plan (plan.yaml) for a large change."
95
42
  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 ---
43
+ description: "Update one task in the active plan.yaml: status, artifacts, notes; auto-advance current_task."
103
44
  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
45
+ description: "Diagnose a bug (root cause, severity, impact scope) without applying fixes."
109
46
  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
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
- 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
-
50
+ description: "Diagnose and fix bugs or errors in the codebase."
124
51
  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
-
52
+ description: "Refactor existing code while preserving behavior."
131
53
  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 ---
54
+ description: "Quickly implement small, well-scoped changes (1-3 files) without the full workflow."
139
55
  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
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
- 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
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
- 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
-
62
+ description: "Show available skills, project status, and workflow guidance."
165
63
  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
-
64
+ description: "Resume an in-progress task in a new conversation from session.yaml and recent artifacts."
172
65
  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
-
66
+ description: "Create custom MVTT skills through an interactive guided workflow."
179
67
  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
-
68
+ description: "Manage knowledge and registry: add (with AI routing), remove, move, rename, list."
186
69
  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
-
70
+ description: "Analyze context token load and provide optimization recommendations."
193
71
  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
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
- # If absent, falls back to interaction_language.
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 # Disable emojis in output
18
- data_format: yaml # Data output format: yaml | json
12
+ no_emojis: true
13
+ data_format: yaml
19
14
 
20
- # AI routing for /mvt-manage-context add
15
+ # AI routing for skill selection in /mvt-manage-context
21
16
  context_routing:
22
- relevance_threshold: 70 # Skills scored >= this are pre-checked; below are folded
17
+ relevance_threshold: 70
23
18
 
24
19
  # Session history limits
25
20
  history_limits:
26
- history: 20 # Max history entries (1-100)
27
- changes: 20 # Max changes entries (1-100)
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 | api-service | cli-tool | library | monorepo | data-pipeline | mobile-app | generic
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"
@@ -1,6 +1,3 @@
1
1
  id: core
2
2
  type: shared
3
-
4
- files:
5
- # User-added entries (origin: user) are appended by /mvt-manage-context.
6
- # `mvtt update` preserves them and only rewrites origin: framework entries.
3
+ files: []