@design-ai/cli 4.62.0 → 4.64.0
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-plugin/plugin.json +1 -1
- package/CHANGELOG.md +54 -0
- package/README.ko.md +3 -3
- package/README.md +3 -3
- package/cli/lib/check.mjs +53 -0
- package/cli/lib/examples.mjs +4 -0
- package/cli/lib/route.mjs +84 -0
- package/docs/DOGFOOD-DASHBOARD-FINDINGS.md +52 -0
- package/docs/ROADMAP.md +73 -0
- package/docs/ROUTE-COVERAGE-SWEEP.md +65 -0
- package/docs/external-status.md +11 -11
- package/examples/README.md +12 -0
- package/examples/dashboard-design-settlement.md +87 -0
- package/examples/marketing-page-saas-landing.md +97 -0
- package/knowledge/COVERAGE.md +5 -3
- package/package.json +1 -1
- package/tools/audit/smoke_assertions.py +2 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "design-ai",
|
|
3
|
-
"version": "4.
|
|
3
|
+
"version": "4.64.0",
|
|
4
4
|
"description": "Senior product designer for any AI coding agent. 20 skills, 17 commands, 4 review agents covering UI/UX, website improvement, design systems, motion, illustration, print, video, game UI, conversational, and spatial design. Korean market depth.",
|
|
5
5
|
"author": {
|
|
6
6
|
"name": "Sungjin Park",
|
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,60 @@
|
|
|
2
2
|
|
|
3
3
|
User-facing release notes for design-ai. Versions follow semver.
|
|
4
4
|
|
|
5
|
+
## v4.64.0 — Route coverage sweep: marketing-page route and 18-class routing (2026-07)
|
|
6
|
+
|
|
7
|
+
Generalizes the two dogfood rounds' converged finding — route-table coverage is the recurring gap class — into one systematic batch. Eighteen common task classes were probed through `route()`; thirteen were low/misrouted/zero-match despite the knowledge corpus already covering nearly every one of them (a pricing-page brief scored 0 with `pricing-page-design.md` sitting in the corpus). All fixed in one pass; evidence tables in `docs/ROUTE-COVERAGE-SWEEP.md`. Additive and backward-compatible.
|
|
8
|
+
|
|
9
|
+
### Added
|
|
10
|
+
- **`marketing-page` route** — consolidates three previously zero/misrouted marketing-surface classes (landing page, pricing page, email template) with five dedicated knowledge files curated (`landing-hero-design`, `landing-page-patterns`, `pricing-page-design`, `email-design`, `brand-identity`) and check requirements for conversion/CTA evidence, visual hierarchy, and responsive/email-client behavior.
|
|
11
|
+
- **`examples/marketing-page-saas-landing.md`** (examples now 224) — the route's worked example (developer-tool SaaS landing: 히어로, 기능 소개, 가격, 후기, CTA 배치, 한국형 신뢰 요소).
|
|
12
|
+
|
|
13
|
+
### Changed
|
|
14
|
+
- **`dashboard-design`** gains chart/data-viz and permissions vocabulary (차트, 데이터 시각화, 시계열, 범례, 권한, 역할 관리 + English forms) and three more curated knowledge files (`chart-types`, `chart-color-encoding`, `realtime-data`) — data-viz and RBAC-admin briefs move from score 0 to `[medium]`.
|
|
15
|
+
- **`flow-design`** gains nine interaction classes' vocabulary (체크아웃, 알림 센터, 계정 관리, 프로필 수정, 회원 탈퇴, 업로드, 드래그 앤 드롭, 댓글, 멘션, 공유 권한, 코치마크, 투어, 필터, 정렬, 무한 스크롤, 내비게이션, 하단 탭, 다단계, 임시저장, 유효성 검증 + English forms). A multi-step form brief now intentionally routes to `flow-design` instead of `component-spec`.
|
|
16
|
+
- Post-fix probe: **all 18 classes land on their target routes at medium+ confidence** where the brief vocabulary allows; the previously-correct classes are unchanged; no keyword hijacks (verified programmatically against every route's keyword set); route eval 6/6; both dogfood briefs keep their routes.
|
|
17
|
+
|
|
18
|
+
### Verified
|
|
19
|
+
- All 8 audits passed.
|
|
20
|
+
- `npm run release:check`.
|
|
21
|
+
- `npm run release:metadata`.
|
|
22
|
+
- `git diff --check`.
|
|
23
|
+
- Route eval 6/6; example-qa 22/22 routes; 18-class before/after probe recorded in `docs/ROUTE-COVERAGE-SWEEP.md`.
|
|
24
|
+
- Main-branch GitHub Actions (`Design-AI audit`, `Deploy doc site`) passed for the constituent commits.
|
|
25
|
+
|
|
26
|
+
### Versions
|
|
27
|
+
- `package.json` + `.claude-plugin/plugin.json`: 4.63.0 → 4.64.0.
|
|
28
|
+
- `vscode-extension/package.json`: remains 0.4.1.
|
|
29
|
+
|
|
30
|
+
### What this enables
|
|
31
|
+
- The route table now covers the common product-design task space end to end: any of the 18 probed classes — from checkout flows to RBAC admin screens to pricing pages — reaches purpose-matched curation, checklists, and checks instead of falling through to design-system scaffolding.
|
|
32
|
+
|
|
33
|
+
## v4.63.0 — Dogfood round 2: dashboard-design route and flow-design keyword depth (2026-07)
|
|
34
|
+
|
|
35
|
+
The dogfood loop's second turn, run immediately after v4.62.0 on fresh briefs. It first verified the v4.62 fixes live (flow briefs route to `flow-design`, recall selections are 100% design corpus, `pack` trims to the character boundary), then probed three new task classes and shipped what the weakest one surfaced. Evidence trail in `docs/DOGFOOD-DASHBOARD-FINDINGS.md`. All additive and backward-compatible.
|
|
36
|
+
|
|
37
|
+
### Added
|
|
38
|
+
- **`dashboard-design` route** — the data-dense screen class (대시보드, 정산, 어드민, 백오피스, KPI / dashboard, admin panel, back-office, analytics) previously matched **zero** route keywords and fell through to design-system scaffolding. The new route curates the knowledge that already existed for this class (`dashboard-composition`, `money-and-amount`, `korean-density-conventions`, `list-and-feed` + layout/typography foundations) and adds data-screen check requirements: money/number formatting evidence, table accessibility (caption/scope/aria-sort), and density/responsive degradation. The settlement-dashboard brief moved from `[low] design-from-brief score=0` to `[medium] dashboard-design score=2`.
|
|
39
|
+
- **`examples/dashboard-design-settlement.md`** (examples now 223) — the route's worked example, adapted from the dogfooded 정산 대시보드 artifact (원화 표기, tabular-nums 우측 정렬, 상태 배지 색+텍스트, 테이블 접근성, 밀도 강등 전략).
|
|
40
|
+
|
|
41
|
+
### Changed
|
|
42
|
+
- **`flow-design` keywords deepened, verified in both directions.** Korean step-flow vocabulary (위저드, 단계별 플로우, 스텝, 이어하기) lifts an onboarding-wizard brief from `[low] score=1` to `[medium] score=3`; compound states-design keywords (에러 상태, 빈 상태 화면, 상태 설계, 검색 결과 없음, empty state, error state) route a states-design brief to `flow-design [medium] 3` above `illustration [low] 1`, while a genuine illustration brief (빈 상태 일러스트/마스코트) still routes `illustration [high] 4`. The route eval checkpoint stays 6/6 and representative briefs route unchanged.
|
|
43
|
+
|
|
44
|
+
### Verified
|
|
45
|
+
- All 8 audits passed.
|
|
46
|
+
- `npm run release:check`.
|
|
47
|
+
- `npm run release:metadata`.
|
|
48
|
+
- `git diff --check`.
|
|
49
|
+
- Route eval 6/6; example-qa 21/21 routes; representative-brief routing unchanged.
|
|
50
|
+
- Main-branch GitHub Actions (`Design-AI audit`, `Deploy doc site`) passed for the constituent commits.
|
|
51
|
+
|
|
52
|
+
### Versions
|
|
53
|
+
- `package.json` + `.claude-plugin/plugin.json`: 4.62.0 → 4.63.0.
|
|
54
|
+
- `vscode-extension/package.json`: remains 0.4.1.
|
|
55
|
+
|
|
56
|
+
### What this enables
|
|
57
|
+
- The single most common Korean B2B design task class — data-dense dashboard/admin screens — now routes to purpose-built curation and checks, and flow briefs match in the vocabulary Korean users actually write. The loop's second turn also doubles as live regression evidence for everything v4.62.0 shipped.
|
|
58
|
+
|
|
5
59
|
## v4.62.0 — Dogfood loop: flow-design route, trust & safety corpus, recall purity, SDK walkthrough (2026-07)
|
|
6
60
|
|
|
7
61
|
A full dogfood cycle shipped as one release: a real design task (커뮤니티 앱 신고·차단 플로우) was driven end-to-end through the Agent SDK, and everything the run surfaced — a routing gap, recall pollution, a corpus gap, and a real byte-accounting bug — is fixed here, together with the walkthrough the run produced. See `docs/DOGFOOD-SDK-FINDINGS.md` for the evidence trail.
|
package/README.ko.md
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
[](https://github.com/sungjin9288/design-ai/actions/workflows/audit.yml)
|
|
4
4
|
[](https://sungjin9288.github.io/design-ai/ko/)
|
|
5
5
|
[](knowledge/PRINCIPLES.md)
|
|
6
|
-
[](examples/README.md)
|
|
7
7
|
[](skills/README.md)
|
|
8
8
|
|
|
9
9
|
> 🇰🇷 한국어 / [🇺🇸 English](https://github.com/sungjin9288/design-ai/blob/main/README.md)
|
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
|
|
13
13
|
> **모델이 아니에요. 파인튜닝도 아니에요.** 디자인 전문 지식을 구조화한 코퍼스 + 에이전트가 바로 실행할 수 있는 지시문이에요. 범용 LLM을 이번 세션에서만큼은 시니어 디자이너로 바꿔주는 셈이에요.
|
|
14
14
|
|
|
15
|
-
> **배포 상태, 2026-07-
|
|
15
|
+
> **배포 상태, 2026-07-07 확인:** 로컬 `npm run release:check`는 통과했고, GitHub Pages 문서는 live 상태이며, GitHub Release `v4.63.0`과 npm `@design-ai/cli@4.63.0`(`latest`) publish가 provenance와 함께 확인됐어요. 이번 릴리스는 도그푸드 루프 2회전이에요 — 데이터 밀집 화면 클래스를 위한 `dashboard-design` 라우트(금액 표기·테이블 접근성·밀도 check 요건)와 정산 워크드 예제, 그리고 `flow-design` 키워드 심화(한글 스텝 플로우 어휘 + 상태 설계 복합어, illustration 라우트와 양방향 검증). live `npm run registry:smoke`가 published `@design-ai/cli@4.63.0`에 대해 깨끗이 통과했어요(retrieval 표면과 route enrichment 포함). Homebrew formula는 `v4.63.0`에 pinning되어 있고, VS Code Marketplace에는 `sungjin.design-ai-vscode@0.4.1`이 공개되어 있어요. 자세한 내용은 [`docs/external-status.md`](docs/external-status.md)를 확인하세요.
|
|
16
16
|
|
|
17
17
|
## 한눈에 보는 커버리지
|
|
18
18
|
|
|
@@ -172,7 +172,7 @@ design-ai는 한국 시장을 1순위로 만들어졌고, 글로벌 시장 패
|
|
|
172
172
|
|
|
173
173
|
## 상태
|
|
174
174
|
|
|
175
|
-
전체 단계 로그는 [`docs/ROADMAP.md`](docs/ROADMAP.md), 현재 완료 범위는 [`docs/PRODUCT-READINESS.md`](docs/PRODUCT-READINESS.md)에서 확인하세요. 현재 **v4.
|
|
175
|
+
전체 단계 로그는 [`docs/ROADMAP.md`](docs/ROADMAP.md), 현재 완료 범위는 [`docs/PRODUCT-READINESS.md`](docs/PRODUCT-READINESS.md)에서 확인하세요. 현재 **v4.63.0**: 도그푸드 루프 2회전(`flow-design`+`dashboard-design` 라우트, trust & safety 코퍼스, 디자인 지식 전용 recall, `pack` 바이트 예산 보장, SDK 워크스루), ranked-search eval 체크포인트(`search --eval`), Agent SDK(`@design-ai/cli/sdk`) — TypeScript 선언 + opt-in `learn.*` 로컬 쓰기 네임스페이스, public npm publish, provenance-backed GitHub Actions release, public registry smoke, Website Console MCP readiness, workspace learning restore/eval coverage, handoff bundle verification, 90%+ component coverage가 완료됐어요.
|
|
176
176
|
|
|
177
177
|
핵심 디자인 컨설팅 워크플로우는 로컬 릴리스 기준으로 준비되어 있어요. 웹사이트 개선 컨트롤 타워는 zero-dependency static Web App과 `website-improvement` route/skill/command로 제공되고, Site Profile, audit checklist, MCP readiness, refactor prompt, handoff evidence tracking, bundle export/verify/repair를 한 번에 다뤄요. 로컬 학습 선호도는 `design-ai learn`으로 관리해요 — profile bootstrap, feedback 캡처, 읽기 전용 signal registry, 반복 QA 신호에서 만드는 skill 제안, 그리고 backup/restore/curate/audit까지 전부 로컬에서만 동작하는 opt-in 기능이에요. AI 모델 학습이나 fine-tuning은 여전히 현재 배포 범위 밖이에요.
|
|
178
178
|
|
package/README.md
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
[](https://github.com/sungjin9288/design-ai/actions/workflows/audit.yml)
|
|
4
4
|
[](https://sungjin9288.github.io/design-ai/)
|
|
5
5
|
[](knowledge/PRINCIPLES.md)
|
|
6
|
-
[](examples/README.md)
|
|
7
7
|
[](skills/README.md)
|
|
8
8
|
|
|
9
9
|
> 🇺🇸 English / [🇰🇷 한국어](https://github.com/sungjin9288/design-ai/blob/main/README.ko.md)
|
|
@@ -12,7 +12,7 @@ A model-agnostic design knowledge base + skill system. Drop it in front of any A
|
|
|
12
12
|
|
|
13
13
|
> **Not a model. Not a fine-tune.** A structured corpus of design expertise + agent-ready instructions that turn a general-purpose LLM into an expert.
|
|
14
14
|
|
|
15
|
-
> **Distribution status, checked 2026-07-
|
|
15
|
+
> **Distribution status, checked 2026-07-07:** local `npm run release:check` passes, GitHub Pages docs are live, GitHub Release `v4.63.0` is published, `@design-ai/cli@4.63.0` is public on npm (`latest`) with provenance, and the live `npm run registry:smoke` passes cleanly against `@design-ai/cli@4.63.0`. The Homebrew formula is pinned to `v4.63.0`, and `sungjin.design-ai-vscode@0.4.1` is public on the VS Code Marketplace. See [`docs/external-status.md`](docs/external-status.md).
|
|
16
16
|
|
|
17
17
|
## Coverage at a glance
|
|
18
18
|
|
|
@@ -214,7 +214,7 @@ Refresh refs/ on demand: `./tools/extractors/run-all.sh`.
|
|
|
214
214
|
|
|
215
215
|
## Status
|
|
216
216
|
|
|
217
|
-
See [`docs/ROADMAP.md`](docs/ROADMAP.md) for the full phase log and [`docs/PRODUCT-READINESS.md`](docs/PRODUCT-READINESS.md) for the current completion boundary. Currently at **v4.
|
|
217
|
+
See [`docs/ROADMAP.md`](docs/ROADMAP.md) for the full phase log and [`docs/PRODUCT-READINESS.md`](docs/PRODUCT-READINESS.md) for the current completion boundary. Currently at **v4.63.0**: two dogfood-loop turns (`flow-design` + `dashboard-design` routes, trust & safety corpus, design-knowledge-only recall, `pack` byte-budget guarantee, SDK walkthrough), the ranked-search eval checkpoint (`search --eval`), the Agent SDK (`@design-ai/cli/sdk`) with shipped TypeScript types and the opt-in `learn.*` local-write namespace, public npm publish, provenance-backed GitHub Actions release, public registry smoke, Website Console MCP readiness, workspace learning restore/eval coverage, handoff bundle verification, and 90%+ component coverage are complete.
|
|
218
218
|
|
|
219
219
|
Core design consulting workflows are locally release-ready. The website improvement control tower ships as a zero-dependency static Web App plus a `website-improvement` route/skill/command, covering Site Profiles, audit checklists, MCP readiness, refactor prompts, handoff evidence tracking, and bundle export/verify/repair. Local learning preferences are available through `design-ai learn` — profile bootstrap, feedback capture, a read-only signals registry, skill-proposal generation from repeated QA signals, and full backup/restore/curate/audit tooling, all local-only and opt-in. AI model training or fine-tuning remains outside the shipped scope.
|
|
220
220
|
|
package/cli/lib/check.mjs
CHANGED
|
@@ -390,6 +390,59 @@ const ROUTE_REQUIREMENTS = {
|
|
|
390
390
|
],
|
|
391
391
|
},
|
|
392
392
|
],
|
|
393
|
+
"dashboard-design": [
|
|
394
|
+
{
|
|
395
|
+
id: "dashboard-money-format",
|
|
396
|
+
title: "Amount, unit, and number-format coverage",
|
|
397
|
+
required: [
|
|
398
|
+
{ label: "amount or currency", patterns: [/\b(amount|currency|price)\b/i, /금액|원\b/] },
|
|
399
|
+
{ label: "number formatting", patterns: [/\b(comma|tabular[- ]nums?|number format|right[- ]align(?:ed)?)\b/i, /콤마|천\s*단위|우측\s*정렬/] },
|
|
400
|
+
],
|
|
401
|
+
},
|
|
402
|
+
{
|
|
403
|
+
id: "dashboard-table-a11y",
|
|
404
|
+
title: "Table accessibility coverage",
|
|
405
|
+
required: [
|
|
406
|
+
{ label: "table structure", patterns: [/\btable\b/i, /테이블/] },
|
|
407
|
+
{ label: "caption or header scope", patterns: [/\b(caption|scope=|column header)\b/i, /캡션|헤더/] },
|
|
408
|
+
{ label: "sort state", patterns: [/\baria-sort\b/i] },
|
|
409
|
+
],
|
|
410
|
+
},
|
|
411
|
+
{
|
|
412
|
+
id: "dashboard-density-responsive",
|
|
413
|
+
title: "Density and responsive degradation coverage",
|
|
414
|
+
required: [
|
|
415
|
+
{ label: "density", patterns: [/\b(density|dense|compact)\b/i, /밀도|촘촘/] },
|
|
416
|
+
{ label: "responsive degradation", patterns: [/\b(responsive|horizontal scroll|degrade[sd]?|demote[sd]?)\b/i, /강등|가로\s*스크롤/] },
|
|
417
|
+
],
|
|
418
|
+
},
|
|
419
|
+
],
|
|
420
|
+
"marketing-page": [
|
|
421
|
+
{
|
|
422
|
+
id: "marketing-conversion",
|
|
423
|
+
title: "Conversion and CTA evidence",
|
|
424
|
+
required: [
|
|
425
|
+
{ label: "call to action", patterns: [/\bcta\b|\bcall.to.action\b/i, /전환|버튼 문구|행동 유도/] },
|
|
426
|
+
{ label: "conversion reasoning", patterns: [/\bconversion\b/i, /전환율|전환/] },
|
|
427
|
+
],
|
|
428
|
+
},
|
|
429
|
+
{
|
|
430
|
+
id: "marketing-visual-hierarchy",
|
|
431
|
+
title: "Visual hierarchy and fold coverage",
|
|
432
|
+
required: [
|
|
433
|
+
{ label: "hierarchy or hero", patterns: [/\bhierarchy\b|\bhero\b/i, /위계|히어로/] },
|
|
434
|
+
{ label: "fold or scroll order", patterns: [/\babove the fold\b/i, /폴드|스크롤 순서/] },
|
|
435
|
+
],
|
|
436
|
+
},
|
|
437
|
+
{
|
|
438
|
+
id: "marketing-responsive-email",
|
|
439
|
+
title: "Responsive and email-client behavior coverage",
|
|
440
|
+
required: [
|
|
441
|
+
{ label: "responsive or mobile", patterns: [/\bresponsive\b/i, /반응형|모바일/] },
|
|
442
|
+
{ label: "email client behavior", patterns: [/\bemail client\b/i, /이메일 클라이언트|다크모드 대응/] },
|
|
443
|
+
],
|
|
444
|
+
},
|
|
445
|
+
],
|
|
393
446
|
};
|
|
394
447
|
|
|
395
448
|
function routeRequirementResult(routeId, requirement, text) {
|
package/cli/lib/examples.mjs
CHANGED
|
@@ -32,6 +32,8 @@ const ROUTE_EXAMPLE_QUERIES = {
|
|
|
32
32
|
"design-pr-review": "dogfood findings review",
|
|
33
33
|
"stability-review": "dogfood findings release",
|
|
34
34
|
"flow-design": "flow report block moderation onboarding",
|
|
35
|
+
"dashboard-design": "dashboard settlement admin data table KPI",
|
|
36
|
+
"marketing-page": "landing hero pricing email template saas",
|
|
35
37
|
};
|
|
36
38
|
|
|
37
39
|
const ROUTE_CATEGORY_BOOSTS = {
|
|
@@ -55,6 +57,8 @@ const CANONICAL_ROUTE_EXAMPLES = {
|
|
|
55
57
|
"game-ui": ["examples/component-game-menu.md"],
|
|
56
58
|
"slide-deck": ["examples/slide-deck-example.md"],
|
|
57
59
|
"flow-design": ["examples/flow-design-report-block.md"],
|
|
60
|
+
"dashboard-design": ["examples/dashboard-design-settlement.md"],
|
|
61
|
+
"marketing-page": ["examples/marketing-page-saas-landing.md"],
|
|
58
62
|
};
|
|
59
63
|
|
|
60
64
|
export function parseExamplesArgs(args) {
|
package/cli/lib/route.mjs
CHANGED
|
@@ -304,6 +304,90 @@ export const ROUTES = [
|
|
|
304
304
|
"flow design", "onboarding flow", "sign-up flow", "signup flow", "checkout flow",
|
|
305
305
|
"report flow", "block flow", "moderation flow", "user journey", "wizard", "stepper",
|
|
306
306
|
"settings screen", "notification settings",
|
|
307
|
+
// G-2 (docs/DOGFOOD-DASHBOARD-FINDINGS.md): Korean wizard/step vocabulary that the
|
|
308
|
+
// v4.62 keyword set missed (English wizard/stepper made it in, Korean forms didn't).
|
|
309
|
+
"위저드", "단계별 플로우", "스텝", "이어하기",
|
|
310
|
+
// G-3 (docs/DOGFOOD-DASHBOARD-FINDINGS.md): compound state-design keywords so a
|
|
311
|
+
// states-design brief outscores illustration's bare `빈 상태` hit. Kept compound
|
|
312
|
+
// (not bare `상태`/`에러`/`빈`) to avoid hijacking other routes' bare terms.
|
|
313
|
+
"에러 상태", "빈 상태 화면", "상태 설계", "검색 결과 없음", "empty state", "error state",
|
|
314
|
+
// Phase 768 (docs/ROUTE-COVERAGE-SWEEP.md): nine interaction-flow sweep classes
|
|
315
|
+
// (checkout, notifications, account, file-upload, collaboration, product-tour,
|
|
316
|
+
// search-filter, navigation, long-form) were zero/low/misrouted despite curated
|
|
317
|
+
// knowledge (search-ux.md, mobile-navigation.md, information-architecture.md,
|
|
318
|
+
// settings-page.md) reaching them through recall. `product tour` is kept as a
|
|
319
|
+
// compound even though it substring-contains design-from-brief's bare `product`,
|
|
320
|
+
// because the extra flow-design keyword hits on the same brief (온보딩, 투어,
|
|
321
|
+
// 코치마크) outweigh design-from-brief's single hit.
|
|
322
|
+
"체크아웃", "알림 센터", "계정 관리", "프로필 수정", "회원 탈퇴", "업로드", "드래그 앤 드롭",
|
|
323
|
+
"댓글", "멘션", "공유 권한", "코치마크", "투어", "필터", "정렬", "무한 스크롤",
|
|
324
|
+
"내비게이션", "하단 탭", "다단계",
|
|
325
|
+
"checkout", "notification center", "account management", "file upload", "drag and drop",
|
|
326
|
+
"comment thread", "mention", "coachmark", "product tour", "infinite scroll", "bottom tab",
|
|
327
|
+
"multi-step",
|
|
328
|
+
// Sweep long-form class (docs/ROUTE-COVERAGE-SWEEP.md): a multi-step form brief
|
|
329
|
+
// ("다단계 입력... 임시저장... 유효성 검증") tied against component-spec's bare
|
|
330
|
+
// `입력`/`폼` hits without these two. `임시저장` (save-draft) and `유효성 검증`
|
|
331
|
+
// (validation timing) are flow-specific signals distinct from a static
|
|
332
|
+
// component contract, and neither collides with any other route's keywords.
|
|
333
|
+
"임시저장", "유효성 검증",
|
|
334
|
+
],
|
|
335
|
+
},
|
|
336
|
+
{
|
|
337
|
+
id: "dashboard-design",
|
|
338
|
+
label: "Dashboard / data screen design",
|
|
339
|
+
command: null,
|
|
340
|
+
skills: ["skills/design-critique/SKILL.md", "skills/handoff-spec/SKILL.md"],
|
|
341
|
+
agents: ["agents/a11y-reviewer.md"],
|
|
342
|
+
knowledge: [
|
|
343
|
+
"knowledge/patterns/dashboard-composition.md",
|
|
344
|
+
"knowledge/patterns/money-and-amount.md",
|
|
345
|
+
"knowledge/i18n/korean-density-conventions.md",
|
|
346
|
+
"knowledge/patterns/list-and-feed.md",
|
|
347
|
+
"knowledge/layout/spacing-and-grid.md",
|
|
348
|
+
"knowledge/typography/type-scale-fundamentals.md",
|
|
349
|
+
],
|
|
350
|
+
keywords: [
|
|
351
|
+
// G-1 (docs/DOGFOOD-DASHBOARD-FINDINGS.md): dashboard/admin/back-office screen
|
|
352
|
+
// briefs previously matched zero route keywords and fell through to
|
|
353
|
+
// design-from-brief. Compound where a bare term would hijack another route
|
|
354
|
+
// (`테이블` bare belongs to component-spec; `데이터` bare is too generic for any
|
|
355
|
+
// single route, so it is only used here in the compound `데이터 테이블`).
|
|
356
|
+
"대시보드", "정산", "매출 화면", "지표", "어드민", "백오피스", "데이터 테이블",
|
|
357
|
+
"정산 내역", "KPI",
|
|
358
|
+
"dashboard", "admin panel", "back-office", "back office", "analytics screen", "data table",
|
|
359
|
+
// Phase 768 (docs/ROUTE-COVERAGE-SWEEP.md): data-viz and rbac-admin sweep classes
|
|
360
|
+
// matched zero route keywords despite dedicated knowledge (chart-types.md,
|
|
361
|
+
// chart-color-encoding.md, realtime-data.md) already existing. Bare `chart` is
|
|
362
|
+
// safe (no other route claims it); `permissions matrix`/`role management` are
|
|
363
|
+
// compound so they don't hijack shorter generic terms from other routes.
|
|
364
|
+
"차트", "데이터 시각화", "시계열", "범례", "권한 관리", "역할 관리", "권한",
|
|
365
|
+
"chart", "data visualization", "time series", "legend", "permissions matrix", "role management",
|
|
366
|
+
],
|
|
367
|
+
},
|
|
368
|
+
{
|
|
369
|
+
id: "marketing-page",
|
|
370
|
+
label: "Marketing page & campaign surface design",
|
|
371
|
+
command: null,
|
|
372
|
+
skills: ["skills/design-critique/SKILL.md", "skills/handoff-spec/SKILL.md"],
|
|
373
|
+
agents: ["agents/a11y-reviewer.md", "agents/design-critic.md"],
|
|
374
|
+
knowledge: [
|
|
375
|
+
"knowledge/patterns/landing-hero-design.md",
|
|
376
|
+
"knowledge/patterns/landing-page-patterns.md",
|
|
377
|
+
"knowledge/patterns/pricing-page-design.md",
|
|
378
|
+
"knowledge/patterns/email-design.md",
|
|
379
|
+
"knowledge/patterns/brand-identity.md",
|
|
380
|
+
],
|
|
381
|
+
keywords: [
|
|
382
|
+
// Phase 768 (docs/ROUTE-COVERAGE-SWEEP.md): landing, pricing-page, and
|
|
383
|
+
// email-template sweep classes were zero-match or misrouted (landing fell
|
|
384
|
+
// through to handoff-spec via bare `개발자`; email-template misrouted to
|
|
385
|
+
// palette-from-brand via bare `다크모드`) despite dedicated knowledge files
|
|
386
|
+
// already existing. `랜딩 페이지` is compound because `website-improvement` owns
|
|
387
|
+
// bare `랜딩`; `히어로`/`히어로 섹션` are safe (no other route claims them).
|
|
388
|
+
"랜딩 페이지", "히어로", "히어로 섹션", "가격 페이지", "플랜 비교", "이메일 템플릿",
|
|
389
|
+
"CTA", "전환율",
|
|
390
|
+
"landing page", "pricing page", "hero section", "email template", "campaign page",
|
|
307
391
|
],
|
|
308
392
|
},
|
|
309
393
|
];
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
# Dogfood findings — dashboard/data-screen class (Phase 766)
|
|
2
|
+
|
|
3
|
+
Second dogfood pass, run immediately after the v4.62.0 dogfood-loop release to (a) verify the v4.62 fixes hold on fresh briefs and (b) probe a different task class. Method identical to [DOGFOOD-SDK-FINDINGS.md](DOGFOOD-SDK-FINDINGS.md): the full SDK flow (`route` → `pack --withRecall` → author → `check` → `learn.captureFromCheck`, temp-profile isolated), preceded by a cheap three-brief routing/recall probe to pick the weakest class.
|
|
4
|
+
|
|
5
|
+
**Probe briefs** (three distinct classes): 정산 대시보드 (settlement dashboard), B2B 온보딩 위저드 (onboarding wizard), 빈 상태·에러 상태 설계 (empty/error states). The settlement dashboard scored worst and became the full run's brief.
|
|
6
|
+
|
|
7
|
+
## v4.62 regression evidence (all three fixes verified live)
|
|
8
|
+
|
|
9
|
+
- **`flow-design` route works**: the onboarding-wizard probe routed to `flow-design` (was impossible before v4.62). Confidence was only `[low] score=1` — see G-2.
|
|
10
|
+
- **Recall purity holds**: every probe's recall selections were 100% design corpus (`knowledge/`, `examples/`) — zero `docs/` entries, where the round-1 probes had repo-meta docs at #1.
|
|
11
|
+
- **`pack` byte-budget guarantee holds**: the 60,000-byte pack used 59,998 bytes — the character-boundary trim landing 2 bytes under budget instead of the pre-fix "fill exactly and sometimes overflow".
|
|
12
|
+
|
|
13
|
+
## The full run (settlement dashboard)
|
|
14
|
+
|
|
15
|
+
**Brief**: 커머스 셀러용 정산 대시보드 설계 — 일별 매출·수수료·정산 예정 금액 표, 기간 필터, 엑셀 내보내기, 미정산 알림.
|
|
16
|
+
|
|
17
|
+
- `route()`: `[low] design-from-brief score=0, matched=[]` — **zero keyword hits**, pure fallback. Worse than round 1's report/block brief (score=1).
|
|
18
|
+
- `pack()`: the fallback route curates design-system skills (`color-palette`, `design-system-builder`) and foundation knowledge; `dashboard-composition.md` reached the pack only through the recall block, and `money-and-amount.md` / `korean-density-conventions.md` not at all — despite `relatedKnowledge` correctly surfacing dashboard-composition (27) and money-and-amount (13). The knowledge exists; no route curates it.
|
|
19
|
+
- `check(artifact, { routeId: "design-from-brief" })`: `warn 9/10`, the single warn again being `route-design-from-brief-design-system-foundation` — the same route-mismatch fingerprint as round 1, on a different class.
|
|
20
|
+
- `learn.captureFromCheck`: `added 1, skipped 0` into the temp profile; real profile untouched.
|
|
21
|
+
|
|
22
|
+
## Findings
|
|
23
|
+
|
|
24
|
+
### G-1. Route-table gap: data-dense screen briefs (dashboard/admin/back-office) have no route
|
|
25
|
+
|
|
26
|
+
The dashboard class — 정산·매출·지표·어드민·백오피스 screens, arguably the single most common Korean B2B design task — falls through with **zero** keyword matches, landing on design-system scaffolding skills. The curated knowledge for this class already exists and is strong: `patterns/dashboard-composition.md`, `patterns/money-and-amount.md`, `i18n/korean-density-conventions.md`, `patterns/list-and-feed.md`, plus layout/typography foundations.
|
|
27
|
+
|
|
28
|
+
**Proposed fix**: a `dashboard-design` route (`command: null`, like `flow-design`): keywords 대시보드, 정산, 매출 화면, 지표, KPI, 어드민, 백오피스, 데이터 테이블, dashboard, admin, back-office, analytics, KPI, data table; curated knowledge as above; check requirements suited to data screens (금액/단위 표기 evidence, 테이블 접근성, 밀도/반응형 강등 전략); a worked example adapted from this run's artifact (example-qa gate).
|
|
29
|
+
|
|
30
|
+
_Done (2026-07-06): `dashboard-design` route added to `cli/lib/route.mjs` (`command: null`, mirroring `flow-design`/`handoff-spec`), with skills `design-critique` + `handoff-spec`, agent `a11y-reviewer`, and curated knowledge `dashboard-composition.md`, `money-and-amount.md`, `korean-density-conventions.md`, `list-and-feed.md`, `spacing-and-grid.md`, `type-scale-fundamentals.md`. Keywords: 대시보드, 정산, 매출 화면, 지표, 어드민, 백오피스, 데이터 테이블, 정산 내역, KPI, dashboard, admin panel, back-office, back office, analytics screen, data table — compound where a bare term would hijack another route (`테이블` bare stays owned by `component-spec`; `데이터` bare is never used alone). Re-ran the dogfood brief: `route()` now returns `[medium] dashboard-design score=2` (matched `대시보드`, `정산`) — up from the prior `[low] design-from-brief score=0, matched=[]` zero-hit fallback. Added `ROUTE_REQUIREMENTS["dashboard-design"]` to `cli/lib/check.mjs` (money/number-format evidence, table accessibility incl. `aria-sort`, density/responsive degradation — bilingual patterns mirroring house style); checking the dogfooded settlement artifact directly against `--route dashboard-design` scores `pass 12/12` (all 9 base checks plus all 3 new route-specific requirements). Added `examples/dashboard-design-settlement.md`, an expanded version of the dogfooded artifact (explicit `<caption>`/`scope="col"`/`aria-sort` table markup, 4.5:1 contrast ratio, export-failure and empty-result edge cases) that satisfies every example-qa bar (12/12) and is the top-ranked example for the route (canonical-boosted score 42 vs. next-best 24). Wired into `cli/lib/examples.mjs` (`ROUTE_EXAMPLE_QUERIES` + `CANONICAL_ROUTE_EXAMPLES`) and `examples/README.md`. Appended `dashboard-design` to the `EXPECTED_ROUTE_CATALOG_IDS` tuple in `tools/audit/smoke_assertions.py` (shared by `package-smoke.py` and `registry-smoke.py`) and bumped both README example-count badges (222 → 223, matching `check-coverage.py`'s top-level-only `examples/*.md` count). `knowledge/COVERAGE.md` was left to its normal regeneration via `tools/audit/check-coverage.py`, matching the F-1 precedent. `example-qa` now reports `21/21 routes and 21/21 examples pass` (was 20/20)._
|
|
31
|
+
|
|
32
|
+
### G-2. `flow-design` keyword gaps: Korean wizard/step vocabulary missing
|
|
33
|
+
|
|
34
|
+
The onboarding-wizard probe — unambiguously a flow brief — matched only `온보딩` (`score=1 [low]`). 위저드, 단계(별), 이어하기 and similar step-flow Korean vocabulary are absent from the v4.62 keyword set (English `wizard`/`stepper` made it in; the Korean forms didn't).
|
|
35
|
+
|
|
36
|
+
**Proposed fix**: additive keywords on `flow-design` (위저드, 단계별 플로우, 스텝, 이어하기, 팀 초대 …), gated by the route eval checkpoint and the round-1 brief still scoring `[high]`.
|
|
37
|
+
|
|
38
|
+
_Done (2026-07-06): added 위저드, 단계별 플로우, 스텝, 이어하기 to `flow-design`'s keyword list in `cli/lib/route.mjs` (additive; existing `wizard`/`stepper` English forms kept as-is). Checked all other routes' keyword lists for collisions first — no hits. Re-ran the onboarding-wizard probe brief: `route()` now returns `[medium] flow-design score=3` (matched `온보딩`, `위저드`, `이어하기`) — up from the prior `[low] flow-design score=1` (matched `온보딩` only). Gate held: the round-1 report/block brief still scores `[high] flow-design score=4` (matched `플로우`, `신고`, `차단`, `처리 상태`), unchanged. Route eval checkpoint (`--eval --strict`, 6 cases) stays `pass 6/6`._
|
|
39
|
+
|
|
40
|
+
### G-3. Reverse hijack: `빈 상태` belongs to the illustration route, so states-design briefs misroute
|
|
41
|
+
|
|
42
|
+
The empty/error-states probe routed `[low] illustration score=1` via `빈 상태` (an empty-state-*illustration* keyword), tied with `palette-from-brand`. But a 빈 상태·에러 상태 *design* brief is a screen-states task — `flow-design`'s check requirements (states, edge/error paths) and its curated `error-states.md` are the right home; illustration is only right when the brief actually asks for artwork.
|
|
43
|
+
|
|
44
|
+
**Proposed fix**: add compound state-design keywords to `flow-design` (에러 상태, 빈 상태 화면, 상태 설계, empty state, error state, 검색 결과 없음 …) so a states brief outscores illustration's single `빈 상태` hit, while an actual illustration brief (빈 상태 일러스트, 마스코트 …) keeps matching illustration harder. Verify both directions in the route eval.
|
|
45
|
+
|
|
46
|
+
_Done (2026-07-06): added 에러 상태, 빈 상태 화면, 상태 설계, 검색 결과 없음, empty state, error state to `flow-design`'s keyword list in `cli/lib/route.mjs`, all compound (never bare `상태`/`에러`/`빈`) so `illustration`'s bare `빈 상태`/`empty state` keywords are left untouched. Verified both directions: the states-design probe brief now routes `[medium] flow-design score=3` (matched `에러 상태`, `상태 설계`, `검색 결과 없음`) ahead of `[low] illustration score=1` (matched `빈 상태` only) — up from the prior `[low] illustration score=1` top result. The control brief (an actual illustration request, "서비스 빈 상태 일러스트와 마스코트 캐릭터 디자인") still routes `[high] illustration score=4` (matched `일러스트`, `마스코트`, `캐릭터`, `빈 상태`), unchanged. Route eval checkpoint stays `pass 6/6`._
|
|
47
|
+
|
|
48
|
+
## Verdict
|
|
49
|
+
|
|
50
|
+
- **v4.62 loop fixes: all holding on fresh briefs** — the loop's second turn is regression evidence for the first.
|
|
51
|
+
- **Backlog (evidence-backed)**: G-1 `dashboard-design` route (route + check reqs + example) → G-2/G-3 `flow-design` keyword expansion (small, eval-gated, both directions).
|
|
52
|
+
- The two-round pattern converges: each round's misroute lands on `design-from-brief` with the same check-warn fingerprint — route-table coverage, not check logic, is the recurring gap class.
|
package/docs/ROADMAP.md
CHANGED
|
@@ -1,5 +1,78 @@
|
|
|
1
1
|
# Roadmap
|
|
2
2
|
|
|
3
|
+
## Phase 769 — Route Coverage Sweep Release (v4.64.0) ✓ ready
|
|
4
|
+
|
|
5
|
+
Ships the Phase 768 route-coverage sweep as an npm version: the `marketing-page` route with its worked example, the `dashboard-design` chart/permissions enrichment, and the `flow-design` nine-class keyword batch — 18/18 probed task classes now land on target routes at medium+ confidence. Additive and backward-compatible.
|
|
6
|
+
|
|
7
|
+
### Verified
|
|
8
|
+
- All 8 audits passed.
|
|
9
|
+
- `npm run release:check` (unit tests, strict audits, whitespace, package contents, release metadata, release self-tests, packed-tarball smoke).
|
|
10
|
+
- `npm run release:metadata`.
|
|
11
|
+
- `git diff --check`.
|
|
12
|
+
- Route eval 6/6; example-qa 22/22 routes; 18-class before/after probe in [ROUTE-COVERAGE-SWEEP.md](ROUTE-COVERAGE-SWEEP.md).
|
|
13
|
+
- Main-branch GitHub Actions (`Design-AI audit`, `Deploy doc site`) passed for the constituent commits.
|
|
14
|
+
|
|
15
|
+
### Versions
|
|
16
|
+
- `package.json` + `.claude-plugin/plugin.json`: 4.63.0 → 4.64.0.
|
|
17
|
+
- `vscode-extension/package.json`: remains 0.4.1.
|
|
18
|
+
|
|
19
|
+
### What this enables
|
|
20
|
+
- npm users get route coverage across the common product-design task space: marketing surfaces, data screens, and interaction flows all reach purpose-matched curation and checks instead of the design-system fallback.
|
|
21
|
+
|
|
22
|
+
### What's still ahead
|
|
23
|
+
- A future dogfood on browse/IA briefs to decide whether search/navigation deserve a dedicated route beyond flow-design keywords.
|
|
24
|
+
- Next planning window per [NEXT-SURFACE-DECISION.md](NEXT-SURFACE-DECISION.md).
|
|
25
|
+
|
|
26
|
+
## Phase 768 — Route coverage sweep (implemented, unreleased)
|
|
27
|
+
|
|
28
|
+
Generalizes the two dogfood rounds' converged finding (route-table coverage is the recurring gap class) into one systematic batch: 18 common task classes probed through `route()`, 13 found low/misrouted/zero-match, all fixed at once. Full sweep tables and fix evidence in [ROUTE-COVERAGE-SWEEP.md](ROUTE-COVERAGE-SWEEP.md).
|
|
29
|
+
|
|
30
|
+
### Delivered
|
|
31
|
+
- [x] 18-class sweep probe at v4.63.0: 13 gaps, with the defining pattern that the knowledge corpus already covered nearly every weak class (pricing-page had dedicated knowledge yet scored 0) — the route table simply didn't connect briefs to it.
|
|
32
|
+
- [x] New `marketing-page` route (`command: null`) consolidating landing/pricing/email-template: five dedicated knowledge files curated, conversion/hierarchy/responsive-email check requirements, `examples/marketing-page-saas-landing.md` at example-qa 12/12 (routes now 22/22).
|
|
33
|
+
- [x] `dashboard-design` enrichment: chart/data-viz and permissions/role keywords (incl. bare `권한` for middle-dot forms like "권한·역할 관리") + `chart-types`, `chart-color-encoding`, `realtime-data` knowledge — data-viz and rbac-admin move from score 0 to medium.
|
|
34
|
+
- [x] `flow-design` keyword batch for nine interaction classes (checkout, notifications, account, file-upload, collaboration, product-tour, search-filter, navigation, long-form incl. 임시저장/유효성 검증 tie-breakers) — keywords only; browse/IA knowledge reaches briefs via recall, with a dedicated route noted as the follow-up if dogfood shows curation mismatch.
|
|
35
|
+
- [x] Post-fix probe: 18/18 classes land on target routes at medium+ where vocabulary allows; the previously-correct classes unchanged; no keyword hijacks (programmatically verified against every route's keyword set); route eval 6/6; both dogfood briefs keep their routes.
|
|
36
|
+
|
|
37
|
+
### Remaining
|
|
38
|
+
- [ ] Release: bundle into the next npm version.
|
|
39
|
+
|
|
40
|
+
## Phase 767 — Dogfood Round 2 Release (v4.63.0) ✓ ready
|
|
41
|
+
|
|
42
|
+
Ships the dogfood loop's second turn (Phase 766) as an npm version: the `dashboard-design` route with data-screen check requirements and the settlement worked example, plus the `flow-design` Korean step-flow and states-design keyword depth verified in both directions. Additive and backward-compatible; route eval 6/6 and representative-brief routing unchanged.
|
|
43
|
+
|
|
44
|
+
### Verified
|
|
45
|
+
- All 8 audits passed.
|
|
46
|
+
- `npm run release:check` (unit tests, strict audits, whitespace, package contents, release metadata, release self-tests, packed-tarball smoke).
|
|
47
|
+
- `npm run release:metadata`.
|
|
48
|
+
- `git diff --check`.
|
|
49
|
+
- Route eval checkpoint 6/6; example-qa 21/21 routes; both-direction routing evidence for the states/illustration boundary.
|
|
50
|
+
- Main-branch GitHub Actions (`Design-AI audit`, `Deploy doc site`) passed for the constituent commits.
|
|
51
|
+
|
|
52
|
+
### Versions
|
|
53
|
+
- `package.json` + `.claude-plugin/plugin.json`: 4.62.0 → 4.63.0.
|
|
54
|
+
- `vscode-extension/package.json`: remains 0.4.1.
|
|
55
|
+
|
|
56
|
+
### What this enables
|
|
57
|
+
- npm users get route coverage for the dashboard/admin/back-office class with purpose-built checks, and flow-design matches the Korean vocabulary users actually write — with the second dogfood turn doubling as live regression evidence for the v4.62.0 loop fixes.
|
|
58
|
+
|
|
59
|
+
### What's still ahead
|
|
60
|
+
- Dogfood round 3 on remaining unprobed classes, or the next planning window per [NEXT-SURFACE-DECISION.md](NEXT-SURFACE-DECISION.md).
|
|
61
|
+
|
|
62
|
+
## Phase 766 — Dogfood round 2: dashboard class (implemented, unreleased)
|
|
63
|
+
|
|
64
|
+
Second turn of the dogfood loop, run immediately after v4.62.0 to verify the first round's fixes and probe a new task class. Findings and evidence in [DOGFOOD-DASHBOARD-FINDINGS.md](DOGFOOD-DASHBOARD-FINDINGS.md).
|
|
65
|
+
|
|
66
|
+
### Delivered
|
|
67
|
+
- [x] v4.62 regression evidence on fresh briefs: `flow-design` receives flow briefs, recall selections are 100% design corpus (zero `docs/`), and `pack` trims to the character boundary (59,998/60,000).
|
|
68
|
+
- [x] Three-brief probe → full run on the weakest (정산 대시보드, `score=0` total fallback): same route-mismatch check fingerprint as round 1, confirming route-table coverage as the recurring gap class.
|
|
69
|
+
- [x] G-1 `dashboard-design` route (`command: null`): 대시보드/어드민/백오피스 keywords (compound where a bare term would hijack), curated data-screen knowledge (dashboard-composition, money-and-amount, korean-density-conventions, list-and-feed + foundations), check requirements (money formatting, table accessibility, density/responsive degradation), and `examples/dashboard-design-settlement.md` at example-qa 12/12 (routes now 21/21). Settlement brief: `[low] design-from-brief score=0` → `[medium] dashboard-design score=2`.
|
|
70
|
+
- [x] G-2 `flow-design` Korean step vocabulary (위저드, 단계별 플로우, 스텝, 이어하기): onboarding-wizard brief `[low] 1` → `[medium] 3`; round-1 brief stays `[high]`.
|
|
71
|
+
- [x] G-3 states-design compound keywords on `flow-design` (에러 상태, 빈 상태 화면, 상태 설계, 검색 결과 없음, …), verified in both directions: states brief now `flow-design [medium] 3` above `illustration [low] 1`, while a real illustration brief stays `illustration [high] 4`.
|
|
72
|
+
|
|
73
|
+
### Remaining
|
|
74
|
+
- [ ] Release: bundle into the next npm version.
|
|
75
|
+
|
|
3
76
|
## Phase 765 — Dogfood Loop Release (v4.62.0) ✓ ready
|
|
4
77
|
|
|
5
78
|
Ships the whole Phase 764 dogfood cycle as one npm version: the `flow-design` route (F-1), the trust & safety corpus file and worked example (F-3), the principled recall exclusion of `docs/` (F-2/F-2b), the `pack` UTF-8 byte-budget fix the walkthrough guard caught, and the Agent SDK walkthrough itself (en/ko).
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
# Route coverage sweep (Phase 768)
|
|
2
|
+
|
|
3
|
+
Two dogfood rounds converged on one recurring gap class: route-table coverage ([DOGFOOD-SDK-FINDINGS.md](DOGFOOD-SDK-FINDINGS.md), [DOGFOOD-DASHBOARD-FINDINGS.md](DOGFOOD-DASHBOARD-FINDINGS.md)). Instead of a third one-class round, this sweep enumerates 18 common product-design task classes, probes them all through `route()` in one batch, and fixes every gap at once.
|
|
4
|
+
|
|
5
|
+
## Sweep results (2026-07-07, at v4.63.0)
|
|
6
|
+
|
|
7
|
+
| Class | Routed to | Verdict |
|
|
8
|
+
|---|---|---|
|
|
9
|
+
| settings, a11y-audit, dark-mode, brand-identity | flow-design / design-review / design-from-brief / palette-from-brand, all `[medium]` | ✅ correct |
|
|
10
|
+
| long-form (다단계 보험 가입 폼) | component-spec `[medium] 2` | ⚠️ marginal — a multi-step form flow fits flow-design better than a component spec |
|
|
11
|
+
| checkout | design-from-brief `[low] 1` (flow-design 2nd at 1) | ❌ `체크아웃` not in any keyword set (`결제 플로우` doesn't substring-match "결제 체크아웃 플로우") |
|
|
12
|
+
| notifications | flow-design `[low] 1` | ⚠️ right route, weak match (알림 센터 vocabulary missing) |
|
|
13
|
+
| account | design-from-brief `[low] 1` | ❌ 계정 관리/프로필 수정/회원 탈퇴 unmatched |
|
|
14
|
+
| file-upload | design-review `[low] 1` | ❌ 업로드/드래그 앤 드롭 unmatched |
|
|
15
|
+
| collaboration | design-review `[low] 1` | ❌ 댓글/멘션/공유 권한 unmatched |
|
|
16
|
+
| product-tour | flow-design `[low] 1` | ⚠️ right route, weak (코치마크/투어 missing) |
|
|
17
|
+
| search-filter | design-review `[low] 1` | ❌ 필터/정렬/패싯 unmatched — despite `search-ux.md`, `list-and-feed.md` existing |
|
|
18
|
+
| navigation | design-from-brief `[low] 1` | ❌ 내비게이션/하단 탭 unmatched — despite `mobile-navigation.md`, `information-architecture.md` existing |
|
|
19
|
+
| data-viz | design-from-brief `[low] 0` | ❌ zero match — despite `chart-types.md`, `chart-color-encoding.md`, `realtime-data.md` existing |
|
|
20
|
+
| rbac-admin | design-from-brief `[low] 0` | ❌ zero match — admin-permissions class |
|
|
21
|
+
| landing | handoff-spec `[low] 1` (via `개발자`!) | ❌ misroute — despite `landing-hero-design.md`, `landing-page-patterns.md` existing |
|
|
22
|
+
| pricing-page | design-from-brief `[low] 0` | ❌ zero match — despite `pricing-page-design.md` existing |
|
|
23
|
+
| email-template | palette-from-brand `[low] 1` (via `다크모드`) | ❌ misroute — despite `email-design.md` existing |
|
|
24
|
+
|
|
25
|
+
Pattern: the knowledge corpus already covers nearly every weak class — the route table simply doesn't connect briefs to it. 13 of 18 classes were low/misrouted/zero-match.
|
|
26
|
+
|
|
27
|
+
## Fix plan (one batch)
|
|
28
|
+
|
|
29
|
+
1. **New route `marketing-page`** — consolidates three zero/misrouted classes (landing, pricing-page, email-template) that share a marketing-surface character and have five dedicated knowledge files (`landing-hero-design`, `landing-page-patterns`, `pricing-page-design`, `email-design`, `brand-identity`). Keywords: 랜딩 페이지, 히어로, 가격 페이지, 플랜 비교, 이메일 템플릿, CTA + English forms. Check requirements: conversion/CTA evidence, visual-hierarchy evidence, responsive/email-client behavior. Worked example required (example-qa).
|
|
30
|
+
- _Done (2026-07-07): added `marketing-page` route in `cli/lib/route.mjs` (command: null, `skills/design-critique`, `skills/handoff-spec`, `agents/a11y-reviewer`, `agents/design-critic`, the five curated knowledge files above), `ROUTE_REQUIREMENTS["marketing-page"]` in `cli/lib/check.mjs` (conversion/CTA, visual-hierarchy/fold, responsive/email-client), worked example `examples/marketing-page-saas-landing.md` (12/12 on `check --route marketing-page`), wired into `cli/lib/examples.mjs` (`ROUTE_EXAMPLE_QUERIES` + `CANONICAL_ROUTE_EXAMPLES`) and `examples/README.md`. `tools/audit/smoke_assertions.py` `EXPECTED_ROUTE_CATALOG_IDS` += `marketing-page`. README/README.ko examples badge 223 → 224._
|
|
31
|
+
2. **`dashboard-design` enrichment** — data-viz and rbac-admin are data-screen/admin classes: add 차트, 데이터 시각화, 시계열, 범례, 권한 관리, 역할 관리 (+ English) keywords, and add `chart-types.md`, `chart-color-encoding.md`, `realtime-data.md` to the curated knowledge.
|
|
32
|
+
- _Done (2026-07-07): keywords added in `cli/lib/route.mjs` (plus bare `권한`, needed because the rbac-admin brief uses a middle-dot form "권한·역할 관리" that the space-separated compound `권한 관리` doesn't substring-match). The three knowledge files were added to `dashboard-design.knowledge`._
|
|
33
|
+
3. **`flow-design` keyword batch** — nine interaction classes (checkout, notifications, account, file-upload, collaboration, product-tour, search-filter, navigation, long-form): 체크아웃, 알림 센터, 계정 관리, 프로필 수정, 회원 탈퇴, 업로드, 드래그 앤 드롭, 댓글, 멘션, 공유 권한, 코치마크, 투어, 필터, 정렬, 무한 스크롤, 내비게이션, 하단 탭, 다단계 (+ English). Keywords only — the curated knowledge list stays at its current size; `search-ux`/`mobile-navigation`/`information-architecture`/`settings-page` reach these briefs through recall. If a future dogfood shows curation mismatch for browse/IA briefs, a dedicated route is the follow-up.
|
|
34
|
+
- _Done (2026-07-07): all listed keywords added to `flow-design.keywords` in `cli/lib/route.mjs`, verified collision-free against every other route's keyword set. Two extra keywords beyond the plan's literal list were needed to actually tip the long-form class over to flow-design (see Post-fix probe note below): `임시저장` and `유효성 검증`, both collision-free._
|
|
35
|
+
|
|
36
|
+
Regression gates: route eval checkpoint stays all-pass; the well-routed five stay put; both prior dogfood briefs keep their routes/confidence; every existing route's representative brief unchanged; all 18 sweep briefs re-probed with the target outcomes recorded below.
|
|
37
|
+
|
|
38
|
+
## Post-fix probe
|
|
39
|
+
|
|
40
|
+
Re-probed with the same 18 briefs via `sweep.mjs` after the fix batch above landed:
|
|
41
|
+
|
|
42
|
+
| Class | Routed to | Outcome |
|
|
43
|
+
|---|---|---|
|
|
44
|
+
| search-filter | flow-design `[medium] 3` (필터, 정렬, 무한 스크롤) | ✅ fixed — was design-review `[low] 1` |
|
|
45
|
+
| checkout | flow-design `[medium] 2` (플로우, 체크아웃) | ✅ fixed — was design-from-brief `[low] 1` |
|
|
46
|
+
| settings | flow-design `[medium] 2` (설정 화면, 알림 설정) | ✅ unchanged (already correct pre-fix) |
|
|
47
|
+
| landing | marketing-page `[medium] 3` (랜딩 페이지, 히어로, CTA) | ✅ fixed — was handoff-spec `[low] 1` misroute |
|
|
48
|
+
| long-form | flow-design `[medium] 3` (다단계, 임시저장, 유효성 검증) | ✅ fixed (intended move) — was component-spec `[medium] 2` |
|
|
49
|
+
| notifications | flow-design `[medium] 2` (알림 설정, 알림 센터) | ✅ fixed — was flow-design `[low] 1` (weak match) |
|
|
50
|
+
| account | flow-design `[medium] 3` (계정 관리, 프로필 수정, 회원 탈퇴) | ✅ fixed — was design-from-brief `[low] 1` |
|
|
51
|
+
| data-viz | dashboard-design `[medium] 3` (차트, 시계열, 범례) | ✅ fixed — was design-from-brief `[low] 0` (zero match) |
|
|
52
|
+
| navigation | flow-design `[medium] 2` (내비게이션, 하단 탭) | ✅ fixed — was design-from-brief `[low] 1` |
|
|
53
|
+
| rbac-admin | dashboard-design `[medium] 2` (역할 관리, 권한) | ✅ fixed — was design-from-brief `[low] 0` (zero match) |
|
|
54
|
+
| file-upload | flow-design `[medium] 2` (업로드, 드래그 앤 드롭) | ✅ fixed — was design-review `[low] 1` |
|
|
55
|
+
| collaboration | flow-design `[medium] 3` (댓글, 멘션, 공유 권한) | ✅ fixed — was design-review `[low] 1` |
|
|
56
|
+
| pricing-page | marketing-page `[medium] 2` (가격 페이지, 플랜 비교) | ✅ fixed — was design-from-brief `[low] 0` (zero match) |
|
|
57
|
+
| email-template | marketing-page `[medium] 2` (이메일 템플릿, CTA) | ✅ fixed — was palette-from-brand `[low] 1` misroute |
|
|
58
|
+
| a11y-audit | design-review `[medium] 2` (감사, 접근성) | ✅ unchanged (already correct pre-fix) |
|
|
59
|
+
| dark-mode | design-from-brief `[medium] 2` (디자인 시스템, 토큰) | ✅ unchanged (already correct pre-fix) |
|
|
60
|
+
| brand-identity | palette-from-brand `[medium] 2` (컬러, 팔레트) | ✅ unchanged (already correct pre-fix) |
|
|
61
|
+
| product-tour | flow-design `[medium] 3` (온보딩, 코치마크, 투어) | ✅ fixed — was flow-design `[low] 1` (weak match) |
|
|
62
|
+
|
|
63
|
+
All 18 classes land on their target route at medium+ confidence. Zero regressions on the five previously-✅ classes. `long-form` completed its intended move from `component-spec` to `flow-design`.
|
|
64
|
+
|
|
65
|
+
Regression gates re-run after the fix, all green: route eval checkpoint (`--eval --strict`, 6/6 pass); both dogfood briefs (report/block → flow-design `[high] 4`; settlement → dashboard-design `[medium] 2`); representative briefs for design-system, component, palette, website, motion, illustration all unchanged; `npm test` (586/586); `npm run audit` (8/8, example-qa 22/22 routes and 22/22 examples); `npm run release:metadata`; `npm run package:smoke`; `npm run registry:smoke:self-test`; `npm run ci:local`.
|
package/docs/external-status.md
CHANGED
|
@@ -1,29 +1,29 @@
|
|
|
1
1
|
# External Publication Status
|
|
2
2
|
|
|
3
|
-
> Checked: 2026-07-
|
|
3
|
+
> Checked: 2026-07-07
|
|
4
4
|
> Scope: npm registry, GitHub Pages, Homebrew tap, VS Code Marketplace, Claude/Codex MCP
|
|
5
5
|
|
|
6
6
|
## Summary
|
|
7
7
|
|
|
8
|
-
npm is publicly published at `@design-ai/cli@4.
|
|
8
|
+
npm is publicly published at `@design-ai/cli@4.63.0` (npm dist-tag `latest` = `4.63.0`); publish run from tag `v4.63.0` succeeded with provenance and all pre-publish gates green. This release ships the dogfood loop's second turn: the `dashboard-design` route (data-dense screen class with money-format/table-a11y/density check requirements) with its settlement worked example, and `flow-design` keyword depth (Korean step-flow vocabulary + states-design compounds, verified in both directions against the illustration route). The live `npm run registry:smoke` passes cleanly against published `@design-ai/cli@4.63.0` ("Registry smoke passed"), covering the retrieval surfaces (index/ranked/embeddings/recall) and route enrichment. GitHub Release `v4.63.0` is published, and the Homebrew tap formula points at the `v4.63.0` release source tarball with a verified SHA-256. The VS Code extension `sungjin.design-ai-vscode` remains published at `0.4.1`. GitHub Pages docs are publicly reachable.
|
|
9
9
|
|
|
10
10
|
## Results
|
|
11
11
|
|
|
12
12
|
| Surface | Checked target | Result | Evidence |
|
|
13
13
|
|---|---|---|---|
|
|
14
|
-
| npm registry | `@design-ai/cli` | Published latest is `4.
|
|
14
|
+
| npm registry | `@design-ai/cli` | Published latest is `4.63.0` (tag `v4.63.0`, provenance). Pre-publish packed-tarball smoke (incl. SDK import + `learn.remember` write) and live `npm run registry:smoke` both pass for `@design-ai/cli@4.63.0`. | `npm view @design-ai/cli version` → `4.63.0`; live registry smoke "Registry smoke passed" |
|
|
15
15
|
| GitHub Pages | `https://sungjin9288.github.io/design-ai/` | Published and reachable: HTTP `200`, design-ai MkDocs page rendered | `evidence/cli-logs/github-pages-status.log` |
|
|
16
|
-
| Homebrew tap | `Formula/design-ai.rb` | Formula pinned to `v4.
|
|
16
|
+
| Homebrew tap | `Formula/design-ai.rb` | Formula pinned to `v4.63.0` release source tarball with SHA-256 `024a720cfe1a18a1b77751232818f01d9a2826fac4772865b889bd3d91ce1ae8` (recomputed from the published tag tarball) | `Formula/design-ai.rb` |
|
|
17
17
|
| VS Code Marketplace | `sungjin.design-ai-vscode` | Published: run `28431571256` published `v0.4.1`, and the Marketplace Gallery API returned visible version `0.4.1` on 2026-07-02. | `evidence/cli-logs/vscode-marketplace-status.log`, `evidence/cli-logs/vscode-marketplace-secret-status.log`, `evidence/cli-logs/vscode-extension-vsce-package.log`, `evidence/cli-logs/vscode-publish-workflow-status.log` |
|
|
18
|
-
| GitHub Release | `v4.
|
|
19
|
-
| MCP server | `@design-ai/cli@4.
|
|
18
|
+
| GitHub Release | `v4.63.0` | Published for tag `v4.63.0` at commit `d6ce680` | `gh release view v4.63.0` |
|
|
19
|
+
| MCP server | `@design-ai/cli@4.63.0` / local clone | Public npm `design-ai-mcp` responds to initialize and tools/list with 10 tools; local Codex and Claude Code both report `design-ai` MCP as configured and connected. | `evidence/cli-logs/npm-registry-smoke.log`, `evidence/cli-logs/design-ai-mcp-client-status.log` |
|
|
20
20
|
|
|
21
21
|
## Interpretation
|
|
22
22
|
|
|
23
23
|
- The repository is locally release-ready based on `npm run release:check`.
|
|
24
24
|
- GitHub Pages docs can now be described as publicly deployed.
|
|
25
|
-
- Public npm install can now be described as published and smoke-tested at `4.
|
|
26
|
-
- Homebrew tap install can now be described as pinned to the `v4.
|
|
25
|
+
- Public npm install can now be described as published and smoke-tested at `4.63.0`.
|
|
26
|
+
- Homebrew tap install can now be described as pinned to the `v4.63.0` release tarball; full tap audit/install/test remains a maintainer-side verification step because this Homebrew version rejects path-based `brew audit Formula/...` calls.
|
|
27
27
|
- VS Code Marketplace can now be described as published and publicly reachable at version `0.4.1`.
|
|
28
28
|
- Claude Code and Codex can now be described as locally connected to the clone-backed `design-ai` MCP server, while public npm users can verify the published `design-ai-mcp` entrypoint from a clean working directory.
|
|
29
29
|
|
|
@@ -32,12 +32,12 @@ npm is publicly published at `@design-ai/cli@4.61.0` (npm dist-tag `latest` = `4
|
|
|
32
32
|
```bash
|
|
33
33
|
npm view @design-ai/cli version name time.modified dist-tags --json
|
|
34
34
|
curl -sS -L -o /tmp/design-ai-pages.html -w 'http_code=%{http_code}\nurl_effective=%{url_effective}\n' https://sungjin9288.github.io/design-ai/
|
|
35
|
-
curl -sL https://github.com/sungjin9288/design-ai/archive/refs/tags/v4.
|
|
35
|
+
curl -sL https://github.com/sungjin9288/design-ai/archive/refs/tags/v4.63.0.tar.gz | shasum -a 256
|
|
36
36
|
ruby -c Formula/design-ai.rb
|
|
37
37
|
brew style Formula/design-ai.rb
|
|
38
|
-
gh release view v4.
|
|
38
|
+
gh release view v4.63.0 --repo sungjin9288/design-ai --json tagName,isDraft,isPrerelease,publishedAt,name,url,assets
|
|
39
39
|
gh run view 28569283984 --repo sungjin9288/design-ai --json status,conclusion,name,url,createdAt,updatedAt
|
|
40
|
-
npm exec --yes --package=@design-ai/cli@4.
|
|
40
|
+
npm exec --yes --package=@design-ai/cli@4.63.0 -- design-ai-mcp
|
|
41
41
|
codex mcp get design-ai
|
|
42
42
|
claude mcp list
|
|
43
43
|
curl -sS -H 'Content-Type: application/json' \
|
package/examples/README.md
CHANGED
|
@@ -241,6 +241,18 @@ Worked outputs from each skill — what "good" looks like. Use as reference when
|
|
|
241
241
|
| --- | --- | --- |
|
|
242
242
|
| [flow-design-report-block.md](flow-design-report-block.md) | `ux-audit` / `design-critique` (`flow-design` route) | Report + block interaction flow. Entry points, step/state tables, edge/error paths, completion criteria, Korean 정보통신망법 제44조의2 임시조치 handling. |
|
|
243
243
|
|
|
244
|
+
### Dashboard / data screen specs
|
|
245
|
+
|
|
246
|
+
| File | Skill | Demonstrates |
|
|
247
|
+
| --- | --- | --- |
|
|
248
|
+
| [dashboard-design-settlement.md](dashboard-design-settlement.md) | `design-critique` / `handoff-spec` (`dashboard-design` route) | Seller settlement dashboard. KPI strip + table-first layout, Korean amount/number formatting, table accessibility (caption, header scope, aria-sort), density + responsive degradation, export/alert edge cases. |
|
|
249
|
+
|
|
250
|
+
### Marketing page & campaign surface specs
|
|
251
|
+
|
|
252
|
+
| File | Skill | Demonstrates |
|
|
253
|
+
| --- | --- | --- |
|
|
254
|
+
| [marketing-page-saas-landing.md](marketing-page-saas-landing.md) | `design-critique` / `handoff-spec` (`marketing-page` route) | Developer-tool SaaS landing page. Hero archetype selection, above-the-fold section sequencing, pricing plan comparison, Korean trust/CTA copy, email-client-safe responsive behavior. |
|
|
255
|
+
|
|
244
256
|
### End-to-end deliverables
|
|
245
257
|
|
|
246
258
|
| File | Skill | Demonstrates |
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
<!-- hand-written -->
|
|
2
|
+
# Worked example: seller settlement dashboard design
|
|
3
|
+
|
|
4
|
+
> Generated by the `dashboard-design` route (`skills/design-critique`, `skills/handoff-spec`). Demonstrates the canonical data-screen spec format — KPI strip + table-first layout, Korean amount/number conventions, table accessibility (caption, header scope, `aria-sort`), density and responsive degradation strategy, and export/alert edge cases. Adapted from the dogfood brief in [`docs/DOGFOOD-DASHBOARD-FINDINGS.md`](../docs/DOGFOOD-DASHBOARD-FINDINGS.md) (G-1).
|
|
5
|
+
|
|
6
|
+
**Brief**: 커머스 셀러용 정산 대시보드 설계 — 일별 매출·수수료·정산 예정 금액 표, 기간 필터, 엑셀 내보내기, 미정산 알림.
|
|
7
|
+
|
|
8
|
+
Cite [`knowledge/patterns/dashboard-composition.md`](../knowledge/patterns/dashboard-composition.md) (KPI strip + table-first layout for data-dense B2B screens), [`knowledge/patterns/money-and-amount.md`](../knowledge/patterns/money-and-amount.md) (Korean 원 formatting, tabular-nums, sign+color conventions), and [`knowledge/i18n/korean-density-conventions.md`](../knowledge/i18n/korean-density-conventions.md) (Korean B2B back-office density expectations) as the grounding for this spec.
|
|
9
|
+
|
|
10
|
+
---
|
|
11
|
+
|
|
12
|
+
```markdown
|
|
13
|
+
# 커머스 셀러 정산 대시보드 스펙
|
|
14
|
+
|
|
15
|
+
> 근거: knowledge/patterns/dashboard-composition.md, knowledge/patterns/money-and-amount.md,
|
|
16
|
+
> knowledge/i18n/korean-density-conventions.md, knowledge/patterns/list-and-feed.md,
|
|
17
|
+
> knowledge/layout/spacing-and-grid.md, knowledge/typography/type-scale-fundamentals.md, knowledge/PRINCIPLES.md
|
|
18
|
+
|
|
19
|
+
## 1. 정보 구조와 레이아웃
|
|
20
|
+
|
|
21
|
+
- 상단 KPI 스트립 4매: 오늘 매출, 이번 주 확정 수수료, 정산 예정 금액, 미정산 건수. 각 카드에 전기간 대비 증감(▲/▼ + 퍼센트, 색+기호 병행).
|
|
22
|
+
- 본문은 테이블 우선(한국 B2B 밀도 관례): 일별 정산 내역 테이블이 화면의 주인공. 카드 그리드로 풀지 않는다.
|
|
23
|
+
- 기간 필터는 테이블 헤더 위 고정: 프리셋(오늘/7일/이번 달/지난 정산 주기) + 커스텀 범위. 정산 주기 프리셋이 기본값.
|
|
24
|
+
|
|
25
|
+
## 2. 금액 표기
|
|
26
|
+
|
|
27
|
+
- 원화 표기: 1,234,567원 — 천 단위 콤마, 통화 기호 대신 '원' 접미. 마이너스(환불·차감)는 -금액 + 적색이 아닌 색+괄호 병행 표기.
|
|
28
|
+
- 테이블 금액 컬럼은 우측 정렬(right-aligned), 고정폭 숫자(tabular-nums)로 세로 스캔 정렬 보장. Amount 컬럼은 항상 number format이 일관되어야 한다.
|
|
29
|
+
- 수수료는 금액과 요율(%)을 병기하고, 정산 예정 금액 = 매출 − 수수료 − 차감의 산식을 툴팁으로 노출.
|
|
30
|
+
|
|
31
|
+
## 3. 테이블 구조와 동작
|
|
32
|
+
|
|
33
|
+
- 테이블에는 `<caption>정산 내역 (기간: 선택된 필터 범위)</caption>`을 명시하고, 각 column header는 `scope="col"`로 마크업한다.
|
|
34
|
+
- 컬럼: 날짜, 주문 수, 매출, 수수료, 차감, 정산 예정, 상태(확정/대기/보류). 상태는 색+텍스트 배지.
|
|
35
|
+
- 정렬은 날짜 기본 내림차순, 금액 컬럼 정렬 지원 — 정렬 가능한 컬럼 header에는 `aria-sort="ascending"|"descending"|"none"`을 반영해 현재 정렬 상태를 노출한다.
|
|
36
|
+
- 페이지네이션 50행, 밀도(density) 토글 제공(기본 촘촘/compact, 여유형 선택 가능).
|
|
37
|
+
- 행 클릭 → 일별 상세 드로어(주문 단위 분해). 드로어는 focus trap, Escape 닫기.
|
|
38
|
+
|
|
39
|
+
## 4. 엑셀 내보내기와 미정산 알림
|
|
40
|
+
|
|
41
|
+
- 내보내기는 현재 필터 범위를 그대로 반영, 파일명에 기간 포함(정산내역_2026-06-01_2026-06-30.xlsx). 생성 중 pending 상태(버튼 비활성+진행 라벨), 완료 토스트.
|
|
42
|
+
- 미정산 알림: 정산 예정일 초과 건은 KPI 카드와 테이블 행에 경고 배지, 알림 센터 푸시. 배지는 색+아이콘+텍스트.
|
|
43
|
+
- **엣지 케이스 — 내보내기 실패**: 생성 실패(네트워크 error) 시 인라인 에러 배너 + 재시도 버튼을 노출하고, 실패 사유를 요약 문구로 안내한다. 데이터 재요청 전까지 이전 필터 상태는 보존한다.
|
|
44
|
+
- **엣지 케이스 — 빈 결과**: 필터 범위에 데이터가 없으면 테이블 본문을 "해당 기간에 정산 내역이 없어요" 안내로 대체하고, 내보내기 버튼은 비활성화한다.
|
|
45
|
+
|
|
46
|
+
## 5. 접근성
|
|
47
|
+
|
|
48
|
+
- 테이블에 캡션과 컬럼 헤더 `scope`, 정렬 상태 `aria-sort`를 위 3장 기준대로 적용한다. 상태 배지는 색만으로 구분하지 않는다(색+텍스트+아이콘 병행).
|
|
49
|
+
- keyboard: 필터 프리셋은 Tab 순회 + Enter/Space로 선택, 테이블 행은 Enter로 드로어 열기, 드로어는 focus trap 유지 후 Escape로 닫힘(닫히면 트리거로 focus 복귀). 정렬 가능한 header도 Tab으로 도달 가능해야 한다.
|
|
50
|
+
- screen reader: KPI 증감은 `aria-label`에 방향 포함("전주 대비 12% 증가"), 내보내기 완료는 `aria-live="polite"`로 스크린 리더에 안내.
|
|
51
|
+
- 대비(contrast): 본문 텍스트와 금액 숫자는 최소 **4.5:1 contrast ratio** (WCAG AA) 확보. 밀도 높은 테이블일수록 이 기준을 더 엄격히 지키며, 행 hover 배경도 동일 대비를 유지한다. 경고 배지 텍스트도 동일 기준(4.5:1) 적용.
|
|
52
|
+
|
|
53
|
+
## 6. 반응형 동작
|
|
54
|
+
|
|
55
|
+
- Desktop 우선(셀러 백오피스, 1280px+). Tablet(768–1024px): KPI 2×2 그리드, 테이블은 가로 스크롤 + 고정 첫 컬럼(날짜)으로 강등한다.
|
|
56
|
+
- Mobile(360–430px): 테이블을 일자별 카드 리스트로 강등(demote)하되 금액은 우측 정렬을 유지하고, 내보내기 기능은 그대로 제공한다.
|
|
57
|
+
- breakpoint 전환 시 정렬/필터 상태는 유지되며 재요청하지 않는다.
|
|
58
|
+
|
|
59
|
+
## Don't
|
|
60
|
+
|
|
61
|
+
- Don't: KPI를 6개 이상 늘어놓지 않는다 — 정산 의사결정과 무관한 지표는 별도 리포트로 분리한다.
|
|
62
|
+
- Don't: 미확정 금액을 확정처럼 굵게 표기하지 않는다 — 상태별 시각 위계(확정>예정>보류)를 지킨다.
|
|
63
|
+
- Don't: 엑셀 내보내기를 전체 기간 기본값으로 걸지 않는다 — 대용량 생성 남용을 방지하기 위해 현재 필터 범위를 기본으로 한다.
|
|
64
|
+
- Avoid: 상태 배지를 색상만으로 구분하는 디자인 — 색각 이상 사용자에게 상태 정보가 사라진다.
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
---
|
|
68
|
+
|
|
69
|
+
## Why this is a good dashboard-design example
|
|
70
|
+
|
|
71
|
+
- **Amount/number-format evidence is explicit** — 원 표기, 천 단위 콤마, 우측 정렬, tabular-nums, number format 일관성, matching `route --check dashboard-design`'s money-format requirement.
|
|
72
|
+
- **Table accessibility is concrete** — `<caption>`, `scope="col"`, `aria-sort` on sortable headers, matching the table-a11y requirement.
|
|
73
|
+
- **Density and responsive degradation are explicit** — density/compact toggle plus a named `demote`/강등 strategy per breakpoint (tablet horizontal scroll + sticky column, mobile card-list demotion), matching the density-responsive requirement.
|
|
74
|
+
- **Grounding is load-bearing** — every section traces back to `dashboard-composition.md`, `money-and-amount.md`, or `korean-density-conventions.md`, cited in the header.
|
|
75
|
+
- **Accessibility is concrete beyond the table** — keyboard traversal, focus trap, `aria-live`, explicit 4.5:1 contrast ratio.
|
|
76
|
+
- **Edge cases are named** — export failure, empty result set — not just the happy path.
|
|
77
|
+
- **A Don't section closes the spec** — four concrete anti-patterns tied to rules stated earlier.
|
|
78
|
+
|
|
79
|
+
## Cross-reference
|
|
80
|
+
|
|
81
|
+
- [`knowledge/patterns/dashboard-composition.md`](../knowledge/patterns/dashboard-composition.md) — KPI strip + table-first layout pattern reference
|
|
82
|
+
- [`knowledge/patterns/money-and-amount.md`](../knowledge/patterns/money-and-amount.md) — Korean amount formatting and sign conventions
|
|
83
|
+
- [`knowledge/i18n/korean-density-conventions.md`](../knowledge/i18n/korean-density-conventions.md) — Korean B2B density expectations
|
|
84
|
+
- [`knowledge/patterns/list-and-feed.md`](../knowledge/patterns/list-and-feed.md) — table/list pagination and density patterns reused above
|
|
85
|
+
- [`knowledge/layout/spacing-and-grid.md`](../knowledge/layout/spacing-and-grid.md) — KPI grid and breakpoint layout foundations
|
|
86
|
+
- [`knowledge/typography/type-scale-fundamentals.md`](../knowledge/typography/type-scale-fundamentals.md) — numeric type scale for KPI hero values
|
|
87
|
+
- [`docs/DOGFOOD-DASHBOARD-FINDINGS.md`](../docs/DOGFOOD-DASHBOARD-FINDINGS.md) — the real dogfood run (G-1) this example is adapted from
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
<!-- hand-written -->
|
|
2
|
+
# Worked example: developer-tool SaaS landing page design
|
|
3
|
+
|
|
4
|
+
> Generated by the `marketing-page` route (`skills/design-critique`, `skills/handoff-spec`). Demonstrates the canonical marketing-surface spec format — hero archetype selection, section sequence with above-the-fold reasoning, pricing/plan comparison, testimonial trust elements, CTA copy strategy, and email-client-safe responsive behavior. Adapted from the sweep brief in [`docs/ROUTE-COVERAGE-SWEEP.md`](../docs/ROUTE-COVERAGE-SWEEP.md) (Phase 768, `landing` class).
|
|
5
|
+
|
|
6
|
+
**Brief**: 개발자 도구 SaaS 랜딩 페이지 설계 — 히어로, 기능 소개, 가격, 후기, CTA 배치.
|
|
7
|
+
|
|
8
|
+
Cite [`knowledge/patterns/landing-hero-design.md`](../knowledge/patterns/landing-hero-design.md) (hero archetype selection and 5-second comprehension test), [`knowledge/patterns/landing-page-patterns.md`](../knowledge/patterns/landing-page-patterns.md) (section sequencing and above-the-fold structure), [`knowledge/patterns/pricing-page-design.md`](../knowledge/patterns/pricing-page-design.md) (plan comparison and toggle patterns), [`knowledge/patterns/email-design.md`](../knowledge/patterns/email-design.md) (email-client-safe markup for the trial-confirmation follow-up), and [`knowledge/patterns/brand-identity.md`](../knowledge/patterns/brand-identity.md) (voice and color-token consistency across the surface) as the grounding for this spec.
|
|
9
|
+
|
|
10
|
+
---
|
|
11
|
+
|
|
12
|
+
```markdown
|
|
13
|
+
# 개발자 도구 SaaS 랜딩 페이지 스펙
|
|
14
|
+
|
|
15
|
+
> 근거: knowledge/patterns/landing-hero-design.md, knowledge/patterns/landing-page-patterns.md,
|
|
16
|
+
> knowledge/patterns/pricing-page-design.md, knowledge/patterns/email-design.md,
|
|
17
|
+
> knowledge/patterns/brand-identity.md, knowledge/PRINCIPLES.md
|
|
18
|
+
|
|
19
|
+
## 1. 히어로 섹션 (Above the fold)
|
|
20
|
+
|
|
21
|
+
- **아키타입 선택**: 텍스트 주도형(text-led) 히어로. 개발자 도구는 스크린샷보다 "무엇을, 왜, 어떻게"를 5초 안에 전달하는 문장이 전환에 더 크게 기여한다(시각 주도형은 별도 기능 섹션에서 다룬다).
|
|
22
|
+
- **헤드라인**: "배포 파이프라인, 코드 3줄로 끝내세요" — 문제(느린 배포)와 해결(3줄 설정)을 동시에 전달. 서브헤드라인은 대상 독자(백엔드 팀)를 명시.
|
|
23
|
+
- **CTA 배치**: Primary CTA "무료로 시작하기"(신용카드 불필요 명시) + Secondary "라이브 데모 보기". 위계: Primary는 브랜드 accent 색 + 굵은 버튼 문구, Secondary는 outline 스타일로 시각적 종속 관계를 명확히 한다.
|
|
24
|
+
- **스크롤 순서(위계)**: 히어로 → 신뢰 로고 스트립(사용 중인 기업 로고, 폴드 바로 아래) → 기능 3종 → 후기 → 가격 → 최종 CTA. 폴드 위(above the fold)에는 헤드라인·서브헤드·CTA·최소 1개 시각 자료만 배치하고 기능 나열은 폴드 아래로 미룬다.
|
|
25
|
+
- 히어로 시각 자료는 실제 터미널/대시보드 스크린샷 또는 코드 스니펫 애니메이션(자동재생 무음, 3초 루프)을 사용하고, 정적 이미지로도 동일 정보를 전달하는 대체 텍스트를 제공한다.
|
|
26
|
+
|
|
27
|
+
## 2. 기능 소개 섹션
|
|
28
|
+
|
|
29
|
+
- 3열 그리드(데스크톱), 각 카드: 아이콘 + 소제목(동사형, 예: "자동으로 롤백하세요") + 1문장 설명 + "더 알아보기" 텍스트 링크.
|
|
30
|
+
- 기능 카드의 시각 위계는 아이콘 > 소제목 > 설명 순으로, 소제목이 헤드라인보다 한 단계 작은 타이포 스케일을 사용해 히어로와의 종속 관계를 유지한다.
|
|
31
|
+
- 각 기능 카드는 실제 제품 스크린샷을 근거로 하며, 추상 일러스트로 대체하지 않는다(개발자 대상 제품은 실물 UI가 신뢰를 만든다).
|
|
32
|
+
|
|
33
|
+
## 3. 가격 페이지 섹션
|
|
34
|
+
|
|
35
|
+
- 3단 플랜 비교: Free / Pro / Enterprise. 월/연 토글 기본값은 연간(할인율 뱃지 "2개월 무료" 병기), 토글 전환 시 가격 숫자만 즉시 갱신되고 페이지 스크롤 위치는 유지된다.
|
|
36
|
+
- Pro 플랜 카드는 "가장 인기" 뱃지 + 테두리 강조로 시각 위계를 부여하되, 나머지 플랜과 동일한 카드 구조(기능 체크리스트, CTA 버튼)를 유지한다.
|
|
37
|
+
- Enterprise 플랜의 CTA는 가격 대신 "영업팀에 문의하기"로 대체하고, 클릭 시 문의 폼 모달을 연다(신용카드 입력 흐름과 분리).
|
|
38
|
+
- 플랜별 기능 체크리스트는 표 형태로 정렬해 스캔 가능하게 하고, 각 행에 툴팁으로 기능 설명을 보강한다. FAQ 아코디언을 가격 표 바로 아래 배치.
|
|
39
|
+
|
|
40
|
+
## 4. 후기 및 신뢰 요소 (한국형 신뢰 신호)
|
|
41
|
+
|
|
42
|
+
- 후기 카드 3~4개: 실명 대신 "직책 + 회사명"(예: "백엔드 리드, OO테크") 표기 — 개인정보 노출 최소화와 신뢰 확보를 병행. 실제 도입 기업 로고 병기.
|
|
43
|
+
- **한국형 신뢰 요소**: 사업자 정보(상호, 대표자, 사업자등록번호, 통신판매업 신고번호)를 푸터에 명시하고, 결제 수단 아이콘(카카오페이, 토스페이, 카드사 로고)을 가격 섹션 하단에 노출해 결제 신뢰를 보강한다.
|
|
44
|
+
- 정량 지표 스트립("설치 도구 12,000개 팀 사용 중", "평균 배포 시간 40% 단축")을 후기 섹션 상단에 배치해 정성 후기 전에 정량 신뢰를 먼저 전달한다.
|
|
45
|
+
- 후기 인용문은 자동 캐러셀로 넘기지 않고 정적 그리드로 고정한다 — 자동 전환 캐러셀은 후기를 끝까지 읽기 전에 사라져 신뢰 신호로서의 가치를 잃는다.
|
|
46
|
+
|
|
47
|
+
## 5. CTA 문구 전략과 전환율
|
|
48
|
+
|
|
49
|
+
- **한국형 CTA 문구**: "무료로 시작하기"(행동 유도 + 무비용 강조), "지금 데모 예약하기"(긴급성), "영업팀에 문의하기"(Enterprise). 영어 원문 그대로("Get Started", "Sign Up")를 직역하지 않고 한국 사용자에게 익숙한 행동 유도 어휘를 사용한다.
|
|
50
|
+
- 전환율을 높이기 위해 Primary CTA는 페이지당 반복 배치(히어로, 기능 섹션 하단, 가격 섹션, 최종 CTA 섹션) — 단, 같은 문구를 반복하지 않고 맥락별로 변주한다("무료로 시작하기" → "지금 무료로 시작하기" → "5분 만에 시작하기").
|
|
51
|
+
- 최종 CTA 섹션은 배경색을 전환해(라이트 배경 페이지 중간에 브랜드 accent 배경) 스크롤 종료 지점에서 재진입 지점임을 시각적으로 신호한다.
|
|
52
|
+
- 신규 가입 완료 후 발송되는 트라이얼 확인 이메일은 CTA 버튼을 bulletproof 버튼(VML + padding 기반, 이미지 배경 아님)으로 구현해 Outlook 데스크톱에서도 클릭 가능한 버튼으로 렌더링되도록 한다.
|
|
53
|
+
|
|
54
|
+
## 6. 반응형 동작과 이메일 클라이언트 대응
|
|
55
|
+
|
|
56
|
+
- **Desktop (1280px+)**: 히어로 텍스트/시각 50-50 분할, 기능 3열 그리드, 가격 3단 나란히 배치.
|
|
57
|
+
- **Tablet (768–1024px)**: 히어로는 텍스트 우선 단일 컬럼 + 시각 자료 아래 배치, 기능 2열 그리드, 가격 3단 유지하되 카드 폭 축소.
|
|
58
|
+
- **Mobile (360–430px)**: 모든 섹션 단일 컬럼 스택. 가격 플랜은 세로 스와이프 캐러셀로 전환하되 Pro 플랜이 기본 노출 카드가 되도록 스냅한다. Primary CTA는 하단 고정(sticky) 바로 전환해 스크롤 중에도 항상 접근 가능하게 한다.
|
|
59
|
+
- **이메일 클라이언트 대응**: 트라이얼 확인 이메일은 600px 고정폭 테이블 기반 레이아웃(div/flexbox 미사용), 다크모드 대응(투명 배경 로고 SVG 대신 PNG + 명시적 배경색 지정으로 Gmail/Outlook 다크모드에서 반전 깨짐 방지), Outlook에서 CSS `background-image` 미지원을 고려해 배경색을 fallback으로 반드시 지정한다.
|
|
60
|
+
|
|
61
|
+
## 접근성
|
|
62
|
+
|
|
63
|
+
- CTA 버튼은 색상 대비 최소 **4.5:1 contrast ratio**(WCAG AA)를 확보하며, accent 배경 위 버튼 텍스트도 동일 기준을 적용한다.
|
|
64
|
+
- 모든 CTA와 링크는 키보드 Tab 순회로 도달 가능해야 하며, 포커스 상태는 `focus-visible` 아웃라인으로 명시한다. 가격 토글(월/연)은 `role="switch"` + `aria-checked`로 마크업.
|
|
65
|
+
- 히어로 배경 영상/애니메이션은 `prefers-reduced-motion` 대응 정적 대체 이미지를 제공하고, 자동재생 콘텐츠에는 일시정지 컨트롤을 노출한다.
|
|
66
|
+
- 스크린 리더: 신뢰 로고 스트립과 후기 회사 로고는 `alt` 텍스트로 회사명을 명시하고, 순수 장식 아이콘은 `aria-hidden="true"` 처리한다.
|
|
67
|
+
- 가격 표는 `<caption>`과 `scope="col"` 헤더를 사용해 스크린 리더 사용자도 플랜별 기능을 표로 탐색할 수 있게 한다.
|
|
68
|
+
|
|
69
|
+
## Don't
|
|
70
|
+
|
|
71
|
+
- Don't: 폴드 위에 기능 목록까지 욱여넣지 않는다 — 헤드라인·서브헤드·CTA·시각 자료 이상은 스크롤 아래로 미룬다.
|
|
72
|
+
- Don't: 가격 토글 전환 시 페이지를 스크롤 상단으로 리셋하지 않는다 — 사용자의 비교 흐름을 끊는다.
|
|
73
|
+
- Don't: 후기를 자동 캐러셀로 빠르게 넘기지 않는다 — 신뢰 신호를 읽기도 전에 사라진다.
|
|
74
|
+
- Don't: CTA 문구를 페이지 전체에서 동일하게 반복하지 않는다 — 맥락별 변주 없는 반복은 클릭 유인 효과가 떨어진다.
|
|
75
|
+
- Avoid: 트라이얼 이메일에 이미지 배경 버튼을 사용하는 것 — Outlook 데스크톱에서 배경 이미지가 렌더링되지 않아 버튼이 사라진다.
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
---
|
|
79
|
+
|
|
80
|
+
## Why this is a good marketing-page example
|
|
81
|
+
|
|
82
|
+
- **Conversion/CTA evidence is explicit and layered** — CTA 배치 위계(Primary/Secondary), 반복 배치 전략, 맥락별 문구 변주, 전환율 근거, matching `route --check marketing-page`'s conversion requirement.
|
|
83
|
+
- **Visual hierarchy is concrete** — hero archetype selection, above-the-fold section sequencing (폴드/스크롤 순서), typographic subordination between headline/subhead/feature titles, matching the visual-hierarchy requirement.
|
|
84
|
+
- **Responsive and email-client behavior are both covered** — three breakpoints for the page itself, plus a dedicated email-client section (bulletproof buttons, 다크모드 대응, Outlook background-image fallback), matching the responsive/email-client requirement.
|
|
85
|
+
- **Grounding is load-bearing** — every section traces back to `landing-hero-design.md`, `landing-page-patterns.md`, `pricing-page-design.md`, or `email-design.md`, cited in the header.
|
|
86
|
+
- **Korean specifics are concrete, not decorative** — 한국형 CTA 문구 rationale, 사업자 정보 신뢰 요소, 카카오페이/토스페이 결제 아이콘, 고객 후기 신뢰 요소 (직책+회사명 표기, 정량 지표 선행 배치).
|
|
87
|
+
- **Accessibility is concrete** — explicit 4.5:1 contrast ratio, `focus-visible`, `prefers-reduced-motion`, `aria-hidden`, table `<caption>`/`scope="col"` for the pricing table.
|
|
88
|
+
- **A Don't section closes the spec** — five concrete anti-patterns, each tied back to a rule stated earlier.
|
|
89
|
+
|
|
90
|
+
## Cross-reference
|
|
91
|
+
|
|
92
|
+
- [`knowledge/patterns/landing-hero-design.md`](../knowledge/patterns/landing-hero-design.md) — hero archetype selection and 5-second comprehension test
|
|
93
|
+
- [`knowledge/patterns/landing-page-patterns.md`](../knowledge/patterns/landing-page-patterns.md) — section sequencing and above-the-fold structure
|
|
94
|
+
- [`knowledge/patterns/pricing-page-design.md`](../knowledge/patterns/pricing-page-design.md) — plan comparison, toggle, and FAQ patterns reused above
|
|
95
|
+
- [`knowledge/patterns/email-design.md`](../knowledge/patterns/email-design.md) — bulletproof button and dark-mode-safe email markup for the trial-confirmation flow
|
|
96
|
+
- [`knowledge/patterns/brand-identity.md`](../knowledge/patterns/brand-identity.md) — voice and token consistency guidance applied to CTA copy and color accents
|
|
97
|
+
- [`docs/ROUTE-COVERAGE-SWEEP.md`](../docs/ROUTE-COVERAGE-SWEEP.md) — the sweep (Phase 768, `landing` class) this example is adapted from
|
package/knowledge/COVERAGE.md
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
<!-- generated by tools/audit/check-coverage.py — do not hand-edit -->
|
|
2
2
|
---
|
|
3
3
|
title: Design-AI coverage report
|
|
4
|
-
generated_at: 2026-07-
|
|
4
|
+
generated_at: 2026-07-07
|
|
5
5
|
---
|
|
6
6
|
|
|
7
7
|
# Coverage report
|
|
@@ -14,7 +14,7 @@ generated_at: 2026-07-06
|
|
|
14
14
|
| --- | --- | --- |
|
|
15
15
|
| Knowledge files | 95 | 80 hand-written + 15 generated |
|
|
16
16
|
| Skills (PLAYBOOK + SKILL) | 20 | 20 with verification phase |
|
|
17
|
-
| Worked examples |
|
|
17
|
+
| Worked examples | 224 | |
|
|
18
18
|
| Extractors | 12 | |
|
|
19
19
|
| Canonical components | 200 | indexed across Ant / MUI / shadcn |
|
|
20
20
|
| Components with worked spec | 181 | **90.5% spec coverage** (16 via parent/alias specs) |
|
|
@@ -49,7 +49,7 @@ generated_at: 2026-07-06
|
|
|
49
49
|
|
|
50
50
|
| File | Lines | Type | Title |
|
|
51
51
|
| --- | --- | --- | --- |
|
|
52
|
-
| [knowledge/COVERAGE.md](../knowledge/COVERAGE.md) |
|
|
52
|
+
| [knowledge/COVERAGE.md](../knowledge/COVERAGE.md) | 747 | generated | Coverage report |
|
|
53
53
|
| [knowledge/PRINCIPLES.md](../knowledge/PRINCIPLES.md) | 108 | hand-written | Design-AI principles |
|
|
54
54
|
|
|
55
55
|
#### a11y
|
|
@@ -469,12 +469,14 @@ generated_at: 2026-07-06
|
|
|
469
469
|
| [examples/component-voice-input.md](../examples/component-voice-input.md) | 408 | `VoiceInput` (custom — push-to-talk + transcript voice input) — spec |
|
|
470
470
|
| [examples/component-watermark.md](../examples/component-watermark.md) | 217 | `Watermark` — spec |
|
|
471
471
|
| [examples/component-zoom.md](../examples/component-zoom.md) | 92 | `Zoom` — spec |
|
|
472
|
+
| [examples/dashboard-design-settlement.md](../examples/dashboard-design-settlement.md) | 87 | Worked example: seller settlement dashboard design |
|
|
472
473
|
| [examples/doc-explanation-example.md](../examples/doc-explanation-example.md) | 196 | Worked example: explanation |
|
|
473
474
|
| [examples/doc-how-to-example.md](../examples/doc-how-to-example.md) | 205 | Worked example: how-to |
|
|
474
475
|
| [examples/doc-tutorial-example.md](../examples/doc-tutorial-example.md) | 162 | Worked example: tutorial |
|
|
475
476
|
| [examples/dogfood-korean-fintech-system.md](../examples/dogfood-korean-fintech-system.md) | 433 | Dogfood: Korean fintech mobile app — design system bootstrap |
|
|
476
477
|
| [examples/email-transactional-example.md](../examples/email-transactional-example.md) | 259 | Worked example: transactional email (Korean fintech) |
|
|
477
478
|
| [examples/flow-design-report-block.md](../examples/flow-design-report-block.md) | 141 | Worked example: report & block flow design |
|
|
479
|
+
| [examples/marketing-page-saas-landing.md](../examples/marketing-page-saas-landing.md) | 97 | Worked example: developer-tool SaaS landing page design |
|
|
478
480
|
| [examples/palette-saas-violet.md](../examples/palette-saas-violet.md) | 235 | Palette: B2B SaaS — violet primary |
|
|
479
481
|
| [examples/print-business-card-spec.md](../examples/print-business-card-spec.md) | 205 | Print spec: business card (Korean 명함, premium tier) |
|
|
480
482
|
| [examples/print-packaging-spec.md](../examples/print-packaging-spec.md) | 285 | Print spec: folding carton (Korean cosmetics, mid-tier) |
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@design-ai/cli",
|
|
3
|
-
"version": "4.
|
|
3
|
+
"version": "4.64.0",
|
|
4
4
|
"description": "Senior product designer for any AI coding agent. Installs design-ai (20 skills, 17 commands, 4 agents) into Claude Code globally. Korean market depth plus website improvement control tower.",
|
|
5
5
|
"bin": {
|
|
6
6
|
"design-ai": "cli/bin/design-ai.mjs",
|
|
@@ -689,6 +689,8 @@ EXPECTED_ROUTE_CATALOG_IDS = (
|
|
|
689
689
|
"design-pr-review",
|
|
690
690
|
"stability-review",
|
|
691
691
|
"flow-design",
|
|
692
|
+
"dashboard-design",
|
|
693
|
+
"marketing-page",
|
|
692
694
|
)
|
|
693
695
|
EXPECTED_PROMPT_SLASH_COMMAND = "/design-component-spec"
|
|
694
696
|
EXPECTED_PROMPT_QUALITY_COMMAND = "design-ai check output.md --route component-spec --strict"
|