@mindfoldhq/trellis 0.3.0-rc.5 → 0.3.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 +16 -4
- package/dist/cli/index.js +4 -0
- package/dist/cli/index.js.map +1 -1
- package/dist/commands/init.d.ts +4 -0
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +29 -15
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/update.d.ts.map +1 -1
- package/dist/commands/update.js +19 -11
- package/dist/commands/update.js.map +1 -1
- package/dist/configurators/antigravity.d.ts +8 -0
- package/dist/configurators/antigravity.d.ts.map +1 -0
- package/dist/configurators/antigravity.js +18 -0
- package/dist/configurators/antigravity.js.map +1 -0
- package/dist/configurators/gemini.d.ts +8 -0
- package/dist/configurators/gemini.d.ts.map +1 -0
- package/dist/configurators/gemini.js +52 -0
- package/dist/configurators/gemini.js.map +1 -0
- package/dist/configurators/index.d.ts.map +1 -1
- package/dist/configurators/index.js +49 -1
- package/dist/configurators/index.js.map +1 -1
- package/dist/configurators/kilo.d.ts +8 -0
- package/dist/configurators/kilo.d.ts.map +1 -0
- package/dist/configurators/kilo.js +51 -0
- package/dist/configurators/kilo.js.map +1 -0
- package/dist/configurators/kiro.d.ts +8 -0
- package/dist/configurators/kiro.d.ts.map +1 -0
- package/dist/configurators/kiro.js +20 -0
- package/dist/configurators/kiro.js.map +1 -0
- package/dist/migrations/manifests/0.3.0-rc.6.json +9 -0
- package/dist/migrations/manifests/0.3.0.json +11 -0
- package/dist/templates/antigravity/index.d.ts +12 -0
- package/dist/templates/antigravity/index.d.ts.map +1 -0
- package/dist/templates/antigravity/index.js +29 -0
- package/dist/templates/antigravity/index.js.map +1 -0
- package/dist/templates/claude/agents/implement.md +1 -1
- package/dist/templates/claude/commands/trellis/brainstorm.md +16 -18
- package/dist/templates/claude/commands/trellis/start.md +73 -48
- package/dist/templates/codex/skills/brainstorm/SKILL.md +16 -18
- package/dist/templates/codex/skills/start/SKILL.md +80 -46
- package/dist/templates/cursor/commands/trellis-brainstorm.md +16 -18
- package/dist/templates/cursor/commands/trellis-start.md +191 -23
- package/dist/templates/extract.d.ts +52 -0
- package/dist/templates/extract.d.ts.map +1 -1
- package/dist/templates/extract.js +90 -0
- package/dist/templates/extract.js.map +1 -1
- package/dist/templates/gemini/commands/trellis/before-backend-dev.toml +17 -0
- package/dist/templates/gemini/commands/trellis/before-frontend-dev.toml +17 -0
- package/dist/templates/gemini/commands/trellis/brainstorm.toml +420 -0
- package/dist/templates/gemini/commands/trellis/break-loop.toml +129 -0
- package/dist/templates/gemini/commands/trellis/check-backend.toml +17 -0
- package/dist/templates/gemini/commands/trellis/check-cross-layer.toml +147 -0
- package/dist/templates/gemini/commands/trellis/check-frontend.toml +17 -0
- package/dist/templates/gemini/commands/trellis/create-command.toml +119 -0
- package/dist/templates/gemini/commands/trellis/finish-work.toml +133 -0
- package/dist/templates/gemini/commands/trellis/integrate-skill.toml +104 -0
- package/dist/templates/gemini/commands/trellis/onboard.toml +111 -0
- package/dist/templates/gemini/commands/trellis/record-session.toml +66 -0
- package/dist/templates/gemini/commands/trellis/start.toml +292 -0
- package/dist/templates/gemini/commands/trellis/update-spec.toml +132 -0
- package/dist/templates/gemini/index.d.ts +21 -0
- package/dist/templates/gemini/index.d.ts.map +1 -0
- package/dist/templates/gemini/index.js +44 -0
- package/dist/templates/gemini/index.js.map +1 -0
- package/dist/templates/iflow/agents/implement.md +1 -1
- package/dist/templates/iflow/commands/trellis/brainstorm.md +16 -18
- package/dist/templates/iflow/commands/trellis/finish-work.md +9 -0
- package/dist/templates/iflow/commands/trellis/start.md +108 -50
- package/dist/templates/iflow/index.d.ts +3 -2
- package/dist/templates/iflow/index.d.ts.map +1 -1
- package/dist/templates/iflow/index.js +7 -9
- package/dist/templates/iflow/index.js.map +1 -1
- package/dist/templates/kilo/commands/trellis/before-backend-dev.md +13 -0
- package/dist/templates/kilo/commands/trellis/before-frontend-dev.md +13 -0
- package/dist/templates/kilo/commands/trellis/brainstorm.md +474 -0
- package/dist/templates/kilo/commands/trellis/break-loop.md +125 -0
- package/dist/templates/kilo/commands/trellis/check-backend.md +13 -0
- package/dist/templates/kilo/commands/trellis/check-cross-layer.md +153 -0
- package/dist/templates/kilo/commands/trellis/check-frontend.md +13 -0
- package/dist/templates/kilo/commands/trellis/create-command.md +152 -0
- package/dist/templates/kilo/commands/trellis/finish-work.md +129 -0
- package/dist/templates/kilo/commands/trellis/integrate-skill.md +219 -0
- package/dist/templates/kilo/commands/trellis/onboard.md +358 -0
- package/dist/templates/kilo/commands/trellis/parallel.md +194 -0
- package/dist/templates/kilo/commands/trellis/record-session.md +62 -0
- package/dist/templates/kilo/commands/trellis/start.md +321 -0
- package/dist/templates/kilo/commands/trellis/update-spec.md +285 -0
- package/dist/templates/kilo/index.d.ts +16 -0
- package/dist/templates/kilo/index.d.ts.map +1 -0
- package/dist/templates/kilo/index.js +39 -0
- package/dist/templates/kilo/index.js.map +1 -0
- package/dist/templates/kiro/index.d.ts +18 -0
- package/dist/templates/kiro/index.d.ts.map +1 -0
- package/dist/templates/kiro/index.js +40 -0
- package/dist/templates/kiro/index.js.map +1 -0
- package/dist/templates/kiro/skills/before-backend-dev/SKILL.md +18 -0
- package/dist/templates/kiro/skills/before-frontend-dev/SKILL.md +18 -0
- package/dist/templates/kiro/skills/brainstorm/SKILL.md +479 -0
- package/dist/templates/kiro/skills/break-loop/SKILL.md +130 -0
- package/dist/templates/kiro/skills/check-backend/SKILL.md +18 -0
- package/dist/templates/kiro/skills/check-cross-layer/SKILL.md +158 -0
- package/dist/templates/kiro/skills/check-frontend/SKILL.md +18 -0
- package/dist/templates/kiro/skills/create-command/SKILL.md +101 -0
- package/dist/templates/kiro/skills/finish-work/SKILL.md +148 -0
- package/dist/templates/kiro/skills/integrate-skill/SKILL.md +221 -0
- package/dist/templates/kiro/skills/onboard/SKILL.md +363 -0
- package/dist/templates/kiro/skills/record-session/SKILL.md +67 -0
- package/dist/templates/kiro/skills/start/SKILL.md +330 -0
- package/dist/templates/kiro/skills/update-spec/SKILL.md +335 -0
- package/dist/templates/opencode/agents/implement.md +1 -1
- package/dist/templates/opencode/agents/research.md +1 -2
- package/dist/templates/opencode/commands/trellis/brainstorm.md +16 -18
- package/dist/templates/opencode/commands/trellis/start.md +71 -48
- package/dist/templates/trellis/scripts/common/cli_adapter.py +100 -12
- package/dist/templates/trellis/scripts/common/registry.py +1 -1
- package/dist/templates/trellis/scripts/task.py +1 -8
- package/dist/types/ai-tools.d.ts +4 -4
- package/dist/types/ai-tools.d.ts.map +1 -1
- package/dist/types/ai-tools.js +32 -0
- package/dist/types/ai-tools.js.map +1 -1
- package/package.json +3 -2
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Gemini CLI configurator
|
|
3
|
+
*
|
|
4
|
+
* Configures Gemini CLI by copying templates from src/templates/gemini/.
|
|
5
|
+
* Gemini CLI uses TOML commands, no hooks/agents/settings.
|
|
6
|
+
*/
|
|
7
|
+
import { readFileSync, readdirSync, statSync } from "node:fs";
|
|
8
|
+
import path from "node:path";
|
|
9
|
+
import { getGeminiTemplatePath } from "../templates/extract.js";
|
|
10
|
+
import { ensureDir, writeFile } from "../utils/file-writer.js";
|
|
11
|
+
const EXCLUDE_PATTERNS = [
|
|
12
|
+
".d.ts",
|
|
13
|
+
".d.ts.map",
|
|
14
|
+
".js",
|
|
15
|
+
".js.map",
|
|
16
|
+
"__pycache__",
|
|
17
|
+
"node_modules",
|
|
18
|
+
"bun.lock",
|
|
19
|
+
".gitignore",
|
|
20
|
+
];
|
|
21
|
+
function shouldExclude(filename) {
|
|
22
|
+
for (const pattern of EXCLUDE_PATTERNS) {
|
|
23
|
+
if (filename.endsWith(pattern) || filename === pattern) {
|
|
24
|
+
return true;
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
return false;
|
|
28
|
+
}
|
|
29
|
+
async function copyDirFiltered(src, dest) {
|
|
30
|
+
ensureDir(dest);
|
|
31
|
+
for (const entry of readdirSync(src)) {
|
|
32
|
+
if (shouldExclude(entry)) {
|
|
33
|
+
continue;
|
|
34
|
+
}
|
|
35
|
+
const srcPath = path.join(src, entry);
|
|
36
|
+
const destPath = path.join(dest, entry);
|
|
37
|
+
const stat = statSync(srcPath);
|
|
38
|
+
if (stat.isDirectory()) {
|
|
39
|
+
await copyDirFiltered(srcPath, destPath);
|
|
40
|
+
}
|
|
41
|
+
else {
|
|
42
|
+
const content = readFileSync(srcPath, "utf-8");
|
|
43
|
+
await writeFile(destPath, content);
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
export async function configureGemini(cwd) {
|
|
48
|
+
const sourcePath = getGeminiTemplatePath();
|
|
49
|
+
const destPath = path.join(cwd, ".gemini");
|
|
50
|
+
await copyDirFiltered(sourcePath, destPath);
|
|
51
|
+
}
|
|
52
|
+
//# sourceMappingURL=gemini.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gemini.js","sourceRoot":"","sources":["../../src/configurators/gemini.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAC9D,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAChE,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AAE/D,MAAM,gBAAgB,GAAG;IACvB,OAAO;IACP,WAAW;IACX,KAAK;IACL,SAAS;IACT,aAAa;IACb,cAAc;IACd,UAAU;IACV,YAAY;CACb,CAAC;AAEF,SAAS,aAAa,CAAC,QAAgB;IACrC,KAAK,MAAM,OAAO,IAAI,gBAAgB,EAAE,CAAC;QACvC,IAAI,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,QAAQ,KAAK,OAAO,EAAE,CAAC;YACvD,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,KAAK,UAAU,eAAe,CAAC,GAAW,EAAE,IAAY;IACtD,SAAS,CAAC,IAAI,CAAC,CAAC;IAEhB,KAAK,MAAM,KAAK,IAAI,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC;QACrC,IAAI,aAAa,CAAC,KAAK,CAAC,EAAE,CAAC;YACzB,SAAS;QACX,CAAC;QAED,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;QACtC,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QACxC,MAAM,IAAI,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAC;QAE/B,IAAI,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC;YACvB,MAAM,eAAe,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;QAC3C,CAAC;aAAM,CAAC;YACN,MAAM,OAAO,GAAG,YAAY,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;YAC/C,MAAM,SAAS,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QACrC,CAAC;IACH,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,GAAW;IAC/C,MAAM,UAAU,GAAG,qBAAqB,EAAE,CAAC;IAC3C,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;IAE3C,MAAM,eAAe,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;AAC9C,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/configurators/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAIH,OAAO,EAAY,KAAK,MAAM,EAAE,KAAK,OAAO,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/configurators/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAIH,OAAO,EAAY,KAAK,MAAM,EAAE,KAAK,OAAO,EAAE,MAAM,sBAAsB,CAAC;AA6K3E,uBAAuB;AACvB,eAAO,MAAM,YAAY,EAA4B,MAAM,EAAE,CAAC;AAE9D,gGAAgG;AAChG,eAAO,MAAM,WAAW,UAAmD,CAAC;AAE5E,qEAAqE;AACrE,eAAO,MAAM,gBAAgB,UAA+B,CAAC;AAE7D;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,CAQ/D;AAED;;GAEG;AACH,wBAAgB,2BAA2B,IAAI,MAAM,EAAE,CAEtD;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAMtD;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAEzD;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAC/B,UAAU,EAAE,MAAM,EAClB,GAAG,EAAE,MAAM,GACV,OAAO,CAAC,IAAI,CAAC,CAEf;AAED;;;GAGG;AACH,wBAAgB,wBAAwB,CACtC,UAAU,EAAE,MAAM,GACjB,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,SAAS,CAEjC;AAED;;GAEG;AACH,wBAAgB,kBAAkB,IAAI;IACpC,GAAG,EAAE,OAAO,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,cAAc,EAAE,OAAO,CAAC;IACxB,UAAU,EAAE,MAAM,CAAC;CACpB,EAAE,CAOF;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAE/D"}
|
|
@@ -16,13 +16,21 @@ import { configureCursor } from "./cursor.js";
|
|
|
16
16
|
import { configureIflow } from "./iflow.js";
|
|
17
17
|
import { configureOpenCode } from "./opencode.js";
|
|
18
18
|
import { configureCodex } from "./codex.js";
|
|
19
|
+
import { configureKilo } from "./kilo.js";
|
|
20
|
+
import { configureKiro } from "./kiro.js";
|
|
21
|
+
import { configureGemini } from "./gemini.js";
|
|
22
|
+
import { configureAntigravity } from "./antigravity.js";
|
|
19
23
|
// Shared utilities
|
|
20
24
|
import { resolvePlaceholders } from "./shared.js";
|
|
21
25
|
// Template content for update tracking
|
|
22
26
|
import { getAllAgents as getClaudeAgents, getAllCommands as getClaudeCommands, getAllHooks as getClaudeHooks, getSettingsTemplate as getClaudeSettings, } from "../templates/claude/index.js";
|
|
23
|
-
import { getAllCommands as getCursorCommands
|
|
27
|
+
import { getAllCommands as getCursorCommands } from "../templates/cursor/index.js";
|
|
24
28
|
import { getAllAgents as getIflowAgents, getAllCommands as getIflowCommands, getAllHooks as getIflowHooks, getSettingsTemplate as getIflowSettings, } from "../templates/iflow/index.js";
|
|
25
29
|
import { getAllSkills as getCodexSkills } from "../templates/codex/index.js";
|
|
30
|
+
import { getAllCommands as getKiloCommands } from "../templates/kilo/index.js";
|
|
31
|
+
import { getAllSkills as getKiroSkills } from "../templates/kiro/index.js";
|
|
32
|
+
import { getAllCommands as getGeminiCommands } from "../templates/gemini/index.js";
|
|
33
|
+
import { getAllWorkflows as getAntigravityWorkflows } from "../templates/antigravity/index.js";
|
|
26
34
|
/**
|
|
27
35
|
* Platform functions registry — maps each AITool to its behavior.
|
|
28
36
|
* When adding a new platform, add an entry here.
|
|
@@ -97,6 +105,46 @@ const PLATFORM_FUNCTIONS = {
|
|
|
97
105
|
return files;
|
|
98
106
|
},
|
|
99
107
|
},
|
|
108
|
+
kilo: {
|
|
109
|
+
configure: configureKilo,
|
|
110
|
+
collectTemplates: () => {
|
|
111
|
+
const files = new Map();
|
|
112
|
+
for (const cmd of getKiloCommands()) {
|
|
113
|
+
files.set(`.kilocode/commands/trellis/${cmd.name}.md`, cmd.content);
|
|
114
|
+
}
|
|
115
|
+
return files;
|
|
116
|
+
},
|
|
117
|
+
},
|
|
118
|
+
kiro: {
|
|
119
|
+
configure: configureKiro,
|
|
120
|
+
collectTemplates: () => {
|
|
121
|
+
const files = new Map();
|
|
122
|
+
for (const skill of getKiroSkills()) {
|
|
123
|
+
files.set(`.kiro/skills/${skill.name}/SKILL.md`, skill.content);
|
|
124
|
+
}
|
|
125
|
+
return files;
|
|
126
|
+
},
|
|
127
|
+
},
|
|
128
|
+
gemini: {
|
|
129
|
+
configure: configureGemini,
|
|
130
|
+
collectTemplates: () => {
|
|
131
|
+
const files = new Map();
|
|
132
|
+
for (const cmd of getGeminiCommands()) {
|
|
133
|
+
files.set(`.gemini/commands/trellis/${cmd.name}.toml`, cmd.content);
|
|
134
|
+
}
|
|
135
|
+
return files;
|
|
136
|
+
},
|
|
137
|
+
},
|
|
138
|
+
antigravity: {
|
|
139
|
+
configure: configureAntigravity,
|
|
140
|
+
collectTemplates: () => {
|
|
141
|
+
const files = new Map();
|
|
142
|
+
for (const workflow of getAntigravityWorkflows()) {
|
|
143
|
+
files.set(`.agent/workflows/${workflow.name}.md`, workflow.content);
|
|
144
|
+
}
|
|
145
|
+
return files;
|
|
146
|
+
},
|
|
147
|
+
},
|
|
100
148
|
};
|
|
101
149
|
// =============================================================================
|
|
102
150
|
// Derived Helpers — all derived from AI_TOOLS registry
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/configurators/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,QAAQ,EAA6B,MAAM,sBAAsB,CAAC;AAE3E,yBAAyB;AACzB,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAC5C,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAClD,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/configurators/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Kilo CLI configurator
|
|
3
|
+
*
|
|
4
|
+
* Configures Kilo CLI by copying templates from src/templates/kilo/.
|
|
5
|
+
* Kilo CLI does not support hooks, so only commands are copied.
|
|
6
|
+
*/
|
|
7
|
+
export declare function configureKilo(cwd: string): Promise<void>;
|
|
8
|
+
//# sourceMappingURL=kilo.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"kilo.d.ts","sourceRoot":"","sources":["../../src/configurators/kilo.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AA+CH,wBAAsB,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAK9D"}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Kilo CLI configurator
|
|
3
|
+
*
|
|
4
|
+
* Configures Kilo CLI by copying templates from src/templates/kilo/.
|
|
5
|
+
* Kilo CLI does not support hooks, so only commands are copied.
|
|
6
|
+
*/
|
|
7
|
+
import { readFileSync, readdirSync, statSync } from "node:fs";
|
|
8
|
+
import path from "node:path";
|
|
9
|
+
import { getKiloTemplatePath } from "../templates/extract.js";
|
|
10
|
+
import { ensureDir, writeFile } from "../utils/file-writer.js";
|
|
11
|
+
const EXCLUDE_PATTERNS = [
|
|
12
|
+
".d.ts",
|
|
13
|
+
".d.ts.map",
|
|
14
|
+
".js.map",
|
|
15
|
+
"__pycache__",
|
|
16
|
+
"node_modules",
|
|
17
|
+
"bun.lock",
|
|
18
|
+
".gitignore",
|
|
19
|
+
];
|
|
20
|
+
function shouldExclude(filename) {
|
|
21
|
+
for (const pattern of EXCLUDE_PATTERNS) {
|
|
22
|
+
if (filename.endsWith(pattern) || filename === pattern) {
|
|
23
|
+
return true;
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
return false;
|
|
27
|
+
}
|
|
28
|
+
async function copyDirFiltered(src, dest) {
|
|
29
|
+
ensureDir(dest);
|
|
30
|
+
for (const entry of readdirSync(src)) {
|
|
31
|
+
if (shouldExclude(entry)) {
|
|
32
|
+
continue;
|
|
33
|
+
}
|
|
34
|
+
const srcPath = path.join(src, entry);
|
|
35
|
+
const destPath = path.join(dest, entry);
|
|
36
|
+
const stat = statSync(srcPath);
|
|
37
|
+
if (stat.isDirectory()) {
|
|
38
|
+
await copyDirFiltered(srcPath, destPath);
|
|
39
|
+
}
|
|
40
|
+
else {
|
|
41
|
+
const content = readFileSync(srcPath, "utf-8");
|
|
42
|
+
await writeFile(destPath, content);
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
export async function configureKilo(cwd) {
|
|
47
|
+
const sourcePath = getKiloTemplatePath();
|
|
48
|
+
const destPath = path.join(cwd, ".kilocode");
|
|
49
|
+
await copyDirFiltered(sourcePath, destPath);
|
|
50
|
+
}
|
|
51
|
+
//# sourceMappingURL=kilo.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"kilo.js","sourceRoot":"","sources":["../../src/configurators/kilo.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAC9D,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAC9D,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AAE/D,MAAM,gBAAgB,GAAG;IACvB,OAAO;IACP,WAAW;IACX,SAAS;IACT,aAAa;IACb,cAAc;IACd,UAAU;IACV,YAAY;CACb,CAAC;AAEF,SAAS,aAAa,CAAC,QAAgB;IACrC,KAAK,MAAM,OAAO,IAAI,gBAAgB,EAAE,CAAC;QACvC,IAAI,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,QAAQ,KAAK,OAAO,EAAE,CAAC;YACvD,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,KAAK,UAAU,eAAe,CAAC,GAAW,EAAE,IAAY;IACtD,SAAS,CAAC,IAAI,CAAC,CAAC;IAEhB,KAAK,MAAM,KAAK,IAAI,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC;QACrC,IAAI,aAAa,CAAC,KAAK,CAAC,EAAE,CAAC;YACzB,SAAS;QACX,CAAC;QAED,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;QACtC,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QACxC,MAAM,IAAI,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAC;QAE/B,IAAI,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC;YACvB,MAAM,eAAe,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;QAC3C,CAAC;aAAM,CAAC;YACN,MAAM,OAAO,GAAG,YAAY,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;YAC/C,MAAM,SAAS,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QACrC,CAAC;IACH,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,GAAW;IAC7C,MAAM,UAAU,GAAG,mBAAmB,EAAE,CAAC;IACzC,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,WAAW,CAAC,CAAC;IAE7C,MAAM,eAAe,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;AAC9C,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"kiro.d.ts","sourceRoot":"","sources":["../../src/configurators/kiro.ts"],"names":[],"mappings":"AAIA;;;;;GAKG;AACH,wBAAsB,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAU9D"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import path from "node:path";
|
|
2
|
+
import { getAllSkills } from "../templates/kiro/index.js";
|
|
3
|
+
import { ensureDir, writeFile } from "../utils/file-writer.js";
|
|
4
|
+
/**
|
|
5
|
+
* Configure Kiro Code by writing skill templates.
|
|
6
|
+
*
|
|
7
|
+
* Output:
|
|
8
|
+
* - .kiro/skills/<skill-name>/SKILL.md
|
|
9
|
+
*/
|
|
10
|
+
export async function configureKiro(cwd) {
|
|
11
|
+
const skillsRoot = path.join(cwd, ".kiro", "skills");
|
|
12
|
+
ensureDir(skillsRoot);
|
|
13
|
+
for (const skill of getAllSkills()) {
|
|
14
|
+
const skillDir = path.join(skillsRoot, skill.name);
|
|
15
|
+
ensureDir(skillDir);
|
|
16
|
+
const targetPath = path.join(skillDir, "SKILL.md");
|
|
17
|
+
await writeFile(targetPath, skill.content);
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
//# sourceMappingURL=kiro.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"kiro.js","sourceRoot":"","sources":["../../src/configurators/kiro.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC1D,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AAE/D;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,GAAW;IAC7C,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC;IACrD,SAAS,CAAC,UAAU,CAAC,CAAC;IAEtB,KAAK,MAAM,KAAK,IAAI,YAAY,EAAE,EAAE,CAAC;QACnC,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;QACnD,SAAS,CAAC,QAAQ,CAAC,CAAC;QACpB,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;QACnD,MAAM,SAAS,CAAC,UAAU,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;IAC7C,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": "0.3.0-rc.6",
|
|
3
|
+
"description": "4 new platforms: Kilo, Kiro, Gemini CLI, Antigravity",
|
|
4
|
+
"breaking": false,
|
|
5
|
+
"recommendMigrate": false,
|
|
6
|
+
"changelog": "**New Platforms:**\n- feat(kilo): add Kilo CLI as commands-only platform (.kilocode/commands/trellis/)\n- feat(kiro): add Kiro Code as skills-based platform (.kiro/skills/)\n- feat(gemini): add Gemini CLI as first TOML-format command platform (.gemini/commands/trellis/*.toml)\n- feat(antigravity): add Antigravity as workflow-based platform (.agent/workflows/)\n\n**Bug Fixes:**\n- fix(scripts): remove non-existent spec/shared/ references from init-context defaults\n- fix(templates): correct iflow start/finish-work template content\n- fix(docs): correct license badge from FSL to AGPL-3.0\n- fix(init): fix start process flow (#48)\n\n**Tests:**\n- Added 50+ new tests covering all 4 new platforms (templates, configurators, init integration, regression)",
|
|
7
|
+
"migrations": [],
|
|
8
|
+
"notes": "No migration required. New platform templates only — existing projects unaffected. Run `trellis init --kilo`, `--kiro`, `--gemini`, or `--antigravity` to add new platform support."
|
|
9
|
+
}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": "0.3.0",
|
|
3
|
+
"description": "Stable release: Shell→Python migration, 9 AI platforms, centralized registry",
|
|
4
|
+
"breaking": true,
|
|
5
|
+
"recommendMigrate": true,
|
|
6
|
+
"changelog": "**BREAKING: Shell to Python Migration**\n- All `.trellis/scripts/*.sh` replaced by Python equivalents (requires Python 3.10+)\n- Directory rename: `multi-agent/` → `multi_agent/` (underscore)\n- Command namespace migration: Claude uses `.claude/commands/trellis/` subdirectory, Cursor uses `trellis-` prefix\n\n**New Platforms (9 total):**\n- Codex (`.agents/skills/`) — OpenAI's CLI agent\n- Kilo (`.kilocode/commands/trellis/`) — commands-only platform\n- Kiro (`.kiro/skills/`) — skills-based platform\n- Gemini CLI (`.gemini/commands/trellis/*.toml`) — TOML-format commands\n- Antigravity (`.agent/workflows/`) — workflow-based platform\n- Plus existing: Claude Code, Cursor, iFlow, OpenCode\n\n**Architecture:**\n- Centralized platform registry replacing scattered init/update logic\n- Extracted `resolvePlaceholders()` to shared module\n- Deduplicated `compareVersions()` to `utils/compare-versions.ts`\n- Remote spec templates from docs repo\n\n**Key Fixes:**\n- Windows encoding: `_configure_stream` with reconfigure/detach fallback for stdout/stderr\n- Windows subprocess: `CREATE_NEW_PROCESS_GROUP` on win32, `start_new_session` on Unix\n- Template placeholder roundtrip (`{{PYTHON_CMD}}` resolution)\n- CLI version comparison for prerelease versions\n- add_session.py table separator tolerance for formatted markdown\n\n**Quality:**\n- 312+ tests across 17+ files (unit, integration, regression)\n- @vitest/coverage-v8 support\n- Executable spec enforcement (7-section structure)",
|
|
7
|
+
"migrations": [],
|
|
8
|
+
"migrationGuide": "# Migration Guide: v0.2.x → v0.3.0\n\n## Overview\n\nAll shell scripts (.sh) have been replaced by Python scripts (.py). This affects any custom workflows, slash commands, or documentation that references the old scripts.\n\n## Requirements\n\n- Python 3.10 or higher\n\n## What Changed\n\n### Script Extensions\n\n| Old Path | New Path |\n|----------|----------|\n| `.trellis/scripts/*.sh` | `.trellis/scripts/*.py` |\n| `.trellis/scripts/common/*.sh` | `.trellis/scripts/common/*.py` |\n| `.trellis/scripts/multi-agent/*.sh` | `.trellis/scripts/multi_agent/*.py` |\n\n### Directory Rename\n\n| Old | New |\n|-----|-----|\n| `multi-agent/` (hyphen) | `multi_agent/` (underscore) |\n\n### Invocation Change\n\n| Old | New |\n|-----|-----|\n| `./script.sh` | `python3 ./script.py` |\n| `./.trellis/scripts/task.sh` | `python3 ./.trellis/scripts/task.py` |\n\n## After Migration\n\nRun `trellis update --migrate` to remove the old shell scripts from your project.",
|
|
9
|
+
"aiInstructions": "When assisting users upgrading from 0.2.x to 0.3.0:\n1. Search for files containing `.trellis/scripts/*.sh` references and update to `.py`\n2. Replace `multi-agent/` directory references with `multi_agent/` (underscore)\n3. Always use `python3` explicitly, not just `python` (Windows compatibility)\n4. Check ALL locations: docstrings, help text, error messages, markdown docs\n5. Run `trellis update --migrate` to remove legacy shell scripts\n\nNote: Users upgrading from any 0.3.0 prerelease (beta/rc) need no file changes — only the version stamp is updated.",
|
|
10
|
+
"notes": "Aggregated release covering beta.0 through rc.6. All file migrations were applied in beta.0. Users upgrading from any 0.3.0 prerelease will see no file changes — only the .version stamp is updated. New projects get all 9 platform options via `trellis init`."
|
|
11
|
+
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Antigravity workflow templates
|
|
3
|
+
*
|
|
4
|
+
* Antigravity uses workspace workflows under .agent/workflows/.
|
|
5
|
+
* We reuse Codex skill content as workflow content.
|
|
6
|
+
*/
|
|
7
|
+
export interface WorkflowTemplate {
|
|
8
|
+
name: string;
|
|
9
|
+
content: string;
|
|
10
|
+
}
|
|
11
|
+
export declare function getAllWorkflows(): WorkflowTemplate[];
|
|
12
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/templates/antigravity/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAOH,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;CACjB;AA6BD,wBAAgB,eAAe,IAAI,gBAAgB,EAAE,CAOpD"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Antigravity workflow templates
|
|
3
|
+
*
|
|
4
|
+
* Antigravity uses workspace workflows under .agent/workflows/.
|
|
5
|
+
* We reuse Codex skill content as workflow content.
|
|
6
|
+
*/
|
|
7
|
+
import { getAllSkills as getAllCodexSkills, } from "../codex/index.js";
|
|
8
|
+
function adaptSkillContentToWorkflow(content, workflowNames) {
|
|
9
|
+
const base = content
|
|
10
|
+
.replaceAll("Codex skills", "Antigravity workflows")
|
|
11
|
+
.replaceAll("Codex skill", "Antigravity workflow")
|
|
12
|
+
.replaceAll("Create New Skill", "Create New Workflow")
|
|
13
|
+
.replaceAll(".agents/skills/<skill-name>/SKILL.md", ".agent/workflows/<workflow-name>.md")
|
|
14
|
+
.replace(/\.agents\/skills\/([^/\s`]+)\/SKILL\.md/g, ".agent/workflows/$1.md")
|
|
15
|
+
.replaceAll(".agents/skills/", ".agent/workflows/")
|
|
16
|
+
.replaceAll("$<skill-name>", "/<workflow-name>")
|
|
17
|
+
.replaceAll("Or open /skills and select it", "Or type / and select it");
|
|
18
|
+
// Antigravity workflows are triggered with slash commands (/start), not "$skill".
|
|
19
|
+
return workflowNames.reduce((adapted, name) => adapted.replaceAll(`$${name}`, `/${name}`), base);
|
|
20
|
+
}
|
|
21
|
+
export function getAllWorkflows() {
|
|
22
|
+
const skills = getAllCodexSkills();
|
|
23
|
+
const workflowNames = skills.map((skill) => skill.name);
|
|
24
|
+
return skills.map((skill) => ({
|
|
25
|
+
name: skill.name,
|
|
26
|
+
content: adaptSkillContentToWorkflow(skill.content, workflowNames),
|
|
27
|
+
}));
|
|
28
|
+
}
|
|
29
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/templates/antigravity/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EACL,YAAY,IAAI,iBAAiB,GAElC,MAAM,mBAAmB,CAAC;AAO3B,SAAS,2BAA2B,CAClC,OAAe,EACf,aAAuB;IAEvB,MAAM,IAAI,GAAG,OAAO;SACjB,UAAU,CAAC,cAAc,EAAE,uBAAuB,CAAC;SACnD,UAAU,CAAC,aAAa,EAAE,sBAAsB,CAAC;SACjD,UAAU,CAAC,kBAAkB,EAAE,qBAAqB,CAAC;SACrD,UAAU,CACT,sCAAsC,EACtC,qCAAqC,CACtC;SACA,OAAO,CACN,0CAA0C,EAC1C,wBAAwB,CACzB;SACA,UAAU,CAAC,iBAAiB,EAAE,mBAAmB,CAAC;SAClD,UAAU,CAAC,eAAe,EAAE,kBAAkB,CAAC;SAC/C,UAAU,CAAC,+BAA+B,EAAE,yBAAyB,CAAC,CAAC;IAE1E,kFAAkF;IAClF,OAAO,aAAa,CAAC,MAAM,CACzB,CAAC,OAAO,EAAE,IAAI,EAAE,EAAE,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,IAAI,EAAE,EAAE,IAAI,IAAI,EAAE,CAAC,EAC7D,IAAI,CACL,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,eAAe;IAC7B,MAAM,MAAM,GAAyB,iBAAiB,EAAE,CAAC;IACzD,MAAM,aAAa,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACxD,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QAC5B,IAAI,EAAE,KAAK,CAAC,IAAI;QAChB,OAAO,EAAE,2BAA2B,CAAC,KAAK,CAAC,OAAO,EAAE,aAAa,CAAC;KACnE,CAAC,CAAC,CAAC;AACN,CAAC"}
|
|
@@ -443,28 +443,26 @@ Context / Decision / Consequences
|
|
|
443
443
|
|
|
444
444
|
## Integration with Start Workflow
|
|
445
445
|
|
|
446
|
-
|
|
446
|
+
After brainstorm completes (Step 8 confirmation approved), the flow continues to the Task Workflow's **Phase 2: Prepare for Implementation**:
|
|
447
447
|
|
|
448
448
|
```text
|
|
449
|
-
|
|
450
|
-
|
|
451
|
-
Step
|
|
452
|
-
|
|
453
|
-
|
|
454
|
-
|
|
455
|
-
|
|
456
|
-
|
|
457
|
-
|
|
458
|
-
|
|
459
|
-
|
|
460
|
-
|
|
461
|
-
|
|
462
|
-
↓
|
|
463
|
-
Step 8: Final confirmation + small-PR plan
|
|
464
|
-
↓
|
|
465
|
-
Implement
|
|
449
|
+
Brainstorm
|
|
450
|
+
Step 0: Create task directory + seed PRD
|
|
451
|
+
Step 1–7: Discover requirements, research, converge
|
|
452
|
+
Step 8: Final confirmation → user approves
|
|
453
|
+
↓
|
|
454
|
+
Task Workflow Phase 2 (Prepare for Implementation)
|
|
455
|
+
Code-Spec Depth Check (if applicable)
|
|
456
|
+
→ Research codebase (based on confirmed PRD)
|
|
457
|
+
→ Configure code-spec context (jsonl files)
|
|
458
|
+
→ Activate task
|
|
459
|
+
↓
|
|
460
|
+
Task Workflow Phase 3 (Execute)
|
|
461
|
+
Implement → Check → Complete
|
|
466
462
|
```
|
|
467
463
|
|
|
464
|
+
The task directory and PRD already exist from brainstorm, so Phase 1 of the Task Workflow is skipped entirely.
|
|
465
|
+
|
|
468
466
|
---
|
|
469
467
|
|
|
470
468
|
## Related Commands
|
|
@@ -101,7 +101,7 @@ For questions or trivial fixes, work directly:
|
|
|
101
101
|
For simple, well-defined tasks:
|
|
102
102
|
|
|
103
103
|
1. Quick confirm: "I understand you want to [goal]. Ready to proceed?"
|
|
104
|
-
2. If yes,
|
|
104
|
+
2. If yes, proceed to **Task Workflow Phase 1 Path B** (create task, write PRD, then research)
|
|
105
105
|
3. If no, clarify and confirm again
|
|
106
106
|
|
|
107
107
|
---
|
|
@@ -139,16 +139,70 @@ See `/trellis:brainstorm` for the full process. Summary:
|
|
|
139
139
|
- Check Agent verifies against code-spec requirements
|
|
140
140
|
- Result: Code that follows project conventions automatically
|
|
141
141
|
|
|
142
|
-
###
|
|
142
|
+
### Overview: Two Entry Points
|
|
143
143
|
|
|
144
|
-
|
|
144
|
+
```
|
|
145
|
+
From Brainstorm (Complex Task):
|
|
146
|
+
PRD confirmed → Research → Configure Context → Activate → Implement → Check → Complete
|
|
147
|
+
|
|
148
|
+
From Simple Task:
|
|
149
|
+
Confirm → Create Task → Write PRD → Research → Configure Context → Activate → Implement → Check → Complete
|
|
150
|
+
```
|
|
151
|
+
|
|
152
|
+
**Key principle: Research happens AFTER requirements are clear (PRD exists).**
|
|
153
|
+
|
|
154
|
+
---
|
|
155
|
+
|
|
156
|
+
### Phase 1: Establish Requirements
|
|
157
|
+
|
|
158
|
+
#### Path A: From Brainstorm (skip to Phase 2)
|
|
159
|
+
|
|
160
|
+
PRD and task directory already exist from brainstorm. Skip directly to Phase 2.
|
|
145
161
|
|
|
146
|
-
|
|
162
|
+
#### Path B: From Simple Task
|
|
163
|
+
|
|
164
|
+
**Step 1: Confirm Understanding** `[AI]`
|
|
165
|
+
|
|
166
|
+
Quick confirm:
|
|
147
167
|
- What is the goal?
|
|
148
168
|
- What type of development? (frontend / backend / fullstack)
|
|
149
169
|
- Any specific requirements or constraints?
|
|
150
170
|
|
|
151
|
-
|
|
171
|
+
**Step 2: Create Task Directory** `[AI]`
|
|
172
|
+
|
|
173
|
+
```bash
|
|
174
|
+
TASK_DIR=$(python3 ./.trellis/scripts/task.py create "<title>" --slug <name>)
|
|
175
|
+
```
|
|
176
|
+
|
|
177
|
+
**Step 3: Write PRD** `[AI]`
|
|
178
|
+
|
|
179
|
+
Create `prd.md` in the task directory with:
|
|
180
|
+
|
|
181
|
+
```markdown
|
|
182
|
+
# <Task Title>
|
|
183
|
+
|
|
184
|
+
## Goal
|
|
185
|
+
<What we're trying to achieve>
|
|
186
|
+
|
|
187
|
+
## Requirements
|
|
188
|
+
- <Requirement 1>
|
|
189
|
+
- <Requirement 2>
|
|
190
|
+
|
|
191
|
+
## Acceptance Criteria
|
|
192
|
+
- [ ] <Criterion 1>
|
|
193
|
+
- [ ] <Criterion 2>
|
|
194
|
+
|
|
195
|
+
## Technical Notes
|
|
196
|
+
<Any technical decisions or constraints>
|
|
197
|
+
```
|
|
198
|
+
|
|
199
|
+
---
|
|
200
|
+
|
|
201
|
+
### Phase 2: Prepare for Implementation (shared)
|
|
202
|
+
|
|
203
|
+
> Both paths converge here. PRD and task directory must exist before proceeding.
|
|
204
|
+
|
|
205
|
+
**Step 4: Code-Spec Depth Check** `[AI]`
|
|
152
206
|
|
|
153
207
|
If the task touches infra or cross-layer contracts, do not start implementation until code-spec depth is defined.
|
|
154
208
|
|
|
@@ -158,22 +212,22 @@ Trigger this requirement when the change includes any of:
|
|
|
158
212
|
- Infra integrations (storage, queue, cache, secrets, env contracts)
|
|
159
213
|
- Cross-layer payload transformations
|
|
160
214
|
|
|
161
|
-
Must-have before
|
|
215
|
+
Must-have before proceeding:
|
|
162
216
|
- [ ] Target code-spec files to update are identified
|
|
163
217
|
- [ ] Concrete contract is defined (signature, fields, env keys)
|
|
164
218
|
- [ ] Validation and error matrix is defined
|
|
165
219
|
- [ ] At least one Good/Base/Bad case is defined
|
|
166
220
|
|
|
167
|
-
|
|
221
|
+
**Step 5: Research the Codebase** `[AI]`
|
|
168
222
|
|
|
169
|
-
|
|
223
|
+
Based on the confirmed PRD, call Research Agent to find relevant specs and patterns:
|
|
170
224
|
|
|
171
225
|
```
|
|
172
226
|
Task(
|
|
173
227
|
subagent_type: "research",
|
|
174
228
|
prompt: "Analyze the codebase for this task:
|
|
175
229
|
|
|
176
|
-
Task: <
|
|
230
|
+
Task: <goal from PRD>
|
|
177
231
|
Type: <frontend/backend/fullstack>
|
|
178
232
|
|
|
179
233
|
Please find:
|
|
@@ -189,23 +243,12 @@ Task(
|
|
|
189
243
|
- <pattern>: <example file path>
|
|
190
244
|
|
|
191
245
|
## Files to Modify
|
|
192
|
-
- <path>: <what change>
|
|
193
|
-
|
|
194
|
-
## Suggested Task Name
|
|
195
|
-
- <short-slug-name>",
|
|
246
|
+
- <path>: <what change>",
|
|
196
247
|
model: "opus"
|
|
197
248
|
)
|
|
198
249
|
```
|
|
199
250
|
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
Based on research results:
|
|
203
|
-
|
|
204
|
-
```bash
|
|
205
|
-
TASK_DIR=$(python3 ./.trellis/scripts/task.py create "<title from research>" --slug <suggested-slug>)
|
|
206
|
-
```
|
|
207
|
-
|
|
208
|
-
### Step 4: Configure Context `[AI]`
|
|
251
|
+
**Step 6: Configure Context** `[AI]`
|
|
209
252
|
|
|
210
253
|
Initialize default context:
|
|
211
254
|
|
|
@@ -222,29 +265,7 @@ python3 ./.trellis/scripts/task.py add-context "$TASK_DIR" implement "<path>" "<
|
|
|
222
265
|
python3 ./.trellis/scripts/task.py add-context "$TASK_DIR" check "<path>" "<reason>"
|
|
223
266
|
```
|
|
224
267
|
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
Create `prd.md` in the task directory with:
|
|
228
|
-
|
|
229
|
-
```markdown
|
|
230
|
-
# <Task Title>
|
|
231
|
-
|
|
232
|
-
## Goal
|
|
233
|
-
<What we're trying to achieve>
|
|
234
|
-
|
|
235
|
-
## Requirements
|
|
236
|
-
- <Requirement 1>
|
|
237
|
-
- <Requirement 2>
|
|
238
|
-
|
|
239
|
-
## Acceptance Criteria
|
|
240
|
-
- [ ] <Criterion 1>
|
|
241
|
-
- [ ] <Criterion 2>
|
|
242
|
-
|
|
243
|
-
## Technical Notes
|
|
244
|
-
<Any technical decisions or constraints>
|
|
245
|
-
```
|
|
246
|
-
|
|
247
|
-
### Step 6: Activate Task `[AI]`
|
|
268
|
+
**Step 7: Activate Task** `[AI]`
|
|
248
269
|
|
|
249
270
|
```bash
|
|
250
271
|
python3 ./.trellis/scripts/task.py start "$TASK_DIR"
|
|
@@ -252,7 +273,11 @@ python3 ./.trellis/scripts/task.py start "$TASK_DIR"
|
|
|
252
273
|
|
|
253
274
|
This sets `.current-task` so hooks can inject context.
|
|
254
275
|
|
|
255
|
-
|
|
276
|
+
---
|
|
277
|
+
|
|
278
|
+
### Phase 3: Execute (shared)
|
|
279
|
+
|
|
280
|
+
**Step 8: Implement** `[AI]`
|
|
256
281
|
|
|
257
282
|
Call Implement Agent (code-spec context is auto-injected by hook):
|
|
258
283
|
|
|
@@ -267,7 +292,7 @@ Task(
|
|
|
267
292
|
)
|
|
268
293
|
```
|
|
269
294
|
|
|
270
|
-
|
|
295
|
+
**Step 9: Check Quality** `[AI]`
|
|
271
296
|
|
|
272
297
|
Call Check Agent (code-spec context is auto-injected by hook):
|
|
273
298
|
|
|
@@ -282,7 +307,7 @@ Task(
|
|
|
282
307
|
)
|
|
283
308
|
```
|
|
284
309
|
|
|
285
|
-
|
|
310
|
+
**Step 10: Complete** `[AI]`
|
|
286
311
|
|
|
287
312
|
1. Verify lint and typecheck pass
|
|
288
313
|
2. Report what was implemented
|