Paint
name: paint
by bytesagain · published 2026-03-22
$ claw add gh:bytesagain/bytesagain-paint---
name: paint
version: "2.0.0"
author: BytesAgain
homepage: https://bytesagain.com
source: https://github.com/bytesagain/ai-skills
license: MIT-0
tags: [paint, tool, utility]
description: "Generate color palettes, gradients, and textures. Use when creating harmonized palettes, previewing schemes, converting color spaces, making patterns."
---
# Paint
A design toolkit for managing color palettes, gradients, swatches, and design assets. Each command category maintains its own timestamped log file, so you can organize design entries by purpose — palettes, previews, color conversions, harmonies, contrasts, gradients, swatches, and more. Includes built-in statistics, multi-format export, full-text search, and activity history.
All operations are logged with timestamps and stored locally in flat files for easy inspection and portability.
Commands
| Command | Description |
|---------|-------------|
| `paint palette <text>` | Record a palette entry (or show recent palettes with no args) |
| `paint preview <text>` | Log a design preview note |
| `paint generate <text>` | Record a generated design asset or color scheme |
| `paint convert <text>` | Log a color space conversion (e.g., HEX to RGB) |
| `paint harmonize <text>` | Record a color harmony analysis |
| `paint contrast <text>` | Log a contrast check or accessibility evaluation |
| `paint export <text>` | Record an export operation or design asset output |
| `paint random <text>` | Log a randomly generated color or pattern |
| `paint browse <text>` | Record a browsed design reference or inspiration |
| `paint mix <text>` | Log a color mixing operation |
| `paint gradient <text>` | Record a gradient definition or transition |
| `paint swatch <text>` | Log a swatch entry or named color sample |
| `paint stats` | Show summary statistics across all categories |
| `paint search <term>` | Full-text search across all log files |
| `paint recent` | Show the 20 most recent activity entries |
| `paint status` | Health check — version, data dir, entry counts, disk usage |
| `paint help` | Show the built-in help message |
| `paint version` | Print the current version |
How Entry Commands Work
Every entry command (`palette`, `preview`, `generate`, `convert`, `harmonize`, `contrast`, `export`, `random`, `browse`, `mix`, `gradient`, `swatch`) follows the same pattern:
Data Storage
All data is stored in `~/.local/share/paint/` by default.
Files created in the data directory:
Export Formats (via internal `_export` function)
Requirements
When to Use
1. **Building a color palette library** — Use `palette` to log color combinations as you discover or create them, then `search` to find specific palettes later
2. **Tracking design iterations** — Use `preview` and `generate` to record design experiments, then `recent` to review your latest work
3. **Color space documentation** — Use `convert` to log color conversions (HEX → RGB → HSL) for reference in design systems or style guides
4. **Accessibility audits** — Use `contrast` to document contrast ratio checks between foreground and background colors for WCAG compliance
5. **Gradient and swatch management** — Use `gradient` and `swatch` to maintain a library of reusable color transitions and named color samples
Examples
# Record a new palette
paint palette "Sunset: #FF6B35, #F7931E, #FCB040, #FDD835"
#=> [Paint] palette: Sunset: #FF6B35, #F7931E, #FCB040, #FDD835
#=> Saved. Total palette entries: 1
# Log a color conversion
paint convert "Brand blue: #2196F3 → rgb(33,150,243) → hsl(207,90%,54%)"
#=> [Paint] convert: Brand blue: #2196F3 → rgb(33,150,243) → hsl(207,90%,54%)
#=> Saved. Total convert entries: 1
# Record a gradient
paint gradient "Hero section: linear-gradient(135deg, #667eea 0%, #764ba2 100%)"
#=> [Paint] gradient: Hero section: linear-gradient(135deg, #667eea 0%, #764ba2 100%)
#=> Saved. Total gradient entries: 1
# Check a contrast ratio
paint contrast "White #FFF on brand blue #2196F3: ratio 3.2:1 — fails AA for body text"
#=> [Paint] contrast: White #FFF on brand blue #2196F3: ratio 3.2:1 — fails AA for body text
#=> Saved. Total contrast entries: 1
# View statistics across all categories
paint stats
#=> === Paint Stats ===
#=> palette: 1 entries
#=> convert: 1 entries
#=> gradient: 1 entries
#=> contrast: 1 entries
#=> ---
#=> Total: 4 entries
#=> Data size: 4.0K
# Search across all logs
paint search "blue"
#=> Searching for: blue
#=> --- convert ---
#=> 2025-03-18 14:30|Brand blue: #2196F3 → rgb(33,150,243)Configuration
The data directory is hardcoded to `~/.local/share/paint/`. To use a custom location, modify the `DATA_DIR` variable in the script.
How It Works
1. On every invocation, the tool ensures the data directory exists (`mkdir -p`)
2. The first argument selects the command via a `case` dispatch
3. Entry commands append a pipe-delimited line (`timestamp|text`) to their category-specific log file
4. Every command also appends to `history.log` for auditing
5. `stats` iterates over all `.log` files to produce aggregate counts
6. `search` uses `grep -i` across all log files for case-insensitive matching
7. All output goes to stdout for easy piping and redirection
---
Powered by BytesAgain | bytesagain.com | hello@bytesagain.com
More tools from the same signal band
Order food/drinks (点餐) on an Android device paired as an OpenClaw node. Uses in-app menu and cart; add goods, view cart, submit order (demo, no real payment).
Sign plugins, rotate agent credentials without losing identity, and publicly attest to plugin behavior with verifiable claims and authenticated transfers.
The philosophical layer for AI agents. Maps behavior to Spinoza's 48 affects, calculates persistence scores, and generates geometric self-reports. Give your...