Skills

dsh-trellis

beants/dsh-trellis · ★ 2

beants

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.

License
AGPL-3.0
Added
2026-08-23
Maintenance
active
Install kind
github

No manifest check is available; listing does not imply compatibility or security review.

安装

dsh plugin --profile web add github:beants/dsh-trellis

GitHub 源码安装:首次需按提示配置 allowBuilds 构建授权后重试

For install and environment setup, plus plugin development tutorials, see DSH community docs ↗

README

Source README · body: en · Read Chinese README

Table of contents
  1. Highlights
  2. Install
  3. Configuration
  4. Hook equivalence
  5. Upstream Trellis
  6. Credits & License

简体中文 · 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-init scaffolds .trellis/; /trellis-status shows 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-state via 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-step and siblings, used by the official dsh-agent-instructions plugin 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 native systemPrompt.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 via scripts/prepare-assets.mjs), so the package is AGPL-3.0-only — the derivation sets the license (see LICENSE). 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.