@unityclaw/skills 1.0.6 → 1.0.9

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.
package/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # @unityclaw/skills
2
2
 
3
- UnityClaw Skills - Claude Code and OpenClaw skill definitions for AI-powered image/video generation, media analysis, and document processing.
3
+ UnityClaw Skills for Claude Code and OpenClaw.
4
4
 
5
5
  ## Installation
6
6
 
@@ -14,20 +14,15 @@ npx @unityclaw/skills --help
14
14
 
15
15
  ## API Key Configuration
16
16
 
17
- All skills require an API key. You can configure it using the SDK CLI:
17
+ All skills require an API key:
18
18
 
19
19
  ```bash
20
- # Install SDK globally
21
20
  npm install -g @unityclaw/sdk
22
-
23
- # Configure API key (stored in ~/.unityclaw/config.json)
24
21
  unityclaw-sdk config set apiKey your-api-key
25
-
26
- # Verify configuration
27
22
  unityclaw-sdk config
28
23
  ```
29
24
 
30
- Or set the environment variable:
25
+ Or:
31
26
 
32
27
  ```bash
33
28
  export UNITYCLAW_API_KEY=your-api-key
@@ -35,102 +30,107 @@ export UNITYCLAW_API_KEY=your-api-key
35
30
 
36
31
  ## CLI Commands
37
32
 
38
- ### Install Skills
39
-
40
- Install skills to Claude Code or OpenClaw:
41
-
42
33
  ```bash
43
34
  # Install all skills to Claude Code
44
35
  npx @unityclaw/skills install
45
36
 
46
37
  # Install specific skills
47
- npx @unityclaw/skills install unityclaw-image-generation unityclaw-video-generation-sora
38
+ npx @unityclaw/skills install unityclaw-image-generation unityclaw-video-generation-kling
48
39
 
49
40
  # Install to OpenClaw
50
41
  npx @unityclaw/skills install --target openclaw
51
- ```
52
42
 
53
- ### List Available Skills
54
-
55
- ```bash
43
+ # List available skills
56
44
  npx @unityclaw/skills list
57
- ```
58
45
 
59
- ### Update Packages
46
+ # Update sdk + skills
47
+ npx @unityclaw/skills update
48
+ ```
60
49
 
61
- Update SDK and skills to the latest version:
50
+ ## Reorganized Skill List
62
51
 
63
- ```bash
64
- # Update local packages
65
- npx @unityclaw/skills update
52
+ This list is aligned with `~/moox/field-feishu` shortcuts and `server` `ParameterModel` definitions.
66
53
 
67
- # Update global packages
68
- npx @unityclaw/skills update --global
69
- ```
54
+ - Removed from skill list: `sora/*`, `veo/*`
55
+ - No version-level split for same model family (for example, no separate `jimeng-image-v3` skill)
56
+ - Document conversion is abstracted as one skill/API entry instead of many individual shortcut skills
70
57
 
71
- ### Execute Skills Directly
58
+ ### Image
72
59
 
73
- Execute a skill via Claude Code CLI:
60
+ - [unityclaw-image-generation](./unityclaw-image-generation/SKILL.md)
61
+ : Covers `gemini/image/v2` + `jimeng/image` (unified)
62
+ - [unityclaw-image-compress](./unityclaw-image-compress/SKILL.md)
63
+ : Covers `image/compress`
74
64
 
75
- ```bash
76
- # Generate an image
77
- npx @unityclaw/skills /unityclaw-image-generation 我要一张竖屏的桌面背景图
65
+ ### Video
78
66
 
79
- # Analyze a video
80
- npx @unityclaw/skills /unityclaw-media-analysis https://youtube.com/watch?v=...
81
- ```
67
+ - [unityclaw-video-generation-kling](./unityclaw-video-generation-kling/SKILL.md)
68
+ : Covers `kling/video`
69
+ - [unityclaw-video-generation-jimeng-doubao](./unityclaw-video-generation-jimeng-doubao/SKILL.md)
70
+ : Covers `jimeng/video`, `doubao/video`
71
+ - [unityclaw-video-generation-wan-minimax](./unityclaw-video-generation-wan-minimax/SKILL.md)
72
+ : Covers `wan/video`, `minimax/video`
82
73
 
83
- ## Available Skills
74
+ ### Document
84
75
 
