Compare commits
15 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
6623f12b40 | ||
|
|
0b80349f8c | ||
|
|
1f10c78ca2 | ||
|
|
875d216631 | ||
|
|
c2e0510759 | ||
|
|
b793f66f7a | ||
|
|
dd12a70253 | ||
|
|
c9807b0c9c | ||
|
|
fc8a251476 | ||
|
|
2127b8b9b0 | ||
|
|
2ba6ca2f1e | ||
|
|
402c49a283 | ||
|
|
ef2d655e03 | ||
|
|
28fb9373bd | ||
|
|
3eb7d99d67 |
@@ -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
|
||||||
|
|||||||
69
README.md
69
README.md
@@ -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">
|
||||||
|
<a href="https://uupm.cc">
|
||||||
<img src="screenshots/website.png" alt="UI UX Pro Max" width="800">
|
<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
|
||||||
|
|
||||||
[](https://star-history.com/#nextlevelbuilder/ui-ux-pro-max-skill&Date)
|
[](https://star-history.com/#nextlevelbuilder/ui-ux-pro-max-skill&Date)
|
||||||
|
|||||||
@@ -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)"""
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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"
|
||||||
}
|
}
|
||||||
|
|||||||
21
cli/assets/templates/platforms/droid.json
Normal file
21
cli/assets/templates/platforms/droid.json
Normal 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"
|
||||||
|
}
|
||||||
@@ -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
|
||||||
|
|||||||
@@ -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"
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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": {
|
||||||
|
|||||||
@@ -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'],
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -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';
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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') {
|
|
||||||
// Full install: copy data and scripts into the skill directory
|
|
||||||
await copyDataAndScripts(skillDir);
|
await copyDataAndScripts(skillDir);
|
||||||
} else {
|
|
||||||
// Reference install: ensure .shared exists
|
|
||||||
const createdShared = await ensureSharedExists(targetDir);
|
|
||||||
if (createdShared) {
|
|
||||||
createdFolders.push('.shared');
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return createdFolders;
|
return createdFolders;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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)"""
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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"
|
||||||
}
|
}
|
||||||
|
|||||||
21
src/ui-ux-pro-max/templates/platforms/droid.json
Normal file
21
src/ui-ux-pro-max/templates/platforms/droid.json
Normal 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"
|
||||||
|
}
|
||||||
@@ -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
|
||||||
|
|||||||
@@ -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"
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
Reference in New Issue
Block a user