@qijenchen/design-system 0.1.0-beta.10 → 0.1.0-beta.13
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.
- package/CLAUDE.md +201 -0
- package/README.md +7 -15
- package/cli-init.mjs +90 -0
- package/ds-canonical/commands/README.md +26 -0
- package/ds-canonical/commands/gov-status.md +79 -0
- package/ds-canonical/hooks/README.md +145 -0
- package/ds-canonical/hooks/_log-fire.sh +44 -0
- package/ds-canonical/hooks/block_prototype_imports.py +111 -0
- package/ds-canonical/hooks/check_app_shell_primary_header_consistency.sh +68 -0
- package/ds-canonical/hooks/check_audit_post_report_validator.sh +88 -0
- package/ds-canonical/hooks/check_audit_sample_escape.sh +73 -0
- package/ds-canonical/hooks/check_benchmark_citation.sh +106 -0
- package/ds-canonical/hooks/check_canonical_propagation.sh +189 -0
- package/ds-canonical/hooks/check_chrome_header_handcraft.sh +70 -0
- package/ds-canonical/hooks/check_codex_brief_invariants.sh +83 -0
- package/ds-canonical/hooks/check_codex_collab_5step.sh +108 -0
- package/ds-canonical/hooks/check_datatable_invariants.sh +117 -0
- package/ds-canonical/hooks/check_dim_count_drift.sh +72 -0
- package/ds-canonical/hooks/check_field_controls_contracts.sh +110 -0
- package/ds-canonical/hooks/check_field_family_invariants.sh +205 -0
- package/ds-canonical/hooks/check_file_size_budget.sh +60 -0
- package/ds-canonical/hooks/check_header_with_tabs_border.sh +87 -0
- package/ds-canonical/hooks/check_main_branch_workbench.sh +93 -0
- package/ds-canonical/hooks/check_naming_and_abstraction.sh +165 -0
- package/ds-canonical/hooks/check_opacity_token_usage.sh +149 -0
- package/ds-canonical/hooks/check_pattern_invariants.sh +194 -0
- package/ds-canonical/hooks/check_peoplepicker_ssot_drift.sh +56 -0
- package/ds-canonical/hooks/check_pixel_quantified_audit.sh +53 -0
- package/ds-canonical/hooks/check_propose_plain_chinese.sh +74 -0
- package/ds-canonical/hooks/check_propose_pre_grep_verify.sh +70 -0
- package/ds-canonical/hooks/check_select_all_canonical.sh +58 -0
- package/ds-canonical/hooks/check_solo_workflow.sh +258 -0
- package/ds-canonical/hooks/check_spec_class_drift.sh +88 -0
- package/ds-canonical/hooks/check_story_invariants.sh +612 -0
- package/ds-canonical/hooks/check_substantive_edit_approval_preflight.sh +105 -0
- package/ds-canonical/hooks/check_tab_lg_chrome_header_equal.sh +66 -0
- package/ds-canonical/hooks/check_wrapper_primitive_schema_drift.sh +104 -0
- package/ds-canonical/hooks/enforce_home_charter.sh +44 -0
- package/ds-canonical/hooks/inject_pending_self_audit.sh +204 -0
- package/ds-canonical/hooks/lib/_approval_re.sh +33 -0
- package/ds-canonical/hooks/lib/_code_quality.sh +73 -0
- package/ds-canonical/hooks/lib/_cva_default_sync.sh +69 -0
- package/ds-canonical/hooks/lib/_governance_coverage_check.sh +49 -0
- package/ds-canonical/hooks/lib/_hardcoded_strings.sh +163 -0
- package/ds-canonical/hooks/lib/_layout_space_canonical.sh +56 -0
- package/ds-canonical/hooks/lib/_overlay_handcraft.sh +141 -0
- package/ds-canonical/hooks/lib/_person_data_richness.sh +42 -0
- package/ds-canonical/hooks/lib/_story_compile_drift.sh +48 -0
- package/ds-canonical/hooks/lib/_token_hygiene.sh +95 -0
- package/ds-canonical/hooks/log_governance_fires.sh +50 -0
- package/ds-canonical/hooks/log_skill_invokes.sh +41 -0
- package/ds-canonical/hooks/post_edit_dispatcher.sh +62 -0
- package/ds-canonical/hooks/retired/check_anatomy_section_numbering.sh +106 -0
- package/ds-canonical/hooks/retired/check_avatar_hovercard.sh +90 -0
- package/ds-canonical/hooks/retired/check_button_icon_literal.sh.retired-2026-04-28 +38 -0
- package/ds-canonical/hooks/retired/check_container_breathing.sh +142 -0
- package/ds-canonical/hooks/retired/check_governance_compliance.sh +61 -0
- package/ds-canonical/hooks/retired/check_icon_only_padding_formula.sh +104 -0
- package/ds-canonical/hooks/retired/check_item_content_primitive.sh +150 -0
- package/ds-canonical/hooks/retired/check_item_list_gap.sh +153 -0
- package/ds-canonical/hooks/retired/check_sideoffset_canonical.sh +65 -0
- package/ds-canonical/hooks/retired/check_spec_iteration_tag.sh +87 -0
- package/ds-canonical/hooks/retired/check_ssot_consultation.sh +88 -0
- package/ds-canonical/hooks/retired/check_sync_update.sh +20 -0
- package/ds-canonical/hooks/retired/check_third_party_dom_verified.sh +95 -0
- package/ds-canonical/hooks/retired/enforce_home_charter.sh +125 -0
- package/ds-canonical/hooks/retired/post_edit_canonical_interrogate.sh +109 -0
- package/ds-canonical/hooks/retired/pre_edit_spec_check.sh +68 -0
- package/ds-canonical/hooks/retired/pre_new_component_spec.sh +39 -0
- package/ds-canonical/hooks/retired/pre_write_subsumption_check.sh +112 -0
- package/ds-canonical/hooks/retired/stop_meta_self_audit.sh.retired-2026-05-13 +76 -0
- package/ds-canonical/hooks/retired/tests/test_check_anatomy_section_numbering.sh +14 -0
- package/ds-canonical/hooks/retired/tests/test_check_avatar_hovercard.sh +15 -0
- package/ds-canonical/hooks/retired/tests/test_check_container_breathing.sh +15 -0
- package/ds-canonical/hooks/retired/tests/test_check_governance_compliance.sh +15 -0
- package/ds-canonical/hooks/retired/tests/test_check_icon_only_padding_formula.sh +79 -0
- package/ds-canonical/hooks/retired/tests/test_check_item_content_primitive.sh +15 -0
- package/ds-canonical/hooks/retired/tests/test_check_item_list_gap.sh +163 -0
- package/ds-canonical/hooks/retired/tests/test_check_sideoffset_canonical.sh +15 -0
- package/ds-canonical/hooks/retired/tests/test_check_spec_iteration_tag.sh +15 -0
- package/ds-canonical/hooks/retired/tests/test_check_ssot_consultation.sh +15 -0
- package/ds-canonical/hooks/retired/tests/test_check_sync_update.sh +14 -0
- package/ds-canonical/hooks/retired/tests/test_check_third_party_dom_verified.sh +15 -0
- package/ds-canonical/hooks/retired/tests/test_enforce_home_charter.sh +15 -0
- package/ds-canonical/hooks/retired/tests/test_pre_edit_spec_check.sh +15 -0
- package/ds-canonical/hooks/retired/tests/test_pre_new_component_spec.sh +15 -0
- package/ds-canonical/hooks/retired/tests/test_pre_write_subsumption_check.sh +63 -0
- package/ds-canonical/hooks/session_start_governance_check.sh +263 -0
- package/ds-canonical/hooks/stop_passive_logging.sh +322 -0
- package/ds-canonical/hooks/stop_self_audit.sh +450 -0
- package/ds-canonical/hooks/tests/KNOWN-BROKEN.md +15 -0
- package/ds-canonical/hooks/tests/run-all.sh +76 -0
- package/ds-canonical/hooks/tests/test_block_prototype_imports.sh +143 -0
- package/ds-canonical/hooks/tests/test_check_app_shell_primary_header_consistency.sh +140 -0
- package/ds-canonical/hooks/tests/test_check_audit_post_report_validator.sh +115 -0
- package/ds-canonical/hooks/tests/test_check_audit_sample_escape.sh +93 -0
- package/ds-canonical/hooks/tests/test_check_benchmark_citation.sh +115 -0
- package/ds-canonical/hooks/tests/test_check_canonical_propagation.sh +133 -0
- package/ds-canonical/hooks/tests/test_check_chrome_header_handcraft.sh +123 -0
- package/ds-canonical/hooks/tests/test_check_code_quality.sh +15 -0
- package/ds-canonical/hooks/tests/test_check_codex_collab_5step.sh +96 -0
- package/ds-canonical/hooks/tests/test_check_cva_default_sync.sh +15 -0
- package/ds-canonical/hooks/tests/test_check_datatable_invariants.sh +122 -0
- package/ds-canonical/hooks/tests/test_check_dim_count_drift.sh +98 -0
- package/ds-canonical/hooks/tests/test_check_field_controls_contracts.sh +126 -0
- package/ds-canonical/hooks/tests/test_check_field_family_invariants.sh +194 -0
- package/ds-canonical/hooks/tests/test_check_file_size_budget.sh +32 -0
- package/ds-canonical/hooks/tests/test_check_hardcoded_strings.sh +14 -0
- package/ds-canonical/hooks/tests/test_check_header_with_tabs_border.sh +110 -0
- package/ds-canonical/hooks/tests/test_check_layout_space_canonical.sh +73 -0
- package/ds-canonical/hooks/tests/test_check_main_branch_workbench.sh +147 -0
- package/ds-canonical/hooks/tests/test_check_naming_and_abstraction.sh +136 -0
- package/ds-canonical/hooks/tests/test_check_opacity_token_usage.sh +110 -0
- package/ds-canonical/hooks/tests/test_check_overlay_handcraft.sh +126 -0
- package/ds-canonical/hooks/tests/test_check_pattern_invariants.sh +148 -0
- package/ds-canonical/hooks/tests/test_check_peoplepicker_ssot_drift.sh +108 -0
- package/ds-canonical/hooks/tests/test_check_person_data_richness.sh +58 -0
- package/ds-canonical/hooks/tests/test_check_pixel_quantified_audit.sh +142 -0
- package/ds-canonical/hooks/tests/test_check_propose_plain_chinese.sh +126 -0
- package/ds-canonical/hooks/tests/test_check_propose_pre_grep_verify.sh +117 -0
- package/ds-canonical/hooks/tests/test_check_select_all_canonical.sh +125 -0
- package/ds-canonical/hooks/tests/test_check_solo_workflow.sh +201 -0
- package/ds-canonical/hooks/tests/test_check_spec_class_drift.sh +135 -0
- package/ds-canonical/hooks/tests/test_check_story_anatomy.sh.broken +197 -0
- package/ds-canonical/hooks/tests/test_check_story_category.sh.broken +187 -0
- package/ds-canonical/hooks/tests/test_check_story_compile_drift.sh +15 -0
- package/ds-canonical/hooks/tests/test_check_story_invariants.sh +209 -0
- package/ds-canonical/hooks/tests/test_check_story_name_jargon.sh.broken +53 -0
- package/ds-canonical/hooks/tests/test_check_story_slot_split.sh +156 -0
- package/ds-canonical/hooks/tests/test_check_substantive_edit_approval_preflight.sh +176 -0
- package/ds-canonical/hooks/tests/test_check_tab_lg_chrome_header_equal.sh +138 -0
- package/ds-canonical/hooks/tests/test_check_token_hygiene.sh +21 -0
- package/ds-canonical/hooks/tests/test_check_wrapper_primitive_schema_drift.sh +169 -0
- package/ds-canonical/hooks/tests/test_enforce_home_charter.sh +77 -0
- package/ds-canonical/hooks/tests/test_inject_pending_self_audit.sh +125 -0
- package/ds-canonical/hooks/tests/test_log_governance_fires.sh +10 -0
- package/ds-canonical/hooks/tests/test_log_skill_invokes.sh +7 -0
- package/ds-canonical/hooks/tests/test_post_edit_dispatcher.sh +108 -0
- package/ds-canonical/hooks/tests/test_session_start_governance_check.sh +143 -0
- package/ds-canonical/hooks/tests/test_stop_capture_metrics.sh +95 -0
- package/ds-canonical/hooks/tests/test_stop_governance_drift_check.sh.broken +125 -0
- package/ds-canonical/hooks/tests/test_stop_harvest_corrections.sh +10 -0
- package/ds-canonical/hooks/tests/test_stop_passive_logging.sh +100 -0
- package/ds-canonical/hooks/tests/test_stop_self_audit.sh +76 -0
- package/ds-canonical/hooks/tests/test_stop_tsc_sanity.sh +10 -0
- package/ds-canonical/references/README.md +43 -0
- package/ds-canonical/references/audit-coverage-vs-24-checklist.md +74 -0
- package/ds-canonical/references/build-ui-canonicals.md +69 -0
- package/ds-canonical/references/cva-patterns.md +41 -0
- package/ds-canonical/references/drag-canonical.md +331 -0
- package/ds-canonical/references/item-anatomy-recipe.md +225 -0
- package/ds-canonical/references/naming-conventions.md +56 -0
- package/ds-canonical/references/principle-dim-map.json +515 -0
- package/ds-canonical/references/props-naming.md +45 -0
- package/ds-canonical/references/spec-rules.md +58 -0
- package/ds-canonical/references/ssot-consultation.md +63 -0
- package/ds-canonical/references/ssot-index.md +40 -0
- package/ds-canonical/references/story-baseline-registry.json +79 -0
- package/ds-canonical/references/structural-token-retention.md +42 -0
- package/ds-canonical/references/tailwind-gotchas.md +87 -0
- package/ds-canonical/references/ui-dev-rules.md +60 -0
- package/ds-canonical/rules/README.md +34 -0
- package/ds-canonical/rules/meta-patterns.md +87 -0
- package/ds-canonical/rules/self-verify.md +53 -0
- package/ds-canonical/rules/spec-rules.md +25 -0
- package/ds-canonical/rules/story-rules.md +56 -0
- package/ds-canonical/rules/ui-development.md +87 -0
- package/ds-canonical/skills/README.md +88 -0
- package/ds-canonical/skills/bug-fix-rhythm/SKILL.md +181 -0
- package/ds-canonical/skills/code-quality-audit/SKILL.md +63 -0
- package/ds-canonical/skills/codex-collab/SKILL.md +249 -0
- package/ds-canonical/skills/codex-collab/references/brief-template.md +48 -0
- package/ds-canonical/skills/codex-collab/references/transport.md +58 -0
- package/ds-canonical/skills/codify-corrections/SKILL.md +184 -0
- package/ds-canonical/skills/codify-principle/SKILL.md +151 -0
- package/ds-canonical/skills/component-quality-gate/SKILL.md +102 -0
- package/ds-canonical/skills/component-quality-gate/references/checklist.md +79 -0
- package/ds-canonical/skills/deep-audit-cross-codex/SKILL.md +247 -0
- package/ds-canonical/skills/deep-audit-cross-codex/references/phase-a-workflow.md +123 -0
- package/ds-canonical/skills/deep-audit-cross-codex/references/phase-b-codex-brief.md +165 -0
- package/ds-canonical/skills/deep-audit-cross-codex/references/triage-rubric.md +91 -0
- package/ds-canonical/skills/delivery-handoff/SKILL.md +229 -0
- package/ds-canonical/skills/delivery-handoff/references/flow-diagram.md +180 -0
- package/ds-canonical/skills/delivery-handoff/references/handoff-template.md +177 -0
- package/ds-canonical/skills/delivery-handoff/references/inventory-checklist.md +196 -0
- package/ds-canonical/skills/design-system-audit/SKILL.md +343 -0
- package/ds-canonical/skills/design-system-audit/references/audit-prompts.md +1260 -0
- package/ds-canonical/skills/design-system-audit/references/checkpoints.md +240 -0
- package/ds-canonical/skills/design-system-audit/references/historical-bugs.md +240 -0
- package/ds-canonical/skills/design-system-audit/references/principle-audit-protocol.md +364 -0
- package/ds-canonical/skills/design-system-audit/references/rule-placement.md +175 -0
- package/ds-canonical/skills/design-system-audit/references/spec-template.md +66 -0
- package/ds-canonical/skills/ensure-canonical/SKILL.md +196 -0
- package/ds-canonical/skills/governance-health/SKILL.md +146 -0
- package/ds-canonical/skills/knowledge-prune/SKILL.md +303 -0
- package/ds-canonical/skills/new-component/SKILL.md +170 -0
- package/ds-canonical/skills/new-component/references/new-component-checklist.md +85 -0
- package/ds-canonical/skills/performance-audit/SKILL.md +107 -0
- package/ds-canonical/skills/product-ui-audit/SKILL.md +230 -0
- package/ds-canonical/skills/product-ui-audit/references/audit-checks.md +246 -0
- package/ds-canonical/skills/product-ui-audit/references/common-misuses.md +329 -0
- package/ds-canonical/skills/product-ui-audit/references/report-template.md +159 -0
- package/ds-canonical/skills/propose-options/SKILL.md +177 -0
- package/ds-canonical/skills/prototype/SKILL.md +244 -0
- package/ds-canonical/skills/prototype/references/audit-checks.md +37 -0
- package/ds-canonical/skills/prototype/references/benchmark-sources.md +94 -0
- package/ds-canonical/skills/prototype/references/checkpoints.md +191 -0
- package/ds-canonical/skills/prototype/references/evaluation-matrix.md +141 -0
- package/ds-canonical/skills/prototype/references/ooux-template.md +198 -0
- package/ds-canonical/skills/prototype/references/proposal-template.md +229 -0
- package/ds-canonical/skills/scan-similar-bugs/SKILL.md +198 -0
- package/ds-canonical/skills/story-auto-compile-migrate/SKILL.md +159 -0
- package/ds-canonical/skills/story-writing/SKILL.md +122 -0
- package/ds-canonical/skills/story-writing/references/anatomy-standard.md +217 -0
- package/ds-canonical/skills/story-writing/references/category-templates.md +174 -0
- package/ds-canonical/skills/story-writing/references/example-selection.md +70 -0
- package/ds-canonical/skills/story-writing/references/self-check.md +20 -0
- package/ds-canonical/skills/ux-audit/SKILL.md +130 -0
- package/ds-canonical/skills/visual-audit/SKILL.md +245 -0
- package/ds-canonical/skills/visual-audit/output/.gitkeep +0 -0
- package/ds-canonical/skills/visual-audit/references/audit-architecture.md +100 -0
- package/ds-canonical/skills/visual-audit/references/visual-checklist.md +297 -0
- package/ds-canonical/skills/visual-audit/references/world-class-benchmarks.md +198 -0
- package/package.json +9 -5
- package/src/components/Accordion/accordion.spec.md +114 -0
- package/src/components/Alert/alert.spec.md +197 -0
- package/src/components/AppShell/app-shell.spec.md +331 -0
- package/src/components/AspectRatio/aspect-ratio.spec.md +134 -0
- package/src/components/Avatar/avatar.spec.md +329 -0
- package/src/components/Badge/badge.spec.md +380 -0
- package/src/components/Breadcrumb/breadcrumb.spec.md +257 -0
- package/src/components/BulkActionBar/bulk-action-bar.spec.md +210 -0
- package/src/components/Button/button.spec.md +460 -0
- package/src/components/Calendar/calendar.spec.md +242 -0
- package/src/components/Carousel/carousel.spec.md +253 -0
- package/src/components/Chart/chart.spec.md +155 -0
- package/src/components/Checkbox/checkbox.spec.md +344 -0
- package/src/components/Chip/chip.spec.md +237 -0
- package/src/components/CircularProgress/circular-progress.spec.md +268 -0
- package/src/components/Coachmark/coachmark.spec.md +230 -0
- package/src/components/Combobox/combobox.spec.md +180 -0
- package/src/components/Command/command.spec.md +171 -0
- package/src/components/DataTable/data-table.spec.md +525 -0
- package/src/components/DateGrid/date-grid.spec.md +215 -0
- package/src/components/DatePicker/date-picker.spec.md +334 -0
- package/src/components/DescriptionList/description-list.spec.md +214 -0
- package/src/components/Dialog/dialog.spec.md +202 -0
- package/src/components/DropdownMenu/dropdown-menu.spec.md +250 -0
- package/src/components/Empty/empty.spec.md +214 -0
- package/src/components/Field/field-controls.spec.md +338 -0
- package/src/components/Field/field.spec.md +438 -0
- package/src/components/Field/form-validation.spec.md +152 -0
- package/src/components/FieldControlGroup/field-control-group.spec.md +176 -0
- package/src/components/FileItem/file-item.spec.md +467 -0
- package/src/components/FileUpload/file-upload.spec.md +123 -0
- package/src/components/FileViewer/file-viewer.spec.md +373 -0
- package/src/components/HoverCard/hover-card.spec.md +157 -0
- package/src/components/Input/input.spec.md +193 -0
- package/src/components/LinkInput/link-input.spec.md +130 -0
- package/src/components/Menu/menu-item.spec.md +290 -0
- package/src/components/NameCard/name-card.spec.md +171 -0
- package/src/components/Notice/notice.spec.md +149 -0
- package/src/components/NumberInput/number-input.spec.md +126 -0
- package/src/components/OverflowIndicator/overflow-indicator.spec.md +120 -0
- package/src/components/PeoplePicker/people-picker.spec.md +263 -0
- package/src/components/Popover/popover.spec.md +198 -0
- package/src/components/ProgressBar/progress-bar.spec.md +232 -0
- package/src/components/RadioGroup/radio-group.spec.md +141 -0
- package/src/components/Rating/rating.spec.md +208 -0
- package/src/components/ScrollArea/scroll-area.spec.md +145 -0
- package/src/components/SegmentedControl/segmented-control.spec.md +295 -0
- package/src/components/Select/select.spec.md +299 -0
- package/src/components/SelectMenu/select-menu.spec.md +220 -0
- package/src/components/SelectionControl/selection-item.spec.md +128 -0
- package/src/components/Separator/separator.spec.md +109 -0
- package/src/components/Sheet/sheet.spec.md +148 -0
- package/src/components/Sidebar/sidebar.spec.md +713 -0
- package/src/components/Skeleton/skeleton.spec.md +104 -0
- package/src/components/Slider/slider.spec.md +353 -0
- package/src/components/Steps/steps.spec.md +465 -0
- package/src/components/Switch/switch.spec.md +215 -0
- package/src/components/Tabs/tabs.spec.md +314 -0
- package/src/components/Tag/tag.spec.md +282 -0
- package/src/components/Textarea/textarea.spec.md +151 -0
- package/src/components/TimePicker/time-picker.spec.md +279 -0
- package/src/components/Toast/toast.spec.md +177 -0
- package/src/components/Tooltip/tooltip.spec.md +139 -0
- package/src/components/TreeView/tree-view.spec.md +374 -0
- package/src/patterns/action-bar/action-bar.spec.md +458 -0
- package/src/patterns/element-anatomy/element-anatomy.spec.md +215 -0
- package/src/patterns/element-anatomy/inline-action.spec.md +315 -0
- package/src/patterns/element-anatomy/item-anatomy.spec.md +1042 -0
- package/src/patterns/header-canonical/header-canonical.spec.md +285 -0
- package/src/patterns/horizontal-overflow/horizontal-overflow.spec.md +191 -0
- package/src/patterns/overlay-surface/overlay-surface.spec.md +428 -0
- package/src/patterns/resize-handle/resize-handle.spec.md +109 -0
- package/src/tokens/color/color.spec.md +804 -0
- package/src/tokens/density/density.spec.md +127 -0
- package/src/tokens/elevation/elevation.spec.md +81 -0
- package/src/tokens/layoutSpace/layoutSpace.spec.md +314 -0
- package/src/tokens/motion/motion.spec.md +97 -0
- package/src/tokens/opacity/opacity.spec.md +78 -0
- package/src/tokens/orphan-tokens.spec.md +117 -0
- package/src/tokens/radius/radius.spec.md +123 -0
- package/src/tokens/typography/typography.spec.md +202 -0
- package/src/tokens/uiSize/uiSize.spec.md +438 -0
- package/src/styles/preset.css +0 -31
|
@@ -0,0 +1,151 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: codify-principle
|
|
3
|
+
description: User 提出新設計原則 → auto 5-layer artifact generation pipeline。將原則文字自動轉化為 SSOT canonical text + hook scaffold + audit dim + scaffold update + memory entry,放入正確 home。對齊 M14 + M19 + 8-home 治理 canonical。Invoke when user says「我想加一條設計原則 X」「新原則 Y」「ensure X always」OR auto-recognize trigger phrase。本 skill 把 reactive markdown rule 升級成 proactive principle-to-artifact generator。
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Codify Principle Skill — 原則 → 5-layer artifacts auto-generator
|
|
7
|
+
|
|
8
|
+
User mandate「我說一條原則 → 自動轉化產生正確 artifacts 放正確位置」(2026-04-26)。本 skill 是 M19 ensure-canonical pipeline 的 generator 上層,接受 principle text 為 input,output 5-layer 完整落地。
|
|
9
|
+
|
|
10
|
+
## When to invoke
|
|
11
|
+
|
|
12
|
+
- User 明說「我想加一條設計原則 X」「新原則 Y」
|
|
13
|
+
- User 描述新規則 + 期望「永遠遵守」/「不可漂移」
|
|
14
|
+
- M19 trigger phrase(確保 / 一定 / 永遠不漂移)+ 涉及新原則內容
|
|
15
|
+
- Auto-chained from `/ensure-canonical` 當 trigger 是「新原則」非「既有原則 enforce」
|
|
16
|
+
|
|
17
|
+
## Non-goals
|
|
18
|
+
|
|
19
|
+
- 不直接動既有 canonical without sign-off(改 substantive meaning 走 STOP)
|
|
20
|
+
- 不跳過 M8 benchmark — 任何新 cross-component 原則必 ≥ 3 家世界級對照
|
|
21
|
+
- 不省略 user sign-off checkpoint
|
|
22
|
+
- 不替換 user 判斷 — 模糊原則需要 user 親自釐清
|
|
23
|
+
|
|
24
|
+
## Workflow(7 phases)
|
|
25
|
+
|
|
26
|
+
### Phase 1 — Parse principle text(Auto)
|
|
27
|
+
|
|
28
|
+
User 提供 principle text。Skill 提取:
|
|
29
|
+
- **Scope**:跨元件 / 單元件 / 跨 layer / governance-only
|
|
30
|
+
- **Type**:Absolute(機械可驗)/ Consistency(對照可驗)/ Judgement(無 mechanical)
|
|
31
|
+
- **Affected homes**(8-home matching):
|
|
32
|
+
- `CLAUDE.md` 章節?
|
|
33
|
+
- `*.spec.md` 哪個元件?
|
|
34
|
+
- 新 hook?
|
|
35
|
+
- 新 audit dim?
|
|
36
|
+
- 新 skill?
|
|
37
|
+
- Memory entry?
|
|
38
|
+
|
|
39
|
+
### Phase 2 — M8 benchmark(STOP if missing)
|
|
40
|
+
|
|
41
|
+
對 cross-component 原則(scope ≠ governance-only),**強制** M8 ≥ 3 家世界級 DS 對照:
|
|
42
|
+
1. 跑 web research(WebFetch Polaris / Material / Carbon / Atlassian / Ant 等對應 component / pattern)
|
|
43
|
+
2. 列對照表:每家做法 + 我們對齊 / 偏離 + 偏離 rationale
|
|
44
|
+
3. **STOP** 若 < 3 家對照 → 跟 user 確認原則是否成熟
|
|
45
|
+
|
|
46
|
+
### Phase 3 — Draft 5 layer artifacts(STOP per layer)
|
|
47
|
+
|
|
48
|
+
每 layer 產 draft + Checkpoint sign-off:
|
|
49
|
+
|
|
50
|
+
| Layer | Action |
|
|
51
|
+
|-------|--------|
|
|
52
|
+
| 1. SSOT canonical | 寫 markdown text 到對應 home(CLAUDE.md 章節 / spec.md 段 / references/{topic}.md);包含 rule + Why + How to apply + 世界級 anchor |
|
|
53
|
+
| 2. Spec frontmatter | 若 trait-like → 加入 `traits:` array OR 新增 frontmatter field |
|
|
54
|
+
| 3. Hook | 若 Absolute → scaffold `.claude/hooks/check_{topic}.sh` 含 P0/P1 detection logic + 7-Q self-check 模板 |
|
|
55
|
+
| 4. Audit dim | 加 dim N 到 `/design-system-audit` SKILL + audit-prompts.md(periodic verify) |
|
|
56
|
+
| 5. Memory | 寫 `~/.../memory/project_{topic}_{date}.md` + add MEMORY.md index entry |
|
|
57
|
+
|
|
58
|
+
**每 layer 都 Checkpoint user sign-off**:
|
|
59
|
+
```
|
|
60
|
+
Phase 3 Layer N draft ready:
|
|
61
|
+
{draft content}
|
|
62
|
+
Approve? Edit? Skip?
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
### Phase 4 — Auto-generate scaffold update
|
|
66
|
+
|
|
67
|
+
若原則是「新元件 / 新 story 該滿足」 → 更新 `/new-component` Phase 5 scaffold + `/story-writing` Phase 0。
|
|
68
|
+
|
|
69
|
+
### Phase 5 — Auto-generate hook test
|
|
70
|
+
|
|
71
|
+
若 Layer 3 hook 建立 → scaffold `.claude/hooks/tests/test_{topic}.sh` 含 ≥ 5 smoke tests(silent skip / canonical compliance / drift block / rationale escape / per-trait verify)。
|
|
72
|
+
|
|
73
|
+
### Phase 6 — Apply + verify(分組 commit)
|
|
74
|
+
|
|
75
|
+
Per layer 一個 commit:
|
|
76
|
+
1. SSOT commit
|
|
77
|
+
2. Hook + test commit
|
|
78
|
+
3. Audit dim commit
|
|
79
|
+
4. Scaffold update commit
|
|
80
|
+
5. Memory + final verify commit
|
|
81
|
+
|
|
82
|
+
每 commit 後跑:
|
|
83
|
+
- `npx tsc -b`
|
|
84
|
+
- 新 hook test
|
|
85
|
+
- `node scripts/audit-content-quality.mjs --check`(防 content drift)
|
|
86
|
+
|
|
87
|
+
### Phase 7 — Self-improvement capture
|
|
88
|
+
|
|
89
|
+
```markdown
|
|
90
|
+
## Self-improvement capture
|
|
91
|
+
- 新原則 SSOT home: {path}
|
|
92
|
+
- 新 hook: {filename} / fires on: {pattern}
|
|
93
|
+
- 新 audit dim: N
|
|
94
|
+
- 5-layer 落地完整度: {% layers actually shipped}
|
|
95
|
+
- 跳過的 layer + rationale: {if any}
|
|
96
|
+
```
|
|
97
|
+
|
|
98
|
+
更新 `.claude/logs/codified-principles.jsonl` log:
|
|
99
|
+
```json
|
|
100
|
+
{"date":"2026-04-26", "principle":"...", "scope":"...", "layers":["ssot","hook","audit","scaffold","memory"], "commits":[...]}
|
|
101
|
+
```
|
|
102
|
+
|
|
103
|
+
## Checkpoints(禁止跳)
|
|
104
|
+
|
|
105
|
+
### ⚠️ Checkpoint 1 — Phase 1 parse
|
|
106
|
+
User 親自確認 scope / type / affected homes 是否正確,禁 AI 單方面決定。
|
|
107
|
+
|
|
108
|
+
### ⚠️ Checkpoint 2 — Phase 2 benchmark
|
|
109
|
+
< 3 家世界級對照 → STOP,跟 user 確認是否走 OG-only(原創原則,需 rationale 文檔)。
|
|
110
|
+
|
|
111
|
+
### ⚠️ Checkpoint 3 — Phase 3 per-layer
|
|
112
|
+
每 layer draft 都過 user。SSOT 是 canonical 改變,動 substantive meaning → 必 sign-off。
|
|
113
|
+
|
|
114
|
+
### ⚠️ Checkpoint 4 — Phase 6 verify
|
|
115
|
+
任何 layer commit 後 tsc / hook test fail → 回該 phase 修,**不繞過**。
|
|
116
|
+
|
|
117
|
+
## 與既有 skills 分工
|
|
118
|
+
|
|
119
|
+
| Skill | Scope |
|
|
120
|
+
|-------|-------|
|
|
121
|
+
| `/ensure-canonical` | 既有原則 enforcement(hook / audit 補強)|
|
|
122
|
+
| `/codify-principle`(本)| **新原則** 從 0 生成 5-layer artifacts |
|
|
123
|
+
| `/knowledge-prune` | 反向:既有原則太多時 retire |
|
|
124
|
+
| `/design-system-audit` | periodic verify 既有 artifacts compliance |
|
|
125
|
+
|
|
126
|
+
`/codify-principle` 是新原則 entry point;落地後其他 skill 接管 enforcement / verify / retire。
|
|
127
|
+
|
|
128
|
+
## References
|
|
129
|
+
|
|
130
|
+
- `~/.../memory/MEMORY.md` — index of codified principles
|
|
131
|
+
- `.claude/logs/codified-principles.jsonl` — execution log
|
|
132
|
+
- CLAUDE.md `# 資訊治理 canonical` 8-home — home 識別 rules
|
|
133
|
+
- CLAUDE.md `# Meta-Pattern 預警` M14 / M19 — 上游 pipeline rules
|
|
134
|
+
|
|
135
|
+
## 範例呼叫
|
|
136
|
+
|
|
137
|
+
User 說:「我要加一條原則:所有 form-like 元件必須支援 controlled + uncontrolled dual-mode」
|
|
138
|
+
|
|
139
|
+
Skill 自動:
|
|
140
|
+
1. Parse:scope=cross-component,type=Absolute(可機械驗 prop pair)
|
|
141
|
+
2. M8:Polaris/Material/Atlassian React form lib 都支援 dual-mode ✓ (3/3 ≥3)
|
|
142
|
+
3. Draft layer:
|
|
143
|
+
- SSOT:`.claude/rules/ui-development.md`「元件 Props 命名」 + form spec
|
|
144
|
+
- Hook:`.claude/hooks/check_form_dual_mode.sh` 偵測 missing pair
|
|
145
|
+
- Audit dim:Dim 31「Dual-mode coherence」(已存在 Dim 26 — STOP 提議擴充而非新增)
|
|
146
|
+
- Scaffold:`/new-component` Phase 4 加 dual-mode template
|
|
147
|
+
- Memory:`project_form_dual_mode_2026_04_26.md`
|
|
148
|
+
4. Per-layer Checkpoint
|
|
149
|
+
5. Hook test + audit prompt
|
|
150
|
+
6. Apply + tsc + verify
|
|
151
|
+
7. Capture
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: component-quality-gate
|
|
3
|
+
description: Pre-merge quality gate for new or significantly refactored design-system components. Walks through Spec / Code / Stories / Ship checklist (45+ items) to ensure world-class discipline before a component enters `packages/design-system/src/components/`. Invoke when user says「元件做完了」「這元件可以收工了嗎」「元件 ready 嗎」「check 這個 element」「要 merge 進 DS 了」or before closing a component PR.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Component Quality Gate
|
|
7
|
+
|
|
8
|
+
Purpose: 元件進 `packages/design-system/src/components/` 前的最終 checklist。防止「code 寫完但 spec / stories / token 消費紀律有漂移」的半成品進入系統。
|
|
9
|
+
|
|
10
|
+
## When to run
|
|
11
|
+
|
|
12
|
+
- 新元件即將合入 design-system
|
|
13
|
+
- 既有元件大改(variant / size / token 結構重構)
|
|
14
|
+
- Code review 前的自審
|
|
15
|
+
- `/design-system-audit` 發現某元件偏離 checklist 後的修復驗證
|
|
16
|
+
|
|
17
|
+
**不 invoke 的情境**:小改(typo / 單 bug fix),走 spec 本身的 sync hook 即可。
|
|
18
|
+
|
|
19
|
+
## Preconditions
|
|
20
|
+
|
|
21
|
+
- 元件 folder 存在於 `packages/design-system/src/components/{Name}/`
|
|
22
|
+
- 該元件的 `.spec.md` / `.tsx` / `.stories.tsx` / `.anatomy.stories.tsx` / `.principles.stories.tsx` 已完成初稿
|
|
23
|
+
- 已讀相關 path-scoped rules(`.claude/rules/spec-rules.md` / `.claude/rules/ui-development.md`(含 Tailwind / Token 命名 / Props 命名 / shadcn 元件規範) / `.claude/rules/story-rules.md`)
|
|
24
|
+
|
|
25
|
+
## Workflow
|
|
26
|
+
|
|
27
|
+
### Phase 1 — Spec 審查(先於 code,spec 是 judgment home)
|
|
28
|
+
|
|
29
|
+
逐條走 `references/checklist.md` 的 **Spec section**(12 項):定位明確 / 實作基礎宣告 / 每個 prop/variant 有何時用何時不用 / 互斥規則 / 為什麼不只是什麼 / 術語一致 / 無視覺描述 / 禁止事項列出 / 邊界案例覆蓋 / 近親 SSOT pointer / 對標世界級 7 維度。
|
|
30
|
+
|
|
31
|
+
任一不過 → 停下補 spec。**不往下跑 Phase 2**。
|
|
32
|
+
|
|
33
|
+
### Phase 2 — Code 審查
|
|
34
|
+
|
|
35
|
+
走 **Code section**(13 項):shadcn 基底完整 / cva() 不條件字串 / data-* selector / 無硬寫 token / Tailwind v4 var() 正確 / 無自包 Provider / Props 命名按「是什麼」/ ARIA 齊 / defaultVariants size=md 若屬 field-height family。
|
|
36
|
+
|
|
37
|
+
cva `defaultVariants` 異動 → 強制 grep 該元件所有檔案確認三方同步(見 `.claude/skills/story-writing/references/anatomy-standard.md` → 高風險漂移點)。
|
|
38
|
+
|
|
39
|
+
### Phase 3 — Stories 審查
|
|
40
|
+
|
|
41
|
+
走 **Stories section**(6 項):展示 / 設計規格 5-story 齊全 / TOKEN_MAP 對得上 cva / Rule note 傳達原則 / title 命名對齊 / Internal vs Components 判斷正確。
|
|
42
|
+
|
|
43
|
+
範例品質問題 → invoke `/story-writing` skill 做深度審。
|
|
44
|
+
|
|
45
|
+
### Phase 4 — Ship 審查(最後驗證)
|
|
46
|
+
|
|
47
|
+
走 **Ship section**(6 項):
|
|
48
|
+
1. `npm run storybook` 本地渲染正常
|
|
49
|
+
2. `npx tsc -b` 無錯(**禁用 `--noEmit`**,root tsconfig `files: []` silent pass)
|
|
50
|
+
3. import 路徑 `@/design-system/...`
|
|
51
|
+
4. 分類標註(Internal vs public)正確
|
|
52
|
+
5. **Visual audit 過關**(2026-04-21,stakeholder-gate 強制)
|
|
53
|
+
6. **Story canonical-drift 過關**(2026-04-24,Phase 4 story auto-compile)— 若元件已 migration(有 `componentMeta` export + spec frontmatter)→ 跑 `node scripts/compile-stories.mjs {Name} --check` 必 exit 0;migration 未做 → skip 此項(另 new-component skill 推動逐步 migration)
|
|
54
|
+
7. **Code quality 過關**(2026-04-24,Dim 27)— 跑 `node scripts/code-quality-audit.mjs --scope=component:{Name} --check` 必 exit 0(無 P0 clean-code violation)。P1 flag 但不 block;P0(`any` 無 escape / file-size > 800 / circular dep)必修才 ship
|
|
55
|
+
|
|
56
|
+
### Phase 4.5 — 進階稽核 6 維(強制 chain,對齊 CLAUDE.md `# 稽核 canonical` M6)
|
|
57
|
+
|
|
58
|
+
**這是 stakeholder-gate,不能跳**。元件 merge = stakeholder-visible 產出,**必過進階模式 6 維**(非高效)。
|
|
59
|
+
|
|
60
|
+
| 維度 | 做法 | Chain 的 skill / tool |
|
|
61
|
+
|------|------|--------------------|
|
|
62
|
+
| D1 設計語言一致 | Phase 1-3 已覆蓋 | — |
|
|
63
|
+
| D2 程式語言一致 | Phase 2 + tsc + lint | — |
|
|
64
|
+
| **D3 元件效能** | 檢查 render / memo / bundle | chain `/performance-audit` |
|
|
65
|
+
| **D4 UX 行為** | keyboard / focus / ARIA / animation / interaction canonical | chain `/ux-audit` |
|
|
66
|
+
| **D5 視覺品質** | Layer A mechanical + Layer B AI judgement | Auto `npm run visual-audit -- --scope=component:{Name}` + chain `/visual-audit` |
|
|
67
|
+
| D6 設計原則自檢(4 子維)| chain `principle-audit-protocol.md` 對該元件 scope scan | 合理 / 一致 / 無矛盾 / 完整;auto vs STOP 依判斷公式 |
|
|
68
|
+
|
|
69
|
+
**執行步驟**:
|
|
70
|
+
|
|
71
|
+
1. `npm run visual-audit -- --scope=component:{Name}`(D5 Layer A:WCAG / 幾何 assertion / retina screenshot)
|
|
72
|
+
2. Layer A exit code != 0 → 停下修到 0
|
|
73
|
+
3. Chain `/visual-audit`(D5 Layer B):讀 `snapshots/{Name}-*.png` 做 AI judgement
|
|
74
|
+
4. Chain `/performance-audit --scope=component:{Name}`(D3)
|
|
75
|
+
5. Chain `/ux-audit --scope=component:{Name}`(D4)
|
|
76
|
+
6. **D6 真 scan**:讀 `.claude/skills/design-system-audit/references/principle-audit-protocol.md` 對該元件 + 其 spec 跨指的 kin specs 跑 4 子維(合理 / 一致 / 無矛盾 / 完整);先讀「常見 FP 記憶」節避免誤報
|
|
77
|
+
7. 彙整 6 維 findings:**依 protocol 判斷公式 — 動 canonical substantive → STOP;對齊 canonical → AUTO**
|
|
78
|
+
8. **Self-improvement capture**(強制):Phase 結束寫「新 FP / 新 pattern / user 糾正」—見 CLAUDE.md `# 資訊治理 canonical` → Audit skill Phase F 節
|
|
79
|
+
|
|
80
|
+
**為什麼 mandatory**:code / spec 對不夠;效能 / UX / 視覺三維各有歷史 bug(DatePicker 四邊不對稱、DropdownMenu 鍵盤不通、Badge 位置離譜、Rating 邊框、Carousel 箭頭壓文字、inline 物件 prop 造成 render 爆)。merge 前沒過 6 維 = 把 bug 帶進 DS。
|
|
81
|
+
|
|
82
|
+
**合理跳過情境**(極少):純 spec.md 文字修正(無 tsx 改動)→ 視覺 / 效能 / UX 無變,可跳 Phase 4.5;但 tsx / token / cva / style 任一動 → 必跑全 6 維。
|
|
83
|
+
|
|
84
|
+
### Phase 5 — 簽結(Checkpoint — STOP 點)
|
|
85
|
+
|
|
86
|
+
全部打勾後,回報 user:
|
|
87
|
+
- 「元件 {Name} 已過 quality gate,46 項全綠(含 Layer A visual)+ Layer B AI 視覺判斷通過」
|
|
88
|
+
- 列出 Phase 1-4.5 各 section 打勾結果
|
|
89
|
+
- 列出 `snapshots/report.json` 摘要(contrast / geometry violation 數 = 0)
|
|
90
|
+
- 若任一 phase 有合理例外(documented 在 spec),列出例外清單
|
|
91
|
+
|
|
92
|
+
**STOP 條件**:任一項不過 + 原因不清楚 → 停下問 user,不默默放行。**Phase 4.5 Layer A 有 violation 絕不放行**。
|
|
93
|
+
|
|
94
|
+
## References
|
|
95
|
+
|
|
96
|
+
- `references/checklist.md` — 完整 45 項 checklist(Spec 12 / Code 13 / Stories 6 / Ship 4 + 各項的 CLAUDE.md pointer)
|
|
97
|
+
|
|
98
|
+
## 相關
|
|
99
|
+
|
|
100
|
+
- `.claude/skills/design-system-audit/` — 本 skill focus 在單元件進 DS 的 gate;design-system-audit 是系統級 20 維 sweep,兩者互補
|
|
101
|
+
- `.claude/skills/story-writing/` — Phase 3 story 深審可 chain 進去
|
|
102
|
+
- `.claude/hooks/pre_edit_spec_check.sh` — 編輯 tsx 前提醒讀 spec(session 級)
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
# 元件完成 Checklist(完整 45 項)
|
|
2
|
+
|
|
3
|
+
每個元件在進入 design-system 前必須逐項對照。這是品質閘門,不可跳過。
|
|
4
|
+
|
|
5
|
+
**本 checklist 是純勾選表**——規則定義在各自的 canonical home,此處只做 checkbox + pointer。勾每項前先讀該 pointer 指向的章節。
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## Phase 1 — Spec(`{name}.spec.md`)
|
|
10
|
+
> 規則定義:`.claude/rules/spec-rules.md`
|
|
11
|
+
|
|
12
|
+
- [ ] 元件定位一句話(是什麼 / 不是什麼)
|
|
13
|
+
- [ ] 定位段落宣告實作基礎(基於 Radix X / cmdk / sonner / native / 自建 + 理由)
|
|
14
|
+
- [ ] 每個 prop / variant / size / state 都有「何時用 / 何時不用」+ 理由
|
|
15
|
+
- [ ] 互斥規則列出(哪些 props 不能並用)
|
|
16
|
+
- [ ] 每個規則有「為什麼」(寫 rationale,不只結論)
|
|
17
|
+
- [ ] 術語一致(同一概念不用兩種名稱)
|
|
18
|
+
- [ ] 無視覺描述污染(「窄長形」「會變寬」等屬 story 不屬 spec)
|
|
19
|
+
- [ ] 禁止事項(❌)列出常見誤用
|
|
20
|
+
- [ ] 邊界案例覆蓋(disabled / loading / empty / dark mode / density / icon-only 適用時)
|
|
21
|
+
- [ ] 「相關」section 指向近親元件 + SSOT pointer(reciprocal 成立)
|
|
22
|
+
- [ ] 對標世界級 DS 的 7 個維度(何時用 / 分界 / 常見誤解 / 相關 / 空值 / 驗證時機 / a11y)
|
|
23
|
+
- [ ] Layout Family 宣告(第一段必含——1/2/3/4 或「非 family,自己的結構」)
|
|
24
|
+
|
|
25
|
+
---
|
|
26
|
+
|
|
27
|
+
## Phase 2 — Code(`{name}.tsx`)
|
|
28
|
+
> 規則定義:`.claude/rules/ui-development.md`(含「shadcn 元件規範」/「Tailwind 5 條核心」/「Token 命名 4 條硬規則」/「元件 Props 命名」)
|
|
29
|
+
|
|
30
|
+
- [ ] 以 shadcn 為基底,forwardRef / displayName / asChild / ...props spread 齊全
|
|
31
|
+
- [ ] variants 用 cva(),不條件拼字串(或 documented 例外:style-prop variant → object map / 結構性 variant → if-branches)
|
|
32
|
+
- [ ] 同時 export 元件本體 + cva(供外部組合)
|
|
33
|
+
- [ ] 保留 Radix `data-state` / `data-disabled` / `data-orientation` 等 attribute
|
|
34
|
+
- [ ] 樣式優先用 `data-*` selector,而非自訂 class 模擬狀態
|
|
35
|
+
- [ ] 無硬寫顏色 / 字體 / padding / radius / 高度——全用 design token
|
|
36
|
+
- [ ] `cn()` 合併 class;Tailwind v4 CSS var 必用 `var(...)` 包覆
|
|
37
|
+
- [ ] 未包 Provider(Tooltip / Theme / Toast 等由應用層設定)
|
|
38
|
+
- [ ] Props 命名按「是什麼」而非「在哪裡」(icon / avatar / onDismiss,不 prefix / suffix)
|
|
39
|
+
- [ ] 互動元素有 ARIA 屬性;icon-only 有 `aria-label`
|
|
40
|
+
- [ ] 若屬 field-height family,`defaultVariants.size = 'md'`
|
|
41
|
+
- [ ] 若修改 cva `defaultVariants`,已同步 spec / docblock / anatomy 三方(見 `.claude/skills/story-writing/references/anatomy-standard.md` → 高風險漂移點)
|
|
42
|
+
- [ ] 未使用 shadcn compat alias(`bg-popover` / `text-muted-foreground` / `bg-accent` 等),改用我們的 direct token
|
|
43
|
+
|
|
44
|
+
---
|
|
45
|
+
|
|
46
|
+
## Phase 3 — Stories(展示 / 設計規格 / 設計原則)
|
|
47
|
+
> 規則定義:`.claude/skills/story-writing/`(完整 workflow) + `.claude/rules/story-rules.md`(high-level)
|
|
48
|
+
|
|
49
|
+
- [ ] 範例選擇原則的自我檢查清單全部打勾(詳見 `.claude/skills/story-writing/references/self-check.md`)
|
|
50
|
+
- [ ] 設計規格 5 個 story 齊全(總覽 / 檢閱器 / 色彩對照 / 尺寸對照 / 狀態行為)
|
|
51
|
+
- [ ] TOKEN_MAP / SIZE_SPECS 資料與 cva() 定義完全一致
|
|
52
|
+
- [ ] Rule note 傳達原則(「為什麼」),不只結論(「是什麼」)
|
|
53
|
+
- [ ] Storybook title 對齊命名規則;元件放對 `Components/` vs `Internal/`(見 `.claude/rules/story-rules.md` → 「Internal vs Components 三 test」)
|
|
54
|
+
- [ ] 每個重要規則有正確範例;常見誤用有錯誤範例(對比呈現)
|
|
55
|
+
|
|
56
|
+
---
|
|
57
|
+
|
|
58
|
+
## Phase 4 — Ship(上線前)
|
|
59
|
+
|
|
60
|
+
- [ ] `npm run storybook` 本地確認所有 stories 正常渲染
|
|
61
|
+
- [ ] `npx tsc --noEmit` 無錯誤
|
|
62
|
+
- [ ] Import 路徑正確(`@/design-system/...`)
|
|
63
|
+
- [ ] 若為 internal primitive 或 shadcn passthrough,分類標註正確
|
|
64
|
+
|
|
65
|
+
---
|
|
66
|
+
|
|
67
|
+
## 簽結報告格式
|
|
68
|
+
|
|
69
|
+
```
|
|
70
|
+
元件 {Name} Quality Gate 結果:
|
|
71
|
+
- Phase 1 Spec: 12/12 ✓
|
|
72
|
+
- Phase 2 Code: 13/13 ✓ (cva defaultVariants = 'sm',已同步 spec+docblock+anatomy)
|
|
73
|
+
- Phase 3 Stories: 6/6 ✓
|
|
74
|
+
- Phase 4 Ship: 4/4 ✓
|
|
75
|
+
Total: 35/35 ✓
|
|
76
|
+
|
|
77
|
+
Documented 例外:
|
|
78
|
+
- (無 / 或列出元件 spec 明文允許的偏離 + 理由)
|
|
79
|
+
```
|
|
@@ -0,0 +1,247 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: deep-audit-cross-codex
|
|
3
|
+
description: Phase A Claude solo 完整深度進階稽核 → Phase B codex 同流程稽核 + 比稿辯論共識 → Phase C 落地。SSOT-UI/UX 中文人話 propose / 其他 autonomous。對齊 M14/M18/M19/M20/M22/M23/M26/M29/M31/M32 + audit dim list 全集(SSOT = design-system-audit/SKILL.md)+ codex-collab 5-step。
|
|
4
|
+
arguments: scope?=full|changed focus?=「ssot|visual|behavior|all」
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Deep Audit Cross-Codex — 雙 model adversarial 完整 DS 稽核
|
|
8
|
+
|
|
9
|
+
> **SSOT integrity invariant**(2026-05-18 user-mandated):本 skill 的 audit dim list **完全 chain `/design-system-audit --deep` SSOT**(`.claude/skills/design-system-audit/SKILL.md` `## The N audit dimensions` 段)。
|
|
10
|
+
>
|
|
11
|
+
> **禁** hardcode dim count(`46 dim` / `53 dim` 等具體數字)— 用「全 dim」/「Group A-P」/「per design-system-audit SSOT」表達。新增 / 刪除 / 修改稽核項目 → **只動 design-system-audit/SKILL.md**,本 skill 自動繼承。
|
|
12
|
+
>
|
|
13
|
+
> Mechanical 強制:hook `check_dim_count_drift.sh` 攔 Edit 寫死數字。
|
|
14
|
+
|
|
15
|
+
**生態位**:`/design-system-audit --deep` 是 Claude solo 全 dim 稽核 SSOT;本 skill 是**雙 model 完整 sweep**(Claude solo → codex parallel → 比稿辯論共識 → 落地),chain 既有 audit dim 不 fork。對齊 mindset #1「不取巧省工」+ M31 dual-track + 用戶 2026-05-18 directive(verbatim):
|
|
16
|
+
|
|
17
|
+
> 「完整深度進階稽核整個 design system」+「codex 跑相同的完整深度進階稽核」+「跟 codex 討論辯論出共識」+「SSOT-UI/UX 增刪改需要用中文具體人話言簡意賅地講給我聽讓我判斷決策,其他的決策基本上就是不以省工為前提...自主自動自發地做到完整、完美」
|
|
18
|
+
|
|
19
|
+
## When to invoke
|
|
20
|
+
|
|
21
|
+
- User 明確 trigger:「跑深度稽核 + codex 比稿」「完整盤查 with codex」「dual-pass audit」「/deep-audit-cross-codex」
|
|
22
|
+
- 重大 release / SSOT 大改 / 季度健檢
|
|
23
|
+
- 多輪修正後想雙 model verify
|
|
24
|
+
|
|
25
|
+
**不該 invoke**:single 元件小修(用 `/design-system-audit --scope=component`)/ 已知 surgical bug fix(用 `/bug-fix-rhythm`)/ 日常 dev(`visual-audit --scope=changed`)。
|
|
26
|
+
|
|
27
|
+
## Non-goals
|
|
28
|
+
|
|
29
|
+
- 不取代 `/design-system-audit --deep`(本 skill **chain** 它 Phase A.1)
|
|
30
|
+
- 不取代 `/codex-collab`(本 skill **chain** 它 Phase B)
|
|
31
|
+
- 不動 audit 觸發以外的 PR / branch ops(M28 由 user 拍板)
|
|
32
|
+
|
|
33
|
+
---
|
|
34
|
+
|
|
35
|
+
## Phase A — Claude solo full audit(必先 NO-SAMPLE 跑完才進 Phase B)
|
|
36
|
+
|
|
37
|
+
### A.0 — 全盤閱讀 preflight(M29 升級,**禁止憑記憶**)
|
|
38
|
+
|
|
39
|
+
**強制 read sweep**(不可 sample,不可挑):
|
|
40
|
+
1. `CLAUDE.md` 全文
|
|
41
|
+
2. `.claude/rules/{meta-patterns,spec-rules,ui-development,story-rules,self-verify}.md` 全文
|
|
42
|
+
3. `.claude/references/{ssot-index,ssot-consultation,build-ui-canonicals,naming-conventions}.md`
|
|
43
|
+
4. `packages/design-system/src/**/*.spec.md` 全部(60+ file,通過 Glob 列舉 + Read)
|
|
44
|
+
5. `packages/design-system/src/tokens/**/*.spec.md` + `packages/design-system/src/patterns/**/*.spec.md` 全部
|
|
45
|
+
6. 本 session 對話脈絡 + memory `~/.claude/.../memory/MEMORY.md` index + active project memory files
|
|
46
|
+
|
|
47
|
+
**完成 gate**:Phase A.0 output = `phaseA-preflight-checklist.md`(session-local,列出讀過的 N file + 任何 spec 漂移嫌疑點)。**禁** skip / sample / 「先看標題判斷」。
|
|
48
|
+
|
|
49
|
+
### A.1 — 跑全 dim NO-SAMPLE deep audit(chain `/design-system-audit --deep` SSOT)
|
|
50
|
+
|
|
51
|
+
**Dispatch plan auto-pickup**(2026-05-23 ship per user verbatim「infra 增刪改 audit 自動跟最新」):
|
|
52
|
+
必先跑 `node scripts/dispatch-audit-dims.mjs --summary` 取**動態 dim 列**(non-hardcoded),從 `.claude/logs/audit-dims-dispatch.json` 讀 sub-agent batch 分組。Heavy dims 自動標,新加 dim 自動 included,retire 自動排除。
|
|
53
|
+
|
|
54
|
+
**禁** hardcode dim range numbers(eg.「Dims 1-15」/「Dims 34-56」)在 sub-agent prompt — 用 dispatch-audit-dims.mjs output 的 `dispatchPlan.suggestedBatches[].dimNumbers` 動態填。
|
|
55
|
+
|
|
56
|
+
完整跑,**no sample / no escape**(對齊 `feedback_audit_full_sweep_not_sample.md` + `check_audit_sample_escape.sh` BLOCKER)。
|
|
57
|
+
每 dim sub-agent prompt 必含「DS-wide 全盤,禁 sample top N」。
|
|
58
|
+
|
|
59
|
+
### A.2 — Triage findings → 中文人話 propose SSOT-UI/UX / autonomous non-SSOT
|
|
60
|
+
|
|
61
|
+
**Scope classifier**(critical,先過):
|
|
62
|
+
- **SSOT-UI/UX substantive 增刪改** = 動 component / token / spec.md 視覺結構 / 跨元件 design language / 新 API contract → **STOP propose**
|
|
63
|
+
- **Non-SSOT**(bug fix / clean / refactor / 命名一致 / test / audit / verify / hook regex 加廣 / pointer 補 / spec typo / 漂移 mechanical 對齊)→ **AUTO 整批做完**
|
|
64
|
+
|
|
65
|
+
**SSOT-UI/UX propose 必過 4-Q gate**(M18 + M19 ensure-canonical chain):
|
|
66
|
+
- Q1 M22 cite — 3-column owner table(spec path:line / canonical sentence / conflicting code)
|
|
67
|
+
- Q2 M17 SSOT consume — 既有 token / primitive / pattern 列消費清單
|
|
68
|
+
- Q3 Rule-of-3 — 同概念 ≥ 3 處 → 選 SSOT 其他 pointer
|
|
69
|
+
- Q4 M10 下游吸收 — 修上游 ≥ 3 處下游 redundant 可清
|
|
70
|
+
|
|
71
|
+
**中文人話 propose format**(per `feedback_propose_in_plain_chinese.md` + hook `check_propose_plain_chinese.sh`,必過):
|
|
72
|
+
|
|
73
|
+
```
|
|
74
|
+
### 決策 N:<一句話標題,zero jargon>
|
|
75
|
+
|
|
76
|
+
**現況**:<目前 code/spec 行為,人話>
|
|
77
|
+
**影響**:<不改會怎樣 / 改了會怎樣,具體>
|
|
78
|
+
**選項**:
|
|
79
|
+
- A. <做法 1>(後果:...)
|
|
80
|
+
- B. <做法 2>(後果:...)
|
|
81
|
+
- C. <不動>(後果:...)
|
|
82
|
+
**我推**:<A / B / C> 因 <理由>
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
禁:術語(L1-L7 / canonical / primitive / SSOT 在 propose 內裸用,該翻成「主檔/共用零件/設計原則」等人話)。
|
|
86
|
+
|
|
87
|
+
### A.3 — Autonomous batch execute(non-SSOT,M33 anti-defer)
|
|
88
|
+
|
|
89
|
+
7 目標 simultaneous optimize(per CLAUDE.md `# 自主執行 canonical`):
|
|
90
|
+
1. 言簡意賅 / 2. 效率+效能 / 3. SSOT 鐵律(M17/M23/M29/M30)/ 4. 易懂+維護+擴充 / 5. 世界級+一致設計語言 / 6. 完整 self-verify(M20/M31/M32)/ 7. 自動 self-improve(M14/M20)
|
|
91
|
+
|
|
92
|
+
**禁defer keyword**:「下次再做 / 下個 session / 省工 / 等等」(M33 BLOCKER)。
|
|
93
|
+
|
|
94
|
+
### A.4 — Verify-to-perfection(per self-verify.md 4 階段)
|
|
95
|
+
|
|
96
|
+
- Post-edit:`npx tsc -b` / 相關 invariant 腳本 / `audit-content-quality.mjs --check` / `extract-canonical-rules.mjs`
|
|
97
|
+
- Visual:`/visual-audit --scope=changed`(UI 改動)+ playwright pixel-quantified(M32)
|
|
98
|
+
- M14 5-layer pipeline:spec / hook / SKILL / CLAUDE.md / memory 同步
|
|
99
|
+
|
|
100
|
+
**Phase A complete gate**:全部 verify PASS + commit on working branch + 報 user「Phase A 完成,N 項 SSOT-UI/UX 等你拍板」。**禁** skip Phase A 直接 Phase B。
|
|
101
|
+
|
|
102
|
+
---
|
|
103
|
+
|
|
104
|
+
## Phase B — Codex parallel audit + 比稿辯論共識
|
|
105
|
+
|
|
106
|
+
### B.0 — Codex transport discovery(per codex-collab/SKILL.md Step 0.4)
|
|
107
|
+
|
|
108
|
+
3-test 順序固定(local 優先):`node_modules/.bin/codex` → `which codex` → `~/.codex/auth.json`。失敗 → 報 user,**禁 Explore agent 替身**(M31)。
|
|
109
|
+
|
|
110
|
+
### B.1 — Brief codex 跑相同 Phase A 完整流程
|
|
111
|
+
|
|
112
|
+
Brief format(per codex-collab/SKILL.md Step 0.05 user-verbatim faithful relay + Step 0.5 own-version invariant):
|
|
113
|
+
|
|
114
|
+
```
|
|
115
|
+
## User 原話(verbatim,prompt 中段引用)
|
|
116
|
+
「<user 原文 quote,中英符號圖文全保>」
|
|
117
|
+
|
|
118
|
+
## Claude Phase A 結果摘要
|
|
119
|
+
- 全 dim audit:<N P0 / M P1 / K P2 findings>
|
|
120
|
+
- SSOT-UI/UX propose:N 項(已 ASK user)
|
|
121
|
+
- Autonomous landed:M 項(列具體 file:line)
|
|
122
|
+
- 不 verify 但 Phase A 結論:<列出>
|
|
123
|
+
|
|
124
|
+
## 請你執行 Phase A 相同流程(獨立)
|
|
125
|
+
1. 全盤閱讀(CLAUDE.md / rules / spec.md ×60 / tokens / patterns / memory)
|
|
126
|
+
2. 全 dim deep audit NO-SAMPLE
|
|
127
|
+
3. 整理完整報告(P0 / P1 / P2 分類 + file:line + 引文 cite)
|
|
128
|
+
4. 跟 Claude Phase A 結果**獨立**比對,不 frame 答案
|
|
129
|
+
|
|
130
|
+
請回:Phase A 你抓但 Claude 漏的 / Claude 抓但你不同意的 / 兩邊都漏的盲區。
|
|
131
|
+
```
|
|
132
|
+
|
|
133
|
+
Send via `codex exec`(local CLI per M31 Step 0.4)或 cloud `@codex` 後序。
|
|
134
|
+
|
|
135
|
+
### B.2 — Receive codex report + Step 4 self-check + Step 4.5 verify
|
|
136
|
+
|
|
137
|
+
**禁 pass-through**(per M31 + `feedback_codex_dual_track_synthesizer.md`):
|
|
138
|
+
- Step 4:M22/M23/M27/M8 4 題自檢
|
|
139
|
+
- **Step 4.5 verify each claim**:grep / WebFetch / run invariant script / counter-example scan
|
|
140
|
+
- 每 codex claim 標 `✅ verified` / `❌ FALSE` / `⚠️ partial`
|
|
141
|
+
|
|
142
|
+
### B.3 — Step 5 比稿(matrix per claim)
|
|
143
|
+
|
|
144
|
+
不可只「pick A/B/C」(round-7 trap)。對每 finding 4 axis:
|
|
145
|
+
- **接受 codex**:codex 抓 + verified + Claude 漏
|
|
146
|
+
- **接受 Claude**:Claude 抓 + codex 漏 / codex verified FALSE
|
|
147
|
+
- **修正 = synthesize**:兩邊各補對方缺漏 → final 比兩 v1 都強
|
|
148
|
+
- **重啟**:兩邊都不對 → 重做
|
|
149
|
+
|
|
150
|
+
### B.4 — Disagreement → cite battle(M31 Step 4 / 5)
|
|
151
|
+
|
|
152
|
+
任何 disagreement **禁** vote / 直覺;走 cite battle:
|
|
153
|
+
- 各自提 spec.md path:line + 引文
|
|
154
|
+
- WebFetch ≥ 3 家 world-class DS 對照
|
|
155
|
+
- evidence stronger 勝;evidence 對等 → STOP 給 user 拍板
|
|
156
|
+
|
|
157
|
+
### B.5 — 共識 triage → 中文人話 propose / autonomous
|
|
158
|
+
|
|
159
|
+
跟 Phase A.2 同 format,但 finding source = 共識(Claude + codex 兩邊都認 + verify PASS)。
|
|
160
|
+
|
|
161
|
+
---
|
|
162
|
+
|
|
163
|
+
## Phase C — Final report + commit + push trigger gate
|
|
164
|
+
|
|
165
|
+
### C.1 — Final report(送 user)
|
|
166
|
+
|
|
167
|
+
```
|
|
168
|
+
## Deep Audit Cross-Codex 完整報告(N 日期)
|
|
169
|
+
|
|
170
|
+
### Phase A 結果
|
|
171
|
+
- 全 dim findings: <P0 N / P1 M / P2 K>
|
|
172
|
+
- Autonomous landed: <N 項> commit <hash>
|
|
173
|
+
- SSOT-UI/UX 已拍板: <M 項>
|
|
174
|
+
- SSOT-UI/UX 待拍板: <列出 + 簡述>
|
|
175
|
+
|
|
176
|
+
### Phase B 結果
|
|
177
|
+
- Codex 抓 + Claude 漏: <N 項>
|
|
178
|
+
- Claude 抓 + Codex 漏: <M 項>
|
|
179
|
+
- Cite battle: <K 題,各題 verdict + evidence>
|
|
180
|
+
- 共識 SSOT-UI/UX 待拍板: <列出 + 簡述>
|
|
181
|
+
- 共識 autonomous landed: <N 項> commit <hash>
|
|
182
|
+
|
|
183
|
+
### 待你拍板(中文人話)
|
|
184
|
+
<決策 1-N(per A.2 format)>
|
|
185
|
+
|
|
186
|
+
### Verify artifact
|
|
187
|
+
- tsc PASS / invariant PASS / content-quality PASS / visual probe PASS
|
|
188
|
+
- file:line + before / after diff link
|
|
189
|
+
```
|
|
190
|
+
|
|
191
|
+
### C.2 — Push trigger gate(M28 solo-work canonical)
|
|
192
|
+
|
|
193
|
+
**禁** AI 自決 merge main / push origin main。等 user 「Push 到 main」trigger。
|
|
194
|
+
|
|
195
|
+
---
|
|
196
|
+
|
|
197
|
+
## Mechanical enforcement
|
|
198
|
+
|
|
199
|
+
- Pre-edit:`check_substantive_edit_approval_preflight.sh` + `check_ds_anchor_preflight.sh`(SSOT-UI/UX 必先 approval)
|
|
200
|
+
- Mid:`check_audit_sample_escape.sh`(Agent dispatch 攔 sample escape)+ `check_codex_collab_5step.sh`(Layer A/B/C cite verdict)
|
|
201
|
+
- Post:`stop_self_audit.sh` Mechanism 1 claim-verify-gap BLOCKER + `audit-content-quality.mjs --check`
|
|
202
|
+
- Commit gate:`check_solo_workflow.sh`(no PR / 1 chat 1 branch / 等 user push trigger)
|
|
203
|
+
|
|
204
|
+
## Checkpoints(禁止跳)
|
|
205
|
+
|
|
206
|
+
| Checkpoint | 在哪 | What |
|
|
207
|
+
|---|---|---|
|
|
208
|
+
| **CP-A0** | A.0 結束 | 全盤閱讀清單給 user 看(列 N file read),禁未讀就進 A.1 |
|
|
209
|
+
| **CP-A2** | A.2 SSOT-UI/UX propose | 中文人話 + 4-Q gate;**STOP** 等 user A/B 才動 code |
|
|
210
|
+
| **CP-B0** | B.0 codex transport | 3-test 失敗 → 報 user 決(local install / cloud / 跳 Phase B 只 Phase A);禁 Explore 替身 |
|
|
211
|
+
| **CP-B4** | B.4 cite battle | evidence 對等 → STOP 等 user 拍板,**禁** AI 自決誰勝 |
|
|
212
|
+
| **CP-C2** | C.2 push gate | 等 user「Push 到 main」trigger;禁 AI 自決 merge |
|
|
213
|
+
|
|
214
|
+
## References
|
|
215
|
+
|
|
216
|
+
- `references/phase-a-workflow.md` — A.0 全盤閱讀 file list canonical + A.1 全 dim sub-agent dispatch template
|
|
217
|
+
- `references/phase-b-codex-brief.md` — codex brief template(B.1)+ Step 4.5 verify checklist + Step 5 比稿 matrix template
|
|
218
|
+
- `references/triage-rubric.md` — Scope classifier(SSOT-UI/UX vs non-SSOT)+ 中文人話 propose format + 7 autonomous 目標 expansion
|
|
219
|
+
|
|
220
|
+
## 與其他 skill 分工
|
|
221
|
+
|
|
222
|
+
| Skill | Scope | 不重疊 |
|
|
223
|
+
|---|---|---|
|
|
224
|
+
| `/design-system-audit --deep` | 全 dim Claude solo audit | 本 skill chain 為 Phase A.1,額外 Phase B + 全盤閱讀 preflight + 比稿辯論 |
|
|
225
|
+
| `/codex-collab` | M31 5-step dual-track for **任意題目** | 本 skill chain 為 Phase B,額外 Phase A 前置 + 全 dim 完整覆蓋(per design-system-audit SSOT) + Phase C 共識 commit |
|
|
226
|
+
| `/propose-options` | M18 4-Q gate single propose | 本 skill A.2 / B.5 chain 用它格式化 propose |
|
|
227
|
+
| `/ensure-canonical` | M19 5-layer auto-pipeline | 本 skill A.3 / B.5 chain 用它落地 canonical |
|
|
228
|
+
| `/knowledge-prune` | 治理文件冗贅清 | 正交,本 skill 跑稽核;`/knowledge-prune` 跑治理 hygiene |
|
|
229
|
+
| `/bug-fix-rhythm` | surgical visual bug 修 | 正交,本 skill 是 broad sweep;surgical bug 不該觸發本 skill |
|
|
230
|
+
|
|
231
|
+
## Anti-pattern(永久 ban)
|
|
232
|
+
|
|
233
|
+
- ❌ Skip A.0 全盤閱讀(憑記憶判斷哪些 spec 該讀)
|
|
234
|
+
- ❌ A.1 sub-agent prompt 含「sample top N」/「heavy agent skip」escape
|
|
235
|
+
- ❌ A.2 propose 用 jargon(L1-L7 / SSOT / canonical 在 propose 內裸用)
|
|
236
|
+
- ❌ 跳 Phase B 只跑 Phase A(除非 codex transport 全失敗 + user 同意)
|
|
237
|
+
- ❌ B.2 收 codex reply 直接 paste 給 user(pass-through,M31 Step 4.5 verify 跳)
|
|
238
|
+
- ❌ B.4 disagreement 用直覺 vote / 「兩邊都對」打太極(cite battle invariant)
|
|
239
|
+
- ❌ C.2 AI 自決 merge main(M28 violation)
|
|
240
|
+
- ❌ Phase A 完成沒等 user 拍板 SSOT-UI/UX 就進 Phase B(scope 跑掉)
|
|
241
|
+
|
|
242
|
+
## 世界級對照
|
|
243
|
+
|
|
244
|
+
- **RFC 學術同儕審查**:作者 v1 + reviewer v2(獨立)+ public cite battle 收斂共識
|
|
245
|
+
- **Linux kernel patch review**:Maintainer first-pass + lkml mailing list 二 review + cite source 比稿
|
|
246
|
+
- **Google ML eng-design-review**:proposer + adversarial reviewer + structured disagreement protocol
|
|
247
|
+
- **Anthropic constitutional AI critic + revise**:同 model 不同 prompt 互審 → 本 skill 升級成跨 model
|