lznnnnn1998/dsh-artcraft ↗★ 0

dsh-artcraft

Every ArtCraft (storytold) crafting app as a DSH plugin — twelve Cordis plugins driving CADCraft, GridCraft, SoundCraft and nine more headlessly over each app's own CLI and MCP server. 适合需要通过DSH代理无头控制CAD、表格、音视频等12款创作应用的用户。

Package
dsh-artcraft
Compatibility
Unverified
Version
0.1.0
License
Apache-2.0
Last updated
Oct 13, 2026

Install

$npx -p @deepseek-ai/dsh dsh plugin --profile web add github:lznnnnn1998/dsh-artcraft

ArtCraft × DSH

Twelve crafting applications. One agent. Zero source changes.

Every app from the ArtCraft org — CAD, spreadsheets, audio, video, photo, vector, PDF, slides, documents — exposed to DeepSeek Harness as a first-class plugin.

DSH plugin built on Cordis License Plugins Tools MCP Verified npm

English · 中文


$ dsh --profile web
you › make me a Q3 sales spreadsheet with a chart, save it to ~/Documents

  ⏺ gridcraft_commands  {"search": "chart"}          315 commands, 8 families
  ⏺ gridcraft_describe  {"id": "insert.chart"}       {range?, type?, title?, at?}
  ⏺ gridcraft_run       sample "sales", 2 commands   exited 0 in 41ms
  ⏺ gridcraft_inspect   ~/Documents/q3.xlsx          1 sheet, 1 chart, A1:H24

✔ GridCraft wrote ~/Documents/q3.xlsx (14,208 bytes)

What this is

The ArtCraft suite is twelve native Rust applications. Each one already ships a headless CLI and its own MCP server — but nothing tells an agent they exist, what they can do, or how to call them.

This repository closes that gap. Each app becomes a DSH plugin that registers model-callable tools on ctx.tools, discovers the app's binary on your machine, and drives it as an external process.

No craft source is ever modified. Every plugin lives here. The applications are dependencies, not forks.

The twelve

CraftWhat it doesCommandsMCP tools
📐CADCraftCAD and drafting (AutoCAD-style)30511
📊GridCraftSpreadsheets (Excel-style)31521
🎚️SoundCraftDigital audio workstation46517
🖼️PhotoCraftRaster image editing (Photoshop-style)85821
🌄LightCraftPhoto library and raw development296318
📄PdfCraftPDF reading and editing161161
🖋️VectorCraftVector art (Illustrator-style)74332
🎬EffectCraftMotion graphics (After Effects-style)66927
🎞️FilmCraftNon-linear video editing69317
🎨DesignCraftPage and layout design (InDesign-style)44625
📽️DeckCraftPresentations (PowerPoint-style)22625
📝WordCraftWord processing (Word-style)46016

Command counts are read live from each binary; MCP counts are what each server declares.

Two surfaces per craft

Every plugin exposes both, because they answer different questions:

Generic commandsThe craft's own MCP server

Reaches the entire application — every menu item is a command id.

gridcraft_commands  {"search": "chart"}
gridcraft_describe  {"id": "insert.chart"}
gridcraft_run       {"commands": [...], "save": "..."}
gridcraft_inspect   {"file": "..."}
gridcraft_convert   {"input": "...", "output": "..."}

Modelled operations with real JSON Schemas, served over JSON-RPC by the app itself.

gridcraft_mcp_tools  {"search": "range"}
gridcraft_mcp_call   {"tool": "write_range",
                      "arguments": {"range": "A1",
                                    "values": [["x"]]}}
gridcraft_mcp_status {}

The MCP server is spawned once per plugin and kept warm — starting GridCraft's engine costs ~600 ms — then shut down after five idle minutes or when the plugin unloads.

Quick start

git clone https://github.com/lznnnnn1998/dsh-artcraft
cd dsh-artcraft

# 1. the craft CLIs — macOS, Windows and Linux, no Rust toolchain needed
node scripts/install-craft.mjs
#    …or compile them from source instead (needs Rust, ~1 min per craft):
# node scripts/install-craft.mjs --from-source

# 2. install the plugins into a DSH profile, then restart it
node scripts/install-into-profile.mjs --profile web

Or install a single craft from npm, straight into a profile:

dsh plugin --profile web add dsh-artcraft-plugin-gridcraft

Each craft is its own package: dsh-artcraft-plugin- for cadcraft, gridcraft, soundcraft, deckcraft, wordcraft, photocraft, lightcraft, pdfcraft, vectorcraft, effectcraft, filmcraft and designcraft.

Then just ask:

