Contributing

September 1, 2026 · View on GitHub

English | 中文

This repository is Xiaotaozi DSH: the user product is xtz (apps/cli/), plus first-party plugins under plugins/. There is no desktop client.

Map of every doc: docs/README.md.
Spec (what is true): docs/conventions.md.
Procedure (how to do a job): docs/workflow.md.
Hard rules for agents: AGENTS.md.

Inner loop

git clone https://github.com/kedoupi/xiaotaozi-dsh.git
cd xiaotaozi-dsh
pnpm install
You are changingDo thisDo not
A pluginEdit and run deterministic gates in its dedicated topic worktreeStart pnpm dev or claim 3081 there outside an explicit bounded QA transfer; link: it into ~/.dsh
xtzcd apps/cli && pnpm install && pnpm check (fake home)Assume root pnpm install installed the CLI
Official user pathxtz start on ~/.dsh 3080Probe 3081, steal 3080, or rm -rf ~/.dsh

Normally keep pnpm dev running only in the repository-root hub as merged-main dogfood. A topic worktree may run it only during an explicit bounded QA transfer, then must return 3081 to the hub; do not edit topic work in the hub.

Cordis / Harness plugin APIs: official DeepSeek Harness docs. How this repo differs: docs/harness-plugin.md.

The repository-root hub stays clean on main and owns sandbox 3081. Develop every change in a short-lived topic branch checked out in its own worktree; do not develop or commit in the hub. Merge a green PR, fast-forward the hub, exercise the affected journey on main, then delete the merged local/remote branch and its clean worktree. Spec: docs/conventions.md § Git. Steps: docs/workflow.md § Dev environment.

Gates

Run from the task worktree root. None of these publishes.

CommandGuarantee
pnpm checkVersion/docs/manifest policy, types, plugin tests, script tests
pnpm check:buildBuilds plugins and inspects required lib/
pnpm check:pathIsolated Git #path:plugins/<slug> install can build
pnpm check:cliStandalone apps/cli workspace
pnpm check-homeDiagnoses unsafe links from ~/.dsh; never repairs

Before a commit: pnpm check, build the plugin you touched, pnpm check-home green (official home unlinked). Title: <type>(<scope>): <imperative summary>. Scope is the plugin slug, or repo. Do not commit lib/, node_modules, .dsh-home/, or $DSH_HOME. Do not bump cliApp or plugin versions except in a release commit (see docs/conventions.md § Versions). Open a PR into main; merge only after required CI passes. Ship xiaotaozi-dsh-cli from a git tag via GitHub Actions, not npm publish on a laptop (docs/workflow.md § Ship a product snapshot).

Where a change goes

KindPath
First-party pluginplugins/<slug>/ via pnpm new
Third-party pluginone row in plugins/market MARKET_PLUGINS — do not vendor the source
User productapps/cli/
Public siteapps/website/
Spec / proceduredocs/

Do not add apps/desktop/, packages/, or externals/. Desktop history is git show archive/desktop.