Skip to main content

Quick Start

Installation

Requirements: Mac, Linux, and Windows are fully supported. Requires Node.js 18+ and Python 3.9+.
trellis init auto-detects installed platforms. You can also specify them explicitly via flags. Each platform needs to be init’d at least once. Pick any combination:
your-name becomes your developer identity and creates your personal workspace at .trellis/workspace/your-name/. Supported flags: --claude, --cursor, --opencode, --codex, --kiro, --gemini, --qoder, --codebuddy, --copilot, --droid, --pi, --antigravity, --devin (alias: --windsurf, deprecated), --kilo, --reasonix, --zcode, --omp. Beyond these 17 configured platforms, any AI coding agent that reads the .agents/skills/ standard (Amp, Cline, Deep Agents, Firebender, Kimi Code CLI, Warp, and more) can also consume Trellis: Codex writes its skills there, and the files are directly usable by the rest of that ecosystem.

Upgrading

Upgrading is two steps — the CLI and your project’s .trellis/ templates are versioned separately:
If trellis update reports MIGRATION REQUIRED (breaking changes between your project’s version and the CLI), run trellis update --migrate — otherwise files renamed or relocated by breaking releases stay at their stale old paths.
See Commands §1.2 for the full upgrade / update / --migrate reference.

Platform Configuration

trellis init writes platform-specific config directories. Core concepts (.trellis/) are identical across platforms; the differences sit in how commands, skills, sub-agents, and hooks are delivered. .agents/skills/ is a shared cross-platform layer (agentskills.io standard). trellis init writes all skills into it too, so any agent that reads the .agents/skills/ standard (Amp, Cline, Deep Agents, Firebender, Kimi Code CLI, Warp, etc.) can consume them.

init Scenarios

trellis init dispatches on the presence of .trellis/ and .trellis/.developer. Match your situation to the command: --force / --skip-existing only affect how file conflicts are resolved (overwrite vs skip); they don’t change the dispatch logic itself.
Dispatch signal: .trellis/.developer is a gitignored per-checkout identity file (by design, never committed), so a fresh clone never has one — this is the clean signal for “new developer on this checkout”. .trellis/workspace/<name>/ is committed and cannot serve this role.

Basic Flow

Describe what you want to do. The AI first classifies the turn. Simple conversation and small inline tasks do not automatically create Trellis tasks; the AI asks whether this turn should create a task. Complex work gets a separate consent question before Trellis creates a task and enters planning.
Agent-capable platforms load Trellis context through a mix of SessionStart hooks, prompt hooks, extensions, agent files, and skills. Codex is different from Claude-style platforms: it relies on AGENTS.md plus the UserPromptSubmit hook, and the no-task breadcrumb can tell the AI to read trellis-start. Only agent-less platforms (Kilo, Antigravity, Devin) ship /trellis:start (or /start.md) as an explicit entry point.

Directory Structure

Below is the layout after trellis init with Claude Code. Other platforms write to their own sub-directories but share the same .trellis/ core.

Your First Task

Starting a Session

Open the terminal. On hook-backed platforms, the compact SessionStart payload gives the AI enough Trellis context to route the next turn:
  • compact Phase Index from workflow.md
  • Identity, git status, active task list
  • Spec index paths
  • task artifact context order
Just describe your task.If you suspect auto-injection didn’t run or you want to reload context, open a new session or ask the AI to read the trellis-start skill once. These platforms usually do not expose /trellis:start as a slash command because the startup path already handles orientation.

Example: Starting a New Project from Scratch

This is the first Trellis loop for a new product, service, SDK, package, or internal tool. Real situation: you are starting a B2B dashboard with login, team management, billing, and analytics. AI can help move fast, but each session should not reinvent the directory structure, API style, component pattern, and testing rules. Starting prompt:
Workflow:
  1. After project initialization, run trellis init. It writes default spec templates under .trellis/spec/ (about 17 placeholder files across backend/, frontend/, and guides, covering directory structure, error handling, logging, component guidelines, cross-layer thinking, and similar rules), and creates the 00-bootstrap-guidelines task.
  2. Use the bootstrap task to discuss product requirements and the project tech stack with AI, so the AI has enough context before writing code.
  3. Optional: use the bundled trellis-spec-bootstarp skill so AI can draft first-pass specs from the real codebase. It is installed with Trellis, so there is no extra marketplace download step.
  4. Fill the default specs produced by trellis init first, based on what you know now. Do not design the entire project upfront.
  5. Review the generated spec quality by hand.
  6. Create the smallest task that can run end to end.
  7. Continue with /trellis:continue; Trellis will move the task through check, update-spec, commit, and finish.

AI Creates the Task and Develops

You say: “Add user login feature”. The AI first decides this is complex enough for a Trellis task and asks whether it may create a task and enter planning. If you agree, it walks the three phases from workflow.md:
When AI stalls or is skipping ahead: run /trellis:continue. AI uses the active task’s status, artifact presence, and the per-turn workflow-state breadcrumb to figure out the next step, then loads the relevant workflow detail before continuing.

Finishing the Session

finish-work calls add_session.py to append a journal entry and update your personal index. If the task is actually done (code merged, acceptance criteria met), it also archives the task via task.py archive.

Cross-Session Memory

Next time you open a session, the SessionStart hook (or the platform’s prelude) reads your workspace journal and active task list, so AI can recall what you did last:
Journals live under .trellis/workspace/{name}/journal-N.md; every /trellis:finish-work appends one. Trellis tracks each AI session’s active task internally so you can pick it up next time; task.py finish clears that pointer.

Remote Spec Templates

Instead of writing specs from scratch, pull pre-built spec templates during init.

Official Marketplace

The interactive picker shows all templates from the official marketplace. Choose one or start with blank specs.

Custom Registry (--registry)

Pull specs from your own GitHub, GitLab, or Bitbucket repository:
Source format: provider:user/repo[/subdir][#ref] The ref (branch/tag) defaults to main if omitted.

Handling Existing Specs

When .trellis/spec/ already exists, use a strategy flag:

Building a Custom Marketplace

Create an index.json in your repository:
The path field is relative to the repository root. Only type: "spec" is supported currently.

Private Repositories

For private repos, set the GIGET_AUTH environment variable with a personal access token:
For GitHub fine-grained tokens, you need Contents and Metadata read permissions.