@pennixrv/trellis 0.6.45 → 0.7.0-beta.11

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.
Files changed (117) hide show
  1. package/dist/cli/index.d.ts.map +1 -1
  2. package/dist/cli/index.js +21 -3
  3. package/dist/cli/index.js.map +1 -1
  4. package/dist/commands/channel/adapters/codex.d.ts +2 -1
  5. package/dist/commands/channel/adapters/codex.d.ts.map +1 -1
  6. package/dist/commands/channel/adapters/codex.js +10 -7
  7. package/dist/commands/channel/adapters/codex.js.map +1 -1
  8. package/dist/commands/channel/adapters/index.d.ts +2 -0
  9. package/dist/commands/channel/adapters/index.d.ts.map +1 -1
  10. package/dist/commands/channel/adapters/index.js +1 -1
  11. package/dist/commands/channel/adapters/index.js.map +1 -1
  12. package/dist/commands/channel/index.d.ts.map +1 -1
  13. package/dist/commands/channel/index.js +6 -0
  14. package/dist/commands/channel/index.js.map +1 -1
  15. package/dist/commands/channel/profiles.d.ts +26 -0
  16. package/dist/commands/channel/profiles.d.ts.map +1 -0
  17. package/dist/commands/channel/profiles.js +186 -0
  18. package/dist/commands/channel/profiles.js.map +1 -0
  19. package/dist/commands/channel/spawn.d.ts +3 -0
  20. package/dist/commands/channel/spawn.d.ts.map +1 -1
  21. package/dist/commands/channel/spawn.js +22 -3
  22. package/dist/commands/channel/spawn.js.map +1 -1
  23. package/dist/commands/channel/supervisor.d.ts +8 -0
  24. package/dist/commands/channel/supervisor.d.ts.map +1 -1
  25. package/dist/commands/channel/supervisor.js +19 -0
  26. package/dist/commands/channel/supervisor.js.map +1 -1
  27. package/dist/commands/mem.d.ts.map +1 -1
  28. package/dist/commands/mem.js +6 -13
  29. package/dist/commands/mem.js.map +1 -1
  30. package/dist/commands/workflow.d.ts +17 -0
  31. package/dist/commands/workflow.d.ts.map +1 -1
  32. package/dist/commands/workflow.js +222 -0
  33. package/dist/commands/workflow.js.map +1 -1
  34. package/dist/configurators/claude.d.ts.map +1 -1
  35. package/dist/configurators/claude.js.map +1 -1
  36. package/dist/configurators/dsh.d.ts +16 -19
  37. package/dist/configurators/dsh.d.ts.map +1 -1
  38. package/dist/configurators/dsh.js +38 -26
  39. package/dist/configurators/dsh.js.map +1 -1
  40. package/dist/configurators/gemini.d.ts.map +1 -1
  41. package/dist/configurators/gemini.js.map +1 -1
  42. package/dist/configurators/opencode.d.ts.map +1 -1
  43. package/dist/configurators/opencode.js +4 -0
  44. package/dist/configurators/opencode.js.map +1 -1
  45. package/dist/migrations/manifests/0.6.17.json +2 -2
  46. package/dist/migrations/manifests/0.7.0-beta.10.json +9 -0
  47. package/dist/migrations/manifests/0.7.0-beta.11.json +9 -0
  48. package/dist/migrations/manifests/0.7.0-beta.4.json +9 -0
  49. package/dist/migrations/manifests/0.7.0-beta.4.pennix.1.json +9 -0
  50. package/dist/migrations/manifests/0.7.0-beta.5.json +9 -0
  51. package/dist/migrations/manifests/0.7.0-beta.6.json +9 -0
  52. package/dist/migrations/manifests/0.7.0-beta.7.json +9 -0
  53. package/dist/migrations/manifests/0.7.0-beta.8.json +9 -0
  54. package/dist/migrations/manifests/0.7.0-beta.9.json +9 -0
  55. package/dist/templates/claude/hooks/statusline.py +7 -0
  56. package/dist/templates/claude/settings.json +22 -0
  57. package/dist/templates/codex/hooks/session-start.py +20 -1
  58. package/dist/templates/codex/hooks.json +25 -0
  59. package/dist/templates/common/bundled-skills/trellis-channel/references/subnode-work.md +32 -3
  60. package/dist/templates/common/bundled-skills/trellis-meta/SKILL.md +2 -2
  61. package/dist/templates/common/bundled-skills/trellis-meta/references/customize-local/change-task-lifecycle.md +1 -0
  62. package/dist/templates/common/bundled-skills/trellis-meta/references/platform-files/agents.md +2 -1
  63. package/dist/templates/common/bundled-skills/trellis-meta/references/platform-files/hooks-and-settings.md +3 -2
  64. package/dist/templates/common/bundled-skills/trellis-meta/references/platform-files/overview.md +1 -1
  65. package/dist/templates/common/bundled-skills/trellis-meta/references/platform-files/platform-map.md +5 -4
  66. package/dist/templates/common/bundled-skills/trellis-meta/references/platform-files/skills-and-commands.md +1 -0
  67. package/dist/templates/common/bundled-skills/trellis-session-insight/SKILL.md +2 -2
  68. package/dist/templates/common/bundled-skills/trellis-session-insight/references/cli-quick-reference.md +3 -2
  69. package/dist/templates/common/commands/continue.md +4 -2
  70. package/dist/templates/common/skills/brainstorm.md +14 -6
  71. package/dist/templates/copilot/hooks/session-start.py +20 -1
  72. package/dist/templates/copilot/prompts/brainstorm.prompt.md +16 -6
  73. package/dist/templates/dsh/DSH.md +61 -37
  74. package/dist/templates/dsh/agents/trellis-check.md +99 -0
  75. package/dist/templates/dsh/agents/trellis-implement.md +106 -0
  76. package/dist/templates/dsh/agents/trellis-research.md +134 -0
  77. package/dist/templates/dsh/index.d.ts +12 -11
  78. package/dist/templates/dsh/index.d.ts.map +1 -1
  79. package/dist/templates/dsh/index.js +14 -12
  80. package/dist/templates/dsh/index.js.map +1 -1
  81. package/dist/templates/opencode/plugins/inject-spec-context.js +121 -0
  82. package/dist/templates/opencode/plugins/inject-workflow-state.js +111 -10
  83. package/dist/templates/pi/extensions/trellis/index.ts.txt +164 -10
  84. package/dist/templates/shared-hooks/index.d.ts +8 -2
  85. package/dist/templates/shared-hooks/index.d.ts.map +1 -1
  86. package/dist/templates/shared-hooks/index.js +13 -1
  87. package/dist/templates/shared-hooks/index.js.map +1 -1
  88. package/dist/templates/shared-hooks/inject-shell-session-context.py +3 -3
  89. package/dist/templates/shared-hooks/inject-spec-context.py +844 -0
  90. package/dist/templates/shared-hooks/inject-workflow-state.py +35 -9
  91. package/dist/templates/shared-hooks/session-start.py +22 -1
  92. package/dist/templates/trellis/agents/subnode-profiles.json +14 -0
  93. package/dist/templates/trellis/agents/subnode.md +11 -4
  94. package/dist/templates/trellis/config.yaml +49 -0
  95. package/dist/templates/trellis/index.d.ts +4 -0
  96. package/dist/templates/trellis/index.d.ts.map +1 -1
  97. package/dist/templates/trellis/index.js +8 -0
  98. package/dist/templates/trellis/index.js.map +1 -1
  99. package/dist/templates/trellis/scripts/common/active_task.py +26 -4
  100. package/dist/templates/trellis/scripts/common/cli_adapter.py +38 -6
  101. package/dist/templates/trellis/scripts/common/config.py +18 -0
  102. package/dist/templates/trellis/scripts/common/context_projection.py +2 -2
  103. package/dist/templates/trellis/scripts/common/git_context.py +34 -2
  104. package/dist/templates/trellis/scripts/common/paths.py +28 -0
  105. package/dist/templates/trellis/scripts/common/spec_inject.py +439 -0
  106. package/dist/templates/trellis/scripts/common/spec_match.py +395 -0
  107. package/dist/templates/trellis/scripts/common/task_store.py +88 -1
  108. package/dist/templates/trellis/scripts/common/trellis_config.py +46 -7
  109. package/dist/templates/trellis/scripts/common/workflow_phase.py +3 -2
  110. package/dist/templates/trellis/scripts/common/workflow_selection.py +177 -0
  111. package/dist/templates/trellis/scripts/subnode_artifact.py +416 -15
  112. package/dist/templates/trellis/scripts/task.py +160 -0
  113. package/dist/templates/trellis/workflow.md +49 -34
  114. package/dist/types/ai-tools.d.ts.map +1 -1
  115. package/dist/types/ai-tools.js +26 -13
  116. package/dist/types/ai-tools.js.map +1 -1
  117. package/package.json +2 -2
