@lark-apaas/coding-miaoda-sandbox-skills 0.1.0-dev.6f4e4bc → 0.1.0-dev.72ac425

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (71) hide show
  1. package/miaoda/ai-data-processing/SKILL.md +4 -1
  2. package/miaoda/charts-skill/SKILL.md +1 -1
  3. package/miaoda/creative-to-fullstack/SKILL.md +38 -226
  4. package/miaoda/feishu/SKILL.md +4 -4
  5. package/miaoda/forms-skill/SKILL.md +9 -0
  6. package/miaoda/lark-apps-db/SKILL.md +6 -4
  7. package/miaoda/lark-apps-db/references/full-reference.md +13 -4
  8. package/miaoda/lark-apps-ops/SKILL.md +2 -1
  9. package/miaoda/lark-apps-ops/references/lark-apps-export.md +46 -0
  10. package/miaoda/lark-design-prototype/DESIGN.md +603 -0
  11. package/miaoda/lark-design-prototype/SKILL.md +85 -0
  12. package/miaoda/lark-design-prototype/references/assets/card-illustration-library.md +113 -0
  13. package/miaoda/lark-design-prototype/references/case-matching.md +53 -0
  14. package/miaoda/lark-design-prototype/references/cases/conversational-ai-home.md +27 -0
  15. package/miaoda/lark-design-prototype/references/cases/data-table.md +30 -0
  16. package/miaoda/lark-design-prototype/references/cases/official-home.md +26 -0
  17. package/miaoda/lark-design-prototype/references/cases/workspace-home.md +34 -0
  18. package/miaoda/lark-design-prototype/references/color-roles.md +163 -0
  19. package/miaoda/lark-design-prototype/references/component-selection.md +134 -0
  20. package/miaoda/lark-design-prototype/references/design-quality-checklist.md +156 -0
  21. package/miaoda/lark-design-prototype/references/form-shell-patterns.md +77 -0
  22. package/miaoda/lark-design-prototype/references/icon-semantics.md +237 -0
  23. package/miaoda/lark-design-prototype/references/layout-interaction.md +164 -0
  24. package/miaoda/lark-design-prototype/references/page-contract.md +281 -0
  25. package/miaoda/lark-design-prototype/references/product-patterns.md +93 -0
  26. package/miaoda/lark-design-prototype/references/prompt-expansion.md +107 -0
  27. package/miaoda/lark-design-prototype/references/restoration-traps.md +113 -0
  28. package/miaoda/lark-design-prototype/references/token-semantics.md +112 -0
  29. package/miaoda/lark-design-prototype/references/visual-brief.md +125 -0
  30. package/miaoda/lark-design-prototype/references/visual-style-prompts.md +61 -0
  31. package/miaoda/lark-design-prototype/scripts/icon-query.mjs +272 -0
  32. package/miaoda/lark-design-prototype/scripts/token-query.mjs +76 -0
  33. package/miaoda/lark-design-prototype/scripts/verify-static-html.mjs +117 -0
  34. package/miaoda/performance-review/SKILL.md +3 -3
  35. package/miaoda/semantic-search/SKILL.md +6 -3
  36. package/miaoda/testing-guide/SKILL.md +116 -12
  37. package/miaoda-modern/charts-skill/SKILL.md +1 -1
  38. package/miaoda-modern/forms-skill/SKILL.md +33 -3
  39. package/miaoda-modern/lark-apps-ops/SKILL.md +2 -1
  40. package/miaoda-modern/lark-apps-ops/references/lark-apps-export.md +46 -0
  41. package/miaoda-modern/lark-design-prototype/DESIGN.md +603 -0
  42. package/miaoda-modern/lark-design-prototype/SKILL.md +85 -0
  43. package/miaoda-modern/lark-design-prototype/references/assets/card-illustration-library.md +113 -0
  44. package/miaoda-modern/lark-design-prototype/references/case-matching.md +53 -0
  45. package/miaoda-modern/lark-design-prototype/references/cases/conversational-ai-home.md +27 -0
  46. package/miaoda-modern/lark-design-prototype/references/cases/data-table.md +30 -0
  47. package/miaoda-modern/lark-design-prototype/references/cases/official-home.md +26 -0
  48. package/miaoda-modern/lark-design-prototype/references/cases/workspace-home.md +34 -0
  49. package/miaoda-modern/lark-design-prototype/references/color-roles.md +163 -0
  50. package/miaoda-modern/lark-design-prototype/references/component-selection.md +134 -0
  51. package/miaoda-modern/lark-design-prototype/references/design-quality-checklist.md +156 -0
  52. package/miaoda-modern/lark-design-prototype/references/form-shell-patterns.md +77 -0
  53. package/miaoda-modern/lark-design-prototype/references/icon-semantics.md +237 -0
  54. package/miaoda-modern/lark-design-prototype/references/layout-interaction.md +164 -0
  55. package/miaoda-modern/lark-design-prototype/references/page-contract.md +281 -0
  56. package/miaoda-modern/lark-design-prototype/references/product-patterns.md +93 -0
  57. package/miaoda-modern/lark-design-prototype/references/prompt-expansion.md +107 -0
  58. package/miaoda-modern/lark-design-prototype/references/restoration-traps.md +113 -0
  59. package/miaoda-modern/lark-design-prototype/references/token-semantics.md +112 -0
  60. package/miaoda-modern/lark-design-prototype/references/visual-brief.md +125 -0
  61. package/miaoda-modern/lark-design-prototype/references/visual-style-prompts.md +61 -0
  62. package/miaoda-modern/lark-design-prototype/scripts/icon-query.mjs +272 -0
  63. package/miaoda-modern/lark-design-prototype/scripts/token-query.mjs +76 -0
  64. package/miaoda-modern/lark-design-prototype/scripts/verify-static-html.mjs +117 -0
  65. package/miaoda-modern/performance-review/SKILL.md +3 -3
  66. package/miaoda-modern/reviewer-usage/SKILL.md +2 -0
  67. package/package.json +1 -1
  68. package/shared/attachment/SKILL.md +5 -1
  69. package/miaoda/creative-to-fullstack/references/artifact-signals.md +0 -46
  70. package/miaoda/creative-to-fullstack/references/ui-to-function.md +0 -134
  71. package/miaoda-modern/testing-guide/SKILL.md +0 -218
