15 Commits
v2.2.1 ... main

Author SHA1 Message Date
Goon
6623f12b40 Update project references in README.md 2026-02-12 23:11:33 +07:00
Goon
0b80349f8c Merge pull request #153 from sappan/feat/add-droid-support
docs(readme): add Droid (Factory) to documentation
2026-02-12 23:08:16 +07:00
sappan
1f10c78ca2 docs(readme): add Droid (Factory) to documentation
Add Droid (Factory) references to CLAUDE.md and README.md to match the code changes from dd12a70 (feat: add Droid (Factory) support).

CLAUDE.md:
- Add .factory/skills/ui-ux-pro-max/ to architecture diagram
- Add .factory/ to symlinks description in Sync Rules

README.md:
- Add 'uipro init --ai droid' to CLI installation commands
- Add Droid (Factory) to Skill Mode supported platforms list
- Add .factory/skills/ path note for design system commands
- Add .factory/ to platform-specific files list in Architecture section
- Add .factory/ to contributor structure overview
2026-02-10 11:49:14 +08:00
Goon
875d216631 Merge pull request #151 from nextlevelbuilder/goon
docs(readme): improve title formatting and add product attribution
2026-02-07 17:15:19 +07:00
Duy Nguyen
c2e0510759 docs(readme): improve title formatting and add product attribution 2026-02-07 17:10:43 +07:00
Goon
b793f66f7a Merge pull request #150 from nextlevelbuilder/goon
feat: add Droid (Factory) platform support
2026-02-07 17:07:03 +07:00
sappan
dd12a70253 feat: add Droid (Factory) support
Add support for Factory's Droid AI assistant, allowing users to install
the skill via 'uipro init --ai droid' to .factory/skills/ directory.

Changes:
- Add droid.json platform config (src and cli/assets)
- Add 'droid' to AIType and AI_TYPES array
- Add .factory directory detection
- Add droid to AI_TO_PLATFORM mapping

Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
2026-02-07 17:02:29 +07:00
Duy Nguyen
c9807b0c9c docs(readme): add new domain 2026-02-07 17:02:11 +07:00
Goon
fc8a251476 Merge pull request #144 from sappan/feat/add-droid-support
feat: add Droid (Factory) support
2026-02-07 15:48:55 +07:00
sappan
2127b8b9b0 feat: add Droid (Factory) support
Add support for Factory's Droid AI assistant, allowing users to install
the skill via 'uipro init --ai droid' to .factory/skills/ directory.

Changes:
- Add droid.json platform config (src and cli/assets)
- Add 'droid' to AIType and AI_TYPES array
- Add .factory directory detection
- Add droid to AI_TO_PLATFORM mapping

Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
2026-02-03 11:54:43 +08:00
Viet Tran
2ba6ca2f1e Merge pull request #139 from nextlevelbuilder/fix/windows-unicode
fix: Windows Unicode encoding error for emoji characters
2026-01-29 21:25:47 +07:00
Viet Tran
402c49a283 fix: Windows Unicode encoding error for emoji characters
Force UTF-8 encoding for stdout/stderr in search.py to handle
emoji characters (, ✓) on Windows systems that default to cp1252.

Fixes UnicodeEncodeError: 'charmap' codec can't encode character

- Bump CLI version to 2.2.3

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-29 21:25:32 +07:00
Viet Tran
ef2d655e03 Merge pull request #138 from nextlevelbuilder/fix/self-contained-install
fix: self-contained installation for all platforms
2026-01-29 21:23:57 +07:00
Viet Tran
28fb9373bd fix: self-contained installation for all platforms
- Remove .shared folder dependency - all platforms now self-contained
- Each platform installation includes its own data/ and scripts/
- Update platform configs: reference → full install type
- Simplify template.ts: remove ensureSharedExists logic
- Update Cursor to Skill Mode (auto-activate)
- Update README to reflect Cursor in Skill Mode
- Bump CLI version to 2.2.2

