Skip to main content

dskin

7Stars1Forks0Issues0Watchers

Adds 1-4 pixel kitten skins to the DSH Web interface while preserving the original UI. Kittens are draggable, can change outfits, and respond to interactions.

Evidence5/5methodologySourceInstallMaintenanceDSH versionSecurity scan
Machine-auditedInstall commandRepo verifieddsh-plugin topicLicenseREADMEAI wiki
Language
TypeScript
License
MIT
Branch
main
cartoondeepseek-harnessdshdsh-pluginpixel-artskinthemeui-skin

Install

cmdweb profile
$ dsh plugin --profile web add --allow-build=dskin github:dancingmemory/dskin

Run the command above in your terminal to install this plugin via the dsh CLI. You can switch Profile in the top-right corner. New to dsh? Read the beginner tutorial

Install via your agent

Install the DeepSeek Harness plugin dancingmemory/dskin for me: review the repository at https://github.com/dancingmemory/dskin first, then run the install command and verify the plugin loads successfully.

Paste this instruction to the DSH Web GUI assistant — it will install and verify for you.

One-Line Description

Overlays a cartoon pixel kitten skin on the DeepSeek Harness (DSH) web interface, with zero modifications to the original interface; kittens walk at the bottom of the screen, meet and play, can be dragged, and even hang from the top.

Core Features

  • Randomly generates 1~4 pixel kittens at the screen bottom (Orange / White / Black / Calico), quantity adjustable, individual breed changeable
  • Kittens interact with each other: stop when they meet, face each other and hop, then scatter; click on a single kitten to make it jump
  • Mouse can drag kittens to any position; dragging to the top edge makes the kitten hang upside down without falling, pulling it down makes it land
  • Hovering over kittens shows a heart ♥; selected kittens display a ★ on their head, automatically deselected after 10 seconds
  • 🐾 button in bottom right opens panel to add/remove quantity, random outfit change, toggle mute; occasionally kittens show random quotes (from 1000+ Chinese proverbs)
  • Built-in upgrade check: reads GitHub releases in background every 6 hours, prompts one-click upgrade page when new version found

Technical Implementation

  • Language: TypeScript
  • Key Dependencies: @deepseek-ai/cordis (peer types), CSS Modules (scoped styling), Web Audio API (meow synthesis)
  • Architecture Pattern: Follows dsh.client client plugin contract, exports apply(ctx), all DOM writes recovered via ctx.effect disposer on unmount; cordis.patch.yml inserts ui-skin-dskin line into web graph
  • Entry Files: src/index.ts (host-side empty implementation) + src/client/index.ts (browser main logic apply(ctx))

Use Cases

Users who want to add companionship to DSH Web pages that are kept open for long periods; people who don't want to modify the interface layout but want a bit of "pleasant" detail. Not suitable for users pursuing serious productivity or wanting DSH to run lighter—multiple kittens continuously occupy requestAnimationFrame.

Prerequisites & Compatibility

DependencyMinimum VersionDescription
DSHNot declaredFollows dsh.client contract, no dsh version constraint in package.json
NodeNot declaredNo engines declared, follows current DSH CLI requirements
PlatformCross-platformRuns only in DSH Web browser side; all capabilities based on browser DOM / Web Audio
Native ModulesNoneNo node-gyp dependencies, no system-level compilation

Installation

dsh plugin --profile web add --allow-build=dskin github:dancingmemory/dskin

Configuration

This plugin requires no extra configuration. All user preferences (cat quantity, individual breeds, mute status, preferred cat type) are automatically written to browser localStorage, managed internally by the plugin:

  • Quantity & breeds: key dskin-cats, saves { count, types[] }
  • Preferred cat type: key dskin-kitten, saves currently selected cat type id
  • Mute toggle: key dskin-sound, "1" = on, "0" = off

FAQ

Q: No changes after installation?

A: The plugin is loaded according to dsh.client contract and must be installed to web profile and restarted dsh web to be injected; if using pnpm ≥ 10 and first installation fails, add allowBuilds: dskin: true to ~/.dsh/profiles/web/pnpm-workspace.yaml and re-run the installation command.

Q: Will kittens block interface operations?

A: No. CSS explicitly limits the activity zone to the screen bottom (bottom: 4px, 160px high home zone), all kittens have fixed highest z-index but are small in size, don't consume events, clicks pass through to original UI.

Q: Can it be restored to original after uninstall?

A: Yes. After dsh plugin --profile web remove dskin and restarting dsh web, the ctx.effect disposer will clean up the data-dsh-dskin attribute on body, all DOM nodes, and CSS Modules styles.

Q: Will this affect DSH's conversations with large models?

A: No. The plugin does not inject cordis services, does not send cordis events, does not read or forward chat content; the only external network request is reading api.github.com/repos/dancingmemory/dskin/releases/latest every 6 hours to check for new versions, falling back to raw package.json on failure.

Q: Meow sounds are annoying, how to turn off?

A: Click the 🐾 button in bottom right to open panel, click 🔊 meow to switch to 🔇 mute, status written to dskin-sound for permanent effect. Sound is synthesized in real-time using Web Audio, no audio files, no network traffic.

Q: Can more kitten breeds be added?

A: Current version (1.0.17) has 4 built-in kitten breeds; to add more, increase frame data in source code src/client/mascots.ts and add to KITTENS array, then rebuild.

Q: Kittens stuck and not moving?

A: Code has a stuck watchdog (auto-return to bottom edge fix after 4 seconds with no movement), normally won't truly freeze; if browser tab goes to background or power saving mode, requestAnimationFrame gets throttled, kittens will naturally recover after returning.

Difficulty Level

Beginner — one command to install, zero configuration, all interactions through bottom right 🐾 panel, regular users can use directly.

Known Issues & Limitations

  • pnpm ≥ 10 may refuse to execute build scripts for git dependencies on first install, need to manually write allowBuilds: dskin: true to profile's pnpm-workspace.yaml (README.md:103-104)
  • Dragging kittens to extreme top of screen enters hanging "hang" state; source code comments (src/client/index.ts:586-600) specially handle fallback for release position too low, but user experience edge case still exists where users mistakenly think kitten is "stuck"
  • Hanging kittens occasionally need to be dragged down more than 40px to unlock (UNHANG_DRAG = 40, src/client/index.ts:121)
  • Browser must support Web Audio API for sound; when unsupported or muted, meow automatically degrades to no operation
  • Upgrade prompt depends on GitHub API accessibility; check silently fails when network is restricted or GitHub rate-limited, does not affect main functionality
  • When localStorage is disabled (privacy mode / enterprise policy), cat quantity and breed selection won't persist across sessions, but current session functionality works normally

Read the usage guide →

Install steps, key points, FAQ and compatibility for this plugin — auto-derived from indexed fields.

Listing badge

Listed on deepseek-plugin.org
[![Listed on deepseek-plugin.org](https://img.shields.io/badge/listed_on-deepseek--plugin.org-007EC6)](https://deepseek-plugin.org/plugins/dancingmemory/dskin)

Paste this markdown into your GitHub README to link back to this listing. The badge only states the listing — not a security endorsement.

← Back to plugin directory