ai-developer-skill-os 7.0.2 → 7.5.1
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/.agents/AGENTS.md +44 -88
- package/.agents/CHANGELOG.md +70 -0
- package/.agents/LICENSE +21 -0
- package/.agents/README.md +100 -0
- package/.agents/docs/CHI_TIET_SKILLS.md +126 -0
- package/.agents/docs/GOVERNANCE.md +40 -0
- package/.agents/docs/HUONG_DAN_SU_DUNG.md +120 -0
- package/.agents/docs/SPEC.md +87 -0
- package/.agents/docs/adr/0001-intent-based-architecture.md +19 -0
- package/.agents/docs/adr/0002-kernel-freeze.md +21 -0
- package/.agents/docs/adr/0003-risk-based-verification.md +20 -0
- package/.agents/docs/adr/0004-progressive-evidence.md +19 -0
- package/.agents/docs/skill-classification.md +25 -0
- package/.agents/skills/qk-access-policy/SKILL.md +179 -0
- package/.agents/skills/qk-ai-builder/SKILL.md +215 -0
- package/.agents/skills/qk-api-lifecycle/SKILL.md +176 -0
- package/.agents/skills/qk-bug-resolution/SKILL.md +307 -0
- package/.agents/skills/qk-context-loader/SKILL.md +218 -0
- package/.agents/skills/qk-data-lifecycle/SKILL.md +192 -0
- package/.agents/skills/qk-db-optimizer/SKILL.md +196 -0
- package/.agents/skills/qk-docs/SKILL.md +198 -0
- package/.agents/skills/qk-engineering-standard/SKILL.md +351 -0
- package/.agents/skills/qk-engineering-standard/rules/backend.md +122 -0
- package/.agents/skills/qk-engineering-standard/rules/database.md +3 -0
- package/.agents/skills/qk-engineering-standard/rules/frontend.md +152 -0
- package/.agents/skills/qk-engineering-standard/rules/security.md +3 -0
- package/.agents/skills/qk-engineering-standard/rules/testing.md +3 -0
- package/.agents/skills/qk-fe-api-integration/SKILL.md +326 -0
- package/.agents/skills/qk-feature-delivery/SKILL.md +305 -0
- package/.agents/skills/qk-help/SKILL.md +193 -0
- package/.agents/skills/qk-orchestrator/SKILL.md +278 -0
- package/.agents/skills/qk-orchestrator/references/routing-table.md +78 -0
- package/.agents/skills/qk-production-release/SKILL.md +284 -0
- package/.agents/skills/qk-project-bootstrap/SKILL.md +235 -0
- package/.agents/skills/qk-project-health/SKILL.md +199 -0
- package/.agents/skills/qk-project-memory/SKILL.md +218 -0
- package/.agents/skills/qk-system-evolution/SKILL.md +281 -0
- package/.agents/skills/qk-ui-audit/SKILL.md +315 -0
- package/.agents/skills/qk-ui-audit/references/anti-slop-checklist.md +136 -0
- package/.agents/skills/qk-ui-builder/SKILL.md +446 -0
- package/.agents/skills/qk-ui-builder/references/anti-patterns.md +295 -0
- package/.agents/skills/qk-ui-builder/references/color.md +115 -0
- package/.agents/skills/qk-ui-builder/references/component-cookbook.md +1194 -0
- package/.agents/skills/qk-ui-builder/references/copy.md +250 -0
- package/.agents/skills/qk-ui-builder/references/interaction-and-states.md +115 -0
- package/.agents/skills/qk-ui-builder/references/layout-and-space.md +111 -0
- package/.agents/skills/qk-ui-builder/references/macrostructures/01-bento-grid.md +48 -0
- package/.agents/skills/qk-ui-builder/references/macrostructures/02-long-document.md +50 -0
- package/.agents/skills/qk-ui-builder/references/macrostructures/03-marquee-hero.md +51 -0
- package/.agents/skills/qk-ui-builder/references/macrostructures/04-stat-led.md +49 -0
- package/.agents/skills/qk-ui-builder/references/macrostructures/05-workbench.md +44 -0
- package/.agents/skills/qk-ui-builder/references/macrostructures/06-conversational-faq.md +50 -0
- package/.agents/skills/qk-ui-builder/references/macrostructures/07-manifesto.md +51 -0
- package/.agents/skills/qk-ui-builder/references/macrostructures/08-photographic.md +50 -0
- package/.agents/skills/qk-ui-builder/references/macrostructures/09-quote-led.md +50 -0
- package/.agents/skills/qk-ui-builder/references/macrostructures/11-catalogue.md +49 -0
- package/.agents/skills/qk-ui-builder/references/macrostructures/12-letter.md +49 -0
- package/.agents/skills/qk-ui-builder/references/macrostructures/13-index-first.md +49 -0
- package/.agents/skills/qk-ui-builder/references/macrostructures/14-narrative-workflow.md +48 -0
- package/.agents/skills/qk-ui-builder/references/macrostructures/15-split-studio.md +48 -0
- package/.agents/skills/qk-ui-builder/references/macrostructures/16-feature-stack.md +51 -0
- package/.agents/skills/qk-ui-builder/references/macrostructures/17-type-specimen.md +48 -0
- package/.agents/skills/qk-ui-builder/references/macrostructures/18-portfolio-grid.md +48 -0
- package/.agents/skills/qk-ui-builder/references/macrostructures/19-map-diagram.md +50 -0
- package/.agents/skills/qk-ui-builder/references/macrostructures/20-ecosystem-index.md +48 -0
- package/.agents/skills/qk-ui-builder/references/macrostructures/21-component-playground.md +45 -0
- package/.agents/skills/qk-ui-builder/references/macrostructures.md +38 -0
- package/.agents/skills/qk-ui-builder/references/motion.md +95 -0
- package/.agents/skills/qk-ui-builder/references/responsive.md +115 -0
- package/.agents/skills/qk-ui-builder/references/slop-test.md +135 -0
- package/.agents/skills/qk-ui-builder/references/structure.md +280 -0
- package/.agents/skills/qk-ui-builder/references/themes/atmospheric.md +53 -0
- package/.agents/skills/qk-ui-builder/references/themes/carnival.md +52 -0
- package/.agents/skills/qk-ui-builder/references/themes/cobalt.md +52 -0
- package/.agents/skills/qk-ui-builder/references/themes/editorial.md +52 -0
- package/.agents/skills/qk-ui-builder/references/themes/garden.md +52 -0
- package/.agents/skills/qk-ui-builder/references/themes/hum.md +52 -0
- package/.agents/skills/qk-ui-builder/references/themes/lumen.md +52 -0
- package/.agents/skills/qk-ui-builder/references/themes/midnight.md +52 -0
- package/.agents/skills/qk-ui-builder/references/themes/modern-minimal.md +52 -0
- package/.agents/skills/qk-ui-builder/references/themes/playful.md +52 -0
- package/.agents/skills/qk-ui-builder/references/themes/specimen.md +52 -0
- package/.agents/skills/qk-ui-builder/references/themes/terminal.md +52 -0
- package/.agents/skills/qk-ui-builder/references/typography.md +129 -0
- package/.agents/skills/qk-ui-system-builder/SKILL.md +221 -0
- package/.agents/skills/qk-validation-gate/SKILL.md +359 -0
- package/.agents/skills.json +819 -0
- package/.github/workflows/ci.yml +1 -1
- package/CHANGELOG.md +2 -1
- package/CLAUDE.md +110 -0
- package/README.md +52 -10
- package/add_lang.js +21 -0
- package/add_lang.py +25 -0
- package/add_sections.py +53 -0
- package/bin/install.js +225 -170
- package/bin/lint.js +123 -0
- package/docs/CHI_TIET_SKILLS.md +27 -26
- package/docs/HUONG_DAN_SU_DUNG.md +3 -3
- package/docs/SPEC.md +70 -20
- package/framework/decision-primitives.md +2 -1
- package/framework/skill-schema.md +310 -0
- package/package.json +16 -5
- package/patch.js +15 -0
- package/patch.py +89 -0
- package/patch2.py +83 -0
- package/skills/_archive_old_skills/qk-accessibility-audit/SKILL.md +1 -0
- package/skills/_archive_old_skills/qk-agent-orchestrator/SKILL.md +1 -0
- package/skills/_archive_old_skills/qk-api-integration/SKILL.md +1 -0
- package/skills/_archive_old_skills/qk-auth-security/SKILL.md +1 -0
- package/skills/_archive_old_skills/qk-backend-architecture/SKILL.md +1 -0
- package/skills/_archive_old_skills/qk-bug-fix/SKILL.md +1 -0
- package/skills/_archive_old_skills/qk-component-generator/SKILL.md +1 -0
- package/skills/_archive_old_skills/qk-context-manager/SKILL.md +1 -0
- package/skills/_archive_old_skills/qk-database-engineer/SKILL.md +1 -0
- package/skills/_archive_old_skills/qk-deployment/SKILL.md +1 -0
- package/skills/_archive_old_skills/qk-design-system/SKILL.md +1 -0
- package/skills/_archive_old_skills/qk-form-builder/SKILL.md +1 -0
- package/skills/_archive_old_skills/qk-frontend-architecture/SKILL.md +1 -0
- package/skills/_archive_old_skills/qk-frontend-debug/SKILL.md +1 -0
- package/skills/_archive_old_skills/qk-frontend-performance/SKILL.md +1 -0
- package/skills/_archive_old_skills/qk-frontend-testing/SKILL.md +1 -0
- package/skills/_archive_old_skills/qk-git-engineer/SKILL.md +1 -0
- package/skills/_archive_old_skills/qk-help/SKILL.md +1 -0
- package/skills/_archive_old_skills/qk-migration/SKILL.md +1 -0
- package/skills/_archive_old_skills/qk-project-audit/SKILL.md +1 -0
- package/skills/_archive_old_skills/qk-refactor/SKILL.md +1 -0
- package/skills/_archive_old_skills/qk-state-management/SKILL.md +1 -0
- package/skills/_archive_old_skills/qk-table-crud-generator/SKILL.md +1 -0
- package/skills/_archive_old_skills/qk-ui-builder/SKILL.md +1 -0
- package/skills/_template/SKILL.md +239 -0
- package/skills/qk-access-policy/SKILL.md +180 -39
- package/skills/qk-ai-builder/SKILL.md +216 -40
- package/skills/qk-api-lifecycle/SKILL.md +177 -46
- package/skills/qk-bug-resolution/SKILL.md +308 -46
- package/skills/qk-context-loader/SKILL.md +219 -43
- package/skills/qk-data-lifecycle/SKILL.md +193 -44
- package/skills/qk-db-optimizer/SKILL.md +197 -41
- package/skills/qk-docs/SKILL.md +199 -40
- package/skills/qk-engineering-standard/SKILL.md +352 -42
- package/skills/qk-fe-api-integration/SKILL.md +327 -55
- package/skills/qk-feature-delivery/SKILL.md +306 -48
- package/skills/qk-help/SKILL.md +179 -23
- package/skills/qk-orchestrator/SKILL.md +279 -42
- package/skills/qk-orchestrator/references/routing-table.md +78 -0
- package/skills/qk-production-release/SKILL.md +285 -41
- package/skills/qk-project-bootstrap/SKILL.md +236 -38
- package/skills/qk-project-health/SKILL.md +200 -40
- package/skills/qk-project-memory/SKILL.md +219 -40
- package/skills/qk-system-evolution/SKILL.md +282 -40
- package/skills/qk-ui-audit/SKILL.md +316 -42
- package/skills/qk-ui-audit/references/anti-slop-checklist.md +136 -0
- package/skills/qk-ui-builder/SKILL.md +447 -0
- package/skills/qk-ui-builder/references/anti-patterns.md +295 -0
- package/skills/qk-ui-builder/references/color.md +115 -0
- package/skills/qk-ui-builder/references/component-cookbook.md +1194 -0
- package/skills/qk-ui-builder/references/copy.md +250 -0
- package/skills/qk-ui-builder/references/interaction-and-states.md +115 -0
- package/skills/qk-ui-builder/references/layout-and-space.md +111 -0
- package/skills/qk-ui-builder/references/macrostructures/01-bento-grid.md +48 -0
- package/skills/qk-ui-builder/references/macrostructures/02-long-document.md +50 -0
- package/skills/qk-ui-builder/references/macrostructures/03-marquee-hero.md +51 -0
- package/skills/qk-ui-builder/references/macrostructures/04-stat-led.md +49 -0
- package/skills/qk-ui-builder/references/macrostructures/05-workbench.md +44 -0
- package/skills/qk-ui-builder/references/macrostructures/06-conversational-faq.md +50 -0
- package/skills/qk-ui-builder/references/macrostructures/07-manifesto.md +51 -0
- package/skills/qk-ui-builder/references/macrostructures/08-photographic.md +50 -0
- package/skills/qk-ui-builder/references/macrostructures/09-quote-led.md +50 -0
- package/skills/qk-ui-builder/references/macrostructures/11-catalogue.md +49 -0
- package/skills/qk-ui-builder/references/macrostructures/12-letter.md +49 -0
- package/skills/qk-ui-builder/references/macrostructures/13-index-first.md +49 -0
- package/skills/qk-ui-builder/references/macrostructures/14-narrative-workflow.md +48 -0
- package/skills/qk-ui-builder/references/macrostructures/15-split-studio.md +48 -0
- package/skills/qk-ui-builder/references/macrostructures/16-feature-stack.md +51 -0
- package/skills/qk-ui-builder/references/macrostructures/17-type-specimen.md +48 -0
- package/skills/qk-ui-builder/references/macrostructures/18-portfolio-grid.md +48 -0
- package/skills/qk-ui-builder/references/macrostructures/19-map-diagram.md +50 -0
- package/skills/qk-ui-builder/references/macrostructures/20-ecosystem-index.md +48 -0
- package/skills/qk-ui-builder/references/macrostructures/21-component-playground.md +45 -0
- package/skills/qk-ui-builder/references/macrostructures.md +38 -0
- package/skills/qk-ui-builder/references/motion.md +95 -0
- package/skills/qk-ui-builder/references/responsive.md +115 -0
- package/skills/qk-ui-builder/references/slop-test.md +135 -0
- package/skills/qk-ui-builder/references/structure.md +280 -0
- package/skills/qk-ui-builder/references/themes/atmospheric.md +53 -0
- package/skills/qk-ui-builder/references/themes/carnival.md +52 -0
- package/skills/qk-ui-builder/references/themes/cobalt.md +52 -0
- package/skills/qk-ui-builder/references/themes/editorial.md +52 -0
- package/skills/qk-ui-builder/references/themes/garden.md +52 -0
- package/skills/qk-ui-builder/references/themes/hum.md +52 -0
- package/skills/qk-ui-builder/references/themes/lumen.md +52 -0
- package/skills/qk-ui-builder/references/themes/midnight.md +52 -0
- package/skills/qk-ui-builder/references/themes/modern-minimal.md +52 -0
- package/skills/qk-ui-builder/references/themes/playful.md +52 -0
- package/skills/qk-ui-builder/references/themes/specimen.md +52 -0
- package/skills/qk-ui-builder/references/themes/terminal.md +52 -0
- package/skills/qk-ui-builder/references/typography.md +129 -0
- package/skills/qk-ui-system-builder/SKILL.md +222 -43
- package/skills/qk-validation-gate/SKILL.md +360 -40
- package/skills.json +815 -825
- package/specs/fixtures/user-payload.json +12 -0
- package/specs/regressions/api-integration-null-fields.yaml +19 -0
- package/temp_fix.js +61 -0
- package/tests/registry.test.js +1 -1
- package/update_template.js +28 -0
- package/skills/qk-design-to-code/SKILL.md +0 -46
- package/skills/qk-policy-engine/SKILL.md +0 -39
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
# Theme: Modern Minimal
|
|
2
|
+
|
|
3
|
+
**Genre:** modern-minimal
|
|
4
|
+
**Use case:** SaaS, startups, portfolios
|
|
5
|
+
|
|
6
|
+
## Axes
|
|
7
|
+
|
|
8
|
+
| Axis | Value |
|
|
9
|
+
|------|-------|
|
|
10
|
+
| Paper band | mid (30–85% lightness) |
|
|
11
|
+
| Display style | geometric-sans |
|
|
12
|
+
| Accent hue | neutral |
|
|
13
|
+
|
|
14
|
+
## Token Overrides
|
|
15
|
+
|
|
16
|
+
```css
|
|
17
|
+
:root {
|
|
18
|
+
--color-background: hsl(220, 15%, 98%);
|
|
19
|
+
--color-surface: hsl(220, 15%, 100%);
|
|
20
|
+
--color-text: hsl(220, 20%, 12%);
|
|
21
|
+
--color-text-muted: hsl(220, 10%, 50%);
|
|
22
|
+
--color-accent: hsl(220, 15%, 45%);
|
|
23
|
+
--color-accent-hover: hsl(220, 15%, 38%);
|
|
24
|
+
--font-display: 'Inter', 'Helvetica Neue', sans-serif;
|
|
25
|
+
--font-body: 'Inter', 'Helvetica Neue', sans-serif;
|
|
26
|
+
--radius-sm: 6px;
|
|
27
|
+
--radius-md: 8px;
|
|
28
|
+
--shadow-sm: 0 1px 2px hsl(220, 15%, 90%);
|
|
29
|
+
--shadow-md: 0 4px 12px hsl(220, 15%, 90%);
|
|
30
|
+
}
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
## Macrostructure Affinity
|
|
34
|
+
|
|
35
|
+
- ✅ Workbench
|
|
36
|
+
- ✅ Stat-Led
|
|
37
|
+
- ✅ Index-First
|
|
38
|
+
- ❌ Marquee Hero (too noisy)
|
|
39
|
+
- ❌ Manifesto (too expressive)
|
|
40
|
+
|
|
41
|
+
## Anti-Patterns (Modern Minimal-specific)
|
|
42
|
+
|
|
43
|
+
- ❌ Decorative illustrations
|
|
44
|
+
- ❌ Gradient buttons or backgrounds
|
|
45
|
+
- ❌ More than 2 font families
|
|
46
|
+
- ❌ Heavy drop shadows
|
|
47
|
+
|
|
48
|
+
## Voice
|
|
49
|
+
|
|
50
|
+
- Single-word actions: "Sign in", "Pricing", "Docs"
|
|
51
|
+
- No decorative copy
|
|
52
|
+
- Metrics and social proof prominent
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
# Theme: Playful
|
|
2
|
+
|
|
3
|
+
**Genre:** playful
|
|
4
|
+
**Use case:** games, kids, entertainment
|
|
5
|
+
|
|
6
|
+
## Axes
|
|
7
|
+
|
|
8
|
+
| Axis | Value |
|
|
9
|
+
|------|-------|
|
|
10
|
+
| Paper band | light (85–100% lightness) |
|
|
11
|
+
| Display style | rounded-sans |
|
|
12
|
+
| Accent hue | warm (30–60°) |
|
|
13
|
+
|
|
14
|
+
## Token Overrides
|
|
15
|
+
|
|
16
|
+
```css
|
|
17
|
+
:root {
|
|
18
|
+
--color-background: hsl(45, 60%, 97%);
|
|
19
|
+
--color-surface: hsl(45, 60%, 100%);
|
|
20
|
+
--color-text: hsl(45, 50%, 12%);
|
|
21
|
+
--color-text-muted: hsl(45, 20%, 45%);
|
|
22
|
+
--color-accent: hsl(35, 85%, 55%);
|
|
23
|
+
--color-accent-hover: hsl(35, 85%, 48%);
|
|
24
|
+
--font-display: 'Nunito', 'Varela Round', sans-serif;
|
|
25
|
+
--font-body: 'Nunito', 'Varela Round', sans-serif;
|
|
26
|
+
--radius-sm: 12px;
|
|
27
|
+
--radius-md: 16px;
|
|
28
|
+
--shadow-sm: 0 2px 4px hsl(45, 60%, 85%);
|
|
29
|
+
--shadow-md: 0 6px 16px hsl(45, 60%, 85%);
|
|
30
|
+
}
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
## Macrostructure Affinity
|
|
34
|
+
|
|
35
|
+
- ✅ Bento Grid
|
|
36
|
+
- ✅ Marquee Hero
|
|
37
|
+
- ✅ Feature Stack
|
|
38
|
+
- ❌ Long Document (too text-heavy)
|
|
39
|
+
- ❌ Quote-Led (too serious)
|
|
40
|
+
|
|
41
|
+
## Anti-Patterns (Playful-specific)
|
|
42
|
+
|
|
43
|
+
- ❌ Serious or corporate tones
|
|
44
|
+
- ❌ Monochrome palettes
|
|
45
|
+
- ❌ Minimal whitespace (dense layouts)
|
|
46
|
+
- ❌ Sharp corners or rigid grids
|
|
47
|
+
|
|
48
|
+
## Voice
|
|
49
|
+
|
|
50
|
+
- Exclamation marks and emoji allowed
|
|
51
|
+
- Action verbs: "Play", "Join", "Explore"
|
|
52
|
+
- Friendly, inclusive language
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
# Theme: Specimen
|
|
2
|
+
|
|
3
|
+
**Genre:** editorial
|
|
4
|
+
**Use case:** design systems, documentation
|
|
5
|
+
|
|
6
|
+
## Axes
|
|
7
|
+
|
|
8
|
+
| Axis | Value |
|
|
9
|
+
|------|-------|
|
|
10
|
+
| Paper band | mid (30–85% lightness) |
|
|
11
|
+
| Display style | high-contrast-serif |
|
|
12
|
+
| Accent hue | neutral |
|
|
13
|
+
|
|
14
|
+
## Token Overrides
|
|
15
|
+
|
|
16
|
+
```css
|
|
17
|
+
:root {
|
|
18
|
+
--color-background: hsl(40, 10%, 96%);
|
|
19
|
+
--color-surface: hsl(40, 10%, 100%);
|
|
20
|
+
--color-text: hsl(40, 15%, 8%);
|
|
21
|
+
--color-text-muted: hsl(40, 5%, 45%);
|
|
22
|
+
--color-accent: hsl(40, 5%, 45%);
|
|
23
|
+
--color-accent-hover: hsl(40, 5%, 38%);
|
|
24
|
+
--font-display: 'Playfair Display', Georgia, serif;
|
|
25
|
+
--font-body: 'Source Sans 3', 'Helvetica Neue', sans-serif;
|
|
26
|
+
--radius-sm: 4px;
|
|
27
|
+
--radius-md: 4px;
|
|
28
|
+
--shadow-sm: 0 1px 2px hsl(40, 15%, 90%);
|
|
29
|
+
--shadow-md: 0 4px 12px hsl(40, 15%, 90%);
|
|
30
|
+
}
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
## Macrostructure Affinity
|
|
34
|
+
|
|
35
|
+
- ✅ Type Specimen
|
|
36
|
+
- ✅ Index-First
|
|
37
|
+
- ✅ Component Playground
|
|
38
|
+
- ❌ Marquee Hero (too playful)
|
|
39
|
+
- ❌ Bento Grid (too casual)
|
|
40
|
+
|
|
41
|
+
## Anti-Patterns (Specimen-specific)
|
|
42
|
+
|
|
43
|
+
- ❌ Playful illustrations or mascots
|
|
44
|
+
- ❌ Warm saturated accents (orange, coral)
|
|
45
|
+
- ❌ Rounded corners > 4px
|
|
46
|
+
- ❌ Gradient hero backgrounds
|
|
47
|
+
|
|
48
|
+
## Voice
|
|
49
|
+
|
|
50
|
+
- Typographic precision: "Style guide", "Type scale", "Spacing rhythm"
|
|
51
|
+
- Noun-first labels: "Design tokens", "Component states"
|
|
52
|
+
- Neutral, authoritative tone
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
# Theme: Terminal
|
|
2
|
+
|
|
3
|
+
**Genre:** tech
|
|
4
|
+
**Use case:** CLI tools, developer tools, terminals
|
|
5
|
+
|
|
6
|
+
## Axes
|
|
7
|
+
|
|
8
|
+
| Axis | Value |
|
|
9
|
+
|------|-------|
|
|
10
|
+
| Paper band | dark (0–30% lightness) |
|
|
11
|
+
| Display style | mono |
|
|
12
|
+
| Accent hue | phosphor green (120–150°) |
|
|
13
|
+
|
|
14
|
+
## Token Overrides
|
|
15
|
+
|
|
16
|
+
```css
|
|
17
|
+
:root {
|
|
18
|
+
--color-background: hsl(220, 15%, 4%);
|
|
19
|
+
--color-surface: hsl(220, 15%, 8%);
|
|
20
|
+
--color-text: hsl(120, 30%, 75%);
|
|
21
|
+
--color-text-muted: hsl(120, 10%, 45%);
|
|
22
|
+
--color-accent: hsl(120, 60%, 55%);
|
|
23
|
+
--color-accent-hover: hsl(120, 60%, 48%);
|
|
24
|
+
--font-display: 'JetBrains Mono', 'Fira Code', monospace;
|
|
25
|
+
--font-body: 'JetBrains Mono', 'Fira Code', monospace;
|
|
26
|
+
--radius-sm: 0px;
|
|
27
|
+
--radius-md: 0px;
|
|
28
|
+
--shadow-sm: none;
|
|
29
|
+
--shadow-md: none;
|
|
30
|
+
}
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
## Macrostructure Affinity
|
|
34
|
+
|
|
35
|
+
- ✅ Workbench
|
|
36
|
+
- ✅ Component Playground
|
|
37
|
+
- ✅ Stat-Led
|
|
38
|
+
- ❌ Manifesto (too expressive)
|
|
39
|
+
- ❌ Photographic (too visual)
|
|
40
|
+
|
|
41
|
+
## Anti-Patterns (Terminal-specific)
|
|
42
|
+
|
|
43
|
+
- ❌ Serif or display fonts
|
|
44
|
+
- ❌ Warm accent hues
|
|
45
|
+
- ❌ Decorative shadows or borders
|
|
46
|
+
- ❌ Smooth transitions/animations
|
|
47
|
+
|
|
48
|
+
## Voice
|
|
49
|
+
|
|
50
|
+
- Command-line syntax: `$ npm install`, `> init()`
|
|
51
|
+
- Terse, imperative: "Run", "Deploy", "Configure"
|
|
52
|
+
- Status codes and badges
|
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
# Typography
|
|
2
|
+
|
|
3
|
+
Foundational rules for font selection, type scale, and textual hierarchy. These rules exist to guarantee readable, professional, and consistent type across every generated UI.
|
|
4
|
+
|
|
5
|
+
## The 2+1 Rule
|
|
6
|
+
|
|
7
|
+
Use **at most 2 font families + 1 monospace** per project. Exceeding this causes visual noise and slows load time.
|
|
8
|
+
|
|
9
|
+
- **Display / Heading family** (1): used for titles, hero text.
|
|
10
|
+
- **Body / UI family** (1): used for paragraphs, labels, controls.
|
|
11
|
+
- **Monospace** (1, optional): used for code, IDs, numeric tables, logs.
|
|
12
|
+
|
|
13
|
+
```css
|
|
14
|
+
:root {
|
|
15
|
+
--font-display: "Playfair Display", Georgia, serif;
|
|
16
|
+
--font-body: "Inter", system-ui, sans-serif;
|
|
17
|
+
--font-mono: "JetBrains Mono", ui-monospace, monospace;
|
|
18
|
+
}
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
If you only need one family, the body family can double as the display family. Do not introduce a third decorative family.
|
|
22
|
+
|
|
23
|
+
## Font Catalog
|
|
24
|
+
|
|
25
|
+
Pick from this approved catalog. Prefer fonts that share the same optical quality and load reliably via Google Fonts or system fallbacks.
|
|
26
|
+
|
|
27
|
+
| Family | Role | Notes |
|
|
28
|
+
| --- | --- | --- |
|
|
29
|
+
| Inter | Body / UI | Neutral, legible at small sizes. Default choice. |
|
|
30
|
+
| Source Serif 4 | Display / Body | Serif companion to Inter; good for reading-heavy UI. |
|
|
31
|
+
| Playfair Display | Display | High-contrast serif for hero/editorial headings. |
|
|
32
|
+
| JetBrains Mono | Mono | Developer-friendly monospace. |
|
|
33
|
+
| Poppins | Display / UI | Geometric, friendly; use sparingly. |
|
|
34
|
+
| Roboto / Roboto Flex | Body / UI | Safe system-adjacent alternative. |
|
|
35
|
+
| IBM Plex Sans / Mono | Body / Mono | Corporate, consistent pairing. |
|
|
36
|
+
|
|
37
|
+
Pairing examples that work:
|
|
38
|
+
- **Inter + Playfair Display + JetBrains Mono** (editorial + code)
|
|
39
|
+
- **Inter + Source Serif 4 + JetBrains Mono** (clean + reading)
|
|
40
|
+
- **Poppins + Inter + JetBrains Mono** (friendly branding)
|
|
41
|
+
|
|
42
|
+
## Type Scale
|
|
43
|
+
|
|
44
|
+
Use only these sizes. Do not invent intermediate sizes.
|
|
45
|
+
|
|
46
|
+
```
|
|
47
|
+
12px caption / meta
|
|
48
|
+
14px small text / secondary
|
|
49
|
+
16px body (base)
|
|
50
|
+
18px lead / intro paragraph
|
|
51
|
+
24px h3 / section title
|
|
52
|
+
32px h2 / page title
|
|
53
|
+
48px h1 / hero
|
|
54
|
+
64px display / marketing hero
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
```css
|
|
58
|
+
:root {
|
|
59
|
+
--text-xs: 0.75rem; /* 12px */
|
|
60
|
+
--text-sm: 0.875rem; /* 14px */
|
|
61
|
+
--text-base: 1rem; /* 16px */
|
|
62
|
+
--text-lg: 1.125rem; /* 18px */
|
|
63
|
+
--text-xl: 1.5rem; /* 24px */
|
|
64
|
+
--text-2xl: 2rem; /* 32px */
|
|
65
|
+
--text-3xl: 3rem; /* 48px */
|
|
66
|
+
--text-4xl: 4rem; /* 64px */
|
|
67
|
+
}
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
## Line Height
|
|
71
|
+
|
|
72
|
+
| Content | Line height |
|
|
73
|
+
| --- | --- |
|
|
74
|
+
| Body text | **1.5** |
|
|
75
|
+
| Headings (h1–h3) | **1.2** |
|
|
76
|
+
| Tight display (64px) | 1.1 |
|
|
77
|
+
|
|
78
|
+
```css
|
|
79
|
+
p, li, label { line-height: 1.5; }
|
|
80
|
+
h1, h2, h3 { line-height: 1.2; }
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
## Hierarchy
|
|
84
|
+
|
|
85
|
+
Establish hierarchy with **size + weight + color**, not decoration.
|
|
86
|
+
|
|
87
|
+
```css
|
|
88
|
+
h1 { font-family: var(--font-display); font-size: var(--text-3xl); font-weight: 700; }
|
|
89
|
+
h2 { font-family: var(--font-display); font-size: var(--text-2xl); font-weight: 600; }
|
|
90
|
+
h3 { font-family: var(--font-body); font-size: var(--text-xl); font-weight: 600; }
|
|
91
|
+
body { font-family: var(--font-body); font-size: var(--text-base); font-weight: 400; }
|
|
92
|
+
.meta { font-size: var(--text-sm); color: var(--color-text-muted); }
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
Keep weight range tight: 400 (body), 500/600 (emphasis), 700 (headings). Avoid 900 unless for a single display word.
|
|
96
|
+
|
|
97
|
+
## Prose Measure
|
|
98
|
+
|
|
99
|
+
Constrain reading width for paragraphs to **45–75 characters** (`ch`).
|
|
100
|
+
|
|
101
|
+
```css
|
|
102
|
+
.prose {
|
|
103
|
+
max-width: 65ch;
|
|
104
|
+
font-size: var(--text-base);
|
|
105
|
+
line-height: 1.5;
|
|
106
|
+
}
|
|
107
|
+
```
|
|
108
|
+
|
|
109
|
+
For multi-column or card text, keep each text block within this measure. Never let body copy stretch across a full 1200px container.
|
|
110
|
+
|
|
111
|
+
## Ban List
|
|
112
|
+
|
|
113
|
+
Do **not** use these as an identity or UI font:
|
|
114
|
+
|
|
115
|
+
- Comic Sans
|
|
116
|
+
- Papyrus
|
|
117
|
+
- Bradley Hand
|
|
118
|
+
- Any `cursive` generic family used as a primary brand font
|
|
119
|
+
- Other "novelty" fonts that undermine legibility
|
|
120
|
+
|
|
121
|
+
System fallbacks (`system-ui`, `sans-serif`, `serif`, `monospace`) are allowed only as graceful degradation, never as the chosen aesthetic.
|
|
122
|
+
|
|
123
|
+
## Practical Checklist
|
|
124
|
+
|
|
125
|
+
- [ ] At most 2 families + 1 mono.
|
|
126
|
+
- [ ] Sizes only from the 8-step scale.
|
|
127
|
+
- [ ] Body line-height 1.5, headings 1.2.
|
|
128
|
+
- [ ] Prose capped at 65ch.
|
|
129
|
+
- [ ] No banned novelty fonts.
|
|
@@ -0,0 +1,221 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: qk-ui-system-builder
|
|
3
|
+
category: frontend
|
|
4
|
+
version: 7.5.0
|
|
5
|
+
description: "Xây dựng Design System và token library từ DESIGN.md — không tự đặt ra token ngoài contract."
|
|
6
|
+
platforms: [antigravity, claude-code, cursor, windsurf, kilo-code]
|
|
7
|
+
execution_mode: deterministic
|
|
8
|
+
cost: medium
|
|
9
|
+
latency: medium
|
|
10
|
+
risk: low
|
|
11
|
+
side_effects: edit_files
|
|
12
|
+
produces: [code, tokens]
|
|
13
|
+
consumes: [design-md]
|
|
14
|
+
token_budget:
|
|
15
|
+
max_files_read: 2
|
|
16
|
+
max_lines_per_read: 100
|
|
17
|
+
max_shell_commands: 0
|
|
18
|
+
stop_early: true
|
|
19
|
+
exit_codes: [SUCCESS, BLOCKED, FAILED, PARTIAL]
|
|
20
|
+
skill_version: 7.5.0
|
|
21
|
+
runtime_version: 1
|
|
22
|
+
schema_version: 2
|
|
23
|
+
---
|
|
24
|
+
|
|
25
|
+
# qk-ui-system-builder — Design System Constructor
|
|
26
|
+
|
|
27
|
+
> **Language rule:** Code, identifiers, file names ? English. Explanations, summaries ? Vietnamese.
|
|
28
|
+
|
|
29
|
+
---
|
|
30
|
+
|
|
31
|
+
## Preconditions
|
|
32
|
+
- [ ] `DESIGN.md` exists with color, spacing, typography tokens
|
|
33
|
+
|
|
34
|
+
```
|
|
35
|
+
On missing precondition:
|
|
36
|
+
EXIT: BLOCKED
|
|
37
|
+
Message: "DESIGN.md missing. Run qk-project-bootstrap to create one."
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
---
|
|
41
|
+
|
|
42
|
+
## Scope
|
|
43
|
+
- ✅ Extract tokens from DESIGN.md ONLY — never invent
|
|
44
|
+
- ✅ Generate CSS custom properties (variables) or framework theme
|
|
45
|
+
- ✅ Ensure all components are accessible (A11y)
|
|
46
|
+
|
|
47
|
+
## Non-Goals
|
|
48
|
+
- ❌ Invent tokens not in DESIGN.md (e.g., standard Tailwind defaults)
|
|
49
|
+
- ❌ Create duplicate tokens for same visual value
|
|
50
|
+
- ❌ Generate component library without token foundation
|
|
51
|
+
|
|
52
|
+
---
|
|
53
|
+
|
|
54
|
+
## Token Naming Convention
|
|
55
|
+
|
|
56
|
+
```css
|
|
57
|
+
/* Colors — HSL always */
|
|
58
|
+
--color-[role]-[shade]: hsl(H, S%, L%);
|
|
59
|
+
/* Example: */
|
|
60
|
+
--color-primary-500: hsl(220, 80%, 55%);
|
|
61
|
+
--color-surface-100: hsl(220, 15%, 98%);
|
|
62
|
+
|
|
63
|
+
/* Spacing — scale-based */
|
|
64
|
+
--space-[n]: [n * base]px;
|
|
65
|
+
/* Example: */
|
|
66
|
+
--space-1: 4px; --space-2: 8px; --space-4: 16px;
|
|
67
|
+
|
|
68
|
+
/* Typography */
|
|
69
|
+
--font-[family]: '[Name]', fallback;
|
|
70
|
+
--font-size-[scale]: [value]rem;
|
|
71
|
+
--font-weight-[name]: [value];
|
|
72
|
+
|
|
73
|
+
/* Border Radius */
|
|
74
|
+
--radius-[size]: [value]px;
|
|
75
|
+
|
|
76
|
+
/* Shadows */
|
|
77
|
+
--shadow-[level]: [value];
|
|
78
|
+
|
|
79
|
+
/* Animation */
|
|
80
|
+
--duration-[speed]: [value]ms;
|
|
81
|
+
--ease-[type]: [cubic-bezier or keyword];
|
|
82
|
+
|
|
83
|
+
/* Z-index */
|
|
84
|
+
--z-[layer]: [value]; /* dropdown=100, modal=200, toast=300 */
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
---
|
|
88
|
+
|
|
89
|
+
## Dark/Light Mode Pattern
|
|
90
|
+
```css
|
|
91
|
+
:root {
|
|
92
|
+
--color-background: hsl(0, 0%, 100%);
|
|
93
|
+
--color-text: hsl(220, 15%, 10%);
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
[data-theme="dark"] {
|
|
97
|
+
--color-background: hsl(220, 15%, 10%);
|
|
98
|
+
--color-text: hsl(220, 10%, 90%);
|
|
99
|
+
}
|
|
100
|
+
```
|
|
101
|
+
|
|
102
|
+
---
|
|
103
|
+
|
|
104
|
+
## Workflow
|
|
105
|
+
|
|
106
|
+
### Phase 1 — Extract from DESIGN.md
|
|
107
|
+
1. Read DESIGN.md → list all defined tokens
|
|
108
|
+
2. Categorize: Colors / Spacing / Typography / Radius / Shadow / Animation
|
|
109
|
+
|
|
110
|
+
### Phase 2 — Generate Token File
|
|
111
|
+
1. Create `src/styles/tokens.css` (or equivalent)
|
|
112
|
+
2. Apply naming convention above
|
|
113
|
+
3. Add dark mode variants if DESIGN.md specifies
|
|
114
|
+
|
|
115
|
+
### Phase 3 — Verify No Invented Tokens
|
|
116
|
+
1. Cross-check: every generated token has source in DESIGN.md
|
|
117
|
+
2. Flag any token that was "inferred" vs explicitly defined
|
|
118
|
+
|
|
119
|
+
**Decision:**
|
|
120
|
+
```
|
|
121
|
+
IF all tokens sourced from DESIGN.md → EXIT: SUCCESS
|
|
122
|
+
IF some tokens inferred (MEDIUM confidence) → EXIT: PARTIAL, list them
|
|
123
|
+
```
|
|
124
|
+
|
|
125
|
+
---
|
|
126
|
+
|
|
127
|
+
|
|
128
|
+
---
|
|
129
|
+
|
|
130
|
+
## Priority Order
|
|
131
|
+
|
|
132
|
+
|
|
133
|
+
---
|
|
134
|
+
|
|
135
|
+
## Output Format
|
|
136
|
+
|
|
137
|
+
|
|
138
|
+
---
|
|
139
|
+
## Exit Codes
|
|
140
|
+
| Code | Meaning | When |
|
|
141
|
+
|------|---------|------|
|
|
142
|
+
| SUCCESS | All tokens extracted from DESIGN.md, naming convention applied | All generated |
|
|
143
|
+
| PARTIAL | Some tokens inferred (not explicitly in DESIGN.md) | Inferred values used |
|
|
144
|
+
| BLOCKED | DESIGN.md missing or has no tokens | Cannot start |
|
|
145
|
+
| FAILED | Token conflicts detected (duplicate values, naming collision) | Conflict |
|
|
146
|
+
|
|
147
|
+
---
|
|
148
|
+
|
|
149
|
+
## Confidence Model
|
|
150
|
+
| Level | Condition | Action |
|
|
151
|
+
|-------|-----------|--------|
|
|
152
|
+
| HIGH | Token explicitly exists in DESIGN.md | Extract and map |
|
|
153
|
+
| MEDIUM | Token value inferred or estimated based on related tokens | Note assumption |
|
|
154
|
+
| LOW | Core scale missing entirely (e.g. no spacing definition) | EXIT: BLOCKED |
|
|
155
|
+
|
|
156
|
+
---
|
|
157
|
+
|
|
158
|
+
## Severity
|
|
159
|
+
| Level | Definition | Example |
|
|
160
|
+
|-------|-----------|---------|
|
|
161
|
+
| CRITICAL | Hardcoded values injected without being tokens | Missing the point of the system |
|
|
162
|
+
| HIGH | Token naming convention violated | `primary-color` instead of `--color-primary` |
|
|
163
|
+
| MEDIUM | Dark mode not supported | Hardcoded white background |
|
|
164
|
+
| LOW | Unused token generated | Extraneous variables |
|
|
165
|
+
|
|
166
|
+
---
|
|
167
|
+
|
|
168
|
+
## Evidence Format
|
|
169
|
+
```
|
|
170
|
+
[SEVERITY] src/styles/tokens.css:LINE
|
|
171
|
+
Issue: [specific violation or gap]
|
|
172
|
+
Confidence: HIGH
|
|
173
|
+
Fix: [specific change]
|
|
174
|
+
```
|
|
175
|
+
|
|
176
|
+
---
|
|
177
|
+
|
|
178
|
+
## Retry Policy
|
|
179
|
+
```
|
|
180
|
+
Token generation fails
|
|
181
|
+
└─ Check if naming collision or syntax error
|
|
182
|
+
├─ Syntax error → fix CSS/SCSS format → retry
|
|
183
|
+
└─ Collision → deduplicate → retry
|
|
184
|
+
└─ Do NOT auto-retry more than 1 time
|
|
185
|
+
```
|
|
186
|
+
|
|
187
|
+
---
|
|
188
|
+
|
|
189
|
+
## Escalation Rules
|
|
190
|
+
```
|
|
191
|
+
BLOCKED: DESIGN.md missing or empty
|
|
192
|
+
Missing:
|
|
193
|
+
- Valid DESIGN.md with token specifications
|
|
194
|
+
Questions:
|
|
195
|
+
1. Bạn có file design reference nào khác không?
|
|
196
|
+
Recommended Assumptions:
|
|
197
|
+
- Generate default Tailwind-like scale if requested
|
|
198
|
+
```
|
|
199
|
+
|
|
200
|
+
---
|
|
201
|
+
|
|
202
|
+
## Handoff Contract
|
|
203
|
+
### Consumes
|
|
204
|
+
```json
|
|
205
|
+
{
|
|
206
|
+
"from": "user or project-bootstrap",
|
|
207
|
+
"required_fields": ["design_md_path"],
|
|
208
|
+
"optional_fields": ["css_framework", "output_format"]
|
|
209
|
+
}
|
|
210
|
+
```
|
|
211
|
+
### Produces
|
|
212
|
+
```json
|
|
213
|
+
{
|
|
214
|
+
"to": "user or design-to-code",
|
|
215
|
+
"output_fields": ["token_file_path", "inferred_tokens", "exit_code"]
|
|
216
|
+
}
|
|
217
|
+
```
|
|
218
|
+
|
|
219
|
+
---
|
|
220
|
+
|
|
221
|
+
|