Fixes issue where users couldn't find search.py in shared folder.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-29 21:23:33 +07:00
Viet Tran
3eb7d99d67 docs: add Architecture & Contributing section to README (#131)
Explain:
- Restructured codebase uses template-based generation
- Users should always use CLI to install
- Contributors: clone repo, make changes in src/, sync to CLI, test locally

Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-26 08:55:52 +07:00
22 changed files with 192 additions and 89 deletions

View File

@@ -52,6 +52,7 @@ cli/ # CLI installer (uipro-cli on npm)
└── templates/ # Copy of src/ui-ux-pro-max/templates/ └── templates/ # Copy of src/ui-ux-pro-max/templates/
.claude/skills/ui-ux-pro-max/ # Claude Code skill (symlinks to src/) .claude/skills/ui-ux-pro-max/ # Claude Code skill (symlinks to src/)
.factory/skills/ui-ux-pro-max/ # Droid (Factory) skill (symlinks to src/)
.shared/ui-ux-pro-max/ # Symlink to src/ui-ux-pro-max/ .shared/ui-ux-pro-max/ # Symlink to src/ui-ux-pro-max/
.claude-plugin/ # Claude Marketplace publishing .claude-plugin/ # Claude Marketplace publishing
``` ```
@@ -67,7 +68,7 @@ When modifying files:
1. **Data & Scripts** - Edit in `src/ui-ux-pro-max/`: 1. **Data & Scripts** - Edit in `src/ui-ux-pro-max/`:
- `data/*.csv` and `data/stacks/*.csv` - `data/*.csv` and `data/stacks/*.csv`
- `scripts/*.py` - `scripts/*.py`
- Changes automatically available via symlinks in `.claude/`, `.shared/` - Changes automatically available via symlinks in `.claude/`, `.factory/`, `.shared/`
2. **Templates** - Edit in `src/ui-ux-pro-max/templates/`: 2. **Templates** - Edit in `src/ui-ux-pro-max/templates/`:
- `base/skill-content.md` - Common SKILL.md content - `base/skill-content.md` - Common SKILL.md content

View File

@@ -1,4 +1,4 @@
# UI UX Pro Max # [UI UX Pro Max](https://uupm.cc)
<p align="center"> <p align="center">
<a href="https://github.com/nextlevelbuilder/ui-ux-pro-max-skill/releases"><img src="https://img.shields.io/github/v/release/nextlevelbuilder/ui-ux-pro-max-skill?style=for-the-badge&color=blue" alt="GitHub Release"></a> <a href="https://github.com/nextlevelbuilder/ui-ux-pro-max-skill/releases"><img src="https://img.shields.io/github/v/release/nextlevelbuilder/ui-ux-pro-max-skill?style=for-the-badge&color=blue" alt="GitHub Release"></a>
@@ -18,7 +18,9 @@
An AI skill that provides design intelligence for building professional UI/UX across multiple platforms and frameworks. An AI skill that provides design intelligence for building professional UI/UX across multiple platforms and frameworks.
<p align="center"> <p align="center">
<img src="screenshots/website.png" alt="UI UX Pro Max" width="800"> <a href="https://uupm.cc">
<img src="screenshots/website.png" alt="UI UX Pro Max" width="800">
</a>
</p> </p>
<p align="center"> <p align="center">
@@ -26,6 +28,11 @@ An AI skill that provides design intelligence for building professional UI/UX ac
<a href="https://paypal.me/uiuxpromax"><img src="https://img.shields.io/badge/PayPal-Donate-00457C?style=for-the-badge&logo=paypal&logoColor=white" alt="PayPal Donate"></a> <a href="https://paypal.me/uiuxpromax"><img src="https://img.shields.io/badge/PayPal-Donate-00457C?style=for-the-badge&logo=paypal&logoColor=white" alt="PayPal Donate"></a>
</p> </p>
<p align="center">
<i>Other projects</i><br>
<a href="https://nextlevelbuilder.io">Next Level Builder</a> | <a href="https://claudekit.cc">ClaudeKit</a>
</p>
## What's New in v2.0 ## What's New in v2.0
### Intelligent Design System Generation ### Intelligent Design System Generation
@@ -278,6 +285,7 @@ uipro init --ai trae # Trae
uipro init --ai opencode # OpenCode uipro init --ai opencode # OpenCode
uipro init --ai continue # Continue uipro init --ai continue # Continue
uipro init --ai codebuddy # CodeBuddy uipro init --ai codebuddy # CodeBuddy
uipro init --ai droid # Droid (Factory)
uipro init --ai all # All assistants uipro init --ai all # All assistants
``` ```
@@ -311,7 +319,7 @@ winget install Python.Python.3.12
### Skill Mode (Auto-activate) ### Skill Mode (Auto-activate)
**Supported:** Claude Code, Windsurf, Antigravity, Codex CLI, Continue, Gemini CLI, OpenCode, Qoder, CodeBuddy **Supported:** Claude Code, Cursor, Windsurf, Antigravity, Codex CLI, Continue, Gemini CLI, OpenCode, Qoder, CodeBuddy, Droid (Factory)
The skill activates automatically when you request UI/UX work. Just chat naturally: The skill activates automatically when you request UI/UX work. Just chat naturally:
@@ -323,7 +331,7 @@ Build a landing page for my SaaS product
### Workflow Mode (Slash Command) ### Workflow Mode (Slash Command)
**Supported:** Cursor, Kiro, GitHub Copilot, Roo Code **Supported:** Kiro, GitHub Copilot, Roo Code
Use the slash command to invoke the skill: Use the slash command to invoke the skill:
@@ -373,7 +381,7 @@ Just mention your preferred stack in the prompt, or let it default to HTML + Tai
For direct access to the design system generator: For direct access to the design system generator:
> Note: If you installed via Continue, replace `.claude/skills/` with `.continue/skills/` in the commands below. > Note: If you installed via Continue, replace `.claude/skills/` with `.continue/skills/` in the commands below. For Droid (Factory), use `.factory/skills/`.
```bash ```bash
# Generate design system with ASCII output # Generate design system with ASCII output
@@ -427,6 +435,59 @@ If not, use the Master rules exclusively.
Now, generate the code... Now, generate the code...
``` ```
## Architecture & Contributing
### For Users
The codebase has been restructured to use a **template-based generation system**. All platform-specific files (`.cursor/`, `.windsurf/`, `.kiro/`, `.factory/`, etc.) are now generated dynamically by the CLI.
**Always use the CLI to install:**
```bash
npm install -g uipro-cli
uipro init --ai <platform>
```
This ensures you get the latest templates and correct file structure for your AI assistant.
### For Contributors
If you want to contribute to this project:
```bash
# 1. Clone the repository
git clone https://github.com/nextlevelbuilder/ui-ux-pro-max-skill.git
cd ui-ux-pro-max-skill
# 2. Understand the structure
src/ui-ux-pro-max/ # Source of truth (data, scripts, templates)
cli/ # CLI installer (generates files from templates)
.claude/ # Local dev/test for Claude Code skill
.factory/ # Local dev/test for Droid (Factory) skill
# 3. Make changes in src/ui-ux-pro-max/
# - data/*.csv → Database files
# - scripts/*.py → Search engine & design system
# - templates/ → Platform-specific templates
# 4. Sync to CLI and test locally
cp -r src/ui-ux-pro-max/data/* cli/assets/data/
cp -r src/ui-ux-pro-max/scripts/* cli/assets/scripts/
cp -r src/ui-ux-pro-max/templates/* cli/assets/templates/
# 5. Build and test CLI
cd cli && bun run build
node dist/index.js init --ai claude --offline # Test in a temp folder
# 6. Create PR (never push directly to main)
git checkout -b feat/your-feature
git commit -m "feat: description"
git push -u origin feat/your-feature
gh pr create
```
See [CLAUDE.md](CLAUDE.md) for detailed development guidelines.
## Star History ## Star History
[![Star History Chart](https://api.star-history.com/svg?repos=nextlevelbuilder/ui-ux-pro-max-skill&type=Date)](https://star-history.com/#nextlevelbuilder/ui-ux-pro-max-skill&Date) [![Star History Chart](https://api.star-history.com/svg?repos=nextlevelbuilder/ui-ux-pro-max-skill&type=Date)](https://star-history.com/#nextlevelbuilder/ui-ux-pro-max-skill&Date)

View File

@@ -15,9 +15,17 @@ Persistence (Master + Overrides pattern):
""" """
import argparse import argparse
import sys
import io
from core import CSV_CONFIG, AVAILABLE_STACKS, MAX_RESULTS, search, search_stack from core import CSV_CONFIG, AVAILABLE_STACKS, MAX_RESULTS, search, search_stack
from design_system import generate_design_system, persist_design_system from design_system import generate_design_system, persist_design_system
# Force UTF-8 for stdout/stderr to handle emojis on Windows (cp1252 default)
if sys.stdout.encoding and sys.stdout.encoding.lower() != 'utf-8':
sys.stdout = io.TextIOWrapper(sys.stdout.buffer, encoding='utf-8')
if sys.stderr.encoding and sys.stderr.encoding.lower() != 'utf-8':
sys.stderr = io.TextIOWrapper(sys.stderr.buffer, encoding='utf-8')
def format_output(result): def format_output(result):
"""Format results for Claude consumption (token-optimized)""" """Format results for Claude consumption (token-optimized)"""

View File

@@ -1,13 +1,13 @@
{ {
"platform": "copilot", "platform": "copilot",
"displayName": "GitHub Copilot", "displayName": "GitHub Copilot",
"installType": "reference", "installType": "full",
"folderStructure": { "folderStructure": {
"root": ".github", "root": ".github",
"skillPath": "prompts", "skillPath": "prompts/ui-ux-pro-max",
"filename": "ui-ux-pro-max.prompt.md" "filename": "PROMPT.md"
}, },
"scriptPath": ".shared/ui-ux-pro-max/scripts/search.py", "scriptPath": "prompts/ui-ux-pro-max/scripts/search.py",
"frontmatter": null, "frontmatter": null,
"sections": { "sections": {
"quickReference": false "quickReference": false

View File

@@ -1,18 +1,18 @@
{ {
"platform": "cursor", "platform": "cursor",
"displayName": "Cursor", "displayName": "Cursor",
"installType": "reference", "installType": "full",
"folderStructure": { "folderStructure": {
"root": ".cursor", "root": ".cursor",
"skillPath": "commands", "skillPath": "skills/ui-ux-pro-max",
"filename": "ui-ux-pro-max.md" "filename": "SKILL.md"
}, },
"scriptPath": ".shared/ui-ux-pro-max/scripts/search.py", "scriptPath": "skills/ui-ux-pro-max/scripts/search.py",
"frontmatter": null, "frontmatter": null,
"sections": { "sections": {
"quickReference": false "quickReference": false
}, },
"title": "ui-ux-pro-max", "title": "ui-ux-pro-max",
"description": "Comprehensive design guide for web and mobile applications. Contains 67 styles, 96 color palettes, 57 font pairings, 99 UX guidelines, and 25 chart types across 13 technology stacks. Searchable database with priority-based recommendations.", "description": "Comprehensive design guide for web and mobile applications. Contains 67 styles, 96 color palettes, 57 font pairings, 99 UX guidelines, and 25 chart types across 13 technology stacks. Searchable database with priority-based recommendations.",
"skillOrWorkflow": "Workflow" "skillOrWorkflow": "Skill"
} }

View File

@@ -0,0 +1,21 @@
{
"platform": "droid",
"displayName": "Droid (Factory)",
"installType": "full",
"folderStructure": {
"root": ".factory",
"skillPath": "skills/ui-ux-pro-max",
"filename": "SKILL.md"
},
"scriptPath": "skills/ui-ux-pro-max/scripts/search.py",
"frontmatter": {
"name": "ui-ux-pro-max",
"description": "UI/UX design intelligence. 67 styles, 96 palettes, 57 font pairings, 25 charts, 13 stacks (React, Next.js, Vue, Svelte, SwiftUI, React Native, Flutter, Tailwind, shadcn/ui). Actions: plan, build, create, design, implement, review, fix, improve, optimize, enhance, refactor, check UI/UX code. Projects: website, landing page, dashboard, admin panel, e-commerce, SaaS, portfolio, blog, mobile app, .html, .tsx, .vue, .svelte. Elements: button, modal, navbar, sidebar, card, table, form, chart. Styles: glassmorphism, claymorphism, minimalism, brutalism, neumorphism, bento grid, dark mode, responsive, skeuomorphism, flat design. Topics: color palette, accessibility, animation, layout, typography, font pairing, spacing, hover, shadow, gradient."
},
"sections": {
"quickReference": false
},
"title": "UI/UX Pro Max - Design Intelligence",
"description": "Comprehensive design guide for web and mobile applications. Contains 67 styles, 96 color palettes, 57 font pairings, 99 UX guidelines, and 25 chart types across 13 technology stacks. Searchable database with priority-based recommendations.",
"skillOrWorkflow": "Skill"
}

View File

@@ -1,13 +1,13 @@
{ {
"platform": "kiro", "platform": "kiro",
"displayName": "Kiro", "displayName": "Kiro",
"installType": "reference", "installType": "full",
"folderStructure": { "folderStructure": {
"root": ".kiro", "root": ".kiro",
"skillPath": "steering", "skillPath": "steering/ui-ux-pro-max",
"filename": "ui-ux-pro-max.md" "filename": "SKILL.md"
}, },
"scriptPath": ".shared/ui-ux-pro-max/scripts/search.py", "scriptPath": "steering/ui-ux-pro-max/scripts/search.py",
"frontmatter": null, "frontmatter": null,
"sections": { "sections": {
"quickReference": false "quickReference": false

View File

@@ -1,13 +1,13 @@
{ {
"platform": "qoder", "platform": "qoder",
"displayName": "Qoder", "displayName": "Qoder",
"installType": "reference", "installType": "full",
"folderStructure": { "folderStructure": {
"root": ".qoder", "root": ".qoder",
"skillPath": "skills/ui-ux-pro-max", "skillPath": "skills/ui-ux-pro-max",
"filename": "SKILL.md" "filename": "SKILL.md"
}, },
"scriptPath": ".shared/ui-ux-pro-max/scripts/search.py", "scriptPath": "skills/ui-ux-pro-max/scripts/search.py",
"frontmatter": { "frontmatter": {
"name": "ui-ux-pro-max", "name": "ui-ux-pro-max",
"description": "UI/UX design intelligence with searchable database" "description": "UI/UX design intelligence with searchable database"

View File

@@ -1,13 +1,13 @@
{ {
"platform": "roocode", "platform": "roocode",
"displayName": "Roo Code", "displayName": "Roo Code",
"installType": "reference", "installType": "full",
"folderStructure": { "folderStructure": {
"root": ".roo", "root": ".roo",
"skillPath": "commands", "skillPath": "skills/ui-ux-pro-max",
"filename": "ui-ux-pro-max.md" "filename": "SKILL.md"
}, },
"scriptPath": ".shared/ui-ux-pro-max/scripts/search.py", "scriptPath": "skills/ui-ux-pro-max/scripts/search.py",
"frontmatter": null, "frontmatter": null,
"sections": { "sections": {
"quickReference": false "quickReference": false

View File

@@ -1,13 +1,13 @@
{ {
"platform": "windsurf", "platform": "windsurf",
"displayName": "Windsurf", "displayName": "Windsurf",
"installType": "reference", "installType": "full",
"folderStructure": { "folderStructure": {
"root": ".windsurf", "root": ".windsurf",
"skillPath": "skills", "skillPath": "skills/ui-ux-pro-max",
"filename": "ui-ux-pro-max.md" "filename": "SKILL.md"
}, },
"scriptPath": ".shared/ui-ux-pro-max/scripts/search.py", "scriptPath": "skills/ui-ux-pro-max/scripts/search.py",
"frontmatter": null, "frontmatter": null,
"sections": { "sections": {
"quickReference": false "quickReference": false

View File

@@ -1,6 +1,6 @@
{ {
"name": "uipro-cli", "name": "uipro-cli",
"version": "2.2.1", "version": "2.2.3",
"description": "CLI to install UI/UX Pro Max skill for AI coding assistants", "description": "CLI to install UI/UX Pro Max skill for AI coding assistants",
"type": "module", "type": "module",
"bin": { "bin": {

View File

@@ -1,4 +1,4 @@
export type AIType = 'claude' | 'cursor' | 'windsurf' | 'antigravity' | 'copilot' | 'kiro' | 'roocode' | 'codex' | 'qoder' | 'gemini' | 'trae' | 'opencode' | 'continue' | 'codebuddy' | 'all'; export type AIType = 'claude' | 'cursor' | 'windsurf' | 'antigravity' | 'copilot' | 'kiro' | 'roocode' | 'codex' | 'qoder' | 'gemini' | 'trae' | 'opencode' | 'continue' | 'codebuddy' | 'droid' | 'all';
export type InstallType = 'full' | 'reference'; export type InstallType = 'full' | 'reference';
@@ -41,7 +41,7 @@ export interface PlatformConfig {
skillOrWorkflow: string; skillOrWorkflow: string;
} }
export const AI_TYPES: AIType[] = ['claude', 'cursor', 'windsurf', 'antigravity', 'copilot', 'roocode', 'kiro', 'codex', 'qoder', 'gemini', 'trae', 'opencode', 'continue', 'codebuddy', 'all']; export const AI_TYPES: AIType[] = ['claude', 'cursor', 'windsurf', 'antigravity', 'copilot', 'roocode', 'kiro', 'codex', 'qoder', 'gemini', 'trae', 'opencode', 'continue', 'codebuddy', 'droid', 'all'];
// Legacy folder mapping for backward compatibility with ZIP-based installs // Legacy folder mapping for backward compatibility with ZIP-based installs
export const AI_FOLDERS: Record<Exclude<AIType, 'all'>, string[]> = { export const AI_FOLDERS: Record<Exclude<AIType, 'all'>, string[]> = {
@@ -59,4 +59,5 @@ export const AI_FOLDERS: Record<Exclude<AIType, 'all'>, string[]> = {
opencode: ['.opencode', '.shared'], opencode: ['.opencode', '.shared'],
continue: ['.continue'], continue: ['.continue'],
codebuddy: ['.codebuddy'], codebuddy: ['.codebuddy'],
droid: ['.factory'],
}; };

View File

@@ -52,6 +52,9 @@ export function detectAIType(cwd: string = process.cwd()): DetectionResult {
if (existsSync(join(cwd, '.codebuddy'))) { if (existsSync(join(cwd, '.codebuddy'))) {
detected.push('codebuddy'); detected.push('codebuddy');
} }
if (existsSync(join(cwd, '.factory'))) {
detected.push('droid');
}
// Suggest based on what's detected // Suggest based on what's detected
let suggested: AIType | null = null; let suggested: AIType | null = null;
@@ -69,23 +72,23 @@ export function getAITypeDescription(aiType: AIType): string {
case 'claude': case 'claude':
return 'Claude Code (.claude/skills/)'; return 'Claude Code (.claude/skills/)';
case 'cursor': case 'cursor':
return 'Cursor (.cursor/commands/ + .shared/)'; return 'Cursor (.cursor/skills/)';
case 'windsurf': case 'windsurf':
return 'Windsurf (.windsurf/skills/ + .shared/)'; return 'Windsurf (.windsurf/skills/)';
case 'antigravity': case 'antigravity':
return 'Antigravity (.agent/skills/)'; return 'Antigravity (.agent/skills/)';
case 'copilot': case 'copilot':
return 'GitHub Copilot (.github/prompts/ + .shared/)'; return 'GitHub Copilot (.github/prompts/)';
case 'kiro': case 'kiro':
return 'Kiro (.kiro/steering/ + .shared/)'; return 'Kiro (.kiro/steering/)';
case 'codex': case 'codex':
return 'Codex (.codex/skills/)'; return 'Codex (.codex/skills/)';
case 'roocode': case 'roocode':
return 'RooCode (.roo/commands/ + .shared/)'; return 'RooCode (.roo/skills/)';
case 'qoder': case 'qoder':
return 'Qoder (.qoder/rules/ + .shared/)'; return 'Qoder (.qoder/skills/)';
case 'gemini': case 'gemini':
return 'Gemini CLI (.gemini/skills/ + .shared/)'; return 'Gemini CLI (.gemini/skills/)';
case 'trae': case 'trae':
return 'Trae (.trae/skills/)'; return 'Trae (.trae/skills/)';
case 'opencode': case 'opencode':
@@ -94,6 +97,8 @@ export function getAITypeDescription(aiType: AIType): string {
return 'Continue (.continue/skills/)'; return 'Continue (.continue/skills/)';
case 'codebuddy': case 'codebuddy':
return 'CodeBuddy (.codebuddy/skills/)'; return 'CodeBuddy (.codebuddy/skills/)';
case 'droid':
return 'Droid (Factory) (.factory/skills/)';
case 'all': case 'all':
return 'All AI assistants'; return 'All AI assistants';
} }

View File

@@ -41,6 +41,7 @@ const AI_TO_PLATFORM: Record<string, string> = {
trae: 'trae', trae: 'trae',
continue: 'continue', continue: 'continue',
codebuddy: 'codebuddy', codebuddy: 'codebuddy',
droid: 'droid',
}; };
async function exists(path: string): Promise<boolean> { async function exists(path: string): Promise<boolean> {
@@ -164,24 +165,9 @@ async function copyDataAndScripts(targetSkillDir: string): Promise<void> {
} }
} }
/**
* Ensure .shared folder exists with data and scripts
*/
async function ensureSharedExists(targetDir: string): Promise<boolean> {
const sharedDir = join(targetDir, '.shared', 'ui-ux-pro-max');
// Check if already exists
if (await exists(sharedDir)) {
return false; // Already exists, didn't create
}
await mkdir(sharedDir, { recursive: true });
await copyDataAndScripts(sharedDir);
return true; // Created new
}
/** /**
* Generate platform files for a specific AI type * Generate platform files for a specific AI type
* All platforms use self-contained installation with data and scripts
*/ */
export async function generatePlatformFiles( export async function generatePlatformFiles(
targetDir: string, targetDir: string,
@@ -206,17 +192,8 @@ export async function generatePlatformFiles(
await writeFile(skillFilePath, skillContent, 'utf-8'); await writeFile(skillFilePath, skillContent, 'utf-8');
createdFolders.push(config.folderStructure.root); createdFolders.push(config.folderStructure.root);
// Handle data/scripts based on install type // Copy data and scripts into the skill directory (self-contained)
if (config.installType === 'full') { await copyDataAndScripts(skillDir);
// Full install: copy data and scripts into the skill directory
await copyDataAndScripts(skillDir);
} else {
// Reference install: ensure .shared exists
const createdShared = await ensureSharedExists(targetDir);
if (createdShared) {
createdFolders.push('.shared');
}
}
return createdFolders; return createdFolders;
} }

View File

@@ -15,9 +15,17 @@ Persistence (Master + Overrides pattern):
""" """
import argparse import argparse
import sys
import io
from core import CSV_CONFIG, AVAILABLE_STACKS, MAX_RESULTS, search, search_stack from core import CSV_CONFIG, AVAILABLE_STACKS, MAX_RESULTS, search, search_stack
from design_system import generate_design_system, persist_design_system from design_system import generate_design_system, persist_design_system
# Force UTF-8 for stdout/stderr to handle emojis on Windows (cp1252 default)
if sys.stdout.encoding and sys.stdout.encoding.lower() != 'utf-8':
sys.stdout = io.TextIOWrapper(sys.stdout.buffer, encoding='utf-8')
if sys.stderr.encoding and sys.stderr.encoding.lower() != 'utf-8':
sys.stderr = io.TextIOWrapper(sys.stderr.buffer, encoding='utf-8')
def format_output(result): def format_output(result):
"""Format results for Claude consumption (token-optimized)""" """Format results for Claude consumption (token-optimized)"""

View File

@@ -1,13 +1,13 @@
{ {
"platform": "copilot", "platform": "copilot",
"displayName": "GitHub Copilot", "displayName": "GitHub Copilot",
"installType": "reference", "installType": "full",
"folderStructure": { "folderStructure": {
"root": ".github", "root": ".github",
"skillPath": "prompts", "skillPath": "prompts/ui-ux-pro-max",
"filename": "ui-ux-pro-max.prompt.md" "filename": "PROMPT.md"
}, },
"scriptPath": ".shared/ui-ux-pro-max/scripts/search.py", "scriptPath": "prompts/ui-ux-pro-max/scripts/search.py",
"frontmatter": null, "frontmatter": null,
"sections": { "sections": {
"quickReference": false "quickReference": false

View File

@@ -1,18 +1,18 @@
{ {
"platform": "cursor", "platform": "cursor",
"displayName": "Cursor", "displayName": "Cursor",
"installType": "reference", "installType": "full",
"folderStructure": { "folderStructure": {
"root": ".cursor", "root": ".cursor",
"skillPath": "commands", "skillPath": "skills/ui-ux-pro-max",
"filename": "ui-ux-pro-max.md" "filename": "SKILL.md"
}, },
"scriptPath": ".shared/ui-ux-pro-max/scripts/search.py", "scriptPath": "skills/ui-ux-pro-max/scripts/search.py",
"frontmatter": null, "frontmatter": null,
"sections": { "sections": {
"quickReference": false "quickReference": false
}, },
"title": "ui-ux-pro-max", "title": "ui-ux-pro-max",
"description": "Comprehensive design guide for web and mobile applications. Contains 67 styles, 96 color palettes, 57 font pairings, 99 UX guidelines, and 25 chart types across 13 technology stacks. Searchable database with priority-based recommendations.", "description": "Comprehensive design guide for web and mobile applications. Contains 67 styles, 96 color palettes, 57 font pairings, 99 UX guidelines, and 25 chart types across 13 technology stacks. Searchable database with priority-based recommendations.",
"skillOrWorkflow": "Workflow" "skillOrWorkflow": "Skill"
} }

View File

@@ -0,0 +1,21 @@
{
"platform": "droid",
"displayName": "Droid (Factory)",
"installType": "full",
"folderStructure": {
"root": ".factory",
"skillPath": "skills/ui-ux-pro-max",
"filename": "SKILL.md"
},
"scriptPath": "skills/ui-ux-pro-max/scripts/search.py",
"frontmatter": {
"name": "ui-ux-pro-max",
"description": "UI/UX design intelligence. 67 styles, 96 palettes, 57 font pairings, 25 charts, 13 stacks (React, Next.js, Vue, Svelte, SwiftUI, React Native, Flutter, Tailwind, shadcn/ui). Actions: plan, build, create, design, implement, review, fix, improve, optimize, enhance, refactor, check UI/UX code. Projects: website, landing page, dashboard, admin panel, e-commerce, SaaS, portfolio, blog, mobile app, .html, .tsx, .vue, .svelte. Elements: button, modal, navbar, sidebar, card, table, form, chart. Styles: glassmorphism, claymorphism, minimalism, brutalism, neumorphism, bento grid, dark mode, responsive, skeuomorphism, flat design. Topics: color palette, accessibility, animation, layout, typography, font pairing, spacing, hover, shadow, gradient."
},
"sections": {
"quickReference": false
},
"title": "UI/UX Pro Max - Design Intelligence",
"description": "Comprehensive design guide for web and mobile applications. Contains 67 styles, 96 color palettes, 57 font pairings, 99 UX guidelines, and 25 chart types across 13 technology stacks. Searchable database with priority-based recommendations.",
"skillOrWorkflow": "Skill"
}

View File

@@ -1,13 +1,13 @@
{ {
"platform": "kiro", "platform": "kiro",
"displayName": "Kiro", "displayName": "Kiro",
"installType": "reference", "installType": "full",
"folderStructure": { "folderStructure": {
"root": ".kiro", "root": ".kiro",
"skillPath": "steering", "skillPath": "steering/ui-ux-pro-max",
"filename": "ui-ux-pro-max.md" "filename": "SKILL.md"
}, },
"scriptPath": ".shared/ui-ux-pro-max/scripts/search.py", "scriptPath": "steering/ui-ux-pro-max/scripts/search.py",
"frontmatter": null, "frontmatter": null,
"sections": { "sections": {
"quickReference": false "quickReference": false

View File

@@ -1,13 +1,13 @@
{ {
"platform": "qoder", "platform": "qoder",
"displayName": "Qoder", "displayName": "Qoder",
"installType": "reference", "installType": "full",
"folderStructure": { "folderStructure": {
"root": ".qoder", "root": ".qoder",
"skillPath": "skills/ui-ux-pro-max", "skillPath": "skills/ui-ux-pro-max",
"filename": "SKILL.md" "filename": "SKILL.md"
}, },
"scriptPath": ".shared/ui-ux-pro-max/scripts/search.py", "scriptPath": "skills/ui-ux-pro-max/scripts/search.py",
"frontmatter": { "frontmatter": {
"name": "ui-ux-pro-max", "name": "ui-ux-pro-max",
"description": "UI/UX design intelligence with searchable database" "description": "UI/UX design intelligence with searchable database"

View File

@@ -1,13 +1,13 @@
{ {
"platform": "roocode", "platform": "roocode",
"displayName": "Roo Code", "displayName": "Roo Code",
"installType": "reference", "installType": "full",
"folderStructure": { "folderStructure": {
"root": ".roo", "root": ".roo",
"skillPath": "commands", "skillPath": "skills/ui-ux-pro-max",
"filename": "ui-ux-pro-max.md" "filename": "SKILL.md"
}, },
"scriptPath": ".shared/ui-ux-pro-max/scripts/search.py", "scriptPath": "skills/ui-ux-pro-max/scripts/search.py",
"frontmatter": null, "frontmatter": null,
"sections": { "sections": {
"quickReference": false "quickReference": false

View File

@@ -1,13 +1,13 @@
{ {
"platform": "windsurf", "platform": "windsurf",
"displayName": "Windsurf", "displayName": "Windsurf",
"installType": "reference", "installType": "full",
"folderStructure": { "folderStructure": {
"root": ".windsurf", "root": ".windsurf",
"skillPath": "skills", "skillPath": "skills/ui-ux-pro-max",
"filename": "ui-ux-pro-max.md" "filename": "SKILL.md"
}, },
"scriptPath": ".shared/ui-ux-pro-max/scripts/search.py", "scriptPath": "skills/ui-ux-pro-max/scripts/search.py",
"frontmatter": null, "frontmatter": null,
"sections": { "sections": {
"quickReference": false "quickReference": false