@mindfoldhq/trellis 0.5.0-beta.15 → 0.5.0-beta.17
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/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +0 -28
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/update.d.ts.map +1 -1
- package/dist/commands/update.js +29 -1
- package/dist/commands/update.js.map +1 -1
- package/dist/configurators/antigravity.d.ts.map +1 -1
- package/dist/configurators/antigravity.js +2 -8
- package/dist/configurators/antigravity.js.map +1 -1
- package/dist/configurators/claude.d.ts.map +1 -1
- package/dist/configurators/claude.js +3 -9
- package/dist/configurators/claude.js.map +1 -1
- package/dist/configurators/codebuddy.d.ts.map +1 -1
- package/dist/configurators/codebuddy.js +2 -2
- package/dist/configurators/codebuddy.js.map +1 -1
- package/dist/configurators/codex.d.ts.map +1 -1
- package/dist/configurators/codex.js +2 -7
- package/dist/configurators/codex.js.map +1 -1
- package/dist/configurators/copilot.d.ts.map +1 -1
- package/dist/configurators/copilot.js +2 -9
- package/dist/configurators/copilot.js.map +1 -1
- package/dist/configurators/cursor.d.ts.map +1 -1
- package/dist/configurators/cursor.js +2 -2
- package/dist/configurators/cursor.js.map +1 -1
- package/dist/configurators/droid.d.ts.map +1 -1
- package/dist/configurators/droid.js +2 -2
- package/dist/configurators/droid.js.map +1 -1
- package/dist/configurators/gemini.d.ts.map +1 -1
- package/dist/configurators/gemini.js +2 -2
- package/dist/configurators/gemini.js.map +1 -1
- package/dist/configurators/index.d.ts.map +1 -1
- package/dist/configurators/index.js +13 -11
- package/dist/configurators/index.js.map +1 -1
- package/dist/configurators/kilo.d.ts.map +1 -1
- package/dist/configurators/kilo.js +2 -8
- package/dist/configurators/kilo.js.map +1 -1
- package/dist/configurators/kiro.d.ts.map +1 -1
- package/dist/configurators/kiro.js +2 -2
- package/dist/configurators/kiro.js.map +1 -1
- package/dist/configurators/opencode.d.ts.map +1 -1
- package/dist/configurators/opencode.js +7 -4
- package/dist/configurators/opencode.js.map +1 -1
- package/dist/configurators/pi.d.ts.map +1 -1
- package/dist/configurators/pi.js +9 -4
- package/dist/configurators/pi.js.map +1 -1
- package/dist/configurators/qoder.d.ts.map +1 -1
- package/dist/configurators/qoder.js +2 -2
- package/dist/configurators/qoder.js.map +1 -1
- package/dist/configurators/shared.d.ts +21 -2
- package/dist/configurators/shared.d.ts.map +1 -1
- package/dist/configurators/shared.js +32 -3
- package/dist/configurators/shared.js.map +1 -1
- package/dist/configurators/windsurf.d.ts.map +1 -1
- package/dist/configurators/windsurf.js +2 -8
- package/dist/configurators/windsurf.js.map +1 -1
- package/dist/migrations/manifests/0.5.0-beta.15.json +3 -13
- package/dist/migrations/manifests/0.5.0-beta.16.json +9 -0
- package/dist/migrations/manifests/0.5.0-beta.17.json +9 -0
- package/dist/templates/common/bundled-skills/trellis-meta/SKILL.md +73 -0
- package/dist/templates/common/bundled-skills/trellis-meta/references/customize-local/add-project-local-conventions.md +83 -0
- package/dist/templates/common/bundled-skills/trellis-meta/references/customize-local/change-agents.md +54 -0
- package/dist/templates/common/bundled-skills/trellis-meta/references/customize-local/change-context-loading.md +81 -0
- package/dist/templates/common/bundled-skills/trellis-meta/references/customize-local/change-hooks.md +57 -0
- package/dist/templates/common/bundled-skills/trellis-meta/references/customize-local/change-skills-or-commands.md +78 -0
- package/dist/templates/common/bundled-skills/trellis-meta/references/customize-local/change-spec-structure.md +83 -0
- package/dist/templates/common/bundled-skills/trellis-meta/references/customize-local/change-task-lifecycle.md +79 -0
- package/dist/templates/common/bundled-skills/trellis-meta/references/customize-local/change-workflow.md +48 -0
- package/dist/templates/common/bundled-skills/trellis-meta/references/customize-local/overview.md +55 -0
- package/dist/templates/common/bundled-skills/trellis-meta/references/local-architecture/context-injection.md +68 -0
- package/dist/templates/common/bundled-skills/trellis-meta/references/local-architecture/generated-files.md +80 -0
- package/dist/templates/common/bundled-skills/trellis-meta/references/local-architecture/overview.md +51 -0
- package/dist/templates/common/bundled-skills/trellis-meta/references/local-architecture/spec-system.md +102 -0
- package/dist/templates/common/bundled-skills/trellis-meta/references/local-architecture/task-system.md +101 -0
- package/dist/templates/common/bundled-skills/trellis-meta/references/local-architecture/workflow.md +75 -0
- package/dist/templates/common/bundled-skills/trellis-meta/references/local-architecture/workspace-memory.md +71 -0
- package/dist/templates/common/bundled-skills/trellis-meta/references/platform-files/agents.md +79 -0
- package/dist/templates/common/bundled-skills/trellis-meta/references/platform-files/hooks-and-settings.md +69 -0
- package/dist/templates/common/bundled-skills/trellis-meta/references/platform-files/overview.md +59 -0
- package/dist/templates/common/bundled-skills/trellis-meta/references/platform-files/platform-map.md +74 -0
- package/dist/templates/common/bundled-skills/trellis-meta/references/platform-files/skills-and-commands.md +83 -0
- package/dist/templates/common/index.d.ts +22 -2
- package/dist/templates/common/index.d.ts.map +1 -1
- package/dist/templates/common/index.js +53 -4
- package/dist/templates/common/index.js.map +1 -1
- package/dist/templates/common/skills/brainstorm.md +3 -0
- package/dist/templates/markdown/agents.md +8 -0
- package/dist/templates/pi/extensions/trellis/index.ts.txt +499 -51
- package/dist/templates/trellis/scripts/common/task_store.py +2 -2
- package/dist/templates/trellis/scripts/task.py +3 -3
- package/dist/templates/trellis/workflow.md +3 -0
- package/dist/utils/posix.d.ts +13 -0
- package/dist/utils/posix.d.ts.map +1 -0
- package/dist/utils/posix.js +15 -0
- package/dist/utils/posix.js.map +1 -0
- package/dist/utils/template-hash.d.ts +22 -3
- package/dist/utils/template-hash.d.ts.map +1 -1
- package/dist/utils/template-hash.js +78 -17
- package/dist/utils/template-hash.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
# Skills, Commands, Prompts, And Workflows
|
|
2
|
+
|
|
3
|
+
Skills and commands are textual entry points for user interaction with Trellis. Different platforms use different names, but their core purpose is the same: tell the AI how to enter the Trellis flow when the user expresses a certain intent.
|
|
4
|
+
|
|
5
|
+
## Conceptual Differences
|
|
6
|
+
|
|
7
|
+
| Type | Trigger mode | Best for |
|
|
8
|
+
| --- | --- | --- |
|
|
9
|
+
| skill | AI auto-match or explicit user mention | Long-term capabilities, workflow rules, modification guides. |
|
|
10
|
+
| command | Explicit user invocation | Clear operation entry points such as continue and finish-work. |
|
|
11
|
+
| prompt | Explicit user invocation or platform selection | Similar to command, but in a platform prompt format. |
|
|
12
|
+
| workflow | Explicit user selection or platform auto-match | Guides the main session when no sub-agent/hook exists. |
|
|
13
|
+
|
|
14
|
+
Trellis workflow skills usually share one semantic set: brainstorm, before-dev, check, update-spec, break-loop. Multi-file built-in skills such as `trellis-meta` use layered references.
|
|
15
|
+
|
|
16
|
+
## Common Paths
|
|
17
|
+
|
|
18
|
+
| Platform | Common entries |
|
|
19
|
+
| --- | --- |
|
|
20
|
+
| Claude Code | `.claude/skills/`, `.claude/commands/` |
|
|
21
|
+
| Cursor | `.cursor/skills/`, `.cursor/commands/` |
|
|
22
|
+
| OpenCode | `.opencode/skills/`, `.opencode/commands/` |
|
|
23
|
+
| Codex | `.agents/skills/`, `.codex/skills/` |
|
|
24
|
+
| Kilo | `.kilocode/skills/`, `.kilocode/workflows/` |
|
|
25
|
+
| Kiro | `.kiro/skills/` |
|
|
26
|
+
| Gemini CLI | `.gemini/skills/`, `.gemini/commands/` |
|
|
27
|
+
| Antigravity | `.agent/skills/`, `.agent/workflows/` |
|
|
28
|
+
| Windsurf | `.windsurf/skills/`, `.windsurf/workflows/` |
|
|
29
|
+
| Qoder | `.qoder/skills/`, `.qoder/commands/` |
|
|
30
|
+
| CodeBuddy | `.codebuddy/skills/`, `.codebuddy/commands/` |
|
|
31
|
+
| GitHub Copilot | `.github/skills/`, `.github/prompts/` |
|
|
32
|
+
| Factory Droid | `.factory/skills/`, `.factory/commands/` |
|
|
33
|
+
| Pi Agent | `.pi/skills/` |
|
|
34
|
+
|
|
35
|
+
In a user project, use the files actually generated by init as authoritative.
|
|
36
|
+
|
|
37
|
+
## Skill Structure
|
|
38
|
+
|
|
39
|
+
A common skill is a directory:
|
|
40
|
+
|
|
41
|
+
```text
|
|
42
|
+
trellis-meta/
|
|
43
|
+
├── SKILL.md
|
|
44
|
+
└── references/
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
`SKILL.md` should tell the AI:
|
|
48
|
+
|
|
49
|
+
- When to use this skill.
|
|
50
|
+
- Which reference to read first for the current task.
|
|
51
|
+
- What not to do.
|
|
52
|
+
|
|
53
|
+
References hold longer explanations so the entry file does not contain everything.
|
|
54
|
+
|
|
55
|
+
## Command/Prompt/Workflow Structure
|
|
56
|
+
|
|
57
|
+
Commands, prompts, and workflows are usually single files. Their content should include:
|
|
58
|
+
|
|
59
|
+
- When to use it.
|
|
60
|
+
- Which `.trellis/` files to read.
|
|
61
|
+
- Which scripts to run.
|
|
62
|
+
- How to report after completion.
|
|
63
|
+
|
|
64
|
+
They should not store task state; task state belongs in `.trellis/tasks/` and `.trellis/.runtime/`.
|
|
65
|
+
|
|
66
|
+
## Local Change Scenarios
|
|
67
|
+
|
|
68
|
+
| User need | Edit location |
|
|
69
|
+
| --- | --- |
|
|
70
|
+
| Change AI auto-trigger rules | The corresponding skill's frontmatter description. |
|
|
71
|
+
| Change user command behavior | The corresponding command/prompt/workflow file. |
|
|
72
|
+
| Add a project-local skill | Platform skill directory, or shared `.agents/skills/`. |
|
|
73
|
+
| Let multiple platforms share one capability | Write equivalent skills in each platform skill directory, or use the `.agents/skills/` shared layer on platforms that support it. |
|
|
74
|
+
| Change finish/continue entry points | Platform commands/prompts/workflows. |
|
|
75
|
+
|
|
76
|
+
## Modification Principles
|
|
77
|
+
|
|
78
|
+
1. **Keep entry files short; references carry long content**. This matters especially for multi-file skills like `trellis-meta`.
|
|
79
|
+
2. **Make trigger descriptions specific**. A description that is too broad can mis-trigger; one that is too narrow may not trigger.
|
|
80
|
+
3. **Keep the same semantics consistent across platforms**. File formats can differ, but behavior descriptions should match.
|
|
81
|
+
4. **Put project-specific capabilities in local skills**. Do not put team-private flows into public `trellis-meta`.
|
|
82
|
+
|
|
83
|
+
If the user only wants local AI to know one more project rule, usually create a project-local skill or update `.trellis/spec/` instead of changing a Trellis built-in workflow skill.
|
|
@@ -6,8 +6,9 @@
|
|
|
6
6
|
*
|
|
7
7
|
* Directory structure:
|
|
8
8
|
* common/
|
|
9
|
-
* ├── commands/
|
|
10
|
-
*
|
|
9
|
+
* ├── commands/ # Templates that stay as slash commands
|
|
10
|
+
* ├── skills/ # Single-file templates that become auto-triggered skills
|
|
11
|
+
* └── bundled-skills/ # Multi-file built-in skills with references/assets
|
|
11
12
|
*/
|
|
12
13
|
export interface CommonTemplate {
|
|
13
14
|
/** Template name without extension (e.g., "start", "before-dev") */
|
|
@@ -15,6 +16,18 @@ export interface CommonTemplate {
|
|
|
15
16
|
/** Raw content with {{placeholders}} — must be resolved before writing */
|
|
16
17
|
content: string;
|
|
17
18
|
}
|
|
19
|
+
export interface CommonBundledSkillFile {
|
|
20
|
+
/** POSIX path relative to the skill directory, e.g. "references/core.md" */
|
|
21
|
+
relativePath: string;
|
|
22
|
+
/** Raw content with {{placeholders}} — must be resolved before writing */
|
|
23
|
+
content: string;
|
|
24
|
+
}
|
|
25
|
+
export interface CommonBundledSkill {
|
|
26
|
+
/** Skill directory name, e.g. "trellis-meta" */
|
|
27
|
+
name: string;
|
|
28
|
+
/** Files that must be written under the skill directory */
|
|
29
|
+
files: CommonBundledSkillFile[];
|
|
30
|
+
}
|
|
18
31
|
/**
|
|
19
32
|
* Get all command templates (stay as slash commands on all platforms).
|
|
20
33
|
* Results are cached after first call.
|
|
@@ -25,4 +38,11 @@ export declare function getCommandTemplates(): CommonTemplate[];
|
|
|
25
38
|
* Results are cached after first call.
|
|
26
39
|
*/
|
|
27
40
|
export declare function getSkillTemplates(): CommonTemplate[];
|
|
41
|
+
/**
|
|
42
|
+
* Get all multi-file built-in skills.
|
|
43
|
+
*
|
|
44
|
+
* These are copied as complete skill directories so references and assets stay
|
|
45
|
+
* lazy-loadable instead of being flattened into one oversized SKILL.md.
|
|
46
|
+
*/
|
|
47
|
+
export declare function getBundledSkillTemplates(): CommonBundledSkill[];
|
|
28
48
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/templates/common/index.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/templates/common/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAuBH,MAAM,WAAW,cAAc;IAC7B,oEAAoE;IACpE,IAAI,EAAE,MAAM,CAAC;IACb,0EAA0E;IAC1E,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,sBAAsB;IACrC,4EAA4E;IAC5E,YAAY,EAAE,MAAM,CAAC;IACrB,0EAA0E;IAC1E,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,kBAAkB;IACjC,gDAAgD;IAChD,IAAI,EAAE,MAAM,CAAC;IACb,2DAA2D;IAC3D,KAAK,EAAE,sBAAsB,EAAE,CAAC;CACjC;AAOD;;;GAGG;AACH,wBAAgB,mBAAmB,IAAI,cAAc,EAAE,CAMtD;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,IAAI,cAAc,EAAE,CAMpD;AAuCD;;;;;GAKG;AACH,wBAAgB,wBAAwB,IAAI,kBAAkB,EAAE,CAM/D"}
|
|
@@ -6,11 +6,12 @@
|
|
|
6
6
|
*
|
|
7
7
|
* Directory structure:
|
|
8
8
|
* common/
|
|
9
|
-
* ├── commands/
|
|
10
|
-
*
|
|
9
|
+
* ├── commands/ # Templates that stay as slash commands
|
|
10
|
+
* ├── skills/ # Single-file templates that become auto-triggered skills
|
|
11
|
+
* └── bundled-skills/ # Multi-file built-in skills with references/assets
|
|
11
12
|
*/
|
|
12
|
-
import { readdirSync, readFileSync } from "node:fs";
|
|
13
|
-
import { dirname, join } from "node:path";
|
|
13
|
+
import { readdirSync, readFileSync, statSync } from "node:fs";
|
|
14
|
+
import { dirname, join, relative, sep } from "node:path";
|
|
14
15
|
import { fileURLToPath } from "node:url";
|
|
15
16
|
const __filename = fileURLToPath(import.meta.url);
|
|
16
17
|
const __dirname = dirname(__filename);
|
|
@@ -30,6 +31,7 @@ function listMarkdownFiles(dir) {
|
|
|
30
31
|
// Cached results — files don't change during a CLI run
|
|
31
32
|
let cachedCommands;
|
|
32
33
|
let cachedSkills;
|
|
34
|
+
let cachedBundledSkills;
|
|
33
35
|
/**
|
|
34
36
|
* Get all command templates (stay as slash commands on all platforms).
|
|
35
37
|
* Results are cached after first call.
|
|
@@ -52,4 +54,51 @@ export function getSkillTemplates() {
|
|
|
52
54
|
}));
|
|
53
55
|
return cachedSkills;
|
|
54
56
|
}
|
|
57
|
+
function listDirectories(dir) {
|
|
58
|
+
try {
|
|
59
|
+
return readdirSync(join(__dirname, dir))
|
|
60
|
+
.filter((entry) => statSync(join(__dirname, dir, entry)).isDirectory())
|
|
61
|
+
.sort();
|
|
62
|
+
}
|
|
63
|
+
catch {
|
|
64
|
+
return [];
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
function toPosixRelativePath(root, filePath) {
|
|
68
|
+
return relative(root, filePath).split(sep).join("/");
|
|
69
|
+
}
|
|
70
|
+
function listBundledSkillFiles(skillDir) {
|
|
71
|
+
const root = join(__dirname, "bundled-skills", skillDir);
|
|
72
|
+
const files = [];
|
|
73
|
+
function walk(dir) {
|
|
74
|
+
for (const entry of readdirSync(dir)) {
|
|
75
|
+
const fullPath = join(dir, entry);
|
|
76
|
+
const stat = statSync(fullPath);
|
|
77
|
+
if (stat.isDirectory()) {
|
|
78
|
+
walk(fullPath);
|
|
79
|
+
}
|
|
80
|
+
else {
|
|
81
|
+
files.push({
|
|
82
|
+
relativePath: toPosixRelativePath(root, fullPath),
|
|
83
|
+
content: readFileSync(fullPath, "utf-8"),
|
|
84
|
+
});
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
walk(root);
|
|
89
|
+
return files.sort((a, b) => a.relativePath.localeCompare(b.relativePath));
|
|
90
|
+
}
|
|
91
|
+
/**
|
|
92
|
+
* Get all multi-file built-in skills.
|
|
93
|
+
*
|
|
94
|
+
* These are copied as complete skill directories so references and assets stay
|
|
95
|
+
* lazy-loadable instead of being flattened into one oversized SKILL.md.
|
|
96
|
+
*/
|
|
97
|
+
export function getBundledSkillTemplates() {
|
|
98
|
+
cachedBundledSkills ??= listDirectories("bundled-skills").map((name) => ({
|
|
99
|
+
name,
|
|
100
|
+
files: listBundledSkillFiles(name),
|
|
101
|
+
}));
|
|
102
|
+
return cachedBundledSkills;
|
|
103
|
+
}
|
|
55
104
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/templates/common/index.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/templates/common/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -57,6 +57,9 @@ Before any Q&A, ensure a task exists. If none exists, create one immediately.
|
|
|
57
57
|
TASK_DIR=$(python3 ./.trellis/scripts/task.py create "brainstorm: <short goal>" --slug <auto>)
|
|
58
58
|
```
|
|
59
59
|
|
|
60
|
+
Use a slug without a date prefix. `task.py create` adds the `MM-DD-`
|
|
61
|
+
directory prefix automatically.
|
|
62
|
+
|
|
60
63
|
Create/seed `prd.md` immediately with what you know:
|
|
61
64
|
|
|
62
65
|
```markdown
|
|
@@ -16,6 +16,14 @@ If you're using Codex or another agent-capable tool, additional project-scoped h
|
|
|
16
16
|
- `.agents/skills/` — reusable Trellis skills
|
|
17
17
|
- `.codex/agents/` — optional custom subagents
|
|
18
18
|
|
|
19
|
+
## Subagents
|
|
20
|
+
|
|
21
|
+
- ALWAYS wait for all subagents to complete before yielding.
|
|
22
|
+
- Spawn subagents automatically when:
|
|
23
|
+
- Parallelizable work (e.g., install + verify, npm test + typecheck, multiple tasks from plan)
|
|
24
|
+
- Long-running or blocking tasks where a worker can run independently.
|
|
25
|
+
- Isolation for risky changes or checks
|
|
26
|
+
|
|
19
27
|
Managed by Trellis. Edits outside this block are preserved; edits inside may be overwritten by a future `trellis update`.
|
|
20
28
|
|
|
21
29
|
<!-- TRELLIS:END -->
|