@pennixrv/trellis 0.7.0-beta.8 → 0.7.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/dist/cli/index.d.ts.map +1 -1
- package/dist/cli/index.js +14 -26
- package/dist/cli/index.js.map +1 -1
- package/dist/commands/ablate.js +1 -1
- package/dist/commands/ablate.js.map +1 -1
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +30 -56
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/task-progress.d.ts +2 -0
- package/dist/commands/task-progress.d.ts.map +1 -1
- package/dist/commands/task-progress.js +37 -30
- package/dist/commands/task-progress.js.map +1 -1
- package/dist/commands/{channel → teamwork}/adapters/claude.d.ts +3 -3
- package/dist/commands/teamwork/adapters/claude.d.ts.map +1 -0
- package/dist/commands/{channel → teamwork}/adapters/claude.js +3 -3
- package/dist/commands/teamwork/adapters/claude.js.map +1 -0
- package/dist/commands/{channel → teamwork}/adapters/codex.d.ts +1 -15
- package/dist/commands/teamwork/adapters/codex.d.ts.map +1 -0
- package/dist/commands/{channel → teamwork}/adapters/codex.js +5 -42
- package/dist/commands/teamwork/adapters/codex.js.map +1 -0
- package/dist/commands/{channel → teamwork}/adapters/index.d.ts +6 -6
- package/dist/commands/teamwork/adapters/index.d.ts.map +1 -0
- package/dist/commands/{channel → teamwork}/adapters/index.js +16 -52
- package/dist/commands/teamwork/adapters/index.js.map +1 -0
- package/dist/commands/{channel → teamwork}/adapters/types.d.ts +2 -2
- package/dist/commands/teamwork/adapters/types.d.ts.map +1 -0
- package/dist/commands/teamwork/adapters/types.js.map +1 -0
- package/dist/commands/{channel → teamwork}/agent-loader.d.ts +2 -4
- package/dist/commands/teamwork/agent-loader.d.ts.map +1 -0
- package/dist/commands/{channel → teamwork}/agent-loader.js +4 -35
- package/dist/commands/teamwork/agent-loader.js.map +1 -0
- package/dist/commands/teamwork/artifact.d.ts +177 -0
- package/dist/commands/teamwork/artifact.d.ts.map +1 -0
- package/dist/commands/teamwork/artifact.js +908 -0
- package/dist/commands/teamwork/artifact.js.map +1 -0
- package/dist/commands/{channel → teamwork}/context-loader.d.ts +1 -1
- package/dist/commands/teamwork/context-loader.d.ts.map +1 -0
- package/dist/commands/{channel → teamwork}/context-loader.js +12 -12
- package/dist/commands/teamwork/context-loader.js.map +1 -0
- package/dist/commands/{channel → teamwork}/context-trust.d.ts +6 -6
- package/dist/commands/teamwork/context-trust.d.ts.map +1 -0
- package/dist/commands/{channel → teamwork}/context-trust.js +16 -16
- package/dist/commands/teamwork/context-trust.js.map +1 -0
- package/dist/commands/teamwork/context.d.ts +16 -0
- package/dist/commands/teamwork/context.d.ts.map +1 -0
- package/dist/commands/{channel → teamwork}/context.js +17 -17
- package/dist/commands/teamwork/context.js.map +1 -0
- package/dist/commands/teamwork/coordinator.d.ts +89 -0
- package/dist/commands/teamwork/coordinator.d.ts.map +1 -0
- package/dist/commands/teamwork/coordinator.js +1198 -0
- package/dist/commands/teamwork/coordinator.js.map +1 -0
- package/dist/commands/teamwork/create.d.ts +23 -0
- package/dist/commands/teamwork/create.d.ts.map +1 -0
- package/dist/commands/teamwork/create.js +39 -0
- package/dist/commands/teamwork/create.js.map +1 -0
- package/dist/commands/{channel → teamwork}/dev-parse-trace.d.ts +1 -1
- package/dist/commands/teamwork/dev-parse-trace.d.ts.map +1 -0
- package/dist/commands/{channel → teamwork}/dev-parse-trace.js +1 -1
- package/dist/commands/teamwork/dev-parse-trace.js.map +1 -0
- package/dist/commands/{channel → teamwork}/guard.d.ts +27 -46
- package/dist/commands/teamwork/guard.d.ts.map +1 -0
- package/dist/commands/{channel → teamwork}/guard.js +54 -156
- package/dist/commands/teamwork/guard.js.map +1 -0
- package/dist/commands/teamwork/index.d.ts +3 -0
- package/dist/commands/teamwork/index.d.ts.map +1 -0
- package/dist/commands/{channel → teamwork}/index.js +135 -165
- package/dist/commands/teamwork/index.js.map +1 -0
- package/dist/commands/{channel → teamwork}/interrupt.d.ts +1 -1
- package/dist/commands/teamwork/interrupt.d.ts.map +1 -0
- package/dist/commands/teamwork/interrupt.js +22 -0
- package/dist/commands/teamwork/interrupt.js.map +1 -0
- package/dist/commands/teamwork/kill.d.ts +7 -0
- package/dist/commands/teamwork/kill.d.ts.map +1 -0
- package/dist/commands/{channel → teamwork}/kill.js +21 -21
- package/dist/commands/teamwork/kill.js.map +1 -0
- package/dist/commands/teamwork/list.d.ts +17 -0
- package/dist/commands/teamwork/list.d.ts.map +1 -0
- package/dist/commands/{channel → teamwork}/list.js +18 -27
- package/dist/commands/teamwork/list.js.map +1 -0
- package/dist/commands/{channel → teamwork}/messages.d.ts +1 -1
- package/dist/commands/teamwork/messages.d.ts.map +1 -0
- package/dist/commands/{channel → teamwork}/messages.js +18 -18
- package/dist/commands/teamwork/messages.js.map +1 -0
- package/dist/commands/teamwork/profiles.d.ts +25 -0
- package/dist/commands/teamwork/profiles.d.ts.map +1 -0
- package/dist/commands/teamwork/profiles.js +125 -0
- package/dist/commands/teamwork/profiles.js.map +1 -0
- package/dist/commands/teamwork/rm.d.ts +27 -0
- package/dist/commands/teamwork/rm.d.ts.map +1 -0
- package/dist/commands/{channel → teamwork}/rm.js +21 -22
- package/dist/commands/teamwork/rm.js.map +1 -0
- package/dist/commands/teamwork/run.d.ts +29 -0
- package/dist/commands/{channel → teamwork}/run.d.ts.map +1 -1
- package/dist/commands/teamwork/run.js +129 -0
- package/dist/commands/teamwork/run.js.map +1 -0
- package/dist/commands/{channel → teamwork}/send.d.ts +1 -1
- package/dist/commands/teamwork/send.d.ts.map +1 -0
- package/dist/commands/{channel → teamwork}/send.js +7 -7
- package/dist/commands/teamwork/send.js.map +1 -0
- package/dist/commands/{channel → teamwork}/spawn.d.ts +8 -12
- package/dist/commands/teamwork/spawn.d.ts.map +1 -0
- package/dist/commands/{channel → teamwork}/spawn.js +51 -112
- package/dist/commands/teamwork/spawn.js.map +1 -0
- package/dist/commands/teamwork/store/events.d.ts +22 -0
- package/dist/commands/teamwork/store/events.d.ts.map +1 -0
- package/dist/commands/{channel → teamwork}/store/events.js +8 -8
- package/dist/commands/teamwork/store/events.js.map +1 -0
- package/dist/commands/teamwork/store/filter.d.ts +3 -0
- package/dist/commands/teamwork/store/filter.d.ts.map +1 -0
- package/dist/commands/teamwork/store/filter.js +2 -0
- package/dist/commands/teamwork/store/filter.js.map +1 -0
- package/dist/commands/{channel → teamwork}/store/lock.d.ts +1 -1
- package/dist/commands/teamwork/store/lock.d.ts.map +1 -0
- package/dist/commands/{channel → teamwork}/store/lock.js +2 -2
- package/dist/commands/teamwork/store/lock.js.map +1 -0
- package/dist/commands/{channel → teamwork}/store/paths.d.ts +18 -32
- package/dist/commands/teamwork/store/paths.d.ts.map +1 -0
- package/dist/commands/{channel → teamwork}/store/paths.js +42 -109
- package/dist/commands/teamwork/store/paths.js.map +1 -0
- package/dist/commands/teamwork/store/schema.d.ts +18 -0
- package/dist/commands/teamwork/store/schema.d.ts.map +1 -0
- package/dist/commands/teamwork/store/schema.js +23 -0
- package/dist/commands/teamwork/store/schema.js.map +1 -0
- package/dist/commands/{channel → teamwork}/store/thread-state.d.ts +3 -3
- package/dist/commands/teamwork/store/thread-state.d.ts.map +1 -0
- package/dist/commands/{channel → teamwork}/store/thread-state.js +1 -1
- package/dist/commands/teamwork/store/thread-state.js.map +1 -0
- package/dist/commands/teamwork/store/watch.d.ts +19 -0
- package/dist/commands/teamwork/store/watch.d.ts.map +1 -0
- package/dist/commands/{channel → teamwork}/store/watch.js +8 -8
- package/dist/commands/teamwork/store/watch.js.map +1 -0
- package/dist/commands/teamwork/supervisor/idle.d.ts.map +1 -0
- package/dist/commands/teamwork/supervisor/idle.js.map +1 -0
- package/dist/commands/{channel → teamwork}/supervisor/inbox.d.ts +2 -2
- package/dist/commands/teamwork/supervisor/inbox.d.ts.map +1 -0
- package/dist/commands/{channel → teamwork}/supervisor/inbox.js +14 -14
- package/dist/commands/teamwork/supervisor/inbox.js.map +1 -0
- package/dist/commands/{channel → teamwork}/supervisor/shutdown.d.ts +3 -6
- package/dist/commands/teamwork/supervisor/shutdown.d.ts.map +1 -0
- package/dist/commands/{channel → teamwork}/supervisor/shutdown.js +7 -17
- package/dist/commands/teamwork/supervisor/shutdown.js.map +1 -0
- package/dist/commands/{channel → teamwork}/supervisor/stdout.d.ts +3 -5
- package/dist/commands/teamwork/supervisor/stdout.d.ts.map +1 -0
- package/dist/commands/{channel → teamwork}/supervisor/stdout.js +12 -23
- package/dist/commands/teamwork/supervisor/stdout.js.map +1 -0
- package/dist/commands/teamwork/supervisor/turns.d.ts.map +1 -0
- package/dist/commands/teamwork/supervisor/turns.js.map +1 -0
- package/dist/commands/{channel → teamwork}/supervisor/warning.d.ts +5 -5
- package/dist/commands/teamwork/supervisor/warning.d.ts.map +1 -0
- package/dist/commands/{channel → teamwork}/supervisor/warning.js +6 -6
- package/dist/commands/teamwork/supervisor/warning.js.map +1 -0
- package/dist/commands/{channel → teamwork}/supervisor.d.ts +21 -21
- package/dist/commands/teamwork/supervisor.d.ts.map +1 -0
- package/dist/commands/{channel → teamwork}/supervisor.js +53 -63
- package/dist/commands/teamwork/supervisor.js.map +1 -0
- package/dist/commands/teamwork/teammate-adapters.d.ts +31 -0
- package/dist/commands/teamwork/teammate-adapters.d.ts.map +1 -0
- package/dist/commands/teamwork/teammate-adapters.js +96 -0
- package/dist/commands/teamwork/teammate-adapters.js.map +1 -0
- package/dist/commands/teamwork/teammate-config.d.ts +19 -0
- package/dist/commands/teamwork/teammate-config.d.ts.map +1 -0
- package/dist/commands/teamwork/teammate-config.js +97 -0
- package/dist/commands/teamwork/teammate-config.js.map +1 -0
- package/dist/commands/teamwork/teammate-launch.d.ts +58 -0
- package/dist/commands/teamwork/teammate-launch.d.ts.map +1 -0
- package/dist/commands/teamwork/teammate-launch.js +125 -0
- package/dist/commands/teamwork/teammate-launch.js.map +1 -0
- package/dist/commands/teamwork/text-body.d.ts +13 -0
- package/dist/commands/teamwork/text-body.d.ts.map +1 -0
- package/dist/commands/{channel → teamwork}/text-body.js +3 -3
- package/dist/commands/teamwork/text-body.js.map +1 -0
- package/dist/commands/teamwork/threads.d.ts +35 -0
- package/dist/commands/teamwork/threads.d.ts.map +1 -0
- package/dist/commands/{channel → teamwork}/threads.js +19 -19
- package/dist/commands/teamwork/threads.js.map +1 -0
- package/dist/commands/teamwork/title.d.ts +12 -0
- package/dist/commands/teamwork/title.d.ts.map +1 -0
- package/dist/commands/teamwork/title.js +24 -0
- package/dist/commands/teamwork/title.js.map +1 -0
- package/dist/commands/{channel → teamwork}/wait.d.ts +1 -5
- package/dist/commands/teamwork/wait.d.ts.map +1 -0
- package/dist/commands/{channel → teamwork}/wait.js +8 -21
- package/dist/commands/teamwork/wait.js.map +1 -0
- package/dist/commands/update.d.ts.map +1 -1
- package/dist/commands/update.js +48 -89
- package/dist/commands/update.js.map +1 -1
- package/dist/commands/workflow.d.ts +1 -1
- package/dist/commands/workflow.d.ts.map +1 -1
- package/dist/commands/workflow.js +9 -10
- package/dist/commands/workflow.js.map +1 -1
- package/dist/configurators/claude.d.ts +0 -17
- package/dist/configurators/claude.d.ts.map +1 -1
- package/dist/configurators/claude.js +2 -61
- package/dist/configurators/claude.js.map +1 -1
- package/dist/configurators/shared.d.ts.map +1 -1
- package/dist/configurators/shared.js +2 -2
- package/dist/configurators/shared.js.map +1 -1
- package/dist/configurators/snow.js +1 -1
- package/dist/configurators/snow.js.map +1 -1
- package/dist/configurators/workflow.d.ts +1 -1
- package/dist/configurators/workflow.js +5 -5
- package/dist/configurators/workflow.js.map +1 -1
- package/dist/constants/paths.d.ts +1 -1
- package/dist/constants/paths.d.ts.map +1 -1
- package/dist/constants/paths.js +1 -1
- package/dist/constants/paths.js.map +1 -1
- package/dist/migrations/manifests/0.7.0-beta.10.json +9 -0
- package/dist/migrations/manifests/0.7.0-beta.11.json +9 -0
- package/dist/migrations/manifests/0.7.0-beta.12.json +9 -0
- package/dist/migrations/manifests/0.7.0-beta.13.json +9 -0
- package/dist/migrations/manifests/0.7.0-beta.14.json +9 -0
- package/dist/migrations/manifests/0.7.0-beta.15.json +9 -0
- package/dist/migrations/manifests/0.7.0-beta.16.json +9 -0
- package/dist/migrations/manifests/0.7.0-beta.17.json +9 -0
- package/dist/migrations/manifests/0.7.0-beta.18.json +9 -0
- package/dist/migrations/manifests/0.7.0-beta.19.json +9 -0
- package/dist/migrations/manifests/0.7.0-beta.20.json +9 -0
- package/dist/migrations/manifests/0.7.0-beta.21.json +17 -0
- package/dist/migrations/manifests/0.7.0-beta.22.json +9 -0
- package/dist/migrations/manifests/0.7.0-beta.23.json +9 -0
- package/dist/migrations/manifests/0.7.0-beta.24.json +9 -0
- package/dist/migrations/manifests/0.7.0-beta.25.json +9 -0
- package/dist/migrations/manifests/0.7.0-beta.26.json +9 -0
- package/dist/migrations/manifests/0.7.0-beta.27.json +9 -0
- package/dist/migrations/manifests/0.7.0-beta.28.json +9 -0
- package/dist/migrations/manifests/0.7.0-beta.29.json +9 -0
- package/dist/migrations/manifests/0.7.0-beta.30.json +9 -0
- package/dist/migrations/manifests/0.7.0-beta.31.json +9 -0
- package/dist/migrations/manifests/0.7.0-beta.32.json +9 -0
- package/dist/migrations/manifests/0.7.0-beta.33.json +9 -0
- package/dist/migrations/manifests/0.7.0-beta.34.json +9 -0
- package/dist/migrations/manifests/0.7.0-beta.35.json +9 -0
- package/dist/migrations/manifests/0.7.0-beta.36.json +9 -0
- package/dist/migrations/manifests/0.7.0-beta.37.json +9 -0
- package/dist/migrations/manifests/0.7.0-beta.38.json +9 -0
- package/dist/migrations/manifests/0.7.0-beta.39.json +9 -0
- package/dist/migrations/manifests/0.7.0-beta.40.json +9 -0
- package/dist/migrations/manifests/0.7.0-beta.41.json +9 -0
- package/dist/migrations/manifests/0.7.0-beta.42.json +9 -0
- package/dist/migrations/manifests/0.7.0-beta.43.json +9 -0
- package/dist/migrations/manifests/0.7.0-beta.44.json +9 -0
- package/dist/migrations/manifests/0.7.0-beta.45.json +9 -0
- package/dist/migrations/manifests/0.7.0-beta.46.json +9 -0
- package/dist/migrations/manifests/0.7.0-beta.47.json +9 -0
- package/dist/migrations/manifests/0.7.0-beta.48.json +9 -0
- package/dist/migrations/manifests/0.7.0-beta.49.json +13 -0
- package/dist/migrations/manifests/0.7.0-beta.50.json +12 -0
- package/dist/migrations/manifests/0.7.0-beta.51.json +9 -0
- package/dist/migrations/manifests/0.7.0-beta.52.json +9 -0
- package/dist/migrations/manifests/0.7.0-beta.53.json +27 -0
- package/dist/migrations/manifests/0.7.0-beta.54.json +8 -0
- package/dist/migrations/manifests/0.7.0-beta.9.json +9 -0
- package/dist/migrations/manifests/0.7.1.json +9 -0
- package/dist/templates/claude/hooks/statusline.py +0 -7
- package/dist/templates/codex/hooks/session-start.py +31 -38
- package/dist/templates/common/bundled-skills/trellis-decision-space-construction-and-merging/SKILL.md +10 -0
- package/dist/templates/common/bundled-skills/trellis-decision-space-construction-and-merging/workflow.md +40 -0
- package/dist/templates/common/bundled-skills/trellis-delivery-review-and-closeout/SKILL.md +10 -0
- package/dist/templates/common/bundled-skills/trellis-delivery-review-and-closeout/workflow.md +55 -0
- package/dist/templates/common/bundled-skills/trellis-goal-exploration-and-requirements/SKILL.md +10 -0
- package/dist/templates/common/bundled-skills/trellis-goal-exploration-and-requirements/workflow.md +33 -0
- package/dist/templates/common/bundled-skills/trellis-meta/SKILL.md +25 -25
- package/dist/templates/common/bundled-skills/trellis-meta/references/customize-local/change-agents.md +1 -1
- package/dist/templates/common/bundled-skills/trellis-meta/references/customize-local/change-skills-or-commands.md +13 -19
- package/dist/templates/common/bundled-skills/trellis-meta/references/customize-local/change-spec-structure.md +1 -1
- package/dist/templates/common/bundled-skills/trellis-meta/references/customize-local/change-task-lifecycle.md +27 -75
- package/dist/templates/common/bundled-skills/trellis-meta/references/customize-local/change-workflow.md +17 -56
- package/dist/templates/common/bundled-skills/trellis-meta/references/customize-local/overview.md +1 -1
- package/dist/templates/common/bundled-skills/trellis-meta/references/local-architecture/bundled-skills.md +14 -11
- package/dist/templates/common/bundled-skills/trellis-meta/references/local-architecture/generated-files.md +0 -33
- package/dist/templates/common/bundled-skills/trellis-meta/references/local-architecture/multi-agent-teamwork.md +32 -0
- package/dist/templates/common/bundled-skills/trellis-meta/references/local-architecture/spec-system.md +1 -1
- package/dist/templates/common/bundled-skills/trellis-meta/references/local-architecture/task-system.md +25 -111
- package/dist/templates/common/bundled-skills/trellis-meta/references/local-architecture/workflow.md +19 -60
- package/dist/templates/common/bundled-skills/trellis-meta/references/platform-files/skills-and-commands.md +1 -1
- package/dist/templates/common/bundled-skills/trellis-session-insight/SKILL.md +1 -1
- package/dist/templates/common/bundled-skills/trellis-session-insight/references/cli-quick-reference.md +1 -1
- package/dist/templates/common/bundled-skills/trellis-solution-design-and-convergence/SKILL.md +10 -0
- package/dist/templates/common/bundled-skills/trellis-solution-design-and-convergence/workflow.md +36 -0
- package/dist/templates/common/bundled-skills/trellis-task-implementation/SKILL.md +10 -0
- package/dist/templates/common/bundled-skills/trellis-task-implementation/workflow.md +29 -0
- package/dist/templates/common/bundled-skills/trellis-teamwork/SKILL.md +73 -0
- package/dist/templates/common/bundled-skills/trellis-teamwork/references/coordination-modes.md +29 -0
- package/dist/templates/common/bundled-skills/trellis-teamwork/references/teammate-configuration-matrix.md +31 -0
- package/dist/templates/common/bundled-skills/trellis-teamwork/references/teammate-processes.md +37 -0
- package/dist/templates/common/bundled-skills/trellis-teamwork/references/teamwork-plan-construction.md +78 -0
- package/dist/templates/common/commands/continue.md +9 -49
- package/dist/templates/common/commands/finish-work.md +10 -58
- package/dist/templates/common/commands/start.md +19 -49
- package/dist/templates/common/skills/brainstorm.md +11 -191
- package/dist/templates/copilot/hooks/session-start.py +30 -26
- package/dist/templates/copilot/prompts/brainstorm.prompt.md +7 -150
- package/dist/templates/copilot/prompts/finish-work.prompt.md +11 -88
- package/dist/templates/copilot/prompts/record-session.prompt.md +4 -12
- package/dist/templates/copilot/prompts/start.prompt.md +12 -10
- package/dist/templates/dsh/DSH.md +2 -2
- package/dist/templates/kiro/agents/trellis.json +2 -2
- package/dist/templates/markdown/agents.md +14 -3
- package/dist/templates/markdown/spec/guides/cross-layer-thinking-guide.md.txt +9 -8
- package/dist/templates/markdown/spec/guides/cross-platform-thinking-guide.md.txt +1 -1
- package/dist/templates/markdown/workspace-index.md +0 -1
- package/dist/templates/omp/extensions/trellis/index.ts.txt +28 -17
- package/dist/templates/opencode/lib/session-utils.js +20 -25
- package/dist/templates/opencode/lib/trellis-context.js +4 -76
- package/dist/templates/opencode/plugins/inject-subagent-context.js +5 -4
- package/dist/templates/opencode/plugins/inject-workflow-state.js +14 -17
- package/dist/templates/shared-hooks/inject-shell-session-context.py +3 -3
- package/dist/templates/shared-hooks/inject-subagent-context.py +445 -67
- package/dist/templates/shared-hooks/inject-workflow-state.py +44 -36
- package/dist/templates/shared-hooks/session-start.py +21 -33
- package/dist/templates/trellis/agents/delegated-worktree-primary-agent.md +18 -0
- package/dist/templates/trellis/agents/teammate-profiles.json +8 -0
- package/dist/templates/trellis/agents/teammate.md +63 -0
- package/dist/templates/trellis/config.yaml +29 -38
- package/dist/templates/trellis/gitignore.txt +1 -0
- package/dist/templates/trellis/index.d.ts +8 -12
- package/dist/templates/trellis/index.d.ts.map +1 -1
- package/dist/templates/trellis/index.js +14 -25
- package/dist/templates/trellis/index.js.map +1 -1
- package/dist/templates/trellis/scripts/add_session.py +1 -1
- package/dist/templates/trellis/scripts/common/__init__.py +0 -1
- package/dist/templates/trellis/scripts/common/active_task.py +136 -100
- package/dist/templates/trellis/scripts/common/config.py +7 -9
- package/dist/templates/trellis/scripts/common/git_context.py +1 -1
- package/dist/templates/trellis/scripts/common/io.py +19 -0
- package/dist/templates/trellis/scripts/common/paths.py +0 -1
- package/dist/templates/trellis/scripts/common/safe_commit.py +11 -90
- package/dist/templates/trellis/scripts/common/session_context.py +1 -8
- package/dist/templates/trellis/scripts/common/spec_match.py +1 -1
- package/dist/templates/trellis/scripts/common/task_context.py +152 -59
- package/dist/templates/trellis/scripts/common/task_continuity.py +563 -0
- package/dist/templates/trellis/scripts/common/task_store.py +70 -548
- package/dist/templates/trellis/scripts/common/task_utils.py +4 -98
- package/dist/templates/trellis/scripts/common/task_workflow.py +1096 -0
- package/dist/templates/trellis/scripts/common/tasks.py +5 -8
- package/dist/templates/trellis/scripts/common/workflow_phase.py +8 -7
- package/dist/templates/trellis/scripts/hooks/linear_sync.py +3 -3
- package/dist/templates/trellis/scripts/task.py +114 -377
- package/dist/templates/trellis/workflow.md +111 -699
- package/dist/utils/agent-refs.d.ts +5 -5
- package/dist/utils/agent-refs.js +6 -6
- package/dist/utils/file-writer.d.ts +3 -2
- package/dist/utils/file-writer.d.ts.map +1 -1
- package/dist/utils/file-writer.js +3 -2
- package/dist/utils/file-writer.js.map +1 -1
- package/dist/utils/managed-paths.d.ts +0 -7
- package/dist/utils/managed-paths.d.ts.map +1 -1
- package/dist/utils/managed-paths.js +0 -40
- package/dist/utils/managed-paths.js.map +1 -1
- package/dist/utils/manifest-prune.d.ts.map +1 -1
- package/dist/utils/manifest-prune.js +2 -11
- package/dist/utils/manifest-prune.js.map +1 -1
- package/dist/utils/uninstall-scrubbers.d.ts.map +1 -1
- package/dist/utils/uninstall-scrubbers.js +3 -3
- package/dist/utils/uninstall-scrubbers.js.map +1 -1
- package/dist/utils/workflow-resolver.d.ts +10 -16
- package/dist/utils/workflow-resolver.d.ts.map +1 -1
- package/dist/utils/workflow-resolver.js +25 -36
- package/dist/utils/workflow-resolver.js.map +1 -1
- package/package.json +2 -2
- package/dist/commands/channel/adapters/claude.d.ts.map +0 -1
- package/dist/commands/channel/adapters/claude.js.map +0 -1
- package/dist/commands/channel/adapters/codex.d.ts.map +0 -1
- package/dist/commands/channel/adapters/codex.js.map +0 -1
- package/dist/commands/channel/adapters/index.d.ts.map +0 -1
- package/dist/commands/channel/adapters/index.js.map +0 -1
- package/dist/commands/channel/adapters/types.d.ts.map +0 -1
- package/dist/commands/channel/adapters/types.js.map +0 -1
- package/dist/commands/channel/agent-loader.d.ts.map +0 -1
- package/dist/commands/channel/agent-loader.js.map +0 -1
- package/dist/commands/channel/context-loader.d.ts.map +0 -1
- package/dist/commands/channel/context-loader.js.map +0 -1
- package/dist/commands/channel/context-trust.d.ts.map +0 -1
- package/dist/commands/channel/context-trust.js.map +0 -1
- package/dist/commands/channel/context.d.ts +0 -16
- package/dist/commands/channel/context.d.ts.map +0 -1
- package/dist/commands/channel/context.js.map +0 -1
- package/dist/commands/channel/create.d.ts +0 -29
- package/dist/commands/channel/create.d.ts.map +0 -1
- package/dist/commands/channel/create.js +0 -47
- package/dist/commands/channel/create.js.map +0 -1
- package/dist/commands/channel/dev-parse-trace.d.ts.map +0 -1
- package/dist/commands/channel/dev-parse-trace.js.map +0 -1
- package/dist/commands/channel/guard.d.ts.map +0 -1
- package/dist/commands/channel/guard.js.map +0 -1
- package/dist/commands/channel/index.d.ts +0 -3
- package/dist/commands/channel/index.d.ts.map +0 -1
- package/dist/commands/channel/index.js.map +0 -1
- package/dist/commands/channel/interrupt.d.ts.map +0 -1
- package/dist/commands/channel/interrupt.js +0 -22
- package/dist/commands/channel/interrupt.js.map +0 -1
- package/dist/commands/channel/kill.d.ts +0 -7
- package/dist/commands/channel/kill.d.ts.map +0 -1
- package/dist/commands/channel/kill.js.map +0 -1
- package/dist/commands/channel/list.d.ts +0 -18
- package/dist/commands/channel/list.d.ts.map +0 -1
- package/dist/commands/channel/list.js.map +0 -1
- package/dist/commands/channel/messages.d.ts.map +0 -1
- package/dist/commands/channel/messages.js.map +0 -1
- package/dist/commands/channel/rm.d.ts +0 -27
- package/dist/commands/channel/rm.d.ts.map +0 -1
- package/dist/commands/channel/rm.js.map +0 -1
- package/dist/commands/channel/run.d.ts +0 -32
- package/dist/commands/channel/run.js +0 -141
- package/dist/commands/channel/run.js.map +0 -1
- package/dist/commands/channel/send.d.ts.map +0 -1
- package/dist/commands/channel/send.js.map +0 -1
- package/dist/commands/channel/spawn.d.ts.map +0 -1
- package/dist/commands/channel/spawn.js.map +0 -1
- package/dist/commands/channel/store/events.d.ts +0 -22
- package/dist/commands/channel/store/events.d.ts.map +0 -1
- package/dist/commands/channel/store/events.js.map +0 -1
- package/dist/commands/channel/store/filter.d.ts +0 -3
- package/dist/commands/channel/store/filter.d.ts.map +0 -1
- package/dist/commands/channel/store/filter.js +0 -2
- package/dist/commands/channel/store/filter.js.map +0 -1
- package/dist/commands/channel/store/lock.d.ts.map +0 -1
- package/dist/commands/channel/store/lock.js.map +0 -1
- package/dist/commands/channel/store/paths.d.ts.map +0 -1
- package/dist/commands/channel/store/paths.js.map +0 -1
- package/dist/commands/channel/store/schema.d.ts +0 -27
- package/dist/commands/channel/store/schema.d.ts.map +0 -1
- package/dist/commands/channel/store/schema.js +0 -34
- package/dist/commands/channel/store/schema.js.map +0 -1
- package/dist/commands/channel/store/thread-state.d.ts.map +0 -1
- package/dist/commands/channel/store/thread-state.js.map +0 -1
- package/dist/commands/channel/store/watch.d.ts +0 -19
- package/dist/commands/channel/store/watch.d.ts.map +0 -1
- package/dist/commands/channel/store/watch.js.map +0 -1
- package/dist/commands/channel/supervisor/idle.d.ts.map +0 -1
- package/dist/commands/channel/supervisor/idle.js.map +0 -1
- package/dist/commands/channel/supervisor/inbox.d.ts.map +0 -1
- package/dist/commands/channel/supervisor/inbox.js.map +0 -1
- package/dist/commands/channel/supervisor/shutdown.d.ts.map +0 -1
- package/dist/commands/channel/supervisor/shutdown.js.map +0 -1
- package/dist/commands/channel/supervisor/stdout.d.ts.map +0 -1
- package/dist/commands/channel/supervisor/stdout.js.map +0 -1
- package/dist/commands/channel/supervisor/turns.d.ts.map +0 -1
- package/dist/commands/channel/supervisor/turns.js.map +0 -1
- package/dist/commands/channel/supervisor/warning.d.ts.map +0 -1
- package/dist/commands/channel/supervisor/warning.js.map +0 -1
- package/dist/commands/channel/supervisor.d.ts.map +0 -1
- package/dist/commands/channel/supervisor.js.map +0 -1
- package/dist/commands/channel/text-body.d.ts +0 -13
- package/dist/commands/channel/text-body.d.ts.map +0 -1
- package/dist/commands/channel/text-body.js.map +0 -1
- package/dist/commands/channel/threads.d.ts +0 -39
- package/dist/commands/channel/threads.d.ts.map +0 -1
- package/dist/commands/channel/threads.js.map +0 -1
- package/dist/commands/channel/title.d.ts +0 -12
- package/dist/commands/channel/title.d.ts.map +0 -1
- package/dist/commands/channel/title.js +0 -24
- package/dist/commands/channel/title.js.map +0 -1
- package/dist/commands/channel/wait.d.ts.map +0 -1
- package/dist/commands/channel/wait.js.map +0 -1
- package/dist/commands/channel/workers.d.ts +0 -9
- package/dist/commands/channel/workers.d.ts.map +0 -1
- package/dist/commands/channel/workers.js +0 -31
- package/dist/commands/channel/workers.js.map +0 -1
- package/dist/templates/common/bundled-skills/trellis-channel/SKILL.md +0 -69
- package/dist/templates/common/bundled-skills/trellis-channel/references/command-reference.md +0 -549
- package/dist/templates/common/bundled-skills/trellis-channel/references/forum.md +0 -233
- package/dist/templates/common/bundled-skills/trellis-channel/references/progress-debugging.md +0 -237
- package/dist/templates/common/bundled-skills/trellis-channel/references/subnode-work.md +0 -193
- package/dist/templates/common/bundled-skills/trellis-channel/references/workers.md +0 -295
- package/dist/templates/common/bundled-skills/trellis-channel/references/workflows.md +0 -131
- package/dist/templates/common/bundled-skills/trellis-meta/references/local-architecture/multi-agent-channel.md +0 -70
- package/dist/templates/common/bundled-skills/trellis-research-record/SKILL.md +0 -14
- package/dist/templates/copilot/prompts/parallel.prompt.md +0 -204
- package/dist/templates/trellis/agents/check.md +0 -70
- package/dist/templates/trellis/agents/implement.md +0 -71
- package/dist/templates/trellis/agents/subnode.env +0 -4
- package/dist/templates/trellis/agents/subnode.md +0 -69
- package/dist/templates/trellis/scripts/common/context_projection.py +0 -508
- package/dist/templates/trellis/scripts/common/continuation_record.py +0 -450
- package/dist/templates/trellis/scripts/common/ownership_record.py +0 -439
- package/dist/templates/trellis/scripts/subnode_artifact.py +0 -597
- package/dist/templates/trellis/scripts/workspace_note.py +0 -126
- /package/dist/commands/{channel → teamwork}/adapters/types.js +0 -0
- /package/dist/commands/{channel → teamwork}/supervisor/idle.d.ts +0 -0
- /package/dist/commands/{channel → teamwork}/supervisor/idle.js +0 -0
- /package/dist/commands/{channel → teamwork}/supervisor/turns.d.ts +0 -0
- /package/dist/commands/{channel → teamwork}/supervisor/turns.js +0 -0
|
@@ -229,14 +229,6 @@ def _resolve_task_dir(trellis_dir: Path, task_ref: str) -> Path:
|
|
|
229
229
|
|
|
230
230
|
def _get_task_status(trellis_dir: Path, hook_input: dict) -> str:
|
|
231
231
|
active = _resolve_active_task(trellis_dir, hook_input)
|
|
232
|
-
if active.source_type == "unbound_ambiguous":
|
|
233
|
-
candidates = "\n".join(f"- {candidate}" for candidate in active.candidate_paths)
|
|
234
|
-
return (
|
|
235
|
-
"Status: TASK BINDING AMBIGUOUS\n"
|
|
236
|
-
f"Candidates:\n{candidates}\n"
|
|
237
|
-
"Next: Review the candidates and run `python3 ./.trellis/scripts/task.py start <task>` "
|
|
238
|
-
"with the intended task once a direct session identity is available."
|
|
239
|
-
)
|
|
240
232
|
if not active.task_path:
|
|
241
233
|
return (
|
|
242
234
|
"Status: NO ACTIVE TASK\n"
|
|
@@ -266,13 +258,9 @@ def _get_task_status(trellis_dir: Path, hook_input: dict) -> str:
|
|
|
266
258
|
if task_status == "completed":
|
|
267
259
|
return (
|
|
268
260
|
f"Status: COMPLETED\nTask: {task_title}\n"
|
|
269
|
-
|
|
270
|
-
"or start a new task."
|
|
261
|
+
"Next: Start another task or end the session; finish-work only records the session journal."
|
|
271
262
|
)
|
|
272
263
|
|
|
273
|
-
has_prd = (task_dir / "prd.md").is_file()
|
|
274
|
-
has_design = (task_dir / "design.md").is_file()
|
|
275
|
-
has_implement = (task_dir / "implement.md").is_file()
|
|
276
264
|
present = [
|
|
277
265
|
name
|
|
278
266
|
for name in ("prd.md", "design.md", "implement.md", "implement.jsonl", "check.jsonl")
|
|
@@ -280,20 +268,18 @@ def _get_task_status(trellis_dir: Path, hook_input: dict) -> str:
|
|
|
280
268
|
]
|
|
281
269
|
present_line = ", ".join(present) if present else "none"
|
|
282
270
|
|
|
283
|
-
if not has_prd:
|
|
284
|
-
return (
|
|
285
|
-
f"Status: PLANNING\nTask: {task_title}\nPresent: {present_line}\n"
|
|
286
|
-
"Next: Load trellis-brainstorm and write prd.md. Stay in planning."
|
|
287
|
-
)
|
|
288
|
-
|
|
289
271
|
if task_status == "planning":
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
272
|
+
next_action = (
|
|
273
|
+
"Follow the current per-turn workflow-state. Task lifecycle status and artifact presence "
|
|
274
|
+
"do not identify the business phase. If no phase route is initialized, load "
|
|
275
|
+
"`trellis-goal-exploration-and-requirements` and confirm the requirements baseline "
|
|
276
|
+
"before initializing the route."
|
|
277
|
+
)
|
|
278
|
+
if any(
|
|
279
|
+
path.is_file() and not _has_curated_jsonl_entry(path)
|
|
280
|
+
for path in (task_dir / "implement.jsonl", task_dir / "check.jsonl")
|
|
281
|
+
):
|
|
282
|
+
next_action += " Curate task context manifests only when a dispatched agent needs them."
|
|
297
283
|
return (
|
|
298
284
|
f"Status: PLANNING\nTask: {task_title}\nPresent: {present_line}\n"
|
|
299
285
|
f"Next: {next_action}"
|
|
@@ -301,8 +287,9 @@ def _get_task_status(trellis_dir: Path, hook_input: dict) -> str:
|
|
|
301
287
|
|
|
302
288
|
return (
|
|
303
289
|
f"Status: {task_status.upper()}\nTask: {task_title}\nPresent: {present_line}\n"
|
|
304
|
-
"Next: Follow the matching per-turn workflow-state
|
|
305
|
-
"
|
|
290
|
+
"Next: Follow the matching per-turn workflow-state; task lifecycle status does not "
|
|
291
|
+
"identify the business phase. Context order is jsonl entries, `prd.md`, `design.md` "
|
|
292
|
+
"if present, `implement.md` if present."
|
|
306
293
|
)
|
|
307
294
|
|
|
308
295
|
|
|
@@ -391,10 +378,7 @@ def _build_compact_current_state(
|
|
|
391
378
|
lines.append(_format_git_state(repo_root))
|
|
392
379
|
|
|
393
380
|
active = _resolve_active_task(trellis_dir, hook_input)
|
|
394
|
-
if active.
|
|
395
|
-
candidates = ", ".join(active.candidate_paths)
|
|
396
|
-
lines.append(f"Current task: ambiguous; candidates={candidates}; bind explicitly.")
|
|
397
|
-
elif active.task_path:
|
|
381
|
+
if active.task_path:
|
|
398
382
|
task_dir = _resolve_task_dir(trellis_dir, active.task_path)
|
|
399
383
|
status = "unknown"
|
|
400
384
|
task_json = task_dir / "task.json"
|
|
@@ -436,14 +420,23 @@ def _extract_range(content: str, start_header: str, end_header: str) -> str:
|
|
|
436
420
|
lines = content.splitlines()
|
|
437
421
|
start: "int | None" = None
|
|
438
422
|
end: int = len(lines)
|
|
439
|
-
|
|
440
|
-
|
|
423
|
+
start_matches = {f"## {start_header}", "## 阶段索引", "## Phase Index"}
|
|
424
|
+
end_matches = {
|
|
425
|
+
f"## {end_header}",
|
|
426
|
+
f"### {end_header}",
|
|
427
|
+
}
|
|
428
|
+
phase_titles = ("目标探索与需求核对阶段", "Goal Exploration and Requirements Confirmation Phase")
|
|
441
429
|
for i, line in enumerate(lines):
|
|
442
430
|
stripped = line.strip()
|
|
443
|
-
if start is None and stripped
|
|
431
|
+
if start is None and stripped in start_matches:
|
|
444
432
|
start = i
|
|
445
433
|
continue
|
|
446
|
-
|
|
434
|
+
heading = stripped.lstrip("#").strip()
|
|
435
|
+
is_phase_heading = stripped.startswith(("## ", "### ")) and any(
|
|
436
|
+
heading == title or heading.endswith((f":{title}", f": {title}"))
|
|
437
|
+
for title in phase_titles
|
|
438
|
+
)
|
|
439
|
+
if start is not None and (stripped in end_matches or is_phase_heading):
|
|
447
440
|
end = i
|
|
448
441
|
break
|
|
449
442
|
if start is None:
|
|
@@ -491,11 +484,11 @@ def _build_workflow_toc(workflow_path: Path) -> str:
|
|
|
491
484
|
|
|
492
485
|
out_lines = [
|
|
493
486
|
"# Development Workflow - Session Summary",
|
|
494
|
-
"Full guide: .trellis/workflow.md.
|
|
487
|
+
"Full guide: .trellis/workflow.md. Phase detail: load the Skill named in the active phase breadcrumb.",
|
|
495
488
|
"",
|
|
496
489
|
]
|
|
497
490
|
|
|
498
|
-
phases = _extract_range(content, "
|
|
491
|
+
phases = _extract_range(content, "阶段索引", "目标探索与需求核对阶段")
|
|
499
492
|
if phases:
|
|
500
493
|
out_lines.append(_strip_breadcrumb_tag_blocks(phases).rstrip())
|
|
501
494
|
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: trellis-decision-space-construction-and-merging
|
|
3
|
+
description: 当前任务进入决策空间构造与归并阶段时,整理实质决策、候选、证据、依赖与决策树。
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# 决策空间构造与归并阶段
|
|
7
|
+
|
|
8
|
+
当 `current_phase_id` 为 `decision_space_construction_and_merging` 时使用。阅读本 Skill 同目录的 `workflow.md`,并基于已确认且仍有效的需求基线工作。
|
|
9
|
+
|
|
10
|
+
决策空间构造与归并阶段负责展示和归并决策空间,不代替用户锁定保留决定。简单问题使用清单或比较表;只有前置选择或条件会改变后续选项时才建立决策树。阶段结果由 Trellis CLI 接受;无实质候选差异时可按证据跳过本阶段。
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
# 决策空间构造与归并阶段流程
|
|
2
|
+
|
|
3
|
+
核对目标探索与需求核对阶段已确认的目标基线及当前 `artifact_revision`。判断候选差异、条件分支是否会影响交付、验收、风险或下游选择。若没有实质差异,可记录基线引用、跳过理由、解决方案设计与收敛阶段的最低输入和需要重新进入本阶段的变化条件,再由 Trellis CLI 核验跳过。
|
|
4
|
+
|
|
5
|
+
需要构造时,梳理决策项及其权限、候选、重要排除项与理由;按需补齐证据、适用约束、标准、阈值、依赖、影响和优先级。证据足够时给出推荐;证据不足则保留未知或待决项,不伪造结论。仅当选择之间存在条件依赖时使用决策树,并标明分支条件、来源、未知路径及其下游影响。互斥、共享依赖或汇合关系可用依赖图;独立候选用比较表或清单即可。
|
|
6
|
+
|
|
7
|
+
新颖机制、重大重构、跨组件边界变化或关键取舍缺少可信本地先例时,进行有界的 `prior-art review`,记录适用性与采纳或排除理由。只读 Teamwork 可按需补充证据;主代理核验报告后归并。将 `DecisionSpace` 或有据跳过记录交由 Trellis CLI 接受,待用户决定交由解决方案设计与收敛阶段处理。
|
|
8
|
+
|
|
9
|
+
```mermaid
|
|
10
|
+
flowchart TD
|
|
11
|
+
input["核对已确认且仍有效的需求基线"] --> material{"差异或条件分支会改变交付、验收、风险或下游选择?"}
|
|
12
|
+
material -->|"否"| skip["记录 revision、理由、解决方案设计与收敛阶段所需的最低输入和重入条件"]
|
|
13
|
+
skip --> accepted["Trellis CLI 核验并接受跳过记录"]
|
|
14
|
+
material -->|"是"| items["整理决策项、权限、候选和重要排除项"]
|
|
15
|
+
items --> evidence["补充适用证据、标准、依赖、优先级和影响"]
|
|
16
|
+
evidence --> prior{"触发 prior-art review 条件?"}
|
|
17
|
+
prior -->|"是"| review["有界核对相关开源实现或公开提案"]
|
|
18
|
+
prior -->|"否"| merge["汇总当前证据"]
|
|
19
|
+
review --> merge
|
|
20
|
+
evidence --> teamwork_gate{"只读 Teamwork 评议有净收益?"}
|
|
21
|
+
teamwork_gate -->|"是"| teamwork["获取并核验只读 Teamwork 报告"]
|
|
22
|
+
teamwork_gate -->|"否"| merge
|
|
23
|
+
teamwork --> merge
|
|
24
|
+
merge --> representation{"候选关系需要条件分支吗?"}
|
|
25
|
+
representation -->|"是"| tree["建立可追溯决策树并标明相关未知路径"]
|
|
26
|
+
representation -->|"否"| simple["使用清单、比较表或适用的依赖图"]
|
|
27
|
+
tree --> assess["核对证据、覆盖范围、关系与当前 revision"]
|
|
28
|
+
simple --> assess
|
|
29
|
+
assess -->|"目标或范围变化"| goal_exploration_and_requirements["回到目标探索与需求核对阶段,更新基线"]
|
|
30
|
+
assess -->|"证据或候选仍有缺口"| items
|
|
31
|
+
assess -->|"可供方案收敛"| output["Trellis CLI 接受 DecisionSpace"]
|
|
32
|
+
accepted --> solution_design_and_convergence["进入解决方案设计与收敛阶段"]
|
|
33
|
+
output --> solution_design_and_convergence
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
### 离开阶段的条件
|
|
37
|
+
|
|
38
|
+
- 有实质决策空间时,候选、关键证据、关系、未知项和推荐均能支持下一阶段比较;不要求固定字段数量或同时使用多种图表。
|
|
39
|
+
- 无实质差异时,跳过记录须能说明当前基线、判断依据和重新进入条件。
|
|
40
|
+
- 保留用户决定不在本阶段锁定;外部参考不替代项目事实或用户选择。
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: trellis-delivery-review-and-closeout
|
|
3
|
+
description: 当前任务进入交付审查与现场收尾阶段时,核对当前交付候选、未结事项、接受条件和资源处置。
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# 交付审查与现场收尾阶段
|
|
7
|
+
|
|
8
|
+
当 `current_phase_id` 为 `delivery_review_and_closeout` 时使用。阅读本 Skill 同目录的 `workflow.md`,只审查当前路线和 revision 下的交付,不在本阶段重新设计或实施。
|
|
9
|
+
|
|
10
|
+
本阶段核验交付与合同、接受条件、工作包、集成、验证、未结发现和资源事实。当前合同内缺口按最早受影响阶段回流或暂停;合同外遗留应记录责任方、触发条件、影响和后续引用。满足交付条件后由 Trellis CLI 接受;只有明确撤回才进入取消处置。会话交接包是独立附加操作,不是阶段或任务收尾的前置条件。
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
# 交付审查与现场收尾阶段流程
|
|
2
|
+
|
|
3
|
+
绑定当前 `task_route_revision`、输入和结果 revision,按解决方案设计与收敛阶段确认的优先级和依赖检查任务实施与测试验证阶段的工作包、适用的集成与验证、合同差异和未结发现;只有路线实际涉及必需子任务或受托资源时,才核对相应事实。分析型路线只核对实际分析产物,不制造实施工作包。验证按通过、失败、未运行或受限记录;合同允许且风险可接受时说明未运行原因、影响和替代证据,否则暂停或回到任务实施与测试验证阶段。
|
|
4
|
+
|
|
5
|
+
实施、集成或必需验证缺陷回到任务实施与测试验证阶段;方案、合同、风险、依赖、回退或停止条件失效回到解决方案设计与收敛阶段;候选、标准或条件变化回到决策空间构造与归并阶段;目标、范围或接受目标变化回到目标探索与需求核对阶段。必要证据缺失时,暂停并停留在交付审查与现场收尾阶段;必要用户决定缺失时,通过 `pennix-decision-grill` 同步请求决定,答复前保持暂停,收到答复后重新核对当前输入和受影响阶段。当前合同内未完成工作不能改记为遗留后关闭。合同外、已明确延期或撤回后不继续的事项,可在现有收尾产物中记录范围、责任方、触发条件、影响和后续任务引用;没有遗留时不另造清单。
|
|
6
|
+
|
|
7
|
+
满足当前合同且没有待处理缺口时,由 Trellis CLI 接受交付审查并形成 `delivery_ready`;`no_go` 也须经交付审查与现场收尾阶段后才能完成任务。只有合同、用户明确要求或不可由主代理替代的重要价值与风险取舍需要用户接受时,才等待用户确认。用户要求修改或拒绝时,使当前交付候选失效并按影响回流。调用 `complete` 前核验任务生命周期;只有路线实际创建、委派或依赖外部执行资源时,才核验其处置状态。相关资源仍可能写入、泄露、造成数据风险或状态无法确认时,保留现场并阻止完成。若用户明确撤回,Trellis CLI 将路线收敛为仅包含交付审查与现场收尾阶段并记录原因;存在关联子任务时,逐项记录继续、转为独立任务或取消的决定及依据,继续时保留父子关系,转为独立任务时记录子任务和依据后再解除关系,取消时另行执行子任务自身的取消流程。完成子任务处置后,再核验当前路线实际涉及的外部执行资源;资源仍可能写入、泄露、造成数据风险或状态无法确认时保留现场并阻止取消,风险解除后才调用 `cancel --reason`。
|
|
8
|
+
|
|
9
|
+
```mermaid
|
|
10
|
+
flowchart TD
|
|
11
|
+
candidate["绑定当前 revision 的分析产物或实施交付候选"] --> review["按当前合同核验工作包、适用的集成与验证、差异及相关子任务和资源"]
|
|
12
|
+
review --> gaps{"存在合同内缺口或失效事实?"}
|
|
13
|
+
gaps -->|"实施、集成或必需验证"| task_implementation["回到任务实施与测试验证阶段"]
|
|
14
|
+
gaps -->|"方案或合同"| solution_design_and_convergence["回到解决方案设计与收敛阶段"]
|
|
15
|
+
gaps -->|"候选、标准或条件"| decision_space_construction_and_merging["回到决策空间构造与归并阶段"]
|
|
16
|
+
gaps -->|"目标、范围或接受目标"| goal_exploration_and_requirements["回到目标探索与需求核对阶段"]
|
|
17
|
+
gaps -->|"必要证据缺失"| wait["暂停并留在交付审查与现场收尾阶段"]
|
|
18
|
+
gaps -->|"必要用户决定缺失"| decision_grill["pennix-decision-grill 同步请求必要决定;答复前暂停"]
|
|
19
|
+
decision_grill --> candidate
|
|
20
|
+
wait --> candidate
|
|
21
|
+
gaps -->|"无"| residual{"是否有可保留的合同外或已延期遗留?"}
|
|
22
|
+
residual -->|"是"| record["记录责任方、触发条件、影响和后续引用"]
|
|
23
|
+
residual -->|"否"| accept["Trellis CLI 接受 delivery_ready 或 no_go"]
|
|
24
|
+
record --> accept
|
|
25
|
+
accept --> user_gate{"交付合同、用户明确要求或不可由主代理替代的价值/风险取舍要求用户接受?"}
|
|
26
|
+
user_gate -->|"否"| ready["核验任务生命周期及适用资源后按条件 complete"]
|
|
27
|
+
user_gate -->|"是"| ask_accept["pennix-decision-grill 同步请求用户接受"]
|
|
28
|
+
ask_accept --> answer{"用户答复是否明确?"}
|
|
29
|
+
answer -->|"接受"| ready
|
|
30
|
+
answer -->|"未答复或答复不清"| user_wait["保持暂停并等待明确答复"]
|
|
31
|
+
user_wait --> candidate
|
|
32
|
+
answer -->|"要求修订或拒绝"| invalidate["使当前交付候选失效并判断最早受影响阶段"]
|
|
33
|
+
invalidate -->|"实施、集成或验证"| task_implementation
|
|
34
|
+
invalidate -->|"候选、标准或条件"| decision_space_construction_and_merging
|
|
35
|
+
invalidate -->|"方案或合同"| solution_design_and_convergence
|
|
36
|
+
invalidate -->|"目标、范围或接受目标"| goal_exploration_and_requirements
|
|
37
|
+
withdraw["用户明确撤回"] --> cancel_route["Trellis CLI 将路线收敛为仅‘交付审查与现场收尾阶段’并记录原因"]
|
|
38
|
+
cancel_route --> child_disposition{"关联子任务如何处置?"}
|
|
39
|
+
child_disposition -->|"继续"| child_continue["保留父子关系"]
|
|
40
|
+
child_disposition -->|"转为独立任务"| child_independent["记录子任务标识与依据后解除父子关系"]
|
|
41
|
+
child_disposition -->|"取消"| child_cancel["另行执行子任务自身的取消流程"]
|
|
42
|
+
child_disposition -->|"无关联子任务"| cancelReview
|
|
43
|
+
child_continue --> cancelReview
|
|
44
|
+
child_independent --> cancelReview
|
|
45
|
+
child_cancel --> cancelReview
|
|
46
|
+
cancelReview["核验当前路线涉及的子任务和资源处置"]
|
|
47
|
+
cancelReview --> safe{"是否仍有资源可能写入、泄露或造成数据风险?"}
|
|
48
|
+
safe -->|"是或状态未知"| preserve["保留现场并阻止取消"]
|
|
49
|
+
preserve --> cancelReview
|
|
50
|
+
safe -->|"否"| cancel["Trellis CLI cancel --reason"]
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
### 与会话交接的边界
|
|
54
|
+
|
|
55
|
+
正式会话交接包仅在用户明确要求时按其独立 Skill 处理。它不改变阶段、路线或任务状态,也不是 `delivery_ready`、`complete` 或 `cancel` 的前置条件。
|
package/dist/templates/common/bundled-skills/trellis-goal-exploration-and-requirements/SKILL.md
ADDED
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: trellis-goal-exploration-and-requirements
|
|
3
|
+
description: 当前任务处于目标探索与需求核对阶段时,核对目标、范围、成功条件、约束、证据与用户确认。
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# 目标探索与需求核对阶段
|
|
7
|
+
|
|
8
|
+
当 Trellis 任务的 `current_phase_id` 为 `goal_exploration_and_requirements` 时使用。先阅读本 Skill 同目录的 `workflow.md`,再按当前项目事实选择必要的探索深度和证据来源。
|
|
9
|
+
|
|
10
|
+
阶段产物和用户确认通过 Trellis CLI 记录。离开本阶段前,必须由用户明确确认绑定当前 `artifact_revision` 的目标与需求基线;只要求修订或尚未确认时,继续停留在本阶段。确认不等于最终方案批准或实施授权。
|
package/dist/templates/common/bundled-skills/trellis-goal-exploration-and-requirements/workflow.md
ADDED
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
# 目标探索与需求核对阶段流程
|
|
2
|
+
|
|
3
|
+
先核对用户请求、目标对象和项目背景。新项目明确问题、用户、领域及系统边界;既有项目核对目标仓库、组件、当前版本、适用规则、现状和影响范围。按问题选择本地源码、历史记录、外部资料或用户维护知识等证据来源;只在独立取证有净收益时使用 Trellis Teamwork。
|
|
4
|
+
|
|
5
|
+
整理目标、范围、成功条件、关键约束和责任方。区分已知事实、假设、证据冲突和未知事项;缺少会改变目标或路线的用户事实时,通过 `pennix-decision-grill` 同步询问。记录会阻断推进的问题及恢复条件;不影响当前路线的事项可明确责任方和后续处理。
|
|
6
|
+
|
|
7
|
+
形成 `phase_output`,至少包含当前目标与需求基线、必要证据、不确定性、`phase_result` 和非约束性的 `route_advice`。`route_advice` 简要说明任务类型、复杂度画像和项目背景如何影响阶段选择,并记录复杂度判断的实际触发维度与理由;不机械计分或套用固定路由矩阵,也不要求固定字段或篇幅。路线发生变化时,使用 Trellis CLI 更新受影响的分类和阶段,并按影响范围重新核验。阶段可等待用户补充或因依赖阻塞;只有用户确认当前基线且阶段产物有效时,才以 `accepted` 离开本阶段。将阶段产物及引用提交 Trellis CLI 核验后,向用户展示简明基线并请求确认或修订。
|
|
8
|
+
|
|
9
|
+
```mermaid
|
|
10
|
+
flowchart TD
|
|
11
|
+
request["核对请求、项目背景和目标对象"] --> evidence["选择必要证据并核验现状"]
|
|
12
|
+
evidence --> baseline["整理目标、范围、成功条件与约束"]
|
|
13
|
+
baseline --> enough{"关键事实是否足以形成基线?"}
|
|
14
|
+
enough -->|"否,需用户补充"| ask["Trellis CLI 记录 needs_user_input;同步询问"]
|
|
15
|
+
ask --> wait["等待答复并留在目标探索与需求核对阶段"]
|
|
16
|
+
wait --> evidence
|
|
17
|
+
enough -->|"否,依赖阻断"| blocked["记录 blocked 与恢复条件"]
|
|
18
|
+
blocked -->|"依赖恢复后"| evidence
|
|
19
|
+
enough -->|"是"| output["形成 phase_output 并由 Trellis CLI 核验"]
|
|
20
|
+
output --> confirm["向用户展示当前基线并请求确认"]
|
|
21
|
+
confirm --> decision{"用户是否明确确认当前版本?"}
|
|
22
|
+
decision -->|"要求修订"| evidence
|
|
23
|
+
decision -->|"尚未确认"| wait
|
|
24
|
+
decision -->|"明确确认"| gate["以当前 artifact_revision 记录确认并接受阶段"]
|
|
25
|
+
gate --> route["按当前路线选择后续阶段;跳过决策空间构造与归并阶段也保留此确认"]
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
### 离开阶段的条件
|
|
29
|
+
|
|
30
|
+
- `accepted` 及明确用户确认必须绑定当前 `artifact_revision`;产物改变后重新核验并取得确认。
|
|
31
|
+
- `needs_user_input` 或 `blocked` 时不推进阶段游标。
|
|
32
|
+
- `terminated` 不代表用户撤回任务;如用户明确撤回,按交付审查与现场收尾阶段中的取消审查处理。
|
|
33
|
+
- 可从目标探索与需求核对阶段直接进入解决方案设计与收敛阶段,但不能绕过需求基线确认。
|
|
@@ -1,20 +1,20 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: trellis-meta
|
|
3
|
-
description: "Understand and customize the local Trellis architecture inside a user project. Use when modifying .trellis plus platform hooks, settings, agents, skills, commands, prompts, workflows, the
|
|
3
|
+
description: "Understand and customize the local Trellis architecture inside a user project. Use when modifying .trellis plus platform hooks, settings, agents, skills, commands, prompts, workflows, the Teamwork runtime (trellis teamwork), bundled runtime agents under .trellis/agents/, selectable workflow templates, registry-backed spec refresh, cross-session memory (trellis mem) generated by trellis init, or bundled skills and their auto-dispatch flow."
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
# Trellis Meta
|
|
7
7
|
|
|
8
8
|
This skill is for local Trellis users who have already run `trellis init` in a project. After reading it, an AI should understand the Trellis architecture, operating model, and customization entry points inside that user project, then modify the generated `.trellis/` and platform directory files according to the user's request.
|
|
9
9
|
|
|
10
|
-
Trellis v0.6 adds three architectural surfaces on top of the pre-v0.6 workflow / persistence / platform model. First,
|
|
10
|
+
Trellis v0.6 adds three architectural surfaces on top of the pre-v0.6 workflow / persistence / platform model. First, the Teamwork runtime: `trellis teamwork` coordinates teammate processes through project-scoped JSONL event logs at `~/.trellis/teamwork/<project>/<session>/events.jsonl`, with a process guard, forum threads, durable idempotency keys, and a bundled `.trellis/agents/teammate.md` role card. Second, cross-session memory: `trellis mem list | search | context | extract | projects` reads raw Claude Code, Codex, and Pi Agent JSONL already on disk, slices by `--phase brainstorm|implement|all`, and never uploads anything. Third, a dual-package npm release: `@pennixrv/trellis` (CLI) and `@pennixrv/trellis-core` (SDK with `/teamwork`, `/task`, `/mem`, `/testing` subpaths) ship in lockstep on one version. Treat these as first-class customization surfaces alongside the per-platform integration files.
|
|
11
11
|
|
|
12
12
|
The default operating scope is local files in the user project:
|
|
13
13
|
|
|
14
14
|
- `.trellis/`: workflow, config, tasks, spec, workspace, scripts, bundled runtime agents, and runtime state.
|
|
15
15
|
- Platform directories: `.claude/`, `.codex/`, `.cursor/`, `.opencode/`, `.kiro/`, `.gemini/`, `.qoder/`, `.codebuddy/`, `.github/`, `.factory/`, `.pi/`, `.reasonix/`, `.kilocode/`, `.agent/`, `.devin/`, `.kimi-code/`, `.dsh/`, and similar directories. Pi additionally exposes a native `trellis_subagent` tool with `single` / `parallel` / `chain` dispatch modes, throttled progress cards, and `isTrellisAgent()` validation on top of the file layout. Reasonix stores both workflow skills and subagent skills as `.reasonix/skills/<name>/SKILL.md`; subagent skills carry `runAs: subagent` frontmatter. Kimi Code keeps workflow skills in the shared `.agents/skills/` layer and delivers commands plus agent prompts as `.kimi-code/skills/<name>/SKILL.md`. DeepSeek Harness keeps shared workflow skills under `.agents/skills/` and DSH-private commands plus `trellis-agent-*` role skills under `.dsh/skills/`; with the optional `dsh-trellis` plugin its continuable subagents use event-driven settlement waits, otherwise required children are dispatched in the foreground from the start.
|
|
16
16
|
- Shared skill layer: `.agents/skills/`.
|
|
17
|
-
- User-owned
|
|
17
|
+
- User-owned Teamwork Session store outside the project tree: `~/.trellis/teamwork/<project>/<session>/events.jsonl`.
|
|
18
18
|
- Raw platform conversation logs queryable via `trellis mem`: `~/.claude/projects/`, `~/.codex/sessions/`, and `~/.pi/agent/sessions/` (OpenCode adapter degraded for the v0.6 line).
|
|
19
19
|
|
|
20
20
|
Do not assume the user has the Trellis source repository. Do not default to modifying the global npm install directory or `node_modules` — both `@pennixrv/trellis` and `@pennixrv/trellis-core` ship as published packages sharing one version and one git tag per release.
|
|
@@ -23,7 +23,7 @@ Do not assume the user has the Trellis source repository. Do not default to modi
|
|
|
23
23
|
|
|
24
24
|
1. Read `references/local-architecture/overview.md` first to establish the local Trellis system model.
|
|
25
25
|
2. If the request involves a specific AI tool, read `references/platform-files/platform-map.md` and the relevant platform file notes.
|
|
26
|
-
3. If the request involves
|
|
26
|
+
3. If the request involves Teamwork coordination or teammate sessions, read `references/local-architecture/multi-agent-teamwork.md` and the bundled `.trellis/agents/` files.
|
|
27
27
|
4. If the user wants to change behavior, read `references/customize-local/overview.md`, then open the specific customization topic.
|
|
28
28
|
5. Before editing, read the actual files in the user project and treat local content as authoritative.
|
|
29
29
|
|
|
@@ -31,46 +31,46 @@ Do not assume the user has the Trellis source repository. Do not default to modi
|
|
|
31
31
|
|
|
32
32
|
### Local Architecture
|
|
33
33
|
|
|
34
|
-
- `references/local-architecture/overview.md`: The layered local Trellis architecture (workflow / persistence / platform /
|
|
34
|
+
- `references/local-architecture/overview.md`: The layered local Trellis architecture (workflow / persistence / platform / Teamwork runtime) and customization principles.
|
|
35
35
|
- `references/local-architecture/generated-files.md`: Files generated by `trellis init` and their customization boundaries, including `.trellis/agents/`.
|
|
36
|
-
- `references/local-architecture/workflow.md`: Phases, routing, workflow-state blocks,
|
|
36
|
+
- `references/local-architecture/workflow.md`: Phases, routing, workflow-state blocks, the bundled `native` workflow, and explicitly sourced custom workflows in `.trellis/workflow.md`.
|
|
37
37
|
- `references/local-architecture/task-system.md`: Task directories, active task, JSONL context, parent/child task trees, and task runtime.
|
|
38
38
|
- `references/local-architecture/spec-system.md`: How `.trellis/spec/` is organized, injected, and refreshed from a `registry.spec` source.
|
|
39
39
|
- `references/local-architecture/workspace-memory.md`: `.trellis/workspace/` journals plus `trellis mem` cross-session recall and the `@pennixrv/trellis-core/mem` SDK.
|
|
40
|
-
- `references/local-architecture/context-injection.md`: Hooks, sub-agent preludes, and
|
|
41
|
-
- `references/local-architecture/multi-agent-
|
|
42
|
-
- `references/local-architecture/bundled-skills.md`:
|
|
40
|
+
- `references/local-architecture/context-injection.md`: Hooks, sub-agent preludes, and Teamwork message inbox routing.
|
|
41
|
+
- `references/local-architecture/multi-agent-teamwork.md`: `trellis teamwork`, Teamwork Session storage, teammate process guard, task ownership boundary, and bundled `.trellis/agents/` runtime instructions.
|
|
42
|
+
- `references/local-architecture/bundled-skills.md`: Bundled skills under `packages/cli/src/templates/common/bundled-skills/` and how `getBundledSkillTemplates()` ships them to platform skill roots.
|
|
43
43
|
|
|
44
44
|
### Platform Files
|
|
45
45
|
|
|
46
|
-
- `references/platform-files/overview.md`: How shared `.trellis/` files relate to platform directories and the
|
|
46
|
+
- `references/platform-files/overview.md`: How shared `.trellis/` files relate to platform directories and the three platform integration modes (hook-driven, agent prelude, main-session workflow).
|
|
47
47
|
- `references/platform-files/platform-map.md`: Platform directories and paths for skills, agents, hooks, and extensions across all supported platforms including DeepSeek Harness, Reasonix, and Pi's native `trellis_subagent` extension.
|
|
48
|
-
- `references/platform-files/hooks-and-settings.md`: How settings/config files, hooks, plugins, and extensions connect to Trellis; covers `
|
|
49
|
-
- `references/platform-files/agents.md`: Per-platform `trellis-research` / `trellis-implement` / `trellis-check` sub-agent files plus bundled `.trellis/agents/
|
|
48
|
+
- `references/platform-files/hooks-and-settings.md`: How settings/config files, hooks, plugins, and extensions connect to Trellis; covers `teamwork.teammate_guard.*` and `codex.dispatch_mode`.
|
|
49
|
+
- `references/platform-files/agents.md`: Per-platform `trellis-research` / `trellis-implement` / `trellis-check` sub-agent files plus the bundled `.trellis/agents/teammate.md` role card.
|
|
50
50
|
- `references/platform-files/skills-and-commands.md`: Differences between skills, commands, prompts, and workflows, plus how to change them.
|
|
51
51
|
|
|
52
52
|
### Local Customization
|
|
53
53
|
|
|
54
54
|
- `references/customize-local/overview.md`: Choose the right local customization entry point for the user's request.
|
|
55
55
|
- `references/customize-local/change-workflow.md`: Change phases, routing, next actions, workflow-state, and the selected workflow template.
|
|
56
|
-
- `references/customize-local/change-task-lifecycle.md`: Change task creation,
|
|
57
|
-
- `references/customize-local/change-context-loading.md`: Change how tasks, specs, journals, hook context,
|
|
56
|
+
- `references/customize-local/change-task-lifecycle.md`: Change task creation, lifecycle and phase state, parent/child links, and lifecycle hooks.
|
|
57
|
+
- `references/customize-local/change-context-loading.md`: Change how tasks, specs, journals, hook context, Teamwork inbox messages, and `trellis mem` recall are loaded.
|
|
58
58
|
- `references/customize-local/change-hooks.md`: Change platform hooks, settings, task lifecycle hooks (`hooks.after_*`), and shell session bridges.
|
|
59
|
-
- `references/customize-local/change-agents.md`: Change research, implement, and check agent behavior across platform sub-agents,
|
|
59
|
+
- `references/customize-local/change-agents.md`: Change research, implement, and check agent behavior across platform sub-agents, the Teamwork teammate role card, and the Codex `dispatch_mode` toggle.
|
|
60
60
|
- `references/customize-local/change-skills-or-commands.md`: Add or modify local skills, commands, prompts, and workflows; covers upstream bundled-skill auto-dispatch.
|
|
61
61
|
- `references/customize-local/change-spec-structure.md`: Adjust the project spec structure under `.trellis/spec/`, including registry-backed sources.
|
|
62
62
|
- `references/customize-local/add-project-local-conventions.md`: Put team rules into project-local specs or local skills.
|
|
63
63
|
|
|
64
64
|
## Current Rules
|
|
65
65
|
|
|
66
|
-
- `.trellis/workflow.md` is the local workflow source of truth
|
|
67
|
-
- `.trellis/config.yaml` is the project-level Trellis configuration entry point. It hosts task lifecycle hooks (`hooks.after_create` / `after_start` / `after_finish`
|
|
68
|
-
- `.trellis/spec/` stores the user's project-specific coding conventions and design constraints. When `registry.spec` is set, files are refreshed by `trellis update`; local edits surface as
|
|
69
|
-
- `.trellis/tasks/` stores task
|
|
66
|
+
- `.trellis/workflow.md` is the local workflow source of truth. By default, `trellis init` writes the bundled `native` workflow; a custom workflow is available only when its source is explicitly supplied, and can be re-selected via `trellis workflow --template <id> --workflow-source <source>`. Missing `.trellis/agents/<name>.md` files referenced by the active template trigger a non-blocking stderr warning pointing at `trellis update`.
|
|
67
|
+
- `.trellis/config.yaml` is the project-level Trellis configuration entry point. It hosts task lifecycle hooks (`hooks.after_create` / `after_start` / `after_finish`), journal shape (`session_commit_message` / `max_journal_lines` / `session_auto_commit`), Teamwork teammate guard (`teamwork.teammate_guard.idle_timeout` / `max_live_teammates`), Codex dispatch mode (`codex.dispatch_mode: inline | sub-agent`), and the spec registry block (`registry.spec.source` + `registry.spec.template`).
|
|
68
|
+
- `.trellis/spec/` stores the user's project-specific coding conventions and design constraints. When `registry.spec` is set, files are refreshed by `trellis update`; local edits surface as `modified by user` conflicts in `.trellis/.template-hashes.json`.
|
|
69
|
+
- `.trellis/tasks/` stores task records, planning artifacts, research, and JSONL context. Tasks remain in place after completion or cancellation. Tasks form parent/child trees through `task.py create --parent`, `add-subtask`, `remove-subtask`, and `list-context`.
|
|
70
70
|
- `.trellis/workspace/` stores **deliberately written** developer journals. Raw cross-session dialogue is **not** stored here — it lives on disk under `~/.claude/projects/`, `~/.codex/sessions/`, and `~/.pi/agent/sessions/` and is recovered via `trellis mem search|extract|context`. The bundled `trellis-session-insight` skill teaches when to reach for `mem`.
|
|
71
|
-
- `.trellis/agents/
|
|
72
|
-
- `~/.trellis/
|
|
73
|
-
-
|
|
71
|
+
- `.trellis/agents/teammate.md` is the bundled, platform-agnostic instruction card loaded for a teammate by `trellis teamwork spawn --agent teammate`. Editable; `trellis update` backfills it if missing. Editing the per-platform `trellis-implement.md` / `trellis-check.md` does **not** change Teamwork teammate behavior.
|
|
72
|
+
- `~/.trellis/teamwork/<project>/<session>/events.jsonl` is the Teamwork Session event log. User-owned, file-locked sequence numbering, durable `idempotencyKey` support; never under `.trellis/`.
|
|
73
|
+
- Directories under `packages/cli/src/templates/common/bundled-skills/` are auto-dispatched to platform skill roots by `getBundledSkillTemplates()` in `packages/cli/src/templates/common/index.ts`. Adding a directory there is enough for the shared loader to include it on the next `trellis init` or `trellis update`.
|
|
74
74
|
- Platform settings/config files decide which hooks, agents, skills, commands, prompts, and workflows actually run. Reasonix has no settings file — behavior is encoded inside skill frontmatter.
|
|
75
75
|
- `.trellis/.template-hashes.json` and `.trellis/.runtime/` are management/runtime state files. Confirm necessity before editing them.
|
|
76
76
|
|
|
@@ -79,7 +79,7 @@ Do not assume the user has the Trellis source repository. Do not default to modi
|
|
|
79
79
|
- Do not treat Trellis upstream source code as the default target for local customization.
|
|
80
80
|
- Do not modify the global npm install directory or `node_modules/@pennixrv/trellis` or `node_modules/@pennixrv/trellis-core` to implement project needs; both packages ship in lockstep.
|
|
81
81
|
- Do not overwrite user-modified local files with default templates; check `.trellis/.template-hashes.json` first and prefer `.new` sidecar files over destructive overwrites.
|
|
82
|
-
- Do not put team-private project rules into
|
|
83
|
-
- Do not hand-edit `~/.trellis/
|
|
84
|
-
- Do not edit `.claude/agents/trellis-implement.md` (or any other per-platform sub-agent file) when the goal is to change
|
|
82
|
+
- Do not put team-private project rules into a public bundled skill; put project rules in `.trellis/spec/`, a project-local skill, the current task, or the workspace journal — `trellis update` will overwrite anything inside a bundled skill directory.
|
|
83
|
+
- Do not hand-edit `~/.trellis/teamwork/<project>/<session>/events.jsonl`; sequence numbers are assigned under a file lock and replay-safe writes go through the `trellis teamwork` CLI or the `@pennixrv/trellis-core/teamwork` SDK.
|
|
84
|
+
- Do not edit `.claude/agents/trellis-implement.md` (or any other per-platform sub-agent file) when the goal is to change Teamwork teammate behavior — edit `.trellis/agents/teammate.md` instead.
|
|
85
85
|
- Do not describe removed or never-shipped mechanisms as current Trellis behavior; cross-check against the local `.trellis/config.yaml` and the installed CLI's `trellis --help` before claiming a knob exists.
|
|
@@ -5,7 +5,7 @@ When the user wants to change `trellis-research`, `trellis-implement`, or `trell
|
|
|
5
5
|
## Read These Files First
|
|
6
6
|
|
|
7
7
|
1. Target platform agent directory
|
|
8
|
-
2. `.trellis/workflow.md` Phase
|
|
8
|
+
2. `.trellis/workflow.md` Decision Space Construction and Consolidation Phase / research routing
|
|
9
9
|
3. Current task `prd.md`
|
|
10
10
|
4. Current task `implement.jsonl` / `check.jsonl`
|
|
11
11
|
5. Relevant hook or agent prelude
|
|
@@ -4,10 +4,11 @@ When the user wants to change AI entry points, auto-trigger rules, or explicit c
|
|
|
4
4
|
|
|
5
5
|
Before editing, classify the skill you are about to touch:
|
|
6
6
|
|
|
7
|
-
- **Bundled
|
|
8
|
-
- **
|
|
7
|
+
- **Bundled skill** — any directory under `packages/cli/src/templates/common/bundled-skills/` in the Trellis CLI repo. The shared loader dispatches these skills to platform skill roots on `trellis init` / `trellis update`; local edits are tracked by `.trellis/.template-hashes.json` and flagged on update.
|
|
8
|
+
- **Other Trellis-generated skill** — a single-file workflow skill under `packages/cli/src/templates/common/skills/` or a platform-specific skill under `packages/cli/src/templates/<platform>/skills/`. Edit its source template; deployed files are managed by Trellis.
|
|
9
|
+
- **Project-local or separately installed skill** — a skill not produced by a Trellis template. Trellis does not refresh it; follow the project owner's or installing tool's update process.
|
|
9
10
|
|
|
10
|
-
The remainder of this file uses "skill" for the local file;
|
|
11
|
+
For the source paths and generated layout of each Trellis skill type, see [Bundled Skills](../local-architecture/bundled-skills.md). The remainder of this file uses "skill" for the local file; ownership and update behavior depend on its source.
|
|
11
12
|
|
|
12
13
|
## Read These Files First
|
|
13
14
|
|
|
@@ -20,7 +21,7 @@ The remainder of this file uses "skill" for the local file; the override and con
|
|
|
20
21
|
## Which Entry Type To Choose
|
|
21
22
|
|
|
22
23
|
| Goal | Recommendation |
|
|
23
|
-
|
|
|
24
|
+
| ------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
24
25
|
| AI should automatically know a capability | Add or modify a skill. |
|
|
25
26
|
| User wants to trigger manually with a command | Add or modify a command/prompt/workflow. |
|
|
26
27
|
| Team project conventions | Prefer `.trellis/spec/` or a project-local skill — never a bundled skill directory. |
|
|
@@ -50,15 +51,15 @@ Do not write vague descriptions such as "helpful project skill"; they can trigge
|
|
|
50
51
|
|
|
51
52
|
### Bundled vs. Project-Local
|
|
52
53
|
|
|
53
|
-
|
|
54
|
+
Bundled and project-local skills can share a similar on-disk layout but have different owners:
|
|
54
55
|
|
|
55
|
-
| Aspect
|
|
56
|
-
|
|
|
56
|
+
| Aspect | Bundled (any directory under `packages/cli/src/templates/common/bundled-skills/`) | Project-local |
|
|
57
|
+
| -------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------ |
|
|
57
58
|
| Source of truth | `packages/cli/src/templates/common/bundled-skills/<name>/` in Trellis CLI repo | Inside the user project itself |
|
|
58
59
|
| Dispatch | Auto-dispatched to every platform skill root by `getBundledSkillTemplates()` (`packages/cli/src/templates/common/index.ts`) on `trellis init` / `trellis update` | Created by the user (or another skill) and never moved |
|
|
59
60
|
| Hash tracking | Every file recorded in `.trellis/.template-hashes.json`; conflict prompt on update | Not tracked |
|
|
60
61
|
| Editing locally | Allowed but will be marked "modified by user" on next update | Free editing |
|
|
61
|
-
| The right way to customize | Add a
|
|
62
|
+
| The right way to customize | Add a _new_ project-local skill with a _different_ name that supplements (or supersedes) the bundled one | Edit the file directly |
|
|
62
63
|
|
|
63
64
|
If the goal is "make my project's AI behave differently when discussing release notes," the answer is almost always a project-local skill, not surgery on `trellis-meta/`.
|
|
64
65
|
|
|
@@ -76,7 +77,7 @@ If a command only repeats workflow rules, prefer making it reference/read `.trel
|
|
|
76
77
|
## Common Paths
|
|
77
78
|
|
|
78
79
|
| Platform | Entry directories |
|
|
79
|
-
|
|
|
80
|
+
| -------------------------- | -------------------------------------------------------------------------------------- |
|
|
80
81
|
| Claude Code | `.claude/skills/`, `.claude/commands/` |
|
|
81
82
|
| Cursor | `.cursor/skills/`, `.cursor/commands/` |
|
|
82
83
|
| OpenCode | `.opencode/skills/`, `.opencode/commands/` |
|
|
@@ -92,7 +93,7 @@ If a command only repeats workflow rules, prefer making it reference/read `.trel
|
|
|
92
93
|
| ZCode | `.zcode/skills/`, `.zcode/commands/` |
|
|
93
94
|
| Kilo / Antigravity / Devin | workflows + skills |
|
|
94
95
|
|
|
95
|
-
|
|
96
|
+
Platforms with a skill root receive the bundled skills discovered by the shared loader on `trellis init` and manage them through `trellis update`; no per-skill platform wiring is required.
|
|
96
97
|
|
|
97
98
|
## Add A Project-Local Skill
|
|
98
99
|
|
|
@@ -105,19 +106,12 @@ If the user wants to document team-private customizations, create a project-loca
|
|
|
105
106
|
|
|
106
107
|
For multi-platform projects, add equivalent versions in each platform skill directory, or use `.agents/skills/` on platforms that support the shared layer (Codex, Gemini CLI).
|
|
107
108
|
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
- `trellis-meta`
|
|
111
|
-
- `trellis-spec-bootstrap`
|
|
112
|
-
- `trellis-session-insight`
|
|
113
|
-
- `trellis-channel`
|
|
114
|
-
|
|
115
|
-
A reused name causes `getBundledSkillTemplates()` to overwrite the project-local copy on the next update. A common convention is to prefix the project name: `acme-trellis-deploy`, `acme-trellis-onboarding`.
|
|
109
|
+
Before choosing a project-local skill name, check `packages/cli/src/templates/common/bundled-skills/`, `packages/cli/src/templates/common/skills/`, and the target platform's `packages/cli/src/templates/<platform>/skills/`; a matching name can target the same path during `trellis init` or `trellis update`. A common convention is to prefix the project name: `acme-trellis-deploy`, `acme-trellis-onboarding`.
|
|
116
110
|
|
|
117
111
|
## Notes
|
|
118
112
|
|
|
119
113
|
- Do not mix every platform's syntax into one file.
|
|
120
114
|
- Do not change only one platform entry point while claiming all platforms are supported.
|
|
121
115
|
- Do not hide long-term engineering conventions inside a command; write them to `.trellis/spec/`.
|
|
122
|
-
- Do not hand-edit files inside
|
|
116
|
+
- Do not hand-edit files inside a bundled skill directory under any `.{platform}/skills/` directory expecting the change to persist — they are refreshed by `trellis update`. Either contribute upstream or add a project-local skill that complements them.
|
|
123
117
|
- After `trellis update` reports a "modified by you" conflict on a bundled skill file, choose **keep** only if you accept maintaining the divergence by hand; otherwise accept the overwrite and re-apply the intent as a project-local skill.
|
|
@@ -6,7 +6,7 @@ When the user wants to change the engineering conventions AI follows, add new sp
|
|
|
6
6
|
|
|
7
7
|
1. `.trellis/config.yaml`
|
|
8
8
|
2. `.trellis/spec/`
|
|
9
|
-
3. `.trellis/workflow.md` planning artifact guidance and Phase
|
|
9
|
+
3. `.trellis/workflow.md` planning artifact guidance in Solution Design and Convergence Phase
|
|
10
10
|
4. Current task `implement.jsonl` / `check.jsonl`
|
|
11
11
|
|
|
12
12
|
## Common Needs
|