openyida 2026.4.24 → 2026.5.6-beta.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (70) hide show
  1. package/README.md +307 -130
  2. package/bin/yida.js +201 -142
  3. package/lib/app/app-list.js +16 -0
  4. package/lib/app/check-page.js +45 -0
  5. package/lib/app/compile.js +42 -0
  6. package/lib/app/generate-page.js +158 -0
  7. package/lib/app/get-schema.js +274 -35
  8. package/lib/app/page-compiler.js +56 -0
  9. package/lib/app/page-ir.js +296 -0
  10. package/lib/app/page-linter.js +222 -0
  11. package/lib/app/publish.js +3 -249
  12. package/lib/auth/auth.js +25 -6
  13. package/lib/auth/codex-login.js +53 -0
  14. package/lib/auth/login.js +75 -27
  15. package/lib/auth/qr-login.js +437 -63
  16. package/lib/core/babel-transform/index.js +1 -1
  17. package/lib/core/check-data.js +1 -0
  18. package/lib/core/check-update.js +8 -0
  19. package/lib/core/command-manifest.js +204 -0
  20. package/lib/core/copy.js +8 -4
  21. package/lib/core/doctor.js +11 -11
  22. package/lib/core/env.js +128 -10
  23. package/lib/core/i18n.js +15 -11
  24. package/lib/core/locales/ar.js +70 -5
  25. package/lib/core/locales/de.js +70 -5
  26. package/lib/core/locales/en.js +80 -13
  27. package/lib/core/locales/es.js +70 -5
  28. package/lib/core/locales/fr.js +70 -5
  29. package/lib/core/locales/hi.js +70 -5
  30. package/lib/core/locales/ja.js +70 -9
  31. package/lib/core/locales/ko.js +70 -5
  32. package/lib/core/locales/pt.js +70 -5
  33. package/lib/core/locales/vi.js +70 -5
  34. package/lib/core/locales/{zh-TW.js → zh-HK.js} +197 -136
  35. package/lib/core/locales/zh.js +80 -13
  36. package/lib/core/sample.js +61 -9
  37. package/lib/core/task-center.js +9 -0
  38. package/lib/core/utils.js +77 -15
  39. package/lib/db/db-seq-fix.js +37 -37
  40. package/lib/flash-note/build-flash-note-prompt.js +15 -14
  41. package/lib/formula/evaluate.js +604 -0
  42. package/lib/report/chart-builder.js +2 -2
  43. package/lib/report/field-utils.js +1 -1
  44. package/lib/report/schema-template.js +4 -4
  45. package/lib/samples/yida-custom-page/custom-page-template.js +5 -4
  46. package/lib/samples/yida-custom-page/product-homepage.jsx +510 -0
  47. package/package.json +8 -4
  48. package/scripts/check-syntax.js +59 -0
  49. package/scripts/nightly-smoke.js +94 -0
  50. package/scripts/postinstall.js +274 -6
  51. package/scripts/validate-ci.sh +16 -10
  52. package/yida-skills/SKILL.md +50 -11
  53. package/yida-skills/references/report-field-config-guide.md +1 -1
  54. package/yida-skills/references/yida-api.md +6 -5
  55. package/yida-skills/skills/yida-app/SKILL.md +6 -6
  56. package/yida-skills/skills/yida-chart/SKILL.md +1 -3
  57. package/yida-skills/skills/yida-chart/references/echarts-bindding-guide.md +2 -2
  58. package/yida-skills/skills/yida-create-form-page/references/association-form-field.md +2 -1
  59. package/yida-skills/skills/yida-custom-page/SKILL.md +26 -14
  60. package/yida-skills/skills/yida-custom-page/references/attachment-upload-guide.md +1 -1
  61. package/yida-skills/skills/yida-custom-page/references/component-jsx-guide.md +266 -0
  62. package/yida-skills/skills/yida-custom-page/references/design-system.md +9 -9
  63. package/yida-skills/skills/yida-formula-evaluate/SKILL.md +81 -0
  64. package/yida-skills/skills/yida-get-schema/SKILL.md +32 -2
  65. package/yida-skills/skills/yida-login/SKILL.md +16 -1
  66. package/yida-skills/skills/yida-ppt-slider/SKILL.md +26 -26
  67. package/yida-skills/skills/yida-ppt-slider/references/examples.md +6 -6
  68. package/yida-skills/skills/yida-publish-page/SKILL.md +2 -1
  69. package/yida-skills/skills/yida-report/SKILL.md +3 -3
  70. package/yida-skills/skills/yida-voc/SKILL.md +158 -0
package/README.md CHANGED
@@ -2,216 +2,393 @@
2
2
 
