Per-workspace project kanban board: nine kanban_* model tools for agent-driven planning plus a browser board UI, with disk persistence, undo, templates, and archiving.
Install
# from npm (prebuilt)
dsh plugin --profile web add dsh-project-kanban
# from GitHub (first run asks for allowBuilds approval — follow the hint, retry)
dsh plugin --profile web add github:StruggleYang/dsh-project-kanban
Any plugin you install runs third-party code with your own permissions — it can read your files, use your credentials, and reach the network, and tool approvals don’t sandbox it. GitHub-sourced plugins also run build scripts at install time — pnpm blocks those until you allow them, so an install can stop with ERR_PNPM_GIT_DEP_PREPARE_NOT_ALLOWED or ERR_PNPM_IGNORED_BUILDS; dsh prints the exact key to add under allowBuilds in your profile’s pnpm-workspace.yaml, and the install works on the next run. Allowing a build is a trust decision: only install sources you trust, and pin a commit (github:owner/repo#sha).
README
A kanban board inside DeepSeek Harness, integrated with the conversation: the agent writes planning cards via kanban_* tools while you talk, boards are isolated per workspace (project), and data is persisted to disk.
This is an official bundle-format plugin (dsh.bundle declaration + cordis.patch.yml patch layer), installed through the official dsh plugin flow.
Preview

Features
- Agent-driven planning: 9 model tools (
kanban_get,kanban_add_card,kanban_update_card,kanban_delete_card,kanban_move_card,kanban_duplicate_card,kanban_add_column,kanban_rename_column,kanban_delete_column) — the agent writes cards directly during planning and feature breakdown - Per-workspace isolation: each workspace (project) has its own board; agent tools resolve the current workspace automatically
- Disk persistence: every change is written to
kanban-board-<workspaceId>.json— survives page refresh and process restarts - Browser board UI: a "看板" (Kanban) tab in the session header, no extra install
- Labels & colors: 功能 (feature, blue) / 缺陷 (bug, red) / 文档 (docs, green) / 优化 (optimization, orange)
- Priority: high / medium / low with a colored left-edge bar (red / orange / blue)
- Custom card color: any
#rrggbbbackground via the color picker in the edit form - In-column ordering & duplication: ↑ / ↓ buttons (or the
toIndexparameter) reorder cards within a column; one-click duplicate copies label/priority/color - Filtering & search: keyword, label, and priority filters at the top of the board
- Due dates: YYYY-MM-DD deadline with automatic overdue highlighting
- Trash & restore: delete is soft (to the trash); restore or purge from the trash view
- Bulk operations: multi-select cards to move / label / trash in one action
- Stats bar: totals by label, priority, and overdue count
- Drag reordering: drag a card onto another card's position to insert there
- Templates: default / dev / content column presets (adds missing columns only)
- Undo: every write operation is undoable (50-step stack)
- Cross-workspace move: move a card into another project's board
- Session references: cards created by the agent record their source session (click to jump back)
Installation (official flow)
Prerequisites
dshCLI installed (npx @deepseek-ai/dshorpnpm dshfrom source)- Pick the target profile (
webis the default browser profile)
Option 1: from GitHub (recommended)
dsh plugin --profile web add github:StruggleYang/dsh-project-kanban
pnpm ≥ 10 refuses to run a git dependency's prepare script on the first try. Copy the package key pnpm prints into the profile's pnpm-workspace.yaml (at $DSH_HOME/profiles/web/pnpm-workspace.yaml):
allowBuilds:
dsh-project-kanban: true
Then re-run add.
⚠️ Security note:
allowBuildsgrants install-time code execution on your machine. Only allow sources you trust, and consider pinning a commit:dsh plugin --profile web add github:StruggleYang/dsh-project-kanban#<commit-sha>
Option 2: from a local checkout
git clone https://github.com/StruggleYang/dsh-project-kanban.git
dsh plugin --profile web add ./dsh-project-kanban
Option 3: tarball / npm (no build permission needed)
Download the tarball from the GitHub Releases page, or build it locally:
pnpm pack
dsh plugin --profile web add ./dsh-project-kanban-0.3.0.tgz
Published to npm:
dsh plugin --profile web add dsh-project-kanban
Verify and enable
dsh --profile web --dump-config # should end with a "# == dsh-project-kanban" layer
Then restart dsh web (bundle rows load at boot). The 8 kanban_* tools appear in the agent's toolset, and the "看板" tab appears in the session header.
Uninstall
dsh plugin --profile web remove dsh-project-kanban
Removes both the dependency and the layer; board data files are kept on disk.
How it works
- This package is a bundle (npm package + config layer):
package.jsondeclaresdsh.bundle.patch, anddshappends it to the profile'sdsh.profile.bundlesafter@deepseek-ai/dsh-base cordis.patch.ymlinserts thedsh-project-kanbanrow; the Loader resolves it by package name from the profile'snode_modulesindex.jsis a standard Cordis function plugin (export const name/export const inject/export function apply) registering tools viactx.tools.register- The browser half (
lib/client.js) is a hand-written__ModuleLoader__closure bundle (official client-modules format):require('react')resolves via the platform seed word, and the UI talks to the host through a same-originfetchto the/api/kanbanwebServer route - Tools resolve the current workspace via
exec.agent.session.header.cwd→ctx.workspaceRegistry.resolveByPath - Layer order:
@deepseek-ai/dsh-base→ this bundle → the profile'scordis.patch.yml→ user--patchoverlays; later layers override earlier rows by id
Agent tools
| Tool | Purpose |
|---|---|
kanban_get |
Read the current board (optional includeArchived for the trash) |
kanban_add_card |
Add a card (title, note, optional label / priority / color / dueDate) |
kanban_update_card |
Update title / note / label / priority / color / dueDate |
kanban_delete_card |
Soft-delete into the trash |
kanban_restore_card |
Restore a card from the trash |
kanban_purge_card |
Permanently delete a card |
kanban_bulk_delete_cards |
Bulk soft-delete multiple cards |
kanban_move_card |
Move across columns, or reorder within a column via toIndex |
kanban_duplicate_card |
Duplicate a card (carries all fields) |
kanban_move_card_to_workspace |
Move a card to another workspace's board |
kanban_undo |
Undo the last write operation |
kanban_add_column / kanban_rename_column / kanban_delete_column |
Column management |
Testing
Keyless end-to-end verification (no DEEPSEEK_API_KEY needed): creates a temporary profile, installs the local package, boots the web composition, and asserts the tool schemas plus the full HTTP workflow.
bash scripts/verify.sh
Repository layout
dsh-project-kanban/
├── package.json # bundle manifest (dsh.bundle) + client declaration (dsh.client)
├── cordis.patch.yml # patch layer: inserts the kanban plugin row
├── index.js # host plugin: 9 tools + /api/kanban data layer
├── lib/client.js # browser bundle (board UI, official client-modules format)
├── src/host.js # dynamic-plugin host half (historical reference)
├── src/client.js # dynamic-plugin browser half (historical reference)
├── README.md # this file
├── README.zh.md # 中文说明
├── TWEET.md # social post drafts (中文 / English)
└── LICENSE
License
MIT © 2026 StruggleYang
Links
More in this category
loopx-project/loopx#dsh-loopx-plugin★ 6581
LoopX, a provider-neutral, local-first state kernel and control plane for long-horizon agents: keeps Goal, Todo, gate, evidence, quota, recovery, and handoff state above DeepSeek Harness, while the plugin bootstraps the CLI and skills, admits bounded same-session continuation, and adds a loopback GoalBar for the exact bound loop.
Q00/ouroboros#integrations/dsh-plugin★ 6361
Config-only bundle that mounts Ouroboros through the DSH MCP client, exposing 36 interview, Seed, execution, evaluation, and evolution workflow tools in DSH.
chuspeeism/dashi-taskboard#deepseek-harness★ 3485
Embeds the active installed Codex Taskboard runtime in the DeepSeek Harness sidebar, using its launcher runtime descriptor instead of a fixed port.
NanmiCoder/dsh-agent-teams★ 2927
AgentTeams multi-agent teams.
EthanYoQ/AI-Novel-Writer#dsh-ai-novel-writer★ 2621
Installs a dedicated AI novel-writing preset and workbench: revisioned local project assets, a compact side drawer, and native approval-gated single-file changes.
shanliuling/dsh-image-gen★ 1479
Native conversational image generation for DeepSeek Harness: ask the agent to create an image, and it handles generation and keeps the result directly in the conversation.
Community comments
Comments are public GitHub Discussions. Loading them connects to GitHub and Giscus; a GitHub account is required to post.