@@ -0,0 +1,134 @@
1
+ # Control Selection
2
+
3
+ Use this reference to map prompts, Figma, screenshots, or product workflows into a Feishu / Lark control and layout structure. The goal is to preserve a native UD feel while still leaving room for page composition.
4
+
5
+ ## Decision Flow
6
+
7
+ 1. Split regions: shell, navigation, title area, toolbar, main content, auxiliary area, floating layer, feedback.
8
+ 2. Identify semantics: button, entry, navigation, list, table, filter, status, avatar, media, empty state.
9
+ 3. Recognizable system controls follow UD visual language first: Button, Input, Select, DatePicker, Checkbox, Radio, Switch, Tabs, Table, Menu, Dropdown, Tooltip, Popover, Drawer, Dialog, Tag, Badge, Avatar, Empty, Skeleton, Pagination.
10
+ 4. When the UD default visual does not fully match the source, first adapt with tokens, size, outer layout, class, and local CSS.
11
+ 5. Only customize when normal UD-style control patterns cannot satisfy source evidence, and record the reason. In that case, reproduce interaction semantics, tokens, states, and accessibility with native structure.
12
+ 6. Write `control_candidates`, `ud_control_coverage`, and the necessary `layout_signature_usage`.
13
+
14
+ ## UD-Style Objects
15
+
16
+ - Actions: Button, IconButton, Dropdown, Tooltip, Popover.
17
+ - Forms: Input, TextArea, Select, DatePicker, Checkbox, Radio, Switch, Upload.
18
+ - Data and navigation: Table, Pagination, Tabs, Menu, Breadcrumb, List row pattern.
19
+ - Floating layers and feedback: Drawer, Dialog, Popconfirm, Empty, Skeleton, Loading.
20
+ - Status and identity: Tag, Badge, Avatar, Progress, Timeline.
21
+
22
+ ## Objects That Can Be Custom
23
+
24
+ - Page shell, responsive grid, and module spacing;
25
+ - Business composition containers, such as welcome areas, business summaries, recommendation cards, and entry groups;
26
+ - Media slots, image cropping, and illustration placement;
27
+ - Composite business cards that UD does not directly cover.
28
+
29
+ Inside custom compositions, buttons, inputs, tags, avatars, dropdowns, tabs, tables, drawers, and dialogs still follow UD-style sizing, states, and semantics.
30
+
31
+ ## Content Section Titles
32
+
33
+ Except for Hero, floating layers, navigation, and single detail cards, content sections default to an external header plus a content container. Module titles, descriptions, filter entries, more actions, and view switches sit above the content container. Bordered Card, Table, List, or business surfaces only wrap the real content.
34
+
35
+ Do not put section titles such as "Customer List", "Quick Entry", "Recommended Content", "Recent Activity", or "Related Apps" inside the card border. Repeated cards can have their own card titles, but those titles do not replace the section title.
36
+
37
+ ## Common Semantic Mapping
38
+
39
+ | User Intent | Preferred Choice | Notes |
40
+ | --- | --- | --- |
41
+ | Submit, confirm, create, save, delete, filter | Button / IconButton | These are command actions. |
42
+ | Enter an object, app, workflow, or recommended content | Card / List row pattern | The whole card can be clickable and is styled as an entry card. |
43
+ | Data list, approval, members, logs | Table / List + Tag + Dropdown | Table cells stay single-line and 400 weight; avoid stacking primary and secondary information in one cell. |
44
+ | Search and filter | Input / Select / DatePicker / Button / IconButton / Dropdown / Popover | Page-level search goes to the leftmost position of the top-nav right tool group; local filters and Tabs form one toolbar, and filter controls do not stretch full row. |
45
+ | Navigation | Menu / Tabs / Breadcrumb | Current location must be clear. |
46
+ | Detail and edit | Drawer / Dialog / Form | Drawer suits contextual tasks; Dialog suits blocking decisions. |
47
+ | Empty result | Empty + Button / Illustration | Explain the state and next step. |
48
+ | Status, category, priority | Tag / Badge | Functional colors are only for real statuses. |
49
+ | Avatar and identity | Avatar / Badge | Do not use avatars with no source. |
50
+ | Hero, recommendation, welcome, product entry | Card / custom media slot + UD-style child controls | Media appears only when needed, and the source must be clear. |
51
+
52
+ ## Entry Cards And Recommendation Cards
53
+
54
+ Quick entries, app entries, and lightweight recommendation entries use equal-height cards within the same row. The common structure is a 36–40px icon container on the left and title / description on the right. Cards use 16px vertical padding and 20–24px horizontal padding. The parent card grid uses `grid-auto-rows: auto` and may use `align-items: stretch` or card `height: 100%`, so cards in the same row take the height of the tallest card in that row. Do not write fixed `height`, large `min-height`, `aspect-ratio`, `grid-auto-rows: 1fr`, `grid-auto-rows: minmax(...)`, `place-items: center`, or fixed height classes such as `h-24 / h-28 / h-32` to unify entry heights. Descriptions use up to 2 lines, and line-height is shaped by real content; short-copy entries only follow the tallest card in the same row and do not create extra bottom whitespace.
55
+
56
+ Icon containers may use low-saturation, low-opacity blue fills such as `rgba(20, 86, 240, 0.06–0.10)`, with icons staying small-area semantic colors. This background only provides light support and is not a status category; keep one background strategy across the same entry group.
57
+
58
+ When recommended content carries discovery, learning, template, project material, knowledge accumulation, or product-entry responsibilities, first decide whether it needs a thumbnail, light illustration, product image, or File v2 file icon. A group of recommendation cards with only title and description can look flat, so prefer a responsible media slot; use light icon cards only when there is no media responsibility.
59
+
60
+ ## Framework Signature Usage
61
+
62
+ top-nav, side-navigation, quick-action-module, and hero-card are used only when the page truly needs them. When matched, record:
63
+
64
+ ```md
65
+ layout_signature_usage:
66
+ - component: side-navigation
67
+ reason: the page needs persistently visible primary entries
68
+ shell_pattern: side-nav-primary
69
+ signature: fixed #f9f9f9 rail, left-aligned icon + label items, #1f23290d selected state
70
+ freedom: width, nav item count and grouping follow current information architecture
71
+ ```
72
+
73
+ Framework signatures constrain role, alignment, state, and style boundaries. Module order, business content, quantity, proportion, and illustration form are decided by the current task.
74
+
75
+ `hero-card` can be actively matched by scene: use it for workspaces, portals, home pages, launch pages, AI assistants, CRM / sales summaries, data-insight entries, recommendations, and empty states when the first glance needs to explain page intent. Table directories, settings, audits, approval details, member permissions, and strong operation forms default to a title area + tool area opening.
76
+
77
+ ## Shell Pattern Decision
78
+
79
+ When a page needs a navigation shell, choose one primary mode first:
80
+
81
+ - `side-nav-primary`: The left rail is the main app anchor. Suitable for CRM, back-office systems, admin consoles, workspaces, and data lists. The sidebar is usually 224–280px and expanded at standard width; collapsed width is 64–72px. The sidebar background must be written directly as `#f9f9f9`, and the selected item background directly as `#1f23290d`; use hex values directly in implementation and do not call color tokens. The right workspace continues to use white or nearly white `bg-body` and a responsive content container. Do not force an extra page-level large rounded content shell or light-gray backing layer.
82
+ - `top-nav-primary`: The top bar is the main app anchor. Suitable for Docs, tables, knowledge bases, collaboration spaces, AI assistants, and canvases. The top bar is usually 64px, with a right tool group containing page-level search, tool icons, and avatar. If a sidebar exists, it is an auxiliary sidebar below the top bar, usually using `bg-body` and a 0.5px vertical divider.
83
+
84
+ When `top-nav` is matched, page-level search goes at the leftmost position of the top bar right tool group. Standard width can use a search input; tight space uses a search icon button. Do not duplicate both search entries in the same top bar.
85
+
86
+ When `side-navigation` is matched, navigation rows use left-aligned icon + label structure and do not use centered Button styling. The main sidebar uses fixed `#f9f9f9` and stays low-presence; current uses fixed `#1f23290d`; selected item text uses 500 weight. Use blue selected state only when the product clearly uses blue navigation as its primary identity. Items in the same navigation group keep 2px vertical spacing so selected or hover blocks do not touch.
87
+
88
+ Navigation, lists, tables, and entry cards use font weight only to emphasize current location or primary text. Unselected navigation, auxiliary descriptions, metadata, and table body text default to 400; selected navigation, module titles, table headers, buttons, and key numbers may use 500. Blue and other accent colors are only for primary actions, links, focus, current state, real status, and a small amount of brand identification. They are not used for ordinary card backgrounds, decorative lines, icon matrices, category tags, large KPI emphasis, or entries without state meaning.
89
+
90
+ Regular page UI icons use catalog `outlined`, preferably v2 when semantically suitable, and match catalog descriptions by semantic intent. Navigation, toolbars, entry cards, table row actions, category helpers, and ordinary object types use outlined icons, with color chosen from `icon-n1` / `icon-n2` / `icon-n3` / `icon-disabled` or real operation status. Do not use filled icons, emoji, characters, or hand-written SVG for regular UI without source evidence. File lists, recent documents, attachment lists, document cards, and file directories can use File v2 colorful as a group. Screenshot / Figma restoration should preserve the identified source visual type: outlined, filled, or colorful. Brand positions may use approved Feishu / Lark logotypes. Icons in the same explicit area must stay consistent by family, version, and shape.
91
+
92
+ ## Alignment Principles
93
+
94
+ In work pages, navigation items, quick entries, app entries, recommendation entries, list rows, and right-side summary rows default to left alignment. Icon + title + description structures use horizontal left alignment. Centering only suits icon buttons, avatars, logos, pure numeric small pills, empty-state illustrations, and clearly display-oriented visuals.
95
+
96
+ ## Toolbar Rules
97
+
98
+ Page-level search goes by default at the leftmost position of the `top-nav` right tool button group. Search inside a content section only works on local data in the current table, list, or board and does not act as global search.
99
+
100
+ Filters, Tabs, view switches, and local actions should align as one toolbar group. At standard width, search inputs are usually 280–360px, Select / DatePicker usually 160–220px, and they must not use `flex: 1` or `width: 100%` to stretch across the row. When space is tight, filters collapse into IconButton + Dropdown / Popover / Drawer. Tabs stay readable and may become a Dropdown or horizontal scroll when needed.
101
+
102
+ ## Media Principles
103
+
104
+ Plan media by responsibility. Welcome, Hero, recommended content, product entries, empty states, workspace home pages, avatars, product images, and important entry icons need an initial visual-anchor decision. If the region establishes page intent, explains state, carries recommendations, or displays product objects, plan a media slot by default.
105
+
106
+ Asset order:
107
+
108
+ 1. `references/assets/card-illustration-library.md`
109
+ 2. UD illustrations / user-provided outlined icon manifest
110
+ 3. Product assets or user-provided images
111
+ 4. `generated_bitmap`
112
+
113
+ Whenever media is planned, first read `references/assets/card-illustration-library.md` and write `library_lookup`. If the library already matches semantically and is accessible, do not generate imagery. Generated imagery only creates an independent visual element inside the media slot. It must match the current module theme and feel polished, minimal, and light. It may become a local visual focus, but must not look heavy.
114
+
115
+ ## Fallback Writing Pattern
116
+
117
+ ```md
118
+ ud_control_coverage:
119
+ - detected: customer list
120
+ follow_ud_style: Table
121
+ custom_allowed: false
122
+ - detected: welcome banner layout
123
+ follow_ud_style: Card + custom media slot
124
+ custom_allowed: true
125
+ reason: business composition and image slot need custom layout; inner CTA follows UD-style button styling.
126
+ ```
127
+
128
+ ## Review Questions
129
+
130
+ - Is this element a command action, or an entry into an object / workflow?
131
+ - Have visible system controls followed UD visual language, states, and semantics?
132
+ - Does the custom area only handle composition and layout?
133
+ - Are entry items left-aligned and easy to scan?
134
+ - Does the media have business responsibility and a clear source?
@@ -0,0 +1,156 @@
1
+ # Design Quality Checklist
2
+
3
+ Use this checklist before final delivery. The focus is user-visible quality: native Feishu feel, primary flow, UD-style control usage, responsiveness, and visual polish.
4
+
5
+ ## System Fit
6
+
7
+ - A lightweight `lark_style_recipe` has been formed, covering surfaces, whitespace, radius, borders, shadows, typography, controls, and media.
8
+ - Figma / screenshot tasks have recorded `source_layout_evidence`.
9
+ - Screenshot restoration has recorded `source_viewport_contract` before implementation.
10
+ - Recognizable system controls follow UD visual language, states, and semantics first, or there is a clear custom reason.
11
+ - Custom areas only handle composition, layout, media slots, and one-off business structures.
12
+ - Custom areas and UD-style controls share the same visual language.
13
+ - Cases are only low-weight references and do not override user input or source evidence.
14
+
15
+ ## Product Quality
16
+
17
+ - The page directly supports the primary task, and the first screen identifies product identity and key content.
18
+ - When the user request is vague, the page only fills core content and a small set of samples. The first screen usually has 2–3 visible content groups and does not actively fill the whole page.
19
+ - Information hierarchy is clear, and primary and secondary actions are distinct.
20
+ - Except for Hero, floating layers, navigation, and single detail cards, content sections have external headers.
21
+ - Repeated rows, cards, entries, and controls share structure.
22
+ - Button is used for command actions; entries, apps, recommendations, and object jumps use Card / List row patterns.
23
+ - Hero appears only when the first glance needs to explain page intent, welcome, smart suggestions, high-value summaries, or empty-state guidance.
24
+ - Navigation items, quick entries, app entries, recommendation entries, list rows, and summary rows default to left alignment.
25
+ - When top-nav or side-navigation is matched, `side-nav-primary` or `top-nav-primary` has been chosen, and the two shell patterns are not mixed. Side navigation uses a near-white neutral background and selected state uses neutral fill with 500 text weight, not light-blue fill by default.
26
+ - Form, approval, settings, and detail-edit pages with top bars have a clear `top_nav_policy`: the bar identifies product / space and low-emphasis utilities, while business actions sit in the page title or primary task area unless source evidence says otherwise.
27
+ - Right auxiliary rails have a clear helper role. They explain rules, approval flow, permissions, risk, or contextual help, and the main task still remains understandable without the rail.
28
+ - Required states such as loading, empty, disabled, error, success, and selected exist.
29
+ - Visible controls are interactive or explicitly recorded as static display.
30
+ - Page-level search sits at the leftmost position of the top-nav right tool button group; content sections only keep search with a clearly local scope.
31
+
32
+ ## Visual Quality
33
+
34
+ - Overall feel matches polished, minimal, clean, tidy, low-density, and reliable.
35
+ - The page reduces meaningless dividers through large whitespace and module titles.
36
+ - Blue and other accent colors appear only for primary actions, links, focus, current state, real status, or a small amount of brand identification. They do not decorate ordinary cards, icon matrices, category tags, KPIs, or large backgrounds.
37
+ - First-screen accent-color budget is restrained: usually one primary filled button, one current state, and necessary real-status feedback. Avatars, icon backgrounds, entry cards, ordinary tags, KPI containers, and decorative areas do not use high-saturation categories.
38
+ - Page UI uses no gradients. Backgrounds, Hero backing, cards, buttons, tags, icon backgrounds, borders, dividers, masks, and decorative blocks do not use `linear-gradient`, `radial-gradient`, `conic-gradient`, or gradient image masks.
39
+ - Default body text, descriptions, table content, and card descriptions stay 400; the same list, table, card, or navigation group does not contain multiple bold text layers.
40
+ - Form and right-rail pages show an explicit emphasis budget in the final result: one page-level 600 title, limited 500 section / label / selected-state text, and 400 body, helper, button, link, metadata, and bullet text by default.
41
+ - Table body stays 14px / 22px / 400. Customer names, object names, amounts, owners, times, and action links are not bold.
42
+ - Table cells stay single-line. Long text uses ellipsis, column-width adjustment, tooltip, or detail drawer. There is no stacked two-line information.
43
+ - Module titles are not wrapped inside bordered content containers. Borders only wrap tables, lists, card grids, or business content.
44
+ - Large pages and workspaces (body / app-root / main-workspace / main-content / right content area) prefer white or nearly white `bg-body`; light gray is only for low-emphasis shells, side navigation, or local backing surfaces.
45
+ - Sidebars, backing areas, and secondary surfaces are low-presence and do not become obvious gray blocks.
46
+ - One area usually keeps only page base and content surface. There is no gray backing with white cards, white cards with gray blocks, or gray blocks with smaller cards.
47
+ - Ordinary business cards, Hero, metric cards, quick entries, table containers, and right summaries have no shadows.
48
+ - Borders are light; regular business surfaces use 0.5px `line-border-card`.
49
+ - Radius family is stable within the same local area; regular cards are about 8px.
50
+ - Font sizes mainly use 12px, 14px, and 16px; large titles stay restrained.
51
+ - Icon stroke, size, family, version, shape, source visual type, and semantics follow `references/icon-semantics.md`. Page UI icons are traceable to catalog retrieval, regular page UI usually uses v2 outlined when semantically suitable, and file-type, source-restoration, `source-filled`, `source-colorful`, and brand-colorful usage stay consistent within the same explicit area.
52
+ - top-nav tool icons are consistent in size, usually 28px container + 20px linear icon. side-navigation row height, icons, labels, 2px item vertical spacing, and selected state are stable.
53
+ - top-nav text entries such as help, records, and settings are low-emphasis, usually 14px / 22px / 400. The top bar does not duplicate the page title or carry oversized product identity.
54
+ - Media has responsibility and source. When a visual anchor is needed, `library_lookup` is recorded; there are no gray boxes or meaningless images.
55
+ - Generated images serve only the current media slot, match the current module theme, feel polished and light, and do not generate a full page UI, complete dashboard, or browser shell.
56
+ - When Hero uses a visual anchor, it has first matched the illustration library, UD / product assets, or recorded generated-image fallback.
57
+ - When Hero, welcome areas, recommended content, product entries, or empty states carry first-glance explanation, illustrations, thumbnails, product images, File v2 file icons, or generated-image fallback are planned. They are not replaced by pure text and outlined icons.
58
+ - Quick entries, app entries, and lightweight recommendation entries may use low-saturation, low-opacity blue fills in icon containers, with a consistent group strategy and no high-saturation icon matrix.
59
+
60
+ ## Layout And Responsiveness
61
+
62
+ - Page body uses responsive document flow and does not copy full-page Figma coordinates.
63
+ - The main workspace uses responsive width and fills the available space after the navigation shell. Workspaces, tables, boards, CRM, admin pages, and data pages do not apply a fixed max width to the whole `main-workspace` / `main-content`.
64
+ - Max reading width is only for local reading areas such as long-form text, settings forms, and detail descriptions.
65
+ - The page follows the 4px base grid; main padding, gaps, column widths, radius, and container offsets use multiples of 4px or page-level variables.
66
+ - Page title, module title, Hero, quick entry, card grid, table container, and right rail align to the same content container line. No single module relies on temporary `margin-left`, temporary `width`, or offsets for alignment.
67
+ - Responsive columns use stable tracks, such as main column `minmax(0, 1fr)`, right auxiliary rail 320–384px, and 24px side gap. The right rail merges into the main flow at narrow widths.
68
+ - First-level content groups use about 40px vertical spacing.
69
+ - Toolbars, card grids, columns, and entry groups use stable gaps and column widths. Hover, selected, loading, and dynamic text do not cause layout jumps.
70
+ - Table row height is stable. Hover, selected, loading, edit state, and long-text ellipsis do not change row height.
71
+ - Single cards, summary blocks, and right panels do not stack too many fields; information presentation feels spacious.
72
+ - Right helper rails in forms use a quiet pattern: plain helper rail, one light panel, or drawer-on-demand. They do not become a stacked card wall.
73
+ - Quick entries and lightweight recommendation entries use equal height within the same row. The parent uses `grid-auto-rows: auto`, and cards in the same row take the height of the tallest card in that row. Short-copy entries do not become uneven by independent auto height, and they also do not create obvious bottom whitespace due to fixed height or whole-group large height.
74
+ - KPIs, lists, recommendations, right-side insights, and quick entries can explain their source or primary-task value. Under vague requests, table / list samples stay within 5–8 rows, card samples within 3–4 items, and KPIs within 1–3 items while serving the primary task.
75
+ - When title areas contain search, filters, Select, Tabs, or buttons, they can wrap or stack at narrow widths.
76
+ - Filters, Tabs, view switches, and local actions align as one toolbar group. At standard width, Select / DatePicker does not stretch across the whole row.
77
+ - When space is tight, filters collapse into IconButton + Dropdown / Popover / Drawer instead of a long selector occupying one row.
78
+ - Long text in any language is not squeezed into character-by-character, vertical, or single-character columns.
79
+ - The right auxiliary rail can merge into the main content flow at narrow widths.
80
+ - side-navigation can shrink to a 64–72px icon rail at `narrow`; text navigation does not degrade into initials or single characters. `compact` has a drawer, top entry, or bottom entry plan.
81
+ - The compact viewport can still identify the current page, primary action, and main content.
82
+
83
+ ## Figma / Screenshot Restoration
84
+
85
+ - Source region order, primary / secondary relationship, density, and component boundaries are preserved.
86
+ - Browser viewport matches `source_viewport_contract`.
87
+ - Scale check: the restored page feels correctly sized at normal browser zoom based on stable anchors such as sidebar width, avatar size, header height, input height, and body text.
88
+ - auto layout, padding, gap, constraints, component instances, and state evidence have been converted into responsive layout relationships.
89
+ - Top bars, navigation, tabs, list rows, avatars, badges, message cards, and floating actions have no visible collisions.
90
+ - UD-style control patterns cover Button, Input, Select, Tabs, Table, Menu, Drawer, Dialog, Tag, Badge, Avatar, and other system controls first.
91
+ - When the UD default visual does not fully match, tokens, size, outer layout, and local CSS are used first.
92
+ - Custom local implementation is used only when it clearly cannot satisfy source evidence.
93
+
94
+ ## Hard Failures
95
+
96
+ The following issues must be fixed before delivery:
97
+
98
+ - Core interaction is missing and no static exception is explained;
99
+ - Figma / screenshot restoration lacks source evidence;
100
+ - Screenshot restoration lacks `source_viewport_contract`;
101
+ - Screenshot restoration has obvious collisions in the top bar, navigation, tabs, list rows, avatars, badges, message cards, or floating actions;
102
+ - Standard system controls are widely rendered as unstyled ordinary `div` or native controls;
103
+ - Ordinary business cards, Hero, metric cards, quick entries, table containers, or right summaries use shadows;
104
+ - The page has heavy gray backgrounds, strong borders, or a wall of cards, making Feishu style heavy;
105
+ - Main content area / main-content / right content area uses an obvious light-gray large background to back the whole workspace instead of a white or nearly white page base;
106
+ - Sidebar background is an obvious gray block, or selected state defaults to light-blue fill / brand-blue text;
107
+ - Blue or other accent colors are used for ordinary decoration, icon matrices, category tags, large KPI backgrounds, or multiple non-primary status areas;
108
+ - The first screen simultaneously uses blue, success, warning, danger, or purple to distinguish ordinary entries, KPIs, avatars, tags, and decoration, causing high visual noise;
109
+ - Page UI uses gradients, including gradient backgrounds, Hero backing, buttons, cards, tags, icon backgrounds, borders, masks, or decorative blocks;
110
+ - Filled icons appear without source evidence or an explicit `source-filled` strategy, or page UI icons bypass catalog retrieval by using AI-drawn icons, emoji, text characters, CSS / canvas drawing, hand-written SVG, or a third-party icon library while the catalog has usable icons;
111
+ - Colorful icons are used as ordinary decoration without file-type, source-restoration, or brand-identity responsibility;
112
+ - An explicit icon area mixes family, v2 / non-v2 version, File v2 colorful round / normal shape, bitmap icons, emoji, text characters, CSS / canvas drawing, or hand-written SVG shapes;
113
+ - Icon colors lack action, status, current, disabled, emphasis, file-type, source-restoration, or brand-identity semantics. Same-group navigation, toolbar, entry cards, or table row actions mix multiple high-saturation colors;
114
+ - top-nav avatars, table avatars, and member avatars use high-saturation colors and distract from page hierarchy;
115
+ - Titles, descriptions, tags, and numbers are all bold in the same list, table, card, or navigation group, causing hierarchy confusion;
116
+ - Form pages have no emphasis budget, causing labels, descriptions, buttons, helper text, and approval steps to all appear bold;
117
+ - Table body contains bold customer names, bold amounts, bold owners, bold times, or bold action links, making row information too heavy;
118
+ - Table cells contain two-line text, primary / secondary titles stacked vertically, or customer name plus industry in two lines, reducing table scan efficiency;
119
+ - The page has gray backing with white cards, white cards with gray blocks, or gray blocks with smaller cards, making surface hierarchy dirty;
120
+ - The page visibly breaks the 4px base grid, with random spacing, chaotic column widths, misaligned module left edges, or interaction states that cause layout jumps;
121
+ - Page title, module title, Hero, quick entry, card grid, table container, or right rail does not share the same content container line and relies on temporary `margin-left`, width, or offset alignment;
122
+ - Key layout values contain many non-4px multiples, or page-level spacing / grid variables are not reused, making module rhythm inconsistent;
123
+ - Workspaces, tables, boards, CRM, admin pages, or data pages apply a fixed max width to the whole main workspace, causing wasted wide-screen space, an uncentered right workspace, or cramped content;
124
+ - Non-exception content sections lack titles, or section titles are wrapped inside bordered containers;
125
+ - Vague user requests proactively generate many unsupported modules, metrics, lists, or right-side panels;
126
+ - Vague user requests show more than 3 visible content groups on the first screen, or simultaneously include a KPI wall, long list, right-side insights, recommendations, recent visits, quick entries, and multi-level navigation;
127
+ - Quick entries, app entries, recommendation entries, or navigation items are centered as a whole, harming scanning;
128
+ - Quick entries use outline Buttons instead of entry cards or list rows;
129
+ - Sidebar navigation items use centered Button styling, or collapsed state compresses text navigation into initials, single characters, or meaningless abbreviations;
130
+ - Navigation items in the same sidebar group touch vertically and lack 2px vertical spacing;
131
+ - top-nav tools mix text-character icons with SVG / UD icons, or a search input and search icon button both appear;
132
+ - top-nav duplicates the page title, uses oversized logo / product identity, makes utility text heavy, or places large business primary actions in the bar without source evidence;
133
+ - Right helper rails use strong stacked card frames, shadows, large titles, bold body text, or high-saturation decoration, causing the rail to compete with the form;
134
+ - `top-nav-primary` or `side-nav-primary` is matched but navigation background, start position, or backing relationship from the other mode is mixed in;
135
+ - Page-level search appears inside a content section, or is not placed at the leftmost position of the top-nav right tool group;
136
+ - Filter controls use full-row width, splitting filters and Tabs into loose rows;
137
+ - Long text is squeezed into character-by-character, vertical, or single-character columns;
138
+ - The page depends on a whole-page fixed canvas size;
139
+ - A planned media slot has no real asset, lacks `library_lookup`, or generated imagery becomes a full page UI;
140
+ - Hero, welcome area, recommended content, product entry, or empty state carries visual explanation but has no media plan and no reason for no-media;
141
+ - Generated imagery is unrelated to the current module theme, or its visual weight overpowers the title, main content, and actions;
142
+ - Quick entries or lightweight recommendation entries in the same row have uneven heights because every card auto-sizes independently;
143
+ - Quick entries or lightweight recommendation entries use fixed height, excessive `min-height`, `aspect-ratio`, `grid-auto-rows: 1fr`, `grid-auto-rows: minmax(...)`, `place-items: center`, or fixed height classes such as `h-24 / h-28 / h-32`, causing all rows to be stretched or short title / description cards to show obvious bottom whitespace;
144
+ - Case rules override user input, Figma / screenshot evidence, or a reasonable current composition.
145
+ - Table directories, settings, audits, approval details, member permissions, or strong operation forms add a marketing-style Hero without evidence.
146
+
147
+ ## Report Format
148
+
149
+ ```md
150
+ summary:
151
+ passed:
152
+ warnings:
153
+ hard_failures:
154
+ verification:
155
+ remaining_risks:
156
+ ```
@@ -0,0 +1,77 @@
1
+ # Form Shell Patterns
2
+
3
+ Use this reference only for approval forms, settings forms, detail-edit pages, top bars, right helper rails, or tasks that mention weak Feishu / Lark shell feeling. Keep the main skill lightweight by loading this file only when these regions affect the page quality.
4
+
5
+ ## Top Navigation
6
+
7
+ Top bars in form and approval tools should feel like a product shell, not a marketing header.
8
+
9
+ - Height: 56-64px. Use 64px for `top-nav-primary`; use 56px for compact tool pages when source evidence supports it.
10
+ - Surface: `bg-body` with a 0.5px weak bottom divider. Avoid shadow, gray backing, or rounded shell treatment.
11
+ - Left region: app icon or product mark plus product / space name. Keep it compact, left aligned, and vertically centered. Product name usually uses 16px / 24px / 500.
12
+ - Right region: low-emphasis entries such as help, records, settings, notification, and avatar. Text entries default to 14px / 22px / 400; the current entry may use 500.
13
+ - Business actions such as submit, save, create, approve, reject, and export belong in the page title area or primary task area by default. Put them in the top bar only when source evidence clearly places them there.
14
+ - Do not repeat the same page title in both the top bar and the page header. The top bar identifies the product or space; the page header identifies the current task.
15
+ - Avoid oversized logos, 600-weight nav labels, high-saturation avatar fills, large primary buttons, duplicated search entry, and empty wide top bars with only two text links.
16
+
17
+ ## Page Title And Actions
18
+
19
+ Form pages should open with a concise task header.
20
+
21
+ - Breadcrumb or location text: 14px / 22px / 400, `text-caption`.
22
+ - Page title: 24px / 36px / 600 for the only page-level title.
23
+ - Description: 14px / 22px / 400, `text-caption`, up to two lines.
24
+ - Primary and secondary actions sit on the right side of the title area at standard width, then wrap under the title on narrow width.
25
+ - Button labels stay 14px / 22px / 400. Priority comes from fill, order, and placement.
26
+
27
+ ## Right Helper Rail
28
+
29
+ Right rails in forms are auxiliary. They should reduce hesitation without competing with the form.
30
+
31
+ - Use a right rail only when it explains form rules, approval flow, permissions, risk, or contextual help that affects the current task.
32
+ - Common width: 320-360px. Use 384px only for richer details with proven need. Gap from main content: 24px.
33
+ - Prefer one light rail group or two small groups. Avoid a stacked card wall.
34
+ - Surface choices:
35
+ - `plain_helper_rail`: no full card frame; use section titles, whitespace, and weak dividers.
36
+ - `light_panel_rail`: 0.5px `line-border-card`, 8px radius, 16-20px padding, no shadow.
37
+ - `drawer_on_demand`: use when helper content is long or rarely needed.
38
+ - Title: 14px / 22px / 500 or 16px / 24px / 500 only when the rail has one main group.
39
+ - Body, bullets, metadata, helper links, and approval descriptions: 12-14px / 20-22px / 400.
40
+ - Number chips and step indicators should be small, neutral, and quiet. They should not become colorful KPI badges.
41
+ - At `narrow`, merge the rail below the form. At `compact`, place helper content after the primary form or behind a help entry.
42
+ - Avoid heavy borders around every rail group, big section titles, bold bullet text, strong gray blocks, shadows, decorative icons, and high-saturation status colors unless they express real state.
43
+
44
+ ## Emphasis Budget
45
+
46
+ Use font weight to create one clear reading path.
47
+
48
+ | Region | Default treatment |
49
+ | --- | --- |
50
+ | Page title | 24px / 36px / 600, only one per page |
51
+ | Section title | 16px / 24px / 500 |
52
+ | Form label | 14px / 22px / 500 |
53
+ | Form value / input text | 14px / 22px / 400 |
54
+ | Button label | 14px / 22px / 400 |
55
+ | Right rail title | 14px / 22px / 500 |
56
+ | Right rail body | 12-14px / 20-22px / 400 |
57
+ | Approval step owner | 14px / 22px / 500 |
58
+ | Approval step description | 12px / 20px / 400 |
59
+
60
+ One local information group should usually contain only one 500-weight layer. Do not bold title, description, bullet body, step owner, metadata, and action text at the same time.
61
+
62
+ ## Approval Form Pattern
63
+
64
+ Use this pattern for approval, permission, access, procurement, leave, reimbursement, and similar form pages.
65
+
66
+ ```md
67
+ approval_form_page:
68
+ shell: compact top bar with product / space identity and low-emphasis utility entries
69
+ header: breadcrumb + page title + description + page-level actions
70
+ main: external section titles + light form surfaces, using UD controls
71
+ rail: helper rules and approval path with low emphasis
72
+ primary_action: page title area, not top nav by default
73
+ no_hero: true
74
+ no_card_wall: true
75
+ ```
76
+
77
+ Check that the page still works without the rail. If the main task becomes unclear without the rail, move essential guidance into the form itself.
@@ -0,0 +1,237 @@
1
+ # Icon Semantics
2
+
3
+ Icons support functionality, identity, and source restoration. Choose icons from the catalog, keep choices traceable, and avoid decorative icon noise.
4
+
5
+ ## Contents
6
+
7
+ - Icon Source And Query
8
+ - Catalog Retrieval Requirement
9
+ - Selection Order
10
+ - V2 Priority
11
+ - Area Consistency
12
+ - Natural-Language Page Generation
13
+ - Figma And Screenshot Restoration
14
+ - File V2 Colorful
15
+ - Brand Logo Rules
16
+ - Icon Color Semantics
17
+ - Size Hierarchy
18
+ - Lightweight Checks
19
+ - Fallback
20
+
21
+ ## Icon Source And Query
22
+
23
+ Use the versioned public catalog on demand:
24
+
25
+ ```txt
26
+ https://lf3-static.bytednsdoc.com/obj/eden-cn/pshi/lark-design-prototype/1.0.4/db71a6cd-33f97519-0d446cd5/icons.catalog.json
27
+ ```
28
+
29
+ The catalog is an array of categories. Each category usually contains `icons.colorful`, `icons.filled`, and `icons.outlined`. These are the real catalog families. Skill-level visual types such as `v2-outlined`, `non-v2-outlined`, `file-v2-colorful-normal`, `file-v2-colorful-round`, `brand-colorful`, `source-outlined`, `source-filled`, and `source-colorful` are derived from the icon name, source evidence, and usage.
30
+
31
+ Use `node scripts/icon-query.mjs` instead of printing the raw catalog. It fetches the public catalog and verifies the pinned SHA-256 before parsing it; keep output to 3-5 candidates per intent. A user- or project-provided catalog can be supplied with `--catalog <catalog.json|url>`. If the public catalog is unavailable and no trusted override exists, record the failure and use text, Avatar, official media, or an icon-free structure rather than inventing an icon.
32
+
33
+ Assemble final SVG URLs in this format:
34
+
35
+ ```txt
36
+ https://cdn-tos-cn.bytedance.net/obj/archi/ee/es-design-base/svgs/{name}.{hash}.svg
37
+ ```
38
+
39
+ When a dark interface needs a dark-specific icon asset and the entry has `darkHash`, use `darkHash` instead of `hash`.
40
+
41
+ ## Catalog Retrieval Requirement
42
+
43
+ All page UI icons must go through catalog retrieval before implementation. Query `node scripts/icon-query.mjs`, choose a catalog entry, and use the returned `name`, `hash`, family, visual type, and final URL. This applies to navigation icons, toolbar icons, quick-entry icons, table actions, status helpers, file-type icons, brand logo slots, and source-restoration icon replacements.
44
+
45
+ Do not draw page UI icons yourself. Avoid inline SVG path drawing, CSS-only shapes, canvas-drawn symbols, emoji, text characters, third-party icon libraries, or generated bitmap icons as replacements for catalog icons.
46
+
47
+ If catalog retrieval has no suitable match:
48
+
49
+ 1. try a nearby v2 match in the same area strategy;
50
+ 2. use the area-level fallback to non-v2 when needed;
51
+ 3. use text, Avatar, official illustration, product image, card media, or an icon-free structure.
52
+
53
+ Do not invent a new icon name or create an AI-drawn icon to fill the gap. Generated bitmap imagery may appear in media or illustration slots, but it must not replace functional page UI icons.
54
+
55
+ ## Selection Order
56
+
57
+ Before selecting individual icons, decide the area-level strategy:
58
+
59
+ ```md
60
+ icon_area_plan:
61
+ - area: sidebar | top_toolbar | quick_entry | file_list | table_row_actions | brand_header
62
+ source_visual_type: unknown | outlined | filled | colorful
63
+ visual_type: v2-outlined | non-v2-outlined | file-v2-colorful-normal | file-v2-colorful-round | brand-colorful | source-outlined | source-filled | source-colorful
64
+ family: outlined | filled | colorful
65
+ version: v2 | non-v2 | brand
66
+ shape: none | normal | round
67
+ fallback: keep the whole area consistent before changing individual icons
68
+ ```
69
+
70
+ Then choose individual icons in this order:
71
+
72
+ 1. Exact source icon name, family, version, and shape when restoring Figma or screenshots.
73
+ 2. Same source visual type when the source is identifiable: `source-outlined`, `source-filled`, or `source-colorful`.
74
+ 3. Same area `visual_type`, with v2 candidates first when the strategy is outlined or file colorful.
75
+ 4. Same area family and shape with a non-v2 fallback when v2 semantics are not suitable.
76
+ 5. Text, Avatar, official illustration, product image, card media, or an icon-free structure.
77
+
78
+ Do not invent icon names. Missing an icon is better than using a semantically wrong icon.
79
+
80
+ ## V2 Priority
81
+
82
+ Prefer v2 icons for both outlined and colorful usage.
83
+
84
+ - Regular UI icons first query `outlined` candidates whose names contain `-v2_` or `-v2-` when such candidates semantically match the intent.
85
+ - File-type colorful icons first query File v2 colorful names, such as `icon_file-doc-v2_colorful`, `icon_file-sheet-v2_colorful`, `icon_file-round-doc-v2_colorful`, and similar entries.
86
+ - Source-restoration filled icons use catalog `filled` when the source clearly uses filled glyphs. Do not force a filled source area into v2 outlined just to satisfy regular UI defaults.
87
+ - If a single item lacks a strong v2 match, try a nearby v2 semantic match in the same area before falling back.
88
+ - If several important items in the same area lack suitable v2 matches, downgrade the whole area to the matching non-v2 type.
89
+ - Do not mix v2 outlined and non-v2 outlined inside the same navigation group, toolbar, quick-entry group, table row action area, or file-list group.
90
+
91
+ Brand logo icons are explicit brand assets and do not follow v2 priority.
92
+
93
+ ## Area Consistency
94
+
95
+ The same explicit area must keep one icon strategy. Common areas include navigation groups, top toolbar tools, filter/action toolbars, quick-entry groups, app-entry groups, table row actions, recent document lists, attachment lists, file directories, and brand headers.
96
+
97
+ Within one area, keep these properties consistent:
98
+
99
+ - family: do not mix `outlined`, `colorful`, `filled`, bitmap, emoji, character icons, or hand-written SVG shapes;
100
+ - version: do not mix v2 and non-v2 when the visual type is outlined;
101
+ - shape: do not mix File v2 colorful normal and round shapes;
102
+ - size: keep icon size consistent within the same toolbar, row, or menu;
103
+ - color role: use semantic hierarchy instead of random category colors.
104
+
105
+ Different areas may use different strategies. For example, a sidebar can use `v2-outlined`, a recent file list can use `file-v2-colorful-normal`, and a product header can use `brand-colorful`.
106
+
107
+ ## Natural-Language Page Generation
108
+
109
+ For natural-language tasks, choose icons by catalog `description` before relying on name similarity. Compare:
110
+
111
+ - user task and module intent;
112
+ - action semantics, such as search, filter, create, export, upload, approve, or delete;
113
+ - object semantics, such as document, sheet, calendar, meeting, mail, task, folder, or AI;
114
+ - state semantics, such as selected, disabled, warning, success, unread, locked, or offline;
115
+ - product domain and Chinese / English synonyms.
116
+
117
+ Regular page UI defaults to `v2-outlined` when matching candidates exist. Navigation, toolbars, search, filter, refresh, settings, more, upload, download, expand / collapse, entry cards, table row actions, status helpers, category helpers, and ordinary object types use outlined icons unless the area is a file-type group, brand identity, or screenshot source restoration.
118
+
119
+ ## Figma And Screenshot Restoration
120
+
121
+ Source evidence has priority. If the icon can be identified from layer name, component name, export name, visual shape, or nearby text, reproduce the same catalog `name`, family, version, and visual type.
122
+
123
+ First classify each explicit icon area by source visual type:
124
+
125
+ - `source-outlined`: strokes, hollow shapes, neutral line icons, or toolbar glyphs with visible stroke structure;
126
+ - `source-filled`: solid silhouettes, filled tab icons, filled status glyphs, or source icons whose main shape is filled rather than stroked;
127
+ - `source-colorful`: multicolor icons, product-color icons, file-type colorful icons, brand assets, or colorful circular / normal catalog icons.
128
+
129
+ Use the matching query style for the area:
130
+
131
+ ```txt
132
+ node scripts/icon-query.mjs --style source-outlined --query "<intent>"
133
+ node scripts/icon-query.mjs --style source-filled --query "<intent>"
134
+ node scripts/icon-query.mjs --style source-colorful --query "<intent>"
135
+ ```
136
+
137
+ Do not convert a clearly filled or colorful source area to outlined only because regular generated pages default to outlined. If one icon in an area has unclear source type, infer from neighboring icons in the same area, then keep the area consistent.
138
+
139
+ When the source icon is colorful:
140
+
141
+ - for screenshot restoration, when source icons are visibly colorful in an area, preserve colorful catalog icons for that area unless the source is unclear or no suitable catalog match exists;
142
+ - keep colorful if the source role is a brand logo, file-type identifier, or clearly colorful product/source icon;
143
+ - preserve the same area shape and type before selecting nearby alternatives;
144
+ - choose the closest same-type catalog entry by `description` when the exact name is missing;
145
+ - record `fallback_reason` when the selected icon differs from the source visual type.
146
+
147
+ When the source icon is filled:
148
+
149
+ - preserve filled catalog icons for the whole area when the source glyphs are visibly solid;
150
+ - choose the closest `filled` catalog entry by `description`, nearby text, and object / action semantics;
151
+ - keep size, color role, and filled-vs-outlined family consistent across the same area;
152
+ - record `fallback_reason` if no suitable filled match exists and the whole area falls back to outlined.
153
+
154
+ If the source is unclear or the area cannot stay consistent, downgrade the whole area to a consistent outlined strategy or use an icon-free structure.
155
+
156
+ ## File V2 Colorful
157
+
158
+ File v2 colorful identifies file types. It is appropriate for file lists, recent documents, document cards, attachment lists, templates, and file directories that need to distinguish doc, sheet, slide, base, mindnote, file, folder, and similar object types.
159
+
160
+ Before use, record in `icon_plan`:
161
+
162
+ - `usage: file_type_identification`;
163
+ - `visual_type: file-v2-colorful-normal` or `file-v2-colorful-round`;
164
+ - catalog `family: colorful`;
165
+ - file type;
166
+ - shape: `normal` or `round`;
167
+ - matched `name`, `hash` / `darkHash`, and final URL.
168
+
169
+ Do not use File v2 colorful for ordinary navigation, toolbars, entry categories, generic statuses, or decoration. If shape consistency cannot be confirmed, choose outlined or an icon-free structure.
170
+
171
+ ## Brand Logo Rules
172
+
173
+ Brand and product identity positions may use approved colorful logo assets:
174
+
175
+ - Use `icon_feishu-logotype-zh_colorful` for Chinese Feishu brand positions.
176
+ - Use `icon_feishu-logotype-en_colorful` for English Lark / Feishu brand positions.
177
+
178
+ These icons are `brand-colorful`. They are allowed in top brand areas, login / welcome areas, official brand pages, and product identity slots. Do not use them as ordinary navigation icons, list icons, status icons, or decorative marks.
179
+
180
+ Record in `icon_plan`:
181
+
182
+ - `usage: brand_identity`;
183
+ - language choice: `zh` or `en`;
184
+ - selected `name`, `hash` / `darkHash`, family, and final URL.
185
+
186
+ ## Icon Color Semantics
187
+
188
+ Icon color follows responsibility:
189
+
190
+ - default icon: `icon-n2`;
191
+ - current item, high emphasis, or current page anchor: `icon-n1`;
192
+ - low-emphasis helper: `icon-n3`;
193
+ - disabled state: `icon-disabled`;
194
+ - icon inside filled primary button: `primary-on-primary-fill`;
195
+ - primary action, link, focus, or current state on neutral surface: `primary-content-default`;
196
+ - danger, success, warning, and info icons: functional colors only for real statuses or real risks.
197
+
198
+ Navigation items, entry cards, toolbars, table row actions, category tags, ordinary object types, helper icons near avatars, and decorative positions default to neutral icon colors. Do not use brand blue, green, orange, red, or purple to categorize every entry in the same group. File v2 colorful uses its own file-type color and should not receive extra high-saturation or status colors.
199
+
200
+ ## Size Hierarchy
201
+
202
+ - 12px: dense inline metadata.
203
+ - 14px: compact controls and menu rows.
204
+ - 16px: standard actions.
205
+ - 20px: toolbar or empty-state helpers.
206
+ - 24px: prominent product objects or onboarding helpers.
207
+ - top-nav right tool button: 28px container + 20px linear icon; dense toolbars may use 18px icons, but the same group must be consistent.
208
+ - top-nav left menu / collapse control: 24-28px container + 18px icon.
209
+ - expanded side-navigation row: 18-24px icon or avatar container; regular product icons prefer 18px, avatars may use 24-28px.
210
+ - collapsed side-navigation rail: 40px row, centered icon, usually 18px icon or 24px avatar container.
211
+ - account avatar entry: 32px.
212
+
213
+ Judge icon size together with row height and button height. Icons should not be enlarged alone and create a loose, heavy feel.
214
+
215
+ ## Lightweight Checks
216
+
217
+ Keep checks light. They should catch obvious problems, not perform full semantic review.
218
+
219
+ Useful checks:
220
+
221
+ - icon URLs follow the catalog CDN pattern or a deliberate local asset path;
222
+ - page UI icons are traceable to catalog retrieval and do not use AI-drawn, CSS-drawn, canvas-drawn, emoji, text-character, third-party, or hand-written SVG replacements;
223
+ - `filled` appears only when source evidence or an explicit `source-filled` area strategy supports it;
224
+ - explicit areas marked or named as navigation, toolbar, quick entry, file list, table row actions, or brand header do not mix major family / version / shape;
225
+ - brand positions use the approved Feishu logotype assets when Feishu / Lark identity is required.
226
+
227
+ Avoid heavy checks:
228
+
229
+ - do not require every icon to include a long semantic proof;
230
+ - do not force every icon to be v2 when the v2 candidate is semantically weak;
231
+ - do not run complex DOM inference to guess every icon area;
232
+ - do not block screenshot restoration just because the source colorful icon is not a file-type icon;
233
+ - do not require a full icon audit for small pages with only one or two simple icons.
234
+
235
+ ## Fallback
236
+
237
+ If the catalog has no suitable icon, prefer text, Avatar, an official illustration, product image, card media, or an icon-free structure. Use non-v2 only after v2 candidates fail semantic matching. Use area-level fallback so one group stays visually coherent.