From uipath
UiPath Coded Web Apps & Coded Action Apps (`uip codedapp`, app.config.json, action-schema.json, @uipath/uipath-typescript SDK). Scaffold, build, debug, deploy. For .cs/XAML→uipath-rpa, Python→uipath-agents.
npx claudepluginhub uipath/skills --plugin uipathThis skill is limited to using the following tools:
> **Preview** — skill is under active development; surface and behavior may change.
assets/templates/action-app-template.mdassets/templates/web-app-template.mdreferences/commands-reference.mdreferences/create-action-app.mdreferences/create-web-app.mdreferences/debug.mdreferences/file-sync.mdreferences/oauth-client-setup.mdreferences/oauth-scopes.mdreferences/pack-publish-deploy.mdreferences/patterns.mdreferences/sdk/action-center.mdreferences/sdk/conversational-agent.mdreferences/sdk/data-fabric.mdreferences/sdk/imports.mdreferences/sdk/maestro.mdreferences/sdk/orchestrator.mdreferences/sdk/pagination.mdMandates invoking relevant skills via tools before any response in coding sessions. Covers access, priorities, and adaptations for Claude Code, Copilot CLI, Gemini CLI.
Share bugs, ideas, or general feedback.
Preview — skill is under active development; surface and behavior may change.
Build, debug, and deploy UiPath Coded Web Applications and Coded Action Apps using the uip codedapp CLI and @uipath/uipath-typescript SDK.
uip codedapp commands, .uipath/ directory, app.config.json, or action-schema.json@uipath/uipath-typescript SDK from a coded app| Type | Description | Key Difference |
|---|---|---|
| Coded Web App | React/Vue/other frontend hosted on UiPath CDN | User-facing app accessed via a URL |
| Coded Action App | React form wired to UiPath Action Center | Rendered inside human task reviews in Maestro/Agent workflows |
Coded apps are not registered in
.uipxsolutions. They have noproject.uiproj/project.json, souip solution project adddoes not apply. A coded app can live alongside a solution directory but deploys independently viauip codedapp publish(anduip codedapp deploy), not viauip solution pack/publish/deploy.
uip login status --output json before any cloud command. If not logged in, run uip login.npm run build after scaffolding (to verify the scaffold compiles) and again before pack or push (to produce the deployable dist/). Verify dist/ exists each time.-t Action on publish. Run uip codedapp publish -t Action (not the default Web type).UIPATH_ACCESS_TOKEN environment variable instead.https://api.uipath.com not https://cloud.uipath.com. See the table below.vite.config.ts must always set base: './'. The platform handles URL routing — apps must use relative asset paths. Do not use a routing name or a sub-path here.getAppBase() for client-side router basename. Import from @uipath/uipath-typescript. It reads uipath:app-base at runtime and falls back to '/' locally. Never hardcode a path as the router basename.| I want to... | Read this |
|---|---|
| Create a new Coded Web App | references/create-web-app.md |
| Create a new Coded Action App | references/create-action-app.md |
| Debug auth or config issues | references/debug.md |
| Push/pull code to Studio Web | references/file-sync.md |
| Package and deploy | references/pack-publish-deploy.md |
| Full CLI command reference | references/commands-reference.md |
| OAuth scopes for SDK services | references/oauth-scopes.md |
| SDK: Import paths & subpath exports | references/sdk/imports.md |
| SDK: Assets, Queues, Buckets, Processes, Jobs, Attachments | references/sdk/orchestrator.md |
| SDK: Data Fabric (Entities, ChoiceSets) | references/sdk/data-fabric.md |
| SDK: Maestro (Processes, Cases) | references/sdk/maestro.md |
| SDK: Action Center (Tasks) | references/sdk/action-center.md |
| SDK: Conversational Agent | references/sdk/conversational-agent.md |
| SDK: Pagination | references/sdk/pagination.md |
| UI Patterns (polling, BPMN, HITL) | references/patterns.md |
# Install the UiPath CLI (run once)
npm install -g @uipath/cli
# Install the coded apps tool
uip tools install @uipath/codedapp-tool
# Resolve uip if not on PATH
UIP=$(command -v uip 2>/dev/null || npm root -g 2>/dev/null | sed 's|/node_modules$||')/bin/uip
$UIP --version
Authenticate before any cloud command:
uip login status --output json # check if logged in
uip login # interactive OAuth (opens browser)
uip login --authority https://alpha.uipath.com # non-production environments
| Variable | Used By | Description |
|---|---|---|
VITE_UIPATH_CLIENT_ID | Web App SDK | OAuth Client ID from External Application |
VITE_UIPATH_SCOPE | Web App SDK | Space-separated OAuth scopes |
VITE_UIPATH_ORG_NAME | Web App SDK | UiPath organization slug |
VITE_UIPATH_TENANT_NAME | Web App SDK | UiPath tenant name |
VITE_UIPATH_BASE_URL | Web App SDK | Must use API subdomain (see below) |
UIPATH_PROJECT_ID | push / pull | Studio Web project ID |
Base URL by environment:
| Environment | Correct Base URL |
|---|---|
| Production (cloud) | https://api.uipath.com |
| Staging | https://staging.api.uipath.com |
| Alpha | https://alpha.api.uipath.com |
Do NOT pause between steps to ask "should I continue?" — execute the full pipeline. Only stop if you need auth credentials or an app name.
uip login status --output json. If not logged in, ask the user for their environment and run uip login.npm run build. Verify ls dist/.uip codedapp pack dist -n <name> -v <version>. Produces .uipath/<name>.<version>.nupkg. Bump version if previously published.uip codedapp publish (add -t Action for action apps). Verify cat .uipath/app.config.json.uip codedapp deploy. Share the app URL with the user.See references/sdk/imports.md for the subpath ↔ class mapping, type import conventions, and anti-pattern examples. Core rules are listed under Anti-patterns below.
.uipath/app.config.json)Created by publish, consumed by deploy. Contains appName, systemName, appType, deploymentId, appUrl. Do not delete .uipath/ between publish and deploy.
action-schema.json)Action apps define a data contract between the form and the Maestro/Agent workflow. It has four sections: inputs (read-only data from automation), outputs (user-filled fields), inOuts (pre-populated but editable), and outcomes (submission buttons like Approve/Reject).
See references/debug.md for detailed diagnosis steps.
| Error | Cause | Fix |
|---|---|---|
Not authenticated | No valid session | Run uip login |
dist/ not found | App not built | Run npm run build |
Version already exists | Same version re-published | Bump version in pack |
Folder key required | Missing folder for CLI deploy | Set UIPATH_FOLDER_KEY or pass --folderKey. See note below. |
No packages found | No .nupkg in .uipath/ | Run pack first |
| Login fails / redirect error | OAuth misconfiguration | See debug.md |
| API calls fail with 401/CORS | Wrong base URL | Use https://api.uipath.com not cloud.uipath.com |
Folder identifier names differ across CLI and SDK. The CLI uses
UIPATH_FOLDER_KEY/--folderKey(string) and applies only touip codedapp deploy. SDK methods use different parameters: Maestro services (MaestroProcesses,ProcessInstances,Cases) takefolderKey(string GUID), Orchestrator services (Assets,Queues,Buckets,Processes) takefolderId(number). Do not pass the CLI env var into SDK calls. To bridge from a MaestrofolderKeyto an OrchestratorfolderId, see sdk/maestro.md — and neverparseInt(folderKey), the GUID is not numeric.
When you finish a task, report only what's applicable to the work actually done:
dist/ — if npm run build was run.uipath/<name>.<version>.nupkg — if pack was run.uipath/app.config.json with deploymentId — if publish was runappUrl from app.config.json) — if deploy was runcd <app-name> && npm run dev to run locallyuip codedapp pack when the user wants to deployuip codedapp deploy to go liveIf a later stage was requested but skipped (e.g., user asked to deploy but only publish succeeded), call it out explicitly in the next-steps section.
These pitfalls are not already covered by the Critical Rules. For rules stated as positive requirements, see the Critical Rules section at the top.
@uipath/uipath-typescript/assets).sdk.entities.getAll() — use constructor DI: new Entities(sdk)..uipath/ between publish and deploy — deploy reads app.config.json written by publish.