tribunal-kit 5.8.3 โ 5.8.5
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/.agent/ARCHITECTURE.md +5 -5
- package/.agent/history/integrity_manifest.json +1026 -0
- package/.agent/history/memory/.memory.idx +1217 -1
- package/.agent/history/memory/MEMORY.md +81 -1
- package/.agent/rules/GEMINI.md +1 -1
- package/.agent/scripts/_utils.js +28 -7
- package/.agent/scripts/case_law_manager.js +3 -15
- package/.agent/scripts/context_broker.js +3 -20
- package/.agent/scripts/guardrail_engine.js +643 -0
- package/.agent/scripts/integrity_manifest.js +492 -0
- package/.agent/scripts/marathon_harness.js +10 -1
- package/.agent/scripts/signal_detector.js +1 -1
- package/.agent/scripts/skill_evolution.js +39 -36
- package/.agent/scripts/skill_integrator.js +2 -12
- package/.agent/scripts/swarm_dispatcher.js +54 -5
- package/.agent/skills/12-principles-of-animation/SKILL.md +69 -0
- package/.agent/skills/60fps-animation/SKILL.md +78 -0
- package/.agent/skills/accessible-animation/SKILL.md +86 -0
- package/.agent/skills/adapt/SKILL.md +75 -0
- package/.agent/skills/animation-on-scroll/SKILL.md +110 -0
- package/.agent/skills/animation-systems/SKILL.md +69 -0
- package/.agent/skills/antfu-conventions/SKILL.md +74 -0
- package/.agent/skills/api-patterns/scripts/__pycache__/api_validator.cpython-311.pyc +0 -0
- package/.agent/skills/apple-design/SKILL.md +108 -0
- package/.agent/skills/audit-and-fix/SKILL.md +83 -0
- package/.agent/skills/baseline-ui/SKILL.md +74 -0
- package/.agent/skills/better-colors/SKILL.md +132 -0
- package/.agent/skills/better-typography/SKILL.md +111 -0
- package/.agent/skills/better-ui/SKILL.md +102 -0
- package/.agent/skills/bolder/SKILL.md +68 -0
- package/.agent/skills/build-primitive/SKILL.md +70 -0
- package/.agent/skills/clarify/SKILL.md +75 -0
- package/.agent/skills/cobejs/SKILL.md +96 -0
- package/.agent/skills/codebase-design/SKILL.md +84 -0
- package/.agent/skills/colorize/SKILL.md +77 -0
- package/.agent/skills/compact-landing/SKILL.md +70 -0
- package/.agent/skills/company-logos/SKILL.md +73 -0
- package/.agent/skills/create-design-md/SKILL.md +104 -0
- package/.agent/skills/critique/SKILL.md +95 -0
- package/.agent/skills/database-design/scripts/__pycache__/schema_validator.cpython-311.pyc +0 -0
- package/.agent/skills/delight/SKILL.md +65 -0
- package/.agent/skills/design-lab/SKILL.md +59 -0
- package/.agent/skills/diagnosing-bugs/SKILL.md +190 -0
- package/.agent/skills/distill/SKILL.md +65 -0
- package/.agent/skills/domain-modeling/SKILL.md +78 -0
- package/.agent/skills/fixing-accessibility/SKILL.md +100 -0
- package/.agent/skills/fixing-metadata/SKILL.md +97 -0
- package/.agent/skills/fixing-motion-performance/SKILL.md +96 -0
- package/.agent/skills/frontend-design/SKILL.md +80 -81
- package/.agent/skills/frontend-design/scripts/__pycache__/accessibility_checker.cpython-311.pyc +0 -0
- package/.agent/skills/frontend-design/scripts/__pycache__/ux_audit.cpython-311.pyc +0 -0
- package/.agent/skills/geo-fundamentals/scripts/__pycache__/geo_checker.cpython-311.pyc +0 -0
- package/.agent/skills/gpt-taste/SKILL.md +68 -0
- package/.agent/skills/harden/SKILL.md +74 -0
- package/.agent/skills/i18n-localization/scripts/__pycache__/i18n_checker.cpython-311.pyc +0 -0
- package/.agent/skills/impeccable/SKILL.md +74 -0
- package/.agent/skills/improve-codebase-architecture/SKILL.md +67 -0
- package/.agent/skills/improve-ui/SKILL.md +83 -0
- package/.agent/skills/landing-page/SKILL.md +88 -0
- package/.agent/skills/lint-and-validate/SKILL.md +0 -1
- package/.agent/skills/lint-and-validate/scripts/__pycache__/lint_runner.cpython-311.pyc +0 -0
- package/.agent/skills/lint-and-validate/scripts/__pycache__/type_coverage.cpython-311.pyc +0 -0
- package/.agent/skills/local-first-architecture/SKILL.md +66 -0
- package/.agent/skills/lottie-animation/SKILL.md +82 -0
- package/.agent/skills/marquee-loop/SKILL.md +96 -0
- package/.agent/skills/masked-reveal/SKILL.md +88 -0
- package/.agent/skills/micro-interaction/SKILL.md +100 -0
- package/.agent/skills/mobile-design/scripts/__pycache__/mobile_audit.cpython-311.pyc +0 -0
- package/.agent/skills/morphing-icons/SKILL.md +85 -0
- package/.agent/skills/motion-engineering/SKILL.md +66 -164
- package/.agent/skills/nextjs-react-expert/scripts/__pycache__/convert_rules.cpython-311.pyc +0 -0
- package/.agent/skills/nextjs-react-expert/scripts/__pycache__/react_performance_checker.cpython-311.pyc +0 -0
- package/.agent/skills/page-transition-animation/SKILL.md +108 -0
- package/.agent/skills/parallel-agents/SKILL.md +5 -5
- package/.agent/skills/performance-profiling/scripts/__pycache__/lighthouse_audit.cpython-311.pyc +0 -0
- package/.agent/skills/polish/SKILL.md +63 -0
- package/.agent/skills/pricing-page/SKILL.md +68 -0
- package/.agent/skills/progressive-blur/SKILL.md +100 -0
- package/.agent/skills/quieter/SKILL.md +68 -0
- package/.agent/skills/react-doctor/SKILL.md +70 -0
- package/.agent/skills/redesign-skill/SKILL.md +65 -0
- package/.agent/skills/seo-fundamentals/scripts/__pycache__/seo_checker.cpython-311.pyc +0 -0
- package/.agent/skills/shape/SKILL.md +73 -0
- package/.agent/skills/soft-skill/SKILL.md +72 -0
- package/.agent/skills/sounds-on-the-web/SKILL.md +100 -0
- package/.agent/skills/svg-animation/SKILL.md +91 -0
- package/.agent/skills/swiss-design/SKILL.md +64 -0
- package/.agent/skills/taste-skill/SKILL.md +71 -0
- package/.agent/skills/tdd-workflow/SKILL.md +36 -165
- package/.agent/skills/testing-patterns/scripts/__pycache__/test_runner.cpython-311.pyc +0 -0
- package/.agent/skills/thermo-nuclear-code-quality-review/SKILL.md +82 -0
- package/.agent/skills/to-spring-or-not-to-spring/SKILL.md +66 -0
- package/.agent/skills/transitions-dev/SKILL.md +101 -0
- package/.agent/skills/typeset/SKILL.md +76 -0
- package/.agent/skills/ui-skills-root/SKILL.md +85 -0
- package/.agent/skills/vulnerability-scanner/scripts/__pycache__/security_scan.cpython-311.pyc +0 -0
- package/.agent/skills/web-quality-audit/SKILL.md +67 -0
- package/.agent/skills/webapp-testing/scripts/__pycache__/playwright_runner.cpython-311.pyc +0 -0
- package/.agent/workflows/generate.md +1 -1
- package/.agent/workflows/tribunal-full.md +2 -2
- package/.agent/workflows/tribunal-speed.md +2 -2
- package/CONTRIBUTING.md +1 -1
- package/README.md +349 -239
- package/bin/mcp-server.js +45 -45
- package/bin/tribunal-kit.js +62 -1482
- package/bin/wrapper.js +50 -25
- package/dist/cli.js +43 -0
- package/dist/commands/align.js +1 -1
- package/dist/commands/compile.js +1 -1
- package/dist/commands/guardrail.js +275 -0
- package/dist/commands/init.js +35 -10
- package/dist/commands/native.js +228 -0
- package/dist/commands/optimize.js +318 -0
- package/dist/commands/validate.js +67 -0
- package/dist/mcp/server.js +4 -138
- package/dist/utils/version.js +1 -1
- package/package.json +13 -10
- package/scripts/benchmark.js +42 -0
- package/scripts/fix-vbc.js +98 -0
- package/scripts/fix-vbc.ps1 +119 -0
- package/scripts/sync-version.js +129 -76
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: fixing-metadata
|
|
3
|
+
description: Audit and fix page metadata including page titles, meta descriptions, Open Graph, Twitter cards, canonical URLs, and JSON-LD structured data.
|
|
4
|
+
version: 1.0.0
|
|
5
|
+
last-updated: 2026-07-22
|
|
6
|
+
applies-to-model: gemini-3-6-flash, claude-3-7-sonnet
|
|
7
|
+
routing:
|
|
8
|
+
domain: Technical SEO & Metadata Optimization
|
|
9
|
+
tier: pro
|
|
10
|
+
co-requires: [seo-fundamentals, web-quality-audit]
|
|
11
|
+
trigger-signals:
|
|
12
|
+
strong: [fixing-metadata, Open Graph tags, Twitter card metadata, canonical URL, JSON-LD structured data, meta description fix]
|
|
13
|
+
weak: [fix metadata, SEO tags]
|
|
14
|
+
---
|
|
15
|
+
|
|
16
|
+
# Fixing Metadata โ Technical SEO & Open Graph Tags
|
|
17
|
+
|
|
18
|
+
Audit, generate, and fix page metadata for rich social previews, search engine indexing, and structured data.
|
|
19
|
+
|
|
20
|
+
---
|
|
21
|
+
|
|
22
|
+
## 4 Metadata Standard Requirements
|
|
23
|
+
|
|
24
|
+
### 1. Title & Meta Description Length & Formatting
|
|
25
|
+
- **Title Tag**: 50โ60 characters max (*"Product Title | Brand Name"*).
|
|
26
|
+
- **Meta Description**: 140โ155 characters max. Must contain active call to value without truncating on search result cards.
|
|
27
|
+
|
|
28
|
+
### 2. Open Graph & Twitter Card Matrix
|
|
29
|
+
```html
|
|
30
|
+
<!-- Open Graph / Facebook / LinkedIn -->
|
|
31
|
+
<meta property="og:type" content="website" />
|
|
32
|
+
<meta property="og:title" content="UI Skills for Design Engineers" />
|
|
33
|
+
<meta property="og:description" content="A curated collection of design-engineering skills for accessibility, motion, and frontend craft." />
|
|
34
|
+
<meta property="og:image" content="https://example.com/og-image.jpg" />
|
|
35
|
+
<meta property="og:image:width" content="1200" />
|
|
36
|
+
<meta property="og:image:height" content="630" />
|
|
37
|
+
|
|
38
|
+
<!-- Twitter / X -->
|
|
39
|
+
<meta name="twitter:card" content="summary_large_image" />
|
|
40
|
+
<meta name="twitter:title" content="UI Skills for Design Engineers" />
|
|
41
|
+
<meta name="twitter:description" content="A curated collection of design-engineering skills for accessibility, motion, and frontend craft." />
|
|
42
|
+
<meta name="twitter:image" content="https://example.com/twitter-image.jpg" />
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
### 3. Canonical Tag Verification
|
|
46
|
+
```html
|
|
47
|
+
<link rel="canonical" href="https://example.com/current-page-path" />
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
### 4. Next.js App Router Metadata Export Example
|
|
51
|
+
```typescript
|
|
52
|
+
import type { Metadata } from "next";
|
|
53
|
+
|
|
54
|
+
export const metadata: Metadata = {
|
|
55
|
+
title: "UI Skills for Design Engineers",
|
|
56
|
+
description: "Curated design-engineering skills for accessibility, motion, and frontend craft.",
|
|
57
|
+
openGraph: {
|
|
58
|
+
title: "UI Skills for Design Engineers",
|
|
59
|
+
description: "Curated design-engineering skills for accessibility, motion, and frontend craft.",
|
|
60
|
+
url: "https://example.com",
|
|
61
|
+
images: [{ url: "https://example.com/og.jpg", width: 1200, height: 630 }],
|
|
62
|
+
},
|
|
63
|
+
twitter: {
|
|
64
|
+
card: "summary_large_image",
|
|
65
|
+
title: "UI Skills for Design Engineers",
|
|
66
|
+
images: ["https://example.com/twitter.jpg"],
|
|
67
|
+
},
|
|
68
|
+
};
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
---
|
|
72
|
+
|
|
73
|
+
## ๐ค LLM-Specific Traps
|
|
74
|
+
|
|
75
|
+
1. **Relative Image URLs in OG Metadata**: Using `<meta property="og:image" content="/og.jpg">` instead of full absolute HTTPS URLs (`https://domain.com/og.jpg`).
|
|
76
|
+
2. **Missing `summary_large_image`**: Forgetting `twitter:card` type, causing Twitter/X to render a tiny square thumbnail instead of a prominent banner preview.
|
|
77
|
+
|
|
78
|
+
---
|
|
79
|
+
|
|
80
|
+
## ๐๏ธ Tribunal Integration (Anti-Hallucination)
|
|
81
|
+
|
|
82
|
+
**Active reviewers: `seo-specialist` ยท `frontend-reviewer`**
|
|
83
|
+
|
|
84
|
+
### โ
Pre-Flight Self-Audit
|
|
85
|
+
|
|
86
|
+
```
|
|
87
|
+
โ
Are OpenGraph and Twitter card image URLs absolute HTTPS links?
|
|
88
|
+
โ
Is title length between 50 and 60 characters?
|
|
89
|
+
โ
Is canonical URL explicitly defined?
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
### ๐ Verification-Before-Completion (VBC) Protocol
|
|
93
|
+
|
|
94
|
+
**CRITICAL:** You must follow a strict "evidence-based closeout" state machine.
|
|
95
|
+
|
|
96
|
+
- โ **Forbidden:** Declaring a task complete because the output "looks correct."
|
|
97
|
+
- โ
**Required:** You are explicitly forbidden from finalizing any task without providing **concrete evidence** (terminal output, passing tests, compile success, or equivalent proof) that your output works as intended.
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: fixing-motion-performance
|
|
3
|
+
description: Audit and fix animation performance issues including layout thrashing, compositor properties, scroll-linked motion, and blur effects. Use when animations stutter, transitions jank, or reviewing CSS/JS animation performance.
|
|
4
|
+
version: 1.0.0
|
|
5
|
+
last-updated: 2026-07-22
|
|
6
|
+
applies-to-model: gemini-3-6-flash, claude-3-7-sonnet
|
|
7
|
+
routing:
|
|
8
|
+
domain: UI Motion & Performance
|
|
9
|
+
tier: pro
|
|
10
|
+
co-requires: [60fps-animation, gsap-performance]
|
|
11
|
+
trigger-signals:
|
|
12
|
+
strong: [fixing-motion-performance, layout thrashing, compositor properties, scroll jank, animation stutter, GPU acceleration, will-change]
|
|
13
|
+
weak: [jank, slow animation, stutter]
|
|
14
|
+
---
|
|
15
|
+
|
|
16
|
+
# Fixing Motion Performance โ 60/120fps Jank-Free Animation
|
|
17
|
+
|
|
18
|
+
Guidelines for auditing and resolving web animation jank, layout thrashing, and GPU rendering bottlenecks.
|
|
19
|
+
|
|
20
|
+
---
|
|
21
|
+
|
|
22
|
+
## 1. Browser Rendering Pipeline & Compositor Rules
|
|
23
|
+
|
|
24
|
+
Animations trigger one of 3 rendering costs:
|
|
25
|
+
1. **Layout (Expensive)**: Animating `width`, `height`, `margin`, `padding`, `top`, `left`, `flex`, `grid`. Forces full geometry recalculation across the page.
|
|
26
|
+
2. **Paint (Moderate)**: Animating `color`, `background-color`, `border-color`, `box-shadow`, `filter`. Forces pixel repaint.
|
|
27
|
+
3. **Composite (GPU Fast)**: Animating **`transform`** (`translate`, `scale`, `rotate`) and **`opacity`**. Offloaded entirely to GPU compositor thread!
|
|
28
|
+
|
|
29
|
+
$$\text{Rule: } \text{Animate ONLY } \mathbf{transform} \text{ and } \mathbf{opacity}$$
|
|
30
|
+
|
|
31
|
+
---
|
|
32
|
+
|
|
33
|
+
## 2. Layout Thrashing (Read/Write Interleaving)
|
|
34
|
+
|
|
35
|
+
NEVER interleave DOM layout measurements (`offsetHeight`, `getBoundingClientRect()`) with DOM mutations (`style.height = ...`) in the same event loop or frame loop!
|
|
36
|
+
|
|
37
|
+
```javascript
|
|
38
|
+
// โ WRONG โ Triggers Layout Thrashing (Multiple Recalculations)
|
|
39
|
+
elements.forEach(el => {
|
|
40
|
+
const h = el.offsetHeight; // READ (Forces Layout Calculation)
|
|
41
|
+
el.style.height = `${h + 10}px`; // WRITE (Invalidates Layout)
|
|
42
|
+
});
|
|
43
|
+
|
|
44
|
+
// โ
CORRECT โ Batch Reads First, Then Batch Writes
|
|
45
|
+
const heights = elements.map(el => el.offsetHeight); // BATCH READS
|
|
46
|
+
elements.forEach((el, i) => {
|
|
47
|
+
el.style.height = `${heights[i] + 10}px`; // BATCH WRITES
|
|
48
|
+
});
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
---
|
|
52
|
+
|
|
53
|
+
## 3. GPU Hinting (`will-change`)
|
|
54
|
+
|
|
55
|
+
- Use `will-change: transform, opacity` ONLY on actively animated elements right before interaction begins.
|
|
56
|
+
- Remove `will-change` when animation ends to free GPU memory. NEVER place `will-change: transform` globally on hundreds of DOM nodes.
|
|
57
|
+
|
|
58
|
+
```css
|
|
59
|
+
/* Apply hardware acceleration hint to GPU */
|
|
60
|
+
.animated-card {
|
|
61
|
+
will-change: transform, opacity;
|
|
62
|
+
}
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
---
|
|
66
|
+
|
|
67
|
+
## Anti-Slop Table
|
|
68
|
+
|
|
69
|
+
| Performance Issue | Motion Performance Fix | FPS Gain |
|
|
70
|
+
| --- | --- | --- |
|
|
71
|
+
| Animating `height: 0` to `auto` | FLIP technique or `scaleY` transform animation | 15fps โ 60fps |
|
|
72
|
+
| Scroll listener mutating inline CSS | `CSS scroll-timeline` or `IntersectionObserver` | Prevents main-thread scroll jank |
|
|
73
|
+
| `transition: all 0.3s` | `transition: transform 200ms cubic-bezier(0.16,1,0.3,1), opacity 200ms ease` | Eliminates accidental layout/color recalculations |
|
|
74
|
+
|
|
75
|
+
---
|
|
76
|
+
|
|
77
|
+
## ๐ค LLM-Specific Traps
|
|
78
|
+
|
|
79
|
+
1. **`transition: all`**: Using `all` causes layout recalculation and repaint on every hover.
|
|
80
|
+
2. **`requestAnimationFrame` Memory Leaks**: Launching continuous `rAF` loops without cancellation logic (`cancelAnimationFrame`).
|
|
81
|
+
|
|
82
|
+
---
|
|
83
|
+
|
|
84
|
+
## ๐๏ธ Tribunal Integration (Anti-Hallucination)
|
|
85
|
+
|
|
86
|
+
### โ
Pre-Flight Self-Audit
|
|
87
|
+
|
|
88
|
+
```
|
|
89
|
+
โ
Are all continuous animations restricted strictly to transform and opacity?
|
|
90
|
+
โ
Are DOM reads and writes batched to eliminate layout thrashing?
|
|
91
|
+
โ
Is will-change used sparingly on active animated elements only?
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
### ๐ Verification-Before-Completion (VBC) Protocol
|
|
95
|
+
|
|
96
|
+
Inspect Chrome Performance tab rendering profile in live preview to verify 60/120fps motion without frame drops.
|
|
@@ -25,143 +25,142 @@ routing:
|
|
|
25
25
|
|
|
26
26
|
---
|
|
27
27
|
|
|
28
|
-
## 1. Color
|
|
28
|
+
## 1. Modern Color Systems (OKLCH & HSL)
|
|
29
29
|
|
|
30
|
-
Never use raw flat HEX colors. Use HSL to build
|
|
30
|
+
Never use raw flat HEX colors. Use OKLCH (perceptually uniform) or HSL to build scalable, harmonic themes.
|
|
31
31
|
|
|
32
32
|
```css
|
|
33
33
|
:root {
|
|
34
|
-
/*
|
|
35
|
-
--
|
|
36
|
-
--
|
|
37
|
-
|
|
38
|
-
--bg-base:
|
|
39
|
-
--bg-surface:
|
|
40
|
-
|
|
41
|
-
--text-
|
|
42
|
-
--text-muted: hsl(var(--hue), 20%, 40%);
|
|
43
|
-
|
|
44
|
-
--primary: hsl(var(--hue), var(--sat), 50%);
|
|
45
|
-
--primary-hover: hsl(var(--hue), var(--sat), 40%); /* Darken via L */
|
|
34
|
+
/* OKLCH perceptual uniformity: lightness (0-100%), chroma (0-0.37), hue (0-360) */
|
|
35
|
+
--brand-primary: oklch(62% 0.21 275);
|
|
36
|
+
--brand-hover: oklch(from var(--brand-primary) calc(l - 0.1) c h); /* Relative Color Syntax */
|
|
37
|
+
|
|
38
|
+
--bg-base: oklch(98% 0.005 240);
|
|
39
|
+
--bg-surface: oklch(100% 0 0);
|
|
40
|
+
--text-main: oklch(20% 0.02 240);
|
|
41
|
+
--text-muted: oklch(50% 0.02 240);
|
|
46
42
|
}
|
|
47
43
|
|
|
48
|
-
/* OLED
|
|
49
|
-
|
|
50
|
-
:
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
--text-main: hsl(var(--hue), 20%, 95%);
|
|
54
|
-
--text-muted: hsl(var(--hue), 10%, 60%);
|
|
55
|
-
}
|
|
44
|
+
/* Light/Dark mode via native light-dark() function or OLED media query */
|
|
45
|
+
:root {
|
|
46
|
+
color-scheme: light dark;
|
|
47
|
+
--bg-surface: light-dark(oklch(100% 0 0), oklch(15% 0.01 240));
|
|
48
|
+
--text-main: light-dark(oklch(20% 0.02 240), oklch(95% 0.01 240));
|
|
56
49
|
}
|
|
57
50
|
```
|
|
58
51
|
|
|
59
|
-
|
|
52
|
+
---
|
|
53
|
+
|
|
54
|
+
## 2. Spatial Systems & Container Queries
|
|
60
55
|
|
|
61
|
-
Design relies on structural rhythm
|
|
56
|
+
Design relies on structural rhythm and component-level adaptability.
|
|
62
57
|
|
|
63
|
-
- **
|
|
64
|
-
- **
|
|
65
|
-
- **
|
|
66
|
-
- **Line height**: Body `1.5`, Headings `1.1` or `1.2`.
|
|
58
|
+
- **Base Spacing Grid (8px)**: Micro `4px`, `8px` | Component `16px`, `24px` | Section `48px`, `64px`, `96px`
|
|
59
|
+
- **Nested Border Radius Formula**: `outer_radius = inner_radius + padding`
|
|
60
|
+
- **Fluid Typography**: Use `clamp()` and `cqi` container units over macro media queries.
|
|
67
61
|
|
|
68
62
|
```css
|
|
69
|
-
/*
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
63
|
+
/* Container Queries for Portable Components */
|
|
64
|
+
.card-container {
|
|
65
|
+
container-type: inline-size;
|
|
66
|
+
container-name: card;
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
@container card (min-width: 400px) {
|
|
70
|
+
.card-body {
|
|
71
|
+
display: grid;
|
|
72
|
+
grid-template-columns: 1fr 2fr;
|
|
73
|
+
gap: 1.5cqi;
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
/* Typographic Balance */
|
|
78
|
+
h1, h2, h3 {
|
|
79
|
+
font-size: clamp(2rem, 4vw + 1rem, 4rem);
|
|
80
|
+
letter-spacing: -0.02em;
|
|
81
|
+
text-wrap: balance; /* Prevents awkward multiline headline breaks */
|
|
74
82
|
}
|
|
75
83
|
|
|
76
84
|
p {
|
|
77
85
|
font-size: 1rem;
|
|
78
|
-
max-width: 65ch;
|
|
86
|
+
max-width: 65ch;
|
|
87
|
+
text-wrap: pretty; /* Eliminates typographical orphans in body text */
|
|
79
88
|
}
|
|
80
89
|
```
|
|
81
90
|
|
|
82
91
|
---
|
|
83
92
|
|
|
84
|
-
## 3. Interaction &
|
|
93
|
+
## 3. Interaction & Entry Motion (@starting-style)
|
|
85
94
|
|
|
86
|
-
A premium UI reacts to
|
|
95
|
+
A premium UI reacts to user actions instantly and provides smooth DOM mount transitions.
|
|
87
96
|
|
|
88
97
|
```css
|
|
89
|
-
/*
|
|
98
|
+
/* Physical press feedback */
|
|
90
99
|
.btn {
|
|
91
|
-
transition:
|
|
100
|
+
transition: transform 0.15s cubic-bezier(0.2, 0.8, 0.4, 1), box-shadow 0.15s ease;
|
|
92
101
|
}
|
|
93
|
-
|
|
94
|
-
/* Active Depth - The physical button push */
|
|
95
102
|
.btn:active {
|
|
96
103
|
transform: scale(0.97);
|
|
97
104
|
}
|
|
98
105
|
|
|
99
|
-
/*
|
|
100
|
-
.
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
transition:
|
|
105
|
-
|
|
106
|
-
|
|
106
|
+
/* Entry/Exit Animations for DOM Elements (@starting-style) */
|
|
107
|
+
.toast {
|
|
108
|
+
display: none;
|
|
109
|
+
opacity: 0;
|
|
110
|
+
transform: translateY(8px);
|
|
111
|
+
transition: opacity 0.25s ease, transform 0.25s ease, display 0.25s allow-discrete;
|
|
112
|
+
}
|
|
113
|
+
.toast.is-open {
|
|
114
|
+
display: flex;
|
|
115
|
+
opacity: 1;
|
|
116
|
+
transform: translateY(0);
|
|
107
117
|
}
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
118
|
+
@starting-style {
|
|
119
|
+
.toast.is-open {
|
|
120
|
+
opacity: 0;
|
|
121
|
+
transform: translateY(8px);
|
|
122
|
+
}
|
|
113
123
|
}
|
|
114
124
|
```
|
|
115
125
|
|
|
116
126
|
---
|
|
117
127
|
|
|
118
|
-
## 4. Modern Glassmorphism & Depth
|
|
128
|
+
## 4. Modern Glassmorphism & Multi-Layer Depth
|
|
119
129
|
|
|
120
|
-
|
|
130
|
+
Avoid flat 1px borders and muddy single shadows. Use multi-layered elevation.
|
|
121
131
|
|
|
122
132
|
```css
|
|
123
|
-
|
|
124
|
-
.
|
|
125
|
-
background: rgba(255, 255, 255, 0.7);
|
|
133
|
+
.card {
|
|
134
|
+
background: light-dark(rgba(255, 255, 255, 0.8), rgba(20, 20, 25, 0.8));
|
|
126
135
|
backdrop-filter: blur(16px);
|
|
127
136
|
-webkit-backdrop-filter: blur(16px);
|
|
128
|
-
border: 1px solid rgba(255, 255, 255, 0.
|
|
137
|
+
border: 1px solid light-dark(rgba(0, 0, 0, 0.08), rgba(255, 255, 255, 0.12));
|
|
129
138
|
border-radius: 16px;
|
|
139
|
+
box-shadow:
|
|
140
|
+
0 1px 2px oklch(0% 0 0 / 0.05),
|
|
141
|
+
0 4px 12px oklch(0% 0 0 / 0.08);
|
|
130
142
|
}
|
|
131
143
|
```
|
|
132
144
|
|
|
133
145
|
---
|
|
134
146
|
|
|
135
|
-
## 5.
|
|
136
|
-
|
|
137
|
-
Forms are where users drop off. They must be flawless.
|
|
147
|
+
## 5. Accessibility (WCAG 2.2 AA Standards)
|
|
138
148
|
|
|
139
|
-
|
|
140
|
-
- **
|
|
141
|
-
- **
|
|
142
|
-
-
|
|
149
|
+
Design is broken if it excludes users.
|
|
150
|
+
- โ
**SC 2.5.8 Target Size**: Interactive controls must be at least `24x24px` CSS pixels (min `44x44px` for touch targets).
|
|
151
|
+
- โ
**SC 2.4.11 Focus Not Obscured**: Focused elements must never be completely hidden by sticky headers/footers.
|
|
152
|
+
- โ
**SC 2.4.13 Focus Appearance**: Visible focus rings must achieve `3:1` contrast ratio with a minimum 2px perimeter offset.
|
|
153
|
+
- โ
**Color Alone**: Never rely solely on color to convey state (pair error alerts with icons).
|
|
143
154
|
|
|
144
155
|
```css
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
outline:
|
|
148
|
-
outline-offset: 2px;
|
|
156
|
+
button:focus-visible, a:focus-visible {
|
|
157
|
+
outline: 2px solid var(--brand-primary);
|
|
158
|
+
outline-offset: 3px;
|
|
149
159
|
}
|
|
150
160
|
```
|
|
151
161
|
|
|
152
162
|
---
|
|
153
163
|
|
|
154
|
-
## 6. Accessibility (WCAG 2.2 AA)
|
|
155
|
-
|
|
156
|
-
Design is fundamentally broken if it excludes users.
|
|
157
|
-
|
|
158
|
-
- โ
Interactive elements need `aria-label` if not visually labeled.
|
|
159
|
-
- โ
Custom dropdowns/selects must support Arrow Keys and Escape.
|
|
160
|
-
- โ
Color alone cannot convey state (Error text must have an icon too `โ Password invalid`).
|
|
161
|
-
- โ
Hide decorative SVG/icons from screen readers `aria-hidden="true"`.
|
|
162
|
-
|
|
163
|
-
---
|
|
164
|
-
|
|
165
164
|
AI coding assistants often fall into specific bad habits when dealing with this domain. These are strictly forbidden:
|
|
166
165
|
|
|
167
166
|
1. **Over-engineering:** Proposing complex abstractions or distributed systems when a simpler approach suffices.
|
package/.agent/skills/frontend-design/scripts/__pycache__/accessibility_checker.cpython-311.pyc
ADDED
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: gpt-taste
|
|
3
|
+
description: High-agency UX/UI skill with strict layout variance, typography, and GSAP motion engineering constraints for superior visual judgment.
|
|
4
|
+
version: 1.0.0
|
|
5
|
+
last-updated: 2026-07-22
|
|
6
|
+
applies-to-model: gemini-3-6-flash, claude-3-7-sonnet
|
|
7
|
+
routing:
|
|
8
|
+
domain: High-Agency Aesthetic Judgment
|
|
9
|
+
tier: pro
|
|
10
|
+
co-requires: [taste-skill, better-ui, frontend-design]
|
|
11
|
+
trigger-signals:
|
|
12
|
+
strong: [gpt-taste, high agency UI, visual refinement, layout variance, superior aesthetic judgment]
|
|
13
|
+
weak: [aesthetic UI, refined visual]
|
|
14
|
+
---
|
|
15
|
+
|
|
16
|
+
# GPT Taste โ High-Agency Visual Refinement & Layout Variance
|
|
17
|
+
|
|
18
|
+
Inject high-agency visual judgment and layout variance into AI-generated interfaces.
|
|
19
|
+
|
|
20
|
+
---
|
|
21
|
+
|
|
22
|
+
## 4 High-Agency Visual Constraints
|
|
23
|
+
|
|
24
|
+
### 1. Structural Layout Variance
|
|
25
|
+
Never use standard symmetrical layouts by default. Vary structural axes across sections:
|
|
26
|
+
- **Hero**: Asymmetric 60/40 split or left-aligned stacked text with offset app preview frame.
|
|
27
|
+
- **Features**: Alternating 2-column image/text rhythm or horizontal scroll cards.
|
|
28
|
+
- **CTA**: Single full-width card with progressive backdrop blur overlay.
|
|
29
|
+
|
|
30
|
+
### 2. OKLCH Perceptual Palette Generation
|
|
31
|
+
Always generate color schemes in OKLCH:
|
|
32
|
+
- Background: `oklch(0.98 0.005 240)`
|
|
33
|
+
- Foreground: `oklch(0.18 0.01 240)`
|
|
34
|
+
- Accent: `oklch(0.62 0.22 250)`
|
|
35
|
+
|
|
36
|
+
### 3. GSAP / Motion Engineering Integration
|
|
37
|
+
When animation is requested, use explicit GSAP timelines with custom easing curves (`power3.out`, `expo.out`), avoiding default linear transitions.
|
|
38
|
+
|
|
39
|
+
### 4. Zero Output Truncation
|
|
40
|
+
Never output placeholder `// TODO: add remaining items` comments in UI code. Generate full, production-ready JSX/CSS markup.
|
|
41
|
+
|
|
42
|
+
---
|
|
43
|
+
|
|
44
|
+
## ๐ค LLM-Specific Traps
|
|
45
|
+
|
|
46
|
+
1. **Truncated Code Outputs**: Outputting incomplete code snippets or placeholder comments.
|
|
47
|
+
2. **Symmetrical Grid Boredom**: Using 3 identical square cards side-by-side without visual hierarchy differentiation.
|
|
48
|
+
|
|
49
|
+
---
|
|
50
|
+
|
|
51
|
+
## ๐๏ธ Tribunal Integration (Anti-Hallucination)
|
|
52
|
+
|
|
53
|
+
**Active reviewers: `frontend-reviewer` ยท `ui-ux-auditor`**
|
|
54
|
+
|
|
55
|
+
### โ
Pre-Flight Self-Audit
|
|
56
|
+
|
|
57
|
+
```
|
|
58
|
+
โ
Are code outputs 100% complete without placeholder TODOs?
|
|
59
|
+
โ
Is structural layout varied across different page sections?
|
|
60
|
+
โ
Are colors declared via OKLCH variables?
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
### ๐ Verification-Before-Completion (VBC) Protocol
|
|
64
|
+
|
|
65
|
+
**CRITICAL:** You must follow a strict "evidence-based closeout" state machine.
|
|
66
|
+
|
|
67
|
+
- โ **Forbidden:** Declaring a task complete because the output "looks correct."
|
|
68
|
+
- โ
**Required:** You are explicitly forbidden from finalizing any task without providing **concrete evidence** (terminal output, passing tests, compile success, or equivalent proof) that your output works as intended.
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: harden
|
|
3
|
+
description: Make interfaces production-resilient with robust empty states, error boundaries, loading skeletons, offline indicators, and internationalization (i18n) layout support.
|
|
4
|
+
version: 1.0.0
|
|
5
|
+
last-updated: 2026-07-22
|
|
6
|
+
applies-to-model: gemini-3-6-flash, claude-3-7-sonnet
|
|
7
|
+
routing:
|
|
8
|
+
domain: UI Resilience & Production Safety
|
|
9
|
+
tier: pro
|
|
10
|
+
co-requires: [error-resilience, polish, web-accessibility-auditor]
|
|
11
|
+
trigger-signals:
|
|
12
|
+
strong: [harden, ui resilience, error states, empty states, loading skeletons, offline support, i18n layout]
|
|
13
|
+
weak: [error handling ui, loading state]
|
|
14
|
+
---
|
|
15
|
+
|
|
16
|
+
# Harden โ Production UI Resilience & Edge Case Protection
|
|
17
|
+
|
|
18
|
+
Ensure UI components gracefully handle network failures, missing data, slow connections, extreme text lengths, and internationalization.
|
|
19
|
+
|
|
20
|
+
---
|
|
21
|
+
|
|
22
|
+
## 5 Resilience Domains
|
|
23
|
+
|
|
24
|
+
### 1. Zero-Data Empty States
|
|
25
|
+
- Never render empty blank slates or blank boxes.
|
|
26
|
+
- Always render a dedicated empty state component featuring:
|
|
27
|
+
- Contextual icon or subtle illustration
|
|
28
|
+
- Clear heading explaining the zero state (*"No active projects found"*)
|
|
29
|
+
- Secondary helper copy (*"Get started by creating your first project."*)
|
|
30
|
+
- Prominent primary action CTA button (*"Create Project"*)
|
|
31
|
+
|
|
32
|
+
### 2. Error Boundary UI & Retry Hooks
|
|
33
|
+
- Wrap high-risk component trees in React/framework Error Boundaries.
|
|
34
|
+
- Display localized inline error callouts with explicit "Retry" action buttons rather than crashing the full page view.
|
|
35
|
+
|
|
36
|
+
### 3. Cumulative Layout Shift (CLS) Loading Skeletons
|
|
37
|
+
- Match skeleton placeholder dimensions EXACTLY to incoming data elements.
|
|
38
|
+
- Use animated pulse keyframes (`@keyframes pulse { 0%, 100% { opacity: 1; } 50% { opacity: 0.4; } }`).
|
|
39
|
+
|
|
40
|
+
### 4. Extreme String Expansion (i18n)
|
|
41
|
+
- German, French, and Spanish strings are 30% - 50% longer than English.
|
|
42
|
+
- Avoid fixed button or container widths (`width: 120px`). Use `min-width` with flexible auto sizing and `flex-wrap: wrap` or text truncation.
|
|
43
|
+
|
|
44
|
+
### 5. Offline & Network Disconnection Handling
|
|
45
|
+
- Detect `navigator.onLine` state and display subtle offline status banners.
|
|
46
|
+
- Disable mutation buttons during offline mode with explicit tooltip explanation.
|
|
47
|
+
|
|
48
|
+
---
|
|
49
|
+
|
|
50
|
+
## ๐ค LLM-Specific Traps
|
|
51
|
+
|
|
52
|
+
1. **Swallowing Errors**: Catching API errors and displaying a blank container without informing the user.
|
|
53
|
+
2. **Fixed Container Widths**: Using hardcoded `width: 200px` on containers with international text.
|
|
54
|
+
|
|
55
|
+
---
|
|
56
|
+
|
|
57
|
+
## ๐๏ธ Tribunal Integration (Anti-Hallucination)
|
|
58
|
+
|
|
59
|
+
**Active reviewers: `resilience-reviewer` ยท `frontend-reviewer`**
|
|
60
|
+
|
|
61
|
+
### โ
Pre-Flight Self-Audit
|
|
62
|
+
|
|
63
|
+
```
|
|
64
|
+
โ
Does every async data container have explicit loading, error, and empty states?
|
|
65
|
+
โ
Are all containers built flexibly to accommodate 50% text expansion (i18n)?
|
|
66
|
+
โ
Do error fallbacks include actionable retry buttons?
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
### ๐ Verification-Before-Completion (VBC) Protocol
|
|
70
|
+
|
|
71
|
+
**CRITICAL:** You must follow a strict "evidence-based closeout" state machine.
|
|
72
|
+
|
|
73
|
+
- โ **Forbidden:** Declaring a task complete because the output "looks correct."
|
|
74
|
+
- โ
**Required:** You are explicitly forbidden from finalizing any task without providing **concrete evidence** (terminal output, passing tests, compile success, or equivalent proof) that your output works as intended.
|
|
Binary file
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: impeccable
|
|
3
|
+
description: Flagship design engineering skill for creating production-grade, anti-generic frontend interfaces with supreme craftsmanship, visual hierarchy, typography, spatial systems, and micro-interactions.
|
|
4
|
+
version: 1.0.0
|
|
5
|
+
last-updated: 2026-07-22
|
|
6
|
+
applies-to-model: gemini-3-6-flash, claude-3-7-sonnet
|
|
7
|
+
routing:
|
|
8
|
+
domain: Premium Frontend Craft
|
|
9
|
+
tier: flagship
|
|
10
|
+
co-requires: [frontend-design, better-ui, emil-design-eng]
|
|
11
|
+
trigger-signals:
|
|
12
|
+
strong: [impeccable, supreme craft, world-class ui, anti-generic design, production-grade interface]
|
|
13
|
+
weak: [beautiful ui, premium frontend]
|
|
14
|
+
---
|
|
15
|
+
|
|
16
|
+
# Impeccable โ Production-Grade Frontend Craft
|
|
17
|
+
|
|
18
|
+
The gold standard framework for crafting bespoke, world-class web applications that feel custom-built by elite design engineers.
|
|
19
|
+
|
|
20
|
+
---
|
|
21
|
+
|
|
22
|
+
## Core Pillars of Impeccable UI
|
|
23
|
+
|
|
24
|
+
### 1. Typography & Typographic Rhythm
|
|
25
|
+
- **Optical Sizing & Tracking**: Large display headings (32px+) require tight letter-spacing (`letter-spacing: -0.03em`). Small caption text (12px) requires positive tracking (`letter-spacing: +0.01em`).
|
|
26
|
+
- **Tabular Numbers**: Any numeric data that updates, increments, or displays in columns MUST use `font-variant-numeric: tabular-nums` or `font-feature-settings: "tnum"` to prevent visual jitter.
|
|
27
|
+
- **Text Wrapping & Balance**: Headings MUST use `text-wrap: balance` to prevent typographic orphans. Body paragraphs MUST use `text-wrap: pretty` (where supported) or max `65ch` width.
|
|
28
|
+
|
|
29
|
+
### 2. Color Systems & Gamut Precision
|
|
30
|
+
- **OKLCH Color Space**: Prefer `oklch()` over `hsl()` or `hex` for smooth perceptual uniformity across hue and lightness shifts.
|
|
31
|
+
- **Subtle Surface Steps**: Define surface colors with small perceptual lightness steps ($L \pm 2\%$) to create hierarchy without harsh dividers.
|
|
32
|
+
- **Adaptive Contrast**: Text contrast MUST adapt automatically across light/dark themes with high legibility ratios ($\ge 7:1$ for primary, $\ge 4.5:1$ for secondary).
|
|
33
|
+
|
|
34
|
+
### 3. Motion & Micro-Interactions
|
|
35
|
+
- **Intentional Motion**: Animations exist ONLY to convey spatial continuity, provide press feedback, or indicate state changes.
|
|
36
|
+
- **Duration Constraints**: Micro-interactions $\le 160\text{ms}$; dropdowns/popovers $\le 220\text{ms}$; page transitions $\le 300\text{ms}$.
|
|
37
|
+
- **Physically Grounded Entrances**: Elements scale in from `scale(0.96)` and opacity `0`, anchored to their trigger origin.
|
|
38
|
+
- **DOM Entry (@starting-style)**: Use `@starting-style` with `transition-behavior: allow-discrete` for smooth `display: none` to `display: block` entrance animations without JS overhead.
|
|
39
|
+
|
|
40
|
+
### 4. Layout Mechanics & Spatial Math
|
|
41
|
+
- **8px Grid System**: Every margin, padding, gap, and height MUST derive from an 8px grid (or 4px micro-grid).
|
|
42
|
+
- **Asymmetrical Balance**: Avoid cookie-cutter centered layouts for SaaS apps. Use strong left-aligned structural axes with generous negative space.
|
|
43
|
+
- **Container Queries**: Components adjust layout based on container size (`@container`), not viewport size (`@media`), making them context-agnostic.
|
|
44
|
+
- **WCAG 2.2 AA Target Size (SC 2.5.8)**: All interactive targets MUST measure at least `24x24px` CSS pixels (min `44x44px` for touch).
|
|
45
|
+
|
|
46
|
+
---
|
|
47
|
+
|
|
48
|
+
## ๐ค LLM-Specific Traps
|
|
49
|
+
|
|
50
|
+
1. **Generic AI Aesthetics**: Using purple-to-blue gradients, glow effects on every button, or heavy glassmorphism on white text.
|
|
51
|
+
2. **Hardcoded Pixel Values**: Writing hardcoded `px` font sizes and dimensions instead of `rem` and fluid `clamp()` utilities.
|
|
52
|
+
3. **Orphaned Text**: Failing to apply `text-wrap: balance` to multi-line headings.
|
|
53
|
+
|
|
54
|
+
---
|
|
55
|
+
|
|
56
|
+
## ๐๏ธ Tribunal Integration (Anti-Hallucination)
|
|
57
|
+
|
|
58
|
+
**Active reviewers: `frontend-reviewer` ยท `ui-ux-auditor` ยท `motion-reviewer`**
|
|
59
|
+
|
|
60
|
+
### โ
Pre-Flight Self-Audit
|
|
61
|
+
|
|
62
|
+
```
|
|
63
|
+
โ
Are tabular numbers enabled on all changing numeric values?
|
|
64
|
+
โ
Is heading text wrapped using `text-wrap: balance`?
|
|
65
|
+
โ
Is container query responsiveness utilized where components are reused?
|
|
66
|
+
โ
Are transitions tuned with custom cubic-bezier curves under 300ms?
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
### ๐ Verification-Before-Completion (VBC) Protocol
|
|
70
|
+
|
|
71
|
+
**CRITICAL:** You must follow a strict "evidence-based closeout" state machine.
|
|
72
|
+
|
|
73
|
+
- โ **Forbidden:** Declaring a task complete because the output "looks correct."
|
|
74
|
+
- โ
**Required:** You are explicitly forbidden from finalizing any task without providing **concrete evidence** (terminal output, passing tests, compile success, or equivalent proof) that your output works as intended.
|