@@ -10,7 +10,11 @@ A request to build, implement, fix, refactor, or "go ahead" is not approval to l
10
10
 
11
11
  For every non-trivial task, the user must respond at least once after the initial request before implementation begins. If no clarification is needed, that response must approve the final planning summary described below.
12
12
 
13
- While any user-owned product, scope, UX, compatibility, risk, or acceptance decision remains unresolved, end the turn with exactly one highest-value question. Do not edit product code, dispatch implementation, or run `task.py start`.
13
+ While any user-owned product, scope, UX, compatibility, risk, or acceptance decision remains unresolved, keep the task in planning. First inventory evidence and decision dependencies. If at least two independent material decisions remain and `pennix-decision-gates` is available, delegate one bounded batch of up to three frontier questions; otherwise ask the single highest-value question. Do not edit product code, dispatch implementation, or run `task.py start` until the decision chain is sealed.
14
+
15
+ ## Analysis-Only Exception
16
+
17
+ When `task.json.meta.delivery_mode = "analysis_only"` exactly and the PRD names a bounded evidence deliverable plus a no-change boundary for product source, runtime configuration, deployment, credentials, and external systems, task-creation consent authorizes that evidence work. Keep status `planning`, record and verify the evidence, commit task artifacts, and archive directly; do not run `task.py start` or wait for a second implementation approval. This exception is eligible only when there is no material user decision, design or implementation plan, cross-owner coordination, security or deployment change, release or credential action, or protected downstream task. Otherwise use normal complex planning.
14
18
 
