Skills
dsh-trellis
beants/dsh-trellis · ★ 2
Integrates the Trellis task-driven development workflow into DeepSeek Harness (dsh): full Trellis skills, /trellis- commands, one-shot .trellis/ scaffolding and per-turn workflow state injection — DSH runs it even without hooks.
安装
dsh plugin --profile web add github:beants/dsh-trellisGitHub 源码安装:首次需按提示配置 allowBuilds 构建授权后重试
For install and environment setup, plus plugin development tutorials, see DSH community docs ↗
README
简体中文 · English
Bring the Trellis task-driven development workflow into DeepSeek Harness (dsh): full Trellis skill set,
/trellis-*commands, one-shot.trellis/scaffolding, and per-turn workflow-state injection — no hooks required.
The primary documentation is Chinese. This page is a condensed English reference.
Highlights
- 15 Trellis skills — session commands (
trellis-start/continue/finish-work), the five workflow skills (brainstorm,before-dev,check,break-loop,update-spec), DSH-adapted sub-agent dispatch definitions (trellis-agent-implement/check/research), and bundled skills (trellis-channel,trellis-session-insight,trellis-spec-bootstrap,trellis-meta). /trellis-*commands —/trellis-initscaffolds.trellis/;/trellis-statusshows session state plus a git guardrail block (uncommitted changes + recent commits, for pre-finish reconciliation); the workflow commands render session guidance.- Per-turn workflow-state injection — re-implements Trellis's
inject-workflow-statevia a per-agent system-prompt section re-evaluated on every prompt assembly (<trellis-workflow>with the active task + workflow.md phase guidance). DSH does offer cooperative waterfalls (agent/pre-stepand siblings, used by the officialdsh-agent-instructionsplugin to splice user-role messages); this plugin deliberately injects through the system prefix instead — stable token shape, KV-cache friendly, a clean conversation history, and no global switch can disable it. Alternatives were evaluated at source level (findings in.trellis/spec/dsh-plugin/): manually spliced pre-step messages persist into session history (accumulating per turn without dedup), while DSH's nativesystemPrompt.context()route materializes a user-role snapshot only when content changes — the preferred path should a migration ever happen. - Self-contained — no runtime dependency on the Trellis CLI; assets regenerate via
scripts/prepare-assets.mjs.
Install
dsh plugin --profile web add git+https://github.com/Beants/dsh-trellis.git
Enable in ~/.dsh/profiles/web/cordis.patch.yml:
- insert:
- name: dsh-trellis
config: {}
Restart dsh web, then in any session: /trellis-init your-name, then describe a development task — the agent runs the Trellis Plan → Implement → Verify → Finish loop.
Configuration
Three layers (later overrides earlier); the top two apply without a restart:
schema defaults <- profile plugin config (cordis.patch.yml, restart)
<- the dsh-trellis section of ~/.dsh/settings.yaml (hot-published)
- id: dsh-trellis
name: dsh-trellis
config:
injectWorkflowState: true # per-turn <trellis-workflow> breadcrumb (default true; new sessions)
workflowSectionOrder: -97 # prompt section order (default -97; new sessions)
pythonCommand: python3 # Python interpreter; set to `python` on Windows
statusCard: true # register the /trellis-card route (default true)
stallMinutes: 15 # idle minutes before the "possibly stalled" warning
circuitBreakerThreshold: 3 # rollbacks count that trips the breaker warning
User overrides live in ~/.dsh/settings.yaml (hot-applies to the next command /
status poll / new session):
dsh-trellis:
statusCard: false
stallMinutes: 10
Or edit them in the Web UI: Settings → Plugins → Trellis 工作流 — a tab that reads/writes every field through the standard DSH settings channel (revision-checked), no restart needed.
Hook equivalence
| Upstream hook | dsh-trellis equivalent |
|---|---|
session-start |
trellis-start skill — the model runs get_context.py via bash (pull-based) |
inject-workflow-state |
app:trellis prompt section, re-evaluated every prompt assembly |
inject-subagent-context |
Active task: <path> prelude in trellis-agent-* dispatch prompts |
Upstream Trellis
The Trellis CLI (packages/cli) registers a dsh platform: trellis init --dsh writes the same skills into .dsh/skills/ for team repos; the plugin adds commands/scaffolding on top.
Credits & License
- Trellis (Mindfold, AGPL-3.0-only): this plugin distributes Trellis's rendered skill content and
.trellis/scaffolding (regenerable viascripts/prepare-assets.mjs), so the package is AGPL-3.0-only — the derivation sets the license (seeLICENSE). A permissive license would require a full semantic rewrite rather than derivation (the route taken by the sibling project @banana-peeljj12/dsh-trellis, MIT at the cost of upstream sync). - DeepSeek Harness: the agent runtime this plugin runs on (Cordis plugin system, prompt sections, web client bundles, cooperative waterfalls).
- Built entirely by a DeepSeek V4 Flash (max reasoning effort) session inside DeepSeek Harness — design, implementation, the 292-commit upstream merge (7 conflicts, 1672 tests green), and the GitHub release were all done in-session.