fix(cli): publish under fallback npm package (#393)

This commit is contained in:
Duy /zuey/ 2026-06-26 11:02:09 +07:00 committed by GitHub
parent 318e0b2e40
commit cc3d1be743
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
10 changed files with 32 additions and 28 deletions

View File

@ -42,7 +42,7 @@ src/ui-ux-pro-max/ # Source of Truth
├── base/ # Base templates (skill-content.md, quick-reference.md)
└── platforms/ # Platform configs (claude.json, cursor.json, ...)
cli/ # CLI installer (uipro-cli on npm)
cli/ # CLI installer (ui-ux-pro-max-cli on npm)
├── src/
│ ├── commands/init.ts # Install command with template generation
│ └── utils/template.ts # Template rendering engine

View File

@ -51,7 +51,7 @@ ui-ux-pro-max-skill/
│ ├── data/ # CSV databases (styles, colors, typography, rules)
│ ├── scripts/ # Python search engine & design system generator
│ └── templates/ # Platform-specific skill templates
├── cli/ # npm CLI installer (uipro-cli)
├── cli/ # npm CLI installer (ui-ux-pro-max-cli)
├── .claude/ # Local dev/test files for Claude Code
├── .factory/ # Local dev/test files for Droid (Factory)
├── docs/ # Documentation
@ -140,7 +140,7 @@ Types:
feat: add Skeuomorphism 2.0 style to general styles
fix: correct color palette for fintech industry rule
docs: translate README to Spanish
chore: update uipro-cli to v2.6.0
chore: update ui-ux-pro-max-cli to v2.6.0
```
---

View File

@ -9,8 +9,8 @@
</p>
<p align="center">
<a href="https://www.npmjs.com/package/uipro-cli"><img src="https://img.shields.io/npm/v/uipro-cli?style=flat-square&logo=npm&label=CLI" alt="npm"></a>
<a href="https://www.npmjs.com/package/uipro-cli"><img src="https://img.shields.io/npm/dm/uipro-cli?style=flat-square&label=downloads" alt="npm downloads"></a>
<a href="https://www.npmjs.com/package/ui-ux-pro-max-cli"><img src="https://img.shields.io/npm/v/ui-ux-pro-max-cli?style=flat-square&logo=npm&label=CLI" alt="npm"></a>
<a href="https://www.npmjs.com/package/ui-ux-pro-max-cli"><img src="https://img.shields.io/npm/dm/ui-ux-pro-max-cli?style=flat-square&label=downloads" alt="npm downloads"></a>
<a href="https://github.com/nextlevelbuilder/ui-ux-pro-max-skill/stargazers"><img src="https://img.shields.io/github/stars/nextlevelbuilder/ui-ux-pro-max-skill?style=flat-square&logo=github" alt="GitHub stars"></a>
<a href="https://paypal.me/uiuxpromax"><img src="https://img.shields.io/badge/PayPal-Support%20Development-00457C?style=flat-square&logo=paypal&logoColor=white" alt="PayPal"></a>
</p>
@ -266,7 +266,7 @@ Install directly in Claude Code with two commands:
```bash
# Install CLI globally
npm install -g uipro-cli
npm install -g ui-ux-pro-max-cli
# Go to your project
cd /path/to/your/project
@ -293,6 +293,8 @@ uipro init --ai augment # Augment
uipro init --ai all # All assistants
```
The npm package is `ui-ux-pro-max-cli`; it still installs the `uipro` command. Older `uipro-cli` releases are stale and should not be used for current assets.
### Global Install (Available for All Projects)
```bash
@ -464,7 +466,7 @@ The codebase has been restructured to use a **template-based generation system**
**Always use the CLI to install:**
```bash
npm install -g uipro-cli
npm install -g ui-ux-pro-max-cli
uipro init --ai <platform>
```
@ -524,16 +526,16 @@ Use these commit types for correct version bumps:
- `feat:` -> minor release
- `feat!:` or `BREAKING CHANGE:` -> major release
The release workflow only needs the default `GITHUB_TOKEN`; it does not publish to npm.
The release workflow uses the default `GITHUB_TOKEN` for GitHub releases and the repository `NPM_TOKEN` secret to publish `ui-ux-pro-max-cli` to npm.
## Troubleshooting
### `uipro: unknown command 'uninstall'` or `unknown command 'update'`
Your installed version of `uipro-cli` is outdated. Update it and retry:
Your installed version of `ui-ux-pro-max-cli` is outdated. Update it and retry:
```bash
npm install -g uipro-cli@latest
npm install -g ui-ux-pro-max-cli@latest
uipro uninstall
```
@ -561,20 +563,20 @@ rm -rf .agents/skills/ui-ux-pro-max # Antigravity
This is a known issue with versions prior to v2.5.1. The repository used symlinks internally which some installation tools can't handle. **Fix:** use the CLI installer instead:
```bash
npm install -g uipro-cli
npm install -g ui-ux-pro-max-cli
uipro init --ai claude
```
Or wait for the next release where this is resolved.
### `npm install -g uipro-cli` fails with permission error
### `npm install -g ui-ux-pro-max-cli` fails with permission error
```bash
# macOS/Linux — use a Node version manager (recommended) or sudo
sudo npm install -g uipro-cli
sudo npm install -g ui-ux-pro-max-cli
# Or use npx without installing globally
npx uipro-cli init --ai claude
npx ui-ux-pro-max-cli init --ai claude
```
### Python not found when running design system commands

View File

@ -1,11 +1,11 @@
# uipro-cli
# ui-ux-pro-max-cli
CLI to install UI/UX Pro Max skill for AI coding assistants.
## Installation
```bash
npm install -g uipro-cli
npm install -g ui-ux-pro-max-cli
```
## Usage
@ -70,7 +70,7 @@ uipro update # updates the global CLI to the latest release
uipro init --ai codex --force # regenerate skill files from the new package
```
`uipro update` runs `npm install -g uipro-cli@latest` for you (it shells out to `npm` only on Windows, where `npm` is a `.cmd`). You can still run that command manually if you prefer. When the CLI is already current, `uipro update` just refreshes the installed skill files.
`uipro update` runs `npm install -g ui-ux-pro-max-cli@latest` for you (it shells out to `npm` only on Windows, where `npm` is a `.cmd`). You can still run that command manually if you prefer. When the CLI is already current, `uipro update` just refreshes the installed skill files.
## Development

4
cli/package-lock.json generated
View File

@ -1,11 +1,11 @@
{
"name": "uipro-cli",
"name": "ui-ux-pro-max-cli",
"version": "2.5.0",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "uipro-cli",
"name": "ui-ux-pro-max-cli",
"version": "2.5.0",
"license": "MIT",
"dependencies": {

View File

@ -1,5 +1,5 @@
{
"name": "uipro-cli",
"name": "ui-ux-pro-max-cli",
"version": "2.5.0",
"description": "CLI to install UI/UX Pro Max skill for AI coding assistants",
"type": "module",

View File

@ -10,6 +10,7 @@ import { initCommand } from './init.js';
import type { AIType } from '../types/index.js';
const __dirname = dirname(fileURLToPath(import.meta.url));
const CLI_PACKAGE_NAME = 'ui-ux-pro-max-cli';
interface UpdateOptions {
ai?: AIType;
@ -44,7 +45,7 @@ export async function updateCommand(options: UpdateOptions): Promise<void> {
// reach the shell that npm.cmd requires on Windows.
if (!/^\d+\.\d+\.\d+([.-][0-9A-Za-z.-]+)?$/.test(latestVersion)) {
logger.warn(`Installed CLI is ${chalk.cyan(currentVersion)}; latest release is ${chalk.cyan(release.tag_name)}.`);
logger.info(`Update the CLI package: ${chalk.cyan(`npm install -g uipro-cli@${latestVersion}`)}`);
logger.info(`Update the CLI package: ${chalk.cyan(`npm install -g ${CLI_PACKAGE_NAME}@${latestVersion}`)}`);
logger.info('Then rerun: uipro init --ai <platform> --force');
return;
}
@ -58,13 +59,13 @@ export async function updateCommand(options: UpdateOptions): Promise<void> {
// On Windows npm is npm.cmd, which Node only spawns via a shell.
execFileSync(
isWindows ? 'npm.cmd' : 'npm',
['install', '-g', `uipro-cli@${latestVersion}`],
['install', '-g', `${CLI_PACKAGE_NAME}@${latestVersion}`],
{ stdio: 'inherit', shell: isWindows }
);
} catch {
console.log();
logger.error('Automatic update failed (you may need elevated/admin permissions).');
logger.info(`Update manually: ${chalk.cyan(`npm install -g uipro-cli@${latestVersion}`)}`);
logger.info(`Update manually: ${chalk.cyan(`npm install -g ${CLI_PACKAGE_NAME}@${latestVersion}`)}`);
process.exit(1);
}

View File

@ -4,6 +4,7 @@ import type { Release } from '../types/index.js';
const REPO_OWNER = 'nextlevelbuilder';
const REPO_NAME = 'ui-ux-pro-max-skill';
const API_BASE = 'https://api.github.com';
const USER_AGENT = 'ui-ux-pro-max-cli';
export class GitHubRateLimitError extends Error {
constructor(message: string) {
@ -56,7 +57,7 @@ export async function fetchReleases(token?: string): Promise<Release[]> {
const response = await fetch(url, {
headers: {
'Accept': 'application/vnd.github.v3+json',
'User-Agent': 'uipro-cli',
'User-Agent': USER_AGENT,
...getAuthHeaders(token),
},
});
@ -76,7 +77,7 @@ export async function getLatestRelease(token?: string): Promise<Release> {
const response = await fetch(url, {
headers: {
'Accept': 'application/vnd.github.v3+json',
'User-Agent': 'uipro-cli',
'User-Agent': USER_AGENT,
...getAuthHeaders(token),
},
});
@ -93,7 +94,7 @@ export async function getLatestRelease(token?: string): Promise<Release> {
export async function downloadRelease(url: string, dest: string, token?: string): Promise<void> {
const response = await fetch(url, {
headers: {
'User-Agent': 'uipro-cli',
'User-Agent': USER_AGENT,
'Accept': 'application/octet-stream',
...getAuthHeaders(token),
},

View File

@ -6,7 +6,7 @@
|------|------|--------|
| **src/ui-ux-pro-max/** | **唯一源码**。所有 CSV、脚本、模板都在这里改是“唯一真相来源”。 | ❌ 不能删,这是你要维护的那一份。 |
| **.claude/skills/ui-ux-pro-max/** | 给 **Cursor / Claude Code** 用的 Skill。AI 从这里读 SKILL.md 和运行 `scripts/search.py`。设计上这里的 data、scripts 应是**指向 src 的符号链接**,这样不用维护两份。 | ❌ 不能删(否则 Skill 不工作);但可以改成只链到 src不保留副本。 |
| **cli/assets/** | 给 **npm 包 uipro-cli** 打包用。用户执行 `npm i -g uipro-cli` 再 `uipro init` 时,安装的是这里打包进去的 data/scripts/templates。 | ❌ 不能删;发布前用脚本从 src 同步过来即可。 |
| **cli/assets/** | 给 **npm 包 ui-ux-pro-max-cli** 打包用。用户执行 `npm i -g ui-ux-pro-max-cli` 再 `uipro init` 时,安装的是这里打包进去的 data/scripts/templates。 | ❌ 不能删;发布前用脚本从 src 同步过来即可。 |
## 可以只保留一个吗?

View File

@ -38,5 +38,5 @@
"antigravity",
"openclaw"
],
"install": "npx uipro-cli init --ai {{platform}}"
"install": "npx ui-ux-pro-max-cli init --ai {{platform}}"
}