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,48 @@
|
|
|
1
|
+
# 20 — Ecosystem Index
|
|
2
|
+
|
|
3
|
+
**Fingerprint:** integrations, partners, plugins directory, logo grid with search.
|
|
4
|
+
|
|
5
|
+
## Structure
|
|
6
|
+
|
|
7
|
+
```
|
|
8
|
+
+---------------------------+
|
|
9
|
+
| Search + category tabs |
|
|
10
|
+
+------+--------------------+
|
|
11
|
+
| Cat | [logo][logo] |
|
|
12
|
+
| nav | [logo][logo] |
|
|
13
|
+
| | [logo][logo] |
|
|
14
|
+
+------+--------------------+
|
|
15
|
+
| Featured / popular |
|
|
16
|
+
+---------------------------+
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
## Rules
|
|
20
|
+
|
|
21
|
+
- Logo grid: uniform tile size, grayscale → color on hover
|
|
22
|
+
- Categories: tab or sidebar filter
|
|
23
|
+
- Search: matches name and tags
|
|
24
|
+
- Featured row: highlights top integrations
|
|
25
|
+
- Each tile links to detail/install
|
|
26
|
+
|
|
27
|
+
## Typography
|
|
28
|
+
|
|
29
|
+
- Heading: display for directory title
|
|
30
|
+
- Tile name: 13px medium under logo
|
|
31
|
+
- Category: 14px, active state bold
|
|
32
|
+
|
|
33
|
+
## Spacing
|
|
34
|
+
|
|
35
|
+
- Grid gap: `--space-4` (16px)
|
|
36
|
+
- Tile padding: `--space-4` (16px)
|
|
37
|
+
- Cat nav width: 200px
|
|
38
|
+
|
|
39
|
+
## Anti-Patterns
|
|
40
|
+
|
|
41
|
+
- ❌ Logos at inconsistent sizes
|
|
42
|
+
- ❌ No search on large directories
|
|
43
|
+
- ❌ Missing category organization
|
|
44
|
+
|
|
45
|
+
## Theme Affinity
|
|
46
|
+
|
|
47
|
+
- ✅ Cobalt, Lumen
|
|
48
|
+
- ⚠️ Carnival (logos need neutral bg)
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
# 21 — Component Playground
|
|
2
|
+
|
|
3
|
+
**Fingerprint:** tabbed or sidebar navigation, live preview, code snippet, copy button.
|
|
4
|
+
|
|
5
|
+
## Structure
|
|
6
|
+
|
|
7
|
+
```
|
|
8
|
+
+---------+------------------+
|
|
9
|
+
| Nav | Preview |
|
|
10
|
+
| (tabs) | (live render) |
|
|
11
|
+
| | |
|
|
12
|
+
+---------+------------------+
|
|
13
|
+
| Code Snippet [Copy] |
|
|
14
|
+
+-----------------------------+
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
## Rules
|
|
18
|
+
|
|
19
|
+
- Nav: vertical tabs or horizontal pills
|
|
20
|
+
- Preview: sandboxed iframe or isolated render
|
|
21
|
+
- Code: syntax highlighted, copy button
|
|
22
|
+
- Tabs: at least 3 examples per component
|
|
23
|
+
|
|
24
|
+
## Typography
|
|
25
|
+
|
|
26
|
+
- Heading: display style
|
|
27
|
+
- Code: mono, 13px
|
|
28
|
+
- Body: body font, 14px
|
|
29
|
+
|
|
30
|
+
## Spacing
|
|
31
|
+
|
|
32
|
+
- Nav width: 200px
|
|
33
|
+
- Preview padding: `--space-6`
|
|
34
|
+
- Code padding: `--space-4`
|
|
35
|
+
|
|
36
|
+
## Anti-Patterns
|
|
37
|
+
|
|
38
|
+
- ❌ Preview that doesn't update on tab switch
|
|
39
|
+
- ❌ Code snippets without syntax highlighting
|
|
40
|
+
- ❌ Missing copy button
|
|
41
|
+
|
|
42
|
+
## Theme Affinity
|
|
43
|
+
|
|
44
|
+
- ✅ Lumen, Cobalt
|
|
45
|
+
- ❌ Hum, Carnival (too decorative)
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
# Macrostructure Index
|
|
2
|
+
|
|
3
|
+
Load this index first, then load ONLY the chosen macrostructure file.
|
|
4
|
+
|
|
5
|
+
| ID | Name | Best For |
|
|
6
|
+
|----|------|----------|
|
|
7
|
+
| 01 | Bento Grid | Feature dashboards, app shells |
|
|
8
|
+
| 02 | Long Document | Docs, blogs, legal |
|
|
9
|
+
| 03 | Marquee Hero | Marketing, campaigns |
|
|
10
|
+
| 04 | Stat-Led | Analytics, metrics |
|
|
11
|
+
| 05 | Workbench | Tools, editors, IDEs |
|
|
12
|
+
| 06 | Conversational FAQ | Support, onboarding |
|
|
13
|
+
| 07 | Manifesto | Brand, about, careers |
|
|
14
|
+
| 08 | Photographic | Portfolios, travel |
|
|
15
|
+
| 09 | Quote-Led | Testimonials, editorial |
|
|
16
|
+
| 10 | Specimen | Design systems, pattern libraries |
|
|
17
|
+
| 11 | Catalogue | E-commerce, listings |
|
|
18
|
+
| 12 | Letter | Newsletters, personal |
|
|
19
|
+
| 13 | Index-First | Wikis, knowledge bases |
|
|
20
|
+
| 14 | Narrative Workflow | Onboarding, wizards |
|
|
21
|
+
| 15 | Split Studio | Comparison, before/after |
|
|
22
|
+
| 16 | Feature Stack | Product pages, SaaS |
|
|
23
|
+
| 17 | Type Specimen | Typography showcases |
|
|
24
|
+
| 18 | Portfolio Grid | Creative portfolios |
|
|
25
|
+
| 19 | Map/Diagram | Architecture, org charts |
|
|
26
|
+
| 20 | Ecosystem Index | Integrations, partners |
|
|
27
|
+
| 21 | Component Playground | UI libraries, docs |
|
|
28
|
+
|
|
29
|
+
## Load Rule
|
|
30
|
+
|
|
31
|
+
1. Read this index only
|
|
32
|
+
2. Pick ONE macrostructure based on brief
|
|
33
|
+
3. Load ONLY `references/macrostructures/XX-<name>.md`
|
|
34
|
+
4. Never load all 21 files
|
|
35
|
+
|
|
36
|
+
## Diversification Rule
|
|
37
|
+
|
|
38
|
+
No two consecutive builds in the same project may share the same macrostructure.
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
# Motion
|
|
2
|
+
|
|
3
|
+
Foundational rules for animation. Motion must feel intentional, fast, and accessible — never decorative bounce or layout-shifting transitions.
|
|
4
|
+
|
|
5
|
+
## Duration Scale
|
|
6
|
+
|
|
7
|
+
Use only these durations. Do not invent values like 250ms or 420ms.
|
|
8
|
+
|
|
9
|
+
```
|
|
10
|
+
100ms micro (hover, toggle, color)
|
|
11
|
+
150ms quick state change
|
|
12
|
+
200ms default UI transition
|
|
13
|
+
300ms panel / menu enter-exit
|
|
14
|
+
500ms large surface / page-level
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
```css
|
|
18
|
+
:root {
|
|
19
|
+
--dur-1: 100ms;
|
|
20
|
+
--dur-2: 150ms;
|
|
21
|
+
--dur-3: 200ms;
|
|
22
|
+
--dur-4: 300ms;
|
|
23
|
+
--dur-5: 500ms;
|
|
24
|
+
}
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
## Easing
|
|
28
|
+
|
|
29
|
+
Match easing to the direction of motion:
|
|
30
|
+
|
|
31
|
+
| Phase | Easing |
|
|
32
|
+
| --- | --- |
|
|
33
|
+
| Enter (appear) | `ease-out` |
|
|
34
|
+
| Exit (disappear) | `ease-in` |
|
|
35
|
+
| Continuous transition | `ease-in-out` |
|
|
36
|
+
|
|
37
|
+
```css
|
|
38
|
+
.card { transition: transform var(--dur-3) ease-out, opacity var(--dur-3) ease-out; }
|
|
39
|
+
.menu-close { transition: opacity var(--dur-2) ease-in; }
|
|
40
|
+
.theme-switch { transition: background-color var(--dur-4) ease-in-out; }
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
## Ban List
|
|
44
|
+
|
|
45
|
+
- **No bounce / overshoot easing.** Never use `cubic-bezier(0.68, -0.55, 0.265, 1.55)` or any springy curve for UI elements. It reads as unprofessional and slows perceived performance.
|
|
46
|
+
|
|
47
|
+
```css
|
|
48
|
+
/* BANNED */
|
|
49
|
+
transition: all 300ms cubic-bezier(0.68, -0.55, 0.265, 1.55);
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
- **No infinite decorative animations** (marquee, pulsing glow) unless the user explicitly asks.
|
|
53
|
+
- **No `transition: all`** — name the specific properties.
|
|
54
|
+
|
|
55
|
+
## prefers-reduced-motion
|
|
56
|
+
|
|
57
|
+
Respect the user's OS setting. Under `reduce`, disable transforms/opacity animations and drop durations to **0ms**.
|
|
58
|
+
|
|
59
|
+
```css
|
|
60
|
+
@media (prefers-reduced-motion: reduce) {
|
|
61
|
+
*,
|
|
62
|
+
*::before,
|
|
63
|
+
*::after {
|
|
64
|
+
animation-duration: 0.01ms !important;
|
|
65
|
+
animation-iteration-count: 1 !important;
|
|
66
|
+
transition-duration: 0ms !important;
|
|
67
|
+
scroll-behavior: auto !important;
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
Apply this once globally; do not re-introduce motion for individual elements.
|
|
73
|
+
|
|
74
|
+
## No Animating Layout Properties
|
|
75
|
+
|
|
76
|
+
Never animate `width`, `height`, `padding`, `margin`, or `top/left`. These trigger layout/paint reflows and jank. Animate only **transform** and **opacity** (compositor-only).
|
|
77
|
+
|
|
78
|
+
```css
|
|
79
|
+
/* Good: animate transform/opacity only */
|
|
80
|
+
.modal { opacity: 0; transform: translateY(8px); transition: opacity var(--dur-3) ease-out, transform var(--dur-3) ease-out; }
|
|
81
|
+
.modal.open { opacity: 1; transform: translateY(0); }
|
|
82
|
+
|
|
83
|
+
/* Bad: animates layout */
|
|
84
|
+
.panel { transition: height 300ms ease; } /* reflows, janky */
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
For elements that change size (expand/collapse), use `transform: scaleY()` or animate `grid-template-rows: 0fr → 1fr` instead of height.
|
|
88
|
+
|
|
89
|
+
## Practical Checklist
|
|
90
|
+
|
|
91
|
+
- [ ] Durations only from the 5-step scale.
|
|
92
|
+
- [ ] ease-out enter / ease-in exit / ease-in-out transition.
|
|
93
|
+
- [ ] No bounce bezier, no `transition: all`, no infinite decoration.
|
|
94
|
+
- [ ] `prefers-reduced-motion` zeroes all motion.
|
|
95
|
+
- [ ] Only `transform` / `opacity` are animated.
|
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
# Responsive
|
|
2
|
+
|
|
3
|
+
Foundational rules for building layouts that adapt across screen sizes without breaking, horizontal scroll, or un-tappable controls.
|
|
4
|
+
|
|
5
|
+
## Breakpoints
|
|
6
|
+
|
|
7
|
+
Use this standard scale. Build **mobile-first** (base styles = small screens, then enhance upward).
|
|
8
|
+
|
|
9
|
+
```
|
|
10
|
+
sm 640px
|
|
11
|
+
md 768px
|
|
12
|
+
lg 1024px
|
|
13
|
+
xl 1280px
|
|
14
|
+
```
|
|
15
|
+
|
|
16
|
+
```css
|
|
17
|
+
/* mobile-first: base = mobile, then min-width queries */
|
|
18
|
+
@media (min-width: 640px) { /* sm */ }
|
|
19
|
+
@media (min-width: 768px) { /* md */ }
|
|
20
|
+
@media (min-width: 1024px) { /* lg */ }
|
|
21
|
+
@media (min-width: 1280px) { /* xl */ }
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
## Mobile: Stack Vertically
|
|
25
|
+
|
|
26
|
+
On small screens, lay content out in a **single vertical column**. Never require horizontal scrolling for core content.
|
|
27
|
+
|
|
28
|
+
```css
|
|
29
|
+
.layout {
|
|
30
|
+
display: grid;
|
|
31
|
+
grid-template-columns: 1fr; /* stacked on mobile */
|
|
32
|
+
gap: var(--space-6);
|
|
33
|
+
}
|
|
34
|
+
@media (min-width: 768px) {
|
|
35
|
+
.layout { grid-template-columns: 240px 1fr; } /* sidebar + content */
|
|
36
|
+
}
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
```css
|
|
40
|
+
/* Guard against accidental horizontal overflow */
|
|
41
|
+
html, body { overflow-x: hidden; max-width: 100%; }
|
|
42
|
+
img, video, table { max-width: 100%; }
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
## Touch Targets: Min 44×44px
|
|
46
|
+
|
|
47
|
+
Every interactive control must be at least **44×44px** to be comfortably tappable. Don't let padding shrink the hit area below this.
|
|
48
|
+
|
|
49
|
+
```css
|
|
50
|
+
.btn, .nav-link, .icon-button {
|
|
51
|
+
min-height: 44px;
|
|
52
|
+
min-width: 44px;
|
|
53
|
+
display: inline-flex;
|
|
54
|
+
align-items: center;
|
|
55
|
+
justify-content: center;
|
|
56
|
+
padding: var(--space-2) var(--space-4);
|
|
57
|
+
}
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
## Fluid Typography with clamp()
|
|
61
|
+
|
|
62
|
+
Use `clamp()` for headings/hero text so type scales smoothly between breakpoints without abrupt jumps.
|
|
63
|
+
|
|
64
|
+
```css
|
|
65
|
+
h1 {
|
|
66
|
+
/* min 32px, preferred 5vw, max 64px */
|
|
67
|
+
font-size: clamp(2rem, 5vw, 4rem); /* 32px → 64px */
|
|
68
|
+
}
|
|
69
|
+
h2 {
|
|
70
|
+
font-size: clamp(1.5rem, 3vw, 2rem); /* 24px → 32px */
|
|
71
|
+
}
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
Keep body text near `--text-base` (16px) for readability; reserve clamp() for display sizes.
|
|
75
|
+
|
|
76
|
+
## Image Grids: minmax(0, 1fr)
|
|
77
|
+
|
|
78
|
+
For responsive image/card grids, use `minmax(0, 1fr)` so items shrink properly and never overflow. Fixed-width columns break on mobile.
|
|
79
|
+
|
|
80
|
+
```css
|
|
81
|
+
.gallery {
|
|
82
|
+
display: grid;
|
|
83
|
+
grid-template-columns: repeat(auto-fill, minmax(0, 1fr));
|
|
84
|
+
gap: var(--space-4);
|
|
85
|
+
}
|
|
86
|
+
@media (min-width: 640px) { .gallery { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
|
|
87
|
+
@media (min-width: 1024px) { .gallery { grid-template-columns: repeat(4, minmax(0, 1fr)); } }
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
```css
|
|
91
|
+
.gallery img { width: 100%; height: 100%; object-fit: cover; display: block; }
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
## Desktop Container
|
|
95
|
+
|
|
96
|
+
Cap desktop content at 1200px and center (see layout-and-space.md). On mobile it becomes 100% width with safe padding.
|
|
97
|
+
|
|
98
|
+
```css
|
|
99
|
+
.container {
|
|
100
|
+
width: 100%;
|
|
101
|
+
max-width: 1200px;
|
|
102
|
+
margin-inline: auto;
|
|
103
|
+
padding-inline: var(--space-4);
|
|
104
|
+
}
|
|
105
|
+
@media (min-width: 768px) { .container { padding-inline: var(--space-6); } }
|
|
106
|
+
```
|
|
107
|
+
|
|
108
|
+
## Practical Checklist
|
|
109
|
+
|
|
110
|
+
- [ ] Mobile-first with sm/md/lg/xl breakpoints.
|
|
111
|
+
- [ ] Mobile stacks vertically; no horizontal scroll.
|
|
112
|
+
- [ ] All tap targets ≥ 44×44px.
|
|
113
|
+
- [ ] Display type uses `clamp()` for fluid scaling.
|
|
114
|
+
- [ ] Image/card grids use `minmax(0, 1fr)`.
|
|
115
|
+
- [ ] Desktop content capped at 1200px.
|
|
@@ -0,0 +1,135 @@
|
|
|
1
|
+
# Slop Test — 58 Anti-Slop Gates
|
|
2
|
+
|
|
3
|
+
Run this checklist AFTER every build. Every answer must be **NO**.
|
|
4
|
+
|
|
5
|
+
## Pre-Emit Self-Critique (Score 1–5 on each axis)
|
|
6
|
+
|
|
7
|
+
| Axis | Question | Score |
|
|
8
|
+
|------|----------|-------|
|
|
9
|
+
| Philosophy | Does this serve the user, or just show off? | ___ |
|
|
10
|
+
| Hierarchy | Is the visual hierarchy clear within 3 seconds? | ___ |
|
|
11
|
+
| Execution | Is every interaction polished, not just present? | ___ |
|
|
12
|
+
| Specificity | Does this feel made for this brief, not generic? | ___ |
|
|
13
|
+
| Restraint | Could anything be removed without losing meaning? | ___ |
|
|
14
|
+
| Variety | Would a second page feel different, not a color-swap? | ___ |
|
|
15
|
+
|
|
16
|
+
**Rule:** Any axis < 3 → revise before continuing.
|
|
17
|
+
|
|
18
|
+
---
|
|
19
|
+
|
|
20
|
+
## Visual Gates (1–7)
|
|
21
|
+
|
|
22
|
+
- [ ] **1.** No banned fonts: Inter, Roboto, Arial, system-ui as primary identity font
|
|
23
|
+
- [ ] **2.** No purple-blue gradients (`linear-gradient(135deg, #a855f7, #3b82f6)`)
|
|
24
|
+
- [ ] **3.** No gradient text (`background-clip: text`)
|
|
25
|
+
- [ ] **4.** No 3-equal-column icon cards
|
|
26
|
+
- [ ] **5.** No card-in-card layouts (card inside card inside card)
|
|
27
|
+
- [ ] **6.** No side-stripe cards (left border accent only)
|
|
28
|
+
- [ ] **7.** No centred-everything hero (all content centered with max-width)
|
|
29
|
+
|
|
30
|
+
## Structural Gates (8–9)
|
|
31
|
+
|
|
32
|
+
- [ ] **8.** No AI-template reuse (same fingerprint as prior build in project)
|
|
33
|
+
- [ ] **9.** Sections separated by more than whitespace (use dividers, headings, or background changes)
|
|
34
|
+
|
|
35
|
+
## Microinteraction Gates (10–19)
|
|
36
|
+
|
|
37
|
+
- [ ] **10.** No `transition-all` on interactive elements
|
|
38
|
+
- [ ] **11.** No `hover:scale-105` without context
|
|
39
|
+
- [ ] **12.** No `cubic-bezier(0.68, -0.55, 0.265, 1.55)` (bounce easing)
|
|
40
|
+
- [ ] **13.** No more than 2 hover effects per element
|
|
41
|
+
- [ ] **14.** No animating layout props (width, height, padding)
|
|
42
|
+
- [ ] **15.** No animated focus ring (focus state must be instant)
|
|
43
|
+
- [ ] **16.** No celebratory toasts/confetti on load
|
|
44
|
+
- [ ] **17.** No equal hover/focus tooltip delay
|
|
45
|
+
- [ ] **18.** No auto-rotating carousel without pause-on-hover
|
|
46
|
+
- [ ] **19.** No placeholder names (John Doe, Jane Smith, etc.)
|
|
47
|
+
|
|
48
|
+
## Variety Gates (20–21)
|
|
49
|
+
|
|
50
|
+
- [ ] **20.** Macrostructure stamp present in CSS comment
|
|
51
|
+
- [ ] **21.** Not Specimen fall-through (every brief needs a real macrostructure)
|
|
52
|
+
|
|
53
|
+
## Implementation Gates (22–27)
|
|
54
|
+
|
|
55
|
+
- [ ] **22.** No zero-chroma neutrals (`hsl(0, 0%, X%)` as primary)
|
|
56
|
+
- [ ] **23.** Accent color footprint < 5% of viewport
|
|
57
|
+
- [ ] **24.** Spacing follows scale (no off-scale values like 13px, 27px)
|
|
58
|
+
- [ ] **25.** Prose measure between 45–75ch
|
|
59
|
+
- [ ] **26.** All interactive elements have focus, active, disabled states
|
|
60
|
+
- [ ] **27.** Motion has `prefers-reduced-motion` fallback
|
|
61
|
+
|
|
62
|
+
## Hero Enrichment Gates (28–31)
|
|
63
|
+
|
|
64
|
+
- [ ] **28.** No autoplay-with-sound video
|
|
65
|
+
- [ ] **29.** No over-busy abstract background (more than 2 visual layers)
|
|
66
|
+
- [ ] **30.** No mixed icon libraries or emoji icons in professional UI
|
|
67
|
+
- [ ] **31.** No Lottie animation when CSS transition would suffice
|
|
68
|
+
|
|
69
|
+
## Diversification Gates (32–33)
|
|
70
|
+
|
|
71
|
+
- [ ] **32.** Same archetype not repeated without varied knob (size, color, layout)
|
|
72
|
+
- [ ] **33.** Decorative SVG/figure has `aria-hidden="true"` or meaningful `role`
|
|
73
|
+
|
|
74
|
+
## Layout-Safety Gates (34–36)
|
|
75
|
+
|
|
76
|
+
- [ ] **34.** No horizontal scroll (`overflow-x: clip` on html+body)
|
|
77
|
+
- [ ] **35.** No misplaced decorative text effects (text-shadow as decoration)
|
|
78
|
+
- [ ] **36.** Interactive bars centered (not left-aligned with unbalanced whitespace)
|
|
79
|
+
|
|
80
|
+
## Typography Gates (37–38a)
|
|
81
|
+
|
|
82
|
+
- [ ] **37.** No more than 3 font families
|
|
83
|
+
- [ ] **38.** No outlier font used in > 2 slots
|
|
84
|
+
- [ ] **38a.** No italic headers (headers use weight, not style)
|
|
85
|
+
|
|
86
|
+
## Input-State Gates (39)
|
|
87
|
+
|
|
88
|
+
- [ ] **39.** No border-width shift on focus, no border-built focus ring, no input/button height mismatch, no collapsed helper text, no opacity-only disabled
|
|
89
|
+
|
|
90
|
+
## Contrast Gates (40–41)
|
|
91
|
+
|
|
92
|
+
- [ ] **40.** WCAG 2.1 AA contrast (4.5:1 for text, 3:1 for large text)
|
|
93
|
+
- [ ] **41.** No ink-on-ink (same color for text and background with only opacity difference)
|
|
94
|
+
|
|
95
|
+
## Chrome Gates (42–45)
|
|
96
|
+
|
|
97
|
+
- [ ] **42.** No AI nav fingerprint (centered logo, pill nav, gradient CTA)
|
|
98
|
+
- [ ] **43.** No AI footer fingerprint (3 columns: Product, Company, Legal, social icons row)
|
|
99
|
+
- [ ] **44.** Hero fits viewport (no excessive height)
|
|
100
|
+
- [ ] **45.** Decorative elements have purpose or removed
|
|
101
|
+
|
|
102
|
+
## Honest Copy Gate (46)
|
|
103
|
+
|
|
104
|
+
- [ ] **46.** No invented metrics ("10x faster", "100% secure", "trusted by 10,000+")
|
|
105
|
+
|
|
106
|
+
## Re-Drawn Chrome Gate (47)
|
|
107
|
+
|
|
108
|
+
- [ ] **47.** No fake browser/phone/code/IDE chrome unless building a mockup tool
|
|
109
|
+
|
|
110
|
+
## Token Discipline Gate (48)
|
|
111
|
+
|
|
112
|
+
- [ ] **48.** No mid-render token improvisation (all values from DESIGN.md or theme)
|
|
113
|
+
|
|
114
|
+
## Responsive Clickable Gate (49)
|
|
115
|
+
|
|
116
|
+
- [ ] **49.** No two-line clickable text (buttons/links max 1 line)
|
|
117
|
+
|
|
118
|
+
## Mobile Non-Negotiables (50–57)
|
|
119
|
+
|
|
120
|
+
- [ ] **50.** Image grids use `minmax(0, 1fr)` not fixed widths
|
|
121
|
+
- [ ] **51.** Long words wrap (`overflow-wrap: break-word`)
|
|
122
|
+
- [ ] **52.** Mobile section-head collapse (h1 reduces size on small screens)
|
|
123
|
+
- [ ] **53.** Radio-tab scroll-jump prevented
|
|
124
|
+
- [ ] **54.** No tag-beside-heading on mobile (stack vertically)
|
|
125
|
+
- [ ] **55.** All-caps line-height collision avoided (`letter-spacing: 0.05em` minimum)
|
|
126
|
+
- [ ] **56.** Sticky header doesn't bleed into content
|
|
127
|
+
- [ ] **57.** Studied DNA not discarded (if `--study` was used, its output must be referenced)
|
|
128
|
+
|
|
129
|
+
---
|
|
130
|
+
|
|
131
|
+
## Final Gate
|
|
132
|
+
|
|
133
|
+
- [ ] **58.** Pre-emit self-critique average ≥ 3.0 on all 6 axes
|
|
134
|
+
|
|
135
|
+
**Pass condition:** All 58 gates = NO. Any YES → fix before shipping.
|