@pennixrv/trellis 0.6.45 → 0.7.0-beta.5

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 (79) 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/mem.d.ts.map +1 -1
  5. package/dist/commands/mem.js +6 -13
  6. package/dist/commands/mem.js.map +1 -1
  7. package/dist/commands/workflow.d.ts +17 -0
  8. package/dist/commands/workflow.d.ts.map +1 -1
  9. package/dist/commands/workflow.js +222 -0
  10. package/dist/commands/workflow.js.map +1 -1
  11. package/dist/configurators/claude.d.ts.map +1 -1
  12. package/dist/configurators/claude.js.map +1 -1
  13. package/dist/configurators/dsh.d.ts +16 -19
  14. package/dist/configurators/dsh.d.ts.map +1 -1
  15. package/dist/configurators/dsh.js +38 -26
  16. package/dist/configurators/dsh.js.map +1 -1
  17. package/dist/configurators/gemini.d.ts.map +1 -1
  18. package/dist/configurators/gemini.js.map +1 -1
  19. package/dist/configurators/opencode.d.ts.map +1 -1
  20. package/dist/configurators/opencode.js +4 -0
  21. package/dist/configurators/opencode.js.map +1 -1
  22. package/dist/migrations/manifests/0.6.17.json +2 -2
  23. package/dist/migrations/manifests/0.7.0-beta.4.json +9 -0
  24. package/dist/migrations/manifests/0.7.0-beta.4.pennix.1.json +9 -0
  25. package/dist/migrations/manifests/0.7.0-beta.5.json +9 -0
  26. package/dist/templates/claude/hooks/statusline.py +7 -0
  27. package/dist/templates/claude/settings.json +22 -0
  28. package/dist/templates/codex/hooks/session-start.py +20 -1
  29. package/dist/templates/codex/hooks.json +25 -0
  30. package/dist/templates/common/bundled-skills/trellis-meta/SKILL.md +2 -2
  31. package/dist/templates/common/bundled-skills/trellis-meta/references/platform-files/agents.md +2 -1
  32. package/dist/templates/common/bundled-skills/trellis-meta/references/platform-files/hooks-and-settings.md +3 -2
  33. package/dist/templates/common/bundled-skills/trellis-meta/references/platform-files/overview.md +1 -1
  34. package/dist/templates/common/bundled-skills/trellis-meta/references/platform-files/platform-map.md +5 -4
  35. package/dist/templates/common/bundled-skills/trellis-meta/references/platform-files/skills-and-commands.md +1 -0
  36. package/dist/templates/common/bundled-skills/trellis-session-insight/SKILL.md +1 -1
  37. package/dist/templates/common/bundled-skills/trellis-session-insight/references/cli-quick-reference.md +2 -1
  38. package/dist/templates/copilot/hooks/session-start.py +20 -1
  39. package/dist/templates/dsh/DSH.md +61 -37
  40. package/dist/templates/dsh/agents/trellis-check.md +99 -0
  41. package/dist/templates/dsh/agents/trellis-implement.md +106 -0
  42. package/dist/templates/dsh/agents/trellis-research.md +134 -0
  43. package/dist/templates/dsh/index.d.ts +12 -11
  44. package/dist/templates/dsh/index.d.ts.map +1 -1
  45. package/dist/templates/dsh/index.js +14 -12
  46. package/dist/templates/dsh/index.js.map +1 -1
  47. package/dist/templates/opencode/plugins/inject-spec-context.js +121 -0
  48. package/dist/templates/opencode/plugins/inject-workflow-state.js +111 -10
  49. package/dist/templates/pi/extensions/trellis/index.ts.txt +164 -10
  50. package/dist/templates/shared-hooks/index.d.ts +8 -2
  51. package/dist/templates/shared-hooks/index.d.ts.map +1 -1
  52. package/dist/templates/shared-hooks/index.js +13 -1
  53. package/dist/templates/shared-hooks/index.js.map +1 -1
  54. package/dist/templates/shared-hooks/inject-spec-context.py +844 -0
  55. package/dist/templates/shared-hooks/inject-workflow-state.py +35 -9
  56. package/dist/templates/shared-hooks/session-start.py +22 -1
  57. package/dist/templates/trellis/config.yaml +47 -0
  58. package/dist/templates/trellis/index.d.ts +3 -0
  59. package/dist/templates/trellis/index.d.ts.map +1 -1
  60. package/dist/templates/trellis/index.js +6 -0
  61. package/dist/templates/trellis/index.js.map +1 -1
  62. package/dist/templates/trellis/scripts/common/active_task.py +24 -2
  63. package/dist/templates/trellis/scripts/common/cli_adapter.py +38 -6
  64. package/dist/templates/trellis/scripts/common/config.py +18 -0
  65. package/dist/templates/trellis/scripts/common/context_projection.py +2 -2
  66. package/dist/templates/trellis/scripts/common/git_context.py +34 -2
  67. package/dist/templates/trellis/scripts/common/paths.py +28 -0
  68. package/dist/templates/trellis/scripts/common/spec_inject.py +439 -0
  69. package/dist/templates/trellis/scripts/common/spec_match.py +395 -0
  70. package/dist/templates/trellis/scripts/common/task_store.py +88 -1
  71. package/dist/templates/trellis/scripts/common/trellis_config.py +46 -7
  72. package/dist/templates/trellis/scripts/common/workflow_phase.py +3 -2
  73. package/dist/templates/trellis/scripts/common/workflow_selection.py +177 -0
  74. package/dist/templates/trellis/scripts/task.py +83 -0
  75. package/dist/templates/trellis/workflow.md +35 -30
  76. package/dist/types/ai-tools.d.ts.map +1 -1
  77. package/dist/types/ai-tools.js +26 -13
  78. package/dist/types/ai-tools.js.map +1 -1
  79. package/package.json +2 -2
