3.1 KiB
Trellis Instructions
These instructions are for AI assistants working in this project.
This project is managed by Trellis. The working knowledge you need lives under .trellis/:
.trellis/workflow.md— development phases, when to create tasks, skill routing.trellis/spec/— package- and layer-scoped coding guidelines (read before writing code in a given layer).trellis/workspace/— per-developer journals and session traces.trellis/tasks/— active and archived tasks (PRDs, research, jsonl context)
If a Trellis command is available on your platform (e.g. /trellis:finish-work, /trellis:continue), prefer it over manual steps. Not every platform exposes every command.
If you're using Codex or another agent-capable tool, additional project-scoped helpers may live in:
.agents/skills/— reusable Trellis skills.codex/agents/— optional custom subagents
Subagents
- ALWAYS wait for every spawned subagent to reach a terminal status before yielding, acting on partial results, or spawning followups.
- On Codex, this means calling the
waittool with the subagent's thread id (requiresmulti_agent_v2). Do NOT infer completion from elapsed time. - On Claude Code / OpenCode, this means awaiting the Task/agent tool result before continuing.
- On Codex, this means calling the
- NEVER cancel or re-spawn a subagent that hasn't finished. If a subagent appears stuck, raise the wait timeout (Codex default 30s, max 1h) before judging it broken.
- Spawn subagents automatically when:
- Parallelizable work (e.g., install + verify, npm test + typecheck, multiple tasks from plan)
- Long-running or blocking tasks where a worker can run independently
- Isolation for risky changes or checks
Codex-only — spawn_agent parameters
When calling spawn_agent, ALWAYS pass fork_turns="none". Without it the child inherits the parent transcript and sees your prior spawn_agent(...) records, then applies the "wait for spawned subagents" rule to itself — causing wait_agent self-deadlock.
spawn_agent(agent_type="trellis-implement", message="...", fork_turns="none")
Codex-only — multi-subagent close-loop
When wait returns a completed notification, treat it as an event signal — not as "all done". Run this loop:
- Maintain an
expected_agentsset of dispatched sub-agent thread IDs. - After each
waitupdate:- Call
list_agentsto inspect ALL live agents' status. - For each agent now in a terminal state:
- Verify its promised deliverable exists (e.g.
{task_dir}/research/*.md). - Read or summarize as needed.
close_agentto release the slot.- Remove from
expected_agents.
- Verify its promised deliverable exists (e.g.
- If
expected_agentsstill contains running agents → keep waiting. - If
expected_agentsis empty → continue main flow.
- Call
- Never
waiton an agent that has already reportedcompleted. - If a
completedagent is missing its deliverable, treat it as failed — surface that in your report instead of re-waiting.
Managed by Trellis. Edits outside this block are preserved; edits inside may be overwritten by a future trellis update.