這裡講的是 App 額外要的元件層交接包:從零件目錄到寄出包裹。做功能的主線不分平台,要先讀 product-feature.html(原型與蓋章那幾站兩邊一模一樣)——這頁是主線之外多出來的那一份,不是替代品。 · 契約正本(在 repo 內閱讀):design-system/HANDOFF_PROTOCOL.md · 工程向細節:native-design-contracts.html · 文件索引
ChipK 協作旅程 · Native App

一個新功能,
從設計到手機上的旅程

AI 負責動手做,人負責做決定。這頁帶你走一遍:一個產品想法如何變成可以點的 Demo,再打包交給工程端,變成手機上的真功能。

設計師 AI 工程師

出發前:目錄已經建好了

這本目錄是設計師帶著 AI 建的:先抽出設計系統(顏色、字體、間距的統一規格),再把每一顆元件放進 Storybook——公司唯一的正式零件目錄。之後目錄要擴充、更新,也由設計師主導。

所以新功能不必從零開始畫——大部分畫面可以用現成元件組出來。工程端也有一套和目錄一一對應的原生零件庫,這是為什麼做出來的 App 會和 Demo 長一樣,而不是「工程師憑印象重刻一遍」。

為什麼是「寄包裹」,不是「開會傳話」?

旅程開始前,先用一個比喻把全局講清楚。

把整件事想成一間家具品牌

有展示間、有工廠,中間靠包裹往來。誰都不用進對方的工作區——設計師只逛展示間,工程師只收包裹。設計師永遠不用讀程式碼,工程師永遠不用翻設計檔。

  • 展示間+零件目錄 = Storybook公司唯一的正式零件目錄。每顆按鈕、每張卡片長什麼樣、有幾種尺寸顏色狀態,全部陳列在一個網頁上,打開瀏覽器就能逛
  • 包裹 = 交接包交接不是開會傳話,是寄一個包裹。裡面固定只有三樣:一個網址、一個版本號、一份說明書。寫不進包裹的需求,視同不存在
  • 工廠 = 工程端收到包裹後,用和目錄一一對應的原生零件把 App 組出來。遇到對不上的地方不用吵,開一張「勘誤單」回報就好

和過去流程的差異

過去

每個功能重刻一次

設計師畫稿 → 工程照稿刻 → 來回校稿(「間距不對」「顏色跑掉」)→ 下個功能又重刻一次類似的按鈕和卡片。十幾年下來,公司裡有十幾種長得差不多的按鈕。

現在

零件做一次,重複組裝

元件做好進目錄 → 新功能用現成零件組 → 設計檢查的是「組得對不對」,不是「刻得像不像」。目錄存在的那天起,重複就不會再增加。

共用零件的協作模式,靠三條規矩

  • 零件只有一份。設計師組 Demo、工程師做 App,對照的是同一本目錄的同一批零件——所以 Demo 和成品天生長得一樣。
  • 要用之前先查目錄。找不到就先問 AI「有沒有相似的」,十次有八次其實已經有了,只是名字你沒想到。真的沒有,才走正式程序新增。
  • 顏色與間距不寫死。它們連著設計系統的 token——改一處,所有元件一起變,改版不用逐頁翻修。

換來的優勢

  • 組裝比重刻快,Demo 幾天內就能點
  • 一致同一顆按鈕不會有五種長相
  • 省溝通對不上的地方走勘誤單,不用來回開會
  • 改版便宜token 改一次,全產品一起生效
  • 有跡可循半年後問「當初為什麼這樣改」,翻單子就知道
設計師

平常的日子:養成一個習慣就好

沒有新功能的日子,設計師只需要記住一件事——要用任何元件之前,先查目錄。打開 Storybook,找到你要的直接用。找不到?先和 AI 說「我需要一個長這樣的東西」,AI 會幫你比對目錄裡有沒有很相似的既有元件。真的沒有,才走正式程序新增一顆。

提醒:這一站沒有交付物,但它是整條管線最重要的習慣——重複的零件只要停止增加,後面每一站都會變輕鬆。

你可以這樣對 AI 開口
我想要一顆「有搜尋圖示的灰色按鈕」,目錄裡有現成的嗎?沒有的話,最接近的是哪幾顆? AI 查了目錄回你:「『相似股按鈕』就是這顆,直接用。」於是公司少了第十四種長得差不多的按鈕。
設計師

新功能誕生:長出可以點的 Demo

流程像這樣:和 AI 討論需求(像跟同事聊天,把「這功能給誰用、解決什麼問題、有哪些畫面」講清楚)→ AI 用目錄零件組出畫面,你負責看和改 → 產出一個可以點的 Demo,老闆、同事、工程師都能用瀏覽器打開試玩。全程不寫一行程式

