160 Commits

Author SHA1 Message Date
Alexander
3a12b63bd8
fix(scripts): guard persist_design_system against None project_name (#388)
persist_design_system crashed with AttributeError: 'NoneType' object has
no attribute 'lower' when the design_system dict carries an explicit
project_name of None (the default of generate(query, project_name=None)).
dict.get("project_name", "default") only substitutes the default for a
MISSING key, not a present-but-None value, so project_name.lower() blew
up.

Coalesce falsy values (None/""/missing) to "default" before slugifying.
Applied to both the source of truth and the bundled cli/assets copy.

The "search blindness" half of #159 (core.py tokenize length filter) is
already resolved on main (`len(w) >= 2`), so this targets the remaining
crash only.

Closes #159

Co-authored-by: YangKuoshih <155388493+YangKuoshih@users.noreply.github.com>
v2.8.2
2026-06-25 15:43:33 +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
v2.8.1
2026-06-25 15:15:04 +07:00
Alexander
3ebb9c8fd5
feat(release): publish uipro-cli to npm on release (#384)
Adds semantic-release npm publishing for the cli package with pkgRoot=cli and NPM_TOKEN wiring, completing the npm-publish slice of #353.
v2.8.0
2026-06-25 13:10:54 +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>
v2.7.0
2026-06-25 08:39:27 +07:00
Thomas
bdf1179bcf
fix: replace colon with hyphen in skill names (#383)
The Agent Skills spec requires names to match [a-z0-9-] only.
The colon in 'ckm:' prefix causes daily validation errors:

  name contains invalid characters (must be lowercase a-z, 0-9, hyphens only)

This affects all six ckm-prefixed skills. Replace ':' with '-'.

Co-authored-by: Thomas Schneider <tho.schneider@sap.com>
v2.6.5
2026-06-24 19:38:31 +07:00
xiaolai
381f01d9e5
fix: pin shadcn version instead of @latest
Merge PR #284: pin the shadcn CLI helper to a deterministic version fallback while still allowing project package.json overrides.
v2.6.4
2026-06-24 19:08:07 +07:00
PengQi Shi
a13b2a02fd
fix: bump skill.json version to 2.6.2 (#382)
* fix: bump skill.json version to 2.6.2

* fix: bump marketplace.json and plugin.json version to 2.6.2

---------

Co-authored-by: shipengqi <pooky.shi@gamil.com>
v2.6.3
2026-06-24 08:04:10 +07:00
bhasan26
1518fec29d
docs: add CONTRIBUTING.md guide for new contributors (#264)
Co-authored-by: Bilal Hasan <bhaasan26@my.whitworth.edu>
2026-06-23 13:00:53 +07:00
Artemii Fridriksen
d457006301
fix: HTML-escape all user data in slide generator to prevent XSS (#274)
Add html.escape() to all 46 user-controlled data.get() calls across
all 7 slide generator functions (title, problem, solution, metrics,
chart, testimonial, cta) and the deck title.

Add URL scheme validation for cta_url href to block javascript: URI
injection.

Closes #247
v2.6.2
2026-06-23 01:17:29 +07:00
Artemii Fridriksen
9bb646b336
fix: validate plugin names in tailwind config generator to prevent code injection (#275)
The _format_plugins() method interpolated plugin names directly into
require() statements without sanitization. A plugin name containing
a single quote could break out of require() and inject arbitrary
JavaScript that executes when Node.js loads the generated config.

Add a strict regex allowlist matching valid npm package name patterns
(optional @scope, alphanumeric/hyphen/underscore, optional subpath).
Reject any plugin name that doesn't match before generating output.

Closes #246
v2.6.1
2026-06-23 00:34:41 +07:00
Mỹ Ngân
9a863a5275 fix(release): avoid protected main writes v2.6.0 2026-06-22 13:40:58 +02:00
Mỹ Ngân
cf96c6a3d3 fix(release): run semantic-release command as multiline script 2026-06-22 13:37:08 +02:00
Duy /zuey/
c0fca2efdc
feat(release): add semantic release automation (#375)
* feat(release): add semantic release automation

* fix(release): disable npm publishing

* ci: remove obsolete conda workflow

* ci: remove Claude review workflows

---------

Co-authored-by: Mỹ Ngân <bot@goclaw.dev>
Co-authored-by: Mỹ Ngân <my-ngan@goclaw.local>
2026-06-22 18:35:45 +07:00
youngledo
53d670cd30
feat: add JavaFX enterprise stack guidance (#316) 2026-06-22 12:00:21 +07:00
Ray Tien
fb1fc58bf9
feat(nuxt-ui): update stack data to v4 (#345)
Breaking changes fixed:
- Row 8/9: icon format corrected from 'lucide:home' (v3) to 'i-lucide-home' (v4 Iconify i-prefix)
- Row 18: useOverlay API updated from .open(Component, {props}) to .create(Component).open({props})

New v4 guidelines added (rows 51-70):
- Auto-registered modules: do not re-add @nuxt/icon @nuxt/fonts @nuxtjs/color-mode
- Official nuxi init templates for project bootstrapping
- Local Iconify JSON install for SSR reliability
- Global icon overrides via appConfig.ui.icons
- New form components: UFileUpload, UInputDate, UInputTags, UColorPicker
- New data components: UTree, UMarquee
- UContextMenu for right-click menus
- Awaiting overlay result Promise for confirmation dialogs
- UCommandPalette grouped items and extractShortcuts
- UHeader/UFooter/UPageAside layout components
- ClientOnly pattern for color mode hydration safety
- Generated theme file (.nuxt/ui/) for slot discovery
- defineShortcuts whenever condition guard
- UApp locale prop for i18n (50+ built-in locales)

Sync cli/assets to match src.
2026-06-22 03:58:29 +07:00
xiaolai
a3dea0d72f
fix: replace execSync template string with execFileSync array form (#283)
execSync with a backtick template string creates a shell-expansion
surface. Although all three variables (generateScript, DESIGN_TOKENS_JSON,
DESIGN_TOKENS_CSS) are currently hardcoded constants, the pattern is
fragile — any future substitution of user-controlled data would create
shell injection.

Replace with execFileSync('node', [...args]) to eliminate the shell
entirely and make the boundary explicit.

Co-authored-by: claude[bot] <claude[bot]@users.noreply.github.com>
Co-authored-by: Claude Code <noreply@anthropic.com>
2026-06-22 00:54:21 +07:00
Antony Omeri
10d6ca3105
Fix 3 latent bugs in ui-ux-pro-max (css2 font URLs, 2-char search, persist path) (#321)
All three are in the canonical src/ tree, reproduced on Python 3.14.5:

1. data/typography.csv — all 73 'Google Fonts URL' values were unusable
   fonts.google.com/share *UI* links, not stylesheet hrefs. Replaced with the
   proper fonts.googleapis.com/css2 URLs (extracted verbatim from each row's
   correct 'CSS Import' column), so the URL column is actually loadable.

2. scripts/core.py — BM25 tokenizer kept only words >2 chars, so common design
   terms 'ux', 'ui', 'ai', '3d' tokenized to nothing and returned 0 results
   (e.g. `--domain style "3d"`). Changed >2 to >=2; '3d'/'ai' now match.

3. scripts/search.py — `--persist` without `-p` printed
   'design-system/default/' but actually wrote to the query slug
   (e.g. design-system/fintech-crypto/). Use the same default the writer uses
   so the printed path matches reality.

Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-21 22:40:01 +07:00
Runxin Yan
7538cfb360
docs: add Windows Python compatibility note (#280)
Add cross-platform Python command note to skills and docs:
- CLAUDE.md: Add Windows note in Prerequisites
- ui-ux-pro-max/SKILL.md: Add Windows note in Prerequisites
- design/SKILL.md: Add Prerequisites section with Windows note
- banner-design/SKILL.md: Add Prerequisites section with Windows note
- templates/base/skill-content.md: Add Windows note (source template)

Windows uses 'python' instead of 'python3' to run scripts.

Co-authored-by: Claude Opus 4.7 <noreply@anthropic.com>
2026-06-21 20:02:56 +07:00
xiaolai
9dea1bc76f
fix: remove unsubstituted template variable from slides/SKILL.md (#287)
Line 14 contained a raw `<args>$ARGUMENTS</args>` tag that was never
replaced during skill generation. This literal XML-like string renders
as part of the skill body and can confuse LLM consumers.

Co-authored-by: claude[bot] <claude[bot]@users.noreply.github.com>
Co-authored-by: Claude Code <noreply@anthropic.com>
2026-06-21 19:05:21 +07:00
Wynn
f32d6a61cd
Add openclaw to platforms list (#308)
OpenClaw (https://openclaw.ai) is an open-source agent gateway that
runs Claude as its primary backend. This skill works out-of-the-box
inside OpenClaw agents — same SKILL.md + python3 search.py invocation
pattern as the other supported platforms. Adding it to the list so
the install flow can target it.

Co-authored-by: yinhaoti <yinhaoti@macmini.home>
2026-06-21 15:58:45 +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
Alfredo Augusto Petri
71d02eccde
fix(meta): align marketplace.json and package-lock.json to v2.5.0 (#327)
Both files were stuck at v2.2.1 while plugin.json, skill.json and
cli/package.json had moved to v2.5.0. Claude marketplace reads
marketplace.json for version and palette count — the stale entry
showed outdated data (96 palettes vs actual 161, 13 stacks vs 15).

Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-21 14:28:44 +07:00
Roy Naquin
03e6afc908
ci: add paths-ignore to python-package-conda workflow (#312)
Skip docs-only changes (*.md, docs/**, .claude/**) from triggering the
Conda build/lint/test pipeline.

Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-21 13:14:55 +07:00
Spinulosa1111
5e2c0a2b5e
docs: add Troubleshooting section to README (closes #304 #318 #338) (#350) 2026-06-21 02:00:03 +07:00
icaruszxk
fdc0a45c55
fix: correct project name from 'Antigravity Kit' to 'UI UX Pro Max' in CLAUDE.md (#365)
Co-authored-by: Xavier Virrey <xavier@Xaviers-MacBook-Air.local>
2026-06-21 01:16:03 +07:00
Duy /zuey/
b7e3af80f6
Merge pull request #184 from Jenser77/feat/design-system-visual-improvements
Improve design system output visuals
2026-04-03 12:08:19 +07:00
Duy /zuey/
7faef3e7f2
Merge pull request #191 from amyragan3297/amyragan3297-patch-1
Create python-package-conda.yml
2026-04-03 12:07:20 +07:00
Duy /zuey/
4255c218a6
Merge pull request #209 from nextlevelbuilder/feat/enhancement-issues
feat: resolve 8 enhancement issues
2026-03-28 12:40:26 +07:00
Duy Nguyen
01944c4d77 merge: resolve conflicts with main branch
- Merged STACK_CONFIG: kept main's full stack list + added angular & laravel from PR
- Updated platform templates: 161 palettes, 16 stacks across all descriptions
- Listed all 16 stacks in claude.json frontmatter description
2026-03-28 12:39:21 +07:00
Duy /zuey/
49c9fbe61f
Merge pull request #205 from Krishna-Modi12/feat/threejs-stack
feat(stacks): add Three.js r128 stack with 53 guidelines and SKILL.md…
2026-03-28 12:33:28 +07:00
Krishna-hehe
ddef277aef feat(threejs): complete Three.js stack integration
- Add threejs.csv to src/data/stacks/ and cli/assets/data/stacks/
- Register all 14 stacks in STACK_CONFIG (was missing 9: react, nextjs,
  vue, svelte, astro, swiftui, nuxtjs, nuxt-ui, html-tailwind)
- Sync missing 9 stack CSVs from cli/assets to src/data/stacks/
- Update search.py docstring to list all 14 supported stacks
- Update all 15 platform templates: 13 stacks -> 14 stacks, add Three.js
- Remove empty threejs/ placeholder under templates/platforms/

Smoke test: 14/14 stack files resolve, threejs search returns 3 results
2026-03-27 19:40:23 +05:30
Krishna-hehe
acc9c74d31 fix(core): correct threejs STACK_CONFIG format and add missing stacks from main 2026-03-27 19:14:59 +05:30
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
c981b92b43 feat(cli): sync draft and google-fonts data to CLI assets
Sync missing data files from src/ui-ux-pro-max/data/ to cli/assets/data/
2026-03-24 17:29:09 +07:00
Duy /zuey/
506d9230e9
Merge pull request #207 from nextlevelbuilder/fix/bug-fixes-batch
fix: resolve 11 open bug issues (frontmatter, plugin version, Antigravity, CLI)
2026-03-24 17:28:17 +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
Duy /zuey/
cd32d77ef8
Merge pull request #208 from nextlevelbuilder/add-claude-github-actions-1774347392047
Add Claude Code GitHub Workflow
2026-03-24 17:18:28 +07:00
Duy /zuey/
229a1b6533 "Claude Code Review workflow" 2026-03-24 17:16:35 +07:00
Duy /zuey/
8f0505d07d "Claude PR Assistant workflow" 2026-03-24 17:16:33 +07:00
Goon
f4ad784539 fix(cli): bump CLI version to 2.5.0
Align npm package version with GitHub release v2.5.0.
All 16 AI types (including trae, opencode, droid, continue,
codebuddy) are now available after npm publish.

Closes #199, #195, #172, #132
2026-03-24 17:13:33 +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
Goon
0c57cae992 fix(plugin): bump plugin.json version to 2.5.0
Update version from 2.0.1 to 2.5.0 and refresh description with
current capability counts (67 styles, 96 palettes, 13 stacks).

Closes #202, #178
2026-03-24 17:13:19 +07:00
Goon
c2bb930ef3 fix(templates): add YAML frontmatter to 5 platform configs
Add required name and description frontmatter to windsurf, kiro,
cursor, copilot, and roocode platform templates. Update agent.json
frontmatter with current capability counts.

Closes #204, #188, #43
2026-03-24 17:13:13 +07:00
Krishna-hehe
b61791961c chore: remove orphaned cat-feeding-app demo from repo root 2026-03-24 11:57:21 +05:30
amyragan3297
83692f7b2a
Create python-package-conda.yml 2026-03-17 15:55:21 -05:00
Jens
e3102cb7ed Improve design system output with Unicode borders, ANSI color swatches, extended palette, and dark/light mode
Upgrade the design system terminal output from basic ASCII to Unicode box-drawing characters,
add ANSI true color swatches with graceful fallback, expand the color palette from 5 to 10
colors (Primary, On Primary, Secondary, Accent, Background, Foreground, Muted, Border,
Destructive, Ring) with CSS variable names, and surface Light/Dark mode support from styles.csv.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-15 11:08:47 +01:00
Goon
07f4ef3ac2
Merge pull request #179 from nextlevelbuilder/feat/banner-and-slides
feat: add banner-design, slides, ui-styling, design-system, brand skills
v2.5.0
2026-03-10 13:05:38 +07:00
Goon
ec01b7fad7 Merge remote-tracking branch 'origin/main' into feat/banner-and-slides 2026-03-10 13:04:20 +07:00