Skip to content
dsh.fish
Bundle

better-lvgl-for-dsh

LVGL 8.4 knowledge skill pack for DeepSeek Harness (dsh): registers an offline LVGL 8.4 skill library on ctx.skills so the agent writes correct v8 API code and avoids v9 confusion.

Source
sa998aaron
stars
2 stars
License
MIT
Updated
Updated 11 days ago

Readme

# better-LVGL-for-dsh

English | [中文](README.zh.md)

An offline **LVGL 8.4 knowledge skill pack** for [DeepSeek Harness](https://github.com/deepseek-ai/deepseek-harness) (`dsh`) — it teaches the agent to write correct LVGL **v8** API code and, above all, to stop mixing in v9 APIs (the single most common failure mode of LLM-generated LVGL code).

- **Plugin form**: dsh bundle (`dsh.bundle` declaration in `package.json` + `cordis.patch.yml` patch row)
- **Capability path**: Cordis plugin → runtime skills registered on `ctx.skills` → the stock `dsh-tool-skill` consumer → the model-facing skill catalog and `skill` loader
- **Skill format**: Agent Skills standard (`SKILL.md` + YAML frontmatter); pure ESM, zero dependencies, no build step

## Why

Large language models have seen far more LVGL **v9** content than v8.4, so they routinely produce code that mixes the two — e.g. `lv_display_create()` (v9) next to `lv_disp_drv_t` (v8), or `lv_async_call()` which does not exist in v8.4 at all. This pack pins the agent to v8.4 facts with nine focused, on-demand skills.

## Skills

| Skill | Coverage |
|---|---|
| `lvgl84` | Entry point & router: v8/v9 API confusion anchors, skill map, minimal working skeleton |
| `lvgl84-core` | Object model, screens, create/delete, coordinates/alignment/sizing, flags, scrolling |
| `lvgl84-widgets` | Quick reference for all 30+ built-in widgets: create functions and widget-specific APIs |
| `lvgl84-style` | Style system: shared vs local styles, part/state selectors, themes, transitions |
| `lvgl84-event` | Full event-code table, user_data, event bubbling, keypad/encoder groups, `lv_msg` |
| `lvgl84-layout` | Flex & Grid layouts in full, with a CSS-to-LVGL cheat sheet |
| `lvgl84-porting` | `lv_conf.h`, display flush_cb, input drivers, tick, double-buffer + DMA, thread safety |
| `lvgl84-pitfalls` | Symptom→cause→fix table: garbled screen, hangs, OOM, dead clicks, CJK fonts |
| `lvgl84-migration` | v7→v8.4 migration: renamed/removed widgets, rewritten styles/events/drivers |

## Installation

```sh
# From GitHub
dsh plugin --profile web add github:sa998aaron/better-LVGL-for-dsh

# Or from a local clone
dsh plugin --profile web add <absolute path to this repo>
```

Reload the profile afterwards. The `lvgl84-*` skills then appear in the model-facing skill catalog and load on demand; you can also invoke one explicitly with a `/lvgl84-style`-style gesture.

## Verify it works

Ask:

> Write an LVGL 8.4 UI with a title bar and three buttons.

If the generated code uses `lv_obj_create` / `lv_obj_set_flex_flow` / `lv_obj_add_event_cb` — and **not** v9's `lv_display_create` — the plugin is doing its job.

## Layout

```
better-LVGL-for-dsh/
├── package.json        # dsh.bundle declaration
├── cordis.patch.yml    # Cordis composition patch row
├── index.js            # Entry: scans skills/ and registers each on ctx.skills
└── skills/<name>/SKILL.md
```

## Adding your own skills

Create `skills/<kebab-case-name>/SKILL.md`:

```markdown
---
name: my-skill
description: One line on what it is and when to use it.
whenToUse: Optional trigger description
---

Body (Markdown)…
```

Reload the plugin; the directory is rescanned at apply time.

## License

[MIT](LICENSE)

Install

dsh plugin --profile web add github:sa998aaron/better-LVGL-for-dsh

Profile: web

  • This source has no pinned commit, so a later push upstream changes what installs. Prefer pinning a commit.
Source