7d7d: A Plugin for Creating, Syncing, and Playing Mini-Games within DSH Web UI

Preface

In DSH’s plugin-based usage model, models can generate HTML5 or Flash mini-games. However, to view and play them directly within the DSH Web UI, entry points, static hosting, and playback boundaries are required.

7d7d is a DSH game portal plugin. It adds a 7D7D tab to the DSH Web UI session tab bar; clicking it opens the game portal. It hosts game static assets and APIs same-origin via the DSH main server /7d7d prefix. It scans the games/ directory in real-time to generate the portal catalog. It supports HTML5 single-file games and Flash SWF games, using a pinned version of Ruffle 0.5.0, self-hosted, for Flash playback.

What This Is

7d7d is licensed under MIT. The repository path is omdsh-dev/7d7d, the package name is @mattheliu/7d7d, and the copyright notice attributes to mattheliu.

It covers three phases:

  1. Generation: Provides the skills/7d7d skill, allowing models to generate game directories according to the specification.
  2. Synchronization: Automatically syncs community games from the community-games/ repository, and can also be triggered manually.
  3. Playback: Open the portal via the 7D7D tab in the DSH Web UI to run local or community games.

Core Capabilities

  • Adds a 7D7D tab to the DSH Web UI session tab bar; clicking it opens the game portal.
  • Hosts game static assets and APIs same-origin via the DSH main server /7d7d prefix.
  • Scans the games/ directory in real-time to generate the portal catalog, supporting local and community games.
  • Supports HTML5 single-file games and Flash SWF games.
  • Uses a pinned version of Ruffle 0.5.0, self-hosted, for Flash playback; does not load third-party scripts at runtime.
  • Provides the skills/7d7d skill, allowing models to generate game directories according to the specification.
  • Automatically syncs community games from the community-games/ repository, and can also be triggered manually.
  • Games run in a sandboxed iframe without allow-same-origin, creating an opaque origin boundary.

Installation and Enablement

Prerequisites are Node >= 22 and pnpm.

This plugin must be installed on a Web Profile that includes the exact @deepseek-ai/dsh-web-app@0.1.0-rc.6; a bare Profile does not provide the required services. The package.json marks private: true, and the profile description does not promise publication as a public npm package.

Follow the commands and configuration snippets provided below. First, clone the repository and install dependencies:

git clone https://github.com/omdsh-dev/7d7d.git
cd 7d7d
NPM_CONFIG_USERCONFIG=/dev/null pnpm install --frozen-lockfile --ignore-scripts

This step installs locked dependencies and skips script execution.

Next, build:

pnpm build

This step produces the plugin build output.

If Flash games are included, install the self-hosted Ruffle:

pnpm fetch:ruffle

This step installs the pinned version Ruffle 0.5.0; if local files are not installed, Flash playback will show a clear message and will not fall back to third-party CDNs.

Then, integrate into the Web Profile: merge the contents of cordis.patch.yml into the Web Profile layer, or install using the dsh.plugin.json manifest:

- insert:
  - id: 7d7d
    name: '@mattheliu/7d7d'

After restarting dsh web, open any session, and the 7D7D tab will appear in the tab bar.

Typical Usage

Have the Model Generate a Mini-Game

Place skills/7d7d/SKILL.md into DSH’s skills directory, then prompt:

Use 7d7d to create a "Space Shooter" mini-game

The model will generate the game directory according to the specification. The game directory specification is:

~/.dsh/7d7d/games/<slug>/
├── game.json
└── index.html

For Flash games, place game.swf in the same directory.

Submit Community Games

Place the game directory into community-games/<slug>/, then run:

node scripts/update-catalog.mjs

Regenerate catalog.json and submit a PR together.

Flash and Ruffle

7d7d uses a pinned version of Ruffle 0.5.0, self-hosted, for Flash game playback and does not load third-party scripts at runtime.

Flash games require the pinned Ruffle 0.5.0. A clear message will be shown if local files are not installed; there is no fallback to third-party CDNs. Regarding copyright, only upload SWFs you own or are authorized to use; do not extract commercial game assets from sites like 7k7k/4399.

Security Boundaries

7d7d games run in a sandboxed iframe without allow-same-origin, creating an opaque origin boundary.

Verified security restrictions include:

  • Games cannot read or write the GUI’s cookies/localStorage.
  • Games cannot access DSH’s /api bridge.
  • The standalone loopback port mode is deprecated.

Applicable Scenarios and Notes

Suitable for the following scenarios:

  • Viewing and trying out model-generated HTML5 mini-games within the DSH Web UI.
  • Managing games in the local games/ directory and viewing community games.
  • Self-hosted playback of authorized SWFs using the pinned Ruffle 0.5.0.

Points to note before installation:

  • The plugin’s declared permissions include filesystem:write, network:outbound, ui:extend, webserver:register.
  • The plugin runs with the current dsh process permissions; inspect the source code and license before installation.
  • Requires Node >= 22, pnpm, and a Web Profile containing the exact @deepseek-ai/dsh-web-app@0.1.0-rc.6.
  • The package.json marks private: true; publication as a public npm package is not promised.
  • Uploading SWFs requires ownership or authorization.

Links

  • Independent Community Directory: https://www.skillhub.cn/plugins/omdsh-dev/7d7d
  • GitHub: https://github.com/omdsh-dev/7d7d
羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

Xiaoye