跳到正文
cccskills
免费在 GitHub 公开

add-icon-mapping

Connect provider, model, or agent IDs to existing icons in lobe-icons. Use it to add or adjust keyword mappings when an item shows the default fallback icon, including keeping the main and React Native configurations aligned.

中文简介正在准备中。当前显示英语简介。

原文查看原文说明

Add or modify icon keyword mappings for providers, models, or agents in lobe-icons. Use this whenever a task involves mapping a provider/model id to an icon, adding a new entry to ModelProvider enum or providerMappings/modelMappings/agentMappings, or fixing a provider/model that renders the fallback (default) icon in LobeHub. Trigger even if the request only says "add icon for X provider" or references a Linear issue about icon keyword mapping — the actual icon component usually already exists; only the mapping is missing.

lobehub/lobe-icons星标 2,646(GitHub 2,646 + cccskills 0)
集成工具LinearOpenAI

实测评分 未实测

查看安装方法

适用场景

  • Map a new provider ID to its existing brand icon
  • Fix a model that displays the fallback icon
  • Add model or agent keyword matching rules
  • Keep provider mappings aligned in React Native

包含的文件(1)

  • SKILL.md5.9 KB

SKILL.md(原文)

安装前可以查看交给 AI 代理的指令内容。

Add icon keyword mapping

lobe-icons ships icon components (e.g. src/Grok/) and, separately, mapping tables that resolve a provider/model/agent id string to one of those components. A provider showing the fallback icon in LobeHub almost always means the mapping entry is missing, not the icon itself. Always check src/<Name>/ first — if the brand icon already exists, the task is only wiring it up.

Where mappings live (edit ALL that apply)

The react-native package duplicates the main package's config files. Forgetting the RN package is the most common mistake — the main package edits compile and pass review on their own.

WhatMain packagereact-native package
Provider enumsrc/features/providerEnum.tspackages/react-native/src/features/providerEnum.ts
Provider mappingssrc/features/providerConfig.tsxpackages/react-native/src/features/providerConfig.tsx
Model mappingssrc/features/modelConfig.tspackages/react-native/src/features/modelConfig.ts
Agent mappingssrc/features/agentConfig.ts— (main package only)

The static-* workspace packages (static-svg, static-png, static-webp, static-avatar) are generated from icon components and contain no mapping logic — never edit them for a mapping change.

Matching semantics (they differ!)

  • ProviderIcon: exact match — keyword.toLowerCase() === provider. A keyword like xai will NOT match supergrok; every provider id needs its own keyword.
  • ModelIcon / AgentIcon: each keyword is a case-insensitive RegExp tested against the model id, and the first matching entry in the array wins. Consequences:
    • Substrings match: keyword gpt-4 matches chatgpt-4o-latest.
    • Order matters: put more specific entries before general ones (see how gpt-oss sits before the broad OpenAI entry).
    • Regex syntax is live: ^o1, /o1, o1- are anchored patterns, and characters like . or + in a keyword are regex metacharacters — escape or anchor deliberately.

Provider mapping workflow

  1. Enum — add to ModelProvider in providerEnum.ts, alphabetically sorted, value lowercase:
    SuperGrok = 'supergrok',
    
  2. Import — in providerConfig.tsx, import the icon (alphabetical order). Main package uses the @/ alias, RN uses relative paths:
    import Grok from '@/Grok';          // main package
    import Grok from '../icons/Grok';   // react-native package
    
  3. Mapping entry — add to providerMappings, near related entries:
    { Icon: Grok, keywords: [ModelProvider.SuperGrok] },
    
  4. Repeat 1–3 in the react-native package. The RN enum is RNModelProvider inside its own providerEnum.ts; entry shape is identical.

New entry vs appending a keyword

Two established patterns for derived/subscription providers:

  • Append to an existing entry when the new provider should look identical to its parent — precedent: keywords: [ModelProvider.Moonshot, ModelProvider.KimiCodingPlan], [ModelProvider.ZhiPu, ModelProvider.GLMCodingPlan].
  • New entry with a different brand icon when a more recognizable brand exists and visual distinction from the parent provider helps — precedent: supergrok → Grok icon instead of appending to the XAI entry.

Prefer whichever the issue/requester specifies; otherwise pick based on whether users would benefit from telling the two providers apart in a list.

Verification

bun run type-check                             # repo root
cd packages/react-native && bun run type-check # RN package has its own tsconfig

If dependencies aren't installed, the RN type-check reports pre-existing Cannot find module 'react-native' / 'react-native-svg' errors — those are environmental, not caused by your change. Only errors mentioning your new enum member or the config files matter; don't install dependencies just to silence them (pnpm install creates lockfile noise, see below).

Type-check catches typos but not a missed mapping — grep is the completeness check:

grep -rn "supergrok" src packages/react-native/src

Expect hits in both enum files and both config files (2×2). For a model/agent keyword, quickly sanity-check the regex in isolation: new RegExp(keyword, 'i').test(modelId).

There are no committed tests and the repo's vitest.config.ts alias ('@': './src', relative) does not resolve transitive @/ imports — a render test needs a throwaway config with an absolute-path alias and server.deps.inline: [/@lobehub/]. Usually type-check + grep is sufficient.

Commit pitfalls

  • .npmrc sets lockfile=false — the repo commits no lockfile. Running pnpm install generates pnpm-lock.yaml and may inject a placeholder allowBuilds: block into pnpm-workspace.yaml. Delete the lockfile and git checkout -- pnpm-workspace.yaml before committing.
  • The pre-commit hook runs lint-staged and can sweep unintended files into the commit. After committing, check git show --stat HEAD — a mapping change should touch only the 2–4 config files.
  • Commit style is gitmoji + conventional: ✨ feat: add Grok icon mapping for supergrok provider.

评价

还没有评价。欢迎分享你的使用感受。

评论

无需登录即可发表。欢迎分享使用感受、提问,或说明在哪些环境下无法运行。

还没有评论。来写第一条吧。

提交后会立即公开。请勿填写邮箱、电话等个人信息。URL 最多 2 个。

0 / 1000 字

此表单受 reCAPTCHA 保护,适用 Google 的隐私权政策和服务条款。

同一仓库的技能

Build a product or documentation landing page by arranging @lobehub/ui/awesome components for the hero, live examples, feature sections, and install call to action. Wire links and theming, then review the page for responsive layout and accessibility preferences.

中文简介正在准备中。当前显示英语简介。

  • Create a product landing page from existing components
  • Build a home page for a lobedocs documentation site
  • Add live component examples and feature sections
lobehub/lobe-icons26462026年10月26日 更新

Set up and write a static documentation site with @lobehub/docs-kit and its lobedocs CLI. Create component pages with live demos and API tables, guides, a home page, and changelog, while following the kit’s build validations.

中文简介正在准备中。当前显示英语简介。

  • Set up a docs site with lobedocs
  • Write component pages with demos and API tables
  • Migrate existing documentation from dumi
lobehub/lobe-icons26462026年10月26日 更新

查看 lobehub 的全部技能

报告此技能的问题