快速开始
# 全局安装
npm install -g @mindfoldhq/trellis@beta
# 进入你的项目目录
cd your-project
系统要求:Mac、Linux、Windows 全部支持。需要 Node.js 18+ 和 Python 3.10+。
trellis init 会自动检测已安装的平台,也可以用 flag 显式指定。随意组合:
# 交互式:检测已安装的平台并询问要配置哪些
trellis init -u your-name
# 显式:配置一个或多个平台
trellis init -u your-name --claude
trellis init -u your-name --claude --cursor --opencode
trellis init -u your-name --codex --gemini
your-name 会成为你的开发者身份,在 .trellis/workspace/your-name/ 创建个人工作区。
支持的 flag:--claude、--cursor、--opencode、--codex、--kiro、--gemini、--qoder、--codebuddy、--copilot、--droid、--antigravity、--windsurf、--kilo。
除了这 13 个已配置平台,任何读取 .agents/skills/ 规范的 AI 编码 agent(Amp、Cline、Deep Agents、Firebender、Kimi Code CLI、Warp 等)也能直接消费 Trellis:Codex 的 skill 就写在这个目录下,这些文件能被该生态的其他 agent 直接读取。
平台配置
trellis init 为每个平台写入各自的配置目录。.trellis/ 下的核心概念跨平台一致,差异在于 command、skill、sub-agent、hook 的交付方式。
| 平台 | 配置目录 |
|---|
| Claude Code | .claude/commands/trellis/、agents/、skills/、hooks/ |
| Cursor | .cursor/commands/、agents/、skills/、hooks/ |
| OpenCode | .opencode/commands/trellis/、agents/、skills/、plugins/ |
| Codex | .codex/agents/、skills/、hooks/ + 仓库根 AGENTS.md |
| Kiro | .kiro/agents/、skills/、hooks/ |
| Gemini CLI | .gemini/commands/trellis/、agents/、skills/、hooks/ |
| Qoder | .qoder/agents/、skills/、hooks/ |
| CodeBuddy | .codebuddy/commands/trellis/、agents/、skills/、hooks/ |
| Copilot | .github/copilot/、prompts/、agents/、skills/、hooks/ |
| Droid | .factory/commands/trellis/、droids/、skills/、hooks/ |
| Kilo | .kilocode/workflows/、skills/ |
| Antigravity | .agent/workflows/、skills/ |
| Windsurf | .windsurf/workflows/、skills/ |
.agents/skills/ 是一份跨平台共享层(agentskills.io 规范),trellis init 会把所有 skill 都写一份到这里,供 Amp、Cline、Deep Agents、Firebender、Kimi Code CLI、Warp 等遵循 .agents/skills/ 规范的 agent 直接读取。
最小 happy path,剩下的 AI 自己推:
# 1. 描述你要做什么
"新增用户登录功能"
# 2. AI 按 workflow.md 走 Plan → Execute → Finish
# (完整流程看第 3 章)
# 3. 你测试 + commit,然后
/trellis:finish-work
两个逃生舱:
/trellis:start — 平台没 SessionStart hook 时(Kilo / Antigravity / Windsurf)手动跑;或者想让 AI 重读 workflow.md 并报一次完整上下文时跑。
/trellis:continue — AI 停下来、或看起来在跳步骤时,任何时候跑。AI 读 .current-task + status,按 workflow.md 判断下一步做什么并继续。
第 3 章把 Plan / Execute / Finish 的每个子步骤都走一遍。
远程 Spec 模板
不用从零写 spec,在 init 时拉取预置的 spec 模板:
官方 Marketplace
# 交互式:浏览可用模板并挑一个
trellis init -u your-name
# 非交互式:按 ID 指定模板
trellis init -u your-name --template electron-fullstack
交互选择器会列出 官方 marketplace 的所有模板,选一个或者直接从空 spec 开始。
自定义 Registry(--registry)
从你自己的 GitHub / GitLab / Bitbucket 仓库拉取 spec:
# 直接下载:仓库目录变成 .trellis/spec/
trellis init --registry gh:myorg/myrepo/my-team-spec
# Marketplace 模式:仓库里有 index.json 定义多模板
trellis init --registry gh:myorg/myrepo/marketplace
# 从自定义 marketplace 选特定模板
trellis init --registry gh:myorg/myrepo/marketplace --template my-template
# 指定分支
trellis init --registry gh:myorg/myrepo/specs#develop
# GitLab 或 Bitbucket
trellis init --registry gitlab:myorg/myrepo/specs
trellis init --registry bitbucket:myorg/myrepo/specs
Source 格式:provider:user/repo[/subdir][#ref]
| Provider | 前缀 |
|---|
| GitHub | gh: 或 github: |
| GitLab | gitlab: |
| Bitbucket | bitbucket: |
不写 ref(branch/tag)时默认 main。
已有 spec 的处理
.trellis/spec/ 已存在时,用 strategy flag:
| Flag | 行为 |
|---|
--overwrite | 删除现有 spec 目录再下载 |
--append | 只拷贝不存在的文件 |
| (都不传) | 交互式询问怎么处理 |
构建自定义 Marketplace
在仓库根目录创建 index.json:
{
"version": 1,
"templates": [
{
"id": "my-backend-spec",
"type": "spec",
"name": "My Backend Spec",
"description": "团队后端约定",
"path": "marketplace/specs/my-backend-spec",
"tags": ["backend", "node"]
}
]
}
path 相对仓库根目录。目前只支持 type: "spec"。
私有仓库
私有仓库要设置 GIGET_AUTH 环境变量,值是 personal access token:
GIGET_AUTH=ghp_xxxxx trellis init --registry gh:myorg/private-repo/specs
GitHub fine-grained token 需要 Contents 和 Metadata 的读权限。
目录结构
下面是用 Claude Code 跑完 trellis init 后的目录。其他平台会写到各自的子目录,但 .trellis/ 核心一致。
your-project/
├── .trellis/ # Trellis 核心(跨平台一致)
│ ├── .developer # 开发者身份(gitignored)
│ ├── .current-task # 当前任务指针
│ ├── .version # Trellis 版本号
│ ├── .template-hashes.json # 模板文件 hash(update 用)
│ ├── workflow.md # 开发工作流指南
│ ├── config.yaml # 项目配置(packages、update.skip、hooks)
│ │
│ ├── spec/ # 项目 spec 库
│ │ ├── frontend/ # 前端 spec(monorepo 可按 package 分层)
│ │ ├── backend/ # 后端 spec
│ │ └── guides/ # 思考指南
│ │
│ ├── workspace/ # 开发者工作区
│ │ ├── index.md
│ │ └── {developer-name}/
│ │ ├── index.md
│ │ └── journal-N.md
│ │
│ ├── tasks/ # 任务目录
│ │ ├── {MM-DD-task-name}/ # 活跃任务
│ │ │ ├── task.json # 任务元信息
│ │ │ ├── prd.md # 需求文档
│ │ │ ├── info.md # 技术设计(可选)
│ │ │ ├── implement.jsonl # trellis-implement 上下文
│ │ │ ├── check.jsonl # trellis-check 上下文
│ │ │ └── research.jsonl # trellis-research 上下文
│ │ └── archive/ # 归档任务
│ │ └── {YYYY-MM}/
│ │
│ └── scripts/ # 自动化脚本(Python)
│ ├── task.py # 任务管理
│ ├── get_context.py # 会话上下文
│ ├── add_session.py # 记录会话
│ ├── create_bootstrap.py # 首次 spec bootstrap
│ └── common/ # 共享库
│
├── .claude/ # Claude Code 配置
│ ├── settings.json # hook 和权限配置
│ ├── commands/trellis/ # 显式命令
│ │ ├── start.md
│ │ ├── finish-work.md
│ │ └── continue.md
│ ├── agents/ # Sub-agent 定义
│ │ ├── trellis-implement.md
│ │ ├── trellis-check.md
│ │ └── trellis-research.md
│ ├── skills/ # Auto-trigger skills
│ │ ├── trellis-brainstorm/
│ │ ├── trellis-before-dev/
│ │ ├── trellis-check/
│ │ ├── trellis-update-spec/
│ │ └── trellis-break-loop/
│ └── hooks/ # Hook 脚本
│ ├── session-start.py
│ ├── inject-subagent-context.py
│ └── inject-workflow-state.py
│
├── .cursor/ # Cursor:commands/ + rules/
├── .opencode/ # OpenCode:commands/trellis/、agents/、skills/、plugins/
├── .codex/ # Codex:prompts/、skills/ + 仓库根 AGENTS.md
├── .kiro/ # Kiro:steering/、prompts/、skills/
├── .gemini/ # Gemini CLI:commands/trellis/
├── .qoder/ # Qoder:skills/、rules/
├── .codebuddy/ # CodeBuddy:commands/trellis/
├── .factory/ # Droid:commands/trellis/、skills/、hooks/
└── .github/ # Copilot:copilot-instructions.md、prompts/
你的第一个任务
启动会话
打开终端,SessionStart hook 自动触发,Trellis 上下文已经在 AI 的上下文里了:
workflow.md 的 TOC + Phase 1/2/3 step 详情
- 身份、git 状态、活跃任务列表
- spec 索引
直接描述任务即可。显式跑 /trellis:start 的场景:想看完整上下文报告、让 AI 明确走一遍检查流程、或者怀疑自动注入没跑。跑了之后 AI 会重读一遍 workflow.md、再跑一次 get_context.py 刷新状态,然后问你 “想干什么?”。 在 ~/.codex/config.toml 开启:[features]
codex_hooks = true
之后和 Class-1 平台一样:打开终端,SessionStart hook 自动注入 Trellis 上下文,直接描述任务即可。 Kiro 默认通过 .kiro/ 下的 agent / skill 文件交付 Trellis 内容。Kiro 的 Agent Hook 是用户自己配置的(文件保存触发、构建成功触发等),Trellis 不原生带任何 Agent Hook wiring。直接描述任务,Kiro 按 skill 匹配进入 brainstorm 流程;需要完整上下文报告时跑 @trellis:start。
这三个平台只有 workflow + skill,没有 hook 和 sub-agent。入口:
- Kilo:
/start.md
- Antigravity:打开
.agent/workflows/start.md
- Windsurf:
/trellis-start
AI 执行 workflow 里写的步骤:读 workflow.md、跑 get_context.py、读 spec 索引、询问你想做什么。后续的 implement / check 阶段会在主会话里内联跑,而不是 spawn sub-agent。
AI 建任务并开发
你说:“新增用户登录功能”。AI 按 workflow.md 的三阶段走:
Phase 1 — Plan(和你互动)
1.0 task.py create 创建任务目录(.trellis/tasks/MM-DD-user-login/)
1.1 激活 trellis-brainstorm skill,和你一问一答澄清需求,迭代 prd.md
1.2 需要调研时 spawn trellis-research sub-agent,产物写到 research/
1.3 task.py init-context 生成 implement.jsonl / check.jsonl
1.4 task.py start 把任务置为 .current-task
Phase 2 — Execute
2.1 spawn trellis-implement sub-agent(class-1 平台 hook 自动注入 implement.jsonl)
→ 按 prd.md 写代码,不 git commit
2.2 spawn trellis-check sub-agent(hook 自动注入 check.jsonl)
→ 对照 spec 审 diff + 跑 lint / typecheck / test,自修复违规
Phase 3 — Finish
3.1 激活 trellis-check skill,做最终验证
3.2(按需)激活 trellis-break-loop skill 做 debug 复盘
3.3 激活 trellis-update-spec skill,把新知识写回 .trellis/spec/
3.4 提醒你跑 /trellis:finish-work
AI 停下或跳步骤时:跑 /trellis:continue,AI 读 .current-task + status,按 workflow.md 判断下一步该做什么(before-dev / check / update-spec 等)继续推进。
结束会话
finish-work 调 add_session.py 追加一条 journal,更新个人索引。任务真正完成(代码已合入、验收条件满足)时,通过 task.py archive 归档。
跨会话记忆
下次打开会话,SessionStart hook(或平台 prelude)会读你的 workspace journal 和活跃任务列表,AI 能回忆起上次做了什么:
AI:"Alice 好,你上次完成了用户登录功能(commit abc1234),
包含 LoginForm 组件、JWT 中间件、users 表。
接下来想干什么?"
Journal 存在 .trellis/workspace/{name}/journal-N.md;每次 /trellis:finish-work 都会追加一条。.trellis/.current-task 指向当前未归档的任务。