مسئول design token کیه؟ طراح یا برنامهنویس
خلاصهٔ کاملتر
design token یعنی مقدارهای پایهی طراحی مثل رنگ و فاصله که تو یه فایل (معمولاً JSON) تعریف میشن و هم تو Figma هم تو کد استفاده میشن. نویسنده میگه وقتی سر تغییر یه رنگ دعوا میشه، طراحها کمکم دیگه به فایل توکنها دست نمیزنن، چون هر تغییرش تأیید کسی رو میخواد که نمیدونه چرا اون آبی عوض شده. نتیجهش اینه که خیلی زود Figma و repo دو تا سیستم کمی متفاوت رو نشون میدن.
به گفتهی نویسنده، تو همون یه فایل دو جور تغییر قایم شده. عوض کردن مقدار color.blue.600 یه تصمیم بصریه و مهندسی چیزی بهش اضافه نمیکنه. ولی تغییر اسم یا حذف یه توکن معنایی (semantic token) مثل action.primary.background روی همهی کامپوننتهایی که ازش استفاده میکنن اثر میذاره و هزینهی مهاجرت داره که تو Figma دیده نمیشه.
پس پیشنهادش اینه: مقدارهای خام (primitives) مال تیم طراحی، لایهی معنایی که در عمل یه API عمومیه مال یه تیم کوچیک design system با حداقل یه طراح و یه برنامهنویس، و transformها و خروجی build مال تیم frontend. این تقسیم رو میشه تو فایل CODEOWNERS نوشت. نویسنده یادآوری میکنه که اگه برای یه مسیر چند تیم بنویسید، هر کدومشون میتونه تأیید کنه، یعنی این فایل فقط میگه کی خبر میگیره، نه کی حق وتو داره.
قانون رو داخل خود توکن هم بنویسید، چون اعضای تیم اونجا رو میبینن. فیلد $extensions جاییه که فرمت توکنها اجازه میده متادیتای خودتونو بذارید:
"background": {
"$type": "color",
"$value": "{color.blue.600}",
"$extensions": {
"governance": {
"valueOwner": "design",
"nameOwner": "design-systems"
}
}
}نویسنده معتقده قانونی که به یادِ آدما بستگی داره چند هفته بیشتر دووم نمیاره، برای همین فقط یه چک مهم رو خودکار کنید: یه job تو pipeline پولریکوئست اسم توکنهای معنایی رو قبل و بعد از تغییر مقایسه میکنه. اگه یکی غیب شده باشه، build با یه پیام قابلفهم برای طراح متوقف میشه و میگه اسم قدیمی رو بهعنوان alias نگه دارید و deprecatedش کنید، یا از تیم design system تأیید بگیرید. یعنی تغییر مقدار راحت رد میشه ولی تغییر اسم جلوش گرفته میشه.
نکات کلیدی:
- مقدار خام توکن با طراحی، اسم توکن معنایی با تیم design system، خروجی build با frontend
- حذف یا تغییر اسم یه semantic token یه breaking change حساب میشه
- فیلد $extensions برای متادیتای مالکیت، با کلید reverse-domain تا با بقیه تداخل نداشته باشه
- تو CODEOWNERS اگه چند تیم برای یه مسیر باشن، تأیید هر کدوم کافیه
- یه چک تو pipeline که حذف توکن معنایی رو بلاک کنه، به گفتهی نویسنده یه بعدازظهر کار داره