15
19
  ## Non-Negotiable Evidence Rule
16
20
 
@@ -22,6 +26,10 @@ Do not ask the user to confirm facts that the repository can answer. Ask only fo
22
26
 
23
27
  Repository evidence establishes current behavior and technical constraints. The user's intended behavior, feature scope boundaries, and UX preferences are never answerable by repository evidence alone, even when an existing pattern exists; existing patterns are options and recommendation evidence, not decisions.
24
28
 
29
+ ## Evidence Units For Read-Heavy Work
30
+
31
+ When research, audit, review, or investigation is too large for one independently useful conclusion in the current session, split it into evidence units. Each unit has one question or scope, a minimal evidence range, a destination artifact, and a stop condition; persist facts, conclusion or blocker, unknowns, and a recovery point before starting another unit. Size each unit for one normal context window without promising an exact token or time limit.
32
+
25
33
  ---
26
34
 
27
35
  Use this skill during Phase 1 planning to turn the user's request into clear requirements and planning artifacts.
@@ -52,18 +60,18 @@ Use a concise title from the user's request. Both the title and `--description`
52
60
  - product intent still needed from the user
53
61
  - scope or risk decisions still needed from the user
54
62
  - likely out-of-scope items
55
- 4. If a user-owned decision remains, ask the single highest-value question, include your recommendation and trade-off, then stop. Do not perform implementation work in the same turn.
56
- 5. After each user answer, update `prd.md`, recompute the decision inventory, and repeat from step 2.
63
+ 4. If user-owned decisions remain, calculate the independent frontier. Use `pennix-decision-gates` for a bounded batch when two or more independent material decisions are ready; otherwise ask the single highest-value question. Include recommendation and trade-off. Yield only while the answer is unavailable.
64
+ 5. When the host returns the current continuation's answer, persist it in `prd.md` or the decision artifact, recheck evidence and conflicts, recalculate the frontier, and continue the same planning loop. Stop only for a new unresolved frontier, a real capability or authority block, or a final sealed summary awaiting implementation approval.
57
65
  6. When no user-owned decision remains, create or update `design.md` and `implement.md` for complex tasks.
58
- 7. Run the requirement convergence gate, then the PRD convergence pass.
66
+ 7. Run the requirement convergence gate, then the PRD convergence pass. Finish with one Planning Seal closure pass.
59
67
  8. Present the final planning summary and stop. Do not run `task.py start` or edit product code in the same turn.
60
- 9. Only a subsequent user message that explicitly approves the latest planning summary authorizes `task.py start` and implementation. If the artifacts change materially after approval, repeat the final review.
68
+ 9. Only a subsequent user message that explicitly approves the latest planning summary authorizes `task.py start` and implementation. If implementation reveals a material unresolved decision, record `decision-needed`, run `task.py replan <task> "<reason>"`, and return through this planning flow; do not open a popup during implementation.
61
69
 
62
70
  Do not invent a project-specific product/spec hierarchy. If the repository already has product, domain, or spec docs, use them. If it does not, proceed with the evidence that exists.
63
71
 
64
72
  ## Question Rules
65
73
 
66
- Ask only one question per message.
74
+ Ask one bounded batch per message: include up to three independent material frontier questions. Ask exactly one question only when it is the sole remaining material decision or later decisions depend on its answer.
67
75
 
68
76
  Each question must include:
69
77
 
@@ -95,6 +103,8 @@ Lightweight tasks may omit `design.md` and `implement.md`; they may not skip evi
95
103
 
96
104
  The final planning summary must show Goal, In Scope, Out of Scope, Acceptance Criteria, Key Decisions, relevant Risks or Deferred Items, and artifact status.
97
105
 
106
+ The Planning Seal closure pass reconciles `task.json`, `prd.md`, `design.md`, `implement.md`, research, decision records, and manifests; verifies targets, branches, dependencies, release, validation, rollback, dynamic-fact dispositions, and replan triggers; and fixes every material decision to an owner and outcome. No `TBD`, `TODO`, `decision-needed`, unowned option, unspecified branch, open implementation path, validation gap, or conditional acceptance may remain. Any material discovery invalidates the seal and returns to planning.
107
+
98
108
  ## Artifact Rules
99
109
 
100
110
  `prd.md` records requirements and acceptance:
@@ -1,15 +1,17 @@
1
1
  # Trellis on DeepSeek Harness (dsh)
2
2
 