@@ -452,6 +452,25 @@ def _strip_breadcrumb_tag_blocks(content: str) -> str:
452
452
  return re.sub(r"\n{3,}", "\n\n", stripped).strip()
453
453
 
454
454
 
455
+ def _resolve_workflow_md(root: Path, input_data: dict) -> Path:
456
+ """Resolve the active task's workflow file, falling back to the global one.
457
+
458
+ The per-task resolution rule lives in common.workflow_selection inside
459
+ .trellis/scripts. Older installed projects may not ship that module, and
460
+ hooks must never crash the session — ANY failure (import error, old
461
+ scripts tree, resolver bug) falls back to the global workflow.md.
462
+ """
463
+ try:
464
+ scripts_dir = root / ".trellis" / "scripts"
465
+ if str(scripts_dir) not in sys.path:
466
+ sys.path.insert(0, str(scripts_dir))
467
+ from common.workflow_selection import resolve_workflow_md # type: ignore[import-not-found]
468
+
469
+ return resolve_workflow_md(root, input_data, platform="copilot")
470
+ except Exception:
471
+ return root / ".trellis" / "workflow.md"
472
+
473
+
455
474
  def _build_workflow_toc(workflow_path: Path) -> str:
456
475
  """Inject only the compact Phase Index summary for SessionStart."""
457
476
  content = read_file(workflow_path)
@@ -503,7 +522,7 @@ Trellis compact SessionStart context. Use it to orient the session; load details
503
522
  output.write("\n</current-state>\n\n")
504
523
 
505
524
  output.write("<trellis-workflow>\n")
506
- output.write(_build_workflow_toc(trellis_dir / "workflow.md"))
525
+ output.write(_build_workflow_toc(_resolve_workflow_md(project_dir, hook_input)))
507
526
  output.write("\n</trellis-workflow>\n\n")
508
527
 
509
528
  output.write("<guidelines>\n")
@@ -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"}