33 Commits

Author SHA1 Message Date
Duy /zuey/
cc3d1be743
fix(cli): publish under fallback npm package (#393) 2026-06-26 11:02:09 +07:00
Alexander
ef5f5ba0e6
fix(cli): install all 7 skills via uipro init, not just the orchestrator (#362) (#387)
* fix(cli): install all 7 skills via uipro init, not just the orchestrator

`uipro init` rendered only the orchestrator (ui-ux-pro-max) and never
delivered the 6 sibling skills (banner-design, brand, design,
design-system, slides, ui-styling), so users got 1 of 7 skills (#362).

- sync-assets.mjs: bundle the 6 sub-skills into cli/assets/skills/ as
  static copies (source of truth: .claude/skills/), with sync + check
  coverage. Excludes ui-styling/canvas-fonts (~5.8MB of TTF) and
  __pycache__/.pyc cruft — a skill registers from its SKILL.md, not its
  fonts — so the bundle adds ~0.9MB, not ~6.6MB.
- template.ts: after rendering the orchestrator, install each bundled
  sub-skill as a sibling. The skills parent is derived from the
  platform's skillPath (skills/ for most, prompts/ for copilot,
  steering/ for kiro) rather than hardcoded.
- uninstall.ts: remove the sub-skills too.

Verified: check:assets in sync, tsc passes, and a per-platform install
harness delivers all 7 skills to the correct parent dir with no fonts.

Closes #362

* fix(cli): filter excluded files from target side of check:assets

check:assets filtered sourceFiles with isExcludedAssetFile but not
targetFiles, so a stray cli/assets/scripts/__pycache__/*.pyc (generated
by a local Python run) was reported as an "extra asset file" and failed
the gate. Apply the same predicate to targetFiles in both the
dirsToSync and sub-skill loops.

Verified: check:assets now passes with __pycache__/*.pyc present in the
target tree; typecheck passes.

* fix(cli): uninstall from each platform's real skills dir, not hardcoded skills/

removeSkillDir() hardcoded <folder>/skills/<name>, but the installer
places skills under each platform config's skillPath parent — copilot in
.github/prompts/, kiro in .kiro/steering/. So uninstall left those
platforms' skills (orchestrator + sub-skills) behind.

Derive the install parent from loadPlatformConfig(aiType).folderStructure
(same source the installer uses), and keep the legacy <folder>/skills/
cleanup (incl. .shared/) for older installs. Deduped via a Set.

Verified: typecheck passes; an install+uninstall harness removes all 7
skills with zero leftovers for claude (.claude/skills), copilot
(.github/prompts) and kiro (.kiro/steering).

* fix(cli): re-sync bundled sub-skills after #385 stripped ckm- names

#385 merged to main and removed the ckm- prefix from the six
.claude/skills/*/SKILL.md name fields. This branch's bundled copies
under cli/assets/skills/ still carried the old ckm- names, so after the
PR merges with main the source no longer matched the bundle and the
check-asset-sync CI gate failed (stale asset file: skills/*/SKILL.md).

Merge main and regenerate the bundle so cli/assets/skills matches the
current .claude/skills source of truth. check:assets and typecheck pass.
2026-06-25 17:33:23 +07:00
Alexander
4ab70389b2
fix(cli): make uipro update upgrade CLI via npm
Approved by github-maintain cron-safe review. Supersedes #326.
2026-06-25 16:18:09 +07:00
Alexander
57d9ba7989
fix(cli): replace stale data/scripts pointer files on install (#386)
On Windows, an older install (or a git checkout that materialized the
repo's symlinked data/scripts as plain "pointer" files) leaves a regular
file at <skill>/data or <skill>/scripts. copyDataAndScripts then calls
mkdir on that path, which throws EEXIST; under `uipro init --ai all` the
per-platform error is swallowed, leaving e.g. codex with the stale
pointer files and no real directories.

Add ensureCleanDir(): before mkdir, lstat the target and remove it if it
is not already a directory. Existing real directories are preserved
(re-install is unaffected). Verified with a repro harness.

Closes #237
2026-06-25 15:15:04 +07:00
Alexander
b4d33beada
fix CLI asset sync (#355)
* fix CLI asset sync

* fix(cli): normalize line endings in asset sync/check

check:assets hashed raw bytes, so identical CSV/JSON/py content with
CRLF vs LF (git autocrlf on checkout) was reported as stale drift,
blocking the release guard on Windows/mixed checkouts.

- fileHash now normalizes CRLF->LF before hashing, so check:assets
  compares content, not line endings.
- sync:assets writes LF-normalized copies instead of a raw byte copy,
  so re-syncing is deterministic across platforms.

All synced assets are text (csv/json/md/py); no binaries affected.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>

* ci: enforce CLI asset sync on PRs

Adds a Check asset sync workflow that runs `npm run check:assets` on any
PR touching src/ui-ux-pro-max/** or cli/assets/**, so the bundled CLI
assets can't silently drift from the source of truth.

The check uses only node builtins (no install step) and normalizes
line endings before hashing, so it hard-fails on real content drift
without the CRLF/LF soft-fail hack other approaches needed.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-25 12:54:58 +07:00
OrbisAI Security
efa51376ad
feat(cli): add optional GitHub token support for higher API rate limits (#294)
* fix: V-001 security vulnerability

Automated security fix generated by Orbis Security AI

* feat(cli): add optional GitHub token support with proper UX and docs

- Rename env var from GITHUB_TOKEN to UI_PRO_MAX_GITHUB_TOKEN (primary),
  with GITHUB_TOKEN as fallback — avoids silently attaching CI workflow
  credentials that GitHub Actions injects automatically
- Add whitespace trim guard to prevent malformed Authorization headers
- Add getGitHubTokenGuidance() helper exported from github.ts so rate-limit
  errors and spinner warnings tell users exactly how to fix the problem
- Thread optional token param through fetchReleases, getLatestRelease,
  downloadRelease signatures
- Add --token flag to init, versions, update commands (Commander.js wiring)
- Update rate-limit catch in tryGitHubInstall to show token guidance
- Document token options (flag, env var, fallback) in cli/README.md with
  CI warning about GITHUB_TOKEN scope

Supersedes the narrower env-only approach in PR #294 and incorporates the
safeguards requested during review of closed PR #186.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

---------

Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-25 08:39:27 +07:00
Alfredo Augusto Petri
c522197c72
fix(cli): implement --force flag to protect existing skill files (#324)
The --force option was accepted by Commander but ignored: writeFile()
always overwrote existing files silently. Users expecting protection
against accidental overwrites had no way to preserve existing configs.

- generatePlatformFiles: check file existence before writing; skip with
  a clear message when file exists and force=false
- generateAllPlatformFiles / templateInstall: propagate force parameter
- initCommand: pass options.force through to templateInstall

Behavior change:
  uipro init --ai claude         → skips if SKILL.md already exists
  uipro init --ai claude --force → overwrites regardless

Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-21 15:46:42 +07:00
Goon
0d58617a42 fix(cli): check dir existence before reporting removal in uninstall
Use stat() to verify directory exists before rm + push to removed[].
Prevents misleading "Skill files removed!" when dir never existed.
2026-03-24 17:49:02 +07:00
Goon
035df47a56 fix: address Claude review findings
- Warn when --global and --legacy are used together (init.ts)
- Update metadata across all platform templates (161 palettes, 15 stacks)
- Bump skill.json version from 2.0.0 to 2.5.0
- Re-throw non-ENOENT errors in uninstall.ts removeSkillDir
- Hoist detectAIType call to avoid double invocation in uninstall
- Add clarifying comment for .shared in AI_FOLDERS mapping
2026-03-24 17:43:13 +07:00
Goon
2910a74e57 feat: resolve 8 enhancement issues — Angular, Laravel, KiloCode, global install, uninstall, Warp, Augment, add-skill
- Add Angular stack guidelines (50 rows) with signals, standalone components, defer blocks (#203)
- Add Laravel stack guidelines (50 rows) with Blade, Livewire, Inertia.js (#105)
- Add KiloCode platform support (.kilocode/skills/) as Roo Code fork (#89)
- Add global install mode: `uipro init --global` installs to ~/ (#75)
- Add uninstall command: `uipro uninstall` with auto-detect (#185)
- Add Warp platform support (#88)
- Add Augment platform support (#41)
- Add skill.json manifest for add-skill registry (#95)
- Update README with new platforms, stacks, CLI commands
2026-03-24 17:22:51 +07:00
Goon
8aacc9a64b fix(cli): update Antigravity folder mapping to .agents
Antigravity now defaults to .agents/skills/ directory. Update
AI_FOLDERS mapping and detection logic with backward compat
for existing .agent/ directories.

Closes #196
2026-03-24 17:13:26 +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
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
bedc435a81
chore: remove reference folders (CLI generates these) (#130)
Remove folders that were only used as reference/examples:
- .cursor/, .windsurf/, .kiro/, .roo/, .github/
- .agent/, .opencode/

These folders are no longer needed since CLI generates
all necessary files for users via `uipro init`.

Update CLAUDE.md architecture section accordingly.

Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-26 08:52:44 +07:00
Viet Tran
b2a05eceeb
feat: reorganize codebase with single source of truth + merge prompts into styles (#116)
BREAKING CHANGES:
- Moved canonical data/scripts to src/ui-ux-pro-max/
- Removed duplicate folders (.codex/, .gemini/, .trae/, .codebuddy/, .continue/, skills/, .qoder/)
- CLI now uses template system instead of copying pre-built folders

New features:
- Merged prompts.csv into styles.csv with 4 new columns:
  - AI Prompt Keywords
  - CSS/Technical Keywords
  - Implementation Checklist
  - Design System Variables
- All 67 styles now have complete prompt data
- Added Astro stack (53 guidelines)
- Added 10 new 2025 UI trend styles

CLI changes:
- New template rendering system (cli/src/utils/template.ts)
- Reduced cli/assets from ~34MB to ~564KB
- Assets now contain only: data/, scripts/, templates/

File structure:
- src/ui-ux-pro-max/ - Single source of truth
- .claude/skills/ - Symlinks to src/ for development
- .shared/ - Symlink to src/ui-ux-pro-max/

Bumped CLI version: 2.1.3 → 2.2.0

Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-22 22:05:41 +07:00
murphyXu
01c58abae7
feat: add Continue skills support (#102)
* feat: add Continue skills support

* docs: document continue support

---------

Co-authored-by: mannaxu <mannaxu@tencent.com>
2026-01-20 12:52:59 +07:00
Viet Tran
6678e96b7b fix(cli): read version dynamically from package.json
- Remove hardcoded version string (was stuck at 1.9.0)
- Read version from package.json at runtime using ESM imports
- Bump version to 2.1.0

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-18 22:10:08 +07:00
September999999999
319a9393cd
fix(cli): support OpenCode ai type (#84) 2026-01-17 09:48:00 +07:00
Viet Tran
408df90766
feat(cli): prioritize GitHub release download with fallback to bundled assets (#81)
- Add GitHubRateLimitError and GitHubDownloadError for better error handling
- Detect rate limits (403 with remaining=0, 429)
- Try downloading from GitHub releases first
- Fall back to bundled assets on network error, rate limit, or download failure
- Add --offline flag to skip GitHub download
- Use GitHub auto-generated archive URL as fallback when no ZIP asset exists
- Update CLI to v1.9.0

Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-16 08:02:35 +07:00
Alex Le
9149e5f2fa
feat: add support for Trae AI assistant (#69)
* feat(trae): add support for Trae AI assistant

Add Trae as a new supported AI assistant with version bump to 1.7.0. Includes:
- New .trae folder for skill files
- Updated CLI to detect and copy Trae skill files
- Added Trae to AIType enum and documentation
- Implemented search functionality for Trae-specific queries
- Added Trae skill data and scripts

* feat: update trae skill documentation and readme example

- Refactor SKILL.md to improve clarity and organization
- Add explicit usage instructions and prerequisites
- Update README.md example to clarify frontend-only scope

---------

Co-authored-by: Alex Le <alex.le@bytedance.com>
2026-01-14 17:22:25 +07:00
dingtalk_ssjygq
d45721a49a feat: add support for Gemini CLI
- Added .gemini/skills/ui-ux-pro-max/SKILL.md configuration
- Updated CLI to detect and install for Gemini (.gemini + .shared)
- Added Gemini CLI instructions to README.md
2026-01-09 09:18:56 +08:00
Viet Tran
ea22839044 chore: bump cli version to 1.5.0
🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-08 11:17:53 +07:00
Alliot
6ca03d98b1
Fix Codex install layout (self‑contained skills) (#49)
* feat: add CodeX support

* fix: ensure Codex detection in detectAIType function

* feat: Add UI/UX Pro Max search engine and guidelines

- Introduced a new CSV file containing UX guidelines for various categories, issues, and best practices.
- Implemented a BM25 search engine in core.py to facilitate searching through style guides and UX guidelines.
- Created a search script (search.py) for command-line usage, allowing users to query the guidelines with options for domain and stack-specific searches.
- Added functionality to format search results for better readability and usability.

* feat: Add UI/UX Pro Max search engine and guidelines

- Introduced a new CSV file containing UX guidelines for various categories, issues, and best practices.
- Implemented a BM25 search engine in core.py to facilitate searching through style guides and UX guidelines.
- Created a search script (search.py) for command-line usage, allowing users to query the guidelines with options for domain and stack-specific searches.
- Added functionality to format search results for better readability and usability.

* fix: update script paths in SKILL.md for Codex search functionality

---------

Co-authored-by: Viet Tran <viettranx@gmail.com>
2026-01-07 15:03:45 +07:00
Viet Tran
d36e4b7c2b feat: add Nuxt.js and Nuxt UI stack support 2026-01-07 15:01:10 +07:00
Alliot
d247b18188
feat: add CodeX support (#44)
Co-authored-by: Viet Tran <viettranx@gmail.com>
2026-01-07 09:31:42 +07:00
MagicExists
8df105cc4f
feat: add support for RooCode (#48)
* feat: add support for RooCode

* chore: fixing small typo when get description

---------

Co-authored-by: MagicExists <magicexist.me@gmail.com>
2026-01-07 09:27:21 +07:00
Viet Tran
fbc96e7ffb
feat: add Kiro support (#21)
* chore: change license to MIT

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>

* feat: add Kiro support

- Add .kiro/steering/ui-ux-pro-max.md with inclusion: manual frontmatter
- Add CLI support for --ai kiro option
- Update README and CLAUDE.md with Kiro docs
- Bump CLI version to 1.3.0

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

---------

Co-authored-by: Claude <noreply@anthropic.com>
2025-12-06 11:56:32 +07:00
Viet Tran
939818b024
feat: add GitHub Copilot support (#17)
- Add .github/prompts/ui-ux-pro-max.prompt.md for Copilot
- Add 'copilot' as new AI type in CLI
- Update detect utility to recognize .github folder
- Update CLAUDE.md sync rules with .github
- Update README with Copilot installation and usage
- Bump version to 1.2.0

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-authored-by: Claude <noreply@anthropic.com>
2025-12-03 14:19:03 +07:00
Viet Tran
5586da9381
fix: exclude settings.local.json from cli install (#16)
- Add .npmignore to exclude settings.local.json and __pycache__
- Add filter in copyFolders() to skip settings.local.json during copy
- Bump version to 1.1.1

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-authored-by: Claude <noreply@anthropic.com>
2025-12-03 12:14:31 +07:00
Viet Tran
17d8ce53d4
feat: bundle skill assets in npm package (#12)
- Add assets folder with all skill files (.claude, .cursor, .windsurf, .agent, .shared)
- Simplify init command to copy from bundled assets instead of GitHub download
- Remove --version option (version tied to npm package)
- No more GitHub API rate limits
- Works offline
- Bump to v1.1.0

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-authored-by: Claude <noreply@anthropic.com>
2025-12-03 10:50:17 +07:00
Viet Tran
2e7acbf50f fix: add Windows compatibility for zip extraction and file copy
- Use PowerShell Expand-Archive on Windows instead of unzip
- Use xcopy on Windows instead of cp -r in shell fallback
- Bump version to 1.0.3

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-03 10:18:18 +07:00
Viet Tran
f9b65919cf fix: replace Bun-specific APIs with Node.js APIs for npm compatibility
- Replace Bun.spawn with exec from child_process in extract.ts
- Replace Bun.file().exists() with access from fs/promises
- Replace Bun.write with writeFile from fs/promises in github.ts
- Add cp and rm from fs/promises for file operations
- Bump version to 1.0.2

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-02 19:23:28 +07:00
Viet Tran
70200ed41a
feat: add uxpro-cli for easy skill installation (#4)
* feat: add uxpro-cli for easy skill installation

- Add CLI tool (uxpro-cli) with commands: init, versions, update
- Support multiple AI assistants: claude, cursor, windsurf, antigravity, all
- Update README with CLI installation guide and usage examples
- Add CC BY-NC 4.0 license
- Update feature counts to accurate numbers

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>

* refactor: rename CLI from uxpro to uipro

- Package: uxpro-cli -> uipro-cli
- Command: uxpro -> uipro

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>

---------

Co-authored-by: Claude <noreply@anthropic.com>
2025-12-02 18:55:29 +07:00