Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions .claude/skills/brand/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,10 @@ Brand identity, voice, messaging, asset management, and consistency frameworks.
- Asset organization, naming, and approval
- Color palette management and typography specs

## Script Paths

Script paths in this skill and its `references/` are relative to the directory that contains this SKILL.md, not to the project: `scripts/<file>` is this skill's own `scripts/` folder, and `../<skill>/scripts/<file>` is a sibling sub-skill installed alongside it. Build the full path from that directory (Claude Code reports it as the skill's base directory when the skill loads) and keep the working directory at the project root — the scripts read and write project files such as `docs/brand-guidelines.md`, `assets/design-tokens.json` or `src/` relative to it.

## Quick Start

**Inject brand context into prompts:**
Expand Down
2 changes: 1 addition & 1 deletion .claude/skills/brand/references/approval-checklist.md
Original file line number Diff line number Diff line change
Expand Up @@ -157,7 +157,7 @@ The `validate-asset.cjs` script can auto-check:
- Naming convention
- Basic metadata

Run: `node .claude/skills/brand/scripts/validate-asset.cjs <asset-path>`
Run: `node scripts/validate-asset.cjs <asset-path>`

## Archival

Expand Down
4 changes: 2 additions & 2 deletions .claude/skills/brand/references/update.md
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@ Edit `docs/brand-guidelines.md`:

Run the sync script:
```bash
node .claude/skills/brand/scripts/sync-brand-to-tokens.cjs
node scripts/sync-brand-to-tokens.cjs
```

This will:
Expand All @@ -58,7 +58,7 @@ This will:
Confirm all files are updated:
```bash
# Check brand context extraction
node .claude/skills/brand/scripts/inject-brand-context.cjs --json | head -30
node scripts/inject-brand-context.cjs --json | head -30

# Check CSS variables
grep "primary" assets/design-tokens.css | head -5
Expand Down
6 changes: 1 addition & 5 deletions .claude/skills/brand/scripts/extract-colors.cjs
Original file line number Diff line number Diff line change
Expand Up @@ -287,11 +287,7 @@ function main() {
"1. Run the ImageMagick command to extract colors:",
` ${generateImageMagickCommand(resolvedPath)}`,
"",
"2. Or use the ai-multimodal skill:",
` python .claude/skills/ai-multimodal/scripts/gemini_batch_process.py \\`,
` --files "${resolvedPath}" \\`,
` --task analyze \\`,
` --prompt "Extract the 10 most dominant colors as hex values"`,
"2. Or use an image-analysis skill (e.g. ai-multimodal, if installed) to extract the 10 most dominant colors as hex values",
"",
"3. Then compare extracted colors against brand palette",
],
Expand Down
9 changes: 7 additions & 2 deletions .claude/skills/brand/scripts/sync-brand-to-tokens.cjs
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,10 @@ const { execFileSync } = require('child_process');
const BRAND_GUIDELINES = 'docs/brand-guidelines.md';
const DESIGN_TOKENS_JSON = 'assets/design-tokens.json';
const DESIGN_TOKENS_CSS = 'assets/design-tokens.css';
const GENERATE_TOKENS_SCRIPT = '.claude/skills/design-system/scripts/generate-tokens.cjs';
// Sibling sub-skill, resolved from this file's location so it works in every
// install context (plugin cache, project or --global CLI install), not only
// when the process runs from a project root that contains .claude/skills/.
const GENERATE_TOKENS_SCRIPT = path.resolve(__dirname, '..', '..', 'design-system', 'scripts', 'generate-tokens.cjs');

/**
* Extract color info from brand guidelines markdown
Expand Down Expand Up @@ -229,7 +232,7 @@ function main() {
console.log(`✅ Updated: ${DESIGN_TOKENS_JSON}`);

// Regenerate CSS
const generateScript = path.resolve(process.cwd(), GENERATE_TOKENS_SCRIPT);
const generateScript = GENERATE_TOKENS_SCRIPT;
if (fs.existsSync(generateScript)) {
try {
execFileSync('node', [generateScript, '--config', DESIGN_TOKENS_JSON, '-o', DESIGN_TOKENS_CSS], {
Expand All @@ -240,6 +243,8 @@ function main() {
} catch (e) {
console.error('⚠️ Failed to regenerate CSS:', e.message);
}
} else {
console.warn(`⚠️ design-system sub-skill not found at ${generateScript}; ${DESIGN_TOKENS_CSS} not regenerated`);
}

console.log('\n✨ Brand sync complete!');
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -62,6 +62,14 @@ def test_sync_parses_bundled_starter_template(tmp_path):
assert primitive["secondary"]["500"]["$value"] == "#8B5CF6"
assert primitive["accent"]["500"]["$value"] == "#10B981"

# #474: the sibling design-system script is resolved from this skill's own
# location, so the CSS regeneration must run even though tmp_path has no
# .claude/skills/ tree. Before the fix it was resolved from the working
# directory and silently skipped in every layout but a project install.
assert "Regenerated" in result.stdout, result.stdout
css = tmp_path / "assets" / "design-tokens.css"
assert css.exists() and css.stat().st_size > 0


def test_reports_missing_guidelines_without_breaking_the_harness(tmp_path):
"""The missing-guidelines path is the one that breaks a locale-decoded pipe.
Expand Down
4 changes: 4 additions & 0 deletions .claude/skills/design-system/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -48,6 +48,10 @@ Component (component-specific)
--button-bg: var(--color-primary);
```

