2 Commits

Author SHA1 Message Date
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
16 changed files with 111 additions and 83 deletions

View File

@@ -311,7 +311,7 @@ winget install Python.Python.3.12
### 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
The skill activates automatically when you request UI/UX work. Just chat naturally:
@@ -323,7 +323,7 @@ Build a landing page for my SaaS product
### 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:
@@ -427,6 +427,58 @@ If not, use the Master rules exclusively.
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/`, 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
# 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 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

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

View File

@@ -1,18 +1,18 @@
{
"platform": "cursor",
"displayName": "Cursor",
"installType": "reference",
"installType": "full",
"folderStructure": {
"root": ".cursor",
"skillPath": "commands",
"filename": "ui-ux-pro-max.md"
"skillPath": "skills/ui-ux-pro-max",
"filename": "SKILL.md"
},
"scriptPath": ".shared/ui-ux-pro-max/scripts/search.py",
"scriptPath": "skills/ui-ux-pro-max/scripts/search.py",
"frontmatter": null,
"sections": {
"quickReference": false
},
"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.",
"skillOrWorkflow": "Workflow"
"skillOrWorkflow": "Skill"
}

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@@ -69,23 +69,23 @@ export function getAITypeDescription(aiType: AIType): string {
case 'claude':
return 'Claude Code (.claude/skills/)';
case 'cursor':
return 'Cursor (.cursor/commands/ + .shared/)';
return 'Cursor (.cursor/skills/)';
case 'windsurf':
return 'Windsurf (.windsurf/skills/ + .shared/)';
return 'Windsurf (.windsurf/skills/)';
case 'antigravity':
return 'Antigravity (.agent/skills/)';
case 'copilot':
return 'GitHub Copilot (.github/prompts/ + .shared/)';
return 'GitHub Copilot (.github/prompts/)';
case 'kiro':
return 'Kiro (.kiro/steering/ + .shared/)';
return 'Kiro (.kiro/steering/)';
case 'codex':
return 'Codex (.codex/skills/)';
case 'roocode':
return 'RooCode (.roo/commands/ + .shared/)';
return 'RooCode (.roo/skills/)';
case 'qoder':
return 'Qoder (.qoder/rules/ + .shared/)';
return 'Qoder (.qoder/skills/)';
case 'gemini':
return 'Gemini CLI (.gemini/skills/ + .shared/)';
return 'Gemini CLI (.gemini/skills/)';
case 'trae':
return 'Trae (.trae/skills/)';
case 'opencode':

View File

@@ -164,24 +164,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
* All platforms use self-contained installation with data and scripts
*/
export async function generatePlatformFiles(
targetDir: string,
@@ -206,17 +191,8 @@ export async function generatePlatformFiles(
await writeFile(skillFilePath, skillContent, 'utf-8');
createdFolders.push(config.folderStructure.root);
// Handle data/scripts based on install type
if (config.installType === 'full') {
// 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');
}
}
// Copy data and scripts into the skill directory (self-contained)
await copyDataAndScripts(skillDir);
return createdFolders;
}

View File

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

View File

@@ -1,18 +1,18 @@
{
"platform": "cursor",
"displayName": "Cursor",
"installType": "reference",
"installType": "full",
"folderStructure": {
"root": ".cursor",
"skillPath": "commands",
"filename": "ui-ux-pro-max.md"
"skillPath": "skills/ui-ux-pro-max",
"filename": "SKILL.md"
},
"scriptPath": ".shared/ui-ux-pro-max/scripts/search.py",
"scriptPath": "skills/ui-ux-pro-max/scripts/search.py",
"frontmatter": null,
"sections": {
"quickReference": false
},
"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.",
"skillOrWorkflow": "Workflow"
"skillOrWorkflow": "Skill"
}

View File

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

View File

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

View File

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

View File

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