@wowok/skills 1.0.6 → 1.1.0

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
@@ -15,7 +15,7 @@ WoWok Skills provide structured guidance for AI assistants to effectively use Wo
15
15
  Each skill is a `SKILL.md` file with YAML frontmatter. Claude Code discovers them from `~/.claude/skills/` at session start:
16
16
 
17
17
  ```
18
- npm install -g wowok-skills
18
+ npm install -g @wowok/skills
19
19
 
20
20
  └── postinstall ──→ Copies 6 SKILL.md to ~/.claude/skills/wowok-*/
21
21
  AI discovers them on next session ✅
@@ -39,7 +39,7 @@ Setup WoWok Agent (MCP Server) in your Claude Code MCP configuration:
39
39
  "mcpServers": {
40
40
  "wowok": {
41
41
  "command": "npx",
42
- "args": ["-y", "wowok_agent"]
42
+ "args": ["-y", "@wowok/agent-mcp"]
43
43
  }
44
44
  }
45
45
  }
@@ -50,7 +50,7 @@ See [WoWok Agent](https://github.com/wowok-ai/agent) for more details.
50
50
  ### 2. Install (Personal)
51
51
 
52
52
  ```bash
53
- npm install -g wowok-skills
53
+ npm install -g @wowok/skills
54
54
  ```
55
55
 
56
56
  This automatically installs all 6 skills to `~/.claude/skills/`. They will be available in your next Claude Code session.
@@ -58,7 +58,7 @@ This automatically installs all 6 skills to `~/.claude/skills/`. They will be av
58
58
  ### 3. Install (Project — Team Sharing)
59
59
 
60
60
  ```bash
61
- npm install -g wowok-skills
61
+ npm install -g @wowok/skills
62
62
  cd your-project
63
63
  wowok-skills init
64
64
  ```
@@ -74,7 +74,7 @@ This copies skills to `.claude/skills/` in your project. Commit to git for team
74
74
  rm -rf ~/.claude/skills/wowok-guard
75
75
 
76
76
  # Re-enable it:
77
- npm install -g wowok-skills
77
+ npm install -g @wowok/skills
78
78
  ```
79
79
 
80
80
  ### Check What's Installed
@@ -87,14 +87,14 @@ wowok-skills get wowok-build
87
87
  ### Update
88
88
 
89
89
  ```bash
90
- npm update -g wowok-skills
90
+ npm update -g @wowok/skills
91
91
  ```
92
92
 
93
93
  ### Uninstall
94
94
 
95
95
  ```bash
96
96
  # Remove from personal scope:
97
- npm uninstall -g wowok-skills
97
+ npm uninstall -g @wowok/skills
98
98
 
99
99
  # Remove from project scope:
100
100
  cd your-project
@@ -110,12 +110,12 @@ wowok-skills uninit
110
110
  | `wowok-skills init` | Project | Install skills to `.claude/skills/` |
111
111
  | `wowok-skills uninit` | Project | Remove skills from `.claude/skills/` |
112
112
 
113
- > **Note**: `init` / `uninit` require `wowok-skills` to be globally installed first.
113
+ > **Note**: `init` / `uninit` require `@wowok/skills` to be globally installed first.
114
114
 
115
115
  ## Programmatic API
116
116
 
117
117
  ```typescript
118
- import { getSkills, getSkillByName } from 'wowok-skills';
118
+ import { getSkills, getSkillByName } from '@wowok/skills';
119
119
 
120
120
  const skills = getSkills();
121
121
  const buildSkill = getSkillByName('wowok-build');
@@ -134,7 +134,7 @@ const buildSkill = getSkillByName('wowok-build');
134
134
 
135
135
  ## Related Projects
136
136
 
