Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
32 changes: 32 additions & 0 deletions .cursor-plugin/plugin.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
{
"name": "uipath",
"displayName": "UiPath",
"version": "1.200.0",
"description": "UiPath plugin for Cursor — skills for building, running, testing, and deploying UiPath automations, agents, coded apps, and platform operations.",
"author": {
"name": "UiPath",
"email": "support@uipath.com"
},
"homepage": "https://github.com/UiPath/skills",
"repository": "https://github.com/UiPath/skills",
"license": "MIT",
"keywords": [
"uipath",
"automation",
"rpa",
"workflows",
"skills",
"code",
"xaml",
"studio",
"ui-automation",
"ui-testing",
"desktop",
"browser",
"coded-apps",
"coded-agents",
"agent",
"troubleshoot"
],
"logo": "assets/uipath-icon.png"
}
Binary file added assets/uipath-icon.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
1 change: 1 addition & 0 deletions commands/install-permissions.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
---
name: install-permissions
description: Install a curated Claude Code allowlist for safe `uip` subcommands so the agent is not prompted on every command.
---

Expand Down
5 changes: 3 additions & 2 deletions docs/RELEASE.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ The whole skills repo is published as an npm package, **`@uipath/skills`**, vers
| `.claude-plugin/plugin.json` | `version` | Claude Code plugin version — always equals `package.json`'s base `M.N.P` (pre-release suffix stripped) — the canonical plugin version |
| `.claude-plugin/marketplace.json` | `plugins[0].version` | Always equals `plugin.json` `version` |
| `.codex-plugin/plugin.json` | `version` | Codex plugin version — always equals `plugin.json` `version` |
| `.cursor-plugin/plugin.json` | `version` | Cursor plugin version — always equals `plugin.json` `version` |

### One version line

Expand All @@ -22,9 +23,9 @@ All channels carry `package.json`'s version; the pre-release channels (`dev`, `p
| npm `latest` | npmjs | `M.N.<release>` | per stable release — what the CLI pins |
| npm `preview` | npmjs | `M.N.<release>-preview.<run>` | per merge to `release/v*`, or preview dispatch (stamp never committed) |
| npm `dev` | GitHub Packages | `M.N.<release>-dev.<run>` | per merge to `main` (stamp never committed) |
| plugin manifests (`.claude-plugin/plugin.json`, `marketplace.json`, `.codex-plugin/plugin.json`) | — | `M.N.<release>` (base version, no pre-release suffix) | per `package.json` bump — drives Claude Code / Codex plugin auto-update |
| plugin manifests (`.claude-plugin/plugin.json`, `marketplace.json`, `.codex-plugin/plugin.json`, `.cursor-plugin/plugin.json`) | — | `M.N.<release>` (base version, no pre-release suffix) | per `package.json` bump — drives Claude Code / Codex / Cursor plugin auto-update |

`sync-version.mjs` enforces the line: the plugin version always equals `package.json`'s base `M.N.P` — there is **no independent plugin patch counter**. It **refuses to downgrade** (plugin auto-update never goes backwards, so a reverted `package.json` would freeze users), and it strips pre-release suffixes so the `dev`/`preview` stamps from `publish.yml` never land in the plugin manifests. The marketplace and Codex versions must always equal the plugin version exactly. `--check` fails on any violation, so a hand-bumped plugin manifest cannot drift the line. To bump the plugin version, bump `package.json` and run the sync — that is the only lever.
`sync-version.mjs` enforces the line: the plugin version always equals `package.json`'s base `M.N.P` — there is **no independent plugin patch counter**. It **refuses to downgrade** (plugin auto-update never goes backwards, so a reverted `package.json` would freeze users), and it strips pre-release suffixes so the `dev`/`preview` stamps from `publish.yml` never land in the plugin manifests. The marketplace, Codex, and Cursor versions must always equal the plugin version exactly. `--check` fails on any violation, so a hand-bumped plugin manifest cannot drift the line. To bump the plugin version, bump `package.json` and run the sync — that is the only lever.

Run after any version change:

Expand Down
1 change: 1 addition & 0 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,7 @@
"hooks",
"assets",
".claude-plugin",
".cursor-plugin",
"version-manifest.json",
"README.md",
"LICENSE",
Expand Down
19 changes: 16 additions & 3 deletions scripts/sync-version.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@
* - .claude-plugin/plugin.json .version (== package.json base version)
* - .claude-plugin/marketplace.json .plugins[0].version (== plugin.json)
* - .codex-plugin/plugin.json .version (== plugin.json — Codex channel)
* - .cursor-plugin/plugin.json .version (== plugin.json — Cursor channel)
*
* `targetCli` is derived as the matching @uipath/cli minor line
* (`^MAJOR.MINOR.0`). A skills release tracks the CLI minor line it ships
Expand All @@ -20,13 +21,14 @@
* alpha stamp from publish.yml) are NOT propagated: plugin auto-update wants
* plain versions, and the plugin channel is a git ref, not the npm tarball.
* `.claude-plugin/plugin.json` is the canonical plugin version; the
* marketplace and Codex manifests mirror it. Rules enforced here:
* marketplace, Codex, and Cursor manifests mirror it. Rules enforced here:
* - plugin version != package.json base version -> rewrite to the base
* version (errors out if package.json's base version is BELOW the plugin
* version — plugin auto-update never downgrades, so a lower version
* would freeze users)
* - marketplace .plugins[0].version and .codex-plugin/plugin.json .version
* must always equal .claude-plugin/plugin.json .version
* - marketplace .plugins[0].version, .codex-plugin/plugin.json .version,
* and .cursor-plugin/plugin.json .version must always equal
* .claude-plugin/plugin.json .version
* See docs/RELEASE.md.
*
* Usage:
Expand Down Expand Up @@ -55,6 +57,7 @@ const PATHS = {
plugin: join(ROOT, ".claude-plugin", "plugin.json"),
marketplace: join(ROOT, ".claude-plugin", "marketplace.json"),
codexPlugin: join(ROOT, ".codex-plugin", "plugin.json"),
cursorPlugin: join(ROOT, ".cursor-plugin", "plugin.json"),
};

function readJson(p) {
Expand Down Expand Up @@ -149,6 +152,16 @@ if (codexPlugin.version !== pluginVersion) {
writes.push(() => writeJson(PATHS.codexPlugin, codexPlugin));
}

// .cursor-plugin/plugin.json — Cursor distribution channel; must equal plugin.json.
const cursorPlugin = readJson(PATHS.cursorPlugin);
if (cursorPlugin.version !== pluginVersion) {
drift.push(
`.cursor-plugin/plugin.json: ${cursorPlugin.version} -> ${pluginVersion}`,
);
cursorPlugin.version = pluginVersion;
writes.push(() => writeJson(PATHS.cursorPlugin, cursorPlugin));
}

if (CHECK) {
if (drift.length > 0) {
console.error("✗ Version drift detected (run `npm run version:sync`):");
Expand Down