ai-developer-skill-os 7.0.2 → 7.5.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/.agents/AGENTS.md +44 -88
- package/.agents/CHANGELOG.md +69 -0
- package/.agents/LICENSE +21 -0
- package/.agents/README.md +59 -0
- package/.agents/_template/BEHAVIOR_SPEC.md +96 -0
- package/.agents/_template/examples/example-en.md +49 -0
- package/.agents/_template/examples/example-vi.md +49 -0
- package/.agents/docs/CHI_TIET_SKILLS.md +125 -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-design-to-code/SKILL.md +285 -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 +277 -0
- package/.agents/skills/qk-orchestrator/references/routing-table.md +77 -0
- package/.agents/skills/qk-production-release/SKILL.md +284 -0
- package/.agents/skills/qk-project-bootstrap/SKILL.md +234 -0
- package/.agents/skills/qk-project-health/SKILL.md +199 -0
- package/.agents/skills/qk-project-memory/SKILL.md +172 -0
- package/.agents/skills/qk-system-evolution/SKILL.md +281 -0
- package/.agents/skills/qk-ui-audit/SKILL.md +314 -0
- package/.agents/skills/qk-ui-audit/references/anti-slop-checklist.md +136 -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/.qk-ai-skill-os/CHANGELOG.md +69 -0
- package/.qk-ai-skill-os/LICENSE +21 -0
- package/.qk-ai-skill-os/README.md +59 -0
- package/.qk-ai-skill-os/_template/BEHAVIOR_SPEC.md +96 -0
- package/.qk-ai-skill-os/_template/examples/example-en.md +49 -0
- package/.qk-ai-skill-os/_template/examples/example-vi.md +49 -0
- package/.qk-ai-skill-os/docs/CHI_TIET_SKILLS.md +125 -0
- package/.qk-ai-skill-os/docs/GOVERNANCE.md +40 -0
- package/.qk-ai-skill-os/docs/HUONG_DAN_SU_DUNG.md +120 -0
- package/.qk-ai-skill-os/docs/SPEC.md +87 -0
- package/.qk-ai-skill-os/docs/adr/0001-intent-based-architecture.md +19 -0
- package/.qk-ai-skill-os/docs/adr/0002-kernel-freeze.md +21 -0
- package/.qk-ai-skill-os/docs/adr/0003-risk-based-verification.md +20 -0
- package/.qk-ai-skill-os/docs/adr/0004-progressive-evidence.md +19 -0
- package/.qk-ai-skill-os/docs/skill-classification.md +25 -0
- package/.qk-ai-skill-os/skills/_archive_old_skills/qk-accessibility-audit/SKILL.md +121 -0
- package/.qk-ai-skill-os/skills/_archive_old_skills/qk-agent-orchestrator/SKILL.md +179 -0
- package/.qk-ai-skill-os/skills/_archive_old_skills/qk-api-integration/SKILL.md +389 -0
- package/.qk-ai-skill-os/skills/_archive_old_skills/qk-auth-security/SKILL.md +96 -0
- package/.qk-ai-skill-os/skills/_archive_old_skills/qk-backend-architecture/SKILL.md +125 -0
- package/.qk-ai-skill-os/skills/_archive_old_skills/qk-bug-fix/SKILL.md +213 -0
- package/.qk-ai-skill-os/skills/_archive_old_skills/qk-component-generator/SKILL.md +136 -0
- package/.qk-ai-skill-os/skills/_archive_old_skills/qk-context-manager/SKILL.md +175 -0
- package/.qk-ai-skill-os/skills/_archive_old_skills/qk-database-engineer/SKILL.md +104 -0
- package/.qk-ai-skill-os/skills/_archive_old_skills/qk-deployment/SKILL.md +96 -0
- package/.qk-ai-skill-os/skills/_archive_old_skills/qk-design-system/SKILL.md +137 -0
- package/.qk-ai-skill-os/skills/_archive_old_skills/qk-form-builder/SKILL.md +140 -0
- package/.qk-ai-skill-os/skills/_archive_old_skills/qk-frontend-architecture/SKILL.md +155 -0
- package/.qk-ai-skill-os/skills/_archive_old_skills/qk-frontend-debug/SKILL.md +133 -0
- package/.qk-ai-skill-os/skills/_archive_old_skills/qk-frontend-performance/SKILL.md +129 -0
- package/.qk-ai-skill-os/skills/_archive_old_skills/qk-frontend-testing/SKILL.md +146 -0
- package/.qk-ai-skill-os/skills/_archive_old_skills/qk-git-engineer/SKILL.md +304 -0
- package/.qk-ai-skill-os/skills/_archive_old_skills/qk-help/SKILL.md +68 -0
- package/.qk-ai-skill-os/skills/_archive_old_skills/qk-migration/SKILL.md +284 -0
- package/.qk-ai-skill-os/skills/_archive_old_skills/qk-project-audit/SKILL.md +280 -0
- package/.qk-ai-skill-os/skills/_archive_old_skills/qk-refactor/SKILL.md +222 -0
- package/.qk-ai-skill-os/skills/_archive_old_skills/qk-state-management/SKILL.md +140 -0
- package/.qk-ai-skill-os/skills/_archive_old_skills/qk-table-crud-generator/SKILL.md +127 -0
- package/.qk-ai-skill-os/skills/_archive_old_skills/qk-ui-builder/SKILL.md +152 -0
- package/.qk-ai-skill-os/skills/_template/SKILL.md +238 -0
- package/.qk-ai-skill-os/skills/qk-access-policy/SKILL.md +179 -0
- package/.qk-ai-skill-os/skills/qk-ai-builder/SKILL.md +221 -0
- package/.qk-ai-skill-os/skills/qk-api-lifecycle/SKILL.md +176 -0
- package/.qk-ai-skill-os/skills/qk-bug-resolution/SKILL.md +307 -0
- package/.qk-ai-skill-os/skills/qk-context-loader/SKILL.md +218 -0
- package/.qk-ai-skill-os/skills/qk-data-lifecycle/SKILL.md +192 -0
- package/.qk-ai-skill-os/skills/qk-db-optimizer/SKILL.md +196 -0
- package/.qk-ai-skill-os/skills/qk-design-to-code/SKILL.md +291 -0
- package/.qk-ai-skill-os/skills/qk-docs/SKILL.md +198 -0
- package/.qk-ai-skill-os/skills/qk-engineering-standard/SKILL.md +351 -0
- package/.qk-ai-skill-os/skills/qk-engineering-standard/rules/backend.md +122 -0
- package/.qk-ai-skill-os/skills/qk-engineering-standard/rules/database.md +3 -0
- package/.qk-ai-skill-os/skills/qk-engineering-standard/rules/frontend.md +152 -0
- package/.qk-ai-skill-os/skills/qk-engineering-standard/rules/security.md +3 -0
- package/.qk-ai-skill-os/skills/qk-engineering-standard/rules/testing.md +3 -0
- package/.qk-ai-skill-os/skills/qk-fe-api-integration/SKILL.md +326 -0
- package/.qk-ai-skill-os/skills/qk-feature-delivery/SKILL.md +305 -0
- package/.qk-ai-skill-os/skills/qk-help/SKILL.md +193 -0
- package/.qk-ai-skill-os/skills/qk-orchestrator/SKILL.md +277 -0
- package/.qk-ai-skill-os/skills/qk-orchestrator/references/routing-table.md +77 -0
- package/.qk-ai-skill-os/skills/qk-production-release/SKILL.md +290 -0
- package/.qk-ai-skill-os/skills/qk-project-bootstrap/SKILL.md +240 -0
- package/.qk-ai-skill-os/skills/qk-project-health/SKILL.md +199 -0
- package/.qk-ai-skill-os/skills/qk-project-memory/SKILL.md +172 -0
- package/.qk-ai-skill-os/skills/qk-system-evolution/SKILL.md +285 -0
- package/.qk-ai-skill-os/skills/qk-ui-audit/SKILL.md +314 -0
- package/.qk-ai-skill-os/skills/qk-ui-audit/references/anti-slop-checklist.md +136 -0
- package/.qk-ai-skill-os/skills/qk-ui-system-builder/SKILL.md +225 -0
- package/.qk-ai-skill-os/skills/qk-validation-gate/SKILL.md +361 -0
- package/.qk-ai-skill-os/skills.json +819 -0
- package/CLAUDE.md +110 -0
- package/README.md +25 -3
- 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 +122 -0
- package/docs/CHI_TIET_SKILLS.md +26 -26
- package/docs/HUONG_DAN_SU_DUNG.md +3 -3
- package/docs/SPEC.md +70 -20
- package/framework/skill-schema.md +310 -0
- package/package.json +15 -4
- 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 +238 -0
- package/skills/qk-access-policy/SKILL.md +179 -39
- package/skills/qk-ai-builder/SKILL.md +215 -40
- package/skills/qk-api-lifecycle/SKILL.md +176 -46
- package/skills/qk-bug-resolution/SKILL.md +307 -46
- package/skills/qk-context-loader/SKILL.md +218 -43
- package/skills/qk-data-lifecycle/SKILL.md +192 -44
- package/skills/qk-db-optimizer/SKILL.md +196 -41
- package/skills/qk-design-to-code/SKILL.md +285 -46
- package/skills/qk-docs/SKILL.md +198 -40
- package/skills/qk-engineering-standard/SKILL.md +351 -42
- package/skills/qk-fe-api-integration/SKILL.md +326 -55
- package/skills/qk-feature-delivery/SKILL.md +305 -48
- package/skills/qk-help/SKILL.md +178 -23
- package/skills/qk-orchestrator/SKILL.md +277 -42
- package/skills/qk-orchestrator/references/routing-table.md +77 -0
- package/skills/qk-production-release/SKILL.md +284 -41
- package/skills/qk-project-bootstrap/SKILL.md +234 -38
- package/skills/qk-project-health/SKILL.md +199 -40
- package/skills/qk-project-memory/SKILL.md +172 -40
- package/skills/qk-system-evolution/SKILL.md +281 -40
- package/skills/qk-ui-audit/SKILL.md +314 -42
- package/skills/qk-ui-audit/references/anti-slop-checklist.md +136 -0
- package/skills/qk-ui-system-builder/SKILL.md +221 -43
- package/skills/qk-validation-gate/SKILL.md +359 -40
- package/skills.json +813 -824
- 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-policy-engine/SKILL.md +0 -39
|
@@ -0,0 +1,136 @@
|
|
|
1
|
+
# Anti-Slop Checklist — 57 Points
|
|
2
|
+
> Referenced by: `qk-ui-audit/SKILL.md`
|
|
3
|
+
> Purpose: Full inspection checklist for detecting generic AI-generated UI
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## Category P1: Accessibility (15 pts)
|
|
8
|
+
|
|
9
|
+
| # | Check | Points | How to Verify |
|
|
10
|
+
|---|-------|--------|---------------|
|
|
11
|
+
| 1 | All images have `alt` text (non-empty, descriptive) | 2 | grep `alt=""` or `alt={` in JSX |
|
|
12
|
+
| 2 | Color contrast ratio ≥ 4.5:1 (text) / 3:1 (large text) | 3 | Check computed HSL values vs background |
|
|
13
|
+
| 3 | All interactive elements have `aria-label` if no visible text | 2 | grep for `<button>` without text content |
|
|
14
|
+
| 4 | Focus states are visible — `outline: none` not used without replacement | 2 | Check CSS for `outline: none` |
|
|
15
|
+
| 5 | Keyboard navigation works (Tab order logical) | 2 | `tabIndex` only for non-interactive elements |
|
|
16
|
+
| 6 | `role` attributes used for non-semantic elements (div acting as button) | 2 | grep `onClick` on non-button elements |
|
|
17
|
+
| 7 | Form inputs have associated `<label>` (htmlFor) | 2 | grep `<input` without surrounding `<label` |
|
|
18
|
+
|
|
19
|
+
---
|
|
20
|
+
|
|
21
|
+
## Category P2: Layout & Spacing (15 pts)
|
|
22
|
+
|
|
23
|
+
| # | Check | Points | How to Verify |
|
|
24
|
+
|---|-------|--------|---------------|
|
|
25
|
+
| 8 | No hardcoded pixel spacing — uses design token scale (4, 8, 16, 24...) | 3 | grep `padding: [0-9]px` or `margin: [0-9]px` |
|
|
26
|
+
| 9 | CSS Grid or Flexbox used — no `position: absolute` for layout | 2 | grep `position: absolute` in layout context |
|
|
27
|
+
| 10 | Consistent spacing unit (not mixing 5px, 7px, 11px random values) | 2 | Check spacing values across components |
|
|
28
|
+
| 11 | No `div` soup — semantic HTML used (article, section, nav, main, aside) | 2 | grep excessive `<div>` nesting |
|
|
29
|
+
| 12 | Component has defined max-width (not stretching to 100vw on desktop) | 2 | Check container max-width |
|
|
30
|
+
| 13 | Whitespace feels intentional — content is not cramped | 2 | Visual check or spacing scale adherence |
|
|
31
|
+
| 14 | No horizontal overflow on mobile (320px viewport) | 2 | Check for `overflow-x: hidden` band-aids |
|
|
32
|
+
|
|
33
|
+
---
|
|
34
|
+
|
|
35
|
+
## Category P3: Typography & Colors (15 pts)
|
|
36
|
+
|
|
37
|
+
| # | Check | Points | How to Verify |
|
|
38
|
+
|---|-------|--------|---------------|
|
|
39
|
+
| 15 | Font families from DESIGN.md only (no Times New Roman, Arial default) | 3 | grep `font-family:` vs DESIGN.md |
|
|
40
|
+
| 16 | Font sizes use token scale — no arbitrary px values | 2 | grep `font-size: [0-9]` raw values |
|
|
41
|
+
| 17 | Colors use DESIGN.md tokens — no hardcoded hex (#ff0000) or rgb() | 3 | grep `#[0-9a-fA-F]{3,6}` in CSS/JSX |
|
|
42
|
+
| 18 | No pure black (#000000) or pure white (#ffffff) — use near-black/near-white | 2 | grep `#000\|#000000\|#fff\|#ffffff` |
|
|
43
|
+
| 19 | Color palette is harmonious — not "rainbow slop" (5+ unrelated colors) | 2 | Count distinct hues in palette |
|
|
44
|
+
| 20 | Heading hierarchy correct — one `<h1>` per page, no skipping levels | 1 | grep heading tags per page |
|
|
45
|
+
| 21 | Line height appropriate (1.4–1.7 for body, 1.1–1.3 for headings) | 2 | Check `line-height` values |
|
|
46
|
+
|
|
47
|
+
---
|
|
48
|
+
|
|
49
|
+
## Category P4: Interactions & Animations (15 pts)
|
|
50
|
+
|
|
51
|
+
| # | Check | Points | How to Verify |
|
|
52
|
+
|---|-------|--------|---------------|
|
|
53
|
+
| 22 | Every button has hover state — color shift OR shadow change | 2 | grep `:hover` for button styles |
|
|
54
|
+
| 23 | Every button has focus-visible state | 2 | grep `:focus-visible` |
|
|
55
|
+
| 24 | Active/pressed state exists for clickable elements | 1 | grep `:active` |
|
|
56
|
+
| 25 | Transition duration from DESIGN.md — not raw `0.3s` everywhere | 2 | grep `transition:` vs token values |
|
|
57
|
+
| 26 | No janky instant state changes — all transitions ≥ 100ms, ≤ 400ms | 2 | grep transition durations |
|
|
58
|
+
| 27 | Animations respect `prefers-reduced-motion` | 2 | grep `prefers-reduced-motion` in CSS |
|
|
59
|
+
| 28 | Links have hover underline OR color change (not just cursor pointer) | 2 | grep `a:hover` styles |
|
|
60
|
+
| 29 | Form validation feedback uses animation (shake, pulse) not just color | 2 | Check error state CSS |
|
|
61
|
+
|
|
62
|
+
---
|
|
63
|
+
|
|
64
|
+
## Category P5: Anti-Slop Detection (15 pts)
|
|
65
|
+
|
|
66
|
+
| # | Check | Points | How to Verify |
|
|
67
|
+
|---|-------|--------|---------------|
|
|
68
|
+
| 30 | No Bootstrap/generic UI kit classes (btn-primary, card, badge) | 2 | grep `class="btn\|card\|badge\|modal"` |
|
|
69
|
+
| 31 | No Tailwind utility spam (> 15 classes on single element) | 2 | grep extremely long className strings |
|
|
70
|
+
| 32 | No Lorem Ipsum or placeholder text in production UI | 3 | grep `Lorem ipsum\|placeholder text` |
|
|
71
|
+
| 33 | Color palette is NOT blue-gray default (slop signature) | 2 | Check if primary color is `hsl(210, *)` Tailwind default |
|
|
72
|
+
| 34 | Layout is NOT a simple centered card on white background (slop template) | 2 | Structural check |
|
|
73
|
+
| 35 | Gradient usage is intentional — not `linear-gradient(to bottom, #fff, #f0f0f0)` | 2 | grep gradient definitions |
|
|
74
|
+
| 36 | No `box-shadow: 0 2px 4px rgba(0,0,0,0.1)` everywhere (Bootstrap shadow) | 2 | grep this exact shadow pattern |
|
|
75
|
+
|
|
76
|
+
---
|
|
77
|
+
|
|
78
|
+
## Category P6: Performance & Best Practices (10 pts)
|
|
79
|
+
|
|
80
|
+
| # | Check | Points | How to Verify |
|
|
81
|
+
|---|-------|--------|---------------|
|
|
82
|
+
| 37 | Images have `loading="lazy"` for below-fold content | 2 | grep `<img` without `loading` |
|
|
83
|
+
| 38 | No `!important` overrides (except CSS reset) | 1 | grep `!important` in component CSS |
|
|
84
|
+
| 39 | No inline styles except dynamic values | 2 | grep `style={{` in non-dynamic contexts |
|
|
85
|
+
| 40 | Component file ≤ 300 lines | 1 | Line count check |
|
|
86
|
+
| 41 | No unused CSS classes or dead styles | 1 | Visual code scan |
|
|
87
|
+
| 42 | SVG icons used instead of emoji for UI elements | 1 | grep emoji characters in JSX |
|
|
88
|
+
| 43 | `key` prop used correctly in lists (not index as key for dynamic lists) | 2 | grep `.map(` + check key prop |
|
|
89
|
+
|
|
90
|
+
---
|
|
91
|
+
|
|
92
|
+
## Category BONUS: Mobile & Cross-Browser (5 pts extra)
|
|
93
|
+
|
|
94
|
+
| # | Check | Points | How to Verify |
|
|
95
|
+
|---|-------|--------|---------------|
|
|
96
|
+
| 44 | Touch targets ≥ 44×44px on mobile | 1 | Check button/link dimensions |
|
|
97
|
+
| 45 | No hover-only interactions (mobile has no hover) | 1 | Check if critical info only on hover |
|
|
98
|
+
| 46 | Custom fonts have system-ui fallback | 1 | Check font-family fallback stack |
|
|
99
|
+
| 47 | Input types correct: email, tel, number, date (triggers correct mobile keyboard) | 1 | grep `<input type=` |
|
|
100
|
+
| 48 | No `position: fixed` elements blocking content on small screens | 1 | Check fixed/sticky headers/footers |
|
|
101
|
+
|
|
102
|
+
---
|
|
103
|
+
|
|
104
|
+
## Extended Checks (9 additional points for comprehensive audit)
|
|
105
|
+
|
|
106
|
+
| # | Check | Category |
|
|
107
|
+
|---|-------|---------|
|
|
108
|
+
| 49 | Loading skeleton matches actual content shape (not generic gray bars) | UX |
|
|
109
|
+
| 50 | Empty state has illustration + helpful action button (not just "No data") | UX |
|
|
110
|
+
| 51 | Error state specifies the error — not generic "Something went wrong" | UX |
|
|
111
|
+
| 52 | Success feedback is clear — confirmation message or visual indicator | UX |
|
|
112
|
+
| 53 | Destructive actions (delete) require confirmation dialog | Safety |
|
|
113
|
+
| 54 | Modals/dialogs have accessible `role="dialog"` + focus trap | A11y |
|
|
114
|
+
| 55 | Scrollable areas have visible scroll indicator | UX |
|
|
115
|
+
| 56 | Data tables have sortable columns if > 10 rows | UX |
|
|
116
|
+
| 57 | Forms have autofocus on first input (modal forms) | UX |
|
|
117
|
+
|
|
118
|
+
---
|
|
119
|
+
|
|
120
|
+
## Scoring Summary
|
|
121
|
+
|
|
122
|
+
| Category | Max Points |
|
|
123
|
+
|----------|-----------|
|
|
124
|
+
| P1 Accessibility | 15 |
|
|
125
|
+
| P2 Layout & Spacing | 15 |
|
|
126
|
+
| P3 Typography & Colors | 15 |
|
|
127
|
+
| P4 Interactions & Animations | 15 |
|
|
128
|
+
| P5 Anti-Slop Detection | 15 |
|
|
129
|
+
| P6 Performance | 10 |
|
|
130
|
+
| **Base Total** | **85** |
|
|
131
|
+
| BONUS Mobile | +5 |
|
|
132
|
+
| Extended (49–57) | +9 |
|
|
133
|
+
| **Maximum Possible** | **99** |
|
|
134
|
+
|
|
135
|
+
**Pass threshold: ≥ 76 / 85 base (90%) — PASS**
|
|
136
|
+
**Fail: < 76 / 85 — requires redesign, not patch**
|
|
@@ -1,43 +1,221 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: qk-ui-system-builder
|
|
3
|
-
category: frontend
|
|
4
|
-
version: 7.
|
|
5
|
-
description: "Xây dựng và
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
##
|
|
43
|
-
-
|
|
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
|
+
|