@cyberskill/design 1.3.8 → 1.3.10
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/DESIGN.md +8 -7
- package/README.md +13 -10
- package/SKILL.md +15 -6
- package/VERSION +1 -1
- package/_ds_bundle.js +2 -2
- package/_esm/cs.mjs +2 -2
- package/docs/benchmark-rubric.md +3 -3
- package/docs/ci-cd.md +1 -1
- package/docs/consumer-grant.md +1 -1
- package/docs/consuming.md +10 -6
- package/docs/contrast-report.md +3 -1
- package/docs/conventions.md +3 -3
- package/docs/decisions.md +1 -1
- package/docs/deploy.md +3 -1
- package/docs/design-styles.md +1 -1
- package/docs/doctrine.md +51 -0
- package/docs/figma.md +2 -0
- package/docs/live-hub.md +3 -1
- package/docs/products.md +1 -1
- package/docs/quality-gates.md +8 -4
- package/docs/release-notes.md +17 -2
- package/docs/release-runbook.md +1 -1
- package/docs/storybook.md +3 -3
- package/docs/sync.md +9 -9
- package/docs/template-schema-v2.md +1 -1
- package/docs/vi/benchmark-rubric.md +3 -3
- package/docs/vi/ci-cd.md +1 -1
- package/docs/vi/consumer-grant.md +1 -1
- package/docs/vi/consuming.md +10 -6
- package/docs/vi/contrast-report.md +3 -1
- package/docs/vi/conventions.md +3 -3
- package/docs/vi/decisions.md +1 -1
- package/docs/vi/deploy.md +3 -1
- package/docs/vi/design-styles.md +1 -1
- package/docs/vi/doctrine.md +51 -0
- package/docs/vi/figma.md +2 -0
- package/docs/vi/live-hub.md +3 -1
- package/docs/vi/products.md +1 -1
- package/docs/vi/quality-gates.md +8 -4
- package/docs/vi/release-notes.md +17 -2
- package/docs/vi/release-runbook.md +1 -1
- package/docs/vi/storybook.md +3 -3
- package/docs/vi/sync.md +8 -8
- package/docs/vi/template-schema-v2.md +1 -1
- package/docs/viewer.html +15 -4
- package/llms.txt +18 -11
- package/package.json +2 -2
- package/tokens/element-seeds.json +1 -1
- package/tokens/native/CSTokens.kt +1 -1
- package/tokens/native/CSTokens.swift +1 -1
- package/tokens/native/cs_tokens.dart +1 -1
- package/tokens/provenance.json +6 -6
- package/tokens/tokens.dtcg.json +1 -1
- package/tokens/tokens.js +2 -2
- package/tokens/tokens.json +1 -1
package/docs/vi/sync.md
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
# Repo ↔
|
|
1
|
+
# Repo ↔ môi trường authoring — round-trip fidelity & đồng bộ hai chiều
|
|
2
2
|
|
|
3
|
-
Repo GitHub (`cyberskill-official/design`) là **nguồn chân lý**. Session Claude Design là filesystem project tạm — tài liệu này nói cách chúng giữ sync mà không mất việc.
|
|
3
|
+
Repo GitHub (`cyberskill-official/design`) là **nguồn chân lý**. Session compiler (ví dụ Claude Design) là filesystem project tạm — tài liệu này nói cách chúng giữ sync mà không mất việc. Xuất bản trên Storybook **Docs** tại `design.cyberskill.world`.
|
|
4
4
|
|
|
5
5
|
## Repo có khôi phục nguyên hệ thống không?
|
|
6
6
|
|
|
7
|
-
**Trong session
|
|
7
|
+
**Trong session compiler DC-capable — có.** Mọi thứ định nghĩa hệ thống là file text/asset thuần và round-trip lossless:
|
|
8
8
|
- `styles.css` + `tokens/` + `base/` (mọi CSS + `tokens.json`/`tokens.js`)
|
|
9
9
|
- `components/**` (`.jsx` + `.d.ts` + `.prompt.md` + `*.card.html`)
|
|
10
10
|
- `templates/**/*.dc.html` (+ `ds-base.js`, `support.js`)
|
|
@@ -13,15 +13,15 @@ Repo GitHub (`cyberskill-official/design`) là **nguồn chân lý**. Session Cl
|
|
|
13
13
|
- **`_esm/react.mjs`** — entry React bundler-native (export package mặc định; React peer). Regenerated qua `npm run build:react-entry`.
|
|
14
14
|
- **`_esm/cs.mjs`** — entry ESM browser / no-build legacy (`@cyberskill/design/legacy`). Tiền tố underscore **không** nghĩa là build artifact hay gitignored ở đây (chỉ `uploads/`, `scraps/`, `_audit/exports/` là — xem Hygiene bên dưới); `_esm/` là source, cùng tầng với `templates/` hoặc `docs/`. Một lần port trước đã bỏ nó đúng vì giả định đó và làm gãy ESM smoke gate — nếu bạn port/copy cây này bằng tay, **explicit include mọi thư mục top-level danh sách này đặt tên**, đừng suy từ tiền tố `_`.
|
|
15
15
|
|
|
16
|
-
- `README.md`, `CONTRIBUTING.md`, `SKILL.md`, `
|
|
16
|
+
- `README.md`, `CONTRIBUTING.md`, `SKILL.md`, `docs/doctrine.md`, shim host (`CLAUDE.md`), `VERSION`, `DESIGN.md` (open-spec surface generate — commit, chỉ regen qua `npm run build:design-md`, khóa bởi gate `design-md-parity`)
|
|
17
17
|
|
|
18
|
-
Kéo chúng vào project mới (xem bên dưới) và compiler nhận lại như design system — nó khóa vào `styles.css`, cặp `.d.ts`/`.jsx`, HTML `@dsCard`, và `templates/`.
|
|
18
|
+
Kéo chúng vào project mới (xem bên dưới) và compiler nhận lại như design system — nó khóa vào `styles.css`, cặp `.d.ts`/`.jsx`, HTML `@dsCard`, và `templates/`. Artifact compile đã commit (`_ds_bundle.js`, `_ds_manifest.json`, `_adherence.oxlintrc.json`, `dist/styles.min.css`, `DESIGN.md`) là một phần hợp đồng consumer — giữ trong cây và regenerate bằng npm script đã ghi, đừng coi chúng là disposable.
|
|
19
19
|
|
|
20
|
-
**Ở agent khác (Google Stitch, LLM tool generic) — một phần.** Chúng tiêu thụ được lớp **portable** — `tokens/tokens.json` + `tokens.js`, raw CSS, component `.jsx`, fonts, và Markdown docs — nhưng **không** hiểu format Design-Component `.dc.html` hay compiler điều khiển nó. Vậy agent
|
|
20
|
+
**Ở agent khác (Google Stitch, LLM tool generic) — một phần.** Chúng tiêu thụ được lớp **portable** — `tokens/tokens.json` + `tokens.js`, raw CSS, component `.jsx`, fonts, và Markdown docs — nhưng **không** hiểu format Design-Component `.dc.html` hay compiler điều khiển nó. Vậy agent không-compiler nhận tokens, styles, và source component như file, không phải hành vi DC/tweak/compile live. Hướng những tool đó vào root **`DESIGN.md`** trước (open-spec kiểu Stitch generate: doctrine + mọi giá trị token + inventory, regen từ DTCG qua `npm run build:design-md` và khóa bởi gate `design-md-parity`), rồi `tokens.json` / `tokens.dtcg.json` và CSS cho hợp đồng máy; coi `.dc.html` + compiler là native DC.
|
|
21
21
|
|
|
22
22
|
## Đồng bộ hai chiều (repo = nguồn chân lý)
|
|
23
23
|
|
|
24
|
-
|
|
24
|
+
Session compiler có thể **đọc/copy từ** GitHub nhưng thường **không push tới** nó. Vậy sync là *pull tự động, push thủ công*:
|
|
25
25
|
**Bắt đầu session — pull (tin cậy, tự động):** bảo agent load repo. Nó copy cây vào project mới (đường `github_copy_files`), compiler validate, và bạn tiếp từ chân lý đã commit — không bao giờ từ project state cũ. Luôn bắt đầu đây; đừng resume từ project nửa nhớ.
|
|
26
26
|
|
|
27
27
|
**Kết thúc session — push (thủ công, review):** tải project, rồi từ clone:
|
|
@@ -39,7 +39,7 @@ Diff PR là lưới an toàn — nó hiện đúng những gì đổi kể từ
|
|
|
39
39
|
## Hygiene giữ round-trip sạch
|
|
40
40
|
- **`.gitignore`** transient (`uploads/`, `scraps/`, `_audit/exports/`); commit mọi thứ khác, **kể cả `_esm/`** (xem trên — nó là source, không phải build artifact, dù có tiền tố `_`). Compiled `_ds_bundle.js`/manifest được commit cho consumer không có bước build, nhưng kỳ vọng churn — hoặc ignore và để mỗi session regenerate.
|
|
41
41
|
|
|
42
|
-
- **`VERSION`
|
|
42
|
+
- **`VERSION` pin theo file** (auto-bump khi push lên `main` qua `.github/workflows/version.yml` → tag `v*` → `npm-publish.yml`; LAUNCH đầu tiên là **1.1.0**; owner vẫn có thể force bump). Không maintain file changelog. Continuity là git history; việc maintainer đang mở nằm ở `docs/decisions.md`.
|
|
43
43
|
|
|
44
44
|
- **Một nguồn chân lý tại một thời điểm.** Đừng sửa repo và project Claude Design song song rồi push cả hai — pull, làm việc, push, theo thứ tự đó, để repo luôn là điểm merge.
|
|
45
45
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Template content-schema v2 — content slot có kiểu
|
|
2
2
|
|
|
3
|
-
Metadata thuần additive, opt-in: sidecar `templates/<slug>/content-schema.json` cạnh `.dc.html` của template, khai báo **kiểu** của mỗi `{{ hole }}` đã có trong template — để agent hoặc pipeline điền/validate nội dung khách thật theo chương trình mà không parse HTML hay đoán.
|
|
3
|
+
Metadata thuần additive, opt-in: sidecar `templates/<slug>/content-schema.json` cạnh `.dc.html` của template, khai báo **kiểu** của mỗi `{{ hole }}` đã có trong template — để agent hoặc pipeline điền/validate nội dung khách thật theo chương trình mà không parse HTML hay đoán. Xuất bản trên Storybook **Docs** tại `design.cyberskill.world`.
|
|
4
4
|
|
|
5
5
|
**Không cần đổi markup template.** `id` của slot là tên hole đã dùng trong `.dc.html` (ví dụ `{{ heroH }}`) và đã bind trong `renderVals()` của logic class — schema chỉ mô tả nó.
|
|
6
6
|
|
package/docs/viewer.html
CHANGED
|
@@ -43,12 +43,23 @@
|
|
|
43
43
|
article hr{border:0;border-top:1px dashed var(--cs-color-border-default);margin:20px 0}
|
|
44
44
|
article a{color:var(--cs-color-link)}article a:hover{color:var(--cs-color-link-hover)}
|
|
45
45
|
#err{color:#B42318;font-family:var(--cs-font-family-mono);font-size:13px}
|
|
46
|
+
html.embed body{grid-template-columns:1fr}
|
|
47
|
+
html.embed aside{display:none}
|
|
48
|
+
html.embed main{padding:24px 32px}
|
|
46
49
|
@media (max-width:640px){
|
|
47
50
|
body{grid-template-columns:1fr}
|
|
48
51
|
aside{border-inline-end:0;border-block-end:1px solid var(--cs-color-border-default);max-height:38vh}
|
|
49
52
|
main{padding:18px 16px}
|
|
53
|
+
html.embed main{padding:18px 16px}
|
|
50
54
|
}
|
|
51
|
-
</style
|
|
55
|
+
</style>
|
|
56
|
+
<script>
|
|
57
|
+
(function(){
|
|
58
|
+
var q=new URLSearchParams(location.search);
|
|
59
|
+
if(q.get('embed')==='1'||q.get('chrome')==='0') document.documentElement.classList.add('embed');
|
|
60
|
+
})();
|
|
61
|
+
</script>
|
|
62
|
+
</head>
|
|
52
63
|
<body>
|
|
53
64
|
<aside id="nav"><h1>CyberSkill Docs</h1>
|
|
54
65
|
<div class="langtog" role="group" aria-label="Doc language"><button type="button" id="lang-en" data-lang="en">EN</button><button type="button" id="lang-vi" data-lang="vi">VI</button></div>
|
|
@@ -58,13 +69,13 @@
|
|
|
58
69
|
<script>
|
|
59
70
|
const DOCS_EN=[
|
|
60
71
|
['Start',[['README.md','README'],['SKILL.md','SKILL (agent rules)'],['llms.txt','llms.txt'],['CONTRIBUTING.md','Contributing']]],
|
|
61
|
-
['Guides',[['docs/consuming.md','Consuming & upgrading
|
|
62
|
-
['Maintainers',[['docs/decisions.md','Decisions'],['docs/ci-cd.md','CI/CD automation'],['docs/quality-gates.md','Quality gates'],['docs/sync.md','Git sync & hygiene']]]
|
|
72
|
+
['Guides',[['docs/consuming.md','Consuming & upgrading'],['docs/consumer-grant.md','Consumer grant (npm · UNLICENSED)'],['docs/deploy.md','Deploy (Vercel/VPS)'],['docs/template-schema-v2.md','Template content-schema v2'],['docs/conventions.md','Conventions'],['docs/release-notes.md','Release Notes'],['docs/release-runbook.md','Release runbook'],['docs/storybook.md','Storybook (product at /)'],['docs/live-hub.md','Live hub (Storybook at /)'],['docs/design-styles.md','Design styles'],['docs/benchmark-rubric.md','Benchmark rubric'],['docs/products.md','Products'],['docs/contrast-report.md','Contrast report'],['docs/figma.md','Figma']]],
|
|
73
|
+
['Maintainers',[['docs/doctrine.md','Doctrine'],['docs/decisions.md','Decisions'],['docs/ci-cd.md','CI/CD automation'],['docs/quality-gates.md','Quality gates'],['docs/sync.md','Git sync & hygiene']]]
|
|
63
74
|
];
|
|
64
75
|
const DOCS_VI=[
|
|
65
76
|
['Bắt đầu',[['README.md','README (EN)'],['SKILL.md','SKILL (EN)'],['llms.txt','llms.txt (EN)'],['CONTRIBUTING.md','Contributing (EN)']]],
|
|
66
77
|
['Hướng dẫn',[['docs/consuming.md','Tiêu thụ & nâng cấp'],['docs/consumer-grant.md','Grant consumer (npm · UNLICENSED)'],['docs/deploy.md','Deploy (Vercel/VPS)'],['docs/template-schema-v2.md','Template schema v2'],['docs/conventions.md','Conventions'],['docs/release-notes.md','Ghi chú phát hành'],['docs/release-runbook.md','Runbook phát hành'],['docs/storybook.md','Storybook (sản phẩm tại /)'],['docs/live-hub.md','Live hub (Storybook tại /)'],['docs/design-styles.md','Phong cách'],['docs/benchmark-rubric.md','Rubric benchmark'],['docs/products.md','Sản phẩm'],['docs/contrast-report.md','Báo cáo contrast'],['docs/figma.md','Figma']]],
|
|
67
|
-
['Maintainer',[['docs/decisions.md','Quyết định'],['docs/ci-cd.md','CI/CD'],['docs/quality-gates.md','Quality gates'],['docs/sync.md','Đồng bộ Git']]]
|
|
78
|
+
['Maintainer',[['docs/doctrine.md','Học thuyết'],['docs/decisions.md','Quyết định'],['docs/ci-cd.md','CI/CD'],['docs/quality-gates.md','Quality gates'],['docs/sync.md','Đồng bộ Git']]]
|
|
68
79
|
];
|
|
69
80
|
let lang=(localStorage.getItem('cs-docs-lang')==='vi')?'vi':'en';
|
|
70
81
|
function DOCS(){ return lang==='vi'?DOCS_VI:DOCS_EN; }
|
package/llms.txt
CHANGED
|
@@ -1,20 +1,23 @@
|
|
|
1
1
|
# CyberSkill Design System
|
|
2
2
|
|
|
3
|
-
> HTML-first, Vietnamese-first design system,
|
|
3
|
+
> HTML-first, Vietnamese-first design system, current **v1.3.10** (first LAUNCH **v1.1.0**). Immutable anchors: Umber #45210E · Ochre #F4BA17. Four independent axes — Theme (light · dark · system) × Element (Ngũ Hành, 15 variants) × Language (EN · VI) × Style (`data-cs-style` — sole pack **liquid-glass**; absent ≡ default). It ships 106 components / 122 exports, 84 copyable templates (EN·VN for emails + team/legal/finance; client/media collateral EN-first), and tokens in CSS + JSON + ESM + W3C DTCG + native mirrors. This file is the agent/tool front door: it maps each **capability** to the format it should consume. npm package name is **`@cyberskill/design`** (not `@cyberskill/react`). Release signal: tip SHA + [docs/release-notes.md](docs/release-notes.md) — VERSION **1.3.10**, no CHANGELOG.
|
|
4
4
|
|
|
5
|
-
The portable contract covers browser and bundler entry points: `styles.css` · `_esm/cs.mjs` legacy · `_ds_bundle.js` · tokens work without a build step; `_esm/react.mjs` is bundler-native JSX (Next/Vite must transpile — not a bare-browser import). The DC layer (`templates/**/*.dc.html`)
|
|
5
|
+
The portable contract covers browser and bundler entry points: `styles.css` · `_esm/cs.mjs` legacy · `_ds_bundle.js` · tokens work without a build step; `_esm/react.mjs` is bundler-native JSX (Next/Vite must transpile — not a bare-browser import). The DC layer (`templates/**/*.dc.html`) needs a **Design Components compiler**. **Google Stitch must not treat `*.dc.html` as source of truth** — use `DESIGN.md`, DTCG, `styles.css`, kitchen-sink, and `.cs-*` static HTML instead. Dual path: [docs/consuming.md](docs/consuming.md). The full non-negotiables list lives in `CONTRIBUTING.md` and `docs/doctrine.md`. Operator docs are published on the Storybook **Docs** sidebar at `design.cyberskill.world`.
|
|
6
6
|
|
|
7
7
|
## Consume by audience
|
|
8
8
|
|
|
9
|
-
- **Claude Code
|
|
10
|
-
- **Google Stitch
|
|
9
|
+
- **DC-capable authoring** (compiler present — e.g. Claude Design, Claude Code with a full clone) → [SKILL.md](SKILL.md) first, then [README.md](README.md): compose with `styles.css` + bundler `_esm/react.mjs` / legacy `_esm/cs.mjs` / `_ds_bundle.js` (prefix resolve). Optional DC templates only when the session has the compiler. Gates/`_audit/` need a full clone.
|
|
10
|
+
- **Static / open-spec** (e.g. Google Stitch) → [DESIGN.md](DESIGN.md) first, then this file + [tokens/tokens.dtcg.json](tokens/tokens.dtcg.json): generate **static** UI. Do **not** open or rewrite `templates/**/*.dc.html` as if they were plain HTML.
|
|
11
|
+
- **Designers** → Storybook at `design.cyberskill.world` (`/` / `npm run storybook`): Foundations, Components, Docs, axis toolbar.
|
|
12
|
+
- **Implementers (npm / Next / Vite)** → [docs/consuming.md](docs/consuming.md) + default `@cyberskill/design` React entry.
|
|
13
|
+
- **Maintainers** → [docs/doctrine.md](docs/doctrine.md) + [docs/quality-gates.md](docs/quality-gates.md).
|
|
11
14
|
- [styles.css](styles.css): any web / framework / email (Vue, Svelte, plain HTML, React) — link this one file for every `--cs-*` token, the `.cs-*` component classes, and the Liquid Glass surfaces. Framework-agnostic, no build step.
|
|
12
15
|
- [_esm/react.mjs](_esm/react.mjs): **default** npm entry — `import { Button, … } from "@cyberskill/design"` (React peer; Next/Vite transpile). Also `@cyberskill/design/react`.
|
|
13
16
|
- [_esm/cs.mjs](_esm/cs.mjs): browser / no-build legacy — `import { Button, … } from "@cyberskill/design/legacy"` (self-ensures React; still link `styles.css`). **Not for Next/SSR.**
|
|
14
17
|
- [_ds_bundle.js](_ds_bundle.js): React (production) — `styles.css` + `<script src="_ds_bundle.js">`, then resolve the bundle global by prefix (its `_<projectId>` suffix is compiler-assigned and changes on re-import): `const CS = window[Object.keys(window).find(k => /^CyberSkillDesignSystem_/.test(k))]; const { Button, … } = CS`. Proven green by `_audit/consumer-smoke-test.html`. (Templates load via `ds-base.js`, which publishes a stable `window.CyberSkillDS` alias for the same reason.)
|
|
15
18
|
- [tokens/tokens.json](tokens/tokens.json): design tools / native / token pipelines / other agents (Figma, Google Stitch, Style Dictionary) — every token grouped by category, plus theme/element override maps; also [tokens/tokens.js](tokens/tokens.js) (ESM) and [tokens/tokens.dtcg.json](tokens/tokens.dtcg.json) (**W3C DTCG** format for Tokens Studio for Figma / Style Dictionary). This is the canonical cross-tool contract.
|
|
16
19
|
- [DESIGN.md](DESIGN.md): agents/tools that read a root DESIGN.md (Google Stitch open-spec style) — **this repo's** generated file with the brand doctrine, every token value (light + dark), and the component/template inventory. Generated from the DTCG source by `npm run build:design-md`; the `design-md-parity` gate pins it — do not hand-edit.
|
|
17
|
-
- [templates/](templates/): Design Components (`templates/**/*.dc.html`) + the compiler (tweaks, `x-import`, `@dsCard` cards) for **
|
|
20
|
+
- [templates/](templates/): Design Components (`templates/**/*.dc.html`) + the compiler (tweaks, `x-import`, `@dsCard` cards) for **DC-capable authoring** only. Stitch and other non-DC tools: [templates/kitchen-sink.html](templates/kitchen-sink.html) + `.cs-*` / [examples/static-hello/](examples/static-hello/) — **not** `*.dc.html`.
|
|
18
21
|
|
|
19
22
|
## Key files
|
|
20
23
|
|
|
@@ -28,7 +31,7 @@ The portable contract covers browser and bundler entry points: `styles.css` · `
|
|
|
28
31
|
- [templates/](templates/): 84 copyable starting points (`.dc.html`); `email-safe/` send-ready emails; `kitchen-sink.html`; `playground.html`
|
|
29
32
|
- [guidelines/](guidelines/): specimen cards + `atomic-view.html` (portable component grid) — host product surface is Storybook at `/`
|
|
30
33
|
- [examples/static-hello/](examples/static-hello/): zero-install static consumer (Stitch / plain HTML)
|
|
31
|
-
- [examples/npm-hello/](examples/npm-hello/): first registry **browser** consumer — `@cyberskill/design@1.3.
|
|
34
|
+
- [examples/npm-hello/](examples/npm-hello/): first registry **browser** consumer — `@cyberskill/design@1.3.10` legacy entry (Lumi · Hỏa · plasma); Status Hub teams swap to `thuy`; Next/SSR apps use default `@cyberskill/design` React entry instead
|
|
32
35
|
- [examples/native/](examples/native/): SwiftUI / Compose / Flutter sample apps + store scaffolds — Compose is **Android Studio**-first (no committed `gradlew`; see `examples/native/README.md`)
|
|
33
36
|
- [ui_kits/](ui_kits/): product recreations — status-hub · website · deck
|
|
34
37
|
- [fonts/](fonts/): self-hosted Be Vietnam Pro (UI) + Space Grotesk (opt-in display, `--cs-font-family-display`) + JetBrains Mono woff2
|
|
@@ -37,12 +40,15 @@ The portable contract covers browser and bundler entry points: `styles.css` · `
|
|
|
37
40
|
- [DESIGN.md](DESIGN.md): generated open-spec surface (doctrine + tokens + inventory) for Stitch-style consumers — pinned to DTCG by the design-md-parity gate
|
|
38
41
|
- [SKILL.md](SKILL.md): agent entry — hard rules + fast orientation
|
|
39
42
|
- [CONTRIBUTING.md](CONTRIBUTING.md): one-page onboarding for extending the system
|
|
40
|
-
- [
|
|
43
|
+
- [docs/doctrine.md](docs/doctrine.md): expansion rule, verification depth, immutables
|
|
44
|
+
- [VERSION](VERSION): pinned 1.3.10 (matches [package.json](package.json))
|
|
41
45
|
|
|
42
46
|
## Docs — consumers
|
|
43
47
|
|
|
44
|
-
|
|
45
|
-
|
|
48
|
+
Published on Storybook **Docs** (`design.cyberskill.world`) and in [docs/viewer.html](docs/viewer.html) (EN|VI).
|
|
49
|
+
|
|
50
|
+
- [docs/consuming.md](docs/consuming.md): adopting & upgrading, DC-capable vs static dual path, package name `@cyberskill/design`; first registry install at [examples/npm-hello/](examples/npm-hello/) (Lumi · Hỏa · plasma); native mirrors at [examples/native/](examples/native/) (SwiftUI / Compose / Flutter samples)
|
|
51
|
+
- [docs/release-notes.md](docs/release-notes.md): curated product highlights (not a changelog) — includes `@cyberskill/design@1.3.10` Trusted Publishing / grant pointer
|
|
46
52
|
- [docs/consumer-grant.md](docs/consumer-grant.md): written npm grant (CyberSkill portfolio; UNLICENSED)
|
|
47
53
|
- [docs/conventions.md](docs/conventions.md): authoring rules (naming grammar, the four axes)
|
|
48
54
|
- [docs/design-styles.md](docs/design-styles.md): the live styling axes and the fixed liquid-glass treatment
|
|
@@ -51,13 +57,14 @@ The portable contract covers browser and bundler entry points: `styles.css` · `
|
|
|
51
57
|
- [docs/template-schema-v2.md](docs/template-schema-v2.md): typed content-slot spec for templates
|
|
52
58
|
- [docs/deploy.md](docs/deploy.md): deploying the live site (Vercel / VPS / any static host)
|
|
53
59
|
- [docs/live-hub.md](docs/live-hub.md): Storybook at `/` is the product surface; surface map
|
|
54
|
-
- [docs/storybook.md](docs/storybook.md): host Storybook product surface at `/`
|
|
60
|
+
- [docs/storybook.md](docs/storybook.md): host Storybook product surface at `/` — Docs sidebar is the published reading surface for operator docs
|
|
55
61
|
- [docs/figma.md](docs/figma.md): Figma / Tokens Studio import recipe
|
|
56
62
|
- [docs/vi/](docs/vi/): Vietnamese mirror of every operator-facing `docs/*.md`
|
|
57
63
|
- [docs/viewer.html](docs/viewer.html): reader UI (EN|VI toggle for `docs/*.md`)
|
|
58
64
|
|
|
59
65
|
## Docs — maintainers
|
|
60
66
|
|
|
67
|
+
- [docs/doctrine.md](docs/doctrine.md): expansion, verification, immutables
|
|
61
68
|
- [docs/decisions.md](docs/decisions.md): recorded owner decisions + open maintainer tasks
|
|
62
69
|
- [docs/ci-cd.md](docs/ci-cd.md): CI/CD automation — workflow, headless gate runner, provenance pre-check
|
|
63
70
|
- [docs/quality-gates.md](docs/quality-gates.md): benchmark reference — every quality gate, its assertion, pass criterion, where it runs
|
|
@@ -66,7 +73,7 @@ The portable contract covers browser and bundler entry points: `styles.css` · `
|
|
|
66
73
|
|
|
67
74
|
## Non-negotiables
|
|
68
75
|
|
|
69
|
-
- [CONTRIBUTING.md](CONTRIBUTING.md): the full non-negotiables list (with `docs/conventions.md`)
|
|
76
|
+
- [CONTRIBUTING.md](CONTRIBUTING.md): the full non-negotiables list (with `docs/doctrine.md` and `docs/conventions.md`)
|
|
70
77
|
- [tokens/colors.css](tokens/colors.css): immutable Umber/Ochre anchors · one accent per surface
|
|
71
78
|
- [base/a11y.css](base/a11y.css): APCA Lc ≥ 75 body text · ≥44px touch targets · 3px ochre focus ring · honour `prefers-reduced-motion`/`prefers-contrast`
|
|
72
79
|
- [docs/conventions.md](docs/conventions.md): Vietnamese-first bilingual — every UI string ships an EN + VN pair, diacritics preserved
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@cyberskill/design",
|
|
3
|
-
"version": "1.3.
|
|
3
|
+
"version": "1.3.10",
|
|
4
4
|
"private": false,
|
|
5
5
|
"publishConfig": {
|
|
6
6
|
"access": "public"
|
|
@@ -95,7 +95,7 @@
|
|
|
95
95
|
"test:nav-model": "node _audit/ci/test-nav-model.mjs",
|
|
96
96
|
"test:ui-contracts": "node _audit/ci/test-health-tokens-contract.mjs",
|
|
97
97
|
"test:form-paths": "node _audit/ci/test-form-paths.mjs",
|
|
98
|
-
"test:unit": "node _audit/ci/test-nav-model.mjs && node _audit/ci/test-health-tokens-contract.mjs && node _audit/ci/test-docs-consistency.mjs && node _audit/ci/test-base-hex-allowlist.mjs && node _audit/ci/test-form-paths.mjs && node _audit/ci/test-storybook-contract.mjs && node _audit/ci/test-axe-coverage.mjs && node _audit/ci/test-figma-push-helpers.mjs && node _audit/ci/test-native-samples.mjs && node _audit/ci/test-code-connect.mjs && node _audit/ci/test-npm-publish.mjs && node _audit/ci/test-subtree-consume.mjs && node _audit/ci/test-react-entry.mjs && node _audit/ci/test-element-packs.mjs && node _audit/ci/test-i18n-builtins.mjs && node _audit/ci/test-format-currency.mjs && node _audit/ci/check-manifest-coverage.mjs && node _audit/ci/ci-verdict.mjs --selftest && node _audit/ci/test-pack-hygiene.mjs && npm run version:stamp:check && node _audit/ci/test-docs-lang-parity.mjs && node _audit/ci/test-email-safe.mjs && node _audit/ci/test-prop-parity.mjs",
|
|
98
|
+
"test:unit": "node _audit/ci/test-nav-model.mjs && node _audit/ci/test-health-tokens-contract.mjs && node _audit/ci/test-docs-consistency.mjs && node _audit/ci/test-base-hex-allowlist.mjs && node _audit/ci/test-form-paths.mjs && node _audit/ci/test-storybook-contract.mjs && node _audit/ci/test-axe-coverage.mjs && node _audit/ci/test-figma-push-helpers.mjs && node _audit/ci/test-native-samples.mjs && node _audit/ci/test-code-connect.mjs && node _audit/ci/test-npm-publish.mjs && node _audit/ci/test-subtree-consume.mjs && node _audit/ci/test-react-entry.mjs && node _audit/ci/test-element-packs.mjs && node _audit/ci/test-i18n-builtins.mjs && node _audit/ci/test-format-currency.mjs && node _audit/ci/check-manifest-coverage.mjs && node _audit/ci/ci-verdict.mjs --selftest && node _audit/ci/test-pack-hygiene.mjs && npm run version:stamp:check && node _audit/ci/test-docs-lang-parity.mjs && node _audit/ci/test-docs-storybook-coverage.mjs && node _audit/ci/test-docs-link-check.mjs && node _audit/ci/test-email-safe.mjs && node _audit/ci/test-prop-parity.mjs",
|
|
99
99
|
"test:audit-probe": "node _audit/ci/audit-probe-suite.mjs",
|
|
100
100
|
"test:element-packs": "node _audit/ci/test-element-packs.mjs",
|
|
101
101
|
"test:react-entry": "node _audit/ci/test-react-entry.mjs",
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$meta": {
|
|
3
3
|
"system": "CyberSkill Design System",
|
|
4
|
-
"version": "1.3.
|
|
4
|
+
"version": "1.3.10",
|
|
5
5
|
"note": "OKLCH seed contract for the 15 element packs × light/dark (30 sets). SoT for scripts/generate-element-packs.mjs — do not hand-edit tokens/elements.css. Owner bar (Jul 2026): soft/middle/deep clearly distinct; middle intensity synced across elements; harmonious role palettes; light↔dark same-hue identity. Public variant names unchanged."
|
|
6
6
|
},
|
|
7
7
|
"intensity": {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
// CyberSkill Design System — native design tokens.
|
|
2
2
|
// GENERATED from tokens/tokens.dtcg.json — do not hand-edit; regenerate on token change.
|
|
3
|
-
// release v1.3.
|
|
3
|
+
// release v1.3.10 · source sha256 1b606c94a5612b02…
|
|
4
4
|
// conversions: rem→px at 16 · em→…Em relative doubles · rgba alpha→ARGB byte (round(a*255)) · durations in ms
|
|
5
5
|
// dark element packs: see $extensions.overrides.elementsDark
|
|
6
6
|
// provenance: tokens/provenance.json · parity gate: _audit/token-pipeline-test.html
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
// CyberSkill Design System — native design tokens.
|
|
2
2
|
// GENERATED from tokens/tokens.dtcg.json — do not hand-edit; regenerate on token change.
|
|
3
|
-
// release v1.3.
|
|
3
|
+
// release v1.3.10 · source sha256 1b606c94a5612b02…
|
|
4
4
|
// conversions: rem→px at 16 · em→…Em relative doubles · rgba alpha→ARGB byte (round(a*255)) · durations in ms
|
|
5
5
|
// dark element packs: see $extensions.overrides.elementsDark
|
|
6
6
|
// provenance: tokens/provenance.json · parity gate: _audit/token-pipeline-test.html
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
// CyberSkill Design System — native design tokens.
|
|
2
2
|
// GENERATED from tokens/tokens.dtcg.json — do not hand-edit; regenerate on token change.
|
|
3
|
-
// release v1.3.
|
|
3
|
+
// release v1.3.10 · source sha256 1b606c94a5612b02…
|
|
4
4
|
// conversions: rem→px at 16 · em→…Em relative doubles · rgba alpha→ARGB byte (round(a*255)) · durations in ms
|
|
5
5
|
// dark element packs: see $extensions.overrides.elementsDark
|
|
6
6
|
// provenance: tokens/provenance.json · parity gate: _audit/token-pipeline-test.html
|
package/tokens/provenance.json
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
{
|
|
2
2
|
"system": "CyberSkill Design System",
|
|
3
|
-
"release": "1.3.
|
|
3
|
+
"release": "1.3.10",
|
|
4
4
|
"source": "tokens/tokens.dtcg.json",
|
|
5
|
-
"sourceSha256": "
|
|
5
|
+
"sourceSha256": "1b606c94a5612b02a1c9f0e48ef12443e5c5f7da653ade97c64fe1f520ba532a",
|
|
6
6
|
"dtcgStamp": {
|
|
7
|
-
"version": "1.3.
|
|
7
|
+
"version": "1.3.10",
|
|
8
8
|
"generated": "2026-07-23"
|
|
9
9
|
},
|
|
10
10
|
"conversions": {
|
|
@@ -36,17 +36,17 @@
|
|
|
36
36
|
{
|
|
37
37
|
"file": "tokens/native/CSTokens.swift",
|
|
38
38
|
"lang": "swift",
|
|
39
|
-
"sha256": "
|
|
39
|
+
"sha256": "55d1be1a5a23ba75230d6110bff2d17c9fe88cd3f158ac9f992e94950a792edc"
|
|
40
40
|
},
|
|
41
41
|
{
|
|
42
42
|
"file": "tokens/native/CSTokens.kt",
|
|
43
43
|
"lang": "kotlin",
|
|
44
|
-
"sha256": "
|
|
44
|
+
"sha256": "1b0ff7f07cdff7f5134169e2a421f0d63660c3cac532c198feaed7ef0532108d"
|
|
45
45
|
},
|
|
46
46
|
{
|
|
47
47
|
"file": "tokens/native/cs_tokens.dart",
|
|
48
48
|
"lang": "dart",
|
|
49
|
-
"sha256": "
|
|
49
|
+
"sha256": "e312abf70155c54cc9f0369c08f896f8eb230965146804a22a979c159df7b474"
|
|
50
50
|
}
|
|
51
51
|
]
|
|
52
52
|
}
|
package/tokens/tokens.dtcg.json
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
"$extensions": {
|
|
4
4
|
"com.cyberskill": {
|
|
5
5
|
"system": "CyberSkill Design System",
|
|
6
|
-
"version": "1.3.
|
|
6
|
+
"version": "1.3.10",
|
|
7
7
|
"generated": "2026-07-23",
|
|
8
8
|
"source": "tokens/tokens.json",
|
|
9
9
|
"note": "Scope overrides (dark/system theme · 15 element×variant packs) are carried under $extensions.overrides keyed by CSS selector — apply the matching selector on :root/ancestor to activate.",
|
package/tokens/tokens.js
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
// CyberSkill design tokens — generated from tokens/*.css (v1.3.
|
|
1
|
+
// CyberSkill design tokens — generated from tokens/*.css (v1.3.10). Do not edit by hand.
|
|
2
2
|
export const tokens = {
|
|
3
3
|
"$meta": {
|
|
4
4
|
"system": "CyberSkill Design System",
|
|
5
|
-
"version": "1.3.
|
|
5
|
+
"version": "1.3.10",
|
|
6
6
|
"generated": "2026-07-23",
|
|
7
7
|
"note": "Generated from tokens/*.css. Root grouped by category; theme/element scopes carry overrides only. Regenerate after any token change (see docs/conventions.md)."
|
|
8
8
|
},
|
package/tokens/tokens.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$meta": {
|
|
3
3
|
"system": "CyberSkill Design System",
|
|
4
|
-
"version": "1.3.
|
|
4
|
+
"version": "1.3.10",
|
|
5
5
|
"generated": "2026-07-23",
|
|
6
6
|
"note": "Generated from tokens/*.css. Root grouped by category; theme/element scopes carry overrides only. Regenerate after any token change (see docs/conventions.md)."
|
|
7
7
|
},
|