跳转到主要内容

快速开始

安装

# 全局安装(beta 通道)
npm install -g @mindfoldhq/trellis@rc

# 进入你的项目目录
cd your-project
系统要求:Mac、Linux、Windows 全部支持。需要 Node.js 18+ 和 Python 3.9+。
trellis init 会自动检测已安装的平台,也可以用 flag 显式指定。每一个平台都需要最少 init 一次。随意组合:
# 交互式:检测已安装的平台并询问要配置哪些
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
trellis init -u your-name --pi
your-name 会成为你的开发者身份,在 .trellis/workspace/your-name/ 创建个人工作区。 支持的 flag:--claude--cursor--opencode--codex--kiro--gemini--qoder--codebuddy--copilot--droid--pi--antigravity--windsurf--kilo 除了这 14 个已配置平台,任何读取 .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/commands/agents/skills/hooks/
CodeBuddy.codebuddy/commands/trellis/agents/skills/hooks/
Copilot.github/copilot/prompts/agents/skills/hooks/
Droid.factory/commands/trellis/droids/skills/hooks/
Pi Agent.pi/prompts/skills/agents/extensions/trellis/settings.json
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 直接读取。

init 场景对照

trellis init 根据 .trellis/.trellis/.developer 的存在状态自动分派。按你的情境挑对应的命令:
场景命令产物
首次 init 项目trellis init -u your-name --claude创建 .trellis/ 骨架 + bootstrap task 00-bootstrap-guidelines,引导填项目 spec
往已有项目加新平台trellis init --cursor(或不带参数走交互式,会列出未配置平台)在现有 .trellis/ 上铺新平台配置目录;不产生 task
新开发者加入已有项目trellis init -u their-name生成 joiner 引导 task 00-join-<slug>,引导读 workflow + spec;准备开始时在当前 AI 会话里 start 它
同一开发者换机器同上同样生成一份 joiner task(因为 .developer 不进 git),嫌多可直接 task.py archive
同一人同机器 re-inittrellis init -u your-nameno-op —— .trellis/.developer 都在,啥都不做
--force / --skip-existing 只影响 有冲突的文件怎么处理(强制覆盖 / 跳过),不改变 init 的分派逻辑本身。
判据信号.trellis/.developer 是 gitignored 的 per-checkout 身份文件(天然不进 git),所以新克隆的 checkout 永远没有它 —— 这是判断”新开发者”的干净信号。.trellis/workspace/<name>/ 进 git,不能作为判据。

基本流程

描述你要做什么即可。AI 会先判断当前 turn。简单对话和小型 inline 任务不会 自动创建 Trellis task;AI 只会询问本回合是否需要创建任务。复杂工作会先 单独确认是否可以创建 Trellis task 并进入 planning。
# 1. 描述你要做什么
"新增用户登录功能"

# 2. AI 判断当前 turn,必要时询问是否创建任务

# 3. 如果这是 Trellis task,AI 按 workflow.md 走 Plan → Execute → Finish

# 4. 工作 commit 已存在后
/trellis:finish-work
Agent-capable 平台通过 SessionStart hook、prompt hook、extension、agent 文件和 skill 的组合加载 Trellis 上下文。Codex 和 Claude-style 平台不同:它依赖 AGENTS.mdUserPromptSubmit hook, no-task breadcrumb 会提示 AI 读取 trellis-start。只有 Kilo / Antigravity / Windsurf 这类 agent-less 平台会发 /trellis:start(或 /start.md)作为显式入口。

目录结构

下面是用 Claude Code 跑完 trellis init 后的目录。其他平台会写到各自的子目录,但 .trellis/ 核心一致。
your-project/
├── .trellis/                          # Trellis 核心(跨平台一致)
│   ├── .developer                     # 开发者身份(gitignored)
│   ├── .version                       # Trellis 版本号
│   ├── .template-hashes.json          # 模板文件 hash(update 用)
│   ├── workflow.md                    # 开发工作流指南
│   ├── config.yaml                    # 项目配置(packages、update.skip、hooks)
│   │
│   ├── .runtime/                      # 每个会话自己的运行时状态(gitignored)
│   │   └── sessions/                  #   每个 AI 会话/窗口对应一个 active task
│   │       └── <session-key>.json
│   │
│   ├── 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                 #     需求文档
│   │   │   ├── design.md              #     复杂任务的技术设计
│   │   │   ├── implement.md           #     复杂任务的实施计划
│   │   │   ├── implement.jsonl        #     实现阶段 spec/research manifest
│   │   │   ├── check.jsonl            #     review 阶段 spec/research manifest
│   │   │   └── 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:commands/、skills/、agents/、hooks/
├── .codebuddy/        # CodeBuddy:commands/trellis/
├── .factory/          # Droid:commands/trellis/、skills/、hooks/
├── .pi/               # Pi Agent:prompts/、skills/、agents/、extensions/trellis/
└── .github/           # Copilot:copilot-instructions.md、prompts/