提醒:Demo 用的是示範資料,這是刻意的——先把「長什麼樣、怎麼流動」定下來,真資料是之後工程的事。

你可以這樣對 AI 開口
我要做一個「股利日曆」:讓使用者看到自己持股未來三個月的配息日。目標是 App。有不清楚的地方一次一題問我。 沒有需求文件也能開始——AI 會用問答幫你把文件長出來。
這四個畫面都用目錄裡的現成元件組,不要新增元件。真的需要新的,先停下來告訴我是哪一顆、為什麼現有的不夠用。 把「先查目錄」寫進指令,AI 就不會自己發明零件。
「事件列表」那一頁加一個空狀態,篩選彈窗的按鈕大一點。 打磨階段直接用講的——AI 改 Demo 時會同步更新七份文件。

實際例子:「股利日曆」聊了兩個下午,AI 用目錄裡的「股票日曆」「事件列表」「篩選彈窗」組出四個畫面,改了三輪細節,產出可點的 Demo 和七份文件——全程沒有人打開設計軟體重畫任何一顆按鈕。

設計師工程師接收

交接日:只給工程師三樣東西

交接不是開會傳話,是寄一個包裹。包裹裡固定只有三樣東西——寫不進包裹的需求,視同不存在

其一

一個網址

Storybook 上可以點的 Demo。工程師先玩一遍,就知道要做什麼。

其二

一個版本號

像出版品的「第一版」。工程師照這一版做,你之後繼續改設計也不會干擾他們。

其三

一份說明書

七份文件,加上機器可讀的附件(token 表、流程表、示範資料)。第一頁是 PRODUCTION_HANDOFF.md——章蓋在這裡,也寫明這是做 web 還是 app。工程師和他們的 AI 都先看這份。

七份文件齊了、Demo 確認過了,就由一個真人按下打包定版,把這一刻的狀態鎖成一個版本號AI 不能自己蓋這個章。定版之後如果又改了設計,就要重新確認、出下一個版本,不會偷偷影響已經在做的工程師。

提醒:工程規格書是規格,不是連線。Storybook 裡的按鈕不會遠端控制 App 裡的按鈕——它描述的是「這顆零件該有哪些尺寸、狀態、行為」,工程端照著用平台最好的方式實作。細節看 native-design-contracts.html

背後的指令:npm run contracts:native-spike(產出平台中立的元件與 token 規格) · 定版檢查:validate_prototype.py --handoff-ready(章蓋了才會過;通過時寫下版本戳記 HANDOFF_MANIFEST.json

工程師設計師

交接之後:用勘誤單溝通,不用來回開會

工程端照說明書組 App——自己動手,或讓自己的 AI 用 /native-product-implementation 接棒:AI 會先確認章蓋了、讀懂目標是 iOS 還是 Android、用目錄對應的原生零件組畫面,先以示範資料把整個流程在模擬器走通;真資料是下一棒/production-data-integration)的事。實作時一定會發現對不上的地方——「這個顏色目錄查不到」「這顆元件缺一個狀態」。不是打電話吵,而是開一張勘誤單:一張單寫一個問題,附截圖、寫清楚「預期 vs 實際」。設計師收單、修正目錄、出小版本,工程師更新後關單。半年後有人問「當初為什麼這樣改」,翻單子就知道。

提醒:最後驗收很直觀——把工程師做出來的真機截圖,和 Storybook 的畫面並排比對,像對印刷打樣,對得上就過。

背後的指令:/native-product-implementation(組 App,示範資料)→ /production-data-integration(接真資料)。兩支的輸入、把關與地雷寫在 docs/workflows/product-feature.md 的〈階段 3〉〈階段 4〉,web 與 App 共用同一份說明。

一張表看完整趟旅程

直的看是「這一站誰做什麼」,橫的看是「我這個角色從頭到尾要做哪些事」。

角色 ↓ / 站 → 1平常的日子目標:目錄保持乾淨,重複不再增加 2新功能誕生目標:從想法變成可以點的 Demo 3交接日目標:把定案的設計打包出貨 4交接之後目標:做出和 Demo 一樣的 App
設計師
  • 用任何元件前,先查目錄
  • 找不到就先問 AI「有沒有相似的」
  • 和 AI 聊需求、聊清楚給誰用
  • 看畫面、下修改指令、把關品質
  • 確認七份文件齊全
  • 按下打包定版
  • 收勘誤單 → 修正目錄
  • 出小版本更新
AI
  • 比對目錄:「其實已經有了」還是「真的是新零件」
  • 把討論整理成需求文件
  • 用目錄零件組出畫面
  • 自動生成七份文件
  • 為用到的零件產出工程規格書