85
- ### Image Skills
76
+ - [unityclaw-document-translation](./unityclaw-document-translation/SKILL.md)
77
+ : Covers `doc/translate`
78
+ - [unityclaw-document-convert](./unityclaw-document-convert/SKILL.md)
79
+ : Covers generic `doc_convert/image` + `doc_convert/pdf`
86
80
 
87
- | Skill | Description | Emoji |
88
- |-------|-------------|-------|
89
- | [unityclaw-image-generation](./unityclaw-image-generation/SKILL.md) | Generate images using Gemini or JiMeng models | 🎨 |
90
- | [unityclaw-image-compress](./unityclaw-image-compress/SKILL.md) | Compress images with quality control | 🗜️ |
81
+ ### Media
91
82
 
92
- ### Video Skills
93
- | Skill | Description | Emoji |
94
- |-------|-------------|-------|
95
- | [unityclaw-video-generation-kling](./unityclaw-video-generation-kling/SKILL.md) | Generate videos using Kling AI | 📹 |
96
- | [unityclaw-video-generation-other](./unityclaw-video-generation-other/SKILL.md) | Generate videos using Doubao, Wan, MiniMax, JiMeng | 🎞️ |
83
+ - [unityclaw-media-analysis](./unityclaw-media-analysis/SKILL.md)
84
+ : Covers `media_analysis`
85
+ - [unityclaw-media-stats](./unityclaw-media-stats/SKILL.md)
86
+ : Covers `media_stats`
87
+ - [unityclaw-media-user-info](./unityclaw-media-user-info/SKILL.md)
88
+ : Covers `media_user_info`
89
+ - [unityclaw-media-download-xhs](./unityclaw-media-download-xhs/SKILL.md)
90
+ : Covers `xiaohongshu/download`
91
+ - [unityclaw-video-frame-extract](./unityclaw-video-frame-extract/SKILL.md)
92
+ : Covers `video/frame`
97
93
 
98
- ### Document Skills
94
+ ### IDP
99
95
 
100
- | Skill | Description | Emoji |
101
- |-------|-------------|-------|
102
- | [unityclaw-document-translation](./unityclaw-document-translation/SKILL.md) | Translate documents between languages | 🌐 |
103
- | [unityclaw-document-convert](./unityclaw-document-convert/SKILL.md) | Convert document formats (PDF/Word/PPT/Excel/Image) | 📄 |
96
+ - [unityclaw-idp-personal-documents](./unityclaw-idp-personal-documents/SKILL.md)
97
+ : Covers `idp/id_card`, `idp/vehicle_license`, `idp/bank_card`
98
+ - [unityclaw-idp-invoice-extraction](./unityclaw-idp-invoice-extraction/SKILL.md)
99
+ : Covers `idp/vat_invoice`, `idp/train_invoice`, `idp/taxi_invoice`
100
+ - [unityclaw-idp-business-extraction](./unityclaw-idp-business-extraction/SKILL.md)
101
+ : Covers `idp/business_license`, `idp/business_card`
102
+ - [unityclaw-idp-contract-extraction](./unityclaw-idp-contract-extraction/SKILL.md)
103
+ : Covers `idp/contract`
104
104
 
105
- ### Media Skills
105
+ IDP is intentionally split by scenario (personal/invoice/business/contract), instead of one generic skill, to improve skill routing accuracy and parameter selection success.
106
106
 
107
- | Skill | Description | Emoji |
108
- |-------|-------------|-------|
109
- | [unityclaw-media-analysis](./unityclaw-media-analysis/SKILL.md) | Analyze video/audio content and extract insights | 📊 |
107
+ ## Local File Input Support
110
108
 
111
- ## Programmatic Usage
109
+ With latest SDK, skill examples can use local file paths directly:
112
110
 
