Documentation Index
Fetch the complete documentation index at: https://docs.trytrellis.app/llms.txt
Use this file to discover all available pages before exploring further.
Multi-Platform and Team Configuration
Trellis ships on 14 platforms (Claude Code, Cursor, OpenCode, Codex, Kiro, Kilo, Gemini CLI, Antigravity, Windsurf, Qoder, CodeBuddy, GitHub Copilot, Droid, Pi Agent) and additionally supports any AI coding agent that reads the.agents/skills/ standard (Amp, Cline, Deep Agents, Firebender, Kimi Code CLI, Warp, and more). The .trellis/ core is identical everywhere; what differs is how hooks, extensions, skills, sub-agents, and commands are delivered on each platform.
Joining an Already-Initialized Trellis Project
Someone else already rantrellis init on the repo and you’re joining as a new team member. Just run trellis init — the CLI detects the existing setup and offers three choices:
| Option | When to pick |
|---|---|
| Add AI platform(s) | You want to add a platform others haven’t configured (e.g. you use Cursor but the team only set up Claude Code) |
| Set up developer identity on this device | You’re a new member, you just need to write your identity on your machine |
| Full re-initialize | Project config is broken and you want a clean slate |
- Writes
.trellis/.developerwith your developer name (gitignored, per-machine) - Creates
.trellis/workspace/<your-name>/for your own journal
/trellis:start or the platform’s start workflow.
Don’t pick Full re-initialize — it overwrites existing
.trellis/, .claude/, etc.
configuration and affects the whole team.Capability Matrix
| Capability | Claude Code | Cursor | OpenCode | Codex | Kiro | Gemini | Qoder | CodeBuddy | Copilot | Droid | Pi Agent |
|---|---|---|---|---|---|---|---|---|---|---|---|
| SessionStart / extension auto-inject | ✅ | ✅ | ✅ | ⚡ | ⚡ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| Sub-agent context injection | ✅ | ✅ | ✅ | ❌ | ❌ | ❌ | ❌ | ✅ | ❌ | ✅ | ✅ |
Sub-agents (trellis-*) | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| Auto-trigger skills | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
Explicit /trellis:* commands | ✅ | ✅ | ✅ | — | — | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
features.hooks = true opt-in plus a one-time /hooks review on 0.129+; Kiro’s Agent Hooks are user-configured, not auto-executed) · ❌ the platform does not expose this event · — the platform has no command primitive; start / finish-work / continue are delivered as skills instead. Qoder uses /trellis-{name} (hyphen, not colon) via its native Custom Commands for finish-work / continue; start is covered by its SessionStart hook. Pi Agent uses an extension rather than Python hook files, but the behavior is the same: session context, Bash environment propagation, and sub-agent context injection are handled before the agent acts.
.kilocode/, .agent/ (Antigravity), and .windsurf/ are workflow-and-skill only: no sub-agents and no hooks. .agents/skills/ is written by every platform as a cross-platform shared layer.
Claude Code
Most complete automation. Hook layout:| Hook | Trigger | Effect |
|---|---|---|
session-start.py | SessionStart | Injects identity, git status, active tasks |
inject-workflow-state.py | UserPromptSubmit | Nudges the AI toward the current task’s state |
inject-subagent-context.py | PreToolUse (Task) | Loads implement.jsonl / check.jsonl / etc. |
trellis-implement, trellis-check, trellis-research under .claude/agents/.
Skills: trellis-brainstorm, trellis-before-dev, trellis-check, trellis-update-spec, trellis-break-loop under .claude/skills/.
Commands: start, finish-work, continue under .claude/commands/trellis/.
Cursor
.cursor/commands/trellis-{name}.md:start,finish-work,continue(flat file naming withtrellis-prefix, invoked as/trellis-startetc.).cursor/skills/trellis-{name}/SKILL.md: the 5 trellis skills.cursor/agents/:trellis-implement.md,trellis-check.md,trellis-research.md.cursor/hooks/: shared Python hook scripts (Claude-Code-compatible).cursor/hooks.json: hook configuration (Cursor uses a separate file, notsettings.json)
OpenCode
.opencode/commands/trellis/: start / finish-work / continue.opencode/agents/:trellis-implement.md,trellis-check.md,trellis-research.md.opencode/skills/: the 5 trellis skills.opencode/plugins/: JS plugins:session-start.js,inject-subagent-context.js,inject-workflow-state.js
Codex
AGENTS.md(repo root): entry file; Codex auto-reads it every session (acts as the prelude).codex/prompts/:trellis-start.md,trellis-finish-work.md,trellis-continue.md.codex/skills/: the 5 trellis skills.codex/agents/: TOML sub-agents:trellis-implement.toml,trellis-check.toml,trellis-research.toml.codex/hooks/session-start.py+.codex/hooks.json: SessionStart hook (experimental)
Codex hooks require enabling. Add to Codex 0.129+ also gates each installed hook behind a one-time
~/.codex/config.toml:/hooks TUI review — run /hooks once in Codex and approve the Trellis UserPromptSubmit hook, otherwise the workflow breadcrumb won’t auto-inject. Without these, Codex falls back to prelude-only (reads AGENTS.md every session): same content, just no event-driven injection.Kiro
.kiro/steering/trellis.md: Trellis prelude, loaded every session.kiro/prompts/trellis-*.md: prompt-style commands.kiro/skills/*/SKILL.md: auto-trigger skills (Kiro matches by description/YAML)
Gemini CLI
.gemini/commands/trellis/{name}.toml: TOML command files —start.toml,finish-work.toml,continue.toml.gemini/skills/trellis-{name}/SKILL.md: the 5 trellis skills.gemini/agents/{name}.md: sub-agent definitions with pull-based prelude (sub-agentsReadtheir own JSONL because Gemini has no sub-agentPreToolUsehook).gemini/hooks/session-start.py: SessionStart hook.gemini/settings.json: hook configuration (SessionStart only)
Qoder
/ in the agent input, stored under <project>/.qoder/commands/{name}.md with required name + description YAML frontmatter). Trellis delivers session-boundary entry points there so you can invoke them deterministically, and keeps the phase-level workflows as auto-trigger skills.
Layout:
.qoder/commands/trellis-{name}.md: session-boundary commands —finish-work,continue— invoked as/trellis-finish-work,/trellis-continue(Qoder’s SessionStart hook already injects the “start” context, so there is notrellis-startcommand).qoder/skills/trellis-{name}/SKILL.md: auto-trigger workflow skills —brainstorm,before-dev,check,update-spec,break-loop.qoder/agents/{name}.md: sub-agent definitions with pull-based prelude.qoder/hooks/session-start.py: SessionStart hook.qoder/settings.json: hook configuration (SessionStart only — Qoder has no sub-agentPreToolUsehook)
CodeBuddy
.codebuddy/commands/trellis/{name}.md:start,finish-work,continue.codebuddy/skills/trellis-{name}/SKILL.md: the 5 trellis skills.codebuddy/agents/{name}.md: sub-agent definitions.codebuddy/hooks/*.py: shared Python hook scripts.codebuddy/settings.json: hook configuration (SessionStart +PreToolUsesub-agent injection)
GitHub Copilot
.github/copilot-instructions.md: the Trellis prelude, loaded automatically every session.github/prompts/trellis-{name}.prompt.md: prompt files forstart/finish-work/continue.github/skills/trellis-{name}/SKILL.md: the 5 trellis skills.github/agents/{name}.agent.md: sub-agent definitions with pull-based prelude (Copilot’s sub-agent hook does not fire reliably, so sub-agentsReadtheir own JSONL).github/copilot/hooks/*.py: Copilot-specific + shared Python hook scripts.github/copilot/hooks.json: hook configuration (SessionStart only — sub-agentPreToolUseis absent)
Droid
.factory/commands/trellis/: start / finish-work / continue.factory/agents/: the threetrellis-*sub-agents.factory/skills/: the five trellis skills.factory/hooks/: SessionStart + sub-agent injection
Pi Agent
.pi/prompts/trellis-{name}.md: session-boundary prompts (finish-work,continue;startonly where applicable).pi/skills/trellis-{name}/SKILL.md: the five Trellis workflow skills.pi/agents/{name}.md:trellis-implement,trellis-check,trellis-research.pi/extensions/trellis/index.ts: session context, BashTRELLIS_CONTEXT_IDpropagation, and sub-agent JSONL injection.pi/settings.json: extension registration
.trellis/.runtime/sessions/<session-key>.json, so each Pi window/session can work on its own task without taking over another window.
Other supported platforms
Trellis also ships configurators for platforms not covered by the capability matrix:- Kilo (
--kilo): writes.kilocode/workflows/(commands:start,finish-work) and.kilocode/skills/trellis-{name}/SKILL.md(the 5 trellis skills). No hook integration. - Antigravity (
--antigravity): writes Antigravity-native workflow files for the three commands. - Windsurf (
--windsurf): writes Windsurf-native command and rule files.
.agents/skills/ convention (the agentskills.io standard). Codex writes its skills there, and the files are directly usable by other agents in that ecosystem (Amp, Cline, Deep Agents, Firebender, Kimi Code CLI, Warp, and more). On those platforms you manage Trellis through the .trellis/ core plus whatever prelude file the agent reads.
Operating Systems
| OS | Status | Notes |
|---|---|---|
| macOS | ✅ Full | Primary platform |
| Linux | ✅ Full | Verified |
| Windows | ✅ Full | Scripts are Python; Claude Code sets CLAUDE_BASH_MAINTAIN_PROJECT_WORKING_DIR=1 so hooks cwd resolves correctly |
.trellis/scripts/ and any Python hooks. OpenCode plugins use Node.js 18+.
Multi-Developer Collaboration
Per-developer isolation (no conflicts):.trellis/workspace/{name}/: each developer’s own journals and index.trellis/.developer: gitignored.trellis/.runtime/: gitignored session runtime; each AI session/window has its own active task file
.trellis/spec/: team conventions, PR-reviewed like any code.trellis/tasks/: task JSONs; explicit--assigneeavoids collisions
trellis update and Version Management
.trellis/.template-hashes.json):
- Compute local file hash.
- Compare against recorded template hash.
- Match ⇒ file unchanged by user ⇒ safe to update.
- Differ ⇒ prompt (overwrite / skip), or silently respect policy with
-f/-s.
trellis update without --migrate on a breaking-manifest exits with instructions instead of silently renaming files. trellis update --migrate applies the rename / delete entries, asking once per conflict.