Communitygithub.com

marmelab/atomic-crm

為 Atomic CRM 重新命名品牌——更換應用程式標誌(頁首以及登入/註冊頁面上的文字商標)和/或標題/名稱。當使用者想要變更、交換、更新或重新命名 CRM 標誌或標題時使用。處理淺色/深色模式兩種標誌變體、三個寫死標題的位置、指向它們的設定檔,以及(可選)瀏覽器 favicon 和 PWA 應用程式圖示。

atomic-crm 是什麼?

這個技能專為 Atomic CRM 品牌重新命名而設計,能全面處理標誌與標題的變更。它涵蓋了兩個主題(深色/淺色模式)中五個螢幕(桌面 + 行動頁首、登入、註冊、確認頁面)的標誌顯示,以及三個寫死標題的位置(設定檔、HTML 標題、PWA Manifest),避免單一檔案編輯導致不一致。技能也整合了 localStorage 儲存的運行時設定可能遮蔽程式碼編輯的問題,並提供清除金鑰的指引。可選功能包括更新瀏覽器 favicon 和完整 PWA 應用程式圖示集(34 個 PNG)。此技能適用於 Claude Code、Cursor 或 Codex 等代理工具,協助開發者安全、完整地執行品牌重新命名任務。

相容平台~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/marmelab/atomic-crm/tree/HEAD/.claude/skills/update-branding

在你喜歡的 AI 中提問

開啟一個已預先載入此 Agent Skill 的新對話。

說明文件

更新品牌

概覽

變更 CRM 標誌和/或標題。標誌會顯示在兩個主題中,橫跨五個畫面(桌面 + 行動頁首、登入、註冊、確認頁),而標題則寫死在三個地方,單純編輯一個檔案會遺留一個過時的版本。以下步驟會全面處理它們。 退出標準:標誌在兩個主題中的所有五個畫面上皆正確顯示,且標題在頁首、瀏覽器分頁和 PWA 名稱中保持一致。

使用時機

  • 使用者想要變更、交換或重新命名 CRM 標誌和/或標題/名稱。
  • 可選:當他們也要求更新 favicon 或 PWA 應用程式圖示時。

不適用於主題顏色或元件樣式——請參閱 Skill({skill: "shadcn-customization"})。

標誌:兩種資產系列

確認使用者指的是哪一種——大多數請求僅指 #1。

  1. 應用程式標誌 / 文字商標(常見) — src/components/atomic-crm/root/logos/,由 defaultConfiguration.ts 作為模組資產匯入(Vite 會解析相對於 JS 區塊的 URL,因此能存活於巢狀路由如 /oauth/consent 和子路徑部署)。logo_atomic_crm_dark.svg 是在深色模式 + 所有驗證頁面上顯示的淺色圖稿;logo_atomic_crm_light.svg 是在淺色模式下顯示的深色圖稿。(一個獨立未使用的 logo_atomic_crm.svg 仍存在於 public/logos/ 中。)

    檔案是根據它們顯示的模式命名,而非其顏色——「深色模式」標誌必須能在深色背景上閱讀。

  2. Favicon + PWA 圖示 — 僅在要求時處理。體積大得多(34 個 PNG);請參閱下方。

程式碼預設值 vs. 執行時設定——它們相互衝突

  • 程式碼預設值(此技能): 編輯 defaultConfiguration.ts + 資產。已提交,適用於所有情況,且是變更瀏覽器分頁標題 / favicon / PWA 圖示的唯一方式。
  • 設定 UI(/settings → 品牌,SettingsPage.tsx):已登入的使用者可以編輯標題 + 上傳標誌,每個瀏覽器各自儲存,以 localStorage 保存為 CRM.app.configuration(標誌為 base64),永遠不會提交。僅涵蓋應用程式內的標誌 + 頁首標題。

⚠️ 儲存會遮蔽程式碼。 useConfigurationContext 會回傳 { ...defaultConfiguration, ...storedConfig }(ConfigurationContext.tsx)。如果曾經透過 /settings 儲存品牌設定,你對 defaultConfiguration.ts 的編輯在該瀏覽器中將不會顯示——請清除 CRM.app.configuration 的 localStorage 金鑰。每當程式碼變更沒有視覺效果時,請懷疑此情況。

