@uoyo/mvtt 2.0.0-beta.6 → 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/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 +64 -59
- package/dist/commands/install.js.map +1 -1
- package/dist/commands/uninstall.d.ts.map +1 -1
- package/dist/commands/uninstall.js +58 -25
- package/dist/commands/uninstall.js.map +1 -1
- package/dist/commands/update.d.ts.map +1 -1
- package/dist/commands/update.js +31 -20
- package/dist/commands/update.js.map +1 -1
- package/dist/index.js +0 -1
- package/dist/index.js.map +1 -1
- package/dist/scripts/epic-update.cjs +236 -193
- package/dist/scripts/plan-update.cjs +236 -193
- package/dist/scripts/session-update.cjs +236 -193
- package/dist/types/platform.d.ts +1 -1
- package/dist/types/platform.d.ts.map +1 -1
- package/dist/types/platform.js +12 -0
- package/dist/types/platform.js.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/package.json +4 -3
- package/registry.yaml +72 -72
- package/sources/sections/activation-load-config.md +2 -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/skills/mvt-analyze/manifest.yaml +1 -1
- package/sources/skills/mvt-analyze-code/manifest.yaml +1 -1
- package/sources/skills/mvt-bug-detect/manifest.yaml +3 -0
- package/sources/skills/mvt-check-context/manifest.yaml +3 -0
- package/sources/skills/mvt-cleanup/manifest.yaml +1 -1
- package/sources/skills/mvt-config/manifest.yaml +3 -0
- package/sources/skills/mvt-create-skill/business.md +1 -1
- package/sources/skills/mvt-create-skill/manifest.yaml +1 -1
- package/sources/skills/mvt-decompose/manifest.yaml +1 -1
- package/sources/skills/mvt-design/manifest.yaml +1 -1
- package/sources/skills/mvt-fix/manifest.yaml +1 -1
- package/sources/skills/mvt-help/manifest.yaml +3 -0
- package/sources/skills/mvt-implement/manifest.yaml +1 -1
- package/sources/skills/mvt-init/manifest.yaml +1 -1
- package/sources/skills/mvt-manage-context/manifest.yaml +1 -1
- package/sources/skills/mvt-plan-dev/manifest.yaml +1 -1
- package/sources/skills/mvt-quick-dev/manifest.yaml +1 -1
- package/sources/skills/mvt-refactor/manifest.yaml +1 -1
- package/sources/skills/mvt-resume/manifest.yaml +3 -0
- package/sources/skills/mvt-review/manifest.yaml +1 -1
- package/sources/skills/mvt-status/manifest.yaml +3 -0
- package/sources/skills/mvt-sync-context/manifest.yaml +1 -1
- package/sources/skills/mvt-template/manifest.yaml +3 -0
- package/sources/skills/mvt-test/manifest.yaml +1 -1
- package/sources/skills/mvt-update-plan/manifest.yaml +1 -1
- package/sources/sections/output-language-constraint.md +0 -11
package/dist/types/platform.d.ts
CHANGED
|
@@ -1 +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;
|
|
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"}
|
package/dist/types/platform.js
CHANGED
|
@@ -11,6 +11,18 @@ export const PLATFORMS = [
|
|
|
11
11
|
skillDir: ".qoder/skills",
|
|
12
12
|
description: "Qoder IDE",
|
|
13
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
|
+
},
|
|
14
26
|
];
|
|
15
27
|
export const DEFAULT_PLATFORMS = ["claude"];
|
|
16
28
|
export function getPlatformById(id) {
|
|
@@ -1 +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"}
|
|
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"}
|
|
@@ -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/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,72 +1,72 @@
|
|
|
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
|
+
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."
|
|
@@ -2,8 +2,8 @@
|
|
|
2
2
|
Read `.ai-agents/config.yaml` and enforce the following throughout this entire session:
|
|
3
3
|
|
|
4
4
|
**Language**:
|
|
5
|
-
- `preferences.interaction_language` →
|
|
6
|
-
- `preferences.document_output_language` → See **
|
|
5
|
+
- `preferences.interaction_language` → Language for everything spoken to the user (chat, prompts, tables); NOT for files written to disk. See the **Language Constraint** section below for the full, non-negotiable rules.
|
|
6
|
+
- `preferences.document_output_language` → Language for files written to disk. See the **Language Constraint** section below for the full rules.
|
|
7
7
|
|
|
8
8
|
**Other preferences**:
|
|
9
9
|
- `preferences.output.no_emojis` → If true, never use emojis
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
## Language Constraint (Mandatory)
|
|
2
|
+
|
|
3
|
+
This constraint governs the language of **everything** this skill produces. It has two independent scopes — interactive output (what you say to the user) and persisted document output (what you write to disk). Both are NON-NEGOTIABLE and override any other language signals.
|
|
4
|
+
|
|
5
|
+
### Interactive Output (spoken to the user)
|
|
6
|
+
|
|
7
|
+
All interactive output — chat replies, questions, prompts, status lines, tables, and summaries shown in the conversation — MUST be written in the language specified by `preferences.interaction_language` from config.yaml.
|
|
8
|
+
|
|
9
|
+
**Rules**:
|
|
10
|
+
- This applies to EVERY message in the conversation, not just the first — re-assert it on every turn, including long sessions.
|
|
11
|
+
- Do NOT mirror the language of: the user's prompt, the source code or its comments, this skill's own English body, file contents you just read, or tool output. None of these are language signals.
|
|
12
|
+
- If the user writes to you in a different language, still reply in the configured `interaction_language` (unless they explicitly ask you to switch).
|
|
13
|
+
- If `interaction_language` is not set, fall back to `en-US`.
|
|
14
|
+
- This constraint is NON-NEGOTIABLE and overrides any other language signals.
|
|
15
|
+
|
|
16
|
+
### Persisted Document Output (files written to disk)
|
|
17
|
+
|
|
18
|
+
All persisted document output (files written to disk) MUST be written in the language specified by `preferences.document_output_language` from config.yaml.
|
|
19
|
+
|
|
20
|
+
**Scope**: artifact files, generated reports, plans, and any markdown written to disk.
|
|
21
|
+
|
|
22
|
+
**Rules**:
|
|
23
|
+
- Section headings defined in templates may remain in their original language, but all generated **content** MUST use the configured language
|
|
24
|
+
- If `document_output_language` is not set, fall back to `interaction_language`
|
|
25
|
+
- Do NOT infer output language from template headings, user prompt language, or source code comments
|
|
26
|
+
- This constraint is NON-NEGOTIABLE and overrides any other language signals
|
|
@@ -1,14 +1,14 @@
|
|
|
1
|
-
## Output Format Constraint (Mandatory)
|
|
2
|
-
|
|
3
|
-
All persisted document output (markdown written to disk) MUST follow the formatting rules below. These rules govern *how* content is rendered, independent of the language it is written in.
|
|
4
|
-
**Scope**: artifact files, generated reports, plans, design documents, and any markdown written to disk. These rules do NOT apply to conversational output in the chat.
|
|
5
|
-
|
|
6
|
-
**Rules**:
|
|
7
|
-
- **Diagrams**: Express flowcharts, architecture, sequence, and structure diagrams as fenced `mermaid` code blocks. Do NOT draw diagrams with ASCII art (boxes made of `+`, `-`, `|`, arrows like `-->` outside mermaid, etc.).
|
|
8
|
-
- **Tables**: Render tabular data as Markdown tables (`| col | col |`). Do NOT simulate tables with space- or tab-aligned text.
|
|
9
|
-
- **Code**: Place code, commands, and config snippets in fenced code blocks with a language tag (e.g. ```` ```ts ````, ```` ```bash ````, ```` ```yaml ````). Do NOT leave code in bare or untagged fences.
|
|
10
|
-
- **Headings**: Use the Markdown heading hierarchy (`#` -> `##` -> `###`) without skipping levels. Do NOT use bold text as a substitute for a heading.
|
|
11
|
-
|
|
12
|
-
**Notes**:
|
|
13
|
-
- If a diagram genuinely cannot be expressed in mermaid (e.g. a precise spatial/pixel layout), state that explicitly and prefer a Markdown table or prose description over ASCII art.
|
|
14
|
-
- This constraint is NON-NEGOTIABLE and overrides formatting habits inferred from templates or source material.
|
|
1
|
+
## Output Format Constraint (Mandatory)
|
|
2
|
+
|
|
3
|
+
All persisted document output (markdown written to disk) MUST follow the formatting rules below. These rules govern *how* content is rendered, independent of the language it is written in.
|
|
4
|
+
**Scope**: artifact files, generated reports, plans, design documents, and any markdown written to disk. These rules do NOT apply to conversational output in the chat.
|
|
5
|
+
|
|
6
|
+
**Rules**:
|
|
7
|
+
- **Diagrams**: Express flowcharts, architecture, sequence, and structure diagrams as fenced `mermaid` code blocks. Do NOT draw diagrams with ASCII art (boxes made of `+`, `-`, `|`, arrows like `-->` outside mermaid, etc.).
|
|
8
|
+
- **Tables**: Render tabular data as Markdown tables (`| col | col |`). Do NOT simulate tables with space- or tab-aligned text.
|
|
9
|
+
- **Code**: Place code, commands, and config snippets in fenced code blocks with a language tag (e.g. ```` ```ts ````, ```` ```bash ````, ```` ```yaml ````). Do NOT leave code in bare or untagged fences.
|
|
10
|
+
- **Headings**: Use the Markdown heading hierarchy (`#` -> `##` -> `###`) without skipping levels. Do NOT use bold text as a substitute for a heading.
|
|
11
|
+
|
|
12
|
+
**Notes**:
|
|
13
|
+
- If a diagram genuinely cannot be expressed in mermaid (e.g. a precise spatial/pixel layout), state that explicitly and prefer a Markdown table or prose description over ASCII art.
|
|
14
|
+
- This constraint is NON-NEGOTIABLE and overrides formatting habits inferred from templates or source material.
|
|
@@ -1,29 +1,29 @@
|
|
|
1
|
-
## Document Profile: project-context.md
|
|
2
|
-
|
|
3
|
-
Before writing to `project-context.md`, understand what this document IS and IS NOT.
|
|
4
|
-
|
|
5
|
-
### Identity
|
|
6
|
-
`project-context.md` is the project's **long-term semantic ground truth** -- a self-contained knowledge base consumed by AI skills to make decisions. It is NOT a copy of design documents, NOT a changelog, NOT an ADR index.
|
|
7
|
-
|
|
8
|
-
### Audience
|
|
9
|
-
The readers are AI skill instances (implementer, designer, tester, reviewer), NOT humans reading for reference. They use this document to make **binary decisions** (is this import legal? does this test cover this rule?) -- not to trace design rationale.
|
|
10
|
-
|
|
11
|
-
### Content Quality Standards
|
|
12
|
-
Every piece of content written into `project-context.md` must satisfy ALL of the following:
|
|
13
|
-
|
|
14
|
-
1. **Self-contained**: understandable without consulting any external document, artifact, or ADR.
|
|
15
|
-
2. **Actionable**: usable by an AI skill to make a yes/no decision or produce a concrete output (e.g., a test case).
|
|
16
|
-
3. **Atomic**: each item is independently meaningful -- not a fragment of a larger argument that only makes sense in its source document.
|
|
17
|
-
4. **Lean**: the token budget for this document is <= 4000 (healthy threshold). Content that does not directly serve a decision should be excluded.
|
|
18
|
-
5. **Stable**: only persist knowledge with long-term reference value. Transient state (change metadata, in-progress decisions, temporary workarounds) belongs in session.yaml or artifacts.
|
|
19
|
-
|
|
20
|
-
### Governing Principle (What Does NOT Belong)
|
|
21
|
-
**If a reader must consult an external document to understand an entry, that entry -- or its reference marker -- does not belong here.**
|
|
22
|
-
|
|
23
|
-
Strip any cross-reference marker (pointers to ADRs, design-document section numbers, internal rule labels, etc.). Remove only the *reference marker*, NEVER the *substantive content* it annotates.
|
|
24
|
-
|
|
25
|
-
- ✅ `idempotency key or exists-or-skip semantics (ADR-06, §12.4)` → `idempotency key or exists-or-skip semantics`
|
|
26
|
-
- ✅ `B-1: resume() degrades to rebuild on protocol error` → `resume() degrades to rebuild on protocol error`
|
|
27
|
-
- ❌ `Subscriber Idempotency Contract` -- this is the term itself, keep it.
|
|
28
|
-
|
|
29
|
-
> This profile applies ONLY when the target document is `project-context.md`. Other knowledge files (principle/, project/, core/user/, etc.) are not governed by it.
|
|
1
|
+
## Document Profile: project-context.md
|
|
2
|
+
|
|
3
|
+
Before writing to `project-context.md`, understand what this document IS and IS NOT.
|
|
4
|
+
|
|
5
|
+
### Identity
|
|
6
|
+
`project-context.md` is the project's **long-term semantic ground truth** -- a self-contained knowledge base consumed by AI skills to make decisions. It is NOT a copy of design documents, NOT a changelog, NOT an ADR index.
|
|
7
|
+
|
|
8
|
+
### Audience
|
|
9
|
+
The readers are AI skill instances (implementer, designer, tester, reviewer), NOT humans reading for reference. They use this document to make **binary decisions** (is this import legal? does this test cover this rule?) -- not to trace design rationale.
|
|
10
|
+
|
|
11
|
+
### Content Quality Standards
|
|
12
|
+
Every piece of content written into `project-context.md` must satisfy ALL of the following:
|
|
13
|
+
|
|
14
|
+
1. **Self-contained**: understandable without consulting any external document, artifact, or ADR.
|
|
15
|
+
2. **Actionable**: usable by an AI skill to make a yes/no decision or produce a concrete output (e.g., a test case).
|
|
16
|
+
3. **Atomic**: each item is independently meaningful -- not a fragment of a larger argument that only makes sense in its source document.
|
|
17
|
+
4. **Lean**: the token budget for this document is <= 4000 (healthy threshold). Content that does not directly serve a decision should be excluded.
|
|
18
|
+
5. **Stable**: only persist knowledge with long-term reference value. Transient state (change metadata, in-progress decisions, temporary workarounds) belongs in session.yaml or artifacts.
|
|
19
|
+
|
|
20
|
+
### Governing Principle (What Does NOT Belong)
|
|
21
|
+
**If a reader must consult an external document to understand an entry, that entry -- or its reference marker -- does not belong here.**
|
|
22
|
+
|
|
23
|
+
Strip any cross-reference marker (pointers to ADRs, design-document section numbers, internal rule labels, etc.). Remove only the *reference marker*, NEVER the *substantive content* it annotates.
|
|
24
|
+
|
|
25
|
+
- ✅ `idempotency key or exists-or-skip semantics (ADR-06, §12.4)` → `idempotency key or exists-or-skip semantics`
|
|
26
|
+
- ✅ `B-1: resume() degrades to rebuild on protocol error` → `resume() degrades to rebuild on protocol error`
|
|
27
|
+
- ❌ `Subscriber Idempotency Contract` -- this is the term itself, keep it.
|
|
28
|
+
|
|
29
|
+
> This profile applies ONLY when the target document is `project-context.md`. Other knowledge files (principle/, project/, core/user/, etc.) are not governed by it.
|
|
@@ -212,7 +212,7 @@ Copy the following sections verbatim from this document (the assembled SKILL.md
|
|
|
212
212
|
|---------|----------------------|-----------------|
|
|
213
213
|
| Activation Protocol | `## Activation Protocol` | Add `extended_context` entries if the skill needs additional context sources; otherwise copy as-is |
|
|
214
214
|
| Load Config | Load Config step within Activation Protocol | Copy as-is |
|
|
215
|
-
|
|
|
215
|
+
| Language Constraint | Language Constraint step within Activation Protocol | Copy as-is |
|
|
216
216
|
| Pre-flight Checks | Pre-flight Checks step within Activation Protocol | Replace `checks` table with skill-specific checks; if none required, use a single INFO row |
|
|
217
217
|
| State Update | `## State Update` | Replace `/{name}` with the new skill's command; include `active_change` conditional block only if the skill creates changes; include `Shortcut Operation Rules` if the user opted for shortcut semantics during Step 5 design |
|
|
218
218
|
| Suggested Next Steps | `## Suggested Next Steps` | Replace `current_skill` with the new skill name; replace conditional suggestions with skill-appropriate ones |
|