3
3
  ![OpenYida](https://img.alicdn.com/imgextra/i4/O1CN017uyK3q1UUfbv7Z8oh_!!6000000002521-2-tps-2648-1382.png)
4
4
 
5
- # 🚀 OpenYida
5
+ # OpenYida
6
6
 
7
- > *"We are on the verge of the Singularity"* — Vernor Vinge
7
+ **AI-native CLI for building DingTalk Yida low-code applications.**
8
8
 
9
- **Build Yida low-code apps with AI zero config, instant deploy.**
9
+ OpenYida 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.
10
10
 
11
- [Get Started](#get-started) · [CLI Commands](#cli-commands) · [Demo](https://www.aliwork.com/o/OpenYidaAppShowcase) · [Contributing](./CONTRIBUTING.md) · [Changelog](./CHANGELOG.md)
11
+ [Quick Start](#quick-start) · [Capabilities](#capabilities) · [CLI Reference](#cli-reference) · [Examples](#examples) · [Contributing](./CONTRIBUTING.md) · [Changelog](./CHANGELOG.md)
12
12
 
13
13
  [![npm version](https://img.shields.io/npm/v/openyida?color=brightgreen&label=npm)](https://www.npmjs.com/package/openyida)
14
14
  [![npm downloads](https://img.shields.io/npm/dm/openyida?color=blue)](https://www.npmjs.com/package/openyida)
15
15
  [![CI](https://github.com/openyida/openyida/actions/workflows/ci.yml/badge.svg)](https://github.com/openyida/openyida/actions/workflows/ci.yml)
16
16
  [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](./LICENSE)
17
- [![Node.js 18](https://img.shields.io/badge/node-%3E%3D18-brightgreen)](https://nodejs.org)
17
+ [![Node.js >=18](https://img.shields.io/badge/node-%3E%3D18-brightgreen)](https://nodejs.org)
18
18
 
19
- **Languages:**
20
- [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 (BR)](https://openyida.ai/docs/pt/) · [Tiếng Việt](https://openyida.ai/docs/vi/) · [हिन्दी](https://openyida.ai/docs/hi/) · [العربية](https://openyida.ai/docs/ar/)
19
+ **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/)
21
20
 
22
21
  </div>
23
22
 
24
23
  ---
25
24
 
26
- ## Get Started
25
+ ## What OpenYida Provides
26
+
27
+ OpenYida is a bridge between AI coding tools and Yida. It gives agents a stable command-line interface for the full application lifecycle:
28
+
29
+ | Area | What you can do |
30
+ |------|-----------------|
31
+ | Application delivery | Create, update, export, and import Yida applications |
32
+ | Form modeling | Create forms, update fields, inspect schemas, and manage permissions |
33
+ | Custom pages | Generate React-based pages, lint Yida runtime rules, compile, and publish |
34
+ | Workflow automation | Create process forms, configure approval flows, preview process instances |
35
+ | Data operations | Query form/process/task/subform data and run anomaly checks |
36
+ | Integrations | Manage HTTP connectors, connector actions, auth accounts, and automation flows |
37
+ | Operations | Diagnose environment issues, manage login state, configure sharing, upload CDN assets |
38
+
39
+ The result remains a native Yida application: teams can continue editing it in Yida, use existing enterprise security controls, and deploy through the Yida platform.
40
+
41
+ ## Quick Start
42
+
43
+ ### 1. Install
27
44
 
28
45
  ```bash
29
46
  npm install -g openyida
30
47
  ```
31
48
 
32
- **Zero config, works out of the box.** After installation, just chat in Claude Code / OpenCode / Aone Copilot:
49
+ OpenYida requires Node.js 18 or later. The package exposes both `openyida` and `yida` commands.
33
50
 
34
- ### Wukong Installation
51
+ If 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.
35
52
 
36
- Wukong uses manual skill package installation instead of npm:
53
+ ### 2. Check Your Environment
37
54
 
38
- 1. Download the latest skill package (`.zip`) from [GitHub Releases](https://github.com/openyida/openyida/releases)
39
- 2. Open Wukong → **Skill Center** → **Upload Skill**, then select the downloaded package
55
+ Run this from the AI coding workspace where you want OpenYida to operate:
56
+
57
+ ```bash
58
+ openyida env
59
+ openyida env --json
60
+ openyida commands --json
61
+ ```
40
62
 
63
+ OpenYida detects the active agent environment, workspace path, login state, and organization context. Use `--json` when an agent needs a stable machine-readable snapshot.
64
+ `openyida commands --json` emits the command manifest used by the CLI help, so agents can inspect available routes without scraping terminal output.
41
65
 
66
+ ### 3. Log In
42
67
 
68
+ ```bash
69
+ openyida login
43
70
  ```
44
- Build me an IPD system on Yida to manage the full chip production workflow
45
- Help me set up a CRM
46
- Create a personal salary calculator app
71
+
72
+ In Codex, Qoder, and Wukong, OpenYida uses the built-in browser handoff when no valid cached login exists. For terminal QR login, use:
73
+
74
+ ```bash
75
+ openyida login --qr
76
+ openyida login --qr --corp-id dingxxxxxxxx
47
77
  ```
48
78
 
49
- ---
79
+ OpenYida does not install Playwright by default. The default login paths are cached Cookie reuse, terminal QR login, and AI-tool browser handoff.
50
80
 
51
- ## Supported AI Coding Tools
81
+ ### 4. Build With an AI Agent
52
82
 
53
- | Tool | Status |
54
- |------|--------|
55
- | [Claude Code](https://claude.ai/code) | ✅ Full support |
56
- | [Aone Copilot](https://copilot.code.alibaba-inc.com) | ✅ Full support |
57
- | [OpenCode](https://opencode.ai) | ✅ Full support |
58
- | [Cursor](https://cursor.com/) | ✅ Full support |
59
- | [Visual Studio Code](https://code.visualstudio.com/) | ✅ Full support |
60
- | [Qoder](https://qoder.com) | ✅ Full support |
61
- | [Wukong](https://dingtalk.com/wukong) | ✅ Full support |
83
+ Ask your coding agent for a concrete Yida application or workflow:
62
84
 
63
- ---
85
+ ```text
86
+ Create a CRM application in Yida with customer, contact, opportunity, and follow-up forms.
87
+ Build an IPD workflow for chip production, including approval nodes and dashboard pages.
88
+ Generate a public landing page and publish it to my Yida app.
89
+ ```
64
90
 
65
- ## How OpenYida Differs from Other AI App Builders
91
+ The agent can then call OpenYida commands to create the application, generate source files, publish pages, and return the final Yida URLs.
66
92
 
67
- | Dimension | OpenYida | Other AI App Builders |
68
- |-----------|----------|-----------------------|
69
- | Target users | Developers (code-savvy) | Business users (non-developers) |
70
- | Interaction | Natural language + AI chat | Visual drag-and-drop + config panels |
71
- | Output | Yida app (editable, full low-code capabilities) | Config (black-box execution) |
72
- | Deployment | Yida platform | Locked to SaaS platform |
73
- | AI model | Choose the best model for the job | Platform-specified, not swappable |
74
- | Security & compliance | Yida's enterprise-grade security | Platform-dependent |
93
+ ## Wukong Installation
75
94
 
76
- ---
95
+ Wukong uses manual skill package installation instead of npm:
77
96
 
78
- ## Requirements
97
+ 1. Download the latest `.zip` skill package from [GitHub Releases](https://github.com/openyida/openyida/releases).
98
+ 2. Open Wukong.
99
+ 3. Go to **Skill Center** > **Upload Skill** and select the downloaded package.
79
100
 
80
- | Dependency | Version | Purpose |
81
- |------------|---------|---------|
82
- | Node.js | ≥ 18 | CLI runtime & page publishing |
101
+ For Wukong terminal work, make sure its bundled Node.js path is active before running `node`, `npm`, or `npx` commands:
83
102
 
84
- ---
103
+ ```bash
104
+ export PATH="$HOME/.real/.bin/node/bin:$PATH"
105
+ ```
85
106
 
86
- ## CLI Commands
107
+ ## Supported AI Coding Tools
108
+
109
+ | Tool | Support |
110
+ |------|---------|
111
+ | [Codex](https://openai.com/codex/) | Full support |
112
+ | [Claude Code](https://claude.ai/code) | Full support |
113
+ | [Aone Copilot](https://copilot.code.alibaba-inc.com) | Full support |
114
+ | [OpenCode](https://opencode.ai) | Full support |
115
+ | [Cursor](https://cursor.com/) | Full support |
116
+ | [Visual Studio Code](https://code.visualstudio.com/) | Full support |
117
+ | [Qoder](https://qoder.com) | Full support |
118
+ | [Wukong](https://dingtalk.com/wukong) | Full support |
119
+
120
+ ## How It Works
121
+
122
+ ```mermaid
123
+ flowchart LR
124
+ A["AI coding agent"] --> B["OpenYida CLI"]
125
+ B --> C["Environment detection"]
126
+ B --> D["Login and organization context"]
127
+ B --> E["Yida API operations"]
128
+ B --> F["Local page generation and compile"]
129
+ E --> G["Native Yida app"]
130
+ F --> G
131
+ ```
132
+
133
+ OpenYida keeps platform-specific behavior inside the CLI, while agents interact with predictable commands and project files.
134
+
135
+ ## Project Layout
136
+
137
+ ```text
138
+ openyida/
139
+ ├── bin/yida.js # CLI entry and command routing
140
+ ├── lib/
141
+ │ ├── app/ # Application, form, page, import/export commands
142
+ │ ├── auth/ # Login, QR login, browser handoff, organization switch
143
+ │ ├── connector/ # HTTP connector lifecycle and smart creation
144
+ │ ├── core/ # Environment detection, i18n, diagnostics, data commands
145
+ │ ├── process/ # Process form creation, configuration, preview
146
+ │ ├── report/ # Yida report and chart generation
147
+ │ └── samples/ # Templates emitted by openyida sample
148
+ ├── project/ # Default workspace template for generated Yida projects
149
+ ├── yida-skills/ # Agent skills and Yida API references
150
+ └── scripts/ # CI, packaging, and installation helpers
151
+ ```
152
+
153
+ ## Capabilities
154
+
155
+ ### Application and Form Management
87
156
 
88
157
  ```bash
89
- openyida append-chart # Append chart to an existing report
90
- openyida auth # Login status management (status/login/refresh/logout)
91
- openyida cdn-config # Configure CDN image upload (Aliyun OSS + CDN)
92
- openyida cdn-refresh # Refresh CDN cache
93
- openyida cdn-upload # Upload images to CDN
94
- openyida configure-process # Configure and publish process rules
95
- openyida connector # HTTP connector management
96
- openyida copy # Initialize project working directory for current AI tool
97
- openyida create-app # Create a Yida application
98
- openyida create-form # Create / update a form page
99
- openyida create-page # Create a custom display page
100
- openyida create-process # Create a process form (integrated)
101
- openyida create-report # Create a Yida report
102
- openyida process preview # Preview process instance (generate visual flowchart)
103
- openyida data # Unified data management (form/process/task/subform)
104
- openyida data check <appType> <formUuid> <rules.json> [options] # Detect anomalous records in process forms based on custom rules
105
- openyida doctor # Environment diagnostics and auto-repair
106
- openyida dws <command> [args] # DingTalk CLI (Contacts/Calendar/Todo/Approval, etc.)
107
- openyida env # Detect current AI tool environment and login status
108
- openyida export # Export application migration package
109
- openyida export-conversation [format] # Export AI conversation history
110
- openyida flash-to-prd <appType> [options] # Flash note to PRD (supports meeting recognition)
111
- openyida get-page-config # Query page public access / sharing config
112
- openyida get-permission # Query form permission configuration
113
- openyida get-schema # Fetch form schema
114
- openyida import # Import migration package to rebuild application
115
- openyida integration create <appType> [options] # Create integration & automation flow
116
- openyida login # Log in to Yida (uses cache, falls back to QR code)
117
- openyida logout # Log out / switch account
118
- openyida org # Organization management (list/switch)
119
- openyida publish # Compile and publish a custom page
120
- openyida query-data # Query form instance data
121
- openyida save-permission # Save form permission configuration
122
- openyida save-share-config # Save public access / sharing config
123
- openyida task-center [filter] # Global task center (Todo/Created/Processed/CC/Submit)
124
- openyida update-form-config # Update form configuration
125
- openyida verify-short-url # Verify if a short URL is accessible
158
+ openyida create-app "CRM"
159
+ openyida app-list --size 20
160
+ openyida create-form create APP_XXX "Customer" fields.json
161
+ openyida create-form update APP_XXX FORM_XXX changes.json
162
+ openyida get-schema APP_XXX FORM_XXX
163
+ openyida get-schema APP_XXX --all --output-dir .cache/schemas
126
164
  ```
127
165
 
128
- ---
166
+ ### Custom Page Development
129
167
 
130
- ## Demo
168
+ ```bash
169
+ openyida create-page APP_XXX "Dashboard"
170
+ openyida generate-page product-homepage --spec page.json --output pages/src/home.jsx --compile
171
+ openyida check-page pages/src/home.jsx
172
+ openyida compile pages/src/home.jsx
173
+ openyida publish pages/src/home.jsx APP_XXX FORM_XXX
174
+ ```
175
+
176
+ `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.
177
+
178
+ ### Workflow, Data, and Permissions
179
+
180
+ ```bash
181
+ openyida create-process APP_XXX "Purchase Request" fields.json process.json
182
+ openyida configure-process APP_XXX FORM_XXX process.json
183
+ openyida process preview APP_XXX PROC_INST_XXX --output process.html
184
+ openyida data query form APP_XXX FORM_XXX --page 1 --size 20
185
+ openyida get-permission APP_XXX FORM_XXX
186
+ ```
131
187
 
132
- ### 🏢 Business Systems — IPD / CRM
188
+ ### Connectors, Integrations, and Reports
133
189
 
134
- Describe your requirements in one sentence — AI generates a complete multi-form business system.
190
+ ```bash
191
+ openyida connector smart-create --curl "curl https://api.example.com/users"
192
+ openyida connector list
193
+ openyida integration create APP_XXX FORM_XXX "Sync customer data"
194
+ openyida create-report APP_XXX "Sales Dashboard" charts.json
195
+ openyida append-chart APP_XXX REPORT_XXX chart.json
196
+ ```
197
+
198
+ ## CLI Reference
199
+
200
+ Run `openyida --help` or `openyida <command> --help` for detailed usage.
201
+
202
+ ### Environment and Authentication
203
+
204
+ | Command | Description |
205
+ |---------|-------------|
206
+ | `openyida env [--json]` | Detect the active AI tool environment and login state |
207
+ | `openyida env <list\|show\|switch\|add\|remove>` | Manage public/private Yida environment profiles |
208
+ | `openyida commands [--json]` | Emit the machine-readable command manifest |
209
+ | `openyida login [--qr\|--browser] [--corp-id <corpId>]` | Log in to Yida |
210
+ | `openyida logout` | Log out or switch account |
211
+ | `openyida auth <status\|login\|refresh\|logout>` | Manage login status |
212
+ | `openyida org list` | List accessible organizations |
213
+ | `openyida org switch --corp-id <corpId>` | Switch organization without logging in again |
214
+
215
+ ### Applications
216
+
217
+ | Command | Description |
218
+ |---------|-------------|
219
+ | `openyida app-list [--size N]` | List Yida applications |
220
+ | `openyida create-app "<name>" [options]` | Create an application and output `appType` |
221
+ | `openyida update-app <appType> --name "..."` | Update application metadata |
222
+ | `openyida export <appType> [output]` | Export an application migration package |
223
+ | `openyida import <file> [name]` | Import a migration package into a target environment |
224
+
225
+ ### Forms and Pages
226
+
227
+ | Command | Description |
228
+ |---------|-------------|
229
+ | `openyida create-form create <appType> "<name>" <fields.json>` | Create a form page |
230
+ | `openyida create-form update <appType> <formUuid> <changes.json>` | Update a form page |
231
+ | `openyida list-forms <appType> [--keyword <text>]` | List forms in an application |
232
+ | `openyida get-schema <appType> <formUuid\|--all>` | Fetch one form schema or batch export all schemas |
233
+ | `openyida create-page <appType> "<name>"` | Create a custom display page |
234
+ | `openyida generate-page <template> [--spec file]` | Generate custom page source from templates |
235
+ | `openyida check-page <sourceFile> [--json]` | Check page compatibility with Yida runtime rules |
236
+ | `openyida compile <sourceFile>` | Compile a custom page locally |
237
+ | `openyida publish <sourceFile> <appType> <formUuid>` | Compile and publish a custom page |
238
+ | `openyida update-form-config <appType> <formUuid> <isRenderNav> <title>` | Update page/form display configuration |
239
+
240
+ ### Data, Permissions, and Sharing
241
+
242
+ | Command | Description |
243
+ |---------|-------------|
244
+ | `openyida data <action> <resource> [args]` | Unified data management for forms, processes, tasks, and subforms |
245
+ | `openyida data check <appType> <formUuid> <rules.json>` | Detect anomalous process-form records |
246
+ | `openyida task-center <type> [options]` | Query todo, created, processed, CC, or proxy-submitted tasks |
247
+ | `openyida get-permission <appType> <formUuid>` | Query form permission configuration |
248
+ | `openyida save-permission <appType> <formUuid> [options]` | Save form permission configuration |
249
+ | `openyida verify-short-url <appType> <formUuid> <url>` | Verify a short URL |
250
+ | `openyida save-share-config <appType> <formUuid> <url> <isOpen> [openAuth]` | Save public access or sharing configuration |
251
+ | `openyida get-page-config <appType> <formUuid>` | Query public access or sharing configuration |
252
+
253
+ ### Workflow, Reports, and Integrations
254
+
255
+ | Command | Description |
256
+ |---------|-------------|
257
+ | `openyida create-process <appType> ...` | Create a process form and configure workflow |
258
+ | `openyida configure-process <appType> ...` | Configure and publish process rules |
259
+ | `openyida process preview <appType> <processInstanceId> [--output <path>]` | Generate a visual process preview |
260
+ | `openyida create-report <appType> "<name>" <charts.json>` | Create a Yida report |
261
+ | `openyida append-chart <appType> <reportId> <charts.json>` | Append a chart to an existing report |
262
+ | `openyida connector <sub-command>` | Manage HTTP connectors, actions, tests, and auth accounts |
263
+ | `openyida integration create <appType> <formUuid> <flowName> [options]` | Create an integration automation flow |
264
+ | `openyida dws <command> [args]` | Access DingTalk CLI capabilities such as contacts, calendar, todo, and approval |
265
+
266
+ ### Utilities
267
+
268
+ | Command | Description |
269
+ |---------|-------------|
270
+ | `openyida copy [--force]` | Initialize the local `project/` workspace |
271
+ | `openyida sample [--list]` | Emit sample templates |
272
+ | `openyida doctor [--fix]` | Diagnose and repair environment issues |
273
+ | `openyida formula evaluate <formula\|file> [--schema file]` | Static-check formula syntax and field references |
274
+ | `openyida update` | Update OpenYida through npm |
275
+ | `openyida export-conversation [options]` | Export AI conversation history |
276
+ | `openyida flash-to-prd --file <path> --name "<project>"` | Convert flash notes or meeting notes into a PRD prompt |
277
+ | `openyida cdn-config` | Configure image upload to Aliyun OSS/CDN |
278
+ | `openyida cdn-upload <image-path>` | Upload an image to CDN |
279
+ | `openyida cdn-refresh [options]` | Refresh CDN cache |
280
+
281
+ ## Agent Skills
282
+
283
+ The `yida-skills/` directory contains agent-facing instructions and references for common Yida workflows. It is organized as a small skill library:
284
+
285
+ | Path | Purpose |
286
+ |------|---------|
287
+ | `yida-skills/SKILL.md` | Entry point and skill index |
288
+ | `yida-skills/skills/` | Self-contained sub-skills for app, form, process, page, data, and integration work |
289
+ | `yida-skills/references/` | Shared Yida API, model API, and query-condition references |
290
+
291
+ When OpenYida is used inside a supported AI coding environment, these skills help the agent choose the right command sequence and file conventions.
292
+
293
+ For 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.
294
+
295
+ ## Examples
296
+
297
+ ### Business Systems: IPD and CRM
298
+
299
+ Describe your requirements in one sentence; the agent can create a complete multi-form Yida application.
135
300
 
136
301
  ![IPD](https://img.alicdn.com/imgextra/i2/O1CN01YBEMa929J7sD9v8U1_!!6000000008046-2-tps-3840-3366.png)
137
302
 
138
303
  ![CRM](https://img.alicdn.com/imgextra/i3/O1CN01kn0Vcn1H5OkbQaizA_!!6000000000706-2-tps-3840-2168.png)
139
304
 
140
- ### 💰 Utilities Personal Salary Calculator
305
+ ### Custom Pages and Utilities
141
306
 
142
307
  ![Salary Calculator](https://gw.alicdn.com/imgextra/i2/O1CN017TeJuE1reVH2Dj7b7_!!6000000005656-2-tps-5114-2468.png)
143
308
 
144
- ### 🌐 Landing Page — Enterprise Collaboration
145
-
146
- Generate a complete enterprise product landing page from a single sentence.
147
-
148
309
  ![Enterprise Collaboration](https://gw.alicdn.com/imgextra/i1/O1CN01EZtvfs1cxXV00UaXi_!!6000000003667-2-tps-5118-2470.png)
149
310
 
150
- ### 🏮 Campaigns — Lantern Riddle Game
151
-
152
- AI generates riddle images; users guess answers with humorous AI feedback on wrong guesses.
311
+ ### Interactive Campaigns
153
312
 
154
313
  ![Lantern Riddle Game](https://img.alicdn.com/imgextra/i3/O1CN01dCoscP25jSAtAB9o3_!!6000000007562-2-tps-2144-1156.png)
155
314
 
156
- ---
157
-
158
315
  ## Common Prompts
159
316
 
160
- ```
161
- Build me a [xxx] application
162
- Generate an app from this requirements document
163
- Create a [xxx] form page
164
- Add a [xxx] field to [xxx] page, field name: [name], type: [type]
165
- Make the [xxx] field on [xxx] page required
166
- Publish the [xxx] page
167
- Make the page publicly accessible
168
- Re-login / log out
317
+ ```text
318
+ Build a Yida application for [business scenario].
319
+ Generate an app from this requirements document.
320
+ Create a [name] form page with these fields.
321
+ Add a required [field type] field named [field name] to [form name].
322
+ Publish this custom page to the Yida app.
323
+ Make this page publicly accessible.
324
+ Export the application as a migration package.
169
325
  ```
170
326
 
171
- ---
172
-
173
327
  ## OpenClaw Integration
174
328
 
175
- Use via [yida-app](https://clawhub.ai/nicky1108/yida-app) in OpenClaw:
329
+ Use OpenYida through [yida-app](https://clawhub.ai/nicky1108/yida-app) in OpenClaw:
176
330
 
177
331
  ```bash
178
332
  npx clawhub@latest install nicky1108/yida-app
179
333
  ```
180
334
 
181
- ---
335
+ ## Development
336
+
337
+ ```bash
338
+ git clone https://github.com/openyida/openyida.git
339
+ cd openyida
340
+ npm install
341
+ npm run check:ci
342
+ ```
343
+
344
+ Useful checks:
345
+
346
+ | Command | Purpose |
347
+ |---------|---------|
348
+ | `npm test` | Run Jest tests |
349
+ | `npm run lint` | Run ESLint |
350
+ | `npm run check:syntax` | Validate JavaScript syntax |
351
+ | `npm run check:structure` | Validate project structure |
352
+ | `npm run check:package` | Validate npm package contents |
353
+
354
+ When 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.
355
+
356
+ ## Security and Configuration
357
+
358
+ - Login cookies are cached locally and should never be hard-coded into source files.
359
+ - Private deployment environments are managed through `lib/core/env-manager.js`.
360
+ - Yida API requests should use the active environment base URL and authenticated cookies.
361
+ - For multi-organization accounts, prefer explicit `--corp-id` values in non-interactive automation.
182
362
 
183
363
  ## Community
184
364
 
185
- Scan the QR code to join the OpenYida user group on DingTalk for the latest updates and support.
365
+ Scan the QR code to join the OpenYida DingTalk user group for updates and support.
186
366
 
187
367
  ![Join OpenYida Community](https://img.alicdn.com/imgextra/i4/O1CN01RAlxmO1qF1cxRguyj_!!6000000005465-2-tps-350-356.png)
188
368
 
189
- ---
190
-
191
369
  ## Contributors
192
370
 
193
- Thanks to everyone who has contributed to OpenYida! Read the [Contributing Guide](./CONTRIBUTING.md) to get involved.
371
+ Thanks to everyone who has contributed to OpenYida. Read the [Contributing Guide](./CONTRIBUTING.md) to get involved.
194
372
 
195
373
  <p align="left">
196
- <a href="https://github.com/yize"><img src="https://avatars.githubusercontent.com/u/1578814?v=4&s=48" width="48" height="48" alt="九神" title="九神"/></a>
197
- <a href="https://github.com/alex-mm"><img src="https://avatars.githubusercontent.com/u/3302053?v=4&s=48" width="48" height="48" alt="天晟" title="天晟"/></a>
198
- <a href="https://github.com/nicky1108"><img src="https://avatars.githubusercontent.com/u/4279283?v=4&s=48" width="48" height="48" alt="nicky1108" title="nicky1108"/></a>
199
- <a href="https://github.com/angelinheys"><img src="https://avatars.githubusercontent.com/u/49426983?v=4&s=48" width="48" height="48" alt="angelinheys" title="angelinheys"/></a>
200
- <a href="https://github.com/yipengmu"><img src="https://avatars.githubusercontent.com/u/3232735?v=4&s=48" width="48" height="48" alt="yipengmu" title="yipengmu"/></a>
201
- <a href="https://github.com/Waawww"><img src="https://avatars.githubusercontent.com/u/31886449?v=4&s=48" width="48" height="48" alt="Waawww" title="Waawww"/></a>
202
- <a href="https://github.com/kangjiano"><img src="https://avatars.githubusercontent.com/u/54129385?v=4&s=48" width="48" height="48" alt="kangjiano" title="kangjiano"/></a>
203
- <a href="https://github.com/ElZe98"><img src="https://avatars.githubusercontent.com/u/35736727?v=4&s=48" width="48" height="48" alt="ElZe98" title="ElZe98"/></a>
204
- <a href="https://github.com/OAHyuhao"><img src="https://avatars.githubusercontent.com/u/99954323?v=4&s=48" width="48" height="48" alt="OAHyuhao" title="OAHyuhao"/></a>
205
- <a href="https://github.com/xiaofu704"><img src="https://avatars.githubusercontent.com/u/209416122?v=4&s=48" width="48" height="48" alt="xiaofu704" title="xiaofu704"/></a>
206
- <a href="https://github.com/guchenglin111"><img src="https://avatars.githubusercontent.com/u/10860875?v=4&s=48" width="48" height="48" alt="guchenglin111" title="guchenglin111"/></a>
207
- <a href="https://github.com/liug0911"><img src="https://avatars.githubusercontent.com/u/1578814?v=4&s=48" width="48" height="48" alt="LIUG" title="LIUG"/></a>
208
- <a href="https://github.com/sunliz-xiuli"><img src="https://avatars.githubusercontent.com/u/76982855?v=4&s=48" width="48" height="48" alt="sunliz-xiuli" title="sunliz-xiuli"/></a>
209
- <a href="https://github.com/M12REDX"><img src="https://avatars.githubusercontent.com/u/22703542?v=4&s=48" width="48" height="48" alt="M12REDX" title="M12REDX"/></a>
210
- <a href="https://github.com/key-668"><img src="https://avatars.githubusercontent.com/u/270536058?v=4&s=48" width="48" height="48" alt="再不喝汽水" title="再不喝汽水"/></a>
374
+ <a href="https://github.com/yize"><img align="left" src="https://avatars.githubusercontent.com/u/1578814?v=4&s=40" width="40" height="40" alt="九神" title="九神"/></a>
375
+ <a href="https://github.com/alex-mm"><img align="left" src="https://avatars.githubusercontent.com/u/3302053?v=4&s=40" width="40" height="40" alt="天晟" title="天晟"/></a>
376
+ <a href="https://github.com/nicky1108"><img align="left" src="https://avatars.githubusercontent.com/u/4279283?v=4&s=40" width="40" height="40" alt="nicky1108" title="nicky1108"/></a>
377
+ <a href="https://github.com/angelinheys"><img align="left" src="https://avatars.githubusercontent.com/u/49426983?v=4&s=40" width="40" height="40" alt="angelinheys" title="angelinheys"/></a>
378
+ <a href="https://github.com/yipengmu"><img align="left" src="https://avatars.githubusercontent.com/u/3232735?v=4&s=40" width="40" height="40" alt="yipengmu" title="yipengmu"/></a>
379
+ <a href="https://github.com/Waawww"><img align="left" src="https://avatars.githubusercontent.com/u/31886449?v=4&s=40" width="40" height="40" alt="Waawww" title="Waawww"/></a>
380
+ <a href="https://github.com/kangjiano"><img align="left" src="https://avatars.githubusercontent.com/u/54129385?v=4&s=40" width="40" height="40" alt="kangjiano" title="kangjiano"/></a>
381
+ <a href="https://github.com/ElZe98"><img align="left" src="https://avatars.githubusercontent.com/u/35736727?v=4&s=40" width="40" height="40" alt="ElZe98" title="ElZe98"/></a>
382
+ <a href="https://github.com/OAHyuhao"><img align="left" src="https://avatars.githubusercontent.com/u/99954323?v=4&s=40" width="40" height="40" alt="OAHyuhao" title="OAHyuhao"/></a>
383
+ <a href="https://github.com/xiaofu704"><img align="left" src="https://avatars.githubusercontent.com/u/209416122?v=4&s=40" width="40" height="40" alt="xiaofu704" title="xiaofu704"/></a>
384
+ <a href="https://github.com/guchenglin111"><img align="left" src="https://avatars.githubusercontent.com/u/10860875?v=4&s=40" width="40" height="40" alt="guchenglin111" title="guchenglin111"/></a>
385
+ <a href="https://github.com/liug0911"><img align="left" src="https://avatars.githubusercontent.com/u/1578814?v=4&s=40" width="40" height="40" alt="LIUG" title="LIUG"/></a>
386
+ <a href="https://github.com/sunliz-xiuli"><img align="left" src="https://avatars.githubusercontent.com/u/76982855?v=4&s=40" width="40" height="40" alt="sunliz-xiuli" title="sunliz-xiuli"/></a>
387
+ <a href="https://github.com/M12REDX"><img align="left" src="https://avatars.githubusercontent.com/u/22703542?v=4&s=40" width="40" height="40" alt="M12REDX" title="M12REDX"/></a>
388
+ <a href="https://github.com/key-668"><img align="left" src="https://avatars.githubusercontent.com/u/270536058?v=4&s=40" width="40" height="40" alt="再不喝汽水" title="再不喝汽水"/></a>
389
+ <br clear="left" />
211
390
  </p>
212
391
 
213
- ---
214
-
215
392
  ## License
216
393
 
217
- [MIT](./LICENSE) © 2026 Alibaba Group
394
+ [MIT](./LICENSE) © 2026 Alibaba Group Holding Limited