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,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**
|
|
@@ -0,0 +1,447 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: qk-ui-builder
|
|
3
|
+
category: frontend
|
|
4
|
+
version: 7.5.1
|
|
5
|
+
description: "Xây dựng, sửa, audit, và học UI — từ Figma/ảnh, map API, fix bug UI, đến redesign cấu trúc."
|
|
6
|
+
platforms: [antigravity, claude-code, cursor, windsurf, kilo-code]
|
|
7
|
+
execution_mode: deterministic
|
|
8
|
+
|
|
9
|
+
cost: high
|
|
10
|
+
latency: slow
|
|
11
|
+
risk: low
|
|
12
|
+
side_effects: edit_files
|
|
13
|
+
produces: [code, report]
|
|
14
|
+
consumes: [design-md, design-asset, source-code, api-schema]
|
|
15
|
+
|
|
16
|
+
token_budget:
|
|
17
|
+
max_files_read: 5
|
|
18
|
+
max_lines_per_read: 150
|
|
19
|
+
max_shell_commands: 0
|
|
20
|
+
stop_early: false
|
|
21
|
+
|
|
22
|
+
exit_codes: [SUCCESS, BLOCKED, FAILED, PARTIAL]
|
|
23
|
+
skill_version: 7.5.1
|
|
24
|
+
runtime_version: 1
|
|
25
|
+
schema_version: 2
|
|
26
|
+
---
|
|
27
|
+
|
|
28
|
+
# qk-ui-builder — UI Builder & Auditor
|
|
29
|
+
|
|
30
|
+
> **Language rule:** Code, identifiers, file names → English. Explanations, summaries → Vietnamese.
|
|
31
|
+
|
|
32
|
+
---
|
|
33
|
+
|
|
34
|
+
## Verbs
|
|
35
|
+
|
|
36
|
+
| Verb | Trigger | Behavior |
|
|
37
|
+
|------|---------|----------|
|
|
38
|
+
| *(default)* | `./qk-ui-builder` | Build or edit UI from design reference |
|
|
39
|
+
| `--audit` | `./qk-ui-builder --audit` | Score UI against anti-slop checklist, no edits |
|
|
40
|
+
| `--redesign` | `./qk-ui-builder --redesign` | Rebuild structure, keep copy/IA/brand |
|
|
41
|
+
| `--study` | `./qk-ui-builder --study <screenshot\|URL>` | Extract design DNA → `design.md` |
|
|
42
|
+
|
|
43
|
+
---
|
|
44
|
+
|
|
45
|
+
## Preconditions
|
|
46
|
+
- [ ] `DESIGN.md` exists with color tokens, spacing scale, typography
|
|
47
|
+
- [ ] For default/edit: design reference or target component specified
|
|
48
|
+
- [ ] For `--audit`: target UI file(s) specified
|
|
49
|
+
- [ ] For `--redesign`: target page + brand/copy context provided
|
|
50
|
+
- [ ] For `--study`: screenshot file or public URL provided
|
|
51
|
+
|
|
52
|
+
```
|
|
53
|
+
On missing precondition:
|
|
54
|
+
EXIT: BLOCKED
|
|
55
|
+
Message: "[Missing item]. See Escalation Rules."
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
---
|
|
59
|
+
|
|
60
|
+
## Scope
|
|
61
|
+
|
|
62
|
+
### Default verb
|
|
63
|
+
- ✅ Build new UI from Figma/ảnh/design reference
|
|
64
|
+
- ✅ Sửa text, thêm nội dung, map API key vào component
|
|
65
|
+
- ✅ Fix UI bug: padding, màu, hiển thị, responsive
|
|
66
|
+
- ✅ Generate strict UI từ DESIGN.md tokens
|
|
67
|
+
|
|
68
|
+
### `--audit`
|
|
69
|
+
- ✅ Score UI against anti-slop checklist (58 gates)
|
|
70
|
+
- ✅ Detect generic AI aesthetics, hardcoded values
|
|
71
|
+
- ✅ Verify ARIA, contrast, responsive states
|
|
72
|
+
|
|
73
|
+
### `--redesign`
|
|
74
|
+
- ✅ Thay đổi cấu trúc page, giữ nội dung/IA/brand
|
|
75
|
+
- ✅ Pick new macrostructure + theme fingerprint
|
|
76
|
+
|
|
77
|
+
### `--study`
|
|
78
|
+
- ✅ Extract design DNA từ ảnh/Figma/URL
|
|
79
|
+
- ✅ Emit portable `design.md` for handoff
|
|
80
|
+
|
|
81
|
+
## Non-Goals
|
|
82
|
+
- ❌ Invent design tokens not in DESIGN.md
|
|
83
|
+
- ❌ Use hardcoded hex colors, px sizes not from token system
|
|
84
|
+
- ❌ Copy generic Tailwind/Bootstrap templates
|
|
85
|
+
- ❌ Skip loading/error/empty states
|
|
86
|
+
- ❌ Clone paid templates or violate design copyright
|
|
87
|
+
|
|
88
|
+
---
|
|
89
|
+
|
|
90
|
+
## Priority Order
|
|
91
|
+
|
|
92
|
+
| Priority | Task | Skip Threshold |
|
|
93
|
+
|----------|------|----------------|
|
|
94
|
+
| P1 | HTML structure + semantic markup | Never |
|
|
95
|
+
| P2 | DESIGN.md token application (colors, spacing, typography) | Never |
|
|
96
|
+
| P3 | Interactive states (hover, focus, active) | Budget < 30% |
|
|
97
|
+
| P4 | Responsive breakpoints (mobile) | Budget < 50% |
|
|
98
|
+
| P5 | Loading / error / empty states | Budget < 60% |
|
|
99
|
+
| P6 | Animation / micro-interactions | Budget < 70% |
|
|
100
|
+
| P7 | ARIA roles + keyboard navigation | Budget < 80% |
|
|
101
|
+
|
|
102
|
+
---
|
|
103
|
+
|
|
104
|
+
## Workflow
|
|
105
|
+
|
|
106
|
+
### Phase 1 — Route by Verb
|
|
107
|
+
|
|
108
|
+
**Decision:**
|
|
109
|
+
```
|
|
110
|
+
IF --audit
|
|
111
|
+
→ Load slop-test gates → go to Audit phase
|
|
112
|
+
|
|
113
|
+
ELSE IF --redesign
|
|
114
|
+
→ Load macrostructure index → pick new fingerprint → go to Build phase
|
|
115
|
+
|
|
116
|
+
ELSE IF --study
|
|
117
|
+
→ Load study protocol → extract DNA → emit design.md → EXIT: SUCCESS
|
|
118
|
+
|
|
119
|
+
ELSE (default: build/edit)
|
|
120
|
+
→ go to Build phase
|
|
121
|
+
```
|
|
122
|
+
|
|
123
|
+
---
|
|
124
|
+
|
|
125
|
+
### Phase 2 — Load Design Context (default/edit/redesign only)
|
|
126
|
+
|
|
127
|
+
**Load Discipline (MANDATORY):**
|
|
128
|
+
|
|
129
|
+
```
|
|
130
|
+
EAGER (load every build):
|
|
131
|
+
- typography.md
|
|
132
|
+
- color.md
|
|
133
|
+
- layout-and-space.md
|
|
134
|
+
- copy.md
|
|
135
|
+
- anti-patterns.md
|
|
136
|
+
|
|
137
|
+
INDEX-THEN-PICK (load index, choose ONE):
|
|
138
|
+
- macrostructures.md → pick ONE → load only that file
|
|
139
|
+
|
|
140
|
+
CONDITIONAL (load only if needed):
|
|
141
|
+
- themes/[name].md → only if project has locked theme
|
|
142
|
+
- motion.md → only if animation requested
|
|
143
|
+
- interaction-and-states.md → only if complex interactions
|
|
144
|
+
- responsive.md → only if mobile breakpoints needed
|
|
145
|
+
- component-cookbook.md → only if building known archetype
|
|
146
|
+
|
|
147
|
+
LOAD-AT-END (post-emit only):
|
|
148
|
+
- slop-test.md → run AFTER build completes
|
|
149
|
+
```
|
|
150
|
+
|
|
151
|
+
**Steps:**
|
|
152
|
+
1. Read `DESIGN.md` → extract tokens: colors (HSL), spacing, fonts, radius, shadows
|
|
153
|
+
2. Load eager references (typography, color, layout, copy, anti-patterns)
|
|
154
|
+
3. Check `.agents/memory/ui-diversification.json` for last theme/macrostructure used
|
|
155
|
+
4. If redesign: read `references/macrostructures.md` index → pick ONE different from last → load only that file
|
|
156
|
+
5. If project has locked theme: load `references/themes/[name].md`
|
|
157
|
+
|
|
158
|
+
**Diversification rule:** consecutive builds must use different theme + macrostructure from `ui-diversification.json`.
|
|
159
|
+
|
|
160
|
+
---
|
|
161
|
+
|
|
162
|
+
### Phase 3 — Build or Edit
|
|
163
|
+
|
|
164
|
+
**Steps:**
|
|
165
|
+
1. For new UI: create component from design reference using DESIGN.md tokens
|
|
166
|
+
2. For edit: modify existing component per user request (text, API mapping, layout)
|
|
167
|
+
3. Apply theme + macrostructure fingerprint
|
|
168
|
+
4. Handle all 3 UI states: Loading, Success, Error
|
|
169
|
+
|
|
170
|
+
**API mapping rule:**
|
|
171
|
+
- Bind API response to component props via generated TypeScript interfaces
|
|
172
|
+
- NEVER hardcode API URLs in component
|
|
173
|
+
- Use existing API client pattern from project
|
|
174
|
+
|
|
175
|
+
---
|
|
176
|
+
|
|
177
|
+
### Phase 4 — Slop Test (post-emit)
|
|
178
|
+
|
|
179
|
+
Load `references/slop-test.md` and verify all 58 gates pass.
|
|
180
|
+
|
|
181
|
+
```
|
|
182
|
+
IF all 58 gates pass
|
|
183
|
+
→ EXIT: SUCCESS
|
|
184
|
+
|
|
185
|
+
ELSE IF critical gate fails (hardcoded purple gradient, banned font)
|
|
186
|
+
→ EXIT: FAILED — rebuild required
|
|
187
|
+
```
|
|
188
|
+
1. Read `references/macrostructures.md` (index only)
|
|
189
|
+
2. Pick ONE macrostructure different from last build
|
|
190
|
+
3. Load only that macrostructure file from `references/macrostructures/`
|
|
191
|
+
|
|
192
|
+
---
|
|
193
|
+
|
|
194
|
+
### Phase 3 — Build or Edit
|
|
195
|
+
|
|
196
|
+
**Steps:**
|
|
197
|
+
1. For new UI: create component from design reference using DESIGN.md tokens
|
|
198
|
+
2. For edit: modify existing component per user request (text, API mapping, layout)
|
|
199
|
+
3. Apply theme + macrostructure fingerprint
|
|
200
|
+
4. Handle all 3 UI states: Loading, Success, Error
|
|
201
|
+
|
|
202
|
+
**API mapping rule:**
|
|
203
|
+
- Bind API response to component props via generated TypeScript interfaces
|
|
204
|
+
- NEVER hardcode API URLs in component
|
|
205
|
+
- Use existing API client pattern from project
|
|
206
|
+
|
|
207
|
+
---
|
|
208
|
+
|
|
209
|
+
### Phase 4 — Self-Audit (Anti-Slop Check)
|
|
210
|
+
|
|
211
|
+
**Checklist (must pass ALL):**
|
|
212
|
+
- [ ] No hardcoded colors — only DESIGN.md tokens
|
|
213
|
+
- [ ] No font-size in px without token — use rem/token
|
|
214
|
+
- [ ] No `margin: auto` soup — use proper grid/flex
|
|
215
|
+
- [ ] All interactive elements have hover + focus state
|
|
216
|
+
- [ ] Mobile viewport works (no horizontal overflow)
|
|
217
|
+
- [ ] No `!important` overrides (except resets)
|
|
218
|
+
- [ ] No inline styles except dynamic values
|
|
219
|
+
- [ ] Loading state implemented (skeleton or spinner)
|
|
220
|
+
- [ ] Error state implemented (clear message)
|
|
221
|
+
- [ ] Empty state implemented (helpful illustration/text)
|
|
222
|
+
|
|
223
|
+
**Decision:**
|
|
224
|
+
```
|
|
225
|
+
IF all checks pass
|
|
226
|
+
→ EXIT: SUCCESS
|
|
227
|
+
|
|
228
|
+
ELSE IF 1–2 minor fails
|
|
229
|
+
→ Fix immediately, EXIT: SUCCESS
|
|
230
|
+
|
|
231
|
+
ELSE IF > 2 fails OR hardcoded colors found
|
|
232
|
+
→ Fix all, re-audit, EXIT: PARTIAL if still one gap
|
|
233
|
+
```
|
|
234
|
+
|
|
235
|
+
---
|
|
236
|
+
|
|
237
|
+
### Phase 5 — Slop Test (post-emit)
|
|
238
|
+
|
|
239
|
+
Load `references/slop-test.md` and verify all 58 gates pass.
|
|
240
|
+
|
|
241
|
+
```
|
|
242
|
+
IF all 58 gates pass
|
|
243
|
+
→ EXIT: SUCCESS
|
|
244
|
+
|
|
245
|
+
ELSE IF critical gate fails (hardcoded purple gradient, banned font)
|
|
246
|
+
→ EXIT: FAILED — rebuild required
|
|
247
|
+
```
|
|
248
|
+
|
|
249
|
+
---
|
|
250
|
+
|
|
251
|
+
## Confidence Model
|
|
252
|
+
|
|
253
|
+
| Level | Condition | Action |
|
|
254
|
+
|-------|-----------|--------|
|
|
255
|
+
| HIGH | DESIGN.md complete, design reference clear, API schema provided | Build directly |
|
|
256
|
+
| MEDIUM | Some tokens missing or design reference ambiguous | Note gaps, proceed |
|
|
257
|
+
| LOW | DESIGN.md missing or design reference too vague | EXIT: BLOCKED |
|
|
258
|
+
|
|
259
|
+
---
|
|
260
|
+
|
|
261
|
+
## Severity
|
|
262
|
+
|
|
263
|
+
| Level | Definition | Example |
|
|
264
|
+
|-------|-----------|---------|
|
|
265
|
+
| CRITICAL | Hardcoded API URL in component, banned font used | `axios.get("http://localhost")` in JSX |
|
|
266
|
+
| HIGH | Missing error/loading state, hardcoded color not in DESIGN.md | No 500 handler |
|
|
267
|
+
| MEDIUM | Missing hover state, spacing off by 1 unit | Button without focus ring |
|
|
268
|
+
| LOW | Comment missing, minor naming inconsistency | `temp` variable name |
|
|
269
|
+
|
|
270
|
+
---
|
|
271
|
+
|
|
272
|
+
## Evidence Format
|
|
273
|
+
|
|
274
|
+
```
|
|
275
|
+
[SEVERITY] path/to/Component.tsx:LINE
|
|
276
|
+
Category: [TOKEN|SEMANTIC|INTERACTION|RESPONSIVE|STATE|ARIA|SLOP]
|
|
277
|
+
Reason: [specific violation]
|
|
278
|
+
Confidence: HIGH
|
|
279
|
+
Fix: [one-line actionable suggestion]
|
|
280
|
+
Points: -N pts (for audit mode)
|
|
281
|
+
```
|
|
282
|
+
|
|
283
|
+
---
|
|
284
|
+
|
|
285
|
+
## Retry Policy
|
|
286
|
+
|
|
287
|
+
```
|
|
288
|
+
Build/Edit fails
|
|
289
|
+
└─ Check failure type
|
|
290
|
+
├─ Token missing → infer from DESIGN.md, note assumption
|
|
291
|
+
└─ Design reference unclear → EXIT: BLOCKED, ask user
|
|
292
|
+
|
|
293
|
+
Slop test fails
|
|
294
|
+
└─ Critical gate (hardcoded color, banned font)
|
|
295
|
+
└─ EXIT: FAILED — do not ship, rebuild required
|
|
296
|
+
```
|
|
297
|
+
|
|
298
|
+
---
|
|
299
|
+
|
|
300
|
+
## Escalation Rules
|
|
301
|
+
|
|
302
|
+
```
|
|
303
|
+
BLOCKED: DESIGN.md missing or design reference unclear
|
|
304
|
+
Missing:
|
|
305
|
+
- DESIGN.md with color/spacing/typography tokens
|
|
306
|
+
- Design reference (Figma/ảnh/wireframe)
|
|
307
|
+
- For --study: screenshot or public URL
|
|
308
|
+
Questions:
|
|
309
|
+
1. Bạn có DESIGN.md chưa? (chạy qk-project-bootstrap nếu chưa)
|
|
310
|
+
2. Design reference là gì? (Figma link / ảnh / mô tả)
|
|
311
|
+
3. Cho phép tạo DESIGN.md mới không?
|
|
312
|
+
Recommended Assumptions (if proceeding):
|
|
313
|
+
- Use industry-standard: 8px spacing, Inter font, neutral gray palette
|
|
314
|
+
```
|
|
315
|
+
|
|
316
|
+
---
|
|
317
|
+
|
|
318
|
+
## Handoff Contract
|
|
319
|
+
|
|
320
|
+
### Consumes
|
|
321
|
+
```json
|
|
322
|
+
{
|
|
323
|
+
"from": "user or qk-orchestrator",
|
|
324
|
+
"required_fields": ["verb", "design_md_path"],
|
|
325
|
+
"optional_fields": ["design_reference", "target_component", "api_schema", "framework"]
|
|
326
|
+
}
|
|
327
|
+
```
|
|
328
|
+
|
|
329
|
+
### Produces
|
|
330
|
+
```json
|
|
331
|
+
{
|
|
332
|
+
"to": "user or qk-ui-audit (if --audit)",
|
|
333
|
+
"output_fields": ["component_files", "tokens_used", "states_implemented", "slop_test_result", "exit_code"]
|
|
334
|
+
}
|
|
335
|
+
```
|
|
336
|
+
|
|
337
|
+
---
|
|
338
|
+
|
|
339
|
+
## Output Format
|
|
340
|
+
|
|
341
|
+
### Default (build/edit)
|
|
342
|
+
```
|
|
343
|
+
🎨 UI Builder
|
|
344
|
+
─────────────────────────────────────────────────
|
|
345
|
+
Component: [ComponentName]
|
|
346
|
+
Theme: [theme name from references/themes/]
|
|
347
|
+
Macrostructure: [macrostructure name]
|
|
348
|
+
|
|
349
|
+
States implemented:
|
|
350
|
+
✅ Loading / ✅ Success / ✅ Error
|
|
351
|
+
✅ Hover / ✅ Focus / ✅ Active / ✅ Disabled
|
|
352
|
+
|
|
353
|
+
Tokens used:
|
|
354
|
+
- --color-primary-500, --space-4, --font-size-base
|
|
355
|
+
|
|
356
|
+
API Mapping:
|
|
357
|
+
✅ [endpoint → prop] mapped
|
|
358
|
+
|
|
359
|
+
Exit Code: [SUCCESS | PARTIAL | BLOCKED | FAILED]
|
|
360
|
+
```
|
|
361
|
+
|
|
362
|
+
### `--audit`
|
|
363
|
+
```
|
|
364
|
+
🎨 UI Audit Report
|
|
365
|
+
─────────────────────────────────────────────────
|
|
366
|
+
Component: [path/to/component]
|
|
367
|
+
Theme: [N/A — read-only audit]
|
|
368
|
+
|
|
369
|
+
Scores:
|
|
370
|
+
P1 Accessibility: [X/15]
|
|
371
|
+
P2 Layout: [X/15]
|
|
372
|
+
P3 Typography: [X/15]
|
|
373
|
+
P4 Interactions: [X/15]
|
|
374
|
+
P5 Anti-Slop: [X/15]
|
|
375
|
+
P6 Performance: [X/10]
|
|
376
|
+
─────────────────
|
|
377
|
+
Total: [X/85] → [PASS ≥ 90% | FAIL < 90%]
|
|
378
|
+
|
|
379
|
+
Violations (top priority first):
|
|
380
|
+
[SEVERITY] file:LINE — reason — Fix: suggestion (-Xpts)
|
|
381
|
+
|
|
382
|
+
Verdict: [PASS | FAIL — requires redesign]
|
|
383
|
+
Exit Code: [SUCCESS | PARTIAL | FAILED]
|
|
384
|
+
```
|
|
385
|
+
|
|
386
|
+
### `--redesign`
|
|
387
|
+
```
|
|
388
|
+
🎨 UI Redesign
|
|
389
|
+
─────────────────────────────────────────────────
|
|
390
|
+
Component: [ComponentName]
|
|
391
|
+
Old macrostructure: [old name]
|
|
392
|
+
New macrostructure: [new name]
|
|
393
|
+
Old theme: [old theme]
|
|
394
|
+
New theme: [new theme]
|
|
395
|
+
|
|
396
|
+
Kept:
|
|
397
|
+
- Copy/IA structure
|
|
398
|
+
- Brand colors
|
|
399
|
+
- Primary user flow
|
|
400
|
+
|
|
401
|
+
Changed:
|
|
402
|
+
- Layout fingerprint
|
|
403
|
+
- Section ordering
|
|
404
|
+
- Visual hierarchy
|
|
405
|
+
|
|
406
|
+
Exit Code: [SUCCESS | PARTIAL | BLOCKED | FAILED]
|
|
407
|
+
```
|
|
408
|
+
|
|
409
|
+
### `--study`
|
|
410
|
+
```
|
|
411
|
+
🎨 Design Study
|
|
412
|
+
─────────────────────────────────────────────────
|
|
413
|
+
Source: [screenshot path | URL]
|
|
414
|
+
DNA extracted:
|
|
415
|
+
- Macrostructure: [name]
|
|
416
|
+
- Theme axes: [paper band / display style / accent hue]
|
|
417
|
+
- Type pairing: [font1 + font2]
|
|
418
|
+
- Color anchor: [primary / secondary / accent]
|
|
419
|
+
|
|
420
|
+
Output: design.md written to [path]
|
|
421
|
+
Next: ./qk-ui-builder --redesign with extracted DNA
|
|
422
|
+
|
|
423
|
+
Exit Code: [SUCCESS | BLOCKED]
|
|
424
|
+
```
|
|
425
|
+
|
|
426
|
+
---
|
|
427
|
+
|
|
428
|
+
## Exit Codes
|
|
429
|
+
|
|
430
|
+
| Code | Meaning | When |
|
|
431
|
+
|------|---------|------|
|
|
432
|
+
| SUCCESS | Build/edit/audit/study completed successfully | All checks passed |
|
|
433
|
+
| PARTIAL | Built with minor gaps or incomplete audit | Budget exhausted or 1-2 fixes pending |
|
|
434
|
+
| BLOCKED | Missing DESIGN.md, design reference, or screenshot | Cannot proceed |
|
|
435
|
+
| FAILED | Slop test critical failure or architectural conflict | Rebuild required |
|
|
436
|
+
|
|
437
|
+
---
|
|
438
|
+
|
|
439
|
+
## References
|
|
440
|
+
|
|
441
|
+
- `references/themes/` — Theme catalog (20 themes)
|
|
442
|
+
- `references/macrostructures/` — 21 page shapes
|
|
443
|
+
- `references/slop-test.md` — 58 anti-slop gates
|
|
444
|
+
- `references/anti-patterns.md` — Named tells to avoid
|
|
445
|
+
|
|
446
|
+
---
|
|
447
|
+
|