你的第一个任务

启动会话

打开终端。有 hook 支持的平台会通过紧凑 SessionStart payload 给 AI 足够的 Trellis 上下文来判断下一步:
  • workflow.md 的紧凑 Phase Index
  • 身份、git 状态、活跃任务列表
  • spec index 路径
  • task artifact context order
直接描述任务即可怀疑自动注入没跑、想重新加载上下文,就新开一个会话,或者让 AI 读取一次 trellis-start skill。这类平台通常没有 /trellis:start slash 命令,因为启动 路径已经负责 orient。

示例:从零开始新项目

这是新建产品、服务、SDK、包或内部工具时的第一轮 Trellis 流程。 真实情况:要做一个 B2B Dashboard,覆盖登录、团队管理、计费、分析页面。AI 可以快速启动,但每次会话不应该重新发明目录结构、API 风格、组件模式和测试规则。 起始 prompt:
I am starting a new B2B dashboard from scratch. Help me set up Trellis for the first week of work.

First, ask for the missing product and tech-stack decisions. Then create a small first task and the minimum specs needed for frontend structure, API shape, error handling, and test strategy.
工作流:
  1. 项目初始化后运行 trellis init。它会在 .trellis/spec/ 写入默认 spec 模板(约 17 份占位文件,分 backend/frontend/guides 三层,覆盖 directory structure、error handling、logging、component guidelines、cross-layer thinking 等规则),并创建 00-bootstrap-guidelines 任务。
  2. 在 bootstrap 任务里跟 AI 讨论产品需求和项目技术栈,让 AI 先拿到足够上下文再动手。
  3. 可选:使用 Trellis 内置安装的 trellis-spec-bootstarp,让 AI 从真实代码生成第一版 specs。不需要再从 marketplace 单独下载。
  4. 优先填写 trellis init 生成的默认 specs,按当前已经知道的内容来写,不要预先设计整个项目。
  5. 人工 review 生成的 spec 质量。
  6. 建一个能跑通端到端的最小任务。
  7. 继续运行 /trellis:continue;Trellis 会把任务推进到 check、update-spec、commit 和 finish。

AI 建任务并开发

你说:“新增用户登录功能”。AI 先判断这件事复杂到需要 Trellis task,并询问 是否可以创建任务进入 planning。你同意后,它按 workflow.md 的三阶段走:
Phase 1 — Plan(和你互动)
 1.0 task.py create 创建任务目录和默认 prd.md
 1.1 激活 trellis-brainstorm skill,和你一问一答澄清需求,迭代 prd.md
 1.2 复杂任务在实现前写 design.md 和 implement.md
 1.3 需要调研时,结论写到 research/
 1.4 Sub-agent mode curate implement.jsonl / check.jsonl,只放 spec + research
     路径,不放源码路径
 1.5 Review 后 task.py start 把 status 改成 in_progress

Phase 2 — Execute
 2.1 按 prd.md、存在时的 design.md、存在时的 implement.md 和相关 spec 实现。
     具体是 sub-agent 还是主会话 inline,取决于平台和模式
 2.2 运行 trellis-check → 对照 artifacts + 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 提出工作 commit 计划,提交确认的批次,然后运行 /trellis:finish-work
     做 archive 和 journal 记账
AI 停下或跳步骤时:跑 /trellis:continue,AI 根据当前 task 的 status、 artifact presence 和每轮注入的 workflow-state breadcrumb 判断下一步,并加载 对应 workflow 细节后继续推进。

结束会话

/trellis:finish-work
finish-workadd_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 内部会按 AI 会话/窗口记录各自的当前 task,下次进同一个会话能直接接上;task.py 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前缀
GitHubgh:github:
GitLabgitlab:
Bitbucketbitbucket:
不写 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 需要 ContentsMetadata 的读权限。