137
- - **WoWok Agent (MCP Server)**: [https://github.com/wowok-ai/agent](https://github.com/wowok-ai/agent) — npm: `wowok_agent`
137
+ - **WoWok Agent (MCP Server)**: [https://github.com/wowok-ai/agent](https://github.com/wowok-ai/agent) — npm: `@wowok/agent-mcp`
138
138
  - **WoWok Documentation**: [https://github.com/wowok-ai/docs](https://github.com/wowok-ai/docs)
139
139
 
140
140
  ## Development
@@ -152,5 +152,5 @@ Apache-2.0
152
152
  ## Links
153
153
 
154
154
  - GitHub: [https://github.com/wowok-ai/skills](https://github.com/wowok-ai/skills)
155
- - npm: [https://www.npmjs.com/package/wowok-skills](https://www.npmjs.com/package/wowok-skills)
155
+ - npm: [https://www.npmjs.com/package/@wowok/skills](https://www.npmjs.com/package/@wowok/skills)
156
156
  - X: [https://x.com/Wowok_Ai](https://x.com/Wowok_Ai)
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@wowok/skills",
3
- "version": "1.0.6",
3
+ "version": "1.1.0",
4
4
  "description": "WoWok AI Skills for Claude and other AI assistants - Helping AI use WoWok MCP tools correctly",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -1,31 +1,9 @@
1
- # onchain_operations / Common Types
1
+ # onchain_operations / Common Schemas
2
2
 
3
- Shared types referenced by all `onchain_operations` operation types.
3
+ Shared type definitions referenced by all `onchain_operations` operation types. For design principles, execution rules, Guard submission workflow, and Value Types, see [_index.md](./_index.md).
4
4
 
5
5
  ---
6
6
 
7
- ## Top-Level Structure
8
-
9
- Most operations follow this standard wrapper:
10
-
11
- ```typescript
12
- OnchainOperations {
13
- operation_type: string; // One of 16 types
14
- data: object; // Type-specific data (required)
15
- env?: CallEnv; // Optional environment
16
- submission?: SubmissionCall; // Optional Guard submission data
17
- }
18
- ```
19
-
20
- ### Exceptions
21
-
22
- | Operation | Structure | Notes |
23
- |-----------|-----------|-------|
24
- | `gen_passport` | `{ guard, info?, env? }` | FLAT — no `data` wrapper, no `submission` |
25
- | `guard` | `{ data, env? }` | No `submission` field |
26
- | `payment` | `{ data, env? }` | No `submission` field |
27
- | `personal` | `{ data, env? }` | No `submission` field |
28
-
29
7
  ## CallEnv
30
8
 
31
9
  ```typescript
@@ -65,32 +43,27 @@ SubmissionCall {
65
43
 
66
44
  ## Common Sub-Schemas
67
45
 
68
- ### TypedPermissionObject
46
+ ### NamedObject
69
47
 
70
48
  ```typescript
71
- TypedPermissionObject =
72
- | string // Object ID or name (existing)
73
- | {
74
- name?: string; // Name for new object
75
- tags?: string[]; // Tags for discoverability
76
- onChain?: boolean; // Register name on-chain
77
- replaceExistName?: boolean; // Force claim existing name
78
- type_parameter: string; // Token type parameter (default: "0x2::wow::WOW")
79
- permission?: DescriptionObject; // Permission for the new object
80
- };
49
+ NamedObject {
50
+ name?: string; // Object name (max 64 bcs chars, must not start with '0x')
51
+ tags?: string[]; // Tags for discoverability
52
+ onChain?: boolean; // Register name on-chain (public)
53
+ replaceExistName?: boolean; // Force claim existing name
54
+ }
81
55
  ```
82
56
 
83
- ### WithPermissionObject
57
+ ### NormalObject
84
58
 
85
59
  ```typescript
86
- WithPermissionObject =
60
+ NormalObject =
87
61
  | string // Existing object ID or name
88
62
  | {
89
63
  name?: string;
90
64
  tags?: string[];
91
65
  onChain?: boolean;
92
66
  replaceExistName?: boolean;
93
- permission?: DescriptionObject;
94
67
  };
95
68
  ```
96
69
 
@@ -108,28 +81,61 @@ DescriptionObject =
108
81
  };
109
82
  ```
110
83
 
111
- ### NormalObject
84
+ ### TypeNamedObject
112
85
 
113
86
  ```typescript
114
- NormalObject =
87
+ TypeNamedObject =
115
88
  | string // Existing object ID or name
116
89
  | {
117
90
  name?: string;
118
91
  tags?: string[];
119
92
  onChain?: boolean;
120
93
  replaceExistName?: boolean;
94
+ type_parameter?: string; // Token type (default: "0x2::wow::WOW")
121
95
  };
122
96
  ```
123
97
 
124
- ### NamedObject
98
+ ### WithPermissionObject
125
99
 
126
100
  ```typescript
127
- NamedObject {
128
- name?: string;
129
- tags?: string[];
130
- onChain?: boolean;
131
- replaceExistName?: boolean;
132
- }
101
+ WithPermissionObject =
102
+ | string // Existing object ID or name
103
+ | {
104
+ name?: string;
105
+ tags?: string[];
106
+ onChain?: boolean;
107
+ replaceExistName?: boolean;
108
+ permission?: DescriptionObject;
109
+ };
110
+ ```
111
+
112
+ ### TypedPermissionObject
113
+
114
+ ```typescript
115
+ TypedPermissionObject =
116
+ | string // Object ID or name (existing)
117
+ | {
118
+ name?: string; // Name for new object
119
+ tags?: string[]; // Tags for discoverability
120
+ onChain?: boolean; // Register name on-chain
121
+ replaceExistName?: boolean; // Force claim existing name
122
+ type_parameter: string; // Token type parameter (default: "0x2::wow::WOW")
123
+ permission?: DescriptionObject; // Permission for the new object
124
+ };
125
+ ```
126
+
127
+ ### TypedDescriptionObject
128
+
129
+ ```typescript
130
+ TypedDescriptionObject =
131
+ | string // Existing object ID or name
132
+ | {
133
+ name?: string;
134
+ tags?: string[];
135
+ onChain?: boolean;
136
+ replaceExistName?: boolean;
137
+ type_parameter?: string; // Token type (default: "0x2::wow::WOW")
138
+ };
133
139
  ```
134
140
 
135
141
  ### CoinParam
@@ -143,30 +149,209 @@ CoinParam =
143
149
  ### ObjectsOp
144
150
 
145
151
  ```typescript
146
- ObjectsOp = {
147
- op: "add" | "set" | "remove";
148
- objects: string[];
149
- } | {
150
- op: "clear";
151
- };
152
+ ObjectsOp =
153
+ | {
154
+ op: "add" | "set";
155
+ objects: string[]; // List of object IDs or names
156
+ }
157
+ | {
158
+ op: "remove";
159
+ objects: string[]; // List of object IDs or names to remove
160
+ }
161
+ | {
162
+ op: "clear";
163
+ };
152
164
  ```
153
165
 
154
166
  ### AccountOrMark_Address
155
167
 
156
168
  ```typescript
157
- AccountOrMark_Address = {
158
- name_or_address?: string;
159
- local_mark_first?: boolean;
160
- };
169
+ AccountOrMark_Address {
170
+ name_or_address?: string; // Account name, address (0x...), or mark name
171
+ local_mark_first?: boolean; // Prioritize local marks first
172
+ }
161
173
  ```
162
174
 
163
175
  ### ManyAccountOrMark_Address
164
176
 
165
177
  ```typescript
166
- ManyAccountOrMark_Address = {
167
- entities: AccountOrMark_Address[];
168
- check_all_founded?: boolean;
169
- };
178
+ ManyAccountOrMark_Address {
179
+ entities: AccountOrMark_Address[]; // Batch of account/address lookups
180
+ check_all_founded?: boolean; // Abort if any ID not found
181
+ }
182
+ ```
183
+
184
+ ### GuardTableItem
185
+
186
+ ```typescript
187
+ GuardTableItem {
188
+ identifier: number; // 0-255
189
+ b_submission: boolean; // Whether user submission is required
190
+ value_type: ValueType; // Expected type
191
+ value?: SupportedValue; // Default value (if b_submission=false)
192
+ name: string; // Description (default: "")
193
+ }
194
+
195
+ // Note: GuardTableItem may also include:
196
+ // object_type?: ObjectType; // Object type when value is Address
197
+ ```
198
+
199
+ ### Recipient
200
+
201
+ ```typescript
202
+ Recipient =
203
+ | { GuardIdentifier: number } // Get recipient from Guard table index
204
+ | { Entity: AccountOrMark_Address } // Explicit entity ID
205
+ | { Signer: "signer" }; // Current transaction signer
206
+ ```
207
+
208
+ ### Amount
209
+
210
+ ```typescript
211
+ Amount =
212
+ | {
213
+ type: "GuardU64Identifier";
214
+ value: number; // Guard table identifier (0-255) for u64 amount
215
+ }
216
+ | {
217
+ type: "Fixed";
218
+ value: string | number; // Fixed amount value
219
+ };
220
+ ```
221
+
222
+ ### PaymentInfo
223
+
224
+ ```typescript
225
+ PaymentInfo {
226
+ for_object?: string | null; // Payment for a specific object ID
227
+ for_guard?: string | null; // Payment to satisfy Guard verification
228
+ remark: string; // Payment record remark
229
+ index: string | number; // Payment record index
230
+ }
231
+ ```
232
+
233
+ ### ServiceSale
234
+
235
+ ```typescript
236
+ ServiceSale {
237
+ name: string; // Product or service name (max 256 bcs chars)
238
+ price: string | number; // Price
239
+ stock: string | number; // Stock quantity
240
+ suspension: boolean; // Whether suspended
241
+ wip: string; // HTTP URL of WIP file
242
+ wip_hash: string; // WIP file hash (empty = auto-use WIP hash)
243
+ }
244
+ ```
245
+
246
+ ### ServiceBuyItem
247
+
248
+ ```typescript
249
+ ServiceBuyItem {
250
+ name: string; // Product or service name (max 256 bcs chars)
251
+ stock: string | number; // Quantity to purchase
252
+ wip_hash: string; // WIP file hash of the item
253
+ }
254
+ ```
255
+
256
+ ### Discount
257
+
258
+ ```typescript
259
+ Discount {
260
+ name: string; // Discount name
261
+ discount_type: 0 | 1; // 0 = RATES (percentage), 1 = FIXED
262
+ discount_value: string | number; // Discount value
263
+ benchmark?: number | string; // Minimum amount for discount to apply
264
+ time_ms_start?: number; // Start time (milliseconds)
265
+ time_ms_end?: number; // End time (milliseconds)
266
+ count?: number; // Usage count limit
267
+ recipient: ManyAccountOrMark_Address; // Recipient specification
268
+ transferable?: boolean; // Whether recipient can transfer
269
+ }
270
+ ```
271
+
272
+ ### ServiceGuard
273
+
274
+ ```typescript
275
+ ServiceGuard {
276
+ guard: string; // Guard object ID
277
+ service_identifier?: number | null; // Guard table identifier for service (0-255)
278
+ }
279
+ ```
280
+
281
+ ### RewardGuard
282
+
283
+ ```typescript
284
+ RewardGuard {
285
+ guard: string; // Guard object ID or name
286
+ recipient: Recipient; // Who receives the reward
287
+ amount: Amount; // Reward amount
288
+ expiration_time?: number; // Expiration time (ms, >= 1 ms)
289
+ store_from_id?: number | null; // Guard table index for record storage (0-255)
290
+ }
291
+ ```
292
+
293
+ ### AmountFromDepositGuard
294
+
295
+ ```typescript
296
+ AmountFromDepositGuard {
297
+ guard: string; // Guard object ID or name
298
+ identifier?: number | null; // Guard table index for deposit amount limit (null = unlimited)
299
+ store_from_id?: number | null; // Guard table index for record storage
300
+ }
301
+ ```
302
+
303
+ ### AmountFromWithdrawGuard
304
+
305
+ ```typescript
306
+ AmountFromWithdrawGuard {
307
+ guard: string; // Guard object ID or name
308
+ identifier: number; // Guard table index for withdrawable amount
309
+ store_from_id?: number | null; // Guard table index for record storage
310
+ }
311
+ ```
312
+
313
+ ### VotingGuard / VoteWeight
314
+
315
+ ```typescript
316
+ VoteWeight =
317
+ | { GuardIdentifier: number } // Voting weight from Guard table index
318
+ | { FixedValue: number }; // Fixed voting weight (0-65535)
319
+
320
+ VotingGuard {
321
+ guard: string; // Voting Guard object ID
322
+ vote_weight: VoteWeight; // Voting weight configuration
323
+ }
324
+ ```
325
+
326
+ ### AllocationSharing
327
+
328
+ ```typescript
329
+ AllocationSharing {
330
+ who: Recipient; // Recipient specification
331
+ sharing: string | number; // Allocation amount or rate
332
+ mode: "Amount" | "Rate" | "Surplus"; // Allocation mode
333
+ }
334
+ ```
335
+
336
+ ### Allocator
337
+
338
+ ```typescript
339
+ Allocator {
340
+ guard: string; // Guard object ID — allocation triggers on verify
341
+ sharing: AllocationSharing[]; // Fund allocation items
342
+ fix?: string | number; // Fixed amount per recipient
343
+ max?: string | number | null; // Maximum allocation amount
344
+ }
345
+ ```
346
+
347
+ ### Allocators
348
+
349
+ ```typescript
350
+ Allocators {
351
+ description: string; // Allocator list description (max 4000 bcs chars)
352
+ threshold: string | number; // Trigger threshold
353
+ allocators: Allocator[]; // Fund allocator list
354
+ }
170
355
  ```
171
356
 
172
357
  ### ReceivedBalanceOrRecently
@@ -175,11 +360,11 @@ ManyAccountOrMark_Address = {
175
360
  ReceivedBalanceOrRecently =
176
361
  | {
177
362
  balance: string | number; // Balance amount
178
- token_type: string; // Token type
179
- received: { // Unwrapped coin objects
180
- id: string; // CoinWrapper object ID
363
+ token_type: string; // Token type (e.g., "CoinWrapper<0x2::wow::WOW>")
364
+ received: {
365
+ id: string; // Received CoinWrapper object ID
181
366
  balance: string | number; // Amount
182
- payment: string; // Info string, usually the payment object ID @any
367
+ payment: string; // Payment object ID
183
368
  }[];
184
369
  }
185
370
  | "recently"; // Shortcut: automatically unwrap most recently received CoinWrapper
@@ -194,43 +379,28 @@ ReceivedObjectsOrRecently =
194
379
  type: string; // Object type
195
380
  content_raw?: any; // Raw content (optional)
196
381
  }[]
197
- | ReceivedBalanceOrRecently; // Or: empty/clear then receive CoinWrapper objects
382
+ | {
383
+ balance: string | number;
384
+ token_type: string;
385
+ received: { id: string; balance: string | number; payment: string; }[];
386
+ }
387
+ | "recently";
198
388
  ```
199
389
 
200
- ---
201
-
202
- ## Value Types
203
-
204
- | Type | ID | Description |
205
- |------|-----|-------------|
206
- | Bool | 0 | Boolean true/false |
207
- | Address | 1 | Object or account address |
208
- | String | 2 | UTF-8 string |
209
- | U8 | 3 | 8-bit unsigned integer |
210
- | U16 | 4 | 16-bit unsigned integer |
211
- | U32 | 5 | 32-bit unsigned integer |
212
- | U64 | 6 | 64-bit unsigned integer |
213
- | U128 | 7 | 128-bit unsigned integer |
214
- | U256 | 8 | 256-bit unsigned integer |
215
- | VecBool | 9 | Vector of booleans |
216
- | VecAddress | 10 | Vector of addresses |
217
- | VecString | 11 | Vector of strings |
218
- | VecU8 | 12 | Vector of U8 |
219
- | VecU16 | 13 | Vector of U16 |
220
- | VecU32 | 14 | Vector of U32 |
221
- | VecU64 | 15 | Vector of U64 |
222
- | VecU128 | 16 | Vector of U128 |
223
- | VecU256 | 17 | Vector of U256 |
224
- | VecVecU8 | 18 | Vector of VecU8 |
225
-
226
- ---
227
-
228
- ### Recipient
229
- Used by `service` (order allocators), `reward` (guard recipients), and `allocation` (who field).
390
+ ### QueryReceivedResult
230
391
 
231
392
  ```typescript
232
- Recipient =
233
- | { GuardIdentifier: number }
234
- | { Entity: AccountOrMark_Address }
235
- | { Signer: "signer" }
393
+ QueryReceivedResult {
394
+ result:
395
+ | {
396
+ balance: string | number;
397
+ token_type: string;
398
+ received: { id: string; balance: string | number; payment: string; }[];
399
+ }
400
+ | {
401
+ id: string;
402
+ type: string;
403
+ content_raw?: any;
404
+ }[];
405
+ }
236
406
  ```