flower-trellis 0.3.1 → 0.4.0-beta.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 +1 -1
- package/enhancements/0.6/.agents/skills/trellis-auto-loop/SKILL.md +131 -0
- package/enhancements/0.6/.agents/skills/trellis-push/SKILL.md +16 -1
- package/enhancements/0.6/.agents/skills/trellis-route/SKILL.md +21 -16
- package/enhancements/0.6/.agents/skills/trellis-route/scripts/route_state.py +92 -3
- package/enhancements/0.6/.claude/skills/trellis-auto-loop/SKILL.md +131 -0
- package/enhancements/0.6/.claude/skills/trellis-push/SKILL.md +16 -1
- package/enhancements/0.6/.claude/skills/trellis-route/SKILL.md +21 -16
- package/enhancements/0.6/.claude/skills/trellis-route/scripts/route_state.py +92 -3
- package/enhancements/0.6/overrides/workflow-states/planning-inline.md +1 -0
- package/enhancements/0.6/overrides/workflow-states/planning.md +1 -0
- package/enhancements/0.6/overrides/workflow.md +9 -1
- package/enhancements/0.6/scripts/auto_loop.py +782 -0
- package/enhancements/MANIFEST.json +11 -4
- package/package.json +2 -2
- package/src/cli.js +2 -1
- package/src/constants.js +3 -0
- package/src/lib/apply-enhancements.js +11 -2
- package/src/lib/copy-scripts.js +36 -0
- package/src/lib/pick-platforms.js +4 -1
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
|
-
"syncedAt": "2026-06-
|
|
2
|
+
"syncedAt": "2026-06-29T06:45:39.636Z",
|
|
3
3
|
"syncedFrom": "vendor/skill-garden/.trellis",
|
|
4
|
-
"sourceCommit": "
|
|
4
|
+
"sourceCommit": "e1959f86b6ee92ad97820dfd8f37068331cddb87",
|
|
5
5
|
"variants": {
|
|
6
6
|
"old": {
|
|
7
7
|
"claudeSkills": [],
|
|
@@ -33,7 +33,8 @@
|
|
|
33
33
|
],
|
|
34
34
|
"overrides": [],
|
|
35
35
|
"workflowStates": [],
|
|
36
|
-
"skillOverrides": []
|
|
36
|
+
"skillOverrides": [],
|
|
37
|
+
"scripts": []
|
|
37
38
|
},
|
|
38
39
|
"0.5": {
|
|
39
40
|
"claudeSkills": [
|
|
@@ -71,10 +72,12 @@
|
|
|
71
72
|
"trellis-route.md"
|
|
72
73
|
],
|
|
73
74
|
"workflowStates": [],
|
|
74
|
-
"skillOverrides": []
|
|
75
|
+
"skillOverrides": [],
|
|
76
|
+
"scripts": []
|
|
75
77
|
},
|
|
76
78
|
"0.6": {
|
|
77
79
|
"claudeSkills": [
|
|
80
|
+
"trellis-auto-loop",
|
|
78
81
|
"trellis-check-all",
|
|
79
82
|
"trellis-create-command",
|
|
80
83
|
"trellis-diff-brief",
|
|
@@ -89,6 +92,7 @@
|
|
|
89
92
|
"trellis-visualize"
|
|
90
93
|
],
|
|
91
94
|
"agentsSkills": [
|
|
95
|
+
"trellis-auto-loop",
|
|
92
96
|
"trellis-check-all",
|
|
93
97
|
"trellis-create-command",
|
|
94
98
|
"trellis-diff-brief",
|
|
@@ -115,6 +119,9 @@
|
|
|
115
119
|
],
|
|
116
120
|
"skillOverrides": [
|
|
117
121
|
"trellis-finish-work.md"
|
|
122
|
+
],
|
|
123
|
+
"scripts": [
|
|
124
|
+
"auto_loop.py"
|
|
118
125
|
]
|
|
119
126
|
}
|
|
120
127
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "flower-trellis",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.4.0-beta.0",
|
|
4
4
|
"description": "一键安装/升级 Trellis 并自动融合 skill-garden 强化包(默认 Claude + agents)",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
},
|
|
14
14
|
"dependencies": {
|
|
15
15
|
"@inquirer/prompts": "^8.5.2",
|
|
16
|
-
"@mindfoldhq/trellis": "0.6.
|
|
16
|
+
"@mindfoldhq/trellis": "0.6.5",
|
|
17
17
|
"chalk": "^5.6.2",
|
|
18
18
|
"figlet": "^1.11.0",
|
|
19
19
|
"node-pty": "^1.1.0"
|
package/src/cli.js
CHANGED
|
@@ -82,7 +82,8 @@ flower 自有 flag:
|
|
|
82
82
|
init / update 启动时会顺带检测 flower-trellis 自身是否有新版(联网、带超时,失败静默)。
|
|
83
83
|
|
|
84
84
|
平台选择:未指定平台时,交互模式会弹出多选菜单(默认勾 Claude Code + Codex);
|
|
85
|
-
也可直接传 --claude / --codex / --cursor
|
|
85
|
+
也可直接传 --claude / --codex / --cursor / --devin / --zcode / --trae 等指定,
|
|
86
|
+
或用 -y 跳过菜单(默认 codex + claude)。--windsurf 仍作为 Devin 的旧别名透传。
|
|
86
87
|
其余 flag 原样透传给 trellis(如 -u <name> -f --registry --template 等)。`);
|
|
87
88
|
}
|
|
88
89
|
|
package/src/constants.js
CHANGED
|
@@ -25,6 +25,7 @@ export const PLATFORM_FLAGS = [
|
|
|
25
25
|
"--kiro",
|
|
26
26
|
"--gemini",
|
|
27
27
|
"--antigravity",
|
|
28
|
+
"--devin",
|
|
28
29
|
"--windsurf",
|
|
29
30
|
"--qoder",
|
|
30
31
|
"--codebuddy",
|
|
@@ -32,6 +33,8 @@ export const PLATFORM_FLAGS = [
|
|
|
32
33
|
"--droid",
|
|
33
34
|
"--pi",
|
|
34
35
|
"--reasonix",
|
|
36
|
+
"--zcode",
|
|
37
|
+
"--trae",
|
|
35
38
|
];
|
|
36
39
|
|
|
37
40
|
/**
|
|
@@ -4,6 +4,7 @@ import { selectVariant } from "./variant.js";
|
|
|
4
4
|
import { ENHANCEMENTS_ROOT } from "./paths.js";
|
|
5
5
|
import { VARIANTS } from "../constants.js";
|
|
6
6
|
import { copySkills } from "./copy-skills.js";
|
|
7
|
+
import { copyScriptAssets } from "./copy-scripts.js";
|
|
7
8
|
import { injectWorkflow } from "./workflow-inject.js";
|
|
8
9
|
import { injectSkillOverrides } from "./skill-override-inject.js";
|
|
9
10
|
import { applyCodexTweaks } from "./codex-tweaks.js";
|
|
@@ -69,18 +70,26 @@ export function applyEnhancements(target, opts = {}) {
|
|
|
69
70
|
);
|
|
70
71
|
|
|
71
72
|
const skills = opts.skills || [];
|
|
72
|
-
const { installed, paths:
|
|
73
|
+
const { installed: skillInstalled, paths: skillPaths } = copySkills(
|
|
73
74
|
target,
|
|
74
75
|
variantDir,
|
|
75
76
|
variant,
|
|
76
77
|
skills,
|
|
77
78
|
);
|
|
79
|
+
const { installed: scriptInstalled, paths: scriptPaths } = copyScriptAssets(
|
|
80
|
+
target,
|
|
81
|
+
variantDir,
|
|
82
|
+
skills,
|
|
83
|
+
);
|
|
84
|
+
const installed = [...skillInstalled, ...scriptInstalled];
|
|
85
|
+
const newPaths = [...skillPaths, ...scriptPaths];
|
|
78
86
|
const where = [];
|
|
79
87
|
if (newPaths.some((p) => p.startsWith(".claude/skills"))) where.push(".claude/skills");
|
|
80
88
|
if (newPaths.some((p) => p.startsWith(".agents/skills"))) where.push(".agents/skills");
|
|
81
89
|
if (newPaths.some((p) => p.startsWith(".claude/commands"))) where.push(".claude/commands/trellis");
|
|
90
|
+
if (newPaths.some((p) => p.startsWith(".trellis/scripts"))) where.push(".trellis/scripts");
|
|
82
91
|
console.log(
|
|
83
|
-
` ✓ 铺设 ${installed.length}
|
|
92
|
+
` ✓ 铺设 ${installed.length} 个强化项 → ${where.join(" + ") || "(无平台目录)"}`,
|
|
84
93
|
);
|
|
85
94
|
|
|
86
95
|
// 升级清理 + manifest(仅全装时维护)
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import path from "node:path";
|
|
2
|
+
import { copyPath, listFiles } from "./fs-utils.js";
|
|
3
|
+
import { shouldInstallName } from "./skill-filter.js";
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* 把强化包携带的 `.trellis/scripts/` 辅助脚本铺到目标项目。
|
|
7
|
+
*
|
|
8
|
+
* 只复制变体快照 `scripts/` 下的直接文件,避免覆盖目标项目已有的 Trellis 原生
|
|
9
|
+
* `.trellis/scripts/` 目录。脚本文件作为 manifest 精确路径记录,后续升级只会清理
|
|
10
|
+
* flower 自己铺过的具体文件。
|
|
11
|
+
*
|
|
12
|
+
* @param {string} target 目标项目根目录
|
|
13
|
+
* @param {string} variantDir 强化包变体目录
|
|
14
|
+
* @param {string[]} skills 用户通过 --skills 指定的过滤名
|
|
15
|
+
* @returns {{installed: string[], paths: string[]}} 已安装脚本名与 manifest 路径
|
|
16
|
+
*/
|
|
17
|
+
export function copyScriptAssets(target, variantDir, skills = []) {
|
|
18
|
+
const installed = [];
|
|
19
|
+
const paths = [];
|
|
20
|
+
const scriptsSrc = path.join(variantDir, "scripts");
|
|
21
|
+
|
|
22
|
+
for (const file of listFiles(scriptsSrc)) {
|
|
23
|
+
const name = file.replace(/\.[^.]+$/, "");
|
|
24
|
+
const aliases = name === "auto_loop" ? ["auto-loop", "auto-loop-runner", "trellis-auto-loop"] : [];
|
|
25
|
+
if (!shouldInstallName(name, skills, aliases)) continue;
|
|
26
|
+
|
|
27
|
+
copyPath(
|
|
28
|
+
path.join(scriptsSrc, file),
|
|
29
|
+
path.join(target, ".trellis", "scripts", file),
|
|
30
|
+
);
|
|
31
|
+
installed.push(`script:${file}`);
|
|
32
|
+
paths.push(`.trellis/scripts/${file}`);
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
return { installed, paths };
|
|
36
|
+
}
|
|
@@ -22,13 +22,16 @@ const PLATFORMS = [
|
|
|
22
22
|
{ name: "Kilo CLI", value: "--kilo" },
|
|
23
23
|
{ name: "Kiro Code", value: "--kiro" },
|
|
24
24
|
{ name: "Antigravity", value: "--antigravity" },
|
|
25
|
-
{ name: "
|
|
25
|
+
{ name: "Devin", value: "--devin" },
|
|
26
|
+
{ name: "Windsurf(旧别名,等同 Devin)", value: "--windsurf" },
|
|
26
27
|
{ name: "Qoder", value: "--qoder" },
|
|
27
28
|
{ name: "CodeBuddy", value: "--codebuddy" },
|
|
28
29
|
{ name: "GitHub Copilot", value: "--copilot" },
|
|
29
30
|
{ name: "Factory Droid", value: "--droid" },
|
|
30
31
|
{ name: "Pi", value: "--pi" },
|
|
31
32
|
{ name: "Reasonix", value: "--reasonix" },
|
|
33
|
+
{ name: "ZCode", value: "--zcode" },
|
|
34
|
+
{ name: "Trae", value: "--trae" },
|
|
32
35
|
];
|
|
33
36
|
|
|
34
37
|
/**
|