@mindfoldhq/trellis 0.4.0 → 0.5.0-beta.10
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/dist/cli/index.js +0 -1
- package/dist/cli/index.js.map +1 -1
- package/dist/commands/init.d.ts +10 -1
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +382 -120
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/update.d.ts +5 -0
- package/dist/commands/update.d.ts.map +1 -1
- package/dist/commands/update.js +178 -61
- package/dist/commands/update.js.map +1 -1
- package/dist/configurators/antigravity.d.ts +3 -4
- package/dist/configurators/antigravity.d.ts.map +1 -1
- package/dist/configurators/antigravity.js +17 -10
- package/dist/configurators/antigravity.js.map +1 -1
- package/dist/configurators/claude.d.ts +5 -28
- package/dist/configurators/claude.d.ts.map +1 -1
- package/dist/configurators/claude.js +30 -51
- package/dist/configurators/claude.js.map +1 -1
- package/dist/configurators/codebuddy.d.ts +6 -7
- package/dist/configurators/codebuddy.d.ts.map +1 -1
- package/dist/configurators/codebuddy.js +23 -51
- package/dist/configurators/codebuddy.js.map +1 -1
- package/dist/configurators/codex.d.ts +3 -6
- package/dist/configurators/codex.d.ts.map +1 -1
- package/dist/configurators/codex.js +29 -12
- package/dist/configurators/codex.js.map +1 -1
- package/dist/configurators/copilot.d.ts +6 -5
- package/dist/configurators/copilot.d.ts.map +1 -1
- package/dist/configurators/copilot.js +42 -13
- package/dist/configurators/copilot.js.map +1 -1
- package/dist/configurators/cursor.d.ts +6 -1
- package/dist/configurators/cursor.d.ts.map +1 -1
- package/dist/configurators/cursor.js +22 -45
- package/dist/configurators/cursor.js.map +1 -1
- package/dist/configurators/droid.d.ts +6 -1
- package/dist/configurators/droid.d.ts.map +1 -1
- package/dist/configurators/droid.js +23 -41
- package/dist/configurators/droid.js.map +1 -1
- package/dist/configurators/gemini.d.ts +8 -4
- package/dist/configurators/gemini.d.ts.map +1 -1
- package/dist/configurators/gemini.js +28 -47
- package/dist/configurators/gemini.js.map +1 -1
- package/dist/configurators/index.d.ts +1 -1
- package/dist/configurators/index.d.ts.map +1 -1
- package/dist/configurators/index.js +146 -100
- package/dist/configurators/index.js.map +1 -1
- package/dist/configurators/kilo.d.ts +3 -4
- package/dist/configurators/kilo.d.ts.map +1 -1
- package/dist/configurators/kilo.js +19 -46
- package/dist/configurators/kilo.js.map +1 -1
- package/dist/configurators/kiro.d.ts +4 -4
- package/dist/configurators/kiro.d.ts.map +1 -1
- package/dist/configurators/kiro.js +18 -14
- package/dist/configurators/kiro.js.map +1 -1
- package/dist/configurators/opencode.d.ts +7 -25
- package/dist/configurators/opencode.d.ts.map +1 -1
- package/dist/configurators/opencode.js +57 -56
- package/dist/configurators/opencode.js.map +1 -1
- package/dist/configurators/qoder.d.ts +6 -3
- package/dist/configurators/qoder.d.ts.map +1 -1
- package/dist/configurators/qoder.js +27 -46
- package/dist/configurators/qoder.js.map +1 -1
- package/dist/configurators/shared.d.ts +68 -3
- package/dist/configurators/shared.d.ts.map +1 -1
- package/dist/configurators/shared.js +274 -3
- package/dist/configurators/shared.js.map +1 -1
- package/dist/configurators/windsurf.d.ts +3 -4
- package/dist/configurators/windsurf.d.ts.map +1 -1
- package/dist/configurators/windsurf.js +17 -10
- package/dist/configurators/windsurf.js.map +1 -1
- package/dist/configurators/workflow.d.ts +0 -3
- package/dist/configurators/workflow.d.ts.map +1 -1
- package/dist/configurators/workflow.js +1 -7
- package/dist/configurators/workflow.js.map +1 -1
- package/dist/migrations/manifests/0.4.0.json +1 -1
- package/dist/migrations/manifests/0.5.0-beta.0.json +1646 -0
- package/dist/migrations/manifests/0.5.0-beta.1.json +9 -0
- package/dist/migrations/manifests/0.5.0-beta.2.json +9 -0
- package/dist/migrations/manifests/0.5.0-beta.3.json +9 -0
- package/dist/migrations/manifests/0.5.0-beta.4.json +9 -0
- package/dist/migrations/manifests/0.5.0-beta.5.json +222 -0
- package/dist/migrations/manifests/0.5.0-beta.6.json +9 -0
- package/dist/migrations/manifests/0.5.0-beta.7.json +9 -0
- package/dist/migrations/manifests/0.5.0-beta.8.json +9 -0
- package/dist/migrations/manifests/0.5.0-beta.9.json +48 -0
- package/dist/templates/claude/agents/{check.md → trellis-check.md} +3 -31
- package/dist/templates/claude/agents/{implement.md → trellis-implement.md} +1 -2
- package/dist/templates/claude/agents/trellis-research.md +137 -0
- package/dist/templates/claude/index.d.ts +5 -37
- package/dist/templates/claude/index.d.ts.map +1 -1
- package/dist/templates/claude/index.js +3 -42
- package/dist/templates/claude/index.js.map +1 -1
- package/dist/templates/claude/settings.json +6 -4
- package/dist/templates/{iflow/agents/check.md → codebuddy/agents/trellis-check.md} +3 -31
- package/dist/templates/{iflow/agents/implement.md → codebuddy/agents/trellis-implement.md} +1 -2
- package/dist/templates/codebuddy/agents/trellis-research.md +137 -0
- package/dist/templates/codebuddy/index.d.ts +6 -16
- package/dist/templates/codebuddy/index.d.ts.map +1 -1
- package/dist/templates/codebuddy/index.js +6 -36
- package/dist/templates/codebuddy/index.js.map +1 -1
- package/dist/templates/codebuddy/settings.json +59 -0
- package/dist/templates/codex/agents/trellis-check.toml +38 -0
- package/dist/templates/codex/agents/{implement.toml → trellis-implement.toml} +1 -1
- package/dist/templates/codex/agents/trellis-research.toml +60 -0
- package/dist/templates/codex/config.toml +10 -0
- package/dist/templates/codex/hooks/session-start.py +65 -29
- package/dist/templates/codex/hooks.json +11 -0
- package/dist/templates/codex/index.d.ts +0 -1
- package/dist/templates/codex/index.d.ts.map +1 -1
- package/dist/templates/codex/index.js +1 -8
- package/dist/templates/codex/index.js.map +1 -1
- package/dist/templates/codex/skills/start/SKILL.md +1 -1
- package/dist/templates/common/commands/continue.md +51 -0
- package/dist/templates/common/commands/finish-work.md +32 -0
- package/dist/templates/common/commands/start.md +56 -0
- package/dist/templates/common/index.d.ts +28 -0
- package/dist/templates/common/index.d.ts.map +1 -0
- package/dist/templates/common/index.js +55 -0
- package/dist/templates/common/index.js.map +1 -0
- package/dist/templates/{droid/commands/trellis → common/skills}/brainstorm.md +51 -12
- package/dist/templates/{iflow/commands/trellis → common/skills}/break-loop.md +4 -4
- package/dist/templates/common/skills/check.md +87 -0
- package/dist/templates/{codebuddy/commands/trellis → common/skills}/update-spec.md +18 -21
- package/dist/templates/copilot/hooks/session-start.py +65 -29
- package/dist/templates/copilot/hooks.json +8 -0
- package/dist/templates/copilot/prompts/start.prompt.md +13 -16
- package/dist/templates/cursor/agents/trellis-check.md +94 -0
- package/dist/templates/cursor/agents/trellis-implement.md +94 -0
- package/dist/templates/cursor/agents/trellis-research.md +137 -0
- package/dist/templates/cursor/hooks.json +24 -0
- package/dist/templates/cursor/index.d.ts +6 -17
- package/dist/templates/cursor/index.d.ts.map +1 -1
- package/dist/templates/cursor/index.js +6 -37
- package/dist/templates/cursor/index.js.map +1 -1
- package/dist/templates/droid/droids/trellis-check.md +94 -0
- package/dist/templates/droid/droids/trellis-implement.md +94 -0
- package/dist/templates/droid/droids/trellis-research.md +137 -0
- package/dist/templates/droid/index.d.ts +7 -19
- package/dist/templates/droid/index.d.ts.map +1 -1
- package/dist/templates/droid/index.js +7 -39
- package/dist/templates/droid/index.js.map +1 -1
- package/dist/templates/droid/settings.json +59 -0
- package/dist/templates/extract.d.ts +7 -193
- package/dist/templates/extract.d.ts.map +1 -1
- package/dist/templates/extract.js +7 -310
- package/dist/templates/extract.js.map +1 -1
- package/dist/templates/gemini/agents/trellis-check.md +94 -0
- package/dist/templates/gemini/agents/trellis-implement.md +94 -0
- package/dist/templates/gemini/agents/trellis-research.md +137 -0
- package/dist/templates/gemini/index.d.ts +6 -14
- package/dist/templates/gemini/index.d.ts.map +1 -1
- package/dist/templates/gemini/index.js +6 -37
- package/dist/templates/gemini/index.js.map +1 -1
- package/dist/templates/gemini/settings.json +28 -0
- package/dist/templates/kiro/agents/trellis-check.json +13 -0
- package/dist/templates/kiro/agents/trellis-implement.json +13 -0
- package/dist/templates/kiro/agents/trellis-research.json +21 -0
- package/dist/templates/kiro/index.d.ts +11 -11
- package/dist/templates/kiro/index.d.ts.map +1 -1
- package/dist/templates/kiro/index.js +11 -33
- package/dist/templates/kiro/index.js.map +1 -1
- package/dist/templates/opencode/agents/{check.md → trellis-check.md} +3 -30
- package/dist/templates/opencode/agents/{implement.md → trellis-implement.md} +1 -1
- package/dist/templates/opencode/agents/{research.md → trellis-research.md} +1 -2
- package/dist/templates/opencode/plugins/inject-subagent-context.js +18 -190
- package/dist/templates/opencode/plugins/inject-workflow-state.js +172 -0
- package/dist/templates/opencode/plugins/session-start.js +76 -39
- package/dist/templates/qoder/agents/trellis-check.md +94 -0
- package/dist/templates/qoder/agents/trellis-implement.md +94 -0
- package/dist/templates/qoder/agents/trellis-research.md +137 -0
- package/dist/templates/qoder/index.d.ts +7 -10
- package/dist/templates/qoder/index.d.ts.map +1 -1
- package/dist/templates/qoder/index.js +7 -32
- package/dist/templates/qoder/index.js.map +1 -1
- package/dist/templates/qoder/settings.json +47 -0
- package/dist/templates/shared-hooks/index.d.ts +19 -0
- package/dist/templates/shared-hooks/index.d.ts.map +1 -0
- package/dist/templates/shared-hooks/index.js +30 -0
- package/dist/templates/shared-hooks/index.js.map +1 -0
- package/dist/templates/{iflow/hooks → shared-hooks}/inject-subagent-context.py +77 -266
- package/dist/templates/shared-hooks/inject-workflow-state.py +244 -0
- package/dist/templates/{claude/hooks → shared-hooks}/session-start.py +172 -55
- package/dist/templates/template-utils.d.ts +26 -0
- package/dist/templates/template-utils.d.ts.map +1 -0
- package/dist/templates/template-utils.js +60 -0
- package/dist/templates/template-utils.js.map +1 -0
- package/dist/templates/trellis/config.yaml +6 -0
- package/dist/templates/trellis/index.d.ts +1 -15
- package/dist/templates/trellis/index.d.ts.map +1 -1
- package/dist/templates/trellis/index.js +2 -29
- package/dist/templates/trellis/index.js.map +1 -1
- package/dist/templates/trellis/scripts/common/cli_adapter.py +31 -8
- package/dist/templates/trellis/scripts/common/config.py +126 -1
- package/dist/templates/trellis/scripts/common/git_context.py +25 -2
- package/dist/templates/trellis/scripts/common/task_context.py +23 -28
- package/dist/templates/trellis/scripts/common/task_store.py +0 -12
- package/dist/templates/trellis/scripts/common/types.py +0 -2
- package/dist/templates/trellis/scripts/common/workflow_phase.py +176 -0
- package/dist/templates/trellis/scripts/task.py +13 -35
- package/dist/templates/trellis/workflow.md +283 -298
- package/dist/types/ai-tools.d.ts +30 -3
- package/dist/types/ai-tools.d.ts.map +1 -1
- package/dist/types/ai-tools.js +119 -15
- package/dist/types/ai-tools.js.map +1 -1
- package/dist/types/migration.d.ts +8 -1
- package/dist/types/migration.d.ts.map +1 -1
- package/dist/utils/project-detector.d.ts +2 -0
- package/dist/utils/project-detector.d.ts.map +1 -1
- package/dist/utils/project-detector.js +120 -11
- package/dist/utils/project-detector.js.map +1 -1
- package/dist/utils/task-json.d.ts +46 -0
- package/dist/utils/task-json.d.ts.map +1 -0
- package/dist/utils/task-json.js +49 -0
- package/dist/utils/task-json.js.map +1 -0
- package/package.json +3 -2
- package/dist/configurators/iflow.d.ts +0 -33
- package/dist/configurators/iflow.d.ts.map +0 -1
- package/dist/configurators/iflow.js +0 -99
- package/dist/configurators/iflow.js.map +0 -1
- package/dist/templates/antigravity/index.d.ts +0 -12
- package/dist/templates/antigravity/index.d.ts.map +0 -1
- package/dist/templates/antigravity/index.js +0 -29
- package/dist/templates/antigravity/index.js.map +0 -1
- package/dist/templates/claude/agents/debug.md +0 -106
- package/dist/templates/claude/agents/dispatch.md +0 -213
- package/dist/templates/claude/agents/plan.md +0 -396
- package/dist/templates/claude/agents/research.md +0 -120
- package/dist/templates/claude/commands/trellis/brainstorm.md +0 -487
- package/dist/templates/claude/commands/trellis/break-loop.md +0 -125
- package/dist/templates/claude/commands/trellis/check-cross-layer.md +0 -153
- package/dist/templates/claude/commands/trellis/check.md +0 -25
- package/dist/templates/claude/commands/trellis/create-command.md +0 -154
- package/dist/templates/claude/commands/trellis/finish-work.md +0 -153
- package/dist/templates/claude/commands/trellis/integrate-skill.md +0 -219
- package/dist/templates/claude/commands/trellis/onboard.md +0 -358
- package/dist/templates/claude/commands/trellis/parallel.md +0 -192
- package/dist/templates/claude/commands/trellis/record-session.md +0 -62
- package/dist/templates/claude/commands/trellis/start.md +0 -393
- package/dist/templates/claude/commands/trellis/update-spec.md +0 -354
- package/dist/templates/claude/hooks/inject-subagent-context.py +0 -803
- package/dist/templates/claude/hooks/ralph-loop.py +0 -396
- package/dist/templates/codebuddy/commands/trellis/before-dev.md +0 -29
- package/dist/templates/codebuddy/commands/trellis/brainstorm.md +0 -487
- package/dist/templates/codebuddy/commands/trellis/break-loop.md +0 -107
- package/dist/templates/codebuddy/commands/trellis/check-cross-layer.md +0 -153
- package/dist/templates/codebuddy/commands/trellis/check.md +0 -25
- package/dist/templates/codebuddy/commands/trellis/create-command.md +0 -154
- package/dist/templates/codebuddy/commands/trellis/finish-work.md +0 -143
- package/dist/templates/codebuddy/commands/trellis/integrate-skill.md +0 -219
- package/dist/templates/codebuddy/commands/trellis/onboard.md +0 -358
- package/dist/templates/codebuddy/commands/trellis/record-session.md +0 -61
- package/dist/templates/codebuddy/commands/trellis/start.md +0 -373
- package/dist/templates/codex/agents/check.toml +0 -23
- package/dist/templates/codex/agents/research.toml +0 -26
- package/dist/templates/codex/codex-skills/parallel/SKILL.md +0 -194
- package/dist/templates/cursor/commands/trellis-before-dev.md +0 -29
- package/dist/templates/cursor/commands/trellis-brainstorm.md +0 -487
- package/dist/templates/cursor/commands/trellis-break-loop.md +0 -107
- package/dist/templates/cursor/commands/trellis-check-cross-layer.md +0 -153
- package/dist/templates/cursor/commands/trellis-check.md +0 -25
- package/dist/templates/cursor/commands/trellis-create-command.md +0 -154
- package/dist/templates/cursor/commands/trellis-finish-work.md +0 -143
- package/dist/templates/cursor/commands/trellis-integrate-skill.md +0 -219
- package/dist/templates/cursor/commands/trellis-onboard.md +0 -358
- package/dist/templates/cursor/commands/trellis-record-session.md +0 -62
- package/dist/templates/cursor/commands/trellis-start.md +0 -373
- package/dist/templates/cursor/commands/trellis-update-spec.md +0 -354
- package/dist/templates/droid/commands/trellis/before-dev.md +0 -33
- package/dist/templates/droid/commands/trellis/break-loop.md +0 -111
- package/dist/templates/droid/commands/trellis/check-cross-layer.md +0 -157
- package/dist/templates/droid/commands/trellis/check.md +0 -29
- package/dist/templates/droid/commands/trellis/create-command.md +0 -158
- package/dist/templates/droid/commands/trellis/finish-work.md +0 -147
- package/dist/templates/droid/commands/trellis/integrate-skill.md +0 -223
- package/dist/templates/droid/commands/trellis/onboard.md +0 -362
- package/dist/templates/droid/commands/trellis/record-session.md +0 -66
- package/dist/templates/droid/commands/trellis/start.md +0 -377
- package/dist/templates/droid/commands/trellis/update-spec.md +0 -358
- package/dist/templates/gemini/commands/trellis/before-dev.toml +0 -33
- package/dist/templates/gemini/commands/trellis/brainstorm.toml +0 -435
- package/dist/templates/gemini/commands/trellis/break-loop.toml +0 -129
- package/dist/templates/gemini/commands/trellis/check-cross-layer.toml +0 -147
- package/dist/templates/gemini/commands/trellis/check.toml +0 -29
- package/dist/templates/gemini/commands/trellis/create-command.toml +0 -119
- package/dist/templates/gemini/commands/trellis/finish-work.toml +0 -133
- package/dist/templates/gemini/commands/trellis/integrate-skill.toml +0 -104
- package/dist/templates/gemini/commands/trellis/onboard.toml +0 -111
- package/dist/templates/gemini/commands/trellis/record-session.toml +0 -66
- package/dist/templates/gemini/commands/trellis/start.toml +0 -354
- package/dist/templates/gemini/commands/trellis/update-spec.toml +0 -132
- package/dist/templates/iflow/agents/debug.md +0 -106
- package/dist/templates/iflow/agents/dispatch.md +0 -213
- package/dist/templates/iflow/agents/plan.md +0 -396
- package/dist/templates/iflow/agents/research.md +0 -120
- package/dist/templates/iflow/commands/trellis/before-dev.md +0 -29
- package/dist/templates/iflow/commands/trellis/brainstorm.md +0 -487
- package/dist/templates/iflow/commands/trellis/check-cross-layer.md +0 -153
- package/dist/templates/iflow/commands/trellis/check.md +0 -25
- package/dist/templates/iflow/commands/trellis/create-command.md +0 -152
- package/dist/templates/iflow/commands/trellis/finish-work.md +0 -153
- package/dist/templates/iflow/commands/trellis/integrate-skill.md +0 -219
- package/dist/templates/iflow/commands/trellis/onboard.md +0 -358
- package/dist/templates/iflow/commands/trellis/parallel.md +0 -192
- package/dist/templates/iflow/commands/trellis/record-session.md +0 -62
- package/dist/templates/iflow/commands/trellis/start.md +0 -393
- package/dist/templates/iflow/commands/trellis/update-spec.md +0 -354
- package/dist/templates/iflow/hooks/ralph-loop.py +0 -395
- package/dist/templates/iflow/hooks/session-start.py +0 -403
- package/dist/templates/iflow/index.d.ts +0 -54
- package/dist/templates/iflow/index.d.ts.map +0 -1
- package/dist/templates/iflow/index.js +0 -85
- package/dist/templates/iflow/index.js.map +0 -1
- package/dist/templates/iflow/settings.json +0 -60
- package/dist/templates/kilo/index.d.ts +0 -16
- package/dist/templates/kilo/index.d.ts.map +0 -1
- package/dist/templates/kilo/index.js +0 -39
- package/dist/templates/kilo/index.js.map +0 -1
- package/dist/templates/kilo/workflows/before-dev.md +0 -29
- package/dist/templates/kilo/workflows/brainstorm.md +0 -487
- package/dist/templates/kilo/workflows/break-loop.md +0 -125
- package/dist/templates/kilo/workflows/check-cross-layer.md +0 -153
- package/dist/templates/kilo/workflows/check.md +0 -25
- package/dist/templates/kilo/workflows/create-command.md +0 -152
- package/dist/templates/kilo/workflows/finish-work.md +0 -129
- package/dist/templates/kilo/workflows/integrate-skill.md +0 -219
- package/dist/templates/kilo/workflows/onboard.md +0 -358
- package/dist/templates/kilo/workflows/parallel.md +0 -193
- package/dist/templates/kilo/workflows/record-session.md +0 -62
- package/dist/templates/kilo/workflows/start.md +0 -387
- package/dist/templates/kilo/workflows/update-spec.md +0 -285
- package/dist/templates/kiro/skills/before-dev/SKILL.md +0 -34
- package/dist/templates/kiro/skills/brainstorm/SKILL.md +0 -492
- package/dist/templates/kiro/skills/break-loop/SKILL.md +0 -130
- package/dist/templates/kiro/skills/check/SKILL.md +0 -30
- package/dist/templates/kiro/skills/check-cross-layer/SKILL.md +0 -158
- package/dist/templates/kiro/skills/create-command/SKILL.md +0 -101
- package/dist/templates/kiro/skills/finish-work/SKILL.md +0 -148
- package/dist/templates/kiro/skills/integrate-skill/SKILL.md +0 -221
- package/dist/templates/kiro/skills/onboard/SKILL.md +0 -363
- package/dist/templates/kiro/skills/record-session/SKILL.md +0 -67
- package/dist/templates/kiro/skills/start/SKILL.md +0 -351
- package/dist/templates/kiro/skills/update-spec/SKILL.md +0 -335
- package/dist/templates/markdown/spec/backend/directory-structure.md +0 -292
- package/dist/templates/markdown/spec/backend/index.md +0 -40
- package/dist/templates/markdown/spec/backend/script-conventions.md +0 -742
- package/dist/templates/markdown/spec/guides/code-reuse-thinking-guide.md +0 -118
- package/dist/templates/markdown/spec/guides/cross-platform-thinking-guide.md +0 -394
- package/dist/templates/opencode/agents/debug.md +0 -129
- package/dist/templates/opencode/agents/dispatch.md +0 -223
- package/dist/templates/opencode/agents/trellis-plan.md +0 -427
- package/dist/templates/opencode/commands/trellis/before-dev.md +0 -29
- package/dist/templates/opencode/commands/trellis/brainstorm.md +0 -487
- package/dist/templates/opencode/commands/trellis/break-loop.md +0 -125
- package/dist/templates/opencode/commands/trellis/check-cross-layer.md +0 -153
- package/dist/templates/opencode/commands/trellis/check.md +0 -25
- package/dist/templates/opencode/commands/trellis/create-command.md +0 -154
- package/dist/templates/opencode/commands/trellis/finish-work.md +0 -144
- package/dist/templates/opencode/commands/trellis/integrate-skill.md +0 -219
- package/dist/templates/opencode/commands/trellis/migrate-specs.md +0 -0
- package/dist/templates/opencode/commands/trellis/onboard.md +0 -358
- package/dist/templates/opencode/commands/trellis/parallel.md +0 -193
- package/dist/templates/opencode/commands/trellis/record-session.md +0 -62
- package/dist/templates/opencode/commands/trellis/start.md +0 -351
- package/dist/templates/opencode/commands/trellis/update-spec.md +0 -354
- package/dist/templates/qoder/skills/before-dev/SKILL.md +0 -34
- package/dist/templates/qoder/skills/brainstorm/SKILL.md +0 -492
- package/dist/templates/qoder/skills/break-loop/SKILL.md +0 -130
- package/dist/templates/qoder/skills/check/SKILL.md +0 -30
- package/dist/templates/qoder/skills/check-cross-layer/SKILL.md +0 -158
- package/dist/templates/qoder/skills/create-command/SKILL.md +0 -101
- package/dist/templates/qoder/skills/finish-work/SKILL.md +0 -134
- package/dist/templates/qoder/skills/integrate-skill/SKILL.md +0 -221
- package/dist/templates/qoder/skills/onboard/SKILL.md +0 -363
- package/dist/templates/qoder/skills/record-session/SKILL.md +0 -67
- package/dist/templates/qoder/skills/start/SKILL.md +0 -388
- package/dist/templates/qoder/skills/update-spec/SKILL.md +0 -290
- package/dist/templates/trellis/scripts/common/phase.py +0 -254
- package/dist/templates/trellis/scripts/common/registry.py +0 -335
- package/dist/templates/trellis/scripts/common/worktree.py +0 -305
- package/dist/templates/trellis/scripts/create_bootstrap.py +0 -298
- package/dist/templates/trellis/scripts/multi_agent/__init__.py +0 -5
- package/dist/templates/trellis/scripts/multi_agent/_bootstrap.py +0 -17
- package/dist/templates/trellis/scripts/multi_agent/cleanup.py +0 -398
- package/dist/templates/trellis/scripts/multi_agent/create_pr.py +0 -620
- package/dist/templates/trellis/scripts/multi_agent/plan.py +0 -213
- package/dist/templates/trellis/scripts/multi_agent/start.py +0 -539
- package/dist/templates/trellis/scripts/multi_agent/status.py +0 -76
- package/dist/templates/trellis/scripts/multi_agent/status_display.py +0 -542
- package/dist/templates/trellis/scripts/multi_agent/status_monitor.py +0 -225
- package/dist/templates/trellis/scripts-shell-archive/add-session.sh +0 -384
- package/dist/templates/trellis/scripts-shell-archive/common/developer.sh +0 -129
- package/dist/templates/trellis/scripts-shell-archive/common/git-context.sh +0 -263
- package/dist/templates/trellis/scripts-shell-archive/common/paths.sh +0 -208
- package/dist/templates/trellis/scripts-shell-archive/common/phase.sh +0 -150
- package/dist/templates/trellis/scripts-shell-archive/common/registry.sh +0 -247
- package/dist/templates/trellis/scripts-shell-archive/common/task-queue.sh +0 -142
- package/dist/templates/trellis/scripts-shell-archive/common/task-utils.sh +0 -151
- package/dist/templates/trellis/scripts-shell-archive/common/worktree.sh +0 -128
- package/dist/templates/trellis/scripts-shell-archive/create-bootstrap.sh +0 -299
- package/dist/templates/trellis/scripts-shell-archive/get-context.sh +0 -7
- package/dist/templates/trellis/scripts-shell-archive/get-developer.sh +0 -15
- package/dist/templates/trellis/scripts-shell-archive/init-developer.sh +0 -34
- package/dist/templates/trellis/scripts-shell-archive/multi-agent/cleanup.sh +0 -396
- package/dist/templates/trellis/scripts-shell-archive/multi-agent/create-pr.sh +0 -241
- package/dist/templates/trellis/scripts-shell-archive/multi-agent/plan.sh +0 -207
- package/dist/templates/trellis/scripts-shell-archive/multi-agent/start.sh +0 -317
- package/dist/templates/trellis/scripts-shell-archive/multi-agent/status.sh +0 -828
- package/dist/templates/trellis/scripts-shell-archive/task.sh +0 -1204
- package/dist/templates/trellis/worktree.yaml +0 -47
- package/dist/templates/windsurf/index.d.ts +0 -21
- package/dist/templates/windsurf/index.d.ts.map +0 -1
- package/dist/templates/windsurf/index.js +0 -44
- package/dist/templates/windsurf/index.js.map +0 -1
- package/dist/templates/windsurf/workflows/trellis-before-dev.md +0 -31
- package/dist/templates/windsurf/workflows/trellis-brainstorm.md +0 -491
- package/dist/templates/windsurf/workflows/trellis-break-loop.md +0 -111
- package/dist/templates/windsurf/workflows/trellis-check-cross-layer.md +0 -157
- package/dist/templates/windsurf/workflows/trellis-check.md +0 -27
- package/dist/templates/windsurf/workflows/trellis-create-command.md +0 -154
- package/dist/templates/windsurf/workflows/trellis-finish-work.md +0 -147
- package/dist/templates/windsurf/workflows/trellis-integrate-skill.md +0 -220
- package/dist/templates/windsurf/workflows/trellis-onboard.md +0 -362
- package/dist/templates/windsurf/workflows/trellis-record-session.md +0 -66
- package/dist/templates/windsurf/workflows/trellis-start.md +0 -373
- package/dist/templates/windsurf/workflows/trellis-update-spec.md +0 -358
- /package/dist/templates/{claude/commands/trellis → common/skills}/before-dev.md +0 -0
- /package/dist/templates/{claude/hooks → shared-hooks}/statusline.py +0 -0
|
@@ -125,30 +125,48 @@ def _get_task_status(trellis_dir: Path) -> str:
|
|
|
125
125
|
return f"Status: READY\nTask: {task_title}\nNext: Continue with implement or check"
|
|
126
126
|
|
|
127
127
|
|
|
128
|
-
def
|
|
129
|
-
"""
|
|
128
|
+
def _extract_range(content: str, start_header: str, end_header: str) -> str:
|
|
129
|
+
"""Extract lines starting at `## start_header` up to (but excluding) `## end_header`."""
|
|
130
|
+
lines = content.splitlines()
|
|
131
|
+
start: "int | None" = None
|
|
132
|
+
end: int = len(lines)
|
|
133
|
+
start_match = f"## {start_header}"
|
|
134
|
+
end_match = f"## {end_header}"
|
|
135
|
+
for i, line in enumerate(lines):
|
|
136
|
+
stripped = line.strip()
|
|
137
|
+
if start is None and stripped == start_match:
|
|
138
|
+
start = i
|
|
139
|
+
continue
|
|
140
|
+
if start is not None and stripped == end_match:
|
|
141
|
+
end = i
|
|
142
|
+
break
|
|
143
|
+
if start is None:
|
|
144
|
+
return ""
|
|
145
|
+
return "\n".join(lines[start:end]).rstrip()
|
|
130
146
|
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
"""
|
|
147
|
+
|
|
148
|
+
def _build_workflow_toc(workflow_path: Path) -> str:
|
|
149
|
+
"""Inject workflow guide: TOC + Phase Index + Phase 1/2/3 step details."""
|
|
134
150
|
content = read_file(workflow_path)
|
|
135
151
|
if not content:
|
|
136
152
|
return "No workflow.md found"
|
|
137
153
|
|
|
138
|
-
|
|
154
|
+
out_lines = [
|
|
139
155
|
"# Development Workflow — Section Index",
|
|
140
156
|
"Full guide: .trellis/workflow.md (read on demand)",
|
|
141
157
|
"",
|
|
158
|
+
"## Table of Contents",
|
|
142
159
|
]
|
|
143
160
|
for line in content.splitlines():
|
|
144
161
|
if line.startswith("## "):
|
|
145
|
-
|
|
162
|
+
out_lines.append(line)
|
|
163
|
+
out_lines += ["", "---", ""]
|
|
146
164
|
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
return "\n".join(
|
|
165
|
+
phases = _extract_range(content, "Phase Index", "Workflow State Breadcrumbs")
|
|
166
|
+
if phases:
|
|
167
|
+
out_lines.append(phases)
|
|
168
|
+
|
|
169
|
+
return "\n".join(out_lines).rstrip()
|
|
152
170
|
|
|
153
171
|
|
|
154
172
|
def main() -> None:
|
|
@@ -183,38 +201,56 @@ Read and follow all instructions below carefully.
|
|
|
183
201
|
output.write("\n</workflow>\n\n")
|
|
184
202
|
|
|
185
203
|
output.write("<guidelines>\n")
|
|
186
|
-
output.write(
|
|
187
|
-
|
|
188
|
-
|
|
204
|
+
output.write(
|
|
205
|
+
"Project spec indexes are listed by path below. Each index contains a "
|
|
206
|
+
"**Pre-Development Checklist** listing the specific guideline files to "
|
|
207
|
+
"read before coding.\n\n"
|
|
208
|
+
"- If you're spawning an implement/check sub-agent, context is injected "
|
|
209
|
+
"automatically via `{task}/implement.jsonl` / `check.jsonl`. You do NOT "
|
|
210
|
+
"need to read these indexes yourself.\n"
|
|
211
|
+
"- If you're editing code directly in the main session, Read the relevant "
|
|
212
|
+
"index(es) on-demand and follow their Pre-Dev Checklist.\n\n"
|
|
213
|
+
)
|
|
214
|
+
|
|
215
|
+
# guides/ inlined (cross-package thinking, broadly useful)
|
|
216
|
+
guides_index = trellis_dir / "spec" / "guides" / "index.md"
|
|
217
|
+
if guides_index.is_file():
|
|
218
|
+
output.write("## guides (inlined — cross-package thinking guides)\n")
|
|
219
|
+
output.write(read_file(guides_index))
|
|
220
|
+
output.write("\n\n")
|
|
221
|
+
|
|
222
|
+
# Other indexes — paths only
|
|
223
|
+
paths: list[str] = []
|
|
189
224
|
spec_dir = trellis_dir / "spec"
|
|
190
225
|
if spec_dir.is_dir():
|
|
191
226
|
for sub in sorted(spec_dir.iterdir()):
|
|
192
227
|
if not sub.is_dir() or sub.name.startswith("."):
|
|
193
228
|
continue
|
|
194
|
-
|
|
195
229
|
if sub.name == "guides":
|
|
196
|
-
index_file = sub / "index.md"
|
|
197
|
-
if index_file.is_file():
|
|
198
|
-
output.write(f"## {sub.name}\n")
|
|
199
|
-
output.write(read_file(index_file))
|
|
200
|
-
output.write("\n\n")
|
|
201
230
|
continue
|
|
202
|
-
|
|
203
231
|
index_file = sub / "index.md"
|
|
204
232
|
if index_file.is_file():
|
|
205
|
-
|
|
206
|
-
output.write(read_file(index_file))
|
|
207
|
-
output.write("\n\n")
|
|
233
|
+
paths.append(f".trellis/spec/{sub.name}/index.md")
|
|
208
234
|
else:
|
|
209
235
|
for nested in sorted(sub.iterdir()):
|
|
210
236
|
if not nested.is_dir():
|
|
211
237
|
continue
|
|
212
238
|
nested_index = nested / "index.md"
|
|
213
239
|
if nested_index.is_file():
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
240
|
+
paths.append(
|
|
241
|
+
f".trellis/spec/{sub.name}/{nested.name}/index.md"
|
|
242
|
+
)
|
|
243
|
+
|
|
244
|
+
if paths:
|
|
245
|
+
output.write("## Available spec indexes (read on demand)\n")
|
|
246
|
+
for p in paths:
|
|
247
|
+
output.write(f"- {p}\n")
|
|
248
|
+
output.write("\n")
|
|
249
|
+
|
|
250
|
+
output.write(
|
|
251
|
+
"Discover more via: "
|
|
252
|
+
"`python3 ./.trellis/scripts/get_context.py --mode packages`\n"
|
|
253
|
+
)
|
|
218
254
|
output.write("</guidelines>\n\n")
|
|
219
255
|
|
|
220
256
|
task_status = _get_task_status(trellis_dir)
|
|
@@ -24,7 +24,6 @@ export interface ConfigTemplate {
|
|
|
24
24
|
targetPath: string;
|
|
25
25
|
content: string;
|
|
26
26
|
}
|
|
27
|
-
export declare function getAllSkills(): SkillTemplate[];
|
|
28
27
|
export declare function getAllAgents(): AgentTemplate[];
|
|
29
28
|
/**
|
|
30
29
|
* Get Codex-specific skills (installed to .codex/skills/, not shared .agents/skills/).
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/templates/codex/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAgCH,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,cAAc;IAC7B,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;CACjB;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/templates/codex/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAgCH,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,cAAc;IAC7B,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;CACjB;AAID,wBAAgB,YAAY,IAAI,aAAa,EAAE,CAc9C;AAED;;GAEG;AACH,wBAAgB,iBAAiB,IAAI,aAAa,EAAE,CASnD;AAED,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,wBAAgB,WAAW,IAAI,YAAY,EAAE,CAW5C;AAED,wBAAgB,cAAc,IAAI,MAAM,CAEvC;AAED,wBAAgB,iBAAiB,IAAI,cAAc,CAKlD"}
|
|
@@ -39,14 +39,7 @@ function listFiles(dir) {
|
|
|
39
39
|
return [];
|
|
40
40
|
}
|
|
41
41
|
}
|
|
42
|
-
|
|
43
|
-
const skills = [];
|
|
44
|
-
for (const name of listDirectories("skills")) {
|
|
45
|
-
const content = readTemplate(`skills/${name}/SKILL.md`);
|
|
46
|
-
skills.push({ name, content });
|
|
47
|
-
}
|
|
48
|
-
return skills;
|
|
49
|
-
}
|
|
42
|
+
// Shared skills are now sourced from common/ templates (see templates/common/index.ts)
|
|
50
43
|
export function getAllAgents() {
|
|
51
44
|
const agents = [];
|
|
52
45
|
for (const file of listFiles("agents")) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/templates/codex/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACpD,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAEzC,MAAM,UAAU,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAClD,MAAM,SAAS,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;AAEtC,SAAS,YAAY,CAAC,YAAoB;IACxC,OAAO,YAAY,CAAC,IAAI,CAAC,SAAS,EAAE,YAAY,CAAC,EAAE,OAAO,CAAC,CAAC;AAC9D,CAAC;AAED,SAAS,eAAe,CAAC,GAAW;IAClC,IAAI,CAAC;QACH,OAAO,WAAW,CAAC,IAAI,CAAC,SAAS,EAAE,GAAG,CAAC,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC;aAC9D,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC;aACtC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC;aAC1B,IAAI,EAAE,CAAC;IACZ,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC;AAED,SAAS,SAAS,CAAC,GAAW;IAC5B,IAAI,CAAC;QACH,OAAO,WAAW,CAAC,IAAI,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IAClD,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC;AAiBD,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/templates/codex/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACpD,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAEzC,MAAM,UAAU,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAClD,MAAM,SAAS,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;AAEtC,SAAS,YAAY,CAAC,YAAoB;IACxC,OAAO,YAAY,CAAC,IAAI,CAAC,SAAS,EAAE,YAAY,CAAC,EAAE,OAAO,CAAC,CAAC;AAC9D,CAAC;AAED,SAAS,eAAe,CAAC,GAAW;IAClC,IAAI,CAAC;QACH,OAAO,WAAW,CAAC,IAAI,CAAC,SAAS,EAAE,GAAG,CAAC,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC;aAC9D,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC;aACtC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC;aAC1B,IAAI,EAAE,CAAC;IACZ,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC;AAED,SAAS,SAAS,CAAC,GAAW;IAC5B,IAAI,CAAC;QACH,OAAO,WAAW,CAAC,IAAI,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IAClD,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC;AAiBD,uFAAuF;AAEvF,MAAM,UAAU,YAAY;IAC1B,MAAM,MAAM,GAAoB,EAAE,CAAC;IAEnC,KAAK,MAAM,IAAI,IAAI,SAAS,CAAC,QAAQ,CAAC,EAAE,CAAC;QACvC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;YAC5B,SAAS;QACX,CAAC;QAED,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;QACvC,MAAM,OAAO,GAAG,YAAY,CAAC,UAAU,IAAI,EAAE,CAAC,CAAC;QAC/C,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;IACjC,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,iBAAiB;IAC/B,MAAM,MAAM,GAAoB,EAAE,CAAC;IAEnC,KAAK,MAAM,IAAI,IAAI,eAAe,CAAC,cAAc,CAAC,EAAE,CAAC;QACnD,MAAM,OAAO,GAAG,YAAY,CAAC,gBAAgB,IAAI,WAAW,CAAC,CAAC;QAC9D,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;IACjC,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAOD,MAAM,UAAU,WAAW;IACzB,MAAM,KAAK,GAAmB,EAAE,CAAC;IAEjC,KAAK,MAAM,IAAI,IAAI,SAAS,CAAC,OAAO,CAAC,EAAE,CAAC;QACtC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;YAC1B,SAAS;QACX,CAAC;QACD,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,YAAY,CAAC,SAAS,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC;IACrE,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAED,MAAM,UAAU,cAAc;IAC5B,OAAO,YAAY,CAAC,YAAY,CAAC,CAAC;AACpC,CAAC;AAED,MAAM,UAAU,iBAAiB;IAC/B,OAAO;QACL,UAAU,EAAE,aAAa;QACzB,OAAO,EAAE,YAAY,CAAC,aAAa,CAAC;KACrC,CAAC;AACJ,CAAC"}
|
|
@@ -247,7 +247,7 @@ Use this output format:
|
|
|
247
247
|
Initialize default context:
|
|
248
248
|
|
|
249
249
|
```bash
|
|
250
|
-
python3 ./.trellis/scripts/task.py init-context "$TASK_DIR" <type>
|
|
250
|
+
python3 ./.trellis/scripts/task.py init-context "$TASK_DIR" <type> --platform {{CLI_FLAG}}
|
|
251
251
|
# type: backend | frontend | fullstack
|
|
252
252
|
```
|
|
253
253
|
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
# Continue Current Task
|
|
2
|
+
|
|
3
|
+
Resume work on the current task — pick up at the right phase/step in `.trellis/workflow.md`.
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## Step 1: Load Current Context
|
|
8
|
+
|
|
9
|
+
```bash
|
|
10
|
+
{{PYTHON_CMD}} ./.trellis/scripts/get_context.py
|
|
11
|
+
```
|
|
12
|
+
|
|
13
|
+
Confirms: current task, git state, recent commits.
|
|
14
|
+
|
|
15
|
+
## Step 2: Load the Phase Index
|
|
16
|
+
|
|
17
|
+
```bash
|
|
18
|
+
{{PYTHON_CMD}} ./.trellis/scripts/get_context.py --mode phase
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
Shows the Phase Index (Plan / Execute / Finish) with routing + skill mapping.
|
|
22
|
+
|
|
23
|
+
## Step 3: Decide Where You Are
|
|
24
|
+
|
|
25
|
+
Compare the task's `prd.md` + recent activity against the Phase Index:
|
|
26
|
+
|
|
27
|
+
- No `prd.md` yet, or requirements unclear → **Phase 1: Plan** (start at step 1.0/1.1)
|
|
28
|
+
- `prd.md` exists + context configured, but code not written → **Phase 2: Execute** (step 2.1)
|
|
29
|
+
- Code written, pending final quality gate → **Phase 3: Finish** (step 3.1)
|
|
30
|
+
|
|
31
|
+
Phase rules (full detail in `.trellis/workflow.md`):
|
|
32
|
+
|
|
33
|
+
1. Run steps **in order** within a phase — `[required]` steps must not be skipped
|
|
34
|
+
2. `[once]` steps are already done if the output exists (e.g., `prd.md`, `implement.jsonl`) — skip them
|
|
35
|
+
3. You may go back to an earlier phase if discoveries require it
|
|
36
|
+
|
|
37
|
+
## Step 4: Load the Specific Step
|
|
38
|
+
|
|
39
|
+
Once you know which step to resume at:
|
|
40
|
+
|
|
41
|
+
```bash
|
|
42
|
+
{{PYTHON_CMD}} ./.trellis/scripts/get_context.py --mode phase --step <X.X> --platform {{CLI_FLAG}}
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
Follow the loaded instructions. After each `[required]` step completes, move to the next.
|
|
46
|
+
|
|
47
|
+
---
|
|
48
|
+
|
|
49
|
+
## Reference
|
|
50
|
+
|
|
51
|
+
Full workflow, skill routing table, and the DO-NOT-skip table live in `.trellis/workflow.md`. This command is only an entry point — the canonical guidance is there.
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
# Finish Work
|
|
2
|
+
|
|
3
|
+
Wrap up the current session.
|
|
4
|
+
|
|
5
|
+
## Step 1: Quality Gate
|
|
6
|
+
|
|
7
|
+
`trellis-check` should have already run in Phase 3. If not, trigger it now and do not proceed until lint, type-check, tests, and spec compliance pass.
|
|
8
|
+
|
|
9
|
+
## Step 2: Remind User to Commit
|
|
10
|
+
|
|
11
|
+
If there are uncommitted changes:
|
|
12
|
+
|
|
13
|
+
> "Please review the changes and commit when ready."
|
|
14
|
+
|
|
15
|
+
Do NOT run `git commit` — the human commits after testing.
|
|
16
|
+
|
|
17
|
+
## Step 3: Record Session (after commit)
|
|
18
|
+
|
|
19
|
+
Archive finished tasks (judge by work status, not the `status` field):
|
|
20
|
+
|
|
21
|
+
```bash
|
|
22
|
+
{{PYTHON_CMD}} ./.trellis/scripts/task.py archive <task-name>
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
Append a session entry (auto-handles journal rotation, line count, index update):
|
|
26
|
+
|
|
27
|
+
```bash
|
|
28
|
+
{{PYTHON_CMD}} ./.trellis/scripts/add_session.py \
|
|
29
|
+
--title "Session Title" \
|
|
30
|
+
--commit "hash1,hash2" \
|
|
31
|
+
--summary "Brief summary"
|
|
32
|
+
```
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
# Start Session
|
|
2
|
+
|
|
3
|
+
Initialize a Trellis-managed development session. This platform has no session-start hook, so manually load the equivalent context by following these steps (each one mirrors a section the hook would otherwise inject).
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## Step 1: Current state
|
|
8
|
+
Identity, git status, current task, active tasks, journal location.
|
|
9
|
+
|
|
10
|
+
```bash
|
|
11
|
+
{{PYTHON_CMD}} ./.trellis/scripts/get_context.py
|
|
12
|
+
```
|
|
13
|
+
|
|
14
|
+
## Step 2: Workflow overview
|
|
15
|
+
Phase Index + skill routing table + DO-NOT-skip rules.
|
|
16
|
+
|
|
17
|
+
```bash
|
|
18
|
+
{{PYTHON_CMD}} ./.trellis/scripts/get_context.py --mode phase
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
Full guide in `.trellis/workflow.md` (read on demand).
|
|
22
|
+
|
|
23
|
+
## Step 3: Guideline indexes
|
|
24
|
+
Discover packages + spec layers, then read each relevant index file.
|
|
25
|
+
|
|
26
|
+
```bash
|
|
27
|
+
{{PYTHON_CMD}} ./.trellis/scripts/get_context.py --mode packages
|
|
28
|
+
cat .trellis/spec/guides/index.md
|
|
29
|
+
cat .trellis/spec/<package>/<layer>/index.md # for each relevant layer
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
Index files list the specific guideline docs to read when you actually start coding.
|
|
33
|
+
|
|
34
|
+
## Step 4: Decide next action
|
|
35
|
+
From Step 1 you know the current task. Check the task directory:
|
|
36
|
+
|
|
37
|
+
- **Active task + `prd.md` exists** → Phase 2 step 2.1. Load the step detail:
|
|
38
|
+
```bash
|
|
39
|
+
{{PYTHON_CMD}} ./.trellis/scripts/get_context.py --mode phase --step 2.1 --platform {{CLI_FLAG}}
|
|
40
|
+
```
|
|
41
|
+
- **Active task + no `prd.md`** → Phase 1.1. Load the `trellis-brainstorm` skill.
|
|
42
|
+
- **No active task** → when the user describes multi-step work, load the `trellis-brainstorm` skill to clarify requirements, then create a task via `task.py create`. For simple one-off questions or trivial edits, skip this and just answer directly — no task needed.
|
|
43
|
+
|
|
44
|
+
---
|
|
45
|
+
|
|
46
|
+
## Skill routing (quick reference)
|
|
47
|
+
|
|
48
|
+
| User intent | Skill |
|
|
49
|
+
|---|---|
|
|
50
|
+
| New feature / unclear requirements | `trellis-brainstorm` |
|
|
51
|
+
| About to write code | `trellis-before-dev` |
|
|
52
|
+
| Done coding / quality check | `trellis-check` |
|
|
53
|
+
| Stuck / fixed same bug multiple times | `trellis-break-loop` |
|
|
54
|
+
| Learned something worth capturing | `trellis-update-spec` |
|
|
55
|
+
|
|
56
|
+
Full rules + anti-rationalization table in `.trellis/workflow.md`.
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Common templates — single source of truth for all platforms.
|
|
3
|
+
*
|
|
4
|
+
* These templates contain {{placeholders}} that are resolved per-platform
|
|
5
|
+
* by resolvePlaceholders() in configurators/shared.ts.
|
|
6
|
+
*
|
|
7
|
+
* Directory structure:
|
|
8
|
+
* common/
|
|
9
|
+
* ├── commands/ # Templates that stay as slash commands (start, finish-work)
|
|
10
|
+
* └── skills/ # Templates that become auto-triggered skills
|
|
11
|
+
*/
|
|
12
|
+
export interface CommonTemplate {
|
|
13
|
+
/** Template name without extension (e.g., "start", "before-dev") */
|
|
14
|
+
name: string;
|
|
15
|
+
/** Raw content with {{placeholders}} — must be resolved before writing */
|
|
16
|
+
content: string;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Get all command templates (stay as slash commands on all platforms).
|
|
20
|
+
* Results are cached after first call.
|
|
21
|
+
*/
|
|
22
|
+
export declare function getCommandTemplates(): CommonTemplate[];
|
|
23
|
+
/**
|
|
24
|
+
* Get all skill templates (become auto-triggered skills on supporting platforms).
|
|
25
|
+
* Results are cached after first call.
|
|
26
|
+
*/
|
|
27
|
+
export declare function getSkillTemplates(): CommonTemplate[];
|
|
28
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/templates/common/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAuBH,MAAM,WAAW,cAAc;IAC7B,oEAAoE;IACpE,IAAI,EAAE,MAAM,CAAC;IACb,0EAA0E;IAC1E,OAAO,EAAE,MAAM,CAAC;CACjB;AAMD;;;GAGG;AACH,wBAAgB,mBAAmB,IAAI,cAAc,EAAE,CAMtD;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,IAAI,cAAc,EAAE,CAMpD"}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Common templates — single source of truth for all platforms.
|
|
3
|
+
*
|
|
4
|
+
* These templates contain {{placeholders}} that are resolved per-platform
|
|
5
|
+
* by resolvePlaceholders() in configurators/shared.ts.
|
|
6
|
+
*
|
|
7
|
+
* Directory structure:
|
|
8
|
+
* common/
|
|
9
|
+
* ├── commands/ # Templates that stay as slash commands (start, finish-work)
|
|
10
|
+
* └── skills/ # Templates that become auto-triggered skills
|
|
11
|
+
*/
|
|
12
|
+
import { readdirSync, readFileSync } from "node:fs";
|
|
13
|
+
import { dirname, join } from "node:path";
|
|
14
|
+
import { fileURLToPath } from "node:url";
|
|
15
|
+
const __filename = fileURLToPath(import.meta.url);
|
|
16
|
+
const __dirname = dirname(__filename);
|
|
17
|
+
function readTemplate(relativePath) {
|
|
18
|
+
return readFileSync(join(__dirname, relativePath), "utf-8");
|
|
19
|
+
}
|
|
20
|
+
function listMarkdownFiles(dir) {
|
|
21
|
+
try {
|
|
22
|
+
return readdirSync(join(__dirname, dir))
|
|
23
|
+
.filter((f) => f.endsWith(".md"))
|
|
24
|
+
.sort();
|
|
25
|
+
}
|
|
26
|
+
catch {
|
|
27
|
+
return [];
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
// Cached results — files don't change during a CLI run
|
|
31
|
+
let cachedCommands;
|
|
32
|
+
let cachedSkills;
|
|
33
|
+
/**
|
|
34
|
+
* Get all command templates (stay as slash commands on all platforms).
|
|
35
|
+
* Results are cached after first call.
|
|
36
|
+
*/
|
|
37
|
+
export function getCommandTemplates() {
|
|
38
|
+
cachedCommands ??= listMarkdownFiles("commands").map((file) => ({
|
|
39
|
+
name: file.replace(/\.md$/, ""),
|
|
40
|
+
content: readTemplate(`commands/${file}`),
|
|
41
|
+
}));
|
|
42
|
+
return cachedCommands;
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Get all skill templates (become auto-triggered skills on supporting platforms).
|
|
46
|
+
* Results are cached after first call.
|
|
47
|
+
*/
|
|
48
|
+
export function getSkillTemplates() {
|
|
49
|
+
cachedSkills ??= listMarkdownFiles("skills").map((file) => ({
|
|
50
|
+
name: file.replace(/\.md$/, ""),
|
|
51
|
+
content: readTemplate(`skills/${file}`),
|
|
52
|
+
}));
|
|
53
|
+
return cachedSkills;
|
|
54
|
+
}
|
|
55
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/templates/common/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACpD,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAEzC,MAAM,UAAU,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAClD,MAAM,SAAS,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;AAEtC,SAAS,YAAY,CAAC,YAAoB;IACxC,OAAO,YAAY,CAAC,IAAI,CAAC,SAAS,EAAE,YAAY,CAAC,EAAE,OAAO,CAAC,CAAC;AAC9D,CAAC;AAED,SAAS,iBAAiB,CAAC,GAAW;IACpC,IAAI,CAAC;QACH,OAAO,WAAW,CAAC,IAAI,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC;aACrC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;aAChC,IAAI,EAAE,CAAC;IACZ,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC;AASD,uDAAuD;AACvD,IAAI,cAA4C,CAAC;AACjD,IAAI,YAA0C,CAAC;AAE/C;;;GAGG;AACH,MAAM,UAAU,mBAAmB;IACjC,cAAc,KAAK,iBAAiB,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;QAC9D,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC;QAC/B,OAAO,EAAE,YAAY,CAAC,YAAY,IAAI,EAAE,CAAC;KAC1C,CAAC,CAAC,CAAC;IACJ,OAAO,cAAc,CAAC;AACxB,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,iBAAiB;IAC/B,YAAY,KAAK,iBAAiB,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;QAC1D,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC;QAC/B,OAAO,EAAE,YAAY,CAAC,UAAU,IAAI,EAAE,CAAC;KACxC,CAAC,CAAC,CAAC;IACJ,OAAO,YAAY,CAAC;AACtB,CAAC"}
|
|
@@ -1,7 +1,3 @@
|
|
|
1
|
-
---
|
|
2
|
-
description: Collaborative requirements discovery before implementation
|
|
3
|
-
---
|
|
4
|
-
|
|
5
1
|
# Brainstorm - Requirements Discovery (AI Coding Enhanced)
|
|
6
2
|
|
|
7
3
|
Guide AI through collaborative requirements discovery **before implementation**, optimized for AI coding workflows:
|
|
@@ -15,7 +11,7 @@ Guide AI through collaborative requirements discovery **before implementation**,
|
|
|
15
11
|
|
|
16
12
|
## When to Use
|
|
17
13
|
|
|
18
|
-
Triggered from
|
|
14
|
+
Triggered from {{CMD_REF:start}} when the user describes a development task, especially when:
|
|
19
15
|
|
|
20
16
|
* requirements are unclear or evolving
|
|
21
17
|
* there are multiple valid implementation paths
|
|
@@ -188,18 +184,61 @@ Examples:
|
|
|
188
184
|
* The user asks for "best practice", "how others do it", "recommendation"
|
|
189
185
|
* The user can't reasonably enumerate options
|
|
190
186
|
|
|
191
|
-
###
|
|
187
|
+
### Delegate to `trellis-research` sub-agent (don't research inline)
|
|
188
|
+
|
|
189
|
+
For each research topic, **spawn a `trellis-research` sub-agent via the Task tool** — don't do WebFetch / WebSearch / `gh api` inline in the main conversation.
|
|
190
|
+
|
|
191
|
+
Why:
|
|
192
|
+
- The sub-agent has its own context window → doesn't pollute brainstorm context with raw tool output
|
|
193
|
+
- It persists findings to `{TASK_DIR}/research/<topic>.md` (the contract — see `workflow.md` Phase 1.2)
|
|
194
|
+
- It returns only `{file path, one-line summary}` to the main agent
|
|
195
|
+
- Independent topics can be **parallelized** — spawn multiple sub-agents in one tool call
|
|
196
|
+
|
|
197
|
+
Agent type: `trellis-research`
|
|
198
|
+
Task description template: "Research <specific question>; persist findings to `{TASK_DIR}/research/<topic-slug>.md`."
|
|
199
|
+
|
|
200
|
+
❌ Bad (what you must NOT do):
|
|
201
|
+
```
|
|
202
|
+
Main agent: WebFetch(url-A) → WebFetch(url-B) → Bash(gh api ...)
|
|
203
|
+
→ WebSearch(q1) → WebSearch(q2) → ... (10+ inline calls)
|
|
204
|
+
→ Write(research/topic.md)
|
|
205
|
+
```
|
|
206
|
+
→ Pollutes main context with raw HTML/JSON, burns tokens.
|
|
207
|
+
|
|
208
|
+
✅ Good:
|
|
209
|
+
```
|
|
210
|
+
Main agent: Task(subagent_type="trellis-research",
|
|
211
|
+
prompt="Research topic A; persist to research/topic-a.md")
|
|
212
|
+
+ Task(subagent_type="trellis-research",
|
|
213
|
+
prompt="Research topic B; persist to research/topic-b.md")
|
|
214
|
+
+ Task(subagent_type="trellis-research",
|
|
215
|
+
prompt="Research topic C; persist to research/topic-c.md")
|
|
216
|
+
→ Reads research/topic-{a,b,c}.md after they finish.
|
|
217
|
+
```
|
|
218
|
+
|
|
219
|
+
### Research steps (to pass into each sub-agent prompt)
|
|
220
|
+
|
|
221
|
+
Each `trellis-research` sub-agent should:
|
|
192
222
|
|
|
193
|
-
1. Identify 2–4 comparable tools/patterns
|
|
223
|
+
1. Identify 2–4 comparable tools/patterns for its topic
|
|
194
224
|
2. Summarize common conventions and why they exist
|
|
195
225
|
3. Map conventions onto our repo constraints
|
|
196
|
-
4.
|
|
226
|
+
4. Write findings to `{TASK_DIR}/research/<topic>.md`
|
|
227
|
+
|
|
228
|
+
Main agent then reads the persisted files and produces **2–3 feasible approaches** in PRD.
|
|
197
229
|
|
|
198
230
|
### Research output format (PRD)
|
|
199
231
|
|
|
200
|
-
|
|
232
|
+
The PRD itself should only reference the persisted research files, not duplicate their content. Add a `## Research References` section pointing at `research/*.md`.
|
|
233
|
+
|
|
234
|
+
Optionally, add a convergence section with feasible approaches derived from the research:
|
|
201
235
|
|
|
202
236
|
```markdown
|
|
237
|
+
## Research References
|
|
238
|
+
|
|
239
|
+
* [`research/<topic-a>.md`](research/<topic-a>.md) — <one-line takeaway>
|
|
240
|
+
* [`research/<topic-b>.md`](research/<topic-b>.md) — <one-line takeaway>
|
|
241
|
+
|
|
203
242
|
## Research Notes
|
|
204
243
|
|
|
205
244
|
### What similar tools do
|
|
@@ -486,6 +525,6 @@ The task directory and PRD already exist from brainstorm, so Phase 1 of the Task
|
|
|
486
525
|
|
|
487
526
|
| Command | When to Use |
|
|
488
527
|
|---------|-------------|
|
|
489
|
-
|
|
|
490
|
-
|
|
|
491
|
-
|
|
|
528
|
+
| `{{CMD_REF:start}}` | Entry point that triggers brainstorm |
|
|
529
|
+
| `{{CMD_REF:finish-work}}` | After implementation is complete |
|
|
530
|
+
| `{{CMD_REF:update-spec}}` | If new patterns emerge during work |
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Break the Loop - Deep Bug Analysis
|
|
2
2
|
|
|
3
|
-
When debug is complete, use this
|
|
3
|
+
When debug is complete, use this for deep analysis to break the "fix bug -> forget -> repeat" cycle.
|
|
4
4
|
|
|
5
5
|
---
|
|
6
6
|
|
|
@@ -37,7 +37,7 @@ What mechanisms would prevent this from happening again?
|
|
|
37
37
|
|------|-------------|---------|
|
|
38
38
|
| **Documentation** | Write it down so people know | Update thinking guide |
|
|
39
39
|
| **Architecture** | Make the error impossible structurally | Type-safe wrappers |
|
|
40
|
-
| **Compile-time** |
|
|
40
|
+
| **Compile-time** | Strict type checking, no escape hatches | Signature change causes compile error |
|
|
41
41
|
| **Runtime** | Monitoring, alerts, scans | Detect orphan entities |
|
|
42
42
|
| **Test Coverage** | E2E tests, integration tests | Verify full flow |
|
|
43
43
|
| **Code Review** | Checklist, PR template | "Did you check X?" |
|
|
@@ -56,10 +56,10 @@ What broader problems does this bug reveal?
|
|
|
56
56
|
Solidify insights into the system:
|
|
57
57
|
|
|
58
58
|
- [ ] Update `.trellis/spec/guides/` thinking guides
|
|
59
|
-
- [ ] Update `.trellis/spec
|
|
59
|
+
- [ ] Update relevant `.trellis/spec/` docs
|
|
60
60
|
- [ ] Create issue record (if applicable)
|
|
61
61
|
- [ ] Create feature ticket for root fix
|
|
62
|
-
- [ ] Update check
|
|
62
|
+
- [ ] Update check guidelines if needed
|
|
63
63
|
|
|
64
64
|
---
|
|
65
65
|
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
# Code Quality Check
|
|
2
|
+
|
|
3
|
+
Comprehensive quality verification for recently written code. Combines spec compliance, cross-layer safety, and pre-commit checks.
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## Step 1: Identify What Changed
|
|
8
|
+
|
|
9
|
+
```bash
|
|
10
|
+
git diff --name-only HEAD
|
|
11
|
+
git status
|
|
12
|
+
```
|
|
13
|
+
|
|
14
|
+
## Step 2: Read Applicable Specs
|
|
15
|
+
|
|
16
|
+
```bash
|
|
17
|
+
python3 ./.trellis/scripts/get_context.py --mode packages
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
For each changed package/layer, read the spec index and follow its **Quality Check** section:
|
|
21
|
+
|
|
22
|
+
```bash
|
|
23
|
+
cat .trellis/spec/<package>/<layer>/index.md
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
Read the specific guideline files referenced — the index is a pointer, not the goal.
|
|
27
|
+
|
|
28
|
+
## Step 3: Run Project Checks
|
|
29
|
+
|
|
30
|
+
Run the project's lint, type-check, and test commands. Fix any failures before proceeding.
|
|
31
|
+
|
|
32
|
+
## Step 4: Review Against Checklist
|
|
33
|
+
|
|
34
|
+
### Code Quality
|
|
35
|
+
|
|
36
|
+
- [ ] Linter passes?
|
|
37
|
+
- [ ] Type checker passes (if applicable)?
|
|
38
|
+
- [ ] Tests pass?
|
|
39
|
+
- [ ] No debug logging left in?
|
|
40
|
+
- [ ] No suppressed warnings or type-safety bypasses?
|
|
41
|
+
|
|
42
|
+
### Test Coverage
|
|
43
|
+
|
|
44
|
+
- [ ] New function → unit test added?
|
|
45
|
+
- [ ] Bug fix → regression test added?
|
|
46
|
+
- [ ] Changed behavior → existing tests updated?
|
|
47
|
+
|
|
48
|
+
### Spec Sync
|
|
49
|
+
|
|
50
|
+
- [ ] Does `.trellis/spec/` need updates? (new patterns, conventions, lessons learned)
|
|
51
|
+
|
|
52
|
+
> "If I fixed a bug or discovered something non-obvious, should I document it so future me won't hit the same issue?" → If YES, update the relevant spec doc.
|
|
53
|
+
|
|
54
|
+
## Step 5: Cross-Layer Dimensions (if applicable)
|
|
55
|
+
|
|
56
|
+
Skip this step if your change is confined to a single layer.
|
|
57
|
+
|
|
58
|
+
### A. Data Flow (changes touch 3+ layers)
|
|
59
|
+
|
|
60
|
+
- [ ] Read flow traces correctly: Storage → Service → API → UI
|
|
61
|
+
- [ ] Write flow traces correctly: UI → API → Service → Storage
|
|
62
|
+
- [ ] Types/schemas correctly passed between layers?
|
|
63
|
+
- [ ] Errors properly propagated to caller?
|
|
64
|
+
|
|
65
|
+
### B. Code Reuse (modifying constants, creating utilities)
|
|
66
|
+
|
|
67
|
+
- [ ] Searched for existing similar code before creating new?
|
|
68
|
+
```bash
|
|
69
|
+
grep -r "pattern" src/
|
|
70
|
+
```
|
|
71
|
+
- [ ] If 2+ places define same value → extracted to shared constant?
|
|
72
|
+
- [ ] After batch modification, all occurrences updated?
|
|
73
|
+
|
|
74
|
+
### C. Import/Dependency (creating new files)
|
|
75
|
+
|
|
76
|
+
- [ ] Correct import paths (relative vs absolute)?
|
|
77
|
+
- [ ] No circular dependencies?
|
|
78
|
+
|
|
79
|
+
### D. Same-Layer Consistency
|
|
80
|
+
|
|
81
|
+
- [ ] Other places using the same concept are consistent?
|
|
82
|
+
|
|
83
|
+
---
|
|
84
|
+
|
|
85
|
+
## Step 6: Report and Fix
|
|
86
|
+
|
|
87
|
+
Report violations found and fix them directly. Re-run project checks after fixes.
|