# 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 ``` 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//SKILL.md ``` ## Adding your own skills Create `skills//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)