工程師
  • 照常維護 App
  • 改到哪一頁,順手換上目錄的正式零件
  • (可選)先試玩 Demo、提前給意見
  • 收到三樣東西:網址、版本號、說明書
  • 照說明書實作,或讓 AI 接棒、自己陪跑做決定
  • 把關手機平台行為
  • 對不上就開勘誤單
產出 一本不長重複零件的目錄 可點擊的 Demo + 七份文件 一個鎖定版本的交接包 先是示範資料跑通的 App 功能,再接真資料上線 + 截圖比對紀錄

記住三個確認點就好

整條旅程只有三個地方需要「人」點頭。卡住的時候,通常就是卡在其中一個。

確認一

零件對不對

新元件進目錄前先比對,不讓重複再發生。(第 1、2 站)

確認二

定版才出貨

七份文件齊了,由真人按下打包定版,才能交給工程端。(第 3 站)

確認三

對得上才算完

真機截圖與 Storybook 並排比對;勘誤單全關才叫工程可用。(第 4 站)

出門前的備忘卡

每個角色只要記得自己這張。

設計師

  • 要顧好:目錄的整潔——新元件進來前先比對
  • 要顧好:七份文件的完整——齊了才算可以出貨
  • 要顧好:勘誤單的處理——有未關的單,那顆元件不算工程可用
  • 不用碰:程式碼、工程端的程式庫、手機平台行為

AI

  • 查目錄比對相似元件,不自己發明零件
  • 用目錄零件組畫面、生成七份文件
  • 產出平台中立的工程規格書
  • 遇到要做決定的地方停下來等人

工程師

  • 包裹沒定版就先別開工
  • 用原生零件庫組,不憑印象重刻
  • 讓 AI 接棒就用 /native-product-implementation,你陪跑做決定;真資料是下一棒
  • 對不上就開勘誤單,不打電話吵
  • 手勢、無障礙、導覽這些平台行為由你決定

小辭典:聽到這些詞不用慌

和工程師開會時會出現的 native 專用詞。跨管線通用的名詞在 docs/guides/glossary.md

交接包

寄給工程端的包裹,固定三樣:一個網址、一個版本號、一份說明書。寫不進包裹的需求,視同不存在。

版本號 tag

打包定版那一刻的「快照編號」。工程師照快照做,不怕設計改到一半規格變動。

勘誤單 gap report

工程師發現做不出來或對不上時填的單子。一張單一個問題,附截圖、寫清楚「預期 vs 實際」。

規格書 design contract

一顆元件的完整說明書:有哪些尺寸、狀態、行為、token。平台中立,iOS 和 Android 都讀得懂。

工程可用 native-ready

一顆元件的「出廠認證」:規格齊了、勘誤單都關了,工廠可以放心使用。

觸碰即換

和工程師的約定:平常改到哪一頁,就順手把那頁的舊零件換成目錄的正式零件。不搞大工程,慢慢換完。

版本戳記 HANDOFF_MANIFEST.json

定版通過時自動寫下的一張「文件指紋」。接棒的人會記下它;之後有人改了說明書,比對就會露餡。

導覽語意 presentation / backBehavior

流程表上每條轉場寫的兩個字:用推入、彈窗、底部面板還是全屏出現?返回時是退一步、退到底還是關掉?工程端照這個對映成 iOS/Android 的導覽寫法。

示範資料接縫 DataSource

App 組好時,資料是從一個可替換的接口讀示範資料。下一棒只換這個接口後面的東西,畫面不動。

想看完整正式版?定版規則、責任分工、勘誤單格式的正式定義都在 design-system/HANDOFF_PROTOCOL.md——這一頁是它的白話版,兩份同步維護。

工程向細節?規格書裡有什麼、native 已有元件怎麼接、要和工程師開會定下哪些事,看 native-design-contracts.html

AI 怎麼接棒實作?/native-product-implementation(組 App,示範資料)與 /production-data-integration(接真資料)兩支指令的輸入、把關與地雷,寫在 docs/workflows/product-feature.md 的〈階段 3〉與〈階段 4〉——web 與 App 共用同一份說明。

AI 指令(skill)從哪裡來?正本在 GitHub harrychuang-cm/skills(上面的指令名都可以點)。「同一份交接文件,我要做 iOS/Android 版」這個情境在 CM Skills 圖解指南有一頁,會告訴你該對 AI 說哪句話。給設計師的公開導覽:從 Storybook 到上線。本專案用到哪些、怎麼安裝:docs/guides/skills.md

其他參考:design-system/LEGACY_CONSOLIDATION_STRATEGY.md(為什麼要做這件事、「觸碰即換」約定)、src/pages/prototypes/README.md(交接文件的正式規格)、docs/guides/glossary.md(跨管線名詞對照表)。