# harmonyos-ui-icons [简体中文](README.md) | **English** > **DeepSeek Harness skill bundle + HarmonyOS icon toolkit** > Once installed, the agent in DSH automatically brings this icon capability to HarmonyOS / ArkTS UI work: **assets + tinting + animation + verified pitfalls**, all validated on a real device emulator.

HarmonyOS ArkTS API icons DSH license

--- ## ⚠️ Do this first: initialize (no icons without it) **This package ships zero SVG files.** Iconsax's Free License lets you embed the icons in your app, but it forbids **redistributing the artwork itself** (including modified versions). So the public repo carries the tooling only — never the icons. **The first thing after installing** is to run the bootstrap: ```bash # is the bundled skill directory, typically: # /profiles//node_modules/harmonyos-ui-icons/skills/harmonyos-ui-icons node /scripts/bootstrap.mjs ``` `bootstrap.mjs` will: 1. Pull **181 curated icons × 6 styles = 1083 SVGs** from the official CDN (`https://cdn.iconsax.io`) and decrypt them in place 2. Derive **3249 SMIL-animated variants** from those static SVGs 3. Regenerate `templates/IconsaxCatalog.ets` so the catalog always matches the files on disk > Needs network access. Takes about a minute. **Idempotent** — an already-initialized set is skipped. The skill knows this too: its `SKILL.md` makes "Step 0: initialize" a hard prerequisite, and when it finds `assets/iconsax/` empty it runs `bootstrap.mjs` before touching any icon. | `assets/iconsax/` state | What to do | | --- | --- | | Missing / empty | **Stop and run `scripts/bootstrap.mjs`** | | Present but missing the icon you need | `node scripts/fetch-icons.mjs --names --out assets/iconsax` | | Ready | Go ahead and use it | --- ## Install as a DSH skill bundle This is a standard **DSH bundle**: `package.json` declares `dsh.bundle.patch`, and `cordis.patch.yml` **adds exactly one row** that mounts DSH's own `@deepseek-ai/dsh-skill-filesystem`, registering the `skills/` directory this package carries as a skill root. ```yaml # cordis.patch.yml — purely additive; no existing entry id is renamed or replaced - insert: - id: harmonyos-ui-icons-skill-filesystem name: '@deepseek-ai/dsh-skill-filesystem' config: providerName: harmonyos-ui-icons includeDefaultRoots: false bundledSkillDir: !!js ... # resolved from the installed package identity, to this package's skills/ ``` Pick any install path: **A. Through the DSH plugin manager** (recommended — `plugin_manager` `install_bundle`) **B. Manually into a profile** ```bash # inside the profile directory (/profiles/) pnpm add harmonyos-ui-icons # or "harmonyos-ui-icons": "git+https://github.com/Andy-scy/harmonyos-ui-icons.git" # then add "harmonyos-ui-icons" to that profile package.json's dsh.profile.bundles ``` **C. Skill only** (skip the bundle) Copy `skills/harmonyos-ui-icons/` into any skill search path, e.g. `/skills/harmonyos-ui-icons/` or a project's `.dsh/skills/harmonyos-ui-icons/`. > All three paths still require running `scripts/bootstrap.mjs` once. Once installed, just mention ArkTS / ArkUI / a HarmonyOS page / a component / a TabBar / "add an icon" / "build me a HarmonyOS screen" and the skill loads automatically, bringing this icon set and docs with it. --- ## What this is Four things that remove the icon friction from HarmonyOS UI work: | | | | --- | --- | | 🎨 **Icon assets** | 181 common UI icons × 6 styles = **1083 SVGs** (fetched locally and decrypted by the bootstrap), ready to drop into `rawfile/` | | ✨ **Animated icons** | **3249 SMIL-embedded variants** (float / pulse / wiggle) that ArkUI's `Image` component **plays natively** — zero dependencies | | 🧩 **ArkTS templates** | `IconsaxIcon` / `Tint` / `IconsaxCatalog` — **compile-verified and device-verified** | | 📚 **Pitfall docs** | ArkUI's SVG capability boundaries, the two tinting paths, license red lines, 12 field-tested pitfalls | Icons come from [Iconsax](https://iconsax.io)'s **free tier** (181 commonly used picks out of 7,140 free icons). The package also ships the **complete index of all 7,140 free icons** plus a fetch script, so you can pull any obscure icon with a single command. --- ## How to use it, in three lines 1. **Copy icons**: `assets/iconsax/