[English](README.md) · [简体中文](README.zh.md) # dsh-user-experience [![awesome · DSH plugin](https://awesome-dsh-plugin.com/badge.svg)](https://awesome-dsh-plugin.com) > A UX walkthrough plugin for DeepSeek Harness (DSH): **AI simulates target users to uncover UX problems during development—before they reach production—and provides concrete optimization suggestions.** > > Scope: React + TypeScript / React + JavaScript / Vue 3, CSS/layout analysis, and optional browser evidence when the current Harness session can open the application. 🎉 Listed in [awesome-dsh-plugin](https://github.com/awesome-dsh-plugin/awesome-dsh-plugin). Existing automated checks (axe, Lighthouse) can only verify absolute rules — contrast ratio, missing alt text. But UX issues are inherently **relative**: a confirmation dialog before deleting protects an occasional user but wastes the time of an operator who processes hundreds of records a day. Without knowing *who it's for*, a "UX issue" cannot be defined. This plugin makes **target user personas** the basis of every finding. If the project has no personas yet, the plugin infers a short draft from the README and routes—there is no setup command. By having AI walk through the product as those users, it surfaces experience problems **during development** and gives concrete, locatable, reviewable optimization suggestions—not post-launch user feedback. **It is a pipeline, not a CLI.** Speak in plain language, or just edit a front-end file. There is no `/ux` command to learn. The report card leads with plain language (which page, what happened, how bad), and folds file paths and rule IDs into a "technical details" block you can copy straight to an AI in one click. Verdicts need no IDs either: click a button, or just say "the second one isn't a problem" or "ignore everything below level three". ## Install in Harness In DeepSeek Harness, enter: > Install the UX plugin in DeepSeek Harness: `dsh plugin --profile web add dsh-user-experience@0.4.2` Or run the command directly: ```sh dsh plugin --profile web add dsh-user-experience@0.4.2 ``` Name an exact version rather than `@latest`: pnpm 11 holds back releases published in the last 24 hours, so `@latest` can resolve to nothing on a fresh profile. Check the [npm version list](https://www.npmjs.com/package/dsh-user-experience?activeTab=versions) for newer releases. After a successful install, refresh the page. A restart is not required — restart or reload the `web` profile only if the market says it could not hot-load the plugin. Before installing, please read the [security note](#installation). ### Upgrading from a `github:` install `dsh plugin add github:DietCokewithSugar/dsh-user-experience` **no longer works**. This repository stopped committing `lib/`, so a Git checkout carries no build artifacts, and pnpm blocks the build step by default. The market reports: ``` 安装失败: dsh-user-experience — nothing installable: the plugin(s) need a build step (blocked by default, see allowBuilds) or ship no prebuilt artifacts ``` and the exported log names the Git spec: ``` [warn] install: github:DietCokewithSugar/dsh-user-experience: removed uninstallable pieces (no dsh manifest or missing build artifacts): dsh-user-experience [error] install: github:DietCokewithSugar/dsh-user-experience: nothing installable survived validation ``` Install by package name instead — note there is **no `github:` prefix**: ```sh dsh plugin --profile web add dsh-user-experience@0.4.2 ``` If the market still resolves the Git ref, the profile is reusing its old entry. Clean it out: 1. Delete the `"dsh-user-experience": "github:DietCokewithSugar/…"` line from the profile's `package.json`. 2. Delete that profile's `node_modules` **and** `pnpm-lock.yaml`. The lockfile pins the old Git resolution, so removing the dependency line alone is not enough. 3. Run the install command again. On Windows, this locates the profile manifest: ```powershell Get-ChildItem -Path $env:APPDATA,$env:LOCALAPPDATA,$env:USERPROFILE -Recurse -Filter package.json -Depth 6 -ErrorAction SilentlyContinue | Where-Object { (Get-Content $_.FullName -Raw -ErrorAction SilentlyContinue) -match 'dsh-user-experience' } | Select-Object FullName ``` ## Screenshots The walkthrough report explains the observed behavior and user impact in plain language: ![UX report card shown in Harness after installation](docs/images/ux-report-card.png) Speak in plain language to start a walkthrough. If personas are missing, the plugin drafts 1–3 users and asks once before continuing: ![Start a walkthrough in natural language and confirm target personas](docs/images/ux-natural-language.png) Once you confirm that a finding is real, the card provides a task Prompt you can copy to another AI. It describes the observed phenomenon rather than prescribing code changes, tells the AI to inspect the complete project context, and explicitly allows copy changes: ![Confirmed UX finding with a copy-to-AI Prompt action](docs/images/ux-confirmed-prompt.png) After you edit front-end code, the walkthrough runs itself—no persona questions, no interruption. It speaks up only for level-one / level-two issues: ![Automatic walkthrough after a code change, without interrupting coding](docs/images/ux-auto-scan.png) Multi-level evidence appears in the technical details so every visual or interaction conclusion can be reviewed: ![UX report with rendered and static evidence levels](docs/images/ux-multi-evidence.png) The report card and confirmation workflow can use the developer’s language (English interface below): ![English UX report card with interactive evidence](docs/images/ux-english-report.png) --- ## Supported inputs and evidence | Supported | Parsing engine | |---|---| | React + TypeScript (.ts / .tsx) | TypeScript compiler API (TSX) | | React + JavaScript (.js / .jsx) | Same engine; .js may contain JSX, always parsed as TSX | | Vue 3 (.vue SFC) | `@vue/compiler-sfc` block splitting + `@vue/compiler-dom` template AST; `