## Script Paths

Script paths in this skill and its `references/` are relative to the directory that contains this SKILL.md, not to the project: `scripts/<file>` is this skill's own `scripts/` folder, and `../<skill>/scripts/<file>` is a sibling sub-skill installed alongside it. Build the full path from that directory (Claude Code reports it as the skill's base directory when the skill loads) and keep the working directory at the project root — the scripts read and write project files such as `docs/brand-guidelines.md`, `assets/design-tokens.json` or `src/` relative to it.

## Quick Start

**Generate tokens:**
Expand Down
4 changes: 4 additions & 0 deletions .claude/skills/design/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,10 @@ Unified design skill: brand, tokens, UI, logo, CIP, slides, banners, social phot
| Social media images/photos | Social Photos (built-in) | `references/social-photos-design.md` |
| SVG icons, icon sets | Icon (built-in) | `references/icon-design.md` |

## Script Paths

Script paths in this skill and its `references/` are relative to the directory that contains this SKILL.md, not to the project: `scripts/<file>` is this skill's own `scripts/` folder, and `../<skill>/scripts/<file>` is a sibling sub-skill installed alongside it. Build the full path from that directory (Claude Code reports it as the skill's base directory when the skill loads) and keep the working directory at the project root — the scripts read and write project files such as `docs/brand-guidelines.md`, `assets/design-tokens.json` or `src/` relative to it.

## Logo Design (Built-in)

55+ styles, 30 color palettes, 25 industry guides. Gemini Nano Banana, Atlas
Expand Down
24 changes: 12 additions & 12 deletions .claude/skills/design/references/cip-design.md
Original file line number Diff line number Diff line change
Expand Up @@ -16,49 +16,49 @@ Corporate Identity Program design with 50+ deliverables, 20 styles, 20 industrie
### CIP Brief (Start Here)

```bash
python3 ~/.claude/skills/design/scripts/cip/search.py "tech startup" --cip-brief -b "BrandName"
python3 scripts/cip/search.py "tech startup" --cip-brief -b "BrandName"
```

### Search Domains

```bash
# Deliverables
python3 ~/.claude/skills/design/scripts/cip/search.py "business card letterhead" --domain deliverable
python3 scripts/cip/search.py "business card letterhead" --domain deliverable

# Design styles
python3 ~/.claude/skills/design/scripts/cip/search.py "luxury premium elegant" --domain style
python3 scripts/cip/search.py "luxury premium elegant" --domain style

# Industry guidelines
python3 ~/.claude/skills/design/scripts/cip/search.py "hospitality hotel" --domain industry
python3 scripts/cip/search.py "hospitality hotel" --domain industry

# Mockup contexts
python3 ~/.claude/skills/design/scripts/cip/search.py "office reception" --domain mockup
python3 scripts/cip/search.py "office reception" --domain mockup
```

### Generate Mockups

