{"id":47178842,"url":"https://github.com/openyida/openyida","last_synced_at":"2026-05-20T08:09:06.361Z","repository":{"id":342171607,"uuid":"1173106906","full_name":"openyida/openyida","owner":"openyida","description":"Your own personal YiDA AI assistant!🤖","archived":false,"fork":false,"pushed_at":"2026-05-13T11:21:26.000Z","size":11895,"stargazers_count":172,"open_issues_count":65,"forks_count":29,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-05-13T13:25:35.922Z","etag":null,"topics":["agent","ai","assistant","low-code-platform","skills","yida"],"latest_commit_sha":null,"homepage":"https://openyida.ai/","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/openyida.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":"AGENTS.md","dco":null,"cla":null}},"created_at":"2026-03-05T02:36:37.000Z","updated_at":"2026-05-13T11:21:27.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/openyida/openyida","commit_stats":null,"previous_names":["openyida/openyida"],"tags_count":43,"template":false,"template_full_name":null,"purl":"pkg:github/openyida/openyida","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/openyida%2Fopenyida","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/openyida%2Fopenyida/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/openyida%2Fopenyida/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/openyida%2Fopenyida/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/openyida","download_url":"https://codeload.github.com/openyida/openyida/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/openyida%2Fopenyida/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33251407,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-20T04:48:54.280Z","status":"ssl_error","status_checked_at":"2026-05-20T04:48:10.851Z","response_time":356,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["agent","ai","assistant","low-code-platform","skills","yida"],"created_at":"2026-03-13T07:04:39.631Z","updated_at":"2026-05-20T08:09:06.346Z","avatar_url":"https://github.com/openyida.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cdiv align=\"center\"\u003e\n\n![OpenYida](https://img.alicdn.com/imgextra/i3/O1CN01SKWbWu1aPzGXh293W_!!6000000003323-2-tps-1672-941.png)\n\n# OpenYida\n\n**AI-native CLI for building DingTalk Yida low-code applications.**\n\nOpenYida connects AI coding agents with Yida's low-code platform, so developers can create apps, forms, workflows, custom pages, reports, integrations, and deployment configuration from a normal chat-driven development workflow.\n\n[Quick Start](#quick-start) · [Capabilities](#capabilities) · [CLI Reference](#cli-reference) · [Examples](#examples) · [Contributing](./CONTRIBUTING.md) · [Changelog](./CHANGELOG.md)\n\n[![npm version](https://img.shields.io/npm/v/openyida?color=brightgreen\u0026label=npm)](https://www.npmjs.com/package/openyida)\n[![npm downloads](https://img.shields.io/npm/dm/openyida?color=blue)](https://www.npmjs.com/package/openyida)\n[![CI](https://github.com/openyida/openyida/actions/workflows/ci.yml/badge.svg)](https://github.com/openyida/openyida/actions/workflows/ci.yml)\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](./LICENSE)\n[![Node.js \u003e=18](https://img.shields.io/badge/node-%3E%3D18-brightgreen)](https://nodejs.org)\n\n**Documentation:** [English](https://openyida.ai/docs/en) · [简体中文](https://openyida.ai/docs) · [繁體中文](https://openyida.ai/docs/zh-Hant/) · [日本語](https://openyida.ai/docs/ja/) · [한국어](https://openyida.ai/docs/ko/) · [Français](https://openyida.ai/docs/fr/) · [Deutsch](https://openyida.ai/docs/de/) · [Español](https://openyida.ai/docs/es/) · [Português](https://openyida.ai/docs/pt/) · [Tiếng Việt](https://openyida.ai/docs/vi/) · [हिन्दी](https://openyida.ai/docs/hi/) · [العربية](https://openyida.ai/docs/ar/)\n\n\u003c/div\u003e\n\n---\n\n## What OpenYida Provides\n\nOpenYida is a bridge between AI coding tools and Yida. It gives agents a stable command-line interface for the full application lifecycle:\n\n| Area | What you can do |\n|------|-----------------|\n| Application delivery | Create, update, export, and import Yida applications |\n| Form modeling | Create forms, update fields, inspect schemas, and manage permissions |\n| Custom pages | Generate React-based pages, lint Yida runtime rules, compile, and publish |\n| Workflow automation | Create process forms, configure approval flows, preview process instances |\n| Data operations | Query form/process/task/subform data and run anomaly checks |\n| Integrations | Manage HTTP connectors, connector actions, auth accounts, and automation flows |\n| Operations | Diagnose environment issues, manage login state, configure sharing, upload CDN assets |\n\nThe result remains a native Yida application: teams can continue editing it in Yida, use existing enterprise security controls, and deploy through the Yida platform.\n\n## Quick Start\n\n### 1. Install\n\n```bash\nnpm install -g openyida\n```\n\nOpenYida requires Node.js 18 or later. The package exposes both `openyida` and `yida` commands.\n\nIf Codex is already installed, OpenYida also imports a local Codex plugin during postinstall. Restart Codex after installation, then type `@宜搭` or `@openyida` in the composer to attach the OpenYida context.\n\n### 2. Check Your Environment\n\nRun this from the AI coding workspace where you want OpenYida to operate:\n\n```bash\nopenyida env\nopenyida env --json\nopenyida commands --json\n```\n\nOpenYida detects the active agent environment, workspace path, login state, and organization context. Use `--json` when an agent needs a stable machine-readable snapshot.\n`openyida commands --json` emits the command manifest used by the CLI help, so agents can inspect available routes without scraping terminal output.\n\n### 3. Log In\n\n```bash\nopenyida login\n```\n\nIn Codex, QoderWork, Qoder, Wukong, Claude Code, OpenCode, Cursor, and other detected AI tools, OpenYida first tries local Chrome/Edge/Chromium CDP when no valid cached login exists. If local CDP is unavailable, it falls back to an AI-dialog QR handoff. The agent should render `qr_image_markdown` or paste `agent_response_markdown` directly in the conversation so the QR code is visible, then run `poll_command` after the user scans it with DingTalk. If image rendering is unavailable, fall back to `qr_url`. The explicit `openyida login --browser` command still prefers CDP first and uses Playwright as an optional browser fallback.\n\nThe explicit QR polling command remains available:\n\n```bash\nopenyida login --agent-qr\n```\n\nFor terminal QR login, use:\n\n```bash\nopenyida login --qr\nopenyida login --qr --corp-id dingxxxxxxxx\nopenyida login --check-only --json\n```\n\nOpenYida does not install Playwright by default.\n\n### 4. Build With an AI Agent\n\nAsk your coding agent for a concrete Yida application or workflow:\n\n```text\nCreate a CRM application in Yida with customer, contact, opportunity, and follow-up forms.\nBuild an IPD workflow for chip production, including approval nodes and dashboard pages.\nGenerate a public landing page and publish it to my Yida app.\n```\n\nThe agent can then call OpenYida commands to create the application, generate source files, publish pages, and return the final Yida URLs. In Codex, QoderWork, Qoder, and Wukong environments, successful creation and publish commands also include a browser handoff so the agent can open the resulting Yida page in the in-app browser. Use `--open` to force this handoff or `--no-open` to suppress it.\n\n## Wukong Installation\n\nWukong uses manual skill package installation instead of npm:\n\n1. Download the latest `.zip` skill package from [GitHub Releases](https://github.com/openyida/openyida/releases).\n2. Open Wukong.\n3. Go to **Skill Center** \u003e **Upload Skill** and select the downloaded package.\n\nFor Wukong terminal work, make sure its bundled Node.js path is active before running `node`, `npm`, or `npx` commands:\n\n```bash\nexport PATH=\"$HOME/.real/.bin/node/bin:$PATH\"\n```\n\n## Supported AI Coding Tools\n\n| Tool | Support |\n|------|---------|\n| [Codex](https://openai.com/codex/) | Full support |\n| [Claude Code](https://claude.ai/code) | Full support |\n| [Aone Copilot](https://copilot.code.alibaba-inc.com) | Full support |\n| [OpenCode](https://opencode.ai) | Full support |\n| [Cursor](https://cursor.com/) | Full support |\n| [Visual Studio Code](https://code.visualstudio.com/) | Full support |\n| [QoderWork](https://qoder.com) | Full support |\n| [Qoder](https://qoder.com) | Full support |\n| [Wukong](https://dingtalk.com/wukong) | Full support |\n\n## How It Works\n\n```mermaid\nflowchart LR\n  A[\"AI coding agent\"] --\u003e B[\"OpenYida CLI\"]\n  B --\u003e C[\"Environment detection\"]\n  B --\u003e D[\"Login and organization context\"]\n  B --\u003e E[\"Yida API operations\"]\n  B --\u003e F[\"Local page generation and compile\"]\n  E --\u003e G[\"Native Yida app\"]\n  F --\u003e G\n```\n\nOpenYida keeps platform-specific behavior inside the CLI, while agents interact with predictable commands and project files.\n\n## Project Layout\n\n```text\nopenyida/\n├── bin/yida.js                 # CLI entry and command routing\n├── lib/\n│   ├── app/                    # Application, form, page, import/export commands\n│   ├── auth/                   # Login, QR login, browser handoff, organization switch\n│   ├── connector/              # HTTP connector lifecycle and smart creation\n│   ├── core/                   # Environment detection, i18n, diagnostics, data commands\n│   ├── process/                # Process form creation, configuration, preview\n│   ├── report/                 # Yida report and chart generation\n│   └── samples/                # Templates emitted by openyida sample\n├── project/                    # Default workspace template for generated Yida projects\n├── yida-skills/                # Source skill docs and Yida API references\n└── scripts/                    # CI, packaging, and installation helpers\n```\n\n## Capabilities\n\n### Application and Form Management\n\n```bash\nopenyida create-app \"CRM\"\nopenyida create-app --name \"CRM\" --desc \"Customer management\" --theme deepBlue\nopenyida app-list --size 20\nopenyida corp-efficiency\nopenyida create-form create APP_XXX \"Customer\" .cache/openyida/forms/customer-fields.json\nopenyida create-form update APP_XXX FORM_XXX .cache/openyida/forms/customer-changes.json\nopenyida get-schema APP_XXX FORM_XXX\nopenyida get-schema APP_XXX --all --output-dir .cache/schemas\n```\n\n### Custom Page Development\n\n```bash\nopenyida create-page APP_XXX \"Dashboard\" --mode dashboard\nopenyida generate-page product-homepage --spec .cache/openyida/page-specs/home.json --output pages/src/home.oyd.jsx --compile\nopenyida generate-page todo-mvc --output pages/src/todo-mvc.oyd.jsx --compile\nopenyida check-page pages/src/home.oyd.jsx\nopenyida compile pages/src/home.oyd.jsx\nopenyida publish pages/src/home.oyd.jsx APP_XXX FORM_XXX\n```\n\n`generate-page` turns a structured spec into a Page IR, renders a curated React 16-compatible template, writes a `.openyida-page.json` manifest, and optionally compiles the result. The manifest makes follow-up AI edits safer because agents can update known blocks instead of rewriting a large JSX file by hand.\nBuilt-in templates currently include `product-homepage` for product/portal pages and `todo-mvc` for a full interaction smoke page covering events, custom state, list rendering, editing, filtering, and localStorage persistence.\n\n### Workflow, Data, and Permissions\n\n```bash\nopenyida create-process APP_XXX \"Purchase Request\" .cache/openyida/process/fields.json .cache/openyida/process/process.json\nopenyida configure-process APP_XXX FORM_XXX .cache/openyida/process/process.json\nopenyida process preview APP_XXX PROC_INST_XXX --output .cache/openyida/process/process.html\nopenyida data query form APP_XXX FORM_XXX --page 1 --size 20\nopenyida data create form APP_XXX FORM_XXX --data-file .cache/openyida/data-import/record.json\nopenyida get-permission APP_XXX FORM_XXX\n```\n\n`configure-process` 的流程 JSON 中，审批人可配置为发起人、指定成员、指定角色、部门主管或直属主管，例如：\n\n```json\n{\n  \"nodes\": [\n    {\n      \"type\": \"approval\",\n      \"name\": \"主管审批\",\n      \"approver\": {\n        \"type\": \"user\",\n        \"users\": [{ \"id\": \"manager7350\", \"name\": \"九神\" }],\n        \"multiApproverType\": \"all\"\n      }\n    }\n  ]\n}\n```\n\nWhen creating or updating test data with `openyida data`, Yida date fields must use 13-digit millisecond timestamps, for example `\"dateField_xxx\": 1719705600000`. Do not submit `YYYY-MM-DD` strings for `DateField` or `CascadeDateField` values.\nTemporary JSON, CSV, and one-off import scripts should live under `.cache/openyida/` so generated run artifacts do not clutter the repository root.\n\n### Real Environment E2E\n\nMost checks should stay offline, but OpenYida also includes an explicit real-environment smoke path for release and nightly validation:\n\n```bash\nOPENYIDA_E2E=1 npm run test:e2e:real\nOPENYIDA_E2E=1 npm run test:e2e:real:full\nnpm run test:e2e:real:skills\n```\n\nThe runner creates a disposable app, form, and custom page with an `OY_E2E_*` prefix, then verifies login, app listing, schema fetch, data query, and page publish. It writes a registry to `project/.cache/e2e-real/` so created resources can be audited later. To inject CI cookies without relying on a local login cache, pass `OPENYIDA_E2E_COOKIES_BASE64` as a base64 encoded cookie array or `{ \"cookies\": [...] }` object.\n\n`test:e2e:real:full` extends the smoke path into a broad deterministic feature matrix: auth/env, app update, form update and option mutation, page build/compile/generate/publish, data create/get/update/query, permission read, page config and short URL check, report create/append, dashboard skill verification, export/import, batch, task-center, formula/doctor/sample/CDN config, and local connector parsing/template generation. AI-backed commands such as `flash-to-prd` are available as the optional `ai` stage because they depend on remote model availability.\n\n`test:e2e:real:skills` enforces coverage for every directory under `yida-skills/skills/`. Each skill must be classified as real E2E, offline/unit, opt-in, or deprecated with an explicit reason. This prevents new skills from quietly bypassing the real-environment test plan.\n\nEach successful full run leaves a human-inspectable result app in the target organization. The final step publishes a dedicated `Full E2E Dashboard` custom page, renames the app to `OY_E2E_*_PASSED` by default, and prints direct links for the app, form, dashboard page, and report; the same links are saved under `resultApp` in the registry JSON.\n\nUseful options:\n\n| Env var | Purpose |\n|---------|---------|\n| `OPENYIDA_E2E_PREFIX` | Override the disposable resource name prefix |\n| `OPENYIDA_E2E_CORP_ID` | Switch to the dedicated test organization before creating resources |\n| `OPENYIDA_E2E_RESULT_APP_NAME` | Override the final app name shown as the full-run result |\n| `OPENYIDA_E2E_BASE_URL` | Override the Yida base URL for private deployments |\n| `OPENYIDA_E2E_FIELDS_FILE` | Use a custom form fields fixture |\n| `OPENYIDA_E2E_PAGE_SOURCE` | Use a custom page source for publish verification |\n| `OPENYIDA_E2E_SKIP_PUBLISH=1` | Skip custom page creation and publish |\n| `OPENYIDA_E2E_REGISTRY_DIR` | Write registries outside `project/.cache/e2e-real/` |\n| `OPENYIDA_E2E_FULL_STAGES` | Comma-separated stage list for `test:e2e:real:full`; use `all` or omit for the default broad matrix |\n\nUse `npm run test:e2e:real:cleanup` to list recorded disposable resources. OpenYida does not yet expose a safe app/form deletion command, so cleanup is intentionally a registry-backed audit step rather than an automatic destructive action.\n\n### Connectors, Integrations, and Reports\n\n```bash\nopenyida connector smart-create --curl \"curl https://api.example.com/users\"\nopenyida connector list\nopenyida integration create APP_XXX FORM_XXX \"Sync customer data\"\nopenyida integration create APP_XXX FORM_XXX \"Approval result notify\" \\\n  --events processFinish --approval-actions agree,disagree --receivers 123456\nopenyida create-report APP_XXX \"Sales Dashboard\" .cache/openyida/reports/charts.json\nopenyida append-chart APP_XXX REPORT_XXX .cache/openyida/reports/chart.json\n```\n\n## CLI Reference\n\nRun `openyida --help` or `openyida \u003ccommand\u003e --help` for detailed usage.\n\n### Environment and Authentication\n\n| Command | Description |\n|---------|-------------|\n| `openyida env [--json]` | Detect the active AI tool environment and login state |\n| `openyida env setup` | Choose a customer-friendly login environment preset: public, overseas, Alibaba intranet, or private deployment |\n| `openyida env \u003clist\\|show\\|switch\\|add\\|remove\u003e` | Manage public/private Yida environment profiles |\n| `openyida commands [--json]` | Emit the machine-readable command manifest |\n| `openyida login [--qr\\|--agent-qr\\|--codex\\|--browser] [--env \u003cname\u003e\\|--intl\\|--overseas\\|--global\\|--yidaapps] [--corp-id \u003ccorpId\u003e]` | Log in to Yida |\n| `openyida logout` | Log out or switch account |\n| `openyida auth \u003cstatus\\|login\\|refresh\\|logout\u003e` | Manage login status |\n| `openyida org list` | List accessible organizations |\n| `openyida org switch --corp-id \u003ccorpId\u003e` | Switch organization without logging in again |\n\nEnvironment selectors such as `--env intl`, `--intl`, `--overseas`, `--global`, and `--yidaapps` can be used on login-required commands to choose the target Yida environment for that run. The `intl` preset uses `https://www.yidaapps.com` as the built-in Global YiDA entrypoint (not the bare `https://yidaapps.com` domain) and DingTalk International OAuth at `https://login.dingtalk.io`; business API requests still use the authenticated environment `baseUrl`, so customer custom subdomains are supported.\n\nFor overseas apps, pass `--locale en_US` or `--locale ja_JP` on creation commands, or set `OPENYIDA_CONTENT_LOCALE`. OpenYida writes YiDA resource names with `zh_CN`, `en_US`, and `ja_JP` values so Global YiDA does not fall back to Chinese-only metadata.\n\n### Applications\n\n| Command | Description |\n|---------|-------------|\n| `openyida app-list [--size N]` | List Yida applications |\n| `openyida corp-efficiency [overview\\|details\\|detail\\|groups\\|notify] [options] [--open\\|--no-open]` | Query enterprise efficiency metrics, detail report entries, and related notification actions |\n| `openyida create-app \"\u003cname\u003e\"\\|--name \u003cname\u003e [options] [--locale zh_CN\\|en_US\\|ja_JP] [--open\\|--no-open]` | Create an application and output `appType` |\n| `openyida update-app \u003cappType\u003e --name \"...\"` | Update application metadata |\n| `openyida nav-group \u003clist\\|create\\|rename\\|delete\\|move\\|hide\\|show\u003e \u003cappType\u003e ...` | Manage sidebar navigation groups and move pages between groups |\n| `openyida app-permission \u003cget\\|set\\|add\\|remove\\|search-user\u003e ...` | Manage app primary admins, data admins, and developer members |\n| `openyida i18n \u003coverview\\|config\\|languages\\|list\\|upsert\\|delete\\|translate\\|translate-all\\|upgrade\u003e \u003cappType\u003e ...` | Manage app multilingual copy and language configuration |\n| `openyida export \u003cappType\u003e [output]` | Export an application migration package |\n| `openyida import \u003cfile\u003e [name]` | Import a migration package into a target environment |\n\n### Forms and Pages\n\n| Command | Description |\n|---------|-------------|\n| `openyida create-form create \u003cappType\u003e \"\u003cname\u003e\" \u003cfields.json\u003e [--locale zh_CN\\|en_US\\|ja_JP] [--open\\|--no-open]` | Create a form page |\n| `openyida create-form update \u003cappType\u003e \u003cformUuid\u003e \u003cchanges.json\u003e [--locale zh_CN\\|en_US\\|ja_JP] [--open\\|--no-open]` | Update a form page |\n| `openyida create-form patch \u003cappType\u003e \u003cformUuid\u003e \u003cpatch.json\u003e [--open\\|--no-open]` | Apply controlled schema patches for designer-only form settings |\n| `openyida create-form rule \u003cappType\u003e \u003cformUuid\u003e \u003crules.json\u003e [--open\\|--no-open]` | Configure field show/hide linkage and onChange auto-assignment rules |\n| `openyida create-form bind-datasource \u003cappType\u003e \u003cformUuid\u003e \u003cfieldLabelOrId\u003e \u003cdatasource.json\u003e [--open\\|--no-open]` | Bind URL/search data sources to SelectField/MultiSelectField-style option fields |\n| `openyida create-form add-option \u003cappType\u003e \u003cformUuid\u003e \u003cfieldLabel\u003e \u003coption1\u003e [option2] ...` | Append options to a SelectField/RadioField/CheckboxField/MultiSelectField |\n| `openyida list-forms \u003cappType\u003e [--keyword \u003ctext\u003e]` | List forms in an application |\n| `openyida get-schema \u003cappType\u003e \u003cformUuid\\|--all\u003e [--field \u003clabelOrFieldId\u003e]` | Fetch one form schema, batch export all, or pick a single field's full props |\n| `openyida create-page \u003cappType\u003e \"\u003cname\u003e\" [--mode dashboard] [--locale zh_CN\\|en_US\\|ja_JP] [--open\\|--no-open]` | Create a custom display page; dashboard mode hides top/workbench chrome |\n| `openyida generate-page \u003ctemplate\u003e [--spec file]` | Generate custom page source from templates (`product-homepage`, `todo-mvc`) |\n| `openyida build-page \u003csourceFile\u003e [--output file\\|--write]` | Build/fix Yida-compatible page source from OpenYida authoring JSX |\n| `openyida check-page \u003csourceFile\u003e [--compat] [--json]` | Check page compatibility; `.oyd.jsx` is compatibility-built before linting |\n| `openyida compile \u003csourceFile\u003e [--compat]` | Compile a custom page locally; `.oyd.jsx` sources are compatibility-built first |\n| `openyida publish \u003csourceFile\u003e \u003cappType\u003e \u003cformUuid\u003e [--compat] [--health-check] [--force] [--open\\|--no-open]` | Compile and publish a custom display page; by default the target must be `formType=display` |\n| `openyida update-form-config \u003cappType\u003e \u003cformUuid\u003e \u003cisRenderNav\u003e \u003ctitle\u003e [--locale zh_CN\\|en_US\\|ja_JP]` | Update page/form display configuration |\n\n### Data, Permissions, and Sharing\n\n| Command | Description |\n|---------|-------------|\n| `openyida data \u003caction\u003e \u003cresource\u003e [args]` | Unified data management for forms, processes, tasks, and subforms |\n| `openyida data check \u003cappType\u003e \u003cformUuid\u003e \u003crules.json\u003e` | Detect anomalous process-form records |\n| `openyida task-center \u003ctype\u003e [options]` | Query todo, created, processed, CC, or proxy-submitted tasks |\n| `openyida agent-center \u003csub-command\u003e` | Manage Yida process delegation and departure delegation |\n| `openyida basic-info \u003coverview\\|commodity\\|grant\\|capacity\\|quota\\|abs-path\\|dataflow\\|i18n\\|domain\u003e` | Query organization basic info, capacity, quotas, fixed-domain records, and domain settings |\n| `openyida get-permission \u003cappType\u003e \u003cformUuid\u003e` | Query form permission configuration |\n| `openyida save-permission \u003cappType\u003e \u003cformUuid\u003e [options]` | Save form permission configuration, including raw `--field-permission \u003cjson\u003e` |\n| `openyida corp-manager \u003csub-command\u003e` | Manage platform admins, sub-admins, app admins, and address book visibility |\n| `openyida verify-short-url \u003cappType\u003e \u003cformUuid\u003e \u003curl\u003e` | Verify a short URL |\n| `openyida save-share-config \u003cappType\u003e \u003cformUuid\u003e \u003curl\u003e \u003cisOpen\u003e [openAuth]` | Save public access or sharing configuration |\n| `openyida get-page-config \u003cappType\u003e \u003cformUuid\u003e` | Query public access or sharing configuration |\n\n### Workflow, Reports, and Integrations\n\n| Command | Description |\n|---------|-------------|\n| `openyida create-process \u003cappType\u003e ...` | Create a process form and configure workflow |\n| `openyida configure-process \u003cappType\u003e ...` | Configure and publish process rules |\n| `openyida process preview \u003cappType\u003e \u003cprocessInstanceId\u003e [--output \u003cpath\u003e]` | Generate a visual process preview |\n| `openyida create-report \u003cappType\u003e \"\u003cname\u003e\" \u003ccharts.json\u003e [--open\\|--no-open]` | Create a Yida report |\n| `openyida append-chart \u003cappType\u003e \u003creportId\u003e \u003ccharts.json\u003e [--open\\|--no-open]` | Append a chart to an existing report |\n| `openyida connector \u003csub-command\u003e` | Manage HTTP connectors, actions, tests, and auth accounts |\n| `openyida integration create \u003cappType\u003e \u003cformUuid\u003e \u003cflowName\u003e [options]` | Create an integration automation flow, including form and approval-process events |\n| `openyida integration list \u003cappType\u003e [--form-uuid \u003cuuid\u003e] [--status y\\|n] [--json]` | List automation flows in an app, optionally filtered by form/status |\n| `openyida integration enable \u003cappType\u003e \u003cformUuid\u003e \u003cprocessCode\u003e` | Enable an automation flow |\n| `openyida integration disable \u003cappType\u003e \u003cformUuid\u003e \u003cprocessCode\u003e` | Disable an automation flow |\n| `openyida dws \u003ccommand\u003e [args]` | Access DingTalk CLI capabilities such as contacts, calendar, todo, and approval |\n| `openyida dingtalk-link \u003curl\u003e [--target fullScreen] [--legacy-scheme] [--json]` | Generate DingTalk AppLink URLs for opening pages in DingTalk; use `--legacy-scheme` only when old `dingtalk://` links are required |\n\n`openyida integration create` supports form events (`insert`, `update`, `delete`, `comment`) and approval events (`processFinish`, `activityTask`; aliases: `approval`, `approvalNode`). Approval events require `--approval-actions agree,disagree,terminated`; `activityTask` also requires `--approval-node-ids \u003cnodeId,...\u003e`.\n\n### Utilities\n\n| Command | Description |\n|---------|-------------|\n| `openyida copy [--force]` | Initialize the local `project/` workspace |\n| `openyida sample [--list]` | Emit sample templates |\n| `openyida doctor [--fix]` | Diagnose and repair environment issues |\n| `openyida formula evaluate \u003cformula\\|file\u003e [--schema file]` | Static-check formula syntax and field references |\n| `openyida update` | Update OpenYida through npm |\n| `openyida export-conversation [options]` | Export AI conversation history |\n| `openyida flash-to-prd --file \u003cpath\u003e --name \"\u003cproject\u003e\"` | Convert flash notes or meeting notes into a PRD prompt |\n| `openyida ai text --prompt \"...\"` | Call Yida's text generation AI API |\n| `openyida ai image --file \u003cimage\u003e --app-type APP_XXX` | Upload an image and call the image recognition connector |\n| `openyida cdn-config` | Configure image upload to Aliyun OSS/CDN |\n| `openyida cdn-upload \u003cimage-path\u003e` | Upload an image to CDN |\n| `openyida cdn-refresh [options]` | Refresh CDN cache |\n| `openyida batch \u003cfile\u003e [--stop-on-error] [--json]` | Run multiple commands from a file (one login, sequential execution) |\n| `openyida batch --commands \"cmd1 ; cmd2\" [--stop-on-error] [--json]` | Run inline batch commands |\n\n## Agent Skills\n\nThe `yida-skills/` directory is the source skill library used by OpenYida during development. Release assets for Wukong are generated by `npm run build:skills`: the expanded package is written to `dist/skills/openyida/`, and the upload-ready zip is written to `openyida-skills.zip`.\n\n| Path | Purpose |\n|------|---------|\n| `yida-skills/SKILL.md` | Entry point and skill index |\n| `yida-skills/skills/` | Self-contained sub-skills for app, form, process, page, data, and integration work |\n| `yida-skills/references/` | Shared Yida API, model API, and query-condition references |\n| `dist/skills/openyida/` | Generated Wukong upload package root; contains one root `SKILL.md` and reference-only subskill docs |\n| `openyida-skills.zip` | Generated Wukong upload package; upload this file in Wukong |\n\nWhen OpenYida is used inside a supported AI coding environment, these skills help the agent choose the right command sequence and file conventions.\n\nFor Wukong manual import, upload the generated `openyida-skills.zip`. The package follows Wukong's custom skill rules: folder name and `frontmatter.name` are both `openyida`, root frontmatter only contains `name` and `description`, and long references live under `references/`.\n\nFor Codex, `npm install -g openyida` additionally creates a local plugin marketplace under `~/.openyida/codex-plugin` and enables `openyida@openyida` in `~/.codex/config.toml` when Codex is detected. This makes OpenYida show up in Codex's `@` plugin menu as **宜搭** after Codex reloads.\n\n## Examples\n\n### Business Systems: IPD and CRM\n\nDescribe your requirements in one sentence; the agent can create a complete multi-form Yida application.\n\n![IPD](https://img.alicdn.com/imgextra/i2/O1CN01YBEMa929J7sD9v8U1_!!6000000008046-2-tps-3840-3366.png)\n\n![CRM](https://img.alicdn.com/imgextra/i3/O1CN01kn0Vcn1H5OkbQaizA_!!6000000000706-2-tps-3840-2168.png)\n\n### Custom Pages and Utilities\n\n![Salary Calculator](https://gw.alicdn.com/imgextra/i2/O1CN017TeJuE1reVH2Dj7b7_!!6000000005656-2-tps-5114-2468.png)\n\n![Enterprise Collaboration](https://gw.alicdn.com/imgextra/i1/O1CN01EZtvfs1cxXV00UaXi_!!6000000003667-2-tps-5118-2470.png)\n\n### Interactive Campaigns\n\n![Lantern Riddle Game](https://img.alicdn.com/imgextra/i3/O1CN01dCoscP25jSAtAB9o3_!!6000000007562-2-tps-2144-1156.png)\n\n## Common Prompts\n\n```text\nBuild a Yida application for [business scenario].\nGenerate an app from this requirements document.\nCreate a [name] form page with these fields.\nAdd a required [field type] field named [field name] to [form name].\nPublish this custom page to the Yida app.\nMake this page publicly accessible.\nExport the application as a migration package.\n```\n\n## OpenClaw Integration\n\nUse OpenYida through [yida-app](https://clawhub.ai/nicky1108/yida-app) in OpenClaw:\n\n```bash\nnpx clawhub@latest install nicky1108/yida-app\n```\n\n## Development\n\n```bash\ngit clone https://github.com/openyida/openyida.git\ncd openyida\nnpm install\nnpm run check:ci\n```\n\nUseful checks:\n\n| Command | Purpose |\n|---------|---------|\n| `npm test` | Run Jest tests |\n| `npm run lint` | Run ESLint |\n| `npm run check:syntax` | Validate JavaScript syntax |\n| `npm run check:structure` | Validate project structure |\n| `npm run check:package` | Validate npm package contents |\n\nWhen adding new CLI commands, register the route in `bin/yida.js`, add it to `lib/core/command-manifest.js`, update user-facing documentation here, and keep agent skills in `yida-skills/` aligned when the workflow changes.\n\n## Security and Configuration\n\n- Login cookies are cached locally and should never be hard-coded into source files.\n- Private deployment environments are managed through `lib/core/env-manager.js`.\n- Yida API requests should use the active environment base URL and authenticated cookies.\n- For multi-organization accounts, prefer explicit `--corp-id` values in non-interactive automation.\n\n## Community\n\nScan the QR code to join the OpenYida DingTalk user group for updates and support.\n\n![Join OpenYida Community](https://img.alicdn.com/imgextra/i4/O1CN01RAlxmO1qF1cxRguyj_!!6000000005465-2-tps-350-356.png)\n\n## Contributors\n\nThanks to everyone who has contributed to OpenYida. Read the [Contributing Guide](./CONTRIBUTING.md) to get involved.\n\nLatest contributors: [DDlixin1](https://github.com/DDlixin1), [fcloud](https://github.com/fcloud).\n\n\u003c!-- openyida-contributors:start --\u003e\n\n\u003cp\u003e\n  \u003ca href=\"https://github.com/yize\"\u003e\u003cimg src=\"https://github.com/yize.png?size=48\" width=\"48\" height=\"48\" alt=\"九神\" title=\"九神\" /\u003e\u003c/a\u003e\n  \u003ca href=\"https://github.com/alex-mm\"\u003e\u003cimg src=\"https://github.com/alex-mm.png?size=48\" width=\"48\" height=\"48\" alt=\"天晟\" title=\"天晟\" /\u003e\u003c/a\u003e\n  \u003ca href=\"https://github.com/DDlixin1\"\u003e\u003cimg src=\"https://github.com/DDlixin1.png?size=48\" width=\"48\" height=\"48\" alt=\"DDlixin1\" title=\"DDlixin1\" /\u003e\u003c/a\u003e\n  \u003ca href=\"https://github.com/fcloud\"\u003e\u003cimg src=\"https://github.com/fcloud.png?size=48\" width=\"48\" height=\"48\" alt=\"Aiden Wu (fcloud)\" title=\"Aiden Wu (fcloud)\" /\u003e\u003c/a\u003e\n  \u003ca href=\"https://github.com/nicky1108\"\u003e\u003cimg src=\"https://github.com/nicky1108.png?size=48\" width=\"48\" height=\"48\" alt=\"nicky1108\" title=\"nicky1108\" /\u003e\u003c/a\u003e\n  \u003ca href=\"https://github.com/angelinheys\"\u003e\u003cimg src=\"https://github.com/angelinheys.png?size=48\" width=\"48\" height=\"48\" alt=\"angelinheys\" title=\"angelinheys\" /\u003e\u003c/a\u003e\n  \u003ca href=\"https://github.com/yipengmu\"\u003e\u003cimg src=\"https://github.com/yipengmu.png?size=48\" width=\"48\" height=\"48\" alt=\"yipengmu\" title=\"yipengmu\" /\u003e\u003c/a\u003e\n  \u003ca href=\"https://github.com/Waawww\"\u003e\u003cimg src=\"https://github.com/Waawww.png?size=48\" width=\"48\" height=\"48\" alt=\"Waawww\" title=\"Waawww\" /\u003e\u003c/a\u003e\n  \u003ca href=\"https://github.com/kangjiano\"\u003e\u003cimg src=\"https://github.com/kangjiano.png?size=48\" width=\"48\" height=\"48\" alt=\"kangjiano\" title=\"kangjiano\" /\u003e\u003c/a\u003e\n  \u003ca href=\"https://github.com/ElZe98\"\u003e\u003cimg src=\"https://github.com/ElZe98.png?size=48\" width=\"48\" height=\"48\" alt=\"ElZe98\" title=\"ElZe98\" /\u003e\u003c/a\u003e\n  \u003ca href=\"https://github.com/OAHyuhao\"\u003e\u003cimg src=\"https://github.com/OAHyuhao.png?size=48\" width=\"48\" height=\"48\" alt=\"OAHyuhao\" title=\"OAHyuhao\" /\u003e\u003c/a\u003e\n  \u003ca href=\"https://github.com/xiaofu704\"\u003e\u003cimg src=\"https://github.com/xiaofu704.png?size=48\" width=\"48\" height=\"48\" alt=\"xiaofu704\" title=\"xiaofu704\" /\u003e\u003c/a\u003e\n  \u003ca href=\"https://github.com/guchenglin111\"\u003e\u003cimg src=\"https://github.com/guchenglin111.png?size=48\" width=\"48\" height=\"48\" alt=\"guchenglin111\" title=\"guchenglin111\" /\u003e\u003c/a\u003e\n  \u003ca href=\"https://github.com/liug0911\"\u003e\u003cimg src=\"https://github.com/liug0911.png?size=48\" width=\"48\" height=\"48\" alt=\"LIUG\" title=\"LIUG\" /\u003e\u003c/a\u003e\n  \u003ca href=\"https://github.com/sunliz-xiuli\"\u003e\u003cimg src=\"https://github.com/sunliz-xiuli.png?size=48\" width=\"48\" height=\"48\" alt=\"sunliz-xiuli\" title=\"sunliz-xiuli\" /\u003e\u003c/a\u003e\n  \u003ca href=\"https://github.com/M12REDX\"\u003e\u003cimg src=\"https://github.com/M12REDX.png?size=48\" width=\"48\" height=\"48\" alt=\"M12REDX\" title=\"M12REDX\" /\u003e\u003c/a\u003e\n  \u003ca href=\"https://github.com/key-668\"\u003e\u003cimg src=\"https://github.com/key-668.png?size=48\" width=\"48\" height=\"48\" alt=\"再不喝汽水\" title=\"再不喝汽水\" /\u003e\u003c/a\u003e\n  \u003ca href=\"https://github.com/dongbeixiaohuo\"\u003e\u003cimg src=\"https://github.com/dongbeixiaohuo.png?size=48\" width=\"48\" height=\"48\" alt=\"dongbeixiaohuo\" title=\"dongbeixiaohuo\" /\u003e\u003c/a\u003e\n  \u003ca href=\"https://github.com/nandanadileep\"\u003e\u003cimg src=\"https://github.com/nandanadileep.png?size=48\" width=\"48\" height=\"48\" alt=\"nandanadileep\" title=\"nandanadileep\" /\u003e\u003c/a\u003e\n\u003c/p\u003e\n\n\u003c!-- openyida-contributors:end --\u003e\n\n## License\n\n[MIT](./LICENSE) © 2026 Alibaba Group Holding Limited\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fopenyida%2Fopenyida","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fopenyida%2Fopenyida","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fopenyida%2Fopenyida/lists"}