3
- dsh is a **class-2 pull-based** Trellis host: no session-start hook auto-injects
4
- workflow context, so the agent loads the Trellis skills on demand through its
5
- skill-loader tool.
3
+ dsh is a **class-2 pull-based** Trellis host. It discovers Trellis skills from
4
+ the project, uses native continuable sub-agents for isolated implementation and
5
+ review roles, and exposes a stable `DSH_SESSION_ID` to every managed shell.
6
6
 
7
- | Capability | Status |
8
- | --- | --- |
9
- | Skills (`.agents/skills/trellis-*/SKILL.md`) | Works — dsh discovers this shared root natively |
10
- | Entry skills (`.dsh/skills/trellis-*/SKILL.md`) | Works — dsh's own project skill root (highest rank) |
11
- | Context hooks | None — pull-based: skills read `.trellis/` files directly |
12
- | Sub-agents | None shipped — implement/check/research run inline via the workflow skills |
7
+ | Capability | Without companion plugin | With `dsh-trellis` |
8
+ | --- | --- | --- |
9
+ | Shared and entry skills | Works | Works |
10
+ | Session-scoped active task | Works through verified `DSH_SHELL=1` + `DSH_SESSION_ID`, including nested launches | Managed per-execution identity can forward a distinct child session |
11
+ | Implement/check/research roles | Foreground native sub-agent | Background native sub-agent |
12
+ | Per-turn workflow breadcrumb | Not available | Injected from `workflow.md` |
13
+ | Event-driven child wait | Not available | `trellis_wait` |
14
+ | Utility commands | Not available | `/trellis-status`, `/trellis-finish` |
13
15
 
14
16
  ## Quick start
15
17
 
@@ -20,37 +22,59 @@ dsh web # or: dsh --profile headless "start a Trellis task for ..."
20
22
 
21
23
  In dsh:
22
24
 
23
- 1. Open a session in the project root and describe the work in natural
24
- language. For a new task the agent should load the `trellis-start` skill,
25
- which reads the current task state from `.trellis/` and routes to
26
- `trellis-brainstorm` (unclear requirements), `trellis-before-dev` (about to
27
- write code), `trellis-check` (done coding), or `trellis-update-spec`
28
- (learned something worth capturing).
29
- 2. Entry skills are `trellis-start` / `trellis-continue` / `trellis-finish-work`
30
- in `.dsh/skills/`. You can also ask for them by name at any time.
31
- 3. Type `/trellis:finish-work` is a slash-command convention from other hosts —
32
- dsh has no slash palette, so say "finish the trellis task" instead, and the
33
- agent loads `trellis-finish-work`.
25
+ 1. Describe the work in natural language and load `trellis-start` when a
26
+ session needs explicit Trellis bootstrap.
27
+ 2. The main session dispatches `trellis-agent-research`,
28
+ `trellis-agent-implement`, and `trellis-agent-check` through DSH's native
29
+ `subagent` tool. Each child loads exactly one matching role skill.
30
+ 3. Finish through `trellis-finish-work`, which preserves the required order:
31
+ commit, archive, then journal.
32
+
33
+ ## Companion plugin fallback contract
34
+
35
+ The Trellis adapter does not install a DSH profile plugin. Before dispatching a
36
+ role, check whether the `trellis_wait` tool is available:
37
+
38
+ - If available, use DSH's default continuable background mode, continue
39
+ independent work, then call `trellis_wait` once per dependent child id and
40
+ consume each native settlement notice before entering the dependent gate.
41
+ - If unavailable, dispatch every child with `run_in_background: false` from the outset
42
+ so the dependent workflow gate cannot overtake it.
43
+
44
+ Never replace either path with shell sleep, polling loops, `job_output`, or
45
+ repeated agent-list polling.
46
+
47
+ ## Nested host sessions
48
+
49
+ DSH inherits ordinary environment variables from the process that launches it.
50
+ If that outer process is already an active Trellis session,
51
+ `TRELLIS_CONTEXT_ID` would otherwise override the inner `DSH_SESSION_ID`.
52
+ DSH rebuilds its complete `DSH_*` namespace for each managed shell, so the beta
53
+ adapter treats `DSH_SHELL=1` together with `DSH_SESSION_ID` as the current DSH
54
+ identity and resolves it before an inherited generic override, even without the
55
+ plugin. The optional plugin additionally contributes a trusted
56
+ `DSH_TRELLIS_CONTEXT_ID` when it must forward a child identity that differs
57
+ from the shell's own session id.
34
58
 
35
59
  ## File map
36
60
 