```bash
# With logo (RECOMMENDED - uses image editing)
python3 ~/.claude/skills/design/scripts/cip/generate.py --brand "TopGroup" --logo /path/to/logo.png --deliverable "business card" --industry "consulting"
python3 scripts/cip/generate.py --brand "TopGroup" --logo /path/to/logo.png --deliverable "business card" --industry "consulting"

# Full CIP set with logo
python3 ~/.claude/skills/design/scripts/cip/generate.py --brand "TopGroup" --logo /path/to/logo.png --industry "consulting" --set
python3 scripts/cip/generate.py --brand "TopGroup" --logo /path/to/logo.png --industry "consulting" --set

# Pro model for 4K text rendering
python3 ~/.claude/skills/design/scripts/cip/generate.py --brand "TopGroup" --logo logo.png --deliverable "business card" --model pro
python3 scripts/cip/generate.py --brand "TopGroup" --logo logo.png --deliverable "business card" --model pro

# Custom deliverables with aspect ratio
python3 ~/.claude/skills/design/scripts/cip/generate.py --brand "GreenLeaf" --logo logo.png --industry "organic food" --deliverables "letterhead,packaging,vehicle" --ratio 16:9
python3 scripts/cip/generate.py --brand "GreenLeaf" --logo logo.png --industry "organic food" --deliverables "letterhead,packaging,vehicle" --ratio 16:9

# Without logo (AI generates interpretation)
python3 ~/.claude/skills/design/scripts/cip/generate.py --brand "TechFlow" --deliverable "business card" --no-logo-prompt
python3 scripts/cip/generate.py --brand "TechFlow" --deliverable "business card" --no-logo-prompt
```

### Render HTML Presentation

```bash
python3 ~/.claude/skills/design/scripts/cip/render-html.py --brand "TopGroup" --industry "consulting" --images /path/to/cip-output
python3 ~/.claude/skills/design/scripts/cip/render-html.py --brand "TopGroup" --industry "consulting" --images ./topgroup-cip --output presentation.html
python3 scripts/cip/render-html.py --brand "TopGroup" --industry "consulting" --images /path/to/cip-output
python3 scripts/cip/render-html.py --brand "TopGroup" --industry "consulting" --images ./topgroup-cip --output presentation.html
```

## Models
Expand Down
8 changes: 4 additions & 4 deletions .claude/skills/design/references/design-routing.md
Original file line number Diff line number Diff line change
Expand Up @@ -164,14 +164,14 @@ Application Code

**Brand:**
```bash
node .claude/skills/brand/scripts/inject-brand-context.cjs
node .claude/skills/brand/scripts/validate-asset.cjs <path>
node ../brand/scripts/inject-brand-context.cjs
node ../brand/scripts/validate-asset.cjs <path>
```

**Tokens:**
```bash
node .claude/skills/design-system/scripts/generate-tokens.cjs -c tokens.json
node .claude/skills/design-system/scripts/validate-tokens.cjs -d src/
node ../design-system/scripts/generate-tokens.cjs -c tokens.json
node ../design-system/scripts/validate-tokens.cjs -d src/
```

**Components:**
Expand Down
16 changes: 8 additions & 8 deletions .claude/skills/design/references/icon-design.md
Original file line number Diff line number Diff line change
Expand Up @@ -13,29 +13,29 @@ AI-powered SVG icon generation using Gemini 3.1 Pro Preview. 15 styles, 12 categ
### Generate Single Icon

```bash
python3 ~/.claude/skills/design/scripts/icon/generate.py --prompt "settings gear" --style outlined
python3 ~/.claude/skills/design/scripts/icon/generate.py --prompt "shopping cart" --style filled --color "#6366F1"
python3 ~/.claude/skills/design/scripts/icon/generate.py --name "dashboard" --category navigation --style duotone
python3 scripts/icon/generate.py --prompt "settings gear" --style outlined
python3 scripts/icon/generate.py --prompt "shopping cart" --style filled --color "#6366F1"
python3 scripts/icon/generate.py --name "dashboard" --category navigation --style duotone
```

### Generate Batch Variations

```bash
python3 ~/.claude/skills/design/scripts/icon/generate.py --prompt "cloud upload" --batch 4 --output-dir ./icons
python3 ~/.claude/skills/design/scripts/icon/generate.py --prompt "notification bell" --batch 6 --style outlined --output-dir ./icons
python3 scripts/icon/generate.py --prompt "cloud upload" --batch 4 --output-dir ./icons
python3 scripts/icon/generate.py --prompt "notification bell" --batch 6 --style outlined --output-dir ./icons
```

### Generate Multiple Sizes

```bash
python3 ~/.claude/skills/design/scripts/icon/generate.py --prompt "user profile" --sizes "16,24,32,48" --output-dir ./icons
python3 scripts/icon/generate.py --prompt "user profile" --sizes "16,24,32,48" --output-dir ./icons
```

### List Styles/Categories

