oxycode-skills 1.0.0 → 1.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.agents/plugins/marketplace.json +21 -0
- package/.agents/skills/anti-slop.md +24 -0
- package/.agents/skills/component-architect.md +21 -0
- package/.agents/skills/design-audit.md +20 -0
- package/.agents/skills/design-md.md +21 -0
- package/.agents/skills/ui-builder.md +31 -0
- package/.agents/skills/website-design.md +24 -0
- package/.claude-plugin/plugin.json +27 -0
- package/.codex-plugin/plugin.json +23 -0
- package/.opencode/plugins/oxycode.js +17 -0
- package/README.md +90 -60
- package/package.json +13 -11
- package/skills/anti-slop/SKILL.md +5 -0
- package/skills/component-architect/SKILL.md +5 -0
- package/skills/design-audit/SKILL.md +5 -0
- package/skills/design-md/SKILL.md +5 -0
- package/skills/ui-builder/SKILL.md +5 -0
- package/skills/website-design/SKILL.md +336 -0
- package/skills/website-design/references/anti-slop-rules.md +103 -0
- package/skills/website-design/references/design-tokens.md +228 -0
- package/index.js +0 -17
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "oxycode-skills",
|
|
3
|
+
"interface": {
|
|
4
|
+
"displayName": "OxyCode Skills",
|
|
5
|
+
"shortDescription": "Vercel-quality UI skills — no more AI slop"
|
|
6
|
+
},
|
|
7
|
+
"plugins": [
|
|
8
|
+
{
|
|
9
|
+
"name": "oxycode-skills",
|
|
10
|
+
"source": {
|
|
11
|
+
"source": "url",
|
|
12
|
+
"url": "./"
|
|
13
|
+
},
|
|
14
|
+
"policy": {
|
|
15
|
+
"installation": "AVAILABLE",
|
|
16
|
+
"authentication": "ON_INSTALL"
|
|
17
|
+
},
|
|
18
|
+
"category": "Developer Tools"
|
|
19
|
+
}
|
|
20
|
+
]
|
|
21
|
+
}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
# anti-slop
|
|
2
|
+
|
|
3
|
+
Block generic AI patterns like purple gradients and centered cards.
|
|
4
|
+
|
|
5
|
+
## Usage
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
/anti-slop "Review this component for AI slop patterns"
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
## Description
|
|
12
|
+
|
|
13
|
+
This skill teaches AI coding agents to detect and fix common AI slop patterns — generic, template-driven UI that looks polished but lacks intention.
|
|
14
|
+
|
|
15
|
+
## What It Detects
|
|
16
|
+
|
|
17
|
+
- Wrong background colors (#0a0a1a, #0d1117)
|
|
18
|
+
- Purple/blue gradients and cyan accents
|
|
19
|
+
- Glassmorphism and backdrop-blur
|
|
20
|
+
- Glow effects and colored shadows
|
|
21
|
+
- Framer Motion page load animations
|
|
22
|
+
- Centered text layouts
|
|
23
|
+
- Doodle/pattern backgrounds
|
|
24
|
+
- Gradient text
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
# component-architect
|
|
2
|
+
|
|
3
|
+
Design scalable component architectures with atomic design.
|
|
4
|
+
|
|
5
|
+
## Usage
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
/component-architect "Design a component system for an e-commerce dashboard"
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
## Description
|
|
12
|
+
|
|
13
|
+
This skill teaches AI coding agents to design scalable component architectures following atomic design principles: Atoms → Molecules → Organisms → Templates → Pages.
|
|
14
|
+
|
|
15
|
+
## Features
|
|
16
|
+
|
|
17
|
+
- Atomic design methodology
|
|
18
|
+
- Compound component patterns
|
|
19
|
+
- Composition over configuration
|
|
20
|
+
- TypeScript prop interfaces
|
|
21
|
+
- Accessibility-first design
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
# design-audit
|
|
2
|
+
|
|
3
|
+
Score UI quality 0-100 with 10-dimension rubric.
|
|
4
|
+
|
|
5
|
+
## Usage
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
/design-audit "Audit this landing page for design quality"
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
## Description
|
|
12
|
+
|
|
13
|
+
This skill teaches AI coding agents to score UI quality on 10 dimensions: Typography, Color, Spacing, Layout, Components, Accessibility, Responsiveness, Visual Hierarchy, Consistency, and Polish.
|
|
14
|
+
|
|
15
|
+
## Scoring
|
|
16
|
+
|
|
17
|
+
- 90-100: Vercel/Stripe quality
|
|
18
|
+
- 70-89: Good, minor improvements needed
|
|
19
|
+
- 50-69: Average, needs work
|
|
20
|
+
- Below 50: AI slop detected
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
# design-md
|
|
2
|
+
|
|
3
|
+
Generate and validate DESIGN.md files following Google's standard.
|
|
4
|
+
|
|
5
|
+
## Usage
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
/design-md "Create a design system for a dark-themed analytics dashboard"
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
## Description
|
|
12
|
+
|
|
13
|
+
This skill teaches AI coding agents to generate DESIGN.md files that define design tokens (colors, typography, spacing, shadows) for consistent UI across projects.
|
|
14
|
+
|
|
15
|
+
## Features
|
|
16
|
+
|
|
17
|
+
- Automatic color palette generation
|
|
18
|
+
- Typography scale with proper ratios
|
|
19
|
+
- Consistent spacing system
|
|
20
|
+
- Component token definitions
|
|
21
|
+
- Google DESIGN.md standard compliance
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
# ui-builder
|
|
2
|
+
|
|
3
|
+
Build production-quality UI with React, Tailwind, and Next.js.
|
|
4
|
+
|
|
5
|
+
## Usage
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
/ui-builder "Create a stats card with title, value, and percentage change"
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
## Description
|
|
12
|
+
|
|
13
|
+
This skill teaches AI coding agents to generate Vercel-quality React/TypeScript code with Tailwind CSS. It follows design tokens from DESIGN.md files and avoids common AI slop patterns.
|
|
14
|
+
|
|
15
|
+
## Features
|
|
16
|
+
|
|
17
|
+
- React/TypeScript output
|
|
18
|
+
- Tailwind CSS styling
|
|
19
|
+
- Responsive design
|
|
20
|
+
- Accessibility attributes
|
|
21
|
+
- Design token integration
|
|
22
|
+
- Anti-slop pattern enforcement
|
|
23
|
+
|
|
24
|
+
## What It Prevents
|
|
25
|
+
|
|
26
|
+
- Purple gradients and cyan accents
|
|
27
|
+
- Glassmorphism and backdrop-blur
|
|
28
|
+
- Glow effects and colored shadows
|
|
29
|
+
- Centered everything layouts
|
|
30
|
+
- Framer Motion page load animations
|
|
31
|
+
- Doodle/pattern backgrounds
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
# website-design
|
|
2
|
+
|
|
3
|
+
Professional website design with clean typography, proper spacing, and Vercel-quality patterns.
|
|
4
|
+
|
|
5
|
+
## Usage
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
/website-design "Build a SaaS landing page with pricing section"
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
## Description
|
|
12
|
+
|
|
13
|
+
This skill teaches AI coding agents to build production-quality websites with Vercel-quality design: pure black backgrounds, clean typography, minimal effects, left-aligned layouts, and proper spacing.
|
|
14
|
+
|
|
15
|
+
## Non-Negotiable Rules
|
|
16
|
+
|
|
17
|
+
- Background is pure black (#000)
|
|
18
|
+
- Never add gradients
|
|
19
|
+
- Never add glassmorphism
|
|
20
|
+
- Never add glow effects
|
|
21
|
+
- Never add doodle/pattern backgrounds
|
|
22
|
+
- Never use Framer Motion page load animations
|
|
23
|
+
- Text is left-aligned
|
|
24
|
+
- Typography is hierarchical
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "oxycode-skills",
|
|
3
|
+
"version": "1.1.0",
|
|
4
|
+
"description": "Vercel-quality UI skills for AI coding agents. No more AI slop.",
|
|
5
|
+
"author": "oxycode-ai",
|
|
6
|
+
"license": "MIT",
|
|
7
|
+
"skills": [
|
|
8
|
+
"ui-builder",
|
|
9
|
+
"design-md",
|
|
10
|
+
"anti-slop",
|
|
11
|
+
"design-audit",
|
|
12
|
+
"component-architect",
|
|
13
|
+
"website-design"
|
|
14
|
+
],
|
|
15
|
+
"repository": "https://github.com/oxycodeai/OXYCODE-SKILLS",
|
|
16
|
+
"keywords": [
|
|
17
|
+
"ui",
|
|
18
|
+
"ux",
|
|
19
|
+
"design",
|
|
20
|
+
"anti-slop",
|
|
21
|
+
"react",
|
|
22
|
+
"nextjs",
|
|
23
|
+
"tailwind",
|
|
24
|
+
"vercel",
|
|
25
|
+
"stitch"
|
|
26
|
+
]
|
|
27
|
+
}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "oxycode-skills",
|
|
3
|
+
"version": "1.1.0",
|
|
4
|
+
"description": "Vercel-quality UI skills for AI coding agents. No more AI slop.",
|
|
5
|
+
"author": "oxycode-ai",
|
|
6
|
+
"license": "MIT",
|
|
7
|
+
"skills": "./skills/",
|
|
8
|
+
"repository": "https://github.com/oxycodeai/OXYCODE-SKILLS",
|
|
9
|
+
"interface": {
|
|
10
|
+
"displayName": "OxyCode Skills",
|
|
11
|
+
"shortDescription": "Vercel-quality UI skills — no more AI slop",
|
|
12
|
+
"longDescription": "Teaches AI coding agents to produce Vercel-quality UI instead of generic AI slop. Covers design tokens, component architecture, accessibility, and anti-slop patterns.",
|
|
13
|
+
"developerName": "oxycode-ai",
|
|
14
|
+
"category": "Developer Tools",
|
|
15
|
+
"capabilities": [
|
|
16
|
+
"Interactive",
|
|
17
|
+
"Read",
|
|
18
|
+
"Write"
|
|
19
|
+
],
|
|
20
|
+
"websiteURL": "https://github.com/oxycodeai/OXYCODE-SKILLS",
|
|
21
|
+
"brandColor": "#000000"
|
|
22
|
+
}
|
|
23
|
+
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
const path = require("path");
|
|
2
|
+
|
|
3
|
+
const OxycodePlugin = async ({ client, directory }) => {
|
|
4
|
+
const skillsDir = path.join(directory, "skills");
|
|
5
|
+
|
|
6
|
+
return {
|
|
7
|
+
name: "oxycode-skills",
|
|
8
|
+
config: (config) => {
|
|
9
|
+
if (!config.skills) config.skills = {};
|
|
10
|
+
if (!config.skills.paths) config.skills.paths = [];
|
|
11
|
+
config.skills.paths.push(skillsDir);
|
|
12
|
+
return config;
|
|
13
|
+
},
|
|
14
|
+
};
|
|
15
|
+
};
|
|
16
|
+
|
|
17
|
+
module.exports = OxycodePlugin;
|
package/README.md
CHANGED
|
@@ -4,20 +4,20 @@
|
|
|
4
4
|
|
|
5
5
|
<p align="center">
|
|
6
6
|
<img src="https://img.shields.io/badge/license-MIT-green" alt="License">
|
|
7
|
-
<img src="https://img.shields.io/badge/version-1.
|
|
8
|
-
<img src="https://img.shields.io/badge/
|
|
7
|
+
<img src="https://img.shields.io/badge/version-1.1.0-blue" alt="Version">
|
|
8
|
+
<img src="https://img.shields.io/badge/agents-5-purple" alt="Agents">
|
|
9
9
|
</p>
|
|
10
10
|
|
|
11
11
|
## What is this?
|
|
12
12
|
|
|
13
|
-
**oxycode-skills** teaches AI coding agents to produce Vercel-quality UI instead of generic "AI slop" — the purple gradients,
|
|
13
|
+
**oxycode-skills** teaches AI coding agents to produce Vercel-quality UI instead of generic "AI slop" — the purple gradients, backdrop-blur, and centered cards that every developer hates.
|
|
14
14
|
|
|
15
15
|
### The Problem
|
|
16
16
|
|
|
17
17
|
AI-generated UI usually looks like this:
|
|
18
18
|
```tsx
|
|
19
19
|
// ❌ AI Slop
|
|
20
|
-
<div className="bg-gradient-to-br from-purple-500 to-blue-500 p-8 rounded-2xl">
|
|
20
|
+
<div className="bg-gradient-to-br from-purple-500 to-blue-500 p-8 rounded-2xl backdrop-blur-md">
|
|
21
21
|
<h1 className="text-3xl font-bold text-white text-center">Welcome</h1>
|
|
22
22
|
</div>
|
|
23
23
|
```
|
|
@@ -27,91 +27,119 @@ AI-generated UI usually looks like this:
|
|
|
27
27
|
With oxycode-skills, AI generates this:
|
|
28
28
|
```tsx
|
|
29
29
|
// ✅ Vercel-Quality UI
|
|
30
|
-
<section className="
|
|
31
|
-
<
|
|
32
|
-
Welcome
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
Description here
|
|
36
|
-
</p>
|
|
30
|
+
<section className="py-24">
|
|
31
|
+
<div className="max-w-6xl mx-auto px-6">
|
|
32
|
+
<h1 className="text-5xl font-bold tracking-tight">Welcome</h1>
|
|
33
|
+
<p className="text-xl text-gray-400 mt-4 max-w-2xl">Description here</p>
|
|
34
|
+
</div>
|
|
37
35
|
</section>
|
|
38
36
|
```
|
|
39
37
|
|
|
38
|
+
## Demo Video
|
|
39
|
+
|
|
40
|
+
### Before (AI Slop)
|
|
41
|
+
[](https://t.me/OXYCODE_SKILLS_PREVIEW/2)
|
|
42
|
+
|
|
43
|
+
### After (oxycode-skills)
|
|
44
|
+
[](https://t.me/OXYCODE_SKILLS_PREVIEW/3)
|
|
45
|
+
|
|
40
46
|
## Skills Included
|
|
41
47
|
|
|
42
|
-
| Skill | Description |
|
|
43
|
-
|
|
44
|
-
| `ui-builder` | Full UI workflow: brief → tokens → components → polish |
|
|
45
|
-
| `design-md` | Generate & validate DESIGN.md files (Google's standard) |
|
|
46
|
-
| `anti-slop` | Block generic AI patterns
|
|
47
|
-
| `design-audit` | Score UI quality 0-100
|
|
48
|
-
| `component-architect` | Atomic design patterns
|
|
48
|
+
| Skill | Description |
|
|
49
|
+
|-------|-------------|
|
|
50
|
+
| `ui-builder` | Full UI workflow: brief → tokens → components → polish |
|
|
51
|
+
| `design-md` | Generate & validate DESIGN.md files (Google's standard) |
|
|
52
|
+
| `anti-slop` | Block generic AI patterns (gradients, glassmorphism, glow) |
|
|
53
|
+
| `design-audit` | Score UI quality 0-100 with 10-dimension rubric |
|
|
54
|
+
| `component-architect` | Atomic design patterns & compound components |
|
|
55
|
+
| `website-design` | Vercel-quality website patterns & anti-slop rules |
|
|
49
56
|
|
|
50
57
|
## Installation
|
|
51
58
|
|
|
52
|
-
###
|
|
59
|
+
### Interactive Install (Recommended)
|
|
60
|
+
|
|
53
61
|
```bash
|
|
54
|
-
|
|
62
|
+
npx skills add oxycodeai/OXYCODE-SKILLS
|
|
55
63
|
```
|
|
56
64
|
|
|
57
|
-
|
|
65
|
+
The CLI will prompt you to:
|
|
66
|
+
1. **Select your agent** — Claude Code, Codex, OpenCode, Antigravity, Cursor, or Universal
|
|
67
|
+
2. **Select skills** — Choose which skills to install
|
|
68
|
+
|
|
69
|
+
### Quick Install (All Skills, All Agents)
|
|
70
|
+
|
|
58
71
|
```bash
|
|
59
|
-
npx skills add
|
|
72
|
+
npx skills add oxycodeai/OXYCODE-SKILLS --all
|
|
60
73
|
```
|
|
61
74
|
|
|
62
|
-
###
|
|
75
|
+
### Install for Specific Agent
|
|
76
|
+
|
|
63
77
|
```bash
|
|
64
|
-
|
|
78
|
+
# Claude Code
|
|
79
|
+
npx skills add oxycodeai/OXYCODE-SKILLS --agent claude-code
|
|
80
|
+
|
|
81
|
+
# Codex
|
|
82
|
+
npx skills add oxycodeai/OXYCODE-SKILLS --agent codex
|
|
83
|
+
|
|
84
|
+
# OpenCode
|
|
85
|
+
npx skills add oxycodeai/OXYCODE-SKILLS --agent opencode
|
|
86
|
+
|
|
87
|
+
# Antigravity
|
|
88
|
+
npx skills add oxycodeai/OXYCODE-SKILLS --agent antigravity
|
|
89
|
+
|
|
90
|
+
# Universal (works on all agents)
|
|
91
|
+
npx skills add oxycodeai/OXYCODE-SKILLS --agent universal
|
|
65
92
|
```
|
|
66
93
|
|
|
94
|
+
### Install Specific Skills
|
|
95
|
+
|
|
96
|
+
```bash
|
|
97
|
+
# Just ui-builder
|
|
98
|
+
npx skills add oxycodeai/OXYCODE-SKILLS --skill ui-builder
|
|
99
|
+
|
|
100
|
+
# Multiple skills
|
|
101
|
+
npx skills add oxycodeai/OXYCODE-SKILLS --skill ui-builder --skill anti-slop
|
|
102
|
+
```
|
|
103
|
+
|
|
104
|
+
## Supported Agents
|
|
105
|
+
|
|
106
|
+
| Agent | Status | Install Command |
|
|
107
|
+
|-------|--------|----------------|
|
|
108
|
+
| Claude Code | ✅ | `--agent claude-code` |
|
|
109
|
+
| Codex | ✅ | `--agent codex` |
|
|
110
|
+
| OpenCode | ✅ | `--agent opencode` |
|
|
111
|
+
| Antigravity | ✅ | `--agent antigravity` |
|
|
112
|
+
| Cursor | ✅ | `--agent cursor` |
|
|
113
|
+
| Universal | ✅ | `--agent universal` |
|
|
114
|
+
|
|
67
115
|
## Quick Start
|
|
68
116
|
|
|
69
|
-
### 1.
|
|
70
|
-
```
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
## Colors
|
|
74
|
-
- Primary: #18181b (zinc-900)
|
|
75
|
-
- Secondary: #27272a (zinc-800)
|
|
76
|
-
- Accent: #3b82f6 (blue-500)
|
|
77
|
-
|
|
78
|
-
## Typography
|
|
79
|
-
- Font: Inter
|
|
80
|
-
- Headings: 600 weight, tracking-tight
|
|
81
|
-
- Body: 400 weight, leading-relaxed
|
|
82
|
-
|
|
83
|
-
## Spacing
|
|
84
|
-
- XS: 4px
|
|
85
|
-
- SM: 8px
|
|
86
|
-
- MD: 16px
|
|
87
|
-
- LG: 24px
|
|
88
|
-
- XL: 32px
|
|
117
|
+
### 1. Install skills
|
|
118
|
+
```bash
|
|
119
|
+
npx skills add oxycodeai/OXYCODE-SKILLS --all
|
|
89
120
|
```
|
|
90
121
|
|
|
91
|
-
### 2. Use
|
|
122
|
+
### 2. Use in your AI agent
|
|
92
123
|
```bash
|
|
93
124
|
# Generate a dashboard
|
|
94
|
-
/ui-builder "Create
|
|
125
|
+
/ui-builder "Create an analytics dashboard with sidebar navigation"
|
|
95
126
|
|
|
96
127
|
# Generate a landing page
|
|
97
128
|
/ui-builder "Build a SaaS landing page with pricing table"
|
|
129
|
+
|
|
130
|
+
# Audit existing UI
|
|
131
|
+
/design-audit "Score this landing page for design quality"
|
|
132
|
+
|
|
133
|
+
# Fix AI slop
|
|
134
|
+
/anti-slop "Review this component for AI slop patterns"
|
|
98
135
|
```
|
|
99
136
|
|
|
100
137
|
### 3. Get production-ready code
|
|
101
|
-
The skill will output:
|
|
102
138
|
- React/TypeScript components
|
|
103
139
|
- Tailwind CSS styling
|
|
104
140
|
- Responsive design
|
|
105
|
-
- Dark mode support
|
|
106
141
|
- Accessibility attributes
|
|
107
|
-
|
|
108
|
-
## Platforms Supported
|
|
109
|
-
|
|
110
|
-
- ✅ Claude Code
|
|
111
|
-
- ✅ OpenCode
|
|
112
|
-
- ✅ Codex
|
|
113
|
-
- ✅ Cursor
|
|
114
|
-
- ✅ Gemini CLI
|
|
142
|
+
- Design token integration
|
|
115
143
|
|
|
116
144
|
## What Makes This Different?
|
|
117
145
|
|
|
@@ -122,7 +150,8 @@ The skill will output:
|
|
|
122
150
|
| React/TypeScript output | ❌ | ✅ |
|
|
123
151
|
| Next.js integration | ❌ | ✅ |
|
|
124
152
|
| Quality scoring | ❌ | ✅ |
|
|
125
|
-
|
|
|
153
|
+
| 5+ agents supported | ❌ | ✅ |
|
|
154
|
+
| Interactive install | ❌ | ✅ |
|
|
126
155
|
|
|
127
156
|
## Contributing
|
|
128
157
|
|
|
@@ -134,9 +163,10 @@ MIT License - see [LICENSE](LICENSE) for details.
|
|
|
134
163
|
|
|
135
164
|
## Support
|
|
136
165
|
|
|
137
|
-
- 📧 Email:
|
|
138
|
-
- 🐦 Twitter: @oxycode_ai
|
|
139
|
-
-
|
|
166
|
+
- 📧 Email: oxycodeai@gmail.com
|
|
167
|
+
- 🐦 X (Twitter): @oxycode_ai
|
|
168
|
+
- ✈️ Telegram Channel: [Join](https://t.me/OXYCODEAI)
|
|
169
|
+
- 💬 Telegram Group: [Join](https://t.me/+YXwFGkYYjdJlNjE1)
|
|
140
170
|
|
|
141
171
|
---
|
|
142
172
|
|
package/package.json
CHANGED
|
@@ -1,40 +1,42 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "oxycode-skills",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.1.0",
|
|
4
4
|
"description": "Vercel-quality UI skills for AI coding agents. No more AI slop.",
|
|
5
|
-
"main": "index.js",
|
|
6
5
|
"files": [
|
|
7
6
|
"skills/**/*",
|
|
7
|
+
".claude-plugin/**",
|
|
8
|
+
".codex-plugin/**",
|
|
9
|
+
".opencode/**",
|
|
10
|
+
".agents/**",
|
|
8
11
|
"README.md",
|
|
9
12
|
"LICENSE"
|
|
10
13
|
],
|
|
11
14
|
"scripts": {
|
|
12
|
-
"test": "echo \"
|
|
13
|
-
"validate": "bash skills/design-md/scripts/validate.sh"
|
|
15
|
+
"test": "echo \"No tests yet\" && exit 0"
|
|
14
16
|
},
|
|
15
17
|
"keywords": [
|
|
16
18
|
"ai",
|
|
17
19
|
"skills",
|
|
18
20
|
"ui",
|
|
21
|
+
"ux",
|
|
19
22
|
"design",
|
|
23
|
+
"anti-slop",
|
|
20
24
|
"claude",
|
|
21
25
|
"codex",
|
|
22
26
|
"opencode",
|
|
23
27
|
"cursor",
|
|
28
|
+
"antigravity",
|
|
24
29
|
"gemini",
|
|
30
|
+
"universal",
|
|
25
31
|
"react",
|
|
26
32
|
"nextjs",
|
|
27
33
|
"tailwind",
|
|
28
34
|
"vercel",
|
|
29
35
|
"stitch",
|
|
30
|
-
"design-md",
|
|
31
|
-
"ui-builder",
|
|
32
|
-
"anti-slop",
|
|
33
|
-
"design-audit",
|
|
34
|
-
"component-architect",
|
|
35
|
-
"component-library",
|
|
36
36
|
"design-system",
|
|
37
|
-
"atomic-design"
|
|
37
|
+
"atomic-design",
|
|
38
|
+
"component-architecture",
|
|
39
|
+
"accessibility"
|
|
38
40
|
],
|
|
39
41
|
"author": "oxycode-ai",
|
|
40
42
|
"license": "MIT",
|
|
@@ -0,0 +1,336 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: website-design
|
|
3
|
+
description: "Professional website design with clean typography, proper spacing, and Vercel-quality patterns. Use when building landing pages, SaaS websites, portfolios, or any modern web application."
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Website Design Skill
|
|
7
|
+
|
|
8
|
+
## Non-Negotiable Rules
|
|
9
|
+
|
|
10
|
+
1. **Background is pure black** — `#000` only. Never `#0a0a1a`, `#0d1117`, `#0f172a`, or any other near-black.
|
|
11
|
+
2. **Never add gradients** — No purple-to-blue, no cyan, no gradient text. Solid colors only.
|
|
12
|
+
3. **Never add glow effects** — No `shadow-cyan`, no `shadow-purple`, no colored shadows.
|
|
13
|
+
4. **Never add glassmorphism** — No `backdrop-blur`, no `bg-white/5`, no frosted glass cards.
|
|
14
|
+
5. **Never add doodle/pattern backgrounds** — No SVG patterns, no radial-gradient dots.
|
|
15
|
+
6. **Never use Framer Motion for page load animations** — No `initial={{ opacity: 0, y: 20 }}`. No `whileInView`. No stagger animations. Content is visible immediately.
|
|
16
|
+
7. **Text is left-aligned** — Never center-align hero headings. Never center-align body text.
|
|
17
|
+
8. **Typography is hierarchical** — One `h1` per page, proper `h2` → `h3` → `p` hierarchy.
|
|
18
|
+
|
|
19
|
+
---
|
|
20
|
+
|
|
21
|
+
## Design Tokens
|
|
22
|
+
|
|
23
|
+
### Colors
|
|
24
|
+
|
|
25
|
+
| Token | Value | Use |
|
|
26
|
+
|-------|-------|-----|
|
|
27
|
+
| `--bg` | `#000` | Page background |
|
|
28
|
+
| `--bg-subtle` | `#0a0a0a` | Subtle section backgrounds |
|
|
29
|
+
| `--surface` | `#111` | Card backgrounds |
|
|
30
|
+
| `--border` | `#222` | Borders |
|
|
31
|
+
| `--text` | `#fff` | Primary text |
|
|
32
|
+
| `--text-secondary` | `#888` | Secondary text |
|
|
33
|
+
| `--text-muted` | `#555` | Muted text |
|
|
34
|
+
| `--accent` | `#3b82f6` | Links, buttons, interactive |
|
|
35
|
+
|
|
36
|
+
### Typography
|
|
37
|
+
|
|
38
|
+
| Level | Font | Size | Weight | Line Height |
|
|
39
|
+
|-------|------|------|--------|-------------|
|
|
40
|
+
| Display | Inter/system | 48px | 700 | 1.1 |
|
|
41
|
+
| H1 | Inter/system | 36px | 700 | 1.2 |
|
|
42
|
+
| H2 | Inter/system | 28px | 600 | 1.3 |
|
|
43
|
+
| H3 | Inter/system | 20px | 600 | 1.4 |
|
|
44
|
+
| Body | Inter/system | 16px | 400 | 1.6 |
|
|
45
|
+
| Small | Inter/system | 14px | 400 | 1.5 |
|
|
46
|
+
|
|
47
|
+
### Spacing (8px grid)
|
|
48
|
+
|
|
49
|
+
| Token | Value |
|
|
50
|
+
|-------|-------|
|
|
51
|
+
| `--space-1` | 4px |
|
|
52
|
+
| `--space-2` | 8px |
|
|
53
|
+
| `--space-3` | 12px |
|
|
54
|
+
| `--space-4` | 16px |
|
|
55
|
+
| `--space-6` | 24px |
|
|
56
|
+
| `--space-8` | 32px |
|
|
57
|
+
| `--space-12` | 48px |
|
|
58
|
+
| `--space-16` | 64px |
|
|
59
|
+
| `--space-24` | 96px |
|
|
60
|
+
| `--space-32` | 128px |
|
|
61
|
+
|
|
62
|
+
### Transitions
|
|
63
|
+
|
|
64
|
+
| Type | Duration | Easing |
|
|
65
|
+
|------|----------|--------|
|
|
66
|
+
| Micro (hover) | 150ms | ease |
|
|
67
|
+
| Default | 200ms | ease |
|
|
68
|
+
| Slow | 300ms | ease-out |
|
|
69
|
+
|
|
70
|
+
---
|
|
71
|
+
|
|
72
|
+
## Layout Patterns
|
|
73
|
+
|
|
74
|
+
### Page Container
|
|
75
|
+
|
|
76
|
+
```tsx
|
|
77
|
+
<div className="min-h-screen bg-black text-white">
|
|
78
|
+
<div className="max-w-6xl mx-auto px-6">
|
|
79
|
+
{/* Content */}
|
|
80
|
+
</div>
|
|
81
|
+
</div>
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
### Section Spacing
|
|
85
|
+
|
|
86
|
+
```tsx
|
|
87
|
+
<section className="py-24">
|
|
88
|
+
<div className="max-w-6xl mx-auto px-6">
|
|
89
|
+
<h2 className="text-3xl font-bold mb-4">Section Title</h2>
|
|
90
|
+
<p className="text-gray-400 text-lg mb-12 max-w-2xl">
|
|
91
|
+
Section description text.
|
|
92
|
+
</p>
|
|
93
|
+
{/* Section content */}
|
|
94
|
+
</div>
|
|
95
|
+
</section>
|
|
96
|
+
```
|
|
97
|
+
|
|
98
|
+
### Grid
|
|
99
|
+
|
|
100
|
+
```tsx
|
|
101
|
+
<div className="grid grid-cols-1 md:grid-cols-3 gap-6">
|
|
102
|
+
{/* Items */}
|
|
103
|
+
</div>
|
|
104
|
+
```
|
|
105
|
+
|
|
106
|
+
### Two-Column Layout
|
|
107
|
+
|
|
108
|
+
```tsx
|
|
109
|
+
<div className="grid grid-cols-1 lg:grid-cols-2 gap-16 items-start">
|
|
110
|
+
<div>
|
|
111
|
+
{/* Left column */}
|
|
112
|
+
</div>
|
|
113
|
+
<div>
|
|
114
|
+
{/* Right column */}
|
|
115
|
+
</div>
|
|
116
|
+
</div>
|
|
117
|
+
```
|
|
118
|
+
|
|
119
|
+
---
|
|
120
|
+
|
|
121
|
+
## Component Patterns
|
|
122
|
+
|
|
123
|
+
### Navigation
|
|
124
|
+
|
|
125
|
+
```tsx
|
|
126
|
+
<nav className="border-b border-white/10">
|
|
127
|
+
<div className="max-w-6xl mx-auto px-6 h-16 flex items-center justify-between">
|
|
128
|
+
<a href="/" className="text-lg font-semibold">
|
|
129
|
+
Logo
|
|
130
|
+
</a>
|
|
131
|
+
<div className="flex items-center gap-8">
|
|
132
|
+
<a href="#features" className="text-sm text-gray-400 hover:text-white transition-colors">
|
|
133
|
+
Features
|
|
134
|
+
</a>
|
|
135
|
+
<a href="#pricing" className="text-sm text-gray-400 hover:text-white transition-colors">
|
|
136
|
+
Pricing
|
|
137
|
+
</a>
|
|
138
|
+
<button className="bg-white text-black text-sm font-medium px-4 py-2 rounded-lg hover:bg-gray-200 transition-colors">
|
|
139
|
+
Get Started
|
|
140
|
+
</button>
|
|
141
|
+
</div>
|
|
142
|
+
</div>
|
|
143
|
+
</nav>
|
|
144
|
+
```
|
|
145
|
+
|
|
146
|
+
**Rules:**
|
|
147
|
+
- No `backdrop-blur`. No glassmorphism. Solid background.
|
|
148
|
+
- Border-bottom: `border-white/10` or `border-white/5`
|
|
149
|
+
- Height: `h-16` (64px) standard
|
|
150
|
+
- Logo: text-based, not image (unless brand logo exists)
|
|
151
|
+
|
|
152
|
+
### Hero Section
|
|
153
|
+
|
|
154
|
+
```tsx
|
|
155
|
+
<section className="py-32">
|
|
156
|
+
<div className="max-w-6xl mx-auto px-6">
|
|
157
|
+
<h1 className="text-5xl md:text-6xl font-bold tracking-tight mb-6">
|
|
158
|
+
Build faster.<br />Ship better.
|
|
159
|
+
</h1>
|
|
160
|
+
<p className="text-xl text-gray-400 mb-10 max-w-2xl">
|
|
161
|
+
One paragraph that explains what this product does. Keep it under 2 lines.
|
|
162
|
+
</p>
|
|
163
|
+
<div className="flex items-center gap-4">
|
|
164
|
+
<button className="bg-white text-black text-sm font-medium px-5 py-3 rounded-lg hover:bg-gray-200 transition-colors">
|
|
165
|
+
Get Started
|
|
166
|
+
</button>
|
|
167
|
+
<button className="border border-white/20 text-white text-sm font-medium px-5 py-3 rounded-lg hover:bg-white/5 transition-colors">
|
|
168
|
+
Learn More
|
|
169
|
+
</button>
|
|
170
|
+
</div>
|
|
171
|
+
</div>
|
|
172
|
+
</section>
|
|
173
|
+
```
|
|
174
|
+
|
|
175
|
+
**Rules:**
|
|
176
|
+
- Text is left-aligned. Never centered.
|
|
177
|
+
- `h1`: `text-5xl md:text-6xl font-bold tracking-tight`
|
|
178
|
+
- One-line subtitle: `text-xl text-gray-400 max-w-2xl`
|
|
179
|
+
- CTA buttons: Primary (white bg, black text) + Secondary (border only)
|
|
180
|
+
- Max height: no `min-h-screen`. Use `py-32` for breathing room.
|
|
181
|
+
|
|
182
|
+
### Feature Card
|
|
183
|
+
|
|
184
|
+
```tsx
|
|
185
|
+
<div className="p-6">
|
|
186
|
+
<div className="w-10 h-10 rounded-lg bg-white/5 flex items-center justify-center mb-4">
|
|
187
|
+
{/* Icon */}
|
|
188
|
+
</div>
|
|
189
|
+
<h3 className="text-base font-semibold mb-2">Feature Name</h3>
|
|
190
|
+
<p className="text-sm text-gray-400 leading-relaxed">
|
|
191
|
+
Feature description. Keep it to 2 lines max.
|
|
192
|
+
</p>
|
|
193
|
+
</div>
|
|
194
|
+
```
|
|
195
|
+
|
|
196
|
+
**Rules:**
|
|
197
|
+
- No card backgrounds. Just padding.
|
|
198
|
+
- If cards needed: `border border-white/10 rounded-xl p-6`
|
|
199
|
+
- Icon container: `w-10 h-10 rounded-lg bg-white/5`
|
|
200
|
+
- No hover glow. No hover shadow. No colored shadows.
|
|
201
|
+
|
|
202
|
+
### Pricing Card
|
|
203
|
+
|
|
204
|
+
```tsx
|
|
205
|
+
<div className="border border-white/10 rounded-xl p-8">
|
|
206
|
+
<h3 className="text-lg font-semibold mb-2">Pro</h3>
|
|
207
|
+
<p className="text-sm text-gray-400 mb-6">For growing teams</p>
|
|
208
|
+
<div className="mb-6">
|
|
209
|
+
<span className="text-4xl font-bold">$29</span>
|
|
210
|
+
<span className="text-gray-400 text-sm">/month</span>
|
|
211
|
+
</div>
|
|
212
|
+
<ul className="space-y-3 mb-8">
|
|
213
|
+
<li className="flex items-center gap-3 text-sm">
|
|
214
|
+
<span className="text-white">✓</span> Feature one
|
|
215
|
+
</li>
|
|
216
|
+
<li className="flex items-center gap-3 text-sm">
|
|
217
|
+
<span className="text-white">✓</span> Feature two
|
|
218
|
+
</li>
|
|
219
|
+
</ul>
|
|
220
|
+
<button className="w-full bg-white text-black text-sm font-medium py-3 rounded-lg hover:bg-gray-200 transition-colors">
|
|
221
|
+
Get Started
|
|
222
|
+
</button>
|
|
223
|
+
</div>
|
|
224
|
+
```
|
|
225
|
+
|
|
226
|
+
**Rules:**
|
|
227
|
+
- No gradient borders. No "featured" tier with glow.
|
|
228
|
+
- Checkmark: `✓` character, not icon library
|
|
229
|
+
- Price: `text-4xl font-bold`
|
|
230
|
+
- Monthly toggle: simple `text-sm text-gray-400` toggle, not animated
|
|
231
|
+
|
|
232
|
+
### Testimonial
|
|
233
|
+
|
|
234
|
+
```tsx
|
|
235
|
+
<div className="border border-white/10 rounded-xl p-6">
|
|
236
|
+
<p className="text-sm text-gray-300 mb-4 leading-relaxed">
|
|
237
|
+
"Quote text goes here. Keep it to 2-3 sentences max."
|
|
238
|
+
</p>
|
|
239
|
+
<div className="flex items-center gap-3">
|
|
240
|
+
<div className="w-8 h-8 rounded-full bg-white/10" />
|
|
241
|
+
<div>
|
|
242
|
+
<p className="text-sm font-medium">Name</p>
|
|
243
|
+
<p className="text-xs text-gray-500">Company, Role</p>
|
|
244
|
+
</div>
|
|
245
|
+
</div>
|
|
246
|
+
</div>
|
|
247
|
+
```
|
|
248
|
+
|
|
249
|
+
**Rules:**
|
|
250
|
+
- No star ratings (unless explicitly requested)
|
|
251
|
+
- No carousel (grid is better for 3-6 testimonials)
|
|
252
|
+
- Avatar: `w-8 h-8 rounded-full bg-white/10` (placeholder)
|
|
253
|
+
- Quote: `text-sm text-gray-300 leading-relaxed`
|
|
254
|
+
|
|
255
|
+
### Footer
|
|
256
|
+
|
|
257
|
+
```tsx
|
|
258
|
+
<footer className="border-t border-white/10 py-12">
|
|
259
|
+
<div className="max-w-6xl mx-auto px-6">
|
|
260
|
+
<div className="grid grid-cols-2 md:grid-cols-4 gap-8">
|
|
261
|
+
<div>
|
|
262
|
+
<h4 className="text-sm font-semibold mb-4">Product</h4>
|
|
263
|
+
<ul className="space-y-2">
|
|
264
|
+
<li><a href="#" className="text-sm text-gray-400 hover:text-white transition-colors">Features</a></li>
|
|
265
|
+
</ul>
|
|
266
|
+
</div>
|
|
267
|
+
</div>
|
|
268
|
+
<div className="mt-12 pt-8 border-t border-white/10">
|
|
269
|
+
<p className="text-xs text-gray-500">© 2026 Company. All rights reserved.</p>
|
|
270
|
+
</div>
|
|
271
|
+
</div>
|
|
272
|
+
</footer>
|
|
273
|
+
```
|
|
274
|
+
|
|
275
|
+
---
|
|
276
|
+
|
|
277
|
+
## What NOT to Do (AI Slop)
|
|
278
|
+
|
|
279
|
+
| Pattern | ❌ Never | ✅ Instead |
|
|
280
|
+
|---------|---------|-----------|
|
|
281
|
+
| Background | `#0a0a1a`, `#0d1117` | `#000` |
|
|
282
|
+
| Accent | `#00d4ff` (cyan) | `#3b82f6` (blue) or `#fff` |
|
|
283
|
+
| Gradient | `from-purple-500 to-blue-500` | Solid colors |
|
|
284
|
+
| Gradient text | `bg-clip-text text-transparent` | `text-white` |
|
|
285
|
+
| Glass | `backdrop-blur-md bg-white/5` | Solid bg or no bg |
|
|
286
|
+
| Glow | `shadow-cyan-500/20` | `shadow-sm` or none |
|
|
287
|
+
| Pattern bg | SVG doodles, radial dots | Pure `#000` |
|
|
288
|
+
| Animation | `initial={{ opacity: 0 }}` | Content visible immediately |
|
|
289
|
+
| Hover | `whileHover={{ scale: 1.05 }}` | `hover:bg-gray-200 transition-colors` |
|
|
290
|
+
| Center align | `text-center` on hero | `text-left` |
|
|
291
|
+
| Framer Motion | Page load animations | CSS transitions only |
|
|
292
|
+
| Icon library | Lucide/Heroicons everywhere | Text or simple SVG |
|
|
293
|
+
| Card bg | `bg-white/5` | `bg-transparent` or `bg-white/[0.02]` |
|
|
294
|
+
|
|
295
|
+
---
|
|
296
|
+
|
|
297
|
+
## Accessibility
|
|
298
|
+
|
|
299
|
+
- `aria-label` on icon-only buttons
|
|
300
|
+
- `role="navigation"` on nav
|
|
301
|
+
- Focus states: `focus-visible:ring-2 focus-visible:ring-white/20`
|
|
302
|
+
- Skip link: `<a href="#main" className="sr-only focus:not-sr-only">Skip to content</a>`
|
|
303
|
+
- Semantic HTML: `<nav>`, `<main>`, `<footer>`, `<section>`
|
|
304
|
+
|
|
305
|
+
---
|
|
306
|
+
|
|
307
|
+
## Responsive
|
|
308
|
+
|
|
309
|
+
- Mobile-first: `grid-cols-1 md:grid-cols-2 lg:grid-cols-3`
|
|
310
|
+
- Container: `max-w-6xl mx-auto px-6`
|
|
311
|
+
- Text: `text-3xl md:text-5xl` for headings
|
|
312
|
+
- Navigation: hamburger menu on mobile (`md:hidden`)
|
|
313
|
+
|
|
314
|
+
---
|
|
315
|
+
|
|
316
|
+
## Final Checklist
|
|
317
|
+
|
|
318
|
+
- [ ] Background is `#000` (pure black)
|
|
319
|
+
- [ ] No gradients anywhere
|
|
320
|
+
- [ ] No glassmorphism / backdrop-blur
|
|
321
|
+
- [ ] No glow effects / colored shadows
|
|
322
|
+
- [ ] No doodle/pattern backgrounds
|
|
323
|
+
- [ ] No Framer Motion page load animations
|
|
324
|
+
- [ ] Text is left-aligned (not centered)
|
|
325
|
+
- [ ] Typography hierarchy is correct
|
|
326
|
+
- [ ] Transitions are 150-200ms max
|
|
327
|
+
- [ ] Mobile responsive
|
|
328
|
+
- [ ] Accessibility (aria labels, focus states)
|
|
329
|
+
- [ ] Semantic HTML
|
|
330
|
+
|
|
331
|
+
---
|
|
332
|
+
|
|
333
|
+
## Reference Files
|
|
334
|
+
|
|
335
|
+
- `references/anti-slop-rules.md` — Full list of AI slop patterns to avoid
|
|
336
|
+
- `references/design-tokens.md` — Complete design token system
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
# Anti-Slop Rules
|
|
2
|
+
|
|
3
|
+
## What is AI Slop?
|
|
4
|
+
|
|
5
|
+
AI slop is generic, template-driven UI that looks polished but lacks intention. It follows the same patterns regardless of context. Every dark website ends up looking identical.
|
|
6
|
+
|
|
7
|
+
## The Anti-Slop Checklist
|
|
8
|
+
|
|
9
|
+
### Colors
|
|
10
|
+
|
|
11
|
+
| Slop | Why It's Bad | Fix |
|
|
12
|
+
|------|-------------|-----|
|
|
13
|
+
| `#0a0a1a` background | Looks like every other AI website | `#000` — pure black |
|
|
14
|
+
| `#00d4ff` cyan accent | Overused, looks synthetic | `#3b82f6` blue or `#fff` white |
|
|
15
|
+
| Purple-blue gradients | Gradients are decorative, not functional | Solid colors only |
|
|
16
|
+
| Gradient text | Hard to read, looks gimmicky | `text-white` |
|
|
17
|
+
| `bg-white/5` card backgrounds | Makes everything look the same | `bg-transparent` or `bg-white/[0.02]` |
|
|
18
|
+
|
|
19
|
+
### Effects
|
|
20
|
+
|
|
21
|
+
| Slop | Why It's Bad | Fix |
|
|
22
|
+
|------|-------------|-----|
|
|
23
|
+
| `backdrop-blur` glassmorphism | Overused, hurts performance | Solid backgrounds |
|
|
24
|
+
| `shadow-cyan-500/20` glow | Looks like neon, not professional | `shadow-sm` or none |
|
|
25
|
+
| `hover:shadow-lg hover:shadow-cyan-500/10` | Distracting, not functional | `hover:bg-gray-200 transition-colors` |
|
|
26
|
+
| SVG doodle backgrounds | Clutters the page, adds no value | Pure `#000` |
|
|
27
|
+
| Radial gradient dots | Looks like every AI landing page | Solid background |
|
|
28
|
+
|
|
29
|
+
### Animation
|
|
30
|
+
|
|
31
|
+
| Slop | Why It's Bad | Fix |
|
|
32
|
+
|------|-------------|-----|
|
|
33
|
+
| `initial={{ opacity: 0, y: 20 }}` | Content invisible on load | Content visible immediately |
|
|
34
|
+
| `whileInView` scroll reveal | Slows down browsing | No scroll animations |
|
|
35
|
+
| `staggerChildren` | Delays information delivery | Static layout |
|
|
36
|
+
| `whileHover={{ scale: 1.05 }}` | Distracting micro-interactions | `transition-colors` only |
|
|
37
|
+
| `whileTap={{ scale: 0.95 }}` | Over-animated | No tap animation |
|
|
38
|
+
| Framer Motion for page load | Adds 40KB+ bundle for no reason | CSS transitions |
|
|
39
|
+
|
|
40
|
+
### Typography
|
|
41
|
+
|
|
42
|
+
| Slop | Why It's Bad | Fix |
|
|
43
|
+
|------|-------------|-----|
|
|
44
|
+
| `text-center` on hero | Looks like a template | `text-left` |
|
|
45
|
+
| Center-aligned body text | Hard to read | `text-left` |
|
|
46
|
+
| `text-6xl font-bold` everywhere | No hierarchy | Proper h1 → h2 → h3 |
|
|
47
|
+
| `gradient-text` | Hard to read, looks gimmicky | `text-white` |
|
|
48
|
+
|
|
49
|
+
### Layout
|
|
50
|
+
|
|
51
|
+
| Slop | Why It's Bad | Fix |
|
|
52
|
+
|------|-------------|-----|
|
|
53
|
+
| `min-h-screen` hero | Forces full viewport | `py-32` for natural height |
|
|
54
|
+
| `flex items-center justify-center` everywhere | Everything centered | Left-aligned by default |
|
|
55
|
+
| `grid-cols-1 md:grid-cols-3` always | Same layout every time | Layout matches content |
|
|
56
|
+
| `max-w-7xl` container | Too wide for most content | `max-w-6xl` or `max-w-4xl` |
|
|
57
|
+
|
|
58
|
+
### Components
|
|
59
|
+
|
|
60
|
+
| Slop | Why It's Bad | Fix |
|
|
61
|
+
|------|-------------|-----|
|
|
62
|
+
| Gradient CTA button | Looks like every other AI site | Solid `bg-white text-black` |
|
|
63
|
+
| `border-cyan-400/30` | Colored borders look synthetic | `border-white/10` |
|
|
64
|
+
| `bg-gradient-to-r from-cyan-400/20` | Gradient buttons are distracting | Solid backgrounds |
|
|
65
|
+
| Lucide icons everywhere | Adds dependency, looks generic | Text or simple SVG |
|
|
66
|
+
| Star ratings in testimonials | Fake social proof | Remove unless real data |
|
|
67
|
+
| Carousel testimonials | Hard to browse | Grid layout |
|
|
68
|
+
|
|
69
|
+
---
|
|
70
|
+
|
|
71
|
+
## Detection Script
|
|
72
|
+
|
|
73
|
+
Before shipping, check for these patterns:
|
|
74
|
+
|
|
75
|
+
```bash
|
|
76
|
+
# Check for AI slop patterns
|
|
77
|
+
grep -r "#0a0a1a\|#0d1117\|#0f172a" src/
|
|
78
|
+
grep -r "backdrop-blur" src/
|
|
79
|
+
grep -r "from-purple\|to-blue\|from-cyan" src/
|
|
80
|
+
grep -r "shadow-cyan\|shadow-purple" src/
|
|
81
|
+
grep -r "initial={{" src/
|
|
82
|
+
grep -r "whileInView" src/
|
|
83
|
+
grep -r "staggerChildren" src/
|
|
84
|
+
grep -r "text-center" src/
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
---
|
|
88
|
+
|
|
89
|
+
## Why This Matters
|
|
90
|
+
|
|
91
|
+
AI slop is:
|
|
92
|
+
- **Boring** — Every website looks the same
|
|
93
|
+
- **Slow** — Gradients, blur, and animations hurt performance
|
|
94
|
+
- **Hard to read** — Low contrast, gradient text, centered layouts
|
|
95
|
+
- **Unprofessional** — Looks like a template, not a product
|
|
96
|
+
- **Forgettable** — Nothing distinctive, nothing memorable
|
|
97
|
+
|
|
98
|
+
Vercel quality is:
|
|
99
|
+
- **Fast** — No unnecessary effects
|
|
100
|
+
- **Readable** — Clear typography hierarchy
|
|
101
|
+
- **Professional** — Clean, minimal, intentional
|
|
102
|
+
- **Memorable** — Distinctive through restraint
|
|
103
|
+
- **Accessible** — Works for everyone
|
|
@@ -0,0 +1,228 @@
|
|
|
1
|
+
# Design Tokens
|
|
2
|
+
|
|
3
|
+
## Colors
|
|
4
|
+
|
|
5
|
+
### Backgrounds
|
|
6
|
+
|
|
7
|
+
| Token | Hex | Tailwind | Use |
|
|
8
|
+
|-------|-----|----------|-----|
|
|
9
|
+
| `--bg` | `#000` | `bg-black` | Page background |
|
|
10
|
+
| `--bg-subtle` | `#0a0a0a` | `bg-neutral-950` | Subtle section backgrounds |
|
|
11
|
+
| `--surface` | `#111` | `bg-neutral-900` | Card backgrounds |
|
|
12
|
+
| `--surface-hover` | `#1a1a1a` | `bg-neutral-800` | Card hover states |
|
|
13
|
+
|
|
14
|
+
### Borders
|
|
15
|
+
|
|
16
|
+
| Token | Hex | Tailwind | Use |
|
|
17
|
+
|-------|-----|----------|-----|
|
|
18
|
+
| `--border` | `#222` | `border-neutral-800` | Default borders |
|
|
19
|
+
| `--border-subtle` | `rgba(255,255,255,0.05)` | `border-white/5` | Subtle separators |
|
|
20
|
+
| `--border-strong` | `rgba(255,255,255,0.1)` | `border-white/10` | Stronger borders |
|
|
21
|
+
|
|
22
|
+
### Text
|
|
23
|
+
|
|
24
|
+
| Token | Hex | Tailwind | Use |
|
|
25
|
+
|-------|-----|----------|-----|
|
|
26
|
+
| `--text` | `#fff` | `text-white` | Primary text |
|
|
27
|
+
| `--text-secondary` | `#888` | `text-neutral-400` | Secondary text |
|
|
28
|
+
| `--text-muted` | `#555` | `text-neutral-500` | Muted text |
|
|
29
|
+
| `--text-inverse` | `#000` | `text-black` | Text on light backgrounds |
|
|
30
|
+
|
|
31
|
+
### Interactive
|
|
32
|
+
|
|
33
|
+
| Token | Hex | Tailwind | Use |
|
|
34
|
+
|-------|-----|----------|-----|
|
|
35
|
+
| `--accent` | `#3b82f6` | `text-blue-500` | Links, interactive elements |
|
|
36
|
+
| `--accent-hover` | `#2563eb` | `text-blue-600` | Link hover states |
|
|
37
|
+
| `--focus-ring` | `rgba(59,130,246,0.5)` | `ring-blue-500/50` | Focus states |
|
|
38
|
+
|
|
39
|
+
---
|
|
40
|
+
|
|
41
|
+
## Typography
|
|
42
|
+
|
|
43
|
+
### Font Stack
|
|
44
|
+
|
|
45
|
+
```css
|
|
46
|
+
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif;
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
Or with Inter:
|
|
50
|
+
|
|
51
|
+
```css
|
|
52
|
+
font-family: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
### Type Scale
|
|
56
|
+
|
|
57
|
+
| Level | Size | Weight | Line Height | Letter Spacing | Tailwind |
|
|
58
|
+
|-------|------|--------|-------------|----------------|----------|
|
|
59
|
+
| Display | 48px | 700 | 1.1 | -0.02em | `text-5xl font-bold tracking-tight leading-tight` |
|
|
60
|
+
| H1 | 36px | 700 | 1.2 | -0.01em | `text-4xl font-bold tracking-tight` |
|
|
61
|
+
| H2 | 28px | 600 | 1.3 | 0 | `text-2xl font-semibold` |
|
|
62
|
+
| H3 | 20px | 600 | 1.4 | 0 | `text-xl font-semibold` |
|
|
63
|
+
| Body | 16px | 400 | 1.6 | 0 | `text-base` |
|
|
64
|
+
| Body Large | 18px | 400 | 1.6 | 0 | `text-lg` |
|
|
65
|
+
| Small | 14px | 400 | 1.5 | 0 | `text-sm` |
|
|
66
|
+
| Caption | 12px | 400 | 1.5 | 0 | `text-xs` |
|
|
67
|
+
|
|
68
|
+
### Line Length
|
|
69
|
+
|
|
70
|
+
- Body text: `max-w-2xl` (672px) — optimal reading line length
|
|
71
|
+
- Headings: `max-w-3xl` or `max-w-4xl`
|
|
72
|
+
- Never exceed `max-w-5xl` for text content
|
|
73
|
+
|
|
74
|
+
---
|
|
75
|
+
|
|
76
|
+
## Spacing
|
|
77
|
+
|
|
78
|
+
### 8px Grid
|
|
79
|
+
|
|
80
|
+
All spacing should be multiples of 8px (or 4px for tight spacing).
|
|
81
|
+
|
|
82
|
+
| Token | Value | Tailwind |
|
|
83
|
+
|-------|-------|----------|
|
|
84
|
+
| `--space-0` | 0 | `p-0` / `m-0` |
|
|
85
|
+
| `--space-1` | 4px | `p-1` / `m-1` |
|
|
86
|
+
| `--space-2` | 8px | `p-2` / `m-2` |
|
|
87
|
+
| `--space-3` | 12px | `p-3` / `m-3` |
|
|
88
|
+
| `--space-4` | 16px | `p-4` / `m-4` |
|
|
89
|
+
| `--space-5` | 20px | `p-5` / `m-5` |
|
|
90
|
+
| `--space-6` | 24px | `p-6` / `m-6` |
|
|
91
|
+
| `--space-8` | 32px | `p-8` / `m-8` |
|
|
92
|
+
| `--space-10` | 40px | `p-10` / `m-10` |
|
|
93
|
+
| `--space-12` | 48px | `p-12` / `m-12` |
|
|
94
|
+
| `--space-16` | 64px | `p-16` / `m-16` |
|
|
95
|
+
| `--space-20` | 80px | `p-20` / `m-20` |
|
|
96
|
+
| `--space-24` | 96px | `p-24` / `m-24` |
|
|
97
|
+
| `--space-32` | 128px | `p-32` / `m-32` |
|
|
98
|
+
|
|
99
|
+
### Section Spacing
|
|
100
|
+
|
|
101
|
+
| Context | Spacing | Tailwind |
|
|
102
|
+
|---------|---------|----------|
|
|
103
|
+
| Between sections | 96px | `py-24` |
|
|
104
|
+
| Section to content | 48px | `mb-12` |
|
|
105
|
+
| Between elements | 24px | `gap-6` or `mb-6` |
|
|
106
|
+
| Between tight elements | 16px | `gap-4` or `mb-4` |
|
|
107
|
+
| Inside cards | 24px | `p-6` |
|
|
108
|
+
|
|
109
|
+
---
|
|
110
|
+
|
|
111
|
+
## Borders
|
|
112
|
+
|
|
113
|
+
### Border Radius
|
|
114
|
+
|
|
115
|
+
| Token | Value | Tailwind | Use |
|
|
116
|
+
|-------|-------|----------|-----|
|
|
117
|
+
| `--radius-sm` | 6px | `rounded-md` | Buttons, inputs |
|
|
118
|
+
| `--radius-md` | 8px | `rounded-lg` | Cards, small containers |
|
|
119
|
+
| `--radius-lg` | 12px | `rounded-xl` | Large cards, modals |
|
|
120
|
+
| `--radius-full` | 9999px | `rounded-full` | Avatars, pills |
|
|
121
|
+
|
|
122
|
+
### Border Width
|
|
123
|
+
|
|
124
|
+
| Token | Value | Tailwind | Use |
|
|
125
|
+
|-------|-------|----------|-----|
|
|
126
|
+
| Default | 1px | `border` | Standard borders |
|
|
127
|
+
| Strong | 2px | `border-2` | Emphasis borders |
|
|
128
|
+
|
|
129
|
+
---
|
|
130
|
+
|
|
131
|
+
## Shadows
|
|
132
|
+
|
|
133
|
+
| Token | Value | Tailwind | Use |
|
|
134
|
+
|-------|-------|----------|-----|
|
|
135
|
+
| None | `none` | `shadow-none` | Default |
|
|
136
|
+
| Small | `0 1px 2px rgba(0,0,0,0.5)` | `shadow-sm` | Subtle elevation |
|
|
137
|
+
| Default | `0 4px 6px rgba(0,0,0,0.5)` | `shadow` | Cards |
|
|
138
|
+
| Large | `0 10px 15px rgba(0,0,0,0.5)` | `shadow-lg` | Modals, dropdowns |
|
|
139
|
+
|
|
140
|
+
**Never use colored shadows.** No `shadow-cyan`, no `shadow-purple`.
|
|
141
|
+
|
|
142
|
+
---
|
|
143
|
+
|
|
144
|
+
## Transitions
|
|
145
|
+
|
|
146
|
+
| Token | Duration | Easing | Tailwind |
|
|
147
|
+
|-------|----------|--------|----------|
|
|
148
|
+
| Micro | 150ms | ease | `transition duration-150` |
|
|
149
|
+
| Default | 200ms | ease | `transition` |
|
|
150
|
+
| Slow | 300ms | ease-out | `transition duration-300` |
|
|
151
|
+
|
|
152
|
+
### Transition Properties
|
|
153
|
+
|
|
154
|
+
| Element | Property | Tailwind |
|
|
155
|
+
|---------|----------|----------|
|
|
156
|
+
| Background | `background-color` | `transition-colors` |
|
|
157
|
+
| Text color | `color` | `transition-colors` |
|
|
158
|
+
| Border | `border-color` | `transition-colors` |
|
|
159
|
+
| Opacity | `opacity` | `transition-opacity` |
|
|
160
|
+
| Transform | `transform` | `transition-transform` |
|
|
161
|
+
| Shadow | `box-shadow` | `transition-shadow` |
|
|
162
|
+
|
|
163
|
+
---
|
|
164
|
+
|
|
165
|
+
## Breakpoints
|
|
166
|
+
|
|
167
|
+
| Name | Width | Tailwind |
|
|
168
|
+
|------|-------|----------|
|
|
169
|
+
| sm | 640px | `sm:` |
|
|
170
|
+
| md | 768px | `md:` |
|
|
171
|
+
| lg | 1024px | `lg:` |
|
|
172
|
+
| xl | 1280px | `xl:` |
|
|
173
|
+
| 2xl | 1536px | `2xl:` |
|
|
174
|
+
|
|
175
|
+
---
|
|
176
|
+
|
|
177
|
+
## Z-Index
|
|
178
|
+
|
|
179
|
+
| Token | Value | Tailwind | Use |
|
|
180
|
+
|-------|-------|----------|-----|
|
|
181
|
+
| Behind | -1 | `-z-10` | Background elements |
|
|
182
|
+
| Default | 0 | `z-0` | Normal flow |
|
|
183
|
+
| Above | 10 | `z-10` | Sticky elements |
|
|
184
|
+
| Dropdown | 20 | `z-20` | Dropdowns, popovers |
|
|
185
|
+
| Modal | 30 | `z-30` | Modals, overlays |
|
|
186
|
+
| Toast | 40 | `z-40` | Toast notifications |
|
|
187
|
+
| Skip link | 50 | `z-50` | Skip to content |
|
|
188
|
+
|
|
189
|
+
---
|
|
190
|
+
|
|
191
|
+
## Container Widths
|
|
192
|
+
|
|
193
|
+
| Name | Max Width | Tailwind | Use |
|
|
194
|
+
|------|-----------|----------|-----|
|
|
195
|
+
| Narrow | 640px | `max-w-xl` | Articles, forms |
|
|
196
|
+
| Default | 768px | `max-w-2xl` | Blog posts |
|
|
197
|
+
| Wide | 1024px | `max-w-4xl` | Content pages |
|
|
198
|
+
| Extra Wide | 1280px | `max-w-6xl` | Landing pages, dashboards |
|
|
199
|
+
| Full | 1536px | `max-w-7xl` | Full-width layouts |
|
|
200
|
+
|
|
201
|
+
---
|
|
202
|
+
|
|
203
|
+
## Example: Complete Tailwind Config
|
|
204
|
+
|
|
205
|
+
```js
|
|
206
|
+
// tailwind.config.js
|
|
207
|
+
module.exports = {
|
|
208
|
+
theme: {
|
|
209
|
+
extend: {
|
|
210
|
+
colors: {
|
|
211
|
+
bg: '#000',
|
|
212
|
+
surface: '#111',
|
|
213
|
+
border: '#222',
|
|
214
|
+
muted: '#555',
|
|
215
|
+
},
|
|
216
|
+
maxWidth: {
|
|
217
|
+
'content': '672px',
|
|
218
|
+
'prose': '768px',
|
|
219
|
+
},
|
|
220
|
+
spacing: {
|
|
221
|
+
'18': '4.5rem',
|
|
222
|
+
'88': '22rem',
|
|
223
|
+
'128': '32rem',
|
|
224
|
+
},
|
|
225
|
+
},
|
|
226
|
+
},
|
|
227
|
+
};
|
|
228
|
+
```
|
package/index.js
DELETED
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* oxycode-skills
|
|
3
|
-
*
|
|
4
|
-
* Vercel-quality UI skills for AI coding agents.
|
|
5
|
-
* No more AI slop.
|
|
6
|
-
*
|
|
7
|
-
* @package oxycode-skills
|
|
8
|
-
* @author oxycode-ai
|
|
9
|
-
* @license MIT
|
|
10
|
-
*/
|
|
11
|
-
|
|
12
|
-
const skills = {
|
|
13
|
-
'ui-builder': require('./skills/ui-builder/SKILL.md'),
|
|
14
|
-
'design-md': require('./skills/design-md/SKILL.md'),
|
|
15
|
-
};
|
|
16
|
-
|
|
17
|
-
module.exports = skills;
|