步驟

  1. 取得資產。 詢問檔案/URL、格式(SVG vs PNG),以及是否有獨立的淺色/深色變體或只有一張圖片。
    • 一個變體 → 將兩個設定金鑰都設為它;警告其中一個主題的對比度不佳(驗證頁面一律使用深色模式金鑰)。
    • 單一填充色的 SVG → 透過互換填充色(white ↔ black)來推導出另一個變體。
  2. 放置檔案到 src/components/atomic-crm/root/logos/:
    • 直接取代(最簡單): 覆蓋 logo_atomic_crm_dark.svg / logo_atomic_crm_light.svg,保持完全相同的檔案名稱 + .svg。defaultConfiguration.ts 中的匯入已經指向此處——完成。(僅限 SVG。)
    • 新名稱 / 格式(例如 PNG): 將新檔案儲存在它們旁邊,然後更新 defaultConfiguration.ts 頂端的兩個 import 陳述式(它們提供 defaultDarkModeLogo / defaultLightModeLogo;模組相對路徑,所以使用 "./logos/<file>")。不要將它們還原為單純的公開路徑字串——這會重新引入第 291 號問題。
  3. 更新標題(如果名稱變更)在所有三個地方——defaultTitle 僅驅動第一個:
    • defaultConfiguration.ts → defaultTitle — 頁首 <h1> + 標誌 alt。
    • index.html → <title> — 瀏覽器分頁標題(寫死,執行時不會設定)。
    • public/manifest.json → short_name + name — 已安裝的 PWA 名稱。

消費者(如果你保留設定金鑰則無需編輯):layout/Header.tsx + dashboard/MobileDashboard.tsx 渲染兩個變體(CSS 切換,h-6);login/{LoginPage,SignupPage,ConfirmationRequired}.tsx 僅渲染 darkModeLogo。

合理化解釋

合理化說法實際情況
「我改了標誌檔案,這樣就完成工作了。」標誌會顯示在兩個主題的五個畫面上,而標題位於三個檔案中。只編輯一個會留下一個過時的變體。
「我的程式碼變更沒有視覺效果,所以沒套用。」/settings 的儲存會遮蔽每個瀏覽器中的 defaultConfiguration.ts。請清除 CRM.app.configuration 的 localStorage 金鑰。
「一張圖片對兩個主題都很好。」驗證頁面一律使用深色模式金鑰;單一資產在一個背景上會顯示錯誤。警告或推導出第二個變體。
「我只要重新產生幾個 favicon 尺寸就好。」PWA 集合有 34 個 PNG。從單一來源重新產生每個尺寸,或要求提供整組,不要手動編輯少數幾個。

紅旗

  • 僅編輯兩個標誌資產金鑰中的一個,或互換了淺色/深色檔案。
  • 在 defaultConfiguration.ts 中變更了標題,但未變更 index.html 和 manifest.json。
  • 程式碼變更沒有可見效果,且 CRM.app.configuration 儲存未清除。
  • 手動編輯 favicon/PWA 尺寸的子集,而非重新產生完整集合。
  • 未經要求觸及文件網站標誌(doc/)。

驗證

make typecheck 僅能捕捉設定金鑰的拼寫錯誤。然後執行 make start 並檢查:兩個主題中的頁首,桌面 + 行動;登入/註冊頁面(深色背景);如果標題變更了,檢查頁首 <h1>、瀏覽器分頁和 PWA 名稱。如果標誌恰好只在一個主題中錯誤,表示兩個金鑰都指向同一個資產,或淺色/深色檔案被互換了。

  • 兩個標誌變體都指向正確的淺色/深色資產(以顯示模式命名,而非顏色)。
  • 標誌在兩個主題中、桌面 + 行動,以及登入/註冊/確認頁面上都能正確顯示。
  • 如果名稱變更了,標題已在 defaultConfiguration.ts、index.html 和 manifest.json 中更新。
  • 如果沒有出現視覺效果,表示已清除 CRM.app.configuration 的 localStorage 金鑰。
  • Favicon/PWA 圖示僅在明確要求時才作為完整集合重新產生。

Favicon & 應用程式圖示(可選)

僅在要求時處理。由 index.html + public/manifest.json 引用:public/favicon.ico 和 public/appIcon/*.png(34 種尺寸,包含 maskable_icon*)。從一個方形來源(sharp / pwa-asset-generator)重新產生每個尺寸,或要求使用者提供整組——不要手動編輯少數幾個。先確認範圍;manifest.json 中的 theme_color/background_color 也可能需要更新。

文件網站標誌(doc/astro.config.mjs → doc/public/logo_atomic_crm_*.svg)是一個獨立的 Astro 網站——除非被要求,否則不要觸及。

相關技能