```bash
python3 ~/.claude/skills/design/scripts/icon/generate.py --list-styles
python3 ~/.claude/skills/design/scripts/icon/generate.py --list-categories
python3 scripts/icon/generate.py --list-styles
python3 scripts/icon/generate.py --list-categories
```

## CLI Options
Expand Down
18 changes: 9 additions & 9 deletions .claude/skills/design/references/logo-design.md
Original file line number Diff line number Diff line change
Expand Up @@ -15,32 +15,32 @@ AI-powered logo design with 55+ styles, 30 color palettes, 25 industry guides. G
### Design Brief (Start Here)

```bash
python3 ~/.claude/skills/design/scripts/logo/search.py "tech startup modern" --design-brief -p "BrandName"
python3 scripts/logo/search.py "tech startup modern" --design-brief -p "BrandName"
```

### Search Domains

```bash
# Styles
python3 ~/.claude/skills/design/scripts/logo/search.py "minimalist clean" --domain style
python3 scripts/logo/search.py "minimalist clean" --domain style

# Color palettes
python3 ~/.claude/skills/design/scripts/logo/search.py "tech professional" --domain color
python3 scripts/logo/search.py "tech professional" --domain color

# Industry guidelines
python3 ~/.claude/skills/design/scripts/logo/search.py "healthcare medical" --domain industry
python3 scripts/logo/search.py "healthcare medical" --domain industry
```

### Generate Logo

**ALWAYS** use white background for output logos.

```bash
python3 ~/.claude/skills/design/scripts/logo/generate.py --brand "TechFlow" --style minimalist --industry tech
python3 ~/.claude/skills/design/scripts/logo/generate.py --prompt "coffee shop vintage badge" --style vintage
python3 ~/.claude/skills/design/scripts/logo/generate.py --brand "TechFlow" --provider atlas
python3 ~/.claude/skills/design/scripts/logo/generate.py --brand "TechFlow" --provider muapi
python3 ~/.claude/skills/design/scripts/logo/generate.py --brand "TechFlow" --provider muapi --muapi-model nano-banana-pro
python3 scripts/logo/generate.py --brand "TechFlow" --style minimalist --industry tech
python3 scripts/logo/generate.py --prompt "coffee shop vintage badge" --style vintage
python3 scripts/logo/generate.py --brand "TechFlow" --provider atlas
python3 scripts/logo/generate.py --brand "TechFlow" --provider muapi
python3 scripts/logo/generate.py --brand "TechFlow" --provider muapi --muapi-model nano-banana-pro
```

Options: `--style`, `--industry`, `--prompt`, `--provider`, `--atlas-model`, `--muapi-model`
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -66,10 +66,10 @@

```bash
# Find formula for slide type
python .claude/skills/design-system/scripts/search-slides.py "problem agitation" -d copy
python ../design-system/scripts/search-slides.py "problem agitation" -d copy

# Get emotion-appropriate formula
python .claude/skills/design-system/scripts/search-slides.py "urgency cta" -d copy
python ../design-system/scripts/search-slides.py "urgency cta" -d copy
```

## Quick Reference
Expand Down
4 changes: 2 additions & 2 deletions .claude/skills/design/references/slides-layout-patterns.md
Original file line number Diff line number Diff line change
Expand Up @@ -113,10 +113,10 @@

```bash
# Find layout for specific use
python .claude/skills/design-system/scripts/search-slides.py "metrics dashboard" -d layout
python ../design-system/scripts/search-slides.py "metrics dashboard" -d layout

# Contextual recommendation
python .claude/skills/design-system/scripts/search-slides.py "traction slide" \
python ../design-system/scripts/search-slides.py "traction slide" \
--context --position 4 --total 10
```

Expand Down
4 changes: 2 additions & 2 deletions .claude/skills/design/references/slides-strategies.md
Original file line number Diff line number Diff line change
Expand Up @@ -76,10 +76,10 @@ Pattern breaks at 1/3 and 2/3 positions create engagement peaks.

```bash
# Find strategy by goal
python .claude/skills/design-system/scripts/search-slides.py "investor pitch" -d strategy
python ../design-system/scripts/search-slides.py "investor pitch" -d strategy

# Get emotion arc
python .claude/skills/design-system/scripts/search-slides.py "series a funding" -d strategy --json
python ../design-system/scripts/search-slides.py "series a funding" -d strategy --json
```