37
- - `.agents/skills/` — auto-triggered workflow skills (`trellis-before-dev`,
38
- `trellis-brainstorm`, `trellis-check`, `trellis-break-loop`,
39
- `trellis-update-spec`) plus the bundled `trellis-meta` /
40
- `trellis-spec-bootstrap` / `trellis-session-insight` skills. Byte-identical
41
- to Codex / Gemini CLI / Pi / Kimi writes into the same shared root.
42
- - `.dsh/skills/` — dsh-private entry skills (`trellis-start` /
43
- `trellis-continue` / `trellis-finish-work`).
44
- - `.trellis/` — specs, tasks, workspace memory, and the shared scripts the
45
- skills invoke (`get_context.py`, `task.py`, ...).
61
+ - `.agents/skills/` — shared workflow and bundled skills, byte-identical to
62
+ the other Agent Skills writers.
63
+ - `.dsh/skills/trellis-{start,continue,finish-work}/` — DSH-private entry
64
+ skills.
65
+ - `.dsh/skills/trellis-agent-{research,implement,check}/` — child-only role
66
+ skills; implement/check include the pull-based task context prelude.
67
+ - `.dsh/DSH.md` — this operator guide.
68
+ - `.trellis/` — workflow, specs, tasks, workspace journal, and shared scripts.
46
69
 
47
70
  ## Notes
48
71
 