113
- ```typescript
114
- import { listSkills, installSkills, executeSkill } from '@unityclaw/skills';
111
+ ```ts
112
+ attachment: [{ path: './files/input.pdf' }]
113
+ ```
115
114
 
116
- // List available skills
117
- const skills = await listSkills();
118
- console.log(skills);
115
+ SDK will auto-upload the local file through `/api/upload` and replace it with a valid `tmp_url`.
119
116
 
120
- // Install skills to Claude Code
121
- await installSkills('claude', ['unityclaw-image-generation']);
117
+ ## Parameter Normalization Notes
122
118
 
123
- // Install all skills to OpenClaw
124
- await installSkills('openclaw');
119
+ Only endpoints that **require** field-feishu structures are normalized.
125
120
 
126
- // Execute a skill
127
- await executeSkill('/unityclaw-image-generation A beautiful sunset');
128
- ```
121
+ - Text array conversion (`string` -> `[{ type: 'text', text: '...' }]`) is applied only for:
122
+ `jimeng/image`, `jimeng/image/v3`, `sora/video`, `sora/video/stable`, `veo/video`, `jimeng/video`, `doubao/video`.
123
+ - Label conversion (`'16:9'` -> `{ value: '16:9', label: '16:9' }`) is applied only for endpoints whose `ParameterModel` expects `LabelFieldItem`.
124
+ - For `doubao/video`, duration should use numeric value in `LabelFieldItem.value` when provided (for example `{ value: 5, label: '5' }`).
125
+ - Endpoints that already support plain strings are kept as-is (no forced conversion).
126
+ - If you pass full field-feishu structures, SDK keeps them unchanged.
129
127
 
130
- ## SDK Documentation
128
+ ## Skill Version Rule
131
129
 