## Matching Strategy to Context
Expand Down
5 changes: 4 additions & 1 deletion .claude/skills/design/scripts/cip/generate.py
Original file line number Diff line number Diff line change
Expand Up @@ -427,7 +427,10 @@ def main():
action = check_logo_required(args.brand, skip_prompt=args.no_logo_prompt)
if action == 'generate':
print("\n💡 To generate a logo, use the logo-design skill:")
print(f" python ~/.claude/skills/design/scripts/logo/generate.py --brand \"{args.brand}\" --industry \"{args.industry}\"")
# Resolved from this file so the hint is correct from any cwd and in
# every install layout (plugin cache, project or --global install).
logo_script = Path(__file__).resolve().parents[1] / "logo" / "generate.py"
print(f" python \"{logo_script}\" --brand \"{args.brand}\" --industry \"{args.industry}\"")
print("\n Then re-run this command with --logo <generated_logo.png>")
sys.exit(0)
elif action == 'exit':
Expand Down
4 changes: 4 additions & 0 deletions .claude/skills/slides/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,10 @@ Strategic HTML presentation design with data visualization.
|------------|-------------|-----------|
| `create` | Create strategic presentation slides | `references/create.md` |

## Script Paths

Script paths in this skill and its `references/` are relative to the directory that contains this SKILL.md, not to the project: `scripts/<file>` is this skill's own `scripts/` folder, and `../<skill>/scripts/<file>` is a sibling sub-skill installed alongside it. Build the full path from that directory (Claude Code reports it as the skill's base directory when the skill loads) and keep the working directory at the project root — the scripts read and write project files such as `docs/brand-guidelines.md`, `assets/design-tokens.json` or `src/` relative to it.

## References (Knowledge Base)

| Topic | File |
Expand Down
4 changes: 2 additions & 2 deletions .claude/skills/slides/references/copywriting-formulas.md
Original file line number Diff line number Diff line change
Expand Up @@ -66,10 +66,10 @@

```bash
# Find formula for slide type
python .claude/skills/design-system/scripts/search-slides.py "problem agitation" -d copy
python ../design-system/scripts/search-slides.py "problem agitation" -d copy

# Get emotion-appropriate formula
python .claude/skills/design-system/scripts/search-slides.py "urgency cta" -d copy
python ../design-system/scripts/search-slides.py "urgency cta" -d copy
```

## Quick Reference
Expand Down
4 changes: 2 additions & 2 deletions .claude/skills/slides/references/layout-patterns.md
Original file line number Diff line number Diff line change
Expand Up @@ -113,10 +113,10 @@

```bash
# Find layout for specific use
python .claude/skills/design-system/scripts/search-slides.py "metrics dashboard" -d layout
python ../design-system/scripts/search-slides.py "metrics dashboard" -d layout

# Contextual recommendation
python .claude/skills/design-system/scripts/search-slides.py "traction slide" \
python ../design-system/scripts/search-slides.py "traction slide" \
--context --position 4 --total 10
```

Expand Down
4 changes: 2 additions & 2 deletions .claude/skills/slides/references/slide-strategies.md
Original file line number Diff line number Diff line change
Expand Up @@ -76,10 +76,10 @@ Pattern breaks at 1/3 and 2/3 positions create engagement peaks.

```bash
# Find strategy by goal
python .claude/skills/design-system/scripts/search-slides.py "investor pitch" -d strategy
python ../design-system/scripts/search-slides.py "investor pitch" -d strategy

# Get emotion arc
python .claude/skills/design-system/scripts/search-slides.py "series a funding" -d strategy --json
python ../design-system/scripts/search-slides.py "series a funding" -d strategy --json
```

## Matching Strategy to Context
Expand Down
4 changes: 4 additions & 0 deletions .claude/skills/ui-styling/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -53,6 +53,10 @@ Use when:
- Minimal text, maximum visual impact
- Systematic patterns and refined aesthetics

## Script Paths

Script paths in this skill and its `references/` are relative to the directory that contains this SKILL.md, not to the project: `scripts/<file>` is this skill's own `scripts/` folder, and `../<skill>/scripts/<file>` is a sibling sub-skill installed alongside it. Build the full path from that directory (Claude Code reports it as the skill's base directory when the skill loads) and keep the working directory at the project root — the scripts read and write project files such as `docs/brand-guidelines.md`, `assets/design-tokens.json` or `src/` relative to it.

## Quick Start

### Component + Styling Setup
Expand Down
Loading
Loading