chill-agent 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/README.md +50 -41
- package/package.json +1 -1
- package/skills/chill-slop/SKILL.md +65 -54
- package/skills/chill-slop-code/SKILL.md +31 -23
- package/skills/chill-slop-copywriting/SKILL.md +17 -18
- package/skills/chill-slop-human/SKILL.md +7 -4
- package/skills/chill-slop-mobile/SKILL.md +7 -5
- package/skills/chill-slop-ui/SKILL.md +28 -22
- package/src/auditor.js +28 -11
- package/src/installer.js +13 -10
- package/src/prompts.js +1 -1
package/README.md
CHANGED
|
@@ -1,25 +1,29 @@
|
|
|
1
1
|
# ChillAgent (`chill-agent`)
|
|
2
2
|
|
|
3
|
-
> **The Zero-Bloat Anti-Slop 2.0 Engine &
|
|
4
|
-
>
|
|
3
|
+
> **The Zero-Bloat Anti-Slop 2.0 Engine & Pragmatic Senior Developer Standard.**
|
|
4
|
+
> Synthesizing the visual craftsmanship of **[anti-slop](https://github.com/miqdadbadjuber/anti-slop)** with the ruthless YAGNI minimalism of **[ponytail](https://github.com/dietrichgebert/ponytail)**.
|
|
5
5
|
|
|
6
|
+
[](https://www.npmjs.com/package/chill-agent)
|
|
6
7
|
[](https://opensource.org/licenses/MIT)
|
|
8
|
+
[](package.json)
|
|
7
9
|
[](https://nodejs.org)
|
|
8
|
-
[](package.json)
|
|
9
10
|
|
|
10
11
|
---
|
|
11
12
|
|
|
12
|
-
## ⚡
|
|
13
|
+
## ⚡ Quickstart
|
|
13
14
|
|
|
14
|
-
Run directly via `npx`:
|
|
15
|
+
Run directly without installing via `npx`:
|
|
15
16
|
|
|
16
17
|
```bash
|
|
17
|
-
# Launch interactive agent setup wizard
|
|
18
|
+
# Launch interactive agent setup wizard (Antigravity, Claude, Cursor, Codex, Windsurf)
|
|
18
19
|
npx chill-agent
|
|
19
20
|
|
|
20
|
-
# Scan
|
|
21
|
+
# Scan workspace for AI slop cliches & over-engineering bloat
|
|
21
22
|
npx chill-agent audit
|
|
22
23
|
|
|
24
|
+
# Automatically remediate slop (strip emojis, clean redundant comments, fix radius)
|
|
25
|
+
npx chill-agent audit --fix
|
|
26
|
+
|
|
23
27
|
# Generate a master high-craft DESIGN.md specification
|
|
24
28
|
npx chill-agent init-design
|
|
25
29
|
|
|
@@ -32,38 +36,57 @@ npx chill-agent rewind ui
|
|
|
32
36
|
|
|
33
37
|
---
|
|
34
38
|
|
|
35
|
-
##
|
|
39
|
+
## 💎 The Synthesis: Anti-Slop + Ponytail (Made Better)
|
|
40
|
+
|
|
41
|
+
ChillAgent is **not** just a list of bans, nor is it just "write less code". It fuses two core engineering philosophies:
|
|
42
|
+
|
|
43
|
+
```
|
|
44
|
+
┌──────────────────────────────────────────────────┐
|
|
45
|
+
│ CHILLAGENT │
|
|
46
|
+
├─────────────────────────┬────────────────────────┤
|
|
47
|
+
│ ANTI-SLOP (Visuals) │ PONYTAIL (Logic) │
|
|
48
|
+
├─────────────────────────┼────────────────────────┤
|
|
49
|
+
│ • No generic gradients │ • Smallest diff wins │
|
|
50
|
+
│ • No pill bubble cards │ • Native platform 1st │
|
|
51
|
+
│ • Purpose Test verified │ • Zero factory bloat │
|
|
52
|
+
│ • Tabular numbers font │ • 1-line why comments │
|
|
53
|
+
│ • Real copy & metrics │ • Delivery disclosure │
|
|
54
|
+
└─────────────────────────┴────────────────────────┘
|
|
55
|
+
```
|
|
36
56
|
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
| **Stuck Loop Protection** | ❌ None | **3x consecutive tool-call circuit breaker** |
|
|
46
|
-
| **Agent Environment Reach** | 7 agents | **Auto-detects Antigravity, Claude, Cursor, Windsurf, Codex, Copilot** |
|
|
57
|
+
### The 6-Step Minimalist Execution Ladder
|
|
58
|
+
Take the **first option** that solves the whole task:
|
|
59
|
+
1. **Does it need to exist?** Skip features and configurability nobody asked for.
|
|
60
|
+
2. **Already in this codebase?** Reuse existing helpers, patterns, and house components.
|
|
61
|
+
3. **Standard library or native web API?** Reach for `node:*`, `fetch`, CSS Grid, native `<dialog>`.
|
|
62
|
+
4. **Already-installed dependency?** Use what exists in `package.json`. Never install a package for 10 lines of code.
|
|
63
|
+
5. **Can it be a single readable line?** Write the single line.
|
|
64
|
+
6. **Otherwise:** The minimum code that works reliably.
|
|
47
65
|
|
|
48
66
|
---
|
|
49
67
|
|
|
50
|
-
##
|
|
68
|
+
## 🎯 Intensity Modes (`/chill [lite|full|ultra]`)
|
|
51
69
|
|
|
52
|
-
|
|
70
|
+
- **`lite`**: Prototyping mode. Strips obvious slop gradients while allowing exploratory code.
|
|
71
|
+
- **`full`** *(Default)*: Everyday production engineering. Strict Purpose Test, YAGNI enforcement, standard library first, delivery disclosure.
|
|
72
|
+
- **`ultra`**: High-performance refactoring. Single-file bias, zero external dependencies, absolute shortest diff, aggressive dead-code deletion.
|
|
53
73
|
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
74
|
+
---
|
|
75
|
+
|
|
76
|
+
## 🧩 6 Modular Skills (in `./skills/`)
|
|
77
|
+
|
|
78
|
+
1. **`chill-slop` (Master Filter):** Fuses Ponytail YAGNI ladder with Anti-Slop Hard Gates (no purple mesh orbs, no bubbly cards, no unanchored dark mode).
|
|
79
|
+
2. **`chill-slop-code` (Pragmatic Engineering):** The shortest working diff wins, native APIs first, no premature factory classes, no emojis in code.
|
|
80
|
+
3. **`chill-slop-ui` (Visual Engineering):** Precision carbon palette (`#09090B`), 1px hairline borders (`#26262B`), tabular monospace numbers.
|
|
81
|
+
4. **`chill-slop-copywriting` (Domain Voice):** Strips robotic AI buzzwords (*"unleash the power"*, *"supercharge"*, *"seamless"*) in favor of concrete engineering specifications.
|
|
58
82
|
5. **`chill-slop-human` (Ergonomics & A11y):** Enforces 4.5:1 contrast, visible focus rings, 44px touch targets, and accessible ARIA affordances.
|
|
59
83
|
6. **`chill-slop-mobile` (Responsive Systems):** Fluid CSS `clamp()` typography, zero horizontal blowout, and comfortable thumb-reach zone actions.
|
|
60
84
|
|
|
61
85
|
---
|
|
62
86
|
|
|
63
|
-
## 🎨 5 High-Craft Design System Presets
|
|
64
|
-
|
|
65
|
-
Prevent your coding agent from falling into the "sterile blank white" trap with `npx chill-agent init-design`:
|
|
87
|
+
## 🎨 5 High-Craft Design System Presets (`npx chill-agent init-design`)
|
|
66
88
|
|
|
89
|
+
Prevent your coding agent from falling into the "sterile blank white" trap:
|
|
67
90
|
- **Linear Carbon Geist:** Deep obsidian canvas, 1px `#26262B` borders, JetBrains Mono, emerald state indicators.
|
|
68
91
|
- **Swiss Neo-Brutal:** High contrast black/white ink, strict 0px border radius, heavy grotesque typography.
|
|
69
92
|
- **Industrial Technical Dossier:** Blueprint data-first layout, slate/steel surfaces, dense telemetry views.
|
|
@@ -72,20 +95,6 @@ Prevent your coding agent from falling into the "sterile blank white" trap with
|
|
|
72
95
|
|
|
73
96
|
---
|
|
74
97
|
|
|
75
|
-
## 📦 How to Publish to NPM
|
|
76
|
-
|
|
77
|
-
To make `npx chill-agent` available globally to all developers:
|
|
78
|
-
|
|
79
|
-
```bash
|
|
80
|
-
# 1. Login to your NPM registry account
|
|
81
|
-
npm login
|
|
82
|
-
|
|
83
|
-
# 2. Publish package
|
|
84
|
-
npm publish --access public
|
|
85
|
-
```
|
|
86
|
-
|
|
87
|
-
---
|
|
88
|
-
|
|
89
98
|
## 📄 License
|
|
90
99
|
|
|
91
100
|
MIT © [sann](https://github.com/sann)
|
package/package.json
CHANGED
|
@@ -1,85 +1,96 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: chill-slop
|
|
3
|
-
description: "Master Anti-Slop
|
|
3
|
+
description: "Master Anti-Slop & Pragmatic Senior Dev Standard. Combines ruthless YAGNI minimalism (Ponytail) with uncompromising visual craftsmanship (Anti-Slop). Stops AI agents from generating bloated, generic, purple-glowing slop."
|
|
4
|
+
argument-hint: "[lite|full|ultra|off]"
|
|
5
|
+
license: MIT
|
|
4
6
|
---
|
|
5
7
|
|
|
6
|
-
# ChillSlop 2.0: Master Negative Filter &
|
|
8
|
+
# ChillSlop 2.0: Master Negative Filter & Pragmatic Senior Dev Core
|
|
7
9
|
|
|
8
|
-
> **
|
|
9
|
-
>
|
|
10
|
+
> **The Creed:** *"The best code is the code you never wrote. The best design is the interface that gets out of the user's way."*
|
|
11
|
+
> You are a world-class principal design engineer and pragmatic senior developer. You solve the whole problem with the least code and the highest craft.
|
|
10
12
|
|
|
11
13
|
---
|
|
12
14
|
|
|
13
|
-
## 1. The
|
|
15
|
+
## 1. The Dual Engine: Anti-Slop + Ponytail Synthesis
|
|
14
16
|
|
|
15
|
-
|
|
17
|
+
Every output must pass both filters simultaneously:
|
|
16
18
|
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
19
|
+
```
|
|
20
|
+
┌─────────────────────────────────┐ ┌─────────────────────────────────┐
|
|
21
|
+
│ ANTI-SLOP (Craftsmanship) │ + │ PONYTAIL (Minimalism) │
|
|
22
|
+
│ • No AI default cliches │ │ • Smallest complete change │
|
|
23
|
+
│ • Purpose-tested visuals │ │ • Standard library & native API │
|
|
24
|
+
│ • High-contrast domain identity │ │ • Zero premature abstraction │
|
|
25
|
+
│ • Real copy & verified metrics │ │ • Shortest readable diff wins │
|
|
26
|
+
└─────────────────────────────────┘ └─────────────────────────────────┘
|
|
27
|
+
```
|
|
24
28
|
|
|
25
29
|
---
|
|
26
30
|
|
|
27
|
-
## 2.
|
|
31
|
+
## 2. Intensity Modes
|
|
28
32
|
|
|
29
|
-
|
|
33
|
+
Control the minimalism & rigor level with `/chill [lite|full|ultra]`:
|
|
30
34
|
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
- **HG-06 (Hallucinated Social Proof):** Never generate fake quotes with stock avatar headshots, fake Forbes/TechCrunch badges, or bogus metrics (*"99.9% customer happiness"*).
|
|
37
|
-
- **HG-07 (Unanchored Dark Mode):** Never force dark mode solely because *"it looks hacker/tech"* without evaluating domain context (e.g. medical, legal, or editorial platforms often demand crisp high-contrast light backgrounds).
|
|
38
|
-
- **HG-08 (Cookie-Cutter Landing Template):** Hero → 3-column identical feature cards with icons in colored circles → Bento Grid → Testimonials → Pricing table → Accordion FAQ → Mega Footer. Break the template based on real product need.
|
|
35
|
+
| Level | When to Use | Behavior |
|
|
36
|
+
| :--- | :--- | :--- |
|
|
37
|
+
| **`lite`** | Prototyping & exploratory work | Filters obvious visual slop and bloated dependencies; allows exploratory boilerplate if requested. |
|
|
38
|
+
| **`full`** *(Default)* | Everyday production engineering | Strict Purpose Test, YAGNI enforcement, standard library first, max 10-line helpers, delivery disclosure. |
|
|
39
|
+
| **`ultra`** | High-performance & refactoring | Single-file bias, zero external dependencies, absolute shortest diff, aggressive dead-code deletion. |
|
|
39
40
|
|
|
40
41
|
---
|
|
41
42
|
|
|
42
|
-
## 3.
|
|
43
|
-
|
|
44
|
-
Filtering slop does not mean defaulting to an empty, sterile white box. You must inject deliberate **domain character**:
|
|
43
|
+
## 3. The 6-Step Minimalist Execution Ladder
|
|
45
44
|
|
|
46
|
-
|
|
47
|
-
- Pair a high-character display font with a workhorse sans or precision monospace.
|
|
48
|
-
- Set strict tabular numerals (`font-variant-numeric: tabular-nums` or `JetBrains Mono` / `ui-monospace`) for all metrics, latencies, prices, and counters.
|
|
49
|
-
- Use font weight and letter spacing (`letter-spacing: -0.02em` for dense display headers, `+0.04em` for uppercase micro-labels) instead of arbitrary font sizes.
|
|
45
|
+
Take the **first option** that completely solves the problem:
|
|
50
46
|
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
-
|
|
47
|
+
1. **Does it need to exist?** Skip features, toggles, and configurability nobody asked for. A vague request gets the cleanest core implementation.
|
|
48
|
+
2. **Already in this codebase?** Reuse existing helpers, patterns, and component conventions. Never reinvent a utility already present.
|
|
49
|
+
3. **Standard library or native web API?** Reach for `node:*`, `fetch`, CSS Grid, native dialogs, or standard math before installing an npm module or writing custom wrappers.
|
|
50
|
+
4. **Already-installed dependency?** Use what exists in `package.json`. Never add a new dependency for 10 lines of utility logic.
|
|
51
|
+
5. **Can it be a single readable line?** Write the single line.
|
|
52
|
+
6. **Otherwise:** The absolute minimum code that works reliably.
|
|
55
53
|
|
|
56
|
-
|
|
57
|
-
- Limit bright accents to **one single semantic role** per screen (e.g. Emerald for active connection/replay, Coral for destructive actions, Indigo for branched states).
|
|
58
|
-
- Never paint borders, badges, cards, links, headings, and buttons with the same loud primary color.
|
|
54
|
+
> **Be lazy about the solution, never about the change itself:** Finish every caller, test, fixture, and edge case your change touches. Deletion beats addition.
|
|
59
55
|
|
|
60
56
|
---
|
|
61
57
|
|
|
62
|
-
## 4.
|
|
58
|
+
## 4. Tier 0: Hard Gates (Non-Negotiable Banned Slop)
|
|
63
59
|
|
|
64
|
-
|
|
60
|
+
Instant disqualification if detected in output:
|
|
65
61
|
|
|
66
|
-
###
|
|
67
|
-
-
|
|
68
|
-
-
|
|
69
|
-
-
|
|
62
|
+
### Visual & Architectural Slop
|
|
63
|
+
- **HG-01 (Generic Gradient Orbs):** No saturated purple-to-blue, purple-to-cyan, or glowing radial mesh backgrounds.
|
|
64
|
+
- **HG-02 (Pill Button & Bubble Card Epidemic):** No universal `rounded-3xl` / `rounded-full` cards drowning in heavy 25px drop shadows.
|
|
65
|
+
- **HG-03 (Glassmorphism Overdose):** No stacking `backdrop-blur` on navbars, cards, sidebars, and modals at the same time.
|
|
66
|
+
- **HG-04 (Skeleton Wireframe Previews):** Never put grey placeholder rectangles inside hero mockups as "product screenshots".
|
|
67
|
+
- **HG-05 (Over-Abstraction Bloat):** Never create an AbstractFactory, RepositoryProvider, or 5-layer wrapper around a simple 20-line database or API call.
|
|
68
|
+
- **HG-06 (Unrequested Toggles):** Never add configuration flags, theme pickers, or environment toggles unless explicitly requested.
|
|
70
69
|
|
|
71
|
-
###
|
|
72
|
-
-
|
|
73
|
-
-
|
|
74
|
-
-
|
|
70
|
+
### Copy & Commentary Slop
|
|
71
|
+
- **HG-07 (Emoji Clutter):** No emojis in code comments (`// 🚀 Launch rockets`) and no sparkles (`✨`) in marketing copy.
|
|
72
|
+
- **HG-08 (Robotic AI Buzzwords):** Strip *"unleash the power"*, *"seamlessly integrate"*, *"supercharge your workflow"*, *"next-generation"*, and *"game-changer"*.
|
|
73
|
+
- **HG-09 (Fake Social Proof):** No synthetic testimonials, fake user headshots, or unverified statistics (*"99.9% customer happiness"*).
|
|
75
74
|
|
|
76
75
|
---
|
|
77
76
|
|
|
78
|
-
## 5. The
|
|
77
|
+
## 5. The Liveliness & Craftsmanship Standard
|
|
78
|
+
|
|
79
|
+
Removing slop does not mean building an empty, sterile gray box. Inject **domain-specific liveliness**:
|
|
79
80
|
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
81
|
+
- **Typography as Architecture:** High-contrast pairing (grotesque or serif display header + precision monospace for data and numbers).
|
|
82
|
+
- **Hairline Precision:** Build depth using distinct background shades (`#09090B` canvas → `#111114` panel → `#18181C` interactive) and 1px borders (`#26262B`), not muddy box shadows.
|
|
83
|
+
- **Monochrome Foundation:** 90% of the screen is stark carbon or crisp light; color is reserved strictly for semantic state (Emerald for success/replay, Amber for warning/pruned, Rose for error/loop-break).
|
|
84
|
+
- **Tabular Monospace Discipline:** Timestamps, IDs, latency, financial values, and counters must use `ui-monospace` or `font-variant-numeric: tabular-nums`.
|
|
85
|
+
|
|
86
|
+
---
|
|
87
|
+
|
|
88
|
+
## 6. The Mandatory Delivery Disclosure
|
|
89
|
+
|
|
90
|
+
At the end of **every** code delivery or refactor, provide a concise 1-2 line disclosure:
|
|
91
|
+
|
|
92
|
+
```markdown
|
|
93
|
+
---
|
|
94
|
+
**Skipped:** [What features, boilerplate, or abstractions you deliberately omitted]
|
|
95
|
+
**Risk / Limits:** [Known trade-offs, edge-case limitations, or when the user should upgrade]
|
|
96
|
+
```
|
|
@@ -1,37 +1,45 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: chill-slop-code
|
|
3
|
-
description: "Code
|
|
3
|
+
description: "Pragmatic Senior Dev Code Standard. Eliminates over-engineering, premature abstractions, useless boilerplate, redundant AI comments, and emoji docstrings. Favors standard libraries and the shortest working diff."
|
|
4
|
+
license: MIT
|
|
4
5
|
---
|
|
5
6
|
|
|
6
|
-
# ChillSlop Code:
|
|
7
|
+
# ChillSlop Code: Pragmatic Senior Engineering
|
|
7
8
|
|
|
8
|
-
|
|
9
|
+
> *"Any fool can write code that a computer can understand. Good programmers write code that humans can understand with the least reading."*
|
|
9
10
|
|
|
10
|
-
## 1.
|
|
11
|
-
- **
|
|
12
|
-
|
|
11
|
+
## 1. The Shortest Working Diff Wins
|
|
12
|
+
- **Deletion Beats Addition:** Every line of code added is a liability. If you can solve an issue by deleting dead code or consolidating logic, delete it.
|
|
13
|
+
- **No Speculative Abstraction:** Never build generic interfaces, custom event buses, factory patterns, or wrapper types for code that is only called in one place.
|
|
14
|
+
- **Native Platform First:**
|
|
15
|
+
- Node.js: Prefer `node:sqlite`, `node:http`, `node:crypto`, `node:util` `parseArgs` over adding heavy external packages.
|
|
16
|
+
- Browser: Prefer native CSS Grid, flexbox, `<dialog>`, `URLSearchParams`, and `fetch` over external utility libraries.
|
|
17
|
+
- **Single-File Bias:** Unless an architectural boundary is strictly required, keep closely coupled logic in the same module rather than fragmenting across 8 micro-files.
|
|
18
|
+
|
|
19
|
+
## 2. Bug Fix Protocol
|
|
20
|
+
- **Trace the Roots:** Before modifying a function, grep every single caller in the workspace. Fix the root cause once at the source rather than patching each call site.
|
|
21
|
+
- **Preserve Safety:** Code that is moved or consolidated must retain its error boundaries, type validations, and security checks.
|
|
22
|
+
|
|
23
|
+
## 3. Strict Commenting Rules
|
|
24
|
+
- **Document the "WHY", never the "WHAT":**
|
|
25
|
+
- *Banned Slop:*
|
|
13
26
|
```typescript
|
|
14
|
-
//
|
|
15
|
-
|
|
16
|
-
// Return the sum of a and b
|
|
17
|
-
return a + b;
|
|
18
|
-
}
|
|
27
|
+
// Iterate through items and filter active ones
|
|
28
|
+
const active = items.filter(x => x.active);
|
|
19
29
|
```
|
|
20
30
|
- *Clean:*
|
|
21
31
|
```typescript
|
|
22
|
-
|
|
23
|
-
return a + b;
|
|
24
|
-
}
|
|
32
|
+
const active = items.filter(x => x.active);
|
|
25
33
|
```
|
|
26
|
-
-
|
|
27
|
-
- Comments must explain non-obvious constraints, external quirks, memory layout assumptions, or algorithmic edge cases.
|
|
28
|
-
- *Example:*
|
|
34
|
+
- *Valuable:*
|
|
29
35
|
```typescript
|
|
30
|
-
//
|
|
31
|
-
db.exec(`PRAGMA
|
|
36
|
+
// PRAGMA synchronous = NORMAL is safe with WAL mode and prevents 40ms disk sync stalls
|
|
37
|
+
db.exec(`PRAGMA synchronous = NORMAL;`);
|
|
32
38
|
```
|
|
33
|
-
- **Zero Emojis in Code:** Never
|
|
39
|
+
- **Zero Emojis in Source Code:** Never put emojis in comments, docstrings, console logs, or git commits.
|
|
40
|
+
- **Explicit Shortcuts:** If you take a pragmatic shortcut, mark it explicitly:
|
|
41
|
+
`// shortcut: <known limit>, <when to upgrade>`
|
|
34
42
|
|
|
35
|
-
##
|
|
36
|
-
-
|
|
37
|
-
-
|
|
43
|
+
## 4. Lazy Self-Checks
|
|
44
|
+
- Non-trivial logic (parsers, state machines, financial math, security checks) must include at least one compact assert or unit test.
|
|
45
|
+
- Trivial one-liners require no test boilerplate.
|
|
@@ -1,33 +1,32 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: chill-slop-copywriting
|
|
3
|
-
description: "
|
|
3
|
+
description: "Authentic Domain Voice & Minimalist Copywriting Standard. Strips robotic AI marketing fluff, hype words, and hallucinated metrics in favor of sharp, technical prose a busy human understands in one read."
|
|
4
|
+
license: MIT
|
|
4
5
|
---
|
|
5
6
|
|
|
6
7
|
# ChillSlop Copywriting: Authentic Domain Voice
|
|
7
8
|
|
|
8
|
-
|
|
9
|
+
> *"Write with the precision of an engineer and the brevity of an editor."*
|
|
9
10
|
|
|
10
|
-
## 1.
|
|
11
|
-
Strip these
|
|
12
|
-
- *"Unleash the power of..."* → Name the exact feature and
|
|
13
|
-
- *"Seamless integration / Effortless workflow"* →
|
|
14
|
-
- *"Supercharge your team / Game-changer / Next-generation"* →
|
|
15
|
-
- *"
|
|
11
|
+
## 1. Zero AI Buzzwords & Cliches
|
|
12
|
+
Strip these phrases immediately:
|
|
13
|
+
- *"Unleash the power of..."* → Name the exact feature and its concrete function.
|
|
14
|
+
- *"Seamless integration / Effortless workflow"* → State the exact protocol (*"Installs via stdio JSON-RPC in 1 command"*).
|
|
15
|
+
- *"Supercharge your team / Game-changer / Next-generation"* → Give verified latency or throughput figures.
|
|
16
|
+
- *"Delve into / Dive deep / Look no further"* → Start directly with the technical instruction.
|
|
16
17
|
- *"Robust, scalable, and cutting-edge"* → Specify uptime, architecture, or benchmark.
|
|
17
18
|
- *"Empower developers to..."* → State the developer's exact action.
|
|
18
19
|
|
|
19
20
|
## 2. The Specificity Mandate
|
|
20
21
|
- Replace vague assertions with concrete specifications:
|
|
21
|
-
- *
|
|
22
|
-
- *
|
|
23
|
-
|
|
24
|
-
- *Good:* "Used by 1,400 active developers across 12 countries." (Only if verified, otherwise omit social proof entirely).
|
|
22
|
+
- *Slop:* "Lightweight tool that saves lots of tokens and makes coding super fast."
|
|
23
|
+
- *Clean:* "0ms deterministic SQLite proxy that prunes stale tool outputs over 1.5KB."
|
|
24
|
+
- Never generate synthetic customer quotes, fake TechCrunch badges, or bogus claims (*"99.9% satisfaction"*). If verified proof does not exist, omit social proof entirely.
|
|
25
25
|
|
|
26
26
|
## 3. Microcopy & Interface Verbs
|
|
27
|
-
- **Action
|
|
27
|
+
- **Action Verbs on Buttons:** Imperative verb + direct object:
|
|
28
28
|
- Prefer: `Fork Session`, `Export JSON`, `Connect Database`, `Copy API Key`.
|
|
29
|
-
- Avoid: `Submit`, `Click Here`, `Get Started Now`, `
|
|
30
|
-
- **Honest Error Messages:**
|
|
31
|
-
-
|
|
32
|
-
- *
|
|
33
|
-
- *Good:* "Upstream API timeout (504 Gateway Timeout) on `api.anthropic.com`. Verify your network or re-run with `chill-agent run --port 8788`."
|
|
29
|
+
- Avoid: `Submit`, `Click Here`, `Get Started Now`, `Experience Magic`.
|
|
30
|
+
- **Honest Error Messages:** State what broke, why it broke, and the exact resolution command.
|
|
31
|
+
- *Slop:* "Oops! Something went wrong! Please try again later."
|
|
32
|
+
- *Clean:* "Upstream API timeout (504 Gateway Timeout) on `api.anthropic.com`. Verify your network or re-run with `chill-agent run --port 8788`."
|
|
@@ -1,18 +1,21 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: chill-slop-human
|
|
3
|
-
description: "
|
|
3
|
+
description: "Ergonomics, Human Factors & Accessibility Standard. Guarantees WCAG AA 4.5:1 contrast, visible focus rings, 44px touch targets, and zero-barrier keyboard navigation."
|
|
4
|
+
license: MIT
|
|
4
5
|
---
|
|
5
6
|
|
|
6
7
|
# ChillSlop Human: Ergonomics & Accessibility
|
|
7
8
|
|
|
8
|
-
|
|
9
|
+
> *"Accessibility is not a feature; it is the baseline of professional craftsmanship."*
|
|
9
10
|
|
|
10
11
|
## 1. Contrast & Legibility
|
|
11
|
-
- **WCAG AA Minimum Contrast:** Text and interactive elements must maintain at least `4.5:1` contrast ratio against their immediate background (`3:1` for text >= 18pt
|
|
12
|
+
- **WCAG AA Minimum Contrast:** Text and interactive elements must maintain at least `4.5:1` contrast ratio against their immediate background (`3:1` for bold text >= 18pt).
|
|
12
13
|
- **No Low-Contrast Gray-on-Gray Slop:** Never use `#71717A` text on `#18181B` backgrounds for critical body copy. Reserve muted gray exclusively for secondary metadata labels.
|
|
13
14
|
|
|
14
15
|
## 2. Keyboard & Focus Management
|
|
15
|
-
- **Visible Focus Rings:** Every button, input, anchor, and clickable div must render a clear,
|
|
16
|
+
- **Visible Focus Rings:** Every button, input, anchor, and clickable div must render a clear, unclipped focus indicator:
|
|
17
|
+
`outline: 2px solid var(--focus-ring); outline-offset: 2px;`
|
|
18
|
+
Never set `outline: none` without a high-visibility replacement.
|
|
16
19
|
- **Escape Key Interception:** All modals, drawers, and overlay dialogs must close immediately on `Escape` keypress and restore focus to the triggering element.
|
|
17
20
|
- **Logical Tab Order:** Ensure the DOM tab order matches visual layout. Never jump focus unexpectedly across the viewport.
|
|
18
21
|
|
|
@@ -1,18 +1,20 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: chill-slop-mobile
|
|
3
|
-
description: "Mobile
|
|
3
|
+
description: "Mobile & Responsive Engineering Standard. Fluid CSS clamp typography, zero horizontal blowout, and comfortable thumb-reach zone actions without complex layout bloat."
|
|
4
|
+
license: MIT
|
|
4
5
|
---
|
|
5
6
|
|
|
6
7
|
# ChillSlop Mobile: Responsive Engineering
|
|
7
8
|
|
|
8
|
-
|
|
9
|
+
> *"A responsive design works everywhere by default, not through 50 media query overrides."*
|
|
9
10
|
|
|
10
11
|
## 1. Zero Horizontal Overflow
|
|
11
|
-
- The viewport must never produce accidental horizontal scrollbars
|
|
12
|
-
-
|
|
12
|
+
- The viewport must never produce accidental horizontal scrollbars. Eliminate protruding widths and rigid pixel bounds.
|
|
13
|
+
- Tables and wide code views must sit inside cleanly scrollable wrappers:
|
|
14
|
+
`overflow-x: auto; -webkit-overflow-scrolling: touch;`
|
|
13
15
|
|
|
14
16
|
## 2. Fluid Typography & Modular Scale
|
|
15
|
-
- Avoid massive static header sizes on mobile (`font-size: 72px`
|
|
17
|
+
- Avoid massive static header sizes on mobile (`font-size: 72px` breaking mobile screens).
|
|
16
18
|
- Use CSS `clamp()` for fluid scaling:
|
|
17
19
|
```css
|
|
18
20
|
h1 {
|
|
@@ -1,35 +1,41 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: chill-slop-ui
|
|
3
|
-
description: "
|
|
3
|
+
description: "High-Craft Visual Engineering & Minimalist UI Standard. Enforces Linear/Geist/Raycast monochrome discipline, purposeful typography, and clean semantic states while eliminating AI slop gradients and pill cards."
|
|
4
|
+
license: MIT
|
|
4
5
|
---
|
|
5
6
|
|
|
6
|
-
# ChillSlop UI: Visual
|
|
7
|
+
# ChillSlop UI: High-Craft Visual Engineering
|
|
7
8
|
|
|
8
|
-
|
|
9
|
+
> *"Good design is as little design as possible. Less, but better — because it concentrates on the essential aspects."*
|
|
9
10
|
|
|
10
|
-
## 1.
|
|
11
|
-
- **Reject the Purple/Cyan Default:**
|
|
12
|
-
- **Surface Elevation Hierarchy:**
|
|
13
|
-
- Canvas: `#09090B` (Deep Carbon)
|
|
14
|
-
- Secondary
|
|
15
|
-
-
|
|
16
|
-
- Hover
|
|
17
|
-
- Hairline Border: `1px solid #
|
|
18
|
-
- **Monochrome Foundation:** Build 90% of the UI in
|
|
11
|
+
## 1. Palette & Surface Architecture
|
|
12
|
+
- **Reject the Purple/Cyan Default:** Saturated violet-to-cyan mesh gradients are banned.
|
|
13
|
+
- **Surface Elevation Hierarchy:** Build visual depth via distinct background shades and hairline borders, not muddy shadows:
|
|
14
|
+
- Base Canvas: `#09090B` (Deep Carbon)
|
|
15
|
+
- Secondary Panel: `#101014`
|
|
16
|
+
- Interactive Elevated: `#16161C`
|
|
17
|
+
- Hover Surface: `#1E1E26`
|
|
18
|
+
- Hairline Border: `1px solid #26262E`
|
|
19
|
+
- **Monochrome Foundation:** Build 90% of the UI in monochrome (carbon, zinc, white). Limit color strictly to semantic roles:
|
|
20
|
+
- Emerald (`#10B981`): Success, verified cache hits, live connectivity.
|
|
21
|
+
- Amber (`#F59E0B`): Pruned content, warnings, pending state.
|
|
22
|
+
- Rose (`#F43F5E`): Circuit breakers, errors, destructive actions.
|
|
23
|
+
- Indigo (`#818CF8`): Branched sessions, active tabs, navigation anchors.
|
|
19
24
|
|
|
20
25
|
## 2. Geometry & Spacing
|
|
21
26
|
- **Border Radius Discipline:**
|
|
22
|
-
- Micro
|
|
23
|
-
-
|
|
24
|
-
-
|
|
25
|
-
-
|
|
26
|
-
- **
|
|
27
|
+
- Micro badges, tags, code chips: `4px`
|
|
28
|
+
- Buttons, inputs, dropdown items: `6px`
|
|
29
|
+
- Modals, panels, code containers: `8px`
|
|
30
|
+
- Maximum outer containers: `12px`
|
|
31
|
+
- **Ban:** Universal `rounded-2xl` and `rounded-3xl` cards.
|
|
32
|
+
- **Rhythm Over Magic Numbers:** Use strict modular spacing: `4px`, `8px`, `12px`, `16px`, `24px`, `32px`, `48px`, `64px`.
|
|
27
33
|
|
|
28
|
-
## 3. Component Architecture
|
|
29
|
-
- **
|
|
30
|
-
- **Tabular Monospace Metrics:**
|
|
31
|
-
- **Affordance Clarity:** Interactive elements must
|
|
34
|
+
## 3. Component Architecture & Density
|
|
35
|
+
- **Asymmetric Density:** Avoid the cliché 3 identical feature cards with centered icons and 2 lines of lorem ipsum. Use real data tables, inline previews, and asymmetric layouts.
|
|
36
|
+
- **Tabular Monospace Metrics:** All numbers, counters, latencies, timestamps, and hashes must use `ui-monospace`, `JetBrains Mono`, or `font-variant-numeric: tabular-nums` to eliminate layout jitter.
|
|
37
|
+
- **Affordance Clarity:** Interactive elements must have visible hover states, clear pressed states, and distinct disabled opacity (`0.45` with `cursor: not-allowed`).
|
|
32
38
|
|
|
33
39
|
## 4. Animation & Motion
|
|
34
40
|
- Fast, purposeful, non-distracting motion: `duration: 120ms` to `180ms`, easing `cubic-bezier(0.16, 1, 0.3, 1)`.
|
|
35
|
-
-
|
|
41
|
+
- Motion is strictly spatial (drawers sliding in from anchor, dropdown expansion). Never animate elements just to show off CSS transitions.
|
package/src/auditor.js
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
// src/auditor.js - Automated Anti-Slop
|
|
1
|
+
// src/auditor.js - Automated Anti-Slop & Over-Engineering Scanner
|
|
2
2
|
import fs from 'node:fs';
|
|
3
3
|
import path from 'node:path';
|
|
4
4
|
import { c } from './prompts.js';
|
|
5
5
|
|
|
6
6
|
const SLOP_PATTERNS = [
|
|
7
|
-
// 1. Visual Slop
|
|
7
|
+
// 1. Visual Slop (Anti-Slop UI)
|
|
8
8
|
{
|
|
9
9
|
id: 'VISUAL-01',
|
|
10
10
|
category: 'Visual Slop',
|
|
@@ -30,7 +30,25 @@ const SLOP_PATTERNS = [
|
|
|
30
30
|
fix: 'Ensure backdrop-blur is not stacked across cards, modals, and navbars simultaneously.'
|
|
31
31
|
},
|
|
32
32
|
|
|
33
|
-
// 2.
|
|
33
|
+
// 2. Over-Engineering & Bloat (Ponytail Minimalism)
|
|
34
|
+
{
|
|
35
|
+
id: 'BLOAT-01',
|
|
36
|
+
category: 'Over-Engineering',
|
|
37
|
+
severity: 'HIGH',
|
|
38
|
+
regex: /class\s+[A-Za-z0-9]+Factory|class\s+[A-Za-z0-9]+AbstractBuilder|class\s+[A-Za-z0-9]+ProviderManager/i,
|
|
39
|
+
name: 'Premature Factory / Builder Abstraction',
|
|
40
|
+
fix: 'Ponytail YAGNI rule: replace speculative multi-class factory wrappers with a direct 1-line function or object literal.'
|
|
41
|
+
},
|
|
42
|
+
{
|
|
43
|
+
id: 'BLOAT-02',
|
|
44
|
+
category: 'Over-Engineering',
|
|
45
|
+
severity: 'MEDIUM',
|
|
46
|
+
regex: /import\s+.*lodash\/(cloneDeep|isEqual|merge)|import\s+is-number\s+from/i,
|
|
47
|
+
name: 'Unnecessary Micro-Dependency',
|
|
48
|
+
fix: 'Use native JavaScript standard library (`structuredClone`, `Object.assign`, or standard operators) instead of external micro-packages.'
|
|
49
|
+
},
|
|
50
|
+
|
|
51
|
+
// 3. Copywriting Slop
|
|
34
52
|
{
|
|
35
53
|
id: 'COPY-01',
|
|
36
54
|
category: 'Copywriting Slop',
|
|
@@ -43,7 +61,7 @@ const SLOP_PATTERNS = [
|
|
|
43
61
|
id: 'COPY-02',
|
|
44
62
|
category: 'Copywriting Slop',
|
|
45
63
|
severity: 'MEDIUM',
|
|
46
|
-
regex:
|
|
64
|
+
regex: /[✨🚀🎉💡🔥]/u,
|
|
47
65
|
name: 'AI Sparkle / Rocket Emoji Cliché',
|
|
48
66
|
fix: 'Strip emojis from marketing headlines, documentation, and interface button labels.'
|
|
49
67
|
},
|
|
@@ -56,7 +74,7 @@ const SLOP_PATTERNS = [
|
|
|
56
74
|
fix: 'Cite verified customer metrics or remove synthetic testimonials entirely.'
|
|
57
75
|
},
|
|
58
76
|
|
|
59
|
-
//
|
|
77
|
+
// 4. Code Hygiene Slop
|
|
60
78
|
{
|
|
61
79
|
id: 'CODE-01',
|
|
62
80
|
category: 'Code Hygiene',
|
|
@@ -74,7 +92,7 @@ const SLOP_PATTERNS = [
|
|
|
74
92
|
fix: 'Provide full working implementation or throw explicit NotImplementedError with actionable message.'
|
|
75
93
|
},
|
|
76
94
|
|
|
77
|
-
//
|
|
95
|
+
// 5. Human Factors & Accessibility
|
|
78
96
|
{
|
|
79
97
|
id: 'A11Y-01',
|
|
80
98
|
category: 'Human Factors',
|
|
@@ -120,7 +138,7 @@ export function autoFixFile(filePath) {
|
|
|
120
138
|
try {
|
|
121
139
|
let content = fs.readFileSync(filePath, 'utf8');
|
|
122
140
|
|
|
123
|
-
// 1. Strip marketing emojis
|
|
141
|
+
// 1. Strip marketing emojis
|
|
124
142
|
const strippedEmoji = content.replace(/[✨🚀🎉💡🔥]/gu, '');
|
|
125
143
|
if (strippedEmoji !== content) {
|
|
126
144
|
content = strippedEmoji;
|
|
@@ -149,7 +167,6 @@ export function autoFixFile(filePath) {
|
|
|
149
167
|
}
|
|
150
168
|
|
|
151
169
|
export function scanDirectory(dirPath) {
|
|
152
|
-
|
|
153
170
|
const allFindings = [];
|
|
154
171
|
|
|
155
172
|
function walk(current) {
|
|
@@ -180,11 +197,11 @@ export function scanDirectory(dirPath) {
|
|
|
180
197
|
}
|
|
181
198
|
|
|
182
199
|
export function printAuditReport(findings, targetDir = process.cwd()) {
|
|
183
|
-
console.log(`\n${c.bold}ChillAgent Anti-Slop
|
|
200
|
+
console.log(`\n${c.bold}ChillAgent Anti-Slop & Over-Engineering Audit${c.reset}`);
|
|
184
201
|
console.log(`${c.dim}Scanned directory: ${targetDir}${c.reset}\n`);
|
|
185
202
|
|
|
186
203
|
if (findings.length === 0) {
|
|
187
|
-
console.log(`${c.green}${c.bold}✔ Clean Codebase!${c.reset} No AI slop patterns or
|
|
204
|
+
console.log(`${c.green}${c.bold}✔ Clean Codebase!${c.reset} No AI slop patterns or premature over-engineering found.`);
|
|
188
205
|
return;
|
|
189
206
|
}
|
|
190
207
|
|
|
@@ -193,7 +210,7 @@ export function printAuditReport(findings, targetDir = process.cwd()) {
|
|
|
193
210
|
const lowCount = findings.filter((f) => f.severity === 'LOW').length;
|
|
194
211
|
|
|
195
212
|
console.log(
|
|
196
|
-
`Found ${c.bold}${findings.length}
|
|
213
|
+
`Found ${c.bold}${findings.length} infractions${c.reset} ` +
|
|
197
214
|
`(${c.coral}${highCount} High${c.reset}, ${c.amber}${medCount} Medium${c.reset}, ${c.gray}${lowCount} Low${c.reset}):\n`
|
|
198
215
|
);
|
|
199
216
|
|
package/src/installer.js
CHANGED
|
@@ -8,26 +8,29 @@ const __dirname = path.dirname(fileURLToPath(import.meta.url));
|
|
|
8
8
|
const ROOT_DIR = path.resolve(__dirname, '..');
|
|
9
9
|
|
|
10
10
|
export const AVAILABLE_SKILLS = [
|
|
11
|
-
{ id: 'chill-slop', label: 'ChillSlop Master Filter (Core)', description: 'Hard gates,
|
|
12
|
-
{ id: 'chill-slop-
|
|
11
|
+
{ id: 'chill-slop', label: 'ChillSlop Master Filter (Anti-Slop + Ponytail Core)', description: 'Hard gates, YAGNI ladder, craftsmanship standard' },
|
|
12
|
+
{ id: 'chill-slop-code', label: 'ChillSlop Pragmatic Code', description: 'Smallest complete change, native APIs, zero over-engineering' },
|
|
13
|
+
{ id: 'chill-slop-ui', label: 'ChillSlop UI & Layout', description: 'Monochrome surfaces, 1px hairlines, non-generic cards' },
|
|
13
14
|
{ id: 'chill-slop-copywriting', label: 'ChillSlop Copywriting', description: 'Strip AI buzzwords, vague hype, fake testimonials' },
|
|
14
|
-
{ id: 'chill-slop-
|
|
15
|
-
{ id: 'chill-slop-human', label: 'ChillSlop Ergonomics & A11y', description: 'WCAG contrast, focus rings, 44px tap targets' },
|
|
15
|
+
{ id: 'chill-slop-human', label: 'ChillSlop Ergonomics & A11y', description: 'WCAG 4.5:1 contrast, visible focus rings, 44px tap targets' },
|
|
16
16
|
{ id: 'chill-slop-mobile', label: 'ChillSlop Mobile & Fluid', description: 'Clamp scaling, thumb reach zones, zero overflow' }
|
|
17
17
|
];
|
|
18
18
|
|
|
19
|
-
export function generatePointerBlock(selectedSkills = ['chill-slop']) {
|
|
19
|
+
export function generatePointerBlock(selectedSkills = ['chill-slop'], intensity = 'full') {
|
|
20
20
|
const lines = [
|
|
21
21
|
'<!-- chill-agent:start -->',
|
|
22
|
-
'## ChillAgent Anti-Slop 2.0
|
|
22
|
+
'## ChillAgent Anti-Slop 2.0 & Pragmatic Senior Dev Standard (Ponytail + Anti-Slop)',
|
|
23
|
+
`Active Mode: \`${intensity}\` (Options: lite | full | ultra). Switch anytime with \`/chill <mode>\`.`,
|
|
24
|
+
'',
|
|
23
25
|
'Before generating or editing any code, interface, copy, or architecture in this workspace, follow these active skills:',
|
|
24
26
|
...selectedSkills.map((s) => `- \`skills/${s}/SKILL.md\``),
|
|
25
27
|
'',
|
|
26
28
|
'### Core Operating Rules:',
|
|
27
|
-
'1. **
|
|
28
|
-
'2. **
|
|
29
|
-
'3. **
|
|
30
|
-
'4. **Time-Travel
|
|
29
|
+
'1. **The Smallest Complete Change (Ponytail):** Take the shortest path that solves the whole task: standard library > existing codebase helper > installed dependency > minimum new code. No premature abstractions or wrapper factories.',
|
|
30
|
+
'2. **Purpose Test (Anti-Slop):** Every visual decision, color accent, layout structure, and copy phrase must name a specific domain purpose. AI defaults (purple gradients, rounded-3xl cards, generic cards) are forbidden.',
|
|
31
|
+
'3. **Liveliness Bar:** Avoid sterile defaults by reading `DESIGN.md`. If `DESIGN.md` is missing, adhere strictly to Linear/Geist carbon monochromatic standards.',
|
|
32
|
+
'4. **Context Hygiene & Time-Travel:** Strip conversational fluff and emojis. When debugging stochastic agent loops, route upstream LLM calls through `chillrewind run` (deterministic SQLite WAL replay + SlopSieve circuit breaker).',
|
|
33
|
+
'5. **Delivery Disclosure:** End non-trivial deliveries with a 1-line disclosure: what was skipped and known limits/trade-offs.',
|
|
31
34
|
'<!-- chill-agent:end -->'
|
|
32
35
|
];
|
|
33
36
|
return lines.join('\n');
|
package/src/prompts.js
CHANGED
|
@@ -186,7 +186,7 @@ ${c.indigo}${c.bold} | | | '_ \\| | | | / _\` |/ _\` |/ _ \\ __|${c.reset}
|
|
|
186
186
|
${c.cyan}${c.bold} | |___| | | | | | |_| (_| | (_| | __/ |_ ${c.reset}
|
|
187
187
|
${c.cyan}${c.bold} \\____|_| |_|_|_|_(_)\\__,_|\\__, |\\___|\\__|${c.reset}
|
|
188
188
|
${c.cyan}${c.bold} |___/ ${c.reset}
|
|
189
|
-
${c.bold}ChillAgent Anti-Slop 2.0 Engine${c.reset} ${c.dim}•
|
|
189
|
+
${c.bold}ChillAgent Anti-Slop 2.0 Engine${c.reset} ${c.dim}• Anti-Slop + Ponytail Senior Dev Core${c.reset}
|
|
190
190
|
${c.dim}Zero-Dependency • Linear/Geist Standard • Multi-Agent Ready${c.reset}
|
|
191
191
|
`);
|
|
192
192
|
}
|