feat: add ZCode platform support (#504)
Add ZCode as a first-class install target so the skill can be installed with `uipro init --ai zcode` (workspace) or `uipro init --ai zcode --global` (~/.zcode/skills/), and removed via `uipro uninstall` auto-detection. - new platform config src/ui-ux-pro-max/templates/platforms/zcode.json (synced to cli/assets via sync:assets) - register 'zcode' in AIType union, AI_TYPES, AI_FOLDERS, AI_TO_PLATFORM - detect .zcode workspace directories and describe the platform in CLI prompts - cover zcode in the dry-run and template-script-paths e2e specs - document ZCode in README install/usage sections Co-authored-by: Dmso <22094486+dmsobtl@users.noreply.github.com>
This commit is contained in:
@@ -288,6 +288,7 @@ uipro init --ai kilocode # KiloCode
|
||||
uipro init --ai warp # Warp
|
||||
uipro init --ai augment # Augment
|
||||
uipro init --ai codewhale # CodeWhale
|
||||
uipro init --ai zcode # ZCode
|
||||
uipro init --ai universal # Universal / Agent Standard (.agents/skills/)
|
||||
uipro init --ai all # All assistants
|
||||
```
|
||||
@@ -299,6 +300,7 @@ The npm package is `ui-ux-pro-max-cli`; it still installs the `uipro` command. O
|
||||
```bash
|
||||
uipro init --ai claude --global # Install to ~/.claude/skills/
|
||||
uipro init --ai cursor --global # Install to ~/.cursor/skills/
|
||||
uipro init --ai zcode --global # Install to ~/.zcode/skills/
|
||||
uipro init --ai universal --global # Install to ~/.agents/skills/
|
||||
```
|
||||
|
||||
@@ -331,7 +333,7 @@ If it is missing, install it yourself from [python.org](https://www.python.org/d
|
||||
|
||||
### Skill Mode (Auto-activate)
|
||||
|
||||
**Supported:** Claude Code, Cursor, Windsurf, Antigravity, Codex CLI, Continue, Gemini CLI, OpenCode, Qoder, CodeBuddy, Droid (Factory), KiloCode, Warp, Augment, CodeWhale
|
||||
**Supported:** Claude Code, Cursor, Windsurf, Antigravity, Codex CLI, Continue, Gemini CLI, OpenCode, Qoder, CodeBuddy, Droid (Factory), KiloCode, Warp, Augment, CodeWhale, ZCode
|
||||
|
||||
The skill activates automatically when you request UI/UX work. Just chat naturally:
|
||||
|
||||
@@ -396,7 +398,7 @@ Just mention your preferred stack in the prompt, or let it default to HTML + Tai
|
||||
|
||||
For direct access to the design system generator:
|
||||
|
||||
> Note: If you installed via Continue, replace `.claude/skills/` with `.continue/skills/` in the commands below. For Droid (Factory), use `.factory/skills/`.
|
||||
> Note: If you installed via Continue, replace `.claude/skills/` with `.continue/skills/` in the commands below. For Droid (Factory), use `.factory/skills/`. For ZCode, use `.zcode/skills/`.
|
||||
|
||||
```bash
|
||||
# Generate design system with ASCII output
|
||||
|
||||
@@ -0,0 +1,21 @@
|
||||
{
|
||||
"platform": "zcode",
|
||||
"displayName": "ZCode",
|
||||
"installType": "full",
|
||||
"folderStructure": {
|
||||
"root": ".zcode",
|
||||
"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 for web, mobile, and desktop. This skill should be used when designing, building, reviewing, or fixing interfaces, including pages, components, design systems, accessibility, interaction, responsive layout, typography, color, charts, and stack-specific UI implementation. Searchable local data: 79 searchable styles (50 active), 192 product palettes and reasoning profiles, 74 font pairings, 119 UX guidelines, 105 icons, 17 GSAP presets, 25 chart types, and 22 stacks."
|
||||
},
|
||||
"sections": {
|
||||
"quickReference": false
|
||||
},
|
||||
"title": "ui-ux-pro-max",
|
||||
"description": "UI/UX design intelligence for web, mobile, and desktop. This skill should be used when designing, building, reviewing, or fixing interfaces, including pages, components, design systems, accessibility, interaction, responsive layout, typography, color, charts, and stack-specific UI implementation. Searchable local data: 79 searchable styles (50 active), 192 product palettes and reasoning profiles, 74 font pairings, 119 UX guidelines, 105 icons, 17 GSAP presets, 25 chart types, and 22 stacks.",
|
||||
"skillOrWorkflow": "Skill"
|
||||
}
|
||||
@@ -1,4 +1,4 @@
|
||||
export type AIType = 'claude' | 'cursor' | 'windsurf' | 'antigravity' | 'copilot' | 'kiro' | 'roocode' | 'codex' | 'qoder' | 'gemini' | 'trae' | 'opencode' | 'continue' | 'codebuddy' | 'droid' | 'kilocode' | 'warp' | 'augment' | 'codewhale' | 'universal' | 'all';
|
||||
export type AIType = 'claude' | 'cursor' | 'windsurf' | 'antigravity' | 'copilot' | 'kiro' | 'roocode' | 'codex' | 'qoder' | 'gemini' | 'trae' | 'opencode' | 'continue' | 'codebuddy' | 'droid' | 'kilocode' | 'warp' | 'augment' | 'codewhale' | 'zcode' | 'universal' | 'all';
|
||||
export type ConcreteAIType = Exclude<AIType, 'all'>;
|
||||
|
||||
export type InstallType = 'full' | 'reference';
|
||||
@@ -43,7 +43,7 @@ export interface PlatformConfig {
|
||||
skillOrWorkflow: string;
|
||||
}
|
||||
|
||||
export const AI_TYPES: AIType[] = ['claude', 'cursor', 'windsurf', 'antigravity', 'copilot', 'roocode', 'kiro', 'codex', 'qoder', 'gemini', 'trae', 'opencode', 'continue', 'codebuddy', 'droid', 'kilocode', 'warp', 'augment', 'codewhale', 'universal', 'all'];
|
||||
export const AI_TYPES: AIType[] = ['claude', 'cursor', 'windsurf', 'antigravity', 'copilot', 'roocode', 'kiro', 'codex', 'qoder', 'gemini', 'trae', 'opencode', 'continue', 'codebuddy', 'droid', 'kilocode', 'warp', 'augment', 'codewhale', 'zcode', 'universal', 'all'];
|
||||
|
||||
// Legacy folder mapping for backward compatibility with ZIP-based installs.
|
||||
// Note: .shared is included for platforms that used ZIP installs. Post-ZIP platforms
|
||||
@@ -68,5 +68,6 @@ export const AI_FOLDERS: Record<ConcreteAIType, string[]> = {
|
||||
warp: ['.warp', '.shared'],
|
||||
augment: ['.augment', '.shared'],
|
||||
codewhale: ['.codewhale', '.shared'],
|
||||
zcode: ['.zcode', '.shared'],
|
||||
universal: ['.agents', '.shared'],
|
||||
};
|
||||
|
||||
@@ -71,6 +71,9 @@ export function detectAIType(cwd: string = process.cwd()): DetectionResult {
|
||||
if (existsSync(join(cwd, '.codewhale'))) {
|
||||
detected.push('codewhale');
|
||||
}
|
||||
if (existsSync(join(cwd, '.zcode'))) {
|
||||
detected.push('zcode');
|
||||
}
|
||||
|
||||
// Suggest based on what's detected
|
||||
let suggested: AIType | null = null;
|
||||
@@ -130,6 +133,8 @@ export function getAITypeDescription(aiType: AIType): string {
|
||||
return 'Augment (.augment/skills/)';
|
||||
case 'codewhale':
|
||||
return 'CodeWhale (.codewhale/skills/)';
|
||||
case 'zcode':
|
||||
return 'ZCode (.zcode/skills/)';
|
||||
case 'universal':
|
||||
return 'Universal (.agents/skills/)';
|
||||
case 'all':
|
||||
|
||||
@@ -54,6 +54,7 @@ const AI_TO_PLATFORM: Record<string, string> = {
|
||||
warp: 'warp',
|
||||
augment: 'augment',
|
||||
codewhale: 'codewhale',
|
||||
zcode: 'zcode',
|
||||
universal: 'universal',
|
||||
};
|
||||
|
||||
|
||||
@@ -30,6 +30,19 @@ test('dry-run plan writes nothing to the target directory', async () => {
|
||||
expect(await readdir(scratch)).toEqual(before);
|
||||
});
|
||||
|
||||
test('dry-run plan supports the zcode platform layout', async () => {
|
||||
const scratch = await mkdtemp(join(tmpdir(), 'uipro-dry-run-zcode-'));
|
||||
|
||||
const actions = await planPlatformInstallActions(scratch, 'zcode');
|
||||
|
||||
const joined = actions.join('\n');
|
||||
expect(joined).toContain(
|
||||
join(scratch, '.zcode', 'skills', 'ui-ux-pro-max', 'SKILL.md')
|
||||
);
|
||||
expect(joined).toContain('Would copy data + scripts:');
|
||||
expect(joined).toContain('Would copy 6 sub-skills (');
|
||||
});
|
||||
|
||||
test('dry-run plan for all platforms covers every unique layout', async () => {
|
||||
const scratch = await mkdtemp(join(tmpdir(), 'uipro-dry-run-all-'));
|
||||
|
||||
|
||||
@@ -7,6 +7,7 @@ const cases = [
|
||||
['copilot', '.github/prompts/ui-ux-pro-max/scripts/search.py'],
|
||||
['kiro', '.kiro/steering/ui-ux-pro-max/scripts/search.py'],
|
||||
['droid', '.factory/skills/ui-ux-pro-max/scripts/search.py'],
|
||||
['zcode', '.zcode/skills/ui-ux-pro-max/scripts/search.py'],
|
||||
] as const;
|
||||
const SEARCH_COMMAND_COUNT = 17;
|
||||
|
||||
|
||||
@@ -0,0 +1,21 @@
|
||||
{
|
||||
"platform": "zcode",
|
||||
"displayName": "ZCode",
|
||||
"installType": "full",
|
||||
"folderStructure": {
|
||||
"root": ".zcode",
|
||||
"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 for web, mobile, and desktop. This skill should be used when designing, building, reviewing, or fixing interfaces, including pages, components, design systems, accessibility, interaction, responsive layout, typography, color, charts, and stack-specific UI implementation. Searchable local data: 79 searchable styles (50 active), 192 product palettes and reasoning profiles, 74 font pairings, 119 UX guidelines, 105 icons, 17 GSAP presets, 25 chart types, and 22 stacks."
|
||||
},
|
||||
"sections": {
|
||||
"quickReference": false
|
||||
},
|
||||
"title": "ui-ux-pro-max",
|
||||
"description": "UI/UX design intelligence for web, mobile, and desktop. This skill should be used when designing, building, reviewing, or fixing interfaces, including pages, components, design systems, accessibility, interaction, responsive layout, typography, color, charts, and stack-specific UI implementation. Searchable local data: 79 searchable styles (50 active), 192 product palettes and reasoning profiles, 74 font pairings, 119 UX guidelines, 105 icons, 17 GSAP presets, 25 chart types, and 22 stacks.",
|
||||
"skillOrWorkflow": "Skill"
|
||||
}
|
||||
Reference in New Issue
Block a user