Skip to main content

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.

v0.5.0-rc.0 is the release candidate before the 0.5.0 stable release. This build focuses on release stabilization: non-interactive init recovery, workflow breadcrumbs reading from workflow.md, automatic workflow.md breadcrumb updates, and bundled trellis-meta reference updates.

Enhancements

Workflow breadcrumbs

Per-turn workflow breadcrumbs, the short prompts that tell the AI which workflow step it is in, now read from .trellis/workflow.md [workflow-state:STATUS] blocks.
ComponentChange
packages/cli/src/templates/shared-hooks/inject-workflow-state.pyRemoves _FALLBACK_BREADCRUMBS; missing tags degrade to a generic Refer to workflow.md message
packages/cli/src/templates/opencode/plugins/inject-workflow-state.jsRemoves the OpenCode JS fallback dictionary
.trellis/workflow.md / template copyAdds required Phase 1.3 jsonl curation to planning; adds Phase 3.4 commit before /trellis:finish-work to in_progress
packages/cli/src/templates/shared-hooks/session-start.pyStrips full breadcrumb tag blocks from SessionStart payloads so the same body is not injected twice
The parser and stripper both require matched tag pairs:
[workflow-state:planning]
...
[/workflow-state:planning]

Automatic workflow.md breadcrumb updates

trellis update now refreshes the [workflow-state:*] blocks in .trellis/workflow.md. Hooks read those blocks to tell the AI what to do next; normal prose outside the blocks is still left alone.
CaseBehavior
User file has a matching status blockReplace that block body with the CLI template block
User file is missing a status blockAppend the missing block to the end of workflow.md
User changed content outside tag blocksPreserve it verbatim
User changed prompt text inside tag blocksReplace it with the current CLI version and print a warning listing the affected statuses
The implementation lives in buildWorkflowMdTemplate (packages/cli/src/commands/update.ts).

Session active task after task.py create

task.py create now best-effort sets the session active-task pointer. The planning breadcrumb becomes reachable immediately after creating a task, so the AI sees Phase 1.1 through Phase 1.4 guidance instead of falling back to the no-task path. trellis continue also routes by task.json.status plus required artifacts, including the Phase 1.4 activation branch after prd.md and jsonl context are ready.

Bundled trellis-meta references

The bundled trellis-meta skill now describes how workflow-state reads workflow.md consistently across its reference pages:
ReferenceUpdate
customize-local/change-workflow.mdExplains that [workflow-state:STATUS] blocks are parsed by runtime hooks
customize-local/change-task-lifecycle.mdAdds session active-task pointer notes for task.py create / task.py start
local-architecture/context-injection.mdPoints workflow-state injection at workflow.md instead of duplicated hook fallback text
platform-files/hooks-and-settings.mdAligns hook descriptions with current workflow-state behavior

Bug Fixes

Non-interactive trellis init --yes

trellis init --yes now stays non-interactive when files already exist.
LayerFix
packages/cli/src/commands/init.ts--yes maps write conflicts to skip mode unless --force is passed
packages/cli/src/utils/file-writer.tsNon-TTY ask mode falls back to skip instead of prompting
Failure avoidedERR_USE_AFTER_CLOSE from prompt code after stdin is unavailable
--force still overwrites existing files. --yes preserves them by default.

Aborted first-init recovery

If an earlier init wrote .trellis/ but aborted before creating any task, rerunning init now creates the bootstrap task instead of routing to joiner onboarding.
Disk stateCommandrc.0 behavior
.trellis/ exists, tasks/ emptytrellis init -u <name> --codex --yesCreate 00-bootstrap-guidelines
.trellis/ exists, tasks/ emptytrellis init -u <name> --codex --yes --forceCreate 00-bootstrap-guidelines
Existing project with active or archived taskstrellis init -u <name> --yesKeep normal re-init / joiner routing
The empty-tasks/ early check bypasses handleReinit, then the main dispatch’s bootstrap fallback runs.

Testing

Init recovery coverage

The init suite now covers:
Test fileCoverage
packages/cli/test/commands/init-joiner.integration.test.tsEmpty-tasks/ recovery with --yes alone and with --force
packages/cli/test/utils/file-writer.test.tsNon-TTY conflict fallback from ask to skip

Workflow-state coverage

Regression coverage now guards:
InvariantCoverage
Phase 1.3 appears in planning breadcrumbworkflow.md template test
Phase 3.4 commit appears in in_progress breadcrumbworkflow.md template test
Python / JS fallback dictionaries stay removedHook source tests
Matched tag-pair parsingSessionStart strip test
Automatic workflow.md breadcrumb block updatesupdate.integration.test.ts

Upgrade

Install the RC:
npm install -g @mindfoldhq/trellis@rc
Existing 0.5 beta projects:
trellis update
Projects upgrading from 0.4.x:
trellis update --migrate
0.5.0-rc.0 adds no new migration entries, but 0.4.x projects still need the 0.5 migration chain that starts at 0.5.0-beta.0.