49
- - Skill scripts pass `--platform dsh` to `get_context.py`; the value is used
50
- as a platform-scoped context key.
51
- - The shipped `minimal` agent preset composes only `bash` +
52
- `str_replace_editor`; the default presets include `web_search` and the
53
- filesystem/terminal tools the skills assume.
54
- - dsh has no project-level sub-agent definition surface, so Trellis ships no
55
- `trellis-implement` / `trellis-check` / `trellis-research` agent prompts
56
- here — the workflow skills run those phases inline in the main session.
72
+ - Generated Python commands use `python3` in source templates and are rendered
73
+ to the detected Windows launcher during `trellis init` / `trellis update`.
74
+ - Role dispatch prompts start with `Active task: <task path>`. This exact task
75
+ path is the child's primary context source; children must not guess globally.
76
+ - Each `dsh --profile headless` invocation creates a fresh DSH session. Do not
77
+ expect an active-task pointer to persist across separate headless calls; keep
78
+ the workflow in one session or explicitly resume its returned session id.
79
+ - The optional companion plugin is maintained separately at
80
+ <https://github.com/SajoLuo/dsh-trellis>.
@@ -0,0 +1,99 @@
1
+ ---
2
+ name: trellis-check
3
+ user-invocable: false
4
+ description: |
5
+ Child-agent-only quality role for Trellis. Main sessions must not load this
6
+ skill directly. Reviews code changes against specs and self-fixes issues.
7
+ ---
8
+ # Check Agent
9
+
10
+ You are the Check Agent in the Trellis workflow.
11
+
12
+ ## Recursion Guard
13
+
14
+ You are already the `trellis-check` sub-agent that the main session dispatched. Do the review and fixes directly.
15
+
16
+ - Do NOT spawn another `trellis-check` or `trellis-implement` sub-agent.
17
+ - If workflow.md, workflow-state breadcrumbs, or the parent prompt say to dispatch `trellis-implement` / `trellis-check`, treat that as a main-session instruction that is already satisfied by your current role.
18
+ - Only the main session may dispatch Trellis implement/check agents. If more implementation work is needed, report that recommendation instead of spawning.
19
+
20
+ dsh does not auto-inject SessionStart task context. Always pull context as required below.
21
+
22
+ ## Context
23
+
24
+ Before checking, read:
25
+ - `.trellis/spec/` - Development guidelines
26
+ - Pre-commit checklist for quality standards
27
+
28
+ ## Core Responsibilities
29
+
30
+ 1. **Get code changes** - Use git diff to get uncommitted code
31
+ 2. **Check against specs** - Verify code follows guidelines
32
+ 3. **Self-fix** - Fix issues yourself, not just report them
33
+ 4. **Run verification** - typecheck and lint
34
+
35
+ ## Important
36
+
37
+ **Fix issues yourself**, don't just report them.
38
+
39
+ You have write and edit tools, you can modify code directly.
40
+
41
+ ---
42
+
43
+ ## Workflow
44
+
45
+ ### Step 1: Get Changes
46
+
47
+ ```bash
48
+ git diff --name-only # List changed files
49
+ git diff # View specific changes
50
+ ```
51
+
52
+ ### Step 2: Check Against Specs
53
+
54
+ Read relevant specs in `.trellis/spec/` to check code:
55
+
56
+ - Does it follow directory structure conventions
57
+ - Does it follow naming conventions
58
+ - Does it follow code patterns
59
+ - Are there missing types
60
+ - Are there potential bugs
61
+
62
+ ### Step 3: Self-Fix
63
+
64
+ After finding issues:
65
+
66
+ 1. Fix the issue directly (use edit tool)
67
+ 2. Record what was fixed
68
+ 3. Continue checking other issues
69
+
70
+ ### Step 4: Run Verification
71
+
72
+ Run project's lint and typecheck commands to verify changes.
73
+
74
+ If failed, fix issues and re-run.
75
+
76
+ If a required command cannot run, is skipped, or still exits non-zero, report
77
+ the quality gate as **blocked** or **failed**. Never label it passed, weaken or
78
+ rewrite acceptance criteria, or substitute an easier command just to advance
79
+ the workflow.
80
+
81
+ ---
82
+
83
+ ## Report Format
84
+
85
+ ```markdown
86
+ ## Self-Check Complete
87
+
88
+ ### Files Checked
89
+
90
+ - list changed files
91
+
92
+ ### Issues Fixed
93
+
94
+ - what you fixed
95
+
96
+ ### Verification
97
+
98
+ - Lint / typecheck results
99
+ ```
@@ -0,0 +1,106 @@
1
+ ---
2
+ name: trellis-implement
3
+ user-invocable: false
4
+ description: |
5
+ Child-agent-only implementation role for Trellis. Main sessions must not
6
+ load this skill directly. Understands specs and requirements, then
7
+ implements features. No git commit allowed.
8
+ ---
9
+ # Implement Agent
10
+
11
+ You are the Implement Agent in the Trellis workflow.
12
+
13
+ ## Recursion Guard
14
+
15
+ You are already the `trellis-implement` sub-agent that the main session dispatched. Do the implementation work directly.
16
+
17
+ - Do NOT spawn another `trellis-implement` or `trellis-check` sub-agent.
18
+ - If workflow.md, workflow-state breadcrumbs, or the parent prompt say to dispatch `trellis-implement` / `trellis-check`, treat that as a main-session instruction that is already satisfied by your current role.
19
+ - Only the main session may dispatch Trellis implement/check agents. If more parallel work is needed, report that recommendation instead of spawning.
20
+
21
+ dsh does not auto-inject SessionStart task context. Always pull context as required below.
22
+
23
+ ## Context
24
+
25
+ Before implementing, read:
26
+ - `.trellis/workflow.md` - Project workflow
27
+ - `.trellis/spec/` - Development guidelines
28
+ - Task `prd.md` - Requirements document
29
+ - Task `design.md` / `implement.md` if present
30
+
31
+ ## Core Responsibilities
32
+
33
+ 1. **Understand specs** - Read relevant spec files in `.trellis/spec/`
34
+ 2. **Understand requirements** - Read prd.md and design/implement artifacts
35
+ 3. **Implement features** - Write code following specs and design
36
+ 4. **Self-check** - Ensure code quality
37
+ 5. **Report results** - Report completion status
38
+
39
+ ## Forbidden Operations
40
+
41
+ **Do NOT execute these git commands:**
42
+
43
+ - `git commit`
44
+ - `git push`
45
+ - `git merge`
46
+
47
+ ---
48
+
49
+ ## Workflow
50
+
51
+ ### 1. Understand Specs
52
+
53
+ Read relevant specs based on task type:
54
+
55
+ - Spec layers: `.trellis/spec/<package>/<layer>/`
56
+ - Shared guides: `.trellis/spec/guides/`
57
+
58
+ ### 2. Understand Requirements
59
+
60
+ Read the task's prd.md and design/implement files:
61
+
62
+ - What are the core requirements
63
+ - Key points of technical design
64
+ - Which files to modify/create
65
+
66
+ ### 3. Implement Features
67
+
68
+ - Write code following specs and technical design
69
+ - Follow existing code patterns
70
+ - Only do what's required, no over-engineering
71
+
72
+ ### 4. Verify
73
+
74
+ Run project's lint and typecheck commands to verify changes.
75
+
76
+ ---
77
+
78
+ ## Report Format
79
+
80
+ ```markdown
81
+ ## Implementation Complete
82
+
83
+ ### Files Modified
84
+
85
+ - `src/components/Feature.tsx` - New component
86
+ - `src/hooks/useFeature.ts` - New hook
87
+
88
+ ### Implementation Summary
89
+
90
+ 1. Created Feature component...
91
+ 2. Added useFeature hook...
92
+
93
+ ### Verification Results
94
+
95
+ - Lint: Passed
96
+ - TypeCheck: Passed
97
+ ```
98
+
99
+ ---
100
+
101
+ ## Code Standards
102
+
103
+ - Follow existing code patterns
104
+ - Don't add unnecessary abstractions
105
+ - Only do what's required, no over-engineering
106
+ - Keep code readable
@@ -0,0 +1,134 @@
1
+ ---
2
+ name: trellis-research
3
+ user-invocable: false
4
+ description: |
5
+ Child-agent-only research role for Trellis. Main sessions must not load this
6
+ skill directly. Finds files, patterns, and technical solutions, and persists
7
+ every finding to the current task's research/ directory. No code changes
8
+ outside that directory.
9
+ ---
10
+ # Research Agent
11
+
12
+ You are the Research Agent in the Trellis workflow.
13
+
14
+ ## Core Principle
15
+
16
+ **You do one thing: find, explain, and PERSIST information.**
17
+
18
+ Conversations get compacted; files don't. Every research output MUST end up as a file under `{TASK_DIR}/research/`. Returning findings only through the chat reply is a failure - the caller cannot read them next session.
19
+
20
+ ## Core Responsibilities
21
+
22
+ 1. **Internal Search** - locate files/components, understand code logic, discover patterns
23
+ 2. **External Search** - library docs, API references, best practices
24
+ 3. **Persist** - write each research topic to `{TASK_DIR}/research/<topic>.md`
25
+ 4. **Report** - return file paths + one-line summaries to the main agent, not full content
26
+
27
+ ---
28
+
29
+ ## Workflow
30
+
31
+ ### Step 1: Resolve Current Task
32
+
33
+ Run `python3 ./.trellis/scripts/task.py current --source` to get the active task path. Prefer an `Active task: <path>` line in the dispatch prompt when present. If no active task is set, ask the user where to write output; do NOT guess.
34
+
35
+ Ensure `{TASK_DIR}/research/` exists before writing findings.
36
+
37
+ ### Step 2: Understand Search Request
38
+
39
+ Classify the request as internal, external, or mixed. Determine scope and expected output shape.
40
+
41
+ ### Step 3: Execute Search
42
+
43
+ Run independent searches in parallel where possible. Read relevant source files, specs, and documentation before forming conclusions.
44
+
45
+ ### Step 4: Persist Each Topic
46
+
47
+ For each distinct research topic, write a markdown file at `{TASK_DIR}/research/<topic-slug>.md` using the File Format below.
48
+
49
+ ### Step 5: Report to Main Agent
50
+
51
+ Reply with ONLY:
52
+
53
+ - List of files written, paths relative to repo root
54
+ - One-line summary per file
55
+ - Any critical caveats that the main agent needs to know right now
56
+
57
+ Do NOT paste full research content into the reply. The files are the contract.
58
+
59
+ ---
60
+
61
+ ## Scope Limits
62
+
63
+ ### Write Allowed
64
+
65
+ - `{TASK_DIR}/research/*.md` - your own output
66
+ - Creating `{TASK_DIR}/research/` if it doesn't exist
67
+
68
+ ### Write Forbidden
69
+
70
+ - Code files (`src/`, `lib/`, etc.)
71
+ - Spec files (`.trellis/spec/`) - main agent should use the update-spec skill instead
72
+ - `.trellis/scripts/`, `.trellis/workflow.md`, platform config (`.dsh/`, `.claude/`, `.cursor/`, etc.)
73
+ - Other task directories
74
+ - Any git operation
75
+
76
+ If the user asks you to edit code, decline and suggest spawning `trellis-implement` instead.
77
+
78
+ ---
79
+
80
+ ## File Format
81
+
82
+ Each `{TASK_DIR}/research/<topic>.md` should follow:
83
+
84
+ ```markdown
85
+ # Research: <topic>
86
+
87
+ - Query: <original query>
88
+ - Scope: internal / external / mixed
89
+ - Date: YYYY-MM-DD
90
+
91
+ ## Findings
92
+
93
+ ### Files Found
94
+
95
+ | File Path | Description |
96
+ |---|---|
97
+ | `src/services/xxx.ts` | Main implementation |
98
+ | `src/types/xxx.ts` | Type definitions |
99
+
100
+ ### Code Patterns
101
+
102
+ <describe patterns, cite file:line>
103
+
104
+ ### External References
105
+
106
+ - [Library X docs](url) - <why relevant, version constraints>
107
+
108
+ ### Related Specs
109
+
110
+ - `.trellis/spec/xxx.md` - <description>
111
+
112
+ ## Caveats / Not Found
113
+
114
+ <anything incomplete or uncertain>
115
+ ```
116
+
117
+ ---
118
+
119
+ ## Guidelines
120
+
121
+ ### Do
122
+
123
+ - Provide specific file paths and line numbers
124
+ - Quote actual code snippets only when they are relevant
125
+ - Persist every topic to its own file
126
+ - Return file paths in your reply, not the full content
127
+ - Mark "not found" explicitly when searches come up empty
128
+
129
+ ### Don't
130
+
131
+ - Don't write code or modify files outside `{TASK_DIR}/research/`
132
+ - Don't guess uncertain info
133
+ - Don't paste full research text into the reply
134
+ - Don't propose implementation changes unless the main agent explicitly asked for research options
@@ -1,21 +1,22 @@
1
1
  /**
2
2
  * DeepSeek Harness (dsh) template module.
3
3
  *
4
- * dsh is a class-2 pull-based, skills-only platform:
5
- * - Workflow + bundled skills go to the shared `.agents/skills/` root via
6
- * the neutral resolver (byte-identical to Codex/Gemini/Pi/Kimi writes).
4
+ * dsh is a class-2 pull-based platform:
5
+ * - Workflow/bundled skills go to the shared `.agents/skills/` root via the
6
+ * neutral resolver (byte-identical to Codex/Gemini/Pi/Kimi writes).
7
7
  * - User-invocable entry points (`trellis-start` / `trellis-continue` /
8
- * `trellis-finish-work`, loaded by the dsh agent through its skill-loader
9
- * tool) live under `.dsh/skills/<name>/SKILL.md` — dsh's own highest-rank
10
- * project skill root.
8
+ * `trellis-finish-work`) and Trellis role prompts live under
9
+ * `.dsh/skills/trellis-agent-<role>/SKILL.md`.
11
10
  * - Operator guide `.dsh/DSH.md`.
12
11
  *
13
- * dsh has no shipped session-start hook, so `trellis-start` is kept as a
14
- * user-invocable skill. dsh ships no project-level sub-agent definition
15
- * surface, so no trellis-implement / trellis-check / trellis-research agent
16
- * prompts are written; implement/check/research run inline through the
17
- * workflow skills.
12
+ * dsh has no project-level hooks/settings file Trellis may write and no
13
+ * declarative custom sub-agent definitions, so the Trellis agent prompts ship
14
+ * as skills; the main session dispatches them through the `subagent` tool and
15
+ * trellis-agent-implement / trellis-agent-check get the pull-based prelude.
18
16
  */
