@kood/claude-code 0.5.9 → 0.5.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.
Files changed (29) hide show
  1. package/dist/index.js +39 -97
  2. package/package.json +1 -1
  3. package/templates/.claude/agents/dependency-manager.md +0 -1
  4. package/templates/.claude/agents/deployment-validator.md +0 -1
  5. package/templates/.claude/agents/designer.md +0 -1
  6. package/templates/.claude/agents/document-writer.md +0 -1
  7. package/templates/.claude/agents/implementation-executor.md +0 -1
  8. package/templates/.claude/agents/ko-to-en-translator.md +0 -1
  9. package/templates/.claude/agents/lint-fixer.md +0 -1
  10. package/templates/.claude/skills/stitch-design/README.md +0 -34
  11. package/templates/.claude/skills/stitch-design/SKILL.md +0 -213
  12. package/templates/.claude/skills/stitch-design/examples/DESIGN.md +0 -154
  13. package/templates/.claude/skills/stitch-loop/README.md +0 -54
  14. package/templates/.claude/skills/stitch-loop/SKILL.md +0 -316
  15. package/templates/.claude/skills/stitch-loop/examples/SITE.md +0 -73
  16. package/templates/.claude/skills/stitch-loop/examples/next-prompt.md +0 -25
  17. package/templates/.claude/skills/stitch-loop/resources/baton-schema.md +0 -61
  18. package/templates/.claude/skills/stitch-loop/resources/site-template.md +0 -104
  19. package/templates/.claude/skills/stitch-react/README.md +0 -36
  20. package/templates/.claude/skills/stitch-react/SKILL.md +0 -323
  21. package/templates/.claude/skills/stitch-react/examples/gold-standard-card.tsx +0 -88
  22. package/templates/.claude/skills/stitch-react/package-lock.json +0 -231
  23. package/templates/.claude/skills/stitch-react/package.json +0 -16
  24. package/templates/.claude/skills/stitch-react/resources/architecture-checklist.md +0 -15
  25. package/templates/.claude/skills/stitch-react/resources/component-template.tsx +0 -37
  26. package/templates/.claude/skills/stitch-react/resources/stitch-api-reference.md +0 -14
  27. package/templates/.claude/skills/stitch-react/resources/style-guide.json +0 -24
  28. package/templates/.claude/skills/stitch-react/scripts/fetch-stitch.sh +0 -30
  29. package/templates/.claude/skills/stitch-react/scripts/validate.js +0 -77
package/dist/index.js CHANGED
@@ -236,24 +236,16 @@ import fs4 from "fs-extra";
236
236
  import path6 from "path";
237
237
 
238
238
  // src/shared/constants.ts