132
- - [npm: @unityclaw/sdk](https://www.npmjs.com/package/@unityclaw/sdk)
133
- - [UnityClaw Homepage](https://unityclaw.com)
130
+ - Every `unityclaw-*/SKILL.md` frontmatter `version` is auto-synced to `skills/package.json` version during `npm run build`.
131
+ - Every `SKILL.md` also contains an `SDK Version Check Rule` block:
132
+ - If local `@unityclaw/sdk` version is lower than the skill version, agent should stop and prompt SDK upgrade first.
133
+ - Suggested command: `npm i @unityclaw/sdk@latest`.
134
134
 
135
135
  ## License
136
136
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@unityclaw/skills",
3
- "version": "1.0.6",
3
+ "version": "1.0.9",
4
4
  "description": "UnityClaw Skills - Claude Code and OpenClaw skill definitions for AI-powered image/video generation, media analysis, and more",
5
5
  "type": "module",
6
6
  "bin": {
@@ -19,7 +19,8 @@
19
19
  "unityclaw-*/SKILL.md"
20
20
  ],
21
21
  "scripts": {
22
- "build": "tsup src/index.ts src/cli.ts --format cjs,esm --dts --clean",
22
+ "sync:skill-metadata": "node scripts/sync-skill-metadata.mjs",
23
+ "build": "npm run sync:skill-metadata && tsup src/index.ts src/cli.ts --format cjs,esm --dts --clean",
23
24
  "dev": "tsup src/index.ts src/cli.ts --format cjs,esm --dts --watch",
24
25
  "typecheck": "tsc --noEmit",
25
26
  "prepublishOnly": "npm run build"
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  name: unityclaw-document-convert
3
3
  description: Convert documents between formats (PDF, Word, PPT, Excel, Image)
4
- version: 1.0.1
4
+ version: 1.0.9
5
5
  metadata:
6
6
  openclaw:
7
7
  requires:
@@ -22,6 +22,7 @@ metadata:
22
22
  # UnityClaw Document Convert
23
23
 
24
24
  Convert documents between various formats including PDF, Word, PowerPoint, Excel, and images.
25
+ Recommended API is unified `client.document.convertDocument(...)`.
25
26
 
26
27
  ## Installation
27
28
 
@@ -71,11 +72,13 @@ import { UnityClawClient } from '@unityclaw/sdk';
71
72
 
72
73
  const client = new UnityClawClient();
73
74
 
74
- // Convert PDF to Word
75
- const result = await client.document.pdf2Word({
75
+ // Convert PDF to Word (unified API)
76
+ const result = await client.document.convertDocument({
76
77
  attachment: [
77
- { tmp_url: 'https://example.com/document.pdf', name: 'document.pdf' }
78
- ]
78
+ { path: './files/document.pdf' }
79
+ ],
80
+ input_format: 'pdf',
81
+ output_format: 'docx'
79
82
  });
80
83
 
81
84
  // ✅ Correct: Check result.success, access data via result.response.data
@@ -108,6 +111,7 @@ if (result.success && result.response?.data) {
108
111
 
109
112
  | Method | Description |
110
113
  |--------|-------------|
114
+ | `convertDocument()` | Recommended unified conversion API |
111
115
  | `convert()` | Generic conversion with format specification |
112
116
 
113
117
  ## API Reference
@@ -409,3 +413,12 @@ console.log('Downloaded Files:', result.attachments);
409
413
 
410
414
  - [unityclaw-document-translation](../unityclaw-document-translation/SKILL.md) - Translate documents
411
415
  - [unityclaw-image-compress](../unityclaw-image-compress/SKILL.md) - Compress images before conversion
416
+
417
+ <!-- SDK_VERSION_RULE_START -->
418
+ ## SDK Version Check Rule
419
+
420
+ - Before invoking this skill, check local `@unityclaw/sdk` version.
421
+ - Required minimum SDK version: `1.0.9`
422
+ - If local SDK version is lower than this skill version, stop and prompt user to upgrade SDK first.
423
+ - Suggested command: `npm i @unityclaw/sdk@latest`
424
+ <!-- SDK_VERSION_RULE_END -->
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  name: unityclaw-document-translation
3
3
  description: Translate documents between multiple languages while preserving formatting
4
- version: 1.0.1
4
+ version: 1.0.9
5
5
  metadata:
6
6
  openclaw:
7
7
  requires:
@@ -73,7 +73,7 @@ const client = new UnityClawClient();
73
73
 
74
74
  const result = await client.document.translate({
75
75
  attachment: [
76
- { tmp_url: 'https://example.com/document.pdf', name: 'document.pdf' }
76
+ { path: './files/document.pdf' }
77
77
  ],
78
78
  source_language: { value: 'en', label: 'English' },
79
79
  target_language: { value: 'zh', label: 'Chinese' }
@@ -307,3 +307,12 @@ console.log('Downloaded Files:', result.attachments);
307
307
 
308
308
  - [unityclaw-document-convert](../unityclaw-document-convert/SKILL.md) - Convert document formats
309
309
  - [unityclaw-media-analysis](../unityclaw-media-analysis/SKILL.md) - Analyze video/audio content
310
+
311
+ <!-- SDK_VERSION_RULE_START -->
312
+ ## SDK Version Check Rule
313
+
314
+ - Before invoking this skill, check local `@unityclaw/sdk` version.
315
+ - Required minimum SDK version: `1.0.9`
316
+ - If local SDK version is lower than this skill version, stop and prompt user to upgrade SDK first.
317
+ - Suggested command: `npm i @unityclaw/sdk@latest`
318
+ <!-- SDK_VERSION_RULE_END -->
@@ -0,0 +1,63 @@
1
+ ---
2
+ name: unityclaw-idp-business-extraction
3
+ description: Extract fields from business documents (business license, business card)
4
+ version: 1.0.9
5
+ metadata:
6
+ openclaw:
7
+ requires:
8
+ env:
9
+ - UNITYCLAW_API_KEY
10
+ bins:
11
+ - node
12
+ - npm
13
+ primaryEnv: UNITYCLAW_API_KEY
14
+ emoji: "🏢"
15
+ homepage: https://unityclaw.com
16
+ install:
17
+ - kind: node
18
+ package: "@unityclaw/sdk"
19
+ bins: []
20
+ ---
21
+
22
+ # UnityClaw IDP - Business Extraction
23
+
24
+ Use this skill for business document extraction:
25
+ - `business_license`
26
+ - `business_card`
27
+
28
+ ## SDK APIs
29
+
30
+ ```typescript
31
+ await client.idp.businessLicense({ attachments: [{ path: './files/business-license.jpg' }] });
32
+ await client.idp.businessCard({ attachments: [{ path: './files/business-card.jpg' }] });
33
+ ```
34
+
35
+ Or generic API:
36
+
37
+ ```typescript
38
+ await client.idp.extract('business_license', {
39
+ attachments: [{ path: './files/business-license.jpg' }]
40
+ });
41
+ ```
42
+
43
+ ## Input
44
+
45
+ ```typescript
46
+ {
47
+ attachments: AttachmentInput[]
48
+ }
49
+ ```
50
+
51
+ ## Notes
52
+
53
+ - This skill groups enterprise scenarios to avoid over-generic routing.
54
+ - Output fields vary between license and card extraction.
55
+
56
+ <!-- SDK_VERSION_RULE_START -->
57
+ ## SDK Version Check Rule
58
+
59
+ - Before invoking this skill, check local `@unityclaw/sdk` version.
60
+ - Required minimum SDK version: `1.0.9`
61
+ - If local SDK version is lower than this skill version, stop and prompt user to upgrade SDK first.
62
+ - Suggested command: `npm i @unityclaw/sdk@latest`
63
+ <!-- SDK_VERSION_RULE_END -->
@@ -0,0 +1,63 @@
1
+ ---
2
+ name: unityclaw-idp-contract-extraction
3
+ description: Extract structured fields from contract files
4
+ version: 1.0.9
5
+ metadata:
6
+ openclaw:
7
+ requires:
8
+ env:
9
+ - UNITYCLAW_API_KEY
10
+ bins:
11
+ - node
12
+ - npm
13
+ primaryEnv: UNITYCLAW_API_KEY
14
+ emoji: "📑"
15
+ homepage: https://unityclaw.com
16
+ install:
17
+ - kind: node
18
+ package: "@unityclaw/sdk"
19
+ bins: []
20
+ ---
21
+
22
+ # UnityClaw IDP - Contract Extraction
23
+
24
+ Use this skill for contract parsing:
25
+ - `contract`
26
+
27
+ ## SDK APIs
28
+
29
+ ```typescript
30
+ await client.idp.contract({
31
+ attachments: [{ path: './files/contract.pdf' }]
32
+ });
33
+ ```
34
+
35
+ Or generic API:
36
+
37
+ ```typescript
38
+ await client.idp.extract('contract', {
39
+ attachments: [{ path: './files/contract.pdf' }]
40
+ });
41
+ ```
42
+
43
+ ## Input
44
+
45
+ ```typescript
46
+ {
47
+ attachments: AttachmentInput[]
48
+ }
49
+ ```
50
+
51
+ ## Notes
52
+
53
+ - Preferred for long contract OCR + key field extraction scenarios.
54
+ - Read extracted data from `result.response.data`.
55
+
56
+ <!-- SDK_VERSION_RULE_START -->
57
+ ## SDK Version Check Rule
58
+
59
+ - Before invoking this skill, check local `@unityclaw/sdk` version.
60
+ - Required minimum SDK version: `1.0.9`
61
+ - If local SDK version is lower than this skill version, stop and prompt user to upgrade SDK first.
62
+ - Suggested command: `npm i @unityclaw/sdk@latest`
63
+ <!-- SDK_VERSION_RULE_END -->
@@ -0,0 +1,65 @@
1
+ ---
2
+ name: unityclaw-idp-invoice-extraction
3
+ description: Extract fields from invoice and ticket documents (VAT, train, taxi)
4
+ version: 1.0.9
5
+ metadata:
6
+ openclaw:
7
+ requires:
8
+ env:
9
+ - UNITYCLAW_API_KEY
10
+ bins:
11
+ - node
12
+ - npm
13
+ primaryEnv: UNITYCLAW_API_KEY
14
+ emoji: "🧾"
15
+ homepage: https://unityclaw.com
16
+ install:
17
+ - kind: node
18
+ package: "@unityclaw/sdk"
19
+ bins: []
20
+ ---
21
+
22
+ # UnityClaw IDP - Invoice Extraction
23
+
24
+ Use this skill for invoice/ticket extraction:
25
+ - `vat_invoice`
26
+ - `train_invoice`
27
+ - `taxi_invoice`
28
+
29
+ ## SDK APIs
30
+
31
+ ```typescript
32
+ await client.idp.vatInvoice({ attachments: [{ path: './files/vat-invoice.pdf' }] });
33
+ await client.idp.trainInvoice({ attachments: [{ path: './files/train-ticket.jpg' }] });
34
+ await client.idp.taxiInvoice({ attachments: [{ path: './files/taxi-invoice.jpg' }] });
35
+ ```
36
+
37
+ Or generic API:
38
+
39
+ ```typescript
40
+ await client.idp.extract('vat_invoice', {
41
+ attachments: [{ path: './files/vat-invoice.pdf' }]
42
+ });
43
+ ```
44
+
45
+ ## Input
46
+
47
+ ```typescript
48
+ {
49
+ attachments: AttachmentInput[]
50
+ }
51
+ ```
52
+
53
+ ## Notes
54
+
55
+ - Files can be image/PDF according to each underlying IDP type.
56
+ - Output schema differs by type; parse from `result.response.data`.
57
+
58
+ <!-- SDK_VERSION_RULE_START -->
59
+ ## SDK Version Check Rule
60
+
61
+ - Before invoking this skill, check local `@unityclaw/sdk` version.
62
+ - Required minimum SDK version: `1.0.9`
63
+ - If local SDK version is lower than this skill version, stop and prompt user to upgrade SDK first.
64
+ - Suggested command: `npm i @unityclaw/sdk@latest`
65
+ <!-- SDK_VERSION_RULE_END -->
@@ -0,0 +1,69 @@
1
+ ---
2
+ name: unityclaw-idp-personal-documents
3
+ description: Extract structured fields from personal identity documents (ID card, vehicle license, bank card)
4
+ version: 1.0.9
5
+ metadata:
6
+ openclaw:
7
+ requires:
8
+ env:
9
+ - UNITYCLAW_API_KEY
10
+ bins:
11
+ - node
12
+ - npm
13
+ primaryEnv: UNITYCLAW_API_KEY
14
+ emoji: "🪪"
15
+ homepage: https://unityclaw.com
16
+ install:
17
+ - kind: node
18
+ package: "@unityclaw/sdk"
19
+ bins: []
20
+ ---
21
+
22
+ # UnityClaw IDP - Personal Documents
23
+
24
+ Use this skill for personal document extraction:
25
+ - `id_card`
26
+ - `vehicle_license`
27
+ - `bank_card`
28
+
29
+ ## SDK APIs
30
+
31
+ ```typescript
32
+ await client.idp.idCard({ attachments: [{ path: './files/id-card.jpg' }] });
33
+ await client.idp.vehicleLicense({ attachments: [{ path: './files/vehicle-license.jpg' }] });
34
+ await client.idp.bankCard({ attachments: [{ path: './files/bank-card.jpg' }] });
35
+ ```
36
+
37
+ Or generic API:
38
+
39
+ ```typescript
40
+ await client.idp.extract('id_card', {
41
+ attachments: [{ path: './files/id-card.jpg' }]
42
+ });
43
+ ```
44
+
45
+ ## Input
46
+
47
+ ```typescript
48
+ {
49
+ attachments: AttachmentInput[]
50
+ }
51
+ ```
52
+
53
+ `AttachmentInput` supports:
54
+ - `tmp_url`
55
+ - local path (`path` / `localPath` / `filePath`), SDK auto-uploads to `/api/upload`
56
+
57
+ ## Notes
58
+
59
+ - This category is split from invoice/business/contract to improve skill routing success.
60
+ - Output fields vary by type; read from `result.response.data`.
61
+
62
+ <!-- SDK_VERSION_RULE_START -->
63
+ ## SDK Version Check Rule
64
+
65
+ - Before invoking this skill, check local `@unityclaw/sdk` version.
66
+ - Required minimum SDK version: `1.0.9`
67
+ - If local SDK version is lower than this skill version, stop and prompt user to upgrade SDK first.
68
+ - Suggested command: `npm i @unityclaw/sdk@latest`
69
+ <!-- SDK_VERSION_RULE_END -->
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  name: unityclaw-image-compress
3
3
  description: Compress images with quality control to reduce file size
4
- version: 1.0.1
4
+ version: 1.0.9
5
5
  metadata:
6
6
  openclaw:
7
7
  requires:
@@ -263,3 +263,12 @@ console.log('Local Attachments:', result.attachments);
263
263
  ## Related Skills
264
264
 
265
265
  - [unityclaw-image-generation](../unityclaw-image-generation/SKILL.md) - Generate images before compression
266
+
267
+ <!-- SDK_VERSION_RULE_START -->
268
+ ## SDK Version Check Rule
269
+
270
+ - Before invoking this skill, check local `@unityclaw/sdk` version.
271
+ - Required minimum SDK version: `1.0.9`
272
+ - If local SDK version is lower than this skill version, stop and prompt user to upgrade SDK first.
273
+ - Suggested command: `npm i @unityclaw/sdk@latest`
274
+ <!-- SDK_VERSION_RULE_END -->