17
+ import { type AgentTemplate } from "../template-utils.js";
18
+ /** Source role prompts; the configurator installs collision-free DSH skills. */
19
+ export declare function getAllAgents(): AgentTemplate[];
19
20
  /** Operator guide copied to `.dsh/DSH.md`. */
20
21
  export declare function getDshGuide(): string;
21
22
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/templates/dsh/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAMH,8CAA8C;AAC9C,wBAAgB,WAAW,IAAI,MAAM,CAEpC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/templates/dsh/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,EAAwB,KAAK,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAIhF,gFAAgF;AAChF,wBAAgB,YAAY,IAAI,aAAa,EAAE,CAE9C;AAED,8CAA8C;AAC9C,wBAAgB,WAAW,IAAI,MAAM,CAEpC"}
@@ -1,23 +1,25 @@
1
1
  /**
2
2
  * DeepSeek Harness (dsh) template module.
3
3
  *
4
- * dsh is a class-2 pull-based, skills-only platform:
5
- * - Workflow + bundled skills go to the shared `.agents/skills/` root via
6
- * the neutral resolver (byte-identical to Codex/Gemini/Pi/Kimi writes).
4
+ * dsh is a class-2 pull-based platform:
5
+ * - Workflow/bundled skills go to the shared `.agents/skills/` root via the
6
+ * neutral resolver (byte-identical to Codex/Gemini/Pi/Kimi writes).
7
7
  * - User-invocable entry points (`trellis-start` / `trellis-continue` /
8
- * `trellis-finish-work`, loaded by the dsh agent through its skill-loader
9
- * tool) live under `.dsh/skills/<name>/SKILL.md` — dsh's own highest-rank
10
- * project skill root.
8
+ * `trellis-finish-work`) and Trellis role prompts live under
9
+ * `.dsh/skills/trellis-agent-<role>/SKILL.md`.
11
10
  * - Operator guide `.dsh/DSH.md`.
12
11
  *
13
- * dsh has no shipped session-start hook, so `trellis-start` is kept as a
14
- * user-invocable skill. dsh ships no project-level sub-agent definition
15
- * surface, so no trellis-implement / trellis-check / trellis-research agent
16
- * prompts are written; implement/check/research run inline through the
17
- * workflow skills.
12
+ * dsh has no project-level hooks/settings file Trellis may write and no
13
+ * declarative custom sub-agent definitions, so the Trellis agent prompts ship
14
+ * as skills; the main session dispatches them through the `subagent` tool and
15
+ * trellis-agent-implement / trellis-agent-check get the pull-based prelude.
18
16
  */