239
- var FRAMEWORK_SPECIFIC_SKILLS_MAP = {
240
- nextjs: ["nextjs-react-best-practices", "korea-uiux-design", "figma-to-code"],
241
- "tanstack-start": [
242
- "tanstack-start-react-best-practices",
243
- "korea-uiux-design",
244
- "figma-to-code"
245
- ]
246
- // hono와 npx는 프레임워크별 스킬 없음
247
- };
248
- var COMMON_SKILLS = [
239
+ var UI_SKILLS = [
249
240
  "global-uiux-design",
250
- "docs-creator",
251
- "docs-refactor",
252
- "plan",
253
- "prd",
254
- "ralph",
255
- "execute"
241
+ "korea-uiux-design",
242
+ "figma-to-code"
256
243
  ];
244
+ var NON_UI_TEMPLATES = ["hono", "npx"];
245
+ var FRAMEWORK_SPECIFIC_SKILLS = {
246
+ nextjs: ["nextjs-react-best-practices"],
247
+ "tanstack-start": ["tanstack-start-react-best-practices"]
248
+ };
257
249
 
258
250
  // src/features/extras/extras-copier.ts
259
251
  var createExtrasCopier = (extrasType) => {
@@ -271,6 +263,26 @@ var createExtrasCopier = (extrasType) => {
271
263
  var copyCommands = createExtrasCopier("commands");
272
264
  var copyAgents = createExtrasCopier("agents");
273
265
  var copyInstructions = createExtrasCopier("instructions");
266
+ var getAllSkills = async (skillsSrc) => {
267
+ const entries = await fs4.readdir(skillsSrc, { withFileTypes: true });
268
+ return entries.filter((entry) => entry.isDirectory()).map((entry) => entry.name);
269
+ };
270
+ var getSkillsToInstall = (allSkills, templates) => {
271
+ const isNonUITemplate = templates.some((t) => NON_UI_TEMPLATES.includes(t));
272
+ return allSkills.filter((skill) => {
273
+ if (isNonUITemplate && UI_SKILLS.includes(skill)) {
274
+ return false;
275
+ }
276
+ for (const [framework, skills] of Object.entries(
277
+ FRAMEWORK_SPECIFIC_SKILLS
278
+ )) {
279
+ if (skills.includes(skill) && !templates.includes(framework)) {
280
+ return false;
281
+ }
282
+ }
283
+ return true;
284
+ });
285
+ };
274
286
  var copySkills = async (templates, targetDir) => {
275
287
  const counter = { files: 0, directories: 0 };
276
288
  const targetSkillsDir = path6.join(targetDir, ".claude", "skills");
@@ -279,42 +291,17 @@ var copySkills = async (templates, targetDir) => {
279
291
  return counter;
280
292
  }
281
293
  await fs4.ensureDir(targetSkillsDir);
282
- const skillsToCopy = /* @__PURE__ */ new Set();
283
- const skillTemplateMap = /* @__PURE__ */ new Map();
284
- COMMON_SKILLS.forEach((skill) => skillsToCopy.add(skill));
285
- for (const template of templates) {
286
- const skills = FRAMEWORK_SPECIFIC_SKILLS_MAP[template] || [];
287
- skills.forEach((skill) => {
288
- skillsToCopy.add(skill);
289
- if (!skillTemplateMap.has(skill)) {
290
- skillTemplateMap.set(skill, /* @__PURE__ */ new Set());
291
- }
292
- skillTemplateMap.get(skill).add(template);
293
- });
294
- }
295
- for (const skill of skillsToCopy) {
294
+ const allSkills = await getAllSkills(skillsSrc);
295
+ const skillsToInstall = getSkillsToInstall(allSkills, templates);
296
+ for (const skill of skillsToInstall) {
296
297
  const skillSrc = path6.join(skillsSrc, skill);
297
298
  const skillDest = path6.join(targetSkillsDir, skill);
298
- if (await fs4.pathExists(skillSrc)) {
299
- if (await fs4.pathExists(skillDest)) {
300
- await fs4.remove(skillDest);
301
- }
302
- await copyRecursive(skillSrc, skillDest, counter);
299
+ if (await fs4.pathExists(skillDest)) {
300
+ await fs4.remove(skillDest);
303
301
  }
302
+ await copyRecursive(skillSrc, skillDest, counter);
304
303
  }
305
- const duplicateSkills = [];
306
- for (const [skill, templateSet] of skillTemplateMap.entries()) {
307
- if (templateSet.size > 1) {
308
- duplicateSkills.push({
309
- skill,
310
- templates: Array.from(templateSet).sort()
311
- });
312
- }
313
- }
314
- return {
315
- ...counter,
316
- ...duplicateSkills.length > 0 && { duplicateSkills }
317
- };
304
+ return counter;
318
305
  };
319
306
 
320
307
  // src/features/extras/extras-checker.ts
@@ -340,16 +327,13 @@ var checkExistingClaudeFiles = async (targetDir) => {
340
327
  }
341
328
  return existingFiles;
342
329
  };
343
- var checkAllExtrasExist = async (templates) => {
330
+ var checkAllExtrasExist = async (_templates) => {
344
331
  const claudeDir = path7.join(getTemplatesDir(), ".claude");
332
+ const skillsSrc = path7.join(claudeDir, "skills");
345
333
  const commandsSrc = path7.join(claudeDir, "commands");
346
334
  const agentsSrc = path7.join(claudeDir, "agents");
347
335
  const instructionsSrc = path7.join(claudeDir, "instructions");
348
- const hasFrameworkSkills = templates.some((template) => {
349
- const skills = FRAMEWORK_SPECIFIC_SKILLS_MAP[template];
350
- return skills && skills.length > 0;
351
- });
352
- const hasSkills = COMMON_SKILLS.length > 0 || hasFrameworkSkills;
336
+ const hasSkills = await hasFiles(skillsSrc);
353
337
  const hasCommands = await hasFiles(commandsSrc);
354
338
  const hasAgents = await hasFiles(agentsSrc);
355
339
  const hasInstructions = await hasFiles(instructionsSrc);
@@ -367,15 +351,6 @@ async function promptConfirm(message, initial = false) {
367
351
  });
368
352
  return { confirmed: response.confirmed ?? false };
369
353
  }
370
- async function promptSelect(message, choices) {
371
- const response = await prompts({
372
- type: "select",
373
- name: "value",
374
- message,
375
- choices
376
- });
377
- return { value: response.value };
378
- }
379
354
  async function promptMultiselect(message, choices, options) {
380
355
  const response = await prompts({
381
356
  type: "multiselect",
@@ -489,32 +464,6 @@ async function handleDuplicateFiles(existingClaudeFiles, force) {
489
464
  );
490
465
  return response.confirmed;
491
466
  }
492
- async function handleDuplicateSkills(duplicateSkills, templates, targetDir) {
493
- logger.blank();
494
- logger.warn("The following skills are included in multiple templates:");
495
- duplicateSkills.forEach(({ skill, templates: skillTemplates }) => {
496
- logger.step(`${skill} (${skillTemplates.join(", ")})`);
497
- });
498
- logger.blank();
499
- const response = await promptSelect(
500
- "Which template's version should be used?",
501
- templates.map((t) => ({
502
- title: t,
503
- value: t
504
- }))
505
- );
506
- if (response.value) {
507
- logger.info(`Reinstalling skills with ${response.value} template...`);
508
- const reinstallResult = await copySkills([response.value], targetDir);
509
- logger.success(
510
- `Skills: ${reinstallResult.files} files, ${reinstallResult.directories} directories`
511
- );
512
- return reinstallResult;
513
- } else {
514
- logger.warn("No template selected. Using all templates.");
515
- return { files: 0, directories: 0 };
516
- }
517
- }
518
467
  async function installSkillsIfNeeded(templates, targetDir, shouldInstall, hasSkills) {
519
468
  if (!shouldInstall) {
520
469
  return { files: 0, directories: 0 };
@@ -526,13 +475,6 @@ async function installSkillsIfNeeded(templates, targetDir, shouldInstall, hasSki
526
475
  logger.blank();
527
476
  logger.info("Installing skills...");
528
477
  const skillsResult = await copySkills(templates, targetDir);
529
- if (skillsResult.duplicateSkills && skillsResult.duplicateSkills.length > 0) {
530
- return await handleDuplicateSkills(
531
- skillsResult.duplicateSkills,
532
- templates,
533
- targetDir
534
- );
535
- }
536
478
  logger.success(
537
479
  `Skills: ${skillsResult.files} files, ${skillsResult.directories} directories`
538
480
  );
@@ -854,7 +796,7 @@ var init = async (options) => {
854
796
 
855
797
  // src/index.ts
856
798
  var program = new Command();
857
- program.name("claude-code").description("Claude Code documentation installer for projects").version("0.5.9");
799
+ program.name("claude-code").description("Claude Code documentation installer for projects").version("0.5.10");
858
800
  program.option(
859
801
  "-t, --template <names>",
860
802
  "template names (comma-separated: tanstack-start,hono)"
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kood/claude-code",
3
- "version": "0.5.9",
3
+ "version": "0.5.10",
4
4
  "description": "Claude Code documentation installer for projects",
5
5
  "type": "module",
6
6
  "bin": "./dist/index.js",
@@ -2,7 +2,6 @@
2
2
  name: dependency-manager
3
3
  description: package.json 의존성 분석, 업데이트, 보안 취약점 스캔. npm audit/outdated 기반 안전한 업데이트 제안.
4
4
  tools: Read, Edit, Bash, Grep
5
- model: sonnet
6
5
  permissionMode: default
7
6
  ---
8
7
 
@@ -2,7 +2,6 @@
2
2
  name: deployment-validator
3
3
  description: 배포 전 typecheck/lint/build 전체 검증 및 수정. 모든 단계 통과 필수.
4
4
  tools: Read, Edit, Bash, mcp__sequential-thinking__sequentialthinking
5
- model: sonnet
6
5
  permissionMode: default
7
6
  ---
8
7
 
@@ -2,7 +2,6 @@
2
2
  name: designer
3
3
  description: 2026 트렌드 기반 UI/UX 디자인. AI/공간/키네틱 타이포/적응형 테마 통합. 미적 우수성 + 기능적 코드 품질.
4
4
  tools: Read, Write, Edit, Grep, Glob, Bash, WebSearch
5
- model: sonnet
6
5
  permissionMode: default
7
6
  ---
8
7
 
@@ -2,7 +2,6 @@
2
2
  name: document-writer
3
3
  description: Anthropic Context Engineering 원칙 기반 고밀도 문서 작성/업데이트
4
4
  tools: Read, Write, Edit, Glob, Grep
5
- model: haiku
6
5
  ---
7
6
 
8
7
  @../../instructions/agent-patterns/parallel-execution.md
@@ -2,7 +2,6 @@
2
2
  name: implementation-executor
3
3
  description: 계획 또는 작업을 Sequential Thinking으로 분석하여 즉시 구현. 옵션 제시 없이 바로 실행.
4
4
  tools: Read, Write, Edit, Grep, Glob, Task, TodoWrite, mcp__sequential-thinking__sequentialthinking
5
- model: sonnet
6
5
  permissionMode: default
7
6
  ---
8
7
 
@@ -2,7 +2,6 @@
2
2
  name: ko-to-en-translator
3
3
  description: 한글 문서/코드 주석을 영어로 번역. 번역 전 웹 검색으로 주의점 파악 및 적용
4
4
  tools: Read, WebSearch, Edit
5
- model: haiku
6
5
  ---
7
6
 
8
7
  @../../instructions/agent-patterns/parallel-execution.md
@@ -2,7 +2,6 @@
2
2
  name: lint-fixer
3
3
  description: 코드 작성/수정 후 tsc/eslint 오류 수정. 간단한 오류는 즉시 수정, 복잡한 오류만 Sequential Thinking 사용.
4
4
  tools: Read, Edit, Bash, mcp__sequential-thinking__sequentialthinking
5
- model: sonnet
6
5
  permissionMode: default
7
6
  ---
8
7
 
@@ -1,34 +0,0 @@
1
- # Stitch Design System Documentation Skill
2
-
3
- ## Install
4
-
5
- ```bash
6
- npx add-skill google-labs-code/stitch-skills --skill design-md --global
7
- ```
8
-
9
- ## Example Prompt
10
-
11
- ```text
12
- Analyze my Furniture Collection project's Home screen and generate a comprehensive DESIGN.md file documenting the design system.
13
- ```
14
-
15
- ## Skill Structure
16
-
17
- This repository follows the **Agent Skills** open standard. Each skill is self-contained with its own logic, workflow, and reference materials.
18
-
19
- ```text
20
- design-md/
21
- ├── SKILL.md — Core instructions & workflow
22
- ├── examples/ — Sample DESIGN.md outputs
23
- └── README.md — This file
24
- ```
25
-
26
- ## How it Works
27
-
28
- When activated, the agent follows a structured design analysis pipeline:
29
-
30
- 1. **Retrieval**: Uses the Stitch MCP Server to fetch project screens, HTML code, and design metadata.
31
- 2. **Extraction**: Identifies design tokens including colors, typography, spacing, and component patterns.
32
- 3. **Translation**: Converts technical CSS/Tailwind values into descriptive, natural design language.
33
- 4. **Synthesis**: Generates a comprehensive DESIGN.md following the semantic design system format.
34
- 5. **Alignment**: Ensures output follows Stitch Effective Prompting Guide principles for optimal screen generation.
@@ -1,213 +0,0 @@
1
- ---
2
- name: stitch:design
3
- description: 프로젝트 디자인 시스템 분석 후 DESIGN.md 생성
4
- ---
5
-
6
- <purpose>
7
- 프로젝트의 디자인 자산(UI 컴포넌트, 스타일)을 분석하여 디자인 시스템 문서(DESIGN.md) 생성
8
- </purpose>
9
-
10
- ---
11
-
12
- <trigger_conditions>
13
-
14
- | 트리거 | 반응 |
15
- |--------|------|
16
- | "디자인 시스템 문서화" | 즉시 실행 |
17
- | "DESIGN.md 생성" | 즉시 실행 |
18
- | "디자인 가이드 작성" | 즉시 실행 |
19
-
20
- </trigger_conditions>
21
-
22
- ---
23
-
24
- <workflow>
25
-
26
- <step number="1">
27
- <action>프로젝트 구조 탐색</action>
28
- <tools>Glob, Grep</tools>
29
- <details>
30
- - UI 컴포넌트 파일 찾기 (`components/**/*.tsx`)
31
- - 스타일 파일 찾기 (`**/*.css`, `tailwind.config.*`)
32
- - 디자인 토큰 파일 찾기
33
- </details>
34
- </step>
35
-
36
- <step number="2">
37
- <action>디자인 자산 분석</action>
38
- <tools>Read</tools>
39
- <details>
40
- - Tailwind 설정에서 색상/타이포/간격 추출
41
- - 컴포넌트에서 공통 스타일 패턴 파악
42
- - CSS 변수에서 테마 정보 수집
43
- </details>
44
- </step>
45
-
46
- <step number="3">
47
- <action>디자인 언어로 변환</action>
48
- <tools>-</tools>
49
- <details>
50
- | 기술적 표현 | 디자인 언어 |
51
- |------------|------------|
52
- | `rounded-full` | "완전한 원형" |
53
- | `border-radius: 12px` | "부드러운 모서리" |
54
- | `shadow-lg` | "깊은 그림자" |
55
- | `#3B82F6` | "생동감 있는 파란색" |
56
- </details>
57
- </step>
58
-
59
- <step number="4">
60
- <action>DESIGN.md 작성</action>
61
- <tools>Write</tools>
62
- <details>
63
- 구조:
64
- 1. 비주얼 테마 (분위기, 느낌)
65
- 2. 색상 팔레트 (hex + 기능)
66
- 3. 타이포그래피 (폰트, 크기, 용도)
67
- 4. 컴포넌트 스타일링
68
- 5. 레이아웃/간격 원칙
69
- </details>
70
- </step>
71
-
72
- </workflow>
73
-
74
- ---
75
-
76
- <output_format>
77
-
78
- ```markdown
79
- # Design System
80
-
81
- ## Visual Theme
82
- [프로젝트의 전반적인 분위기와 느낌 서술]
83
-
84
- ## Color Palette
85
-
86
- | 색상 | Hex | 기능 |
87
- |------|-----|------|
88
- | Primary | #3B82F6 | 주요 액션, CTA 버튼 |
89
- | Secondary | #64748B | 보조 텍스트, 아이콘 |
90
- | Background | #FFFFFF | 배경 |
91
-
92
- ## Typography
93
-
94
- | 용도 | 폰트 | 크기 | 무게 |
95
- |------|------|------|------|
96
- | Heading | Inter | 32px | 700 |
97
- | Body | Inter | 16px | 400 |
98
-
99
- ## Component Patterns
100
-
101
- ### 버튼
102
- - 기본: 부드러운 모서리(8px), 생동감 있는 파란색
103
- - Hover: 약간 어두운 파란색
104
- - 패딩: 상하 12px, 좌우 24px
105
-
106
- ### 카드
107
- - 배경: 흰색
108
- - 테두리: 연한 회색(1px)
109
- - 그림자: 부드러운 그림자
110
- - 모서리: 부드러운(12px)
111
-
112
- ## Layout & Spacing
113
-
114
- - 기본 그리드: 8px
115
- - 컨테이너 최대 너비: 1280px
116
- - 섹션 간격: 64px
117
- ```
118
-
119
- </output_format>
120
-
121
- ---
122
-
123
- <examples>
124
-
125
- ## Tailwind 프로젝트
126
-
127
- **입력:**
128
- ```typescript
129
- // tailwind.config.ts
130
- export default {
131
- theme: {
132
- extend: {
133
- colors: {
134
- primary: '#3B82F6',
135
- secondary: '#64748B',
136
- },
137
- borderRadius: {
138
- card: '12px',
139
- },
140
- },
141
- },
142
- }
143
- ```
144
-
145
- **출력:**
146
- ```markdown
147
- ## Color Palette
148
-
149
- | 색상 | Hex | 기능 |
150
- |------|-----|------|
151
- | Primary Blue | #3B82F6 | 주요 액션 버튼, 링크, 강조 |
152
- | Secondary Gray | #64748B | 보조 텍스트, 비활성 요소 |
153
-
154
- ## Component Patterns
155
-
156
- ### 카드
157
- - 모서리: 부드러운 곡선(12px)
158
- - 느낌: 현대적이고 깔끔한 외관
159
- ```
160
-
161
- ---
162
-
163
- ## CSS Variables 프로젝트
164
-
165
- **입력:**
166
- ```css
167
- :root {
168
- --color-brand: hsl(221, 83%, 53%);
169
- --font-heading: 'Poppins', sans-serif;
170
- --spacing-unit: 8px;
171
- }
172
- ```
173
-
174
- **출력:**
175
- ```markdown
176
- ## Visual Theme
177
- 밝고 신뢰감 있는 파란색 브랜드 컬러를 중심으로 한 현대적 디자인
178
-
179
- ## Typography
180
- - Heading: Poppins (기하학적이고 친근한 느낌)
181
-
182
- ## Layout & Spacing
183
- - 8px 그리드 시스템 사용
184
- - 요소 간 일관된 간격 유지
185
- ```
186
-
187
- </examples>
188
-
189
- ---
190
-
191
- <validation>
192
-
193
- **체크리스트:**
194
- - [ ] 모든 색상에 hex 코드 포함
195
- - [ ] 기술 용어 → 디자인 언어 변환
196
- - [ ] 각 요소의 기능적 목적 설명
197
- - [ ] 일관된 용어 사용
198
- - [ ] 실제 사용 예시 포함
199
-
200
- </validation>
201
-
202
- ---
203
-
204
- <best_practices>
205
-
206
- | 원칙 | 방법 |
207
- |------|------|
208
- | **서술적 표현** | "rounded-lg" → "부드럽게 둥근 모서리" |
209
- | **기능 명시** | 색상 설명 시 "주요 액션 버튼에 사용" 추가 |
210
- | **일관성** | 동일 개념은 동일 용어 사용 |
211
- | **구체성** | "큰 그림자" < "깊이감 있는 그림자(16px blur)" |
212
-
213
- </best_practices>
@@ -1,154 +0,0 @@
1
- # Design System: Furniture Collections List
2
- **Project ID:** 13534454087919359824
3
-
4
- ## 1. Visual Theme & Atmosphere
5
-
6
- The Furniture Collections List embodies a **sophisticated, minimalist sanctuary** that marries the pristine simplicity of Scandinavian design with the refined visual language of luxury editorial presentation. The interface feels **spacious and tranquil**, prioritizing breathing room and visual clarity above all else. The design philosophy is gallery-like and photography-first, allowing each furniture piece to command attention as an individual art object.
7
-
8
- The overall mood is **airy yet grounded**, creating an aspirational aesthetic that remains approachable and welcoming. The interface feels **utilitarian in its restraint** but elegant in its execution, with every element serving a clear purpose while maintaining visual sophistication. The atmosphere evokes the serene ambiance of a high-end furniture showroom where customers can browse thoughtfully without visual overwhelm.
9
-
10
- **Key Characteristics:**
11
- - Expansive whitespace creating generous breathing room between elements
12
- - Clean, architectural grid system with structured content blocks
13
- - Photography-first presentation with minimal UI interference
14
- - Whisper-soft visual hierarchy that guides without shouting
15
- - Refined, understated interactive elements
16
- - Professional yet inviting editorial tone
17
-
18
- ## 2. Color Palette & Roles
19
-
20
- ### Primary Foundation
21
- - **Warm Barely-There Cream** (#FCFAFA) – Primary background color. Creates an almost imperceptible warmth that feels more inviting than pure white, serving as the serene canvas for the entire experience.
22
- - **Crisp Very Light Gray** (#F5F5F5) – Secondary surface color used for card backgrounds and content areas. Provides subtle visual separation while maintaining the airy, ethereal quality.
23
-
24
- ### Accent & Interactive
25
- - **Deep Muted Teal-Navy** (#294056) – The sole vibrant accent in the palette. Used exclusively for primary call-to-action buttons (e.g., "Shop Now", "View all products"), active navigation links, selected filter states, and subtle interaction highlights. This sophisticated anchor color creates visual focus points without disrupting the serene neutral foundation.
26
-
27
- ### Typography & Text Hierarchy
28
- - **Charcoal Near-Black** (#2C2C2C) – Primary text color for headlines and product names. Provides strong readable contrast while being softer and more refined than pure black.
29
- - **Soft Warm Gray** (#6B6B6B) – Secondary text used for body copy, product descriptions, and supporting metadata. Creates clear typographic hierarchy without harsh contrast.
30
- - **Ultra-Soft Silver Gray** (#E0E0E0) – Tertiary color for borders, dividers, and subtle structural elements. Creates separation so gentle it's almost imperceptible.
31
-
32
- ### Functional States (Reserved for system feedback)
33
- - **Success Moss** (#10B981) – Stock availability, confirmation states, positive indicators
34
- - **Alert Terracotta** (#EF4444) – Low stock warnings, error states, critical alerts
35
- - **Informational Slate** (#64748B) – Neutral system messages, informational callouts
36
-
37
- ## 3. Typography Rules
38
-
39
- **Primary Font Family:** Manrope
40
- **Character:** Modern, geometric sans-serif with gentle humanist warmth. Slightly rounded letterforms that feel contemporary yet approachable.
41
-
42
- ### Hierarchy & Weights
43
- - **Display Headlines (H1):** Semi-bold weight (600), generous letter-spacing (0.02em for elegance), 2.75-3.5rem size. Used sparingly for hero sections and major page titles.
44
- - **Section Headers (H2):** Semi-bold weight (600), subtle letter-spacing (0.01em), 2-2.5rem size. Establishes clear content zones and featured collections.
45
- - **Subsection Headers (H3):** Medium weight (500), normal letter-spacing, 1.5-1.75rem size. Product names and category labels.
46
- - **Body Text:** Regular weight (400), relaxed line-height (1.7), 1rem size. Descriptions and supporting content prioritize comfortable readability.
47
- - **Small Text/Meta:** Regular weight (400), slightly tighter line-height (1.5), 0.875rem size. Prices, availability, and metadata remain legible but visually recessive.
48
- - **CTA Buttons:** Medium weight (500), subtle letter-spacing (0.01em), 1rem size. Balanced presence without visual aggression.
49
-
50
- ### Spacing Principles
51
- - Headers use slightly expanded letter-spacing for refined elegance
52
- - Body text maintains generous line-height (1.7) for effortless reading
53
- - Consistent vertical rhythm with 2-3rem between related text blocks
54
- - Large margins (4-6rem) between major sections to reinforce spaciousness
55
-
56
- ## 4. Component Stylings
57
-
58
- ### Buttons
59
- - **Shape:** Subtly rounded corners (8px/0.5rem radius) – approachable and modern without appearing playful or childish
60
- - **Primary CTA:** Deep Muted Teal-Navy (#294056) background with pure white text, comfortable padding (0.875rem vertical, 2rem horizontal)
61
- - **Hover State:** Subtle darkening to deeper navy, smooth 250ms ease-in-out transition
62
- - **Focus State:** Soft outer glow in the primary color for keyboard navigation accessibility
63
- - **Secondary CTA (if needed):** Outlined style with Deep Muted Teal-Navy border, transparent background, hover fills with whisper-soft teal tint
64
-
65
- ### Cards & Product Containers
66
- - **Corner Style:** Gently rounded corners (12px/0.75rem radius) creating soft, refined edges
67
- - **Background:** Alternates between Warm Barely-There Cream and Crisp Very Light Gray based on layering needs
68
- - **Shadow Strategy:** Flat by default. On hover, whisper-soft diffused shadow appears (`0 2px 8px rgba(0,0,0,0.06)`) creating subtle depth
69
- - **Border:** Optional hairline border (1px) in Ultra-Soft Silver Gray for delicate definition when shadows aren't present
70
- - **Internal Padding:** Generous 2-2.5rem creating comfortable breathing room for content
71
- - **Image Treatment:** Full-bleed at the top of cards, square or 4:3 ratio, seamless edge-to-edge presentation
72
-
73
- ### Navigation
74
- - **Style:** Clean horizontal layout with generous spacing (2-3rem) between menu items
75
- - **Typography:** Medium weight (500), subtle uppercase, expanded letter-spacing (0.06em) for refined sophistication
76
- - **Default State:** Charcoal Near-Black text
77
- - **Active/Hover State:** Smooth 200ms color transition to Deep Muted Teal-Navy
78
- - **Active Indicator:** Thin underline (2px) in Deep Muted Teal-Navy appearing below current section
79
- - **Mobile:** Converts to elegant hamburger menu with sliding drawer
80
-
81
- ### Inputs & Forms
82
- - **Stroke Style:** Refined 1px border in Soft Warm Gray
83
- - **Background:** Warm Barely-There Cream with transition to Crisp Very Light Gray on focus
84
- - **Corner Style:** Matching button roundness (8px/0.5rem) for visual consistency
85
- - **Focus State:** Border color shifts to Deep Muted Teal-Navy with subtle outer glow
86
- - **Padding:** Comfortable 0.875rem vertical, 1.25rem horizontal for touch-friendly targets
87
- - **Placeholder Text:** Ultra-Soft Silver Gray, elegant and unobtrusive
88
-
89
- ### Product Cards (Specific Pattern)
90
- - **Image Area:** Square (1:1) or landscape (4:3) ratio filling card width completely
91
- - **Content Stack:** Product name (H3), brief descriptor, material/finish, price
92
- - **Price Display:** Emphasized with semi-bold weight (600) in Charcoal Near-Black
93
- - **Hover Behavior:** Gentle lift effect (translateY -4px) combined with enhanced shadow
94
- - **Spacing:** Consistent 1.5rem internal padding below image
95
-
96
- ## 5. Layout Principles
97
-
98
- ### Grid & Structure
99
- - **Max Content Width:** 1440px for optimal readability and visual balance on large displays
100
- - **Grid System:** Responsive 12-column grid with fluid gutters (24px mobile, 32px desktop)
101
- - **Product Grid:** 4 columns on large desktop, 3 on desktop, 2 on tablet, 1 on mobile
102
- - **Breakpoints:**
103
- - Mobile: <768px
104
- - Tablet: 768-1024px
105
- - Desktop: 1024-1440px
106
- - Large Desktop: >1440px
107
-
108
- ### Whitespace Strategy (Critical to the Design)
109
- - **Base Unit:** 8px for micro-spacing, 16px for component spacing
110
- - **Vertical Rhythm:** Consistent 2rem (32px) base unit between related elements
111
- - **Section Margins:** Generous 5-8rem (80-128px) between major sections creating dramatic breathing room
112
- - **Edge Padding:** 1.5rem (24px) mobile, 3rem (48px) tablet/desktop for comfortable framing
113
- - **Hero Sections:** Extra-generous top/bottom padding (8-12rem) for impactful presentation
114
-
115
- ### Alignment & Visual Balance
116
- - **Text Alignment:** Left-aligned for body and navigation (optimal readability), centered for hero headlines and featured content
117
- - **Image to Text Ratio:** Heavily weighted toward imagery (70-30 split) reinforcing photography-first philosophy
118
- - **Asymmetric Balance:** Large hero images offset by compact, refined text blocks
119
- - **Visual Weight Distribution:** Strategic use of whitespace to draw eyes to hero products and primary CTAs
120
- - **Reading Flow:** Clear top-to-bottom, left-to-right pattern with intentional focal points
121
-
122
- ### Responsive Behavior & Touch
123
- - **Mobile-First Foundation:** Core experience designed and perfected for smallest screens first
124
- - **Progressive Enhancement:** Additional columns, imagery, and details added gracefully at larger breakpoints
125
- - **Touch Targets:** Minimum 44x44px for all interactive elements (WCAG AAA compliant)
126
- - **Image Optimization:** Responsive images with appropriate resolutions for each breakpoint, lazy-loading for performance
127
- - **Collapsing Strategy:** Navigation collapses to hamburger, grid reduces columns, padding scales proportionally
128
-
129
- ## 6. Design System Notes for Stitch Generation
130
-
131
- When creating new screens for this project using Stitch, reference these specific instructions:
132
-
133
- ### Language to Use
134
- - **Atmosphere:** "Sophisticated minimalist sanctuary with gallery-like spaciousness"
135
- - **Button Shapes:** "Subtly rounded corners" (not "rounded-md" or "8px")
136
- - **Shadows:** "Whisper-soft diffused shadows on hover" (not "shadow-sm")
137
- - **Spacing:** "Generous breathing room" and "expansive whitespace"
138
-
139
- ### Color References
140
- Always use the descriptive names with hex codes:
141
- - Primary CTA: "Deep Muted Teal-Navy (#294056)"
142
- - Backgrounds: "Warm Barely-There Cream (#FCFAFA)" or "Crisp Very Light Gray (#F5F5F5)"
143
- - Text: "Charcoal Near-Black (#2C2C2C)" or "Soft Warm Gray (#6B6B6B)"
144
-
145
- ### Component Prompts
146
- - "Create a product card with gently rounded corners, full-bleed square product image, and whisper-soft shadow on hover"
147
- - "Design a primary call-to-action button in Deep Muted Teal-Navy (#294056) with subtle rounded corners and comfortable padding"
148
- - "Add a navigation bar with generous spacing between items, using medium-weight Manrope with subtle uppercase and expanded letter-spacing"
149
-
150
- ### Incremental Iteration
151
- When refining existing screens:
152
- 1. Focus on ONE component at a time (e.g., "Update the product grid cards")
153
- 2. Be specific about what to change (e.g., "Increase the internal padding of product cards from 1.5rem to 2rem")
154
- 3. Reference this design system language consistently