# 📁 dsh-projects ### *A Project Center for DeepSeek Harness Web — inspired by Cowork & WorkBuddy.* [![DeepSeek Harness](https://img.shields.io/badge/DeepSeek%20Harness-plugin-4D6BFE)](https://github.com/deepseek-ai) [![Version](https://img.shields.io/badge/version-0.1.0-4D6BFE)](package.json) [![Node.js](https://img.shields.io/badge/Node.js-22.19%2B-4D6BFE)](package.json) [![License: MIT](https://img.shields.io/badge/license-MIT-4D6BFE)](LICENSE)
📂  Need a persistent **Projects** concept in DSH Web — beyond plain sessions?
🧭  Need each project bound to a real folder with its own instructions and files?
🔄  Need project memory synced to the folder's `CLAUDE.md` so every AI tool sees it?
### ✨ dsh-projects brings Cowork/WorkBuddy-style project management into DSH Web. A sidebar **📁 Projects** entry opens a full-screen project center: card grid, create dialog (name + instructions + folder), and a detail view with editable instructions, folder & file browsing, manual file pins, and two-way `CLAUDE.md` memory sync.
[Features](#features) · [Install](#install) · [Quick start](#quick-start) · [CLAUDE.md sync](#claudemd-sync) · [Data](#data) · [Development](#development) **English** · [简体中文](README.zh-CN.md)
--- ## Features - **Sidebar entry** — a `📁 项目` row injected below the Automations entry (falls back next to the task-board/SSH/skill-explorer family when dsh-automation is not installed). - **Project grid** — searchable card grid (name, description, updated date, folder badge). - **Create project** — name + instructions (the "prompt" telling AI how to work in this project) + link an existing folder or plan a new one. - **Project detail** — - editable **instructions**; - **related files**: live listing of the linked folder + manually pinned files (pick via an in-app file browser — no typing paths); - **folder** is editable (re-browse after change); - **scheduled tasks / memory** placeholders for future automation & mneme integration. - **CLAUDE.md two-way sync** — - *export*: save instructions and (optionally) write them into the folder's `CLAUDE.md` inside a `` fenced section — any AI tool (Claude Code, Cowork, WorkBuddy…) working in that folder reads the project context; - *import*: load the folder's `CLAUDE.md` back into the instructions (project section preferred, whole file fallback). - **Persistent & portable** — data lives in `~/.dsh/dsh-projects/projects.json` (plain JSON, git-friendly). No user path is hard-coded. ## Install The plugin is a standard DSH web plugin bundle. Two ways: ### Via GitHub (recommended) ```bash dsh plugin --profile web add github:alwaysmid-19990/dsh-projects ``` ### Manual (local copy) ```bash mkdir -p ~/.dsh/plugins git clone https://github.com/alwaysmid-19990/dsh-projects.git ~/.dsh/plugins/dsh-projects # register into the web profile: # add "dsh-projects": "link:/Users//.dsh/plugins/dsh-projects" to # ~/.dsh/profiles/web/package.json dependencies, and append "dsh-projects" # to its dsh.profile.bundles list, then: # ln -s ~/.dsh/plugins/dsh-projects ~/.dsh/profiles/web/node_modules/dsh-projects ``` Then **restart DSH Web**. The sidebar shows the `📁 项目` entry. > The plugin self-registers through its bundled `cordis.patch.yml`; no extra > configuration is required. ## Quick start 1. Click **📁 项目** in the sidebar (bottom of the nav group). 2. Click **+ 新项目**. 3. Enter a name and instructions, then link an existing folder (e.g. your real working directory). 4. Open the project card → edit instructions, browse folder files, pin key files via **📂 选择文件…**. 5. Optionally tick *sync to CLAUDE.md* when saving, or press **📥 载入为项目说明** to pull the folder's existing `CLAUDE.md` into the instructions. ## CLAUDE.md sync The sync is **opt-in per save** (checkbox off by default — editing instructions never touches the folder unless you ask). When enabled, the host writes a fenced section into `/CLAUDE.md`: ```markdown ## 项目:My project Instructions text… ``` - Existing section → replaced in place. - No section → appended at the end. - No `CLAUDE.md` → created. ## Data | What | Where | | --- | --- | | Project records | `~/.dsh/dsh-projects/projects.json` | | REST API | `/api/dsh-projects/*` (host half, `webServer`) | | Folder listing | read-only `readdirSync` via `/api/dsh-projects/browse` | ## Development ```bash node --check lib/index.js # host half node --check lib/client.js # browser half (ModuleLoader format) ``` Layout: - `lib/index.js` — host half: REST endpoints, JSON persistence, CLAUDE.md sync. - `lib/client.js` — browser half: sidebar entry (self-healing DOM injection), project center UI (React without JSX), in-app file picker. - `cordis.patch.yml` — bundle patch that mounts the plugin row. ## License [MIT](LICENSE)