"Open the CADCraft sample floor plan and export a PNG of the kitchen." "Take the demo song in SoundCraft, drop the kick 6 dB and bounce it." "Render page 3 of this PDF at 300 dpi."

Full instructions, configuration and troubleshooting: docs/INSTALL.md

Requirements

  • Node.js ^22.19.0 || >=24.0.0
  • A running DeepSeek Harness profile
  • macOS, Windows 11 or Ubuntu 24.04 — the installer picks the right build, and nothing else is required (no Rust, no unzip, no tar)

Nothing else. The craft apps are not built from source; step 1 downloads signed release binaries.

Verify it yourself

node scripts/verify.mjs

Every craft must locate its binary, load its live catalog, expose the right tool set, complete an MCP handshake, and produce a non-empty artifact from a real headless run:

craft        binary                       catalog        tools  mcp                     run
cadcraft     cadcraft-cli 0.5.0           305 (live)     8      11 tools (list_commands ok)  ok → out.dxf (34140 B)
deckcraft    deckcraft-cli 0.5.0          226 (live)     8      25 tools (list_commands ok)  ok → out.deckcraft (7471 B)
designcraft  designcraft-cli 0.6.0        446 (live)     6      25 tools (list_commands ok)  ok → out.pdf (2028 B)
effectcraft  effectcraft-cli 0.8.0        669 (live)     8      27 tools (list_commands ok)  ok → out.ecproj (732438 B)
filmcraft    filmcraft-cli 0.6.0          693 (live)     8      17 tools (command_list ok)   ok → out.fcproj (3264 B)
gridcraft    gridcraft-cli 0.5.0          315 (live)     8      21 tools (list_commands ok)  ok → out.xlsx (7682 B)
lightcraft   lightcraft-cli 0.6.0         296 (live)     7      318 tools (command_list ok) ok → out.bin (108535 B)
pdfcraft     pdfcraft-cli 0.7.1           161 (live)     8      161 tools (doc_list ok)      ok → out.pdf (802 B)
photocraft   photocraft-cli 0.7.0         858 (live)     8      21 tools (command_list ok)  ok → out.png (168 B)
soundcraft   SoundCraft CLI 0.6.1         465 (live)     8      17 tools (list_commands ok)  ok → out.wav (16094696 B)
vectorcraft  vectorcraft-cli 0.10.0       743 (live)     7      32 tools (command_list ok)  ok → out.svg (251 B)
wordcraft    wordcraft-cli 0.5.0          460 (live)     8      16 tools (list_commands ok)  ok → out.docx (6286 B)

all 12 plugin(s) verified

How it works

Each craft is described once, in dsh-plugins/craft-kit/src/profiles.mjs. The kernel turns that description into tools and hides every difference between the apps:

CraftHow a headless run is spelled
GridCraft, CADCraft, DeckCraft, WordCraft, SoundCraft, DesignCraft--cmd 'id={...}'
PhotoCraft, VectorCraft--cmd id --params '{...}'
LightCraft, PdfCraftpositional id key=value
EffectCraftpositional id {...}
FilmCrafta generated JSONL script file
dsh-plugins/
├── craft-kit/              shared kernel
│   ├── src/                discovery · exec · catalogs · tool factory · MCP client
│   ├── lib/                generated plain ESM
│   └── catalog/            command snapshots + discovered binary paths
├── plugin-cadcraft/        one DSH plugin per craft
├── plugin-gridcraft/       …
└── plugin-wordcraft/

Every fact about the binaries was measured by running them, never assumed. Where a craft's real CLI contradicted an expectation, the raw output is recorded in docs/craft-notes/.

Beyond the twelve

All 23 repositories matching craft under github.com/storytold were cloned and assessed (docs/CRAFT-MATRIX.md). Twelve are applications with a published headless CLI and became plugins. The other eleven are libraries, asset bundles, or GUIs without a scriptable entry point — including artcraft, the umbrella app, whose MCP support is a documented UI stub.

Documentation

docs/INSTALL.mdinstall, configure, use, troubleshoot
docs/CRAFT-MATRIX.mdthe 23 repositories and their verified CLI surfaces
docs/craft-notes/per-craft evidence, quirks, limitations

Contributing

Found a craft whose CLI behaves differently than described? The notes are meant to be corrected — open an issue with the raw output, or run the offending command with tracing on:

DSH_ARTCRAFT_TRACE=/tmp/trace.log node scripts/verify.mjs 

That writes the exact argv of every invocation to /tmp/trace.log.

License

Dual-licensed under MIT or Apache-2.0, at your option — the same terms the craft applications use.

The craft binaries are downloaded from their own GitHub releases and remain under their own licences; none of their source is vendored here.

Built with DeepSeek Harness · powered by Cordis · for the ArtCraft community