19
17
  import { createTemplateReader } from "../template-utils.js";
20
- const { readTemplate } = createTemplateReader(import.meta.url);
18
+ const { listMdAgents, readTemplate } = createTemplateReader(import.meta.url);
19
+ /** Source role prompts; the configurator installs collision-free DSH skills. */
20
+ export function getAllAgents() {
21
+ return listMdAgents();
22
+ }
21
23
  /** Operator guide copied to `.dsh/DSH.md`. */
22
24
  export function getDshGuide() {
23
25
  return readTemplate("DSH.md");
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/templates/dsh/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAE5D,MAAM,EAAE,YAAY,EAAE,GAAG,oBAAoB,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAE/D,8CAA8C;AAC9C,MAAM,UAAU,WAAW;IACzB,OAAO,YAAY,CAAC,QAAQ,CAAC,CAAC;AAChC,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/templates/dsh/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,EAAE,oBAAoB,EAAsB,MAAM,sBAAsB,CAAC;AAEhF,MAAM,EAAE,YAAY,EAAE,YAAY,EAAE,GAAG,oBAAoB,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAE7E,gFAAgF;AAChF,MAAM,UAAU,YAAY;IAC1B,OAAO,YAAY,EAAE,CAAC;AACxB,CAAC;AAED,8CAA8C;AAC9C,MAAM,UAAU,WAAW;IACzB,OAAO,YAAY,CAAC,QAAQ,CAAC,CAAC;AAChC,CAAC"}