howone 0.1.53 → 0.2.1
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/bin/index.mjs +362 -5
- package/package.json +1 -1
- package/templates/vite/.howone/skills/howone/01-architect/01-app-generation.md +19 -16
- package/templates/vite/.howone/skills/howone/03-ai-capabilities/01-ai-capability-architecture.md +14 -24
- package/templates/vite/.howone/skills/howone/03-ai-capabilities/02-workflow-contract-rules.md +0 -107
- package/templates/vite/.howone/skills/howone/03-ai-capabilities/03-service-capability-catalog.md +26 -101
- package/templates/vite/.howone/skills/howone/03-ai-capabilities/04-workflow-operations.md +23 -17
- package/templates/vite/.howone/skills/howone/03-ai-capabilities/05-ai-feature-playbooks.md +1 -66
- package/templates/vite/.howone/skills/howone/SKILL.md +5 -4
- package/templates/vite/.howone/skills/web-clone/LICENSE +0 -21
- package/templates/vite/.howone/skills/web-clone/README.md +0 -179
- package/templates/vite/.howone/skills/web-clone/SKILL.md +0 -243
- package/templates/vite/.howone/skills/web-clone/references/assessment.md +0 -77
- package/templates/vite/.howone/skills/web-clone/references/complex-playbooks.md +0 -46
- package/templates/vite/.howone/skills/web-clone/references/deliverables.md +0 -144
- package/templates/vite/.howone/skills/web-clone/references/design-dna.md +0 -125
- package/templates/vite/.howone/skills/web-clone/references/effect-extraction.md +0 -73
- package/templates/vite/.howone/skills/web-clone/references/marbles-case.md +0 -31
- package/templates/vite/.howone/skills/web-clone/references/reverse-engineering.md +0 -34
- package/templates/vite/.howone/skills/web-clone/references/static-mirror.md +0 -72
- package/templates/vite/.howone/skills/web-clone/scripts/asset-harvest.mjs +0 -101
- package/templates/vite/.howone/skills/web-clone/scripts/audit-clone.mjs +0 -151
- package/templates/vite/.howone/skills/web-clone/scripts/compare-recon.mjs +0 -265
- package/templates/vite/.howone/skills/web-clone/scripts/dna-scaffold.mjs +0 -214
- package/templates/vite/.howone/skills/web-clone/scripts/init-clone.mjs +0 -136
- package/templates/vite/.howone/skills/web-clone/scripts/interaction-probe.mjs +0 -314
- package/templates/vite/.howone/skills/web-clone/scripts/lib/playwright-loader.mjs +0 -39
- package/templates/vite/.howone/skills/web-clone/scripts/mirror-site.mjs +0 -121
- package/templates/vite/.howone/skills/web-clone/scripts/network-capture.mjs +0 -127
- package/templates/vite/.howone/skills/web-clone/scripts/recon-site.mjs +0 -235
- package/templates/vite/.howone/skills/web-clone/scripts/route-crawl.mjs +0 -228
- package/templates/vite/.howone/skills/web-clone/scripts/sourcemap-hunt.mjs +0 -112
- package/templates/vite/.howone/skills/web-clone/scripts/visual-diff.mjs +0 -161
package/templates/vite/.howone/skills/howone/03-ai-capabilities/02-workflow-contract-rules.md
CHANGED
|
@@ -41,19 +41,6 @@ service reject the request or produce a workflow the runtime cannot execute reli
|
|
|
41
41
|
}
|
|
42
42
|
```
|
|
43
43
|
|
|
44
|
-
## Supported Capability Boundary
|
|
45
|
-
|
|
46
|
-
Design contracts only for capability families listed in `03-service-capability-catalog.md`.
|
|
47
|
-
Do not invent general workflow powers beyond that catalog. In particular:
|
|
48
|
-
|
|
49
|
-
- streaming execution and realtime partial results are not supported;
|
|
50
|
-
- file work is limited to creating or modifying text, PDF, DOCX, PPTX, and XLSX outputs;
|
|
51
|
-
- video work is limited to generation, concatenation, and first/last-frame extraction;
|
|
52
|
-
- audio work is limited to TTS, speech recognition, and concatenating audio files.
|
|
53
|
-
|
|
54
|
-
If the requested behavior needs anything outside the catalog, stop the AI workflow path and explain
|
|
55
|
-
the missing capability or ask the user to narrow the feature.
|
|
56
|
-
|
|
57
44
|
## Loose JSON Schema
|
|
58
45
|
|
|
59
46
|
The workflow engine is agentic. Overly strict schemas reduce reliability.
|
|
@@ -244,21 +231,6 @@ Instead:
|
|
|
244
231
|
2. app code persists through the entity runtime after SDK handoff;
|
|
245
232
|
3. durable fields map to the entity contract.
|
|
246
233
|
|
|
247
|
-
## No Streaming Contracts
|
|
248
|
-
|
|
249
|
-
HowOne AI workflow capability contracts are non-streaming. Do not add schema fields or descriptions
|
|
250
|
-
that imply:
|
|
251
|
-
|
|
252
|
-
- token streaming;
|
|
253
|
-
- realtime audio/video processing;
|
|
254
|
-
- incremental chunks;
|
|
255
|
-
- event streams;
|
|
256
|
-
- SSE/WebSocket workflow output;
|
|
257
|
-
- live progress messages from the workflow.
|
|
258
|
-
|
|
259
|
-
If the app needs progress UX, keep it app-owned: show pending/running/completed/failed states around
|
|
260
|
-
the non-streaming workflow result.
|
|
261
|
-
|
|
262
234
|
## External Data Assumptions
|
|
263
235
|
|
|
264
236
|
Do not require user-provided datasets unless the user said they have them.
|
|
@@ -442,84 +414,6 @@ Bad:
|
|
|
442
414
|
}
|
|
443
415
|
```
|
|
444
416
|
|
|
445
|
-
### RSS feed extraction
|
|
446
|
-
|
|
447
|
-
```json
|
|
448
|
-
{
|
|
449
|
-
"inputSchema": {
|
|
450
|
-
"type": "object",
|
|
451
|
-
"properties": {
|
|
452
|
-
"rss_url": {
|
|
453
|
-
"type": "string",
|
|
454
|
-
"format": "uri",
|
|
455
|
-
"description": "RSS feed URL to fetch and parse."
|
|
456
|
-
},
|
|
457
|
-
"language": {
|
|
458
|
-
"type": "string",
|
|
459
|
-
"description": "Language for any generated summary text."
|
|
460
|
-
}
|
|
461
|
-
},
|
|
462
|
-
"required": ["rss_url"]
|
|
463
|
-
},
|
|
464
|
-
"outputSchema": {
|
|
465
|
-
"type": "object",
|
|
466
|
-
"properties": {
|
|
467
|
-
"items": {
|
|
468
|
-
"type": "array",
|
|
469
|
-
"description": "RSS feed items with title, URL, published date, and summary in the requested language when generated.",
|
|
470
|
-
"items": {
|
|
471
|
-
"type": "object",
|
|
472
|
-
"properties": {
|
|
473
|
-
"title": { "type": "string" },
|
|
474
|
-
"url": { "type": "string", "format": "uri" },
|
|
475
|
-
"published_at": { "type": "string" },
|
|
476
|
-
"summary": { "type": "string" }
|
|
477
|
-
}
|
|
478
|
-
}
|
|
479
|
-
}
|
|
480
|
-
},
|
|
481
|
-
"required": ["items"]
|
|
482
|
-
}
|
|
483
|
-
}
|
|
484
|
-
```
|
|
485
|
-
|
|
486
|
-
### File creation or modification
|
|
487
|
-
|
|
488
|
-
```json
|
|
489
|
-
{
|
|
490
|
-
"inputSchema": {
|
|
491
|
-
"type": "object",
|
|
492
|
-
"properties": {
|
|
493
|
-
"file_type": {
|
|
494
|
-
"type": "string",
|
|
495
|
-
"description": "Target file type: txt, md, pdf, docx, pptx, or xlsx."
|
|
496
|
-
},
|
|
497
|
-
"content_or_instruction": {
|
|
498
|
-
"type": "string",
|
|
499
|
-
"description": "Content to create or instruction for modifying the source file."
|
|
500
|
-
},
|
|
501
|
-
"source_file_url": {
|
|
502
|
-
"type": "string",
|
|
503
|
-
"format": "uri",
|
|
504
|
-
"description": "Optional URL of an existing file to modify."
|
|
505
|
-
}
|
|
506
|
-
},
|
|
507
|
-
"required": ["file_type", "content_or_instruction"]
|
|
508
|
-
},
|
|
509
|
-
"outputSchema": {
|
|
510
|
-
"type": "object",
|
|
511
|
-
"properties": {
|
|
512
|
-
"file_url": {
|
|
513
|
-
"type": "string",
|
|
514
|
-
"format": "uri",
|
|
515
|
-
"description": "Public URL of the created or modified file."
|
|
516
|
-
}
|
|
517
|
-
},
|
|
518
|
-
"required": ["file_url"]
|
|
519
|
-
}
|
|
520
|
-
}
|
|
521
|
-
```
|
|
522
|
-
|
|
523
417
|
## Contract Checklist
|
|
524
418
|
|
|
525
419
|
- Required inputs are essential only.
|
|
@@ -528,7 +422,6 @@ Bad:
|
|
|
528
422
|
- Input/output property names do not overlap.
|
|
529
423
|
- Text output descriptions specify language.
|
|
530
424
|
- Description says what, not how.
|
|
531
|
-
- Contract does not imply streaming, realtime output, or event delivery.
|
|
532
425
|
- No CRUD/auth/upload/payment/app-state requirements.
|
|
533
426
|
- Feature fits an available capability.
|
|
534
427
|
- Schema is raw valid JSON.
|
package/templates/vite/.howone/skills/howone/03-ai-capabilities/03-service-capability-catalog.md
CHANGED
|
@@ -3,41 +3,29 @@
|
|
|
3
3
|
Use this reference **only** for HowOne **workflow-service AI** feasibility. It lists what the current
|
|
4
4
|
workflow service supports—not everything a full product may use.
|
|
5
5
|
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
6
|
+
Explicit user-owned integrations are outside this catalog per
|
|
7
|
+
`01-architect/01-app-generation.md`. Use that exception only when the user explicitly asks to
|
|
8
|
+
connect something outside HowOne. Ordinary generated AI app requests should be checked against this
|
|
9
|
+
catalog first.
|
|
9
10
|
|
|
10
11
|
Source: `docs/ai-capability.md`.
|
|
11
12
|
|
|
12
|
-
## Global Boundaries
|
|
13
|
-
|
|
14
|
-
Streaming is not supported. Do not design token streams, realtime audio/video processing,
|
|
15
|
-
incremental workflow chunks, SSE/WebSocket workflow output, or live workflow progress events as
|
|
16
|
-
HowOne AI capability. Progress UI is app-owned around a non-streaming workflow result.
|
|
17
|
-
|
|
18
|
-
If the requested behavior is not listed in this catalog, do not simulate it or silently approximate
|
|
19
|
-
it. State the missing capability and offer the closest supported version only when it preserves the
|
|
20
|
-
user's original goal.
|
|
21
|
-
|
|
22
13
|
## Quick Selection Table
|
|
23
14
|
|
|
24
15
|
| User asks for | Use capability family | Typical inputs | Typical outputs |
|
|
25
16
|
|---|---|---|---|
|
|
26
17
|
| Latest info, research, source-backed answer | Web search / crawling | `topic`, `prompt`, `url`, `search_level` | `answer`, `sources`, `page_content` |
|
|
27
|
-
| Parse posts from an RSS feed | Fetch RSS feed from RSS URL | `rss_url`, optional filters | `items`, `source_metadata` |
|
|
28
|
-
| Generate or transform text | Text generation / transformation | `prompt`, `source_text`, `language`, format instructions | `generated_text` or structured JSON |
|
|
29
18
|
| Generate artwork/photo/logo/mockup | Image generation | `image_description`, `style_preference`, optional references | `generated_image_url` |
|
|
30
19
|
| Edit an image | Image editing | `source_image_url`, `edit_instruction` | `edited_image_url` |
|
|
31
20
|
| OCR or visual analysis | Image analysis / OCR | `image_urls`, `analysis_prompt` | `analysis_result` or `extracted_text` |
|
|
32
21
|
| Generate short video | Video generation | `video_prompt`, aspect/duration/frame URLs | `video_url` |
|
|
33
|
-
| Join
|
|
34
|
-
|
|
|
35
|
-
|
|
|
36
|
-
|
|
|
37
|
-
| Merge audio | Concatenate audio files | `audio_urls` | `merged_audio_url` |
|
|
22
|
+
| Join clips / extract frames | Video editing | `video_urls` or `video_url` | `video_url` or `image_url` |
|
|
23
|
+
| Text to speech | Audio generation | `text_to_generate`, `language`, `voice_hint` | `audio_url` |
|
|
24
|
+
| Speech to text | Audio recognition | `source_audio_url`, `language` | `transcript_text`, optional `utterances` |
|
|
25
|
+
| Merge audio | Audio merging | `audio_urls` | `merged_audio_url` |
|
|
38
26
|
| Stock/index history | Financial data retrieval | `trading_symbol`, `unit`, `start`, `end` | `price_history` |
|
|
39
27
|
| Literature search/citations | Academic research | `query` | `papers`, `bibtex` |
|
|
40
|
-
|
|
|
28
|
+
| Save generated file | File storage | `file_type`, `content` | `file_url` |
|
|
41
29
|
|
|
42
30
|
If the requested behavior is not in this table or the detailed sections below, do not invent it.
|
|
43
31
|
|
|
@@ -65,46 +53,6 @@ Rules:
|
|
|
65
53
|
- Do not use search as an outbound API caller.
|
|
66
54
|
- Include source links in output when the product promises research.
|
|
67
55
|
|
|
68
|
-
## RSS Feed Fetching
|
|
69
|
-
|
|
70
|
-
Use for fetching and parsing a specific RSS feed URL.
|
|
71
|
-
|
|
72
|
-
Inputs:
|
|
73
|
-
|
|
74
|
-
- `rss_url`: URL of the RSS feed;
|
|
75
|
-
- optional filtering instructions, item limit, language, or summary instruction.
|
|
76
|
-
|
|
77
|
-
Outputs:
|
|
78
|
-
|
|
79
|
-
- feed `items` with title, URL, date, and optional summary;
|
|
80
|
-
- source/feed metadata when useful.
|
|
81
|
-
|
|
82
|
-
Rules:
|
|
83
|
-
|
|
84
|
-
- Use RSS only when the user has or asks for an RSS URL.
|
|
85
|
-
- Use web search/crawling when the user asks for general latest information without a feed URL.
|
|
86
|
-
- Do not treat RSS fetching as arbitrary API integration.
|
|
87
|
-
|
|
88
|
-
## Text Generation And Transformation
|
|
89
|
-
|
|
90
|
-
Use for writing, rewriting, summarizing, translating, classifying, extracting, and structured JSON
|
|
91
|
-
generation when no specialized media/retrieval capability is needed.
|
|
92
|
-
|
|
93
|
-
Inputs:
|
|
94
|
-
|
|
95
|
-
- `prompt` or `source_text`;
|
|
96
|
-
- optional `language`, audience, tone, format, or transformation instruction.
|
|
97
|
-
|
|
98
|
-
Outputs:
|
|
99
|
-
|
|
100
|
-
- generated text or structured JSON fields needed by the product.
|
|
101
|
-
|
|
102
|
-
Rules:
|
|
103
|
-
|
|
104
|
-
- Text outputs must specify language behavior.
|
|
105
|
-
- Keep structured outputs minimal and product-facing.
|
|
106
|
-
- Do not claim streaming tokens or realtime generation.
|
|
107
|
-
|
|
108
56
|
## Image Generation
|
|
109
57
|
|
|
110
58
|
Use for new images from prompts or prompt + reference URLs.
|
|
@@ -189,12 +137,12 @@ Rules:
|
|
|
189
137
|
|
|
190
138
|
- Keep individual clips short, generally 5-10 seconds.
|
|
191
139
|
- For consistency, generate/use a first-frame image.
|
|
192
|
-
- For longer videos, generate clips and concatenate via video
|
|
140
|
+
- For longer videos, generate clips and concatenate via video editing.
|
|
193
141
|
- Audio in video works best with one speaker per clip.
|
|
194
142
|
|
|
195
|
-
## Video
|
|
143
|
+
## Video Editing
|
|
196
144
|
|
|
197
|
-
Use
|
|
145
|
+
Use for concatenating clips or extracting first/last frames.
|
|
198
146
|
|
|
199
147
|
Inputs:
|
|
200
148
|
|
|
@@ -203,16 +151,14 @@ Inputs:
|
|
|
203
151
|
|
|
204
152
|
Outputs:
|
|
205
153
|
|
|
206
|
-
-
|
|
207
|
-
- frame extraction: `first_frame_image_url`, `last_frame_image_url`.
|
|
154
|
+
- `merged_video_url` or `frame_image_url`.
|
|
208
155
|
|
|
209
156
|
Rules:
|
|
210
157
|
|
|
211
158
|
- Inputs must be accessible URLs.
|
|
212
159
|
- Best results when clips share resolution/aspect ratio.
|
|
213
|
-
- Do not claim arbitrary video editing beyond concatenation and first/last-frame extraction.
|
|
214
160
|
|
|
215
|
-
##
|
|
161
|
+
## Audio Generation
|
|
216
162
|
|
|
217
163
|
Use for text-to-speech.
|
|
218
164
|
|
|
@@ -231,10 +177,10 @@ Outputs:
|
|
|
231
177
|
Rules:
|
|
232
178
|
|
|
233
179
|
- Single speaker per call.
|
|
234
|
-
- For dialogue, generate each speaker line and
|
|
180
|
+
- For dialogue, generate each speaker line and merge audio.
|
|
235
181
|
- `audio_hint` should describe voice in English.
|
|
236
182
|
|
|
237
|
-
##
|
|
183
|
+
## Audio Recognition
|
|
238
184
|
|
|
239
185
|
Use for speech-to-text.
|
|
240
186
|
|
|
@@ -253,24 +199,6 @@ Rules:
|
|
|
253
199
|
|
|
254
200
|
- Audio must be URL-accessible.
|
|
255
201
|
- Silent or low-quality audio can produce empty/poor transcript.
|
|
256
|
-
- Do not promise realtime transcription or streaming captions.
|
|
257
|
-
|
|
258
|
-
## Audio Concatenation
|
|
259
|
-
|
|
260
|
-
Use for joining multiple audio files in order.
|
|
261
|
-
|
|
262
|
-
Inputs:
|
|
263
|
-
|
|
264
|
-
- `audio_urls`: two or more accessible audio URLs.
|
|
265
|
-
|
|
266
|
-
Outputs:
|
|
267
|
-
|
|
268
|
-
- `merged_audio_url`.
|
|
269
|
-
|
|
270
|
-
Rules:
|
|
271
|
-
|
|
272
|
-
- Use this after separate TTS calls for multi-speaker dialogue.
|
|
273
|
-
- Do not claim arbitrary audio editing beyond concatenation.
|
|
274
202
|
|
|
275
203
|
## Financial Data Retrieval
|
|
276
204
|
|
|
@@ -315,15 +243,14 @@ Rules:
|
|
|
315
243
|
- Availability varies by academic source.
|
|
316
244
|
- PDF assets should be handled as URLs.
|
|
317
245
|
|
|
318
|
-
## File
|
|
246
|
+
## File Storage
|
|
319
247
|
|
|
320
|
-
Use when
|
|
248
|
+
Use when workflow needs to save generated content into a file.
|
|
321
249
|
|
|
322
250
|
Inputs:
|
|
323
251
|
|
|
324
|
-
- `file_type`: `
|
|
325
|
-
- `
|
|
326
|
-
- optional `source_file_url`: URL of an existing file to modify.
|
|
252
|
+
- `file_type`: `json`, `yaml`, `csv`, `pdf`, `md`, or `txt`;
|
|
253
|
+
- `content`: string content to save.
|
|
327
254
|
|
|
328
255
|
Outputs:
|
|
329
256
|
|
|
@@ -331,20 +258,18 @@ Outputs:
|
|
|
331
258
|
|
|
332
259
|
Rules:
|
|
333
260
|
|
|
334
|
-
-
|
|
335
|
-
- Do not use file
|
|
336
|
-
- If app needs records/history, persist file
|
|
337
|
-
- Do not claim arbitrary binary editing, ZIP manipulation, or filesystem access.
|
|
261
|
+
- Structured content must be serialized to string before saving.
|
|
262
|
+
- Do not use file storage as a database.
|
|
263
|
+
- If app needs records/history, persist file URL through entities.
|
|
338
264
|
|
|
339
265
|
## Composition Patterns
|
|
340
266
|
|
|
341
267
|
| Pattern | Workflow design |
|
|
342
268
|
|---|---|
|
|
343
269
|
| Image -> Video | generate first-frame image, pass as `first_frame_url` to video generation |
|
|
344
|
-
| Multi-clip video | generate short clips, concatenate via video
|
|
345
|
-
| Dialogue audio | generate each speaker line,
|
|
346
|
-
|
|
|
347
|
-
| Search -> Report | web search/crawl, synthesize structured report, optionally create a supported file |
|
|
270
|
+
| Multi-clip video | generate short clips, concatenate via video editing |
|
|
271
|
+
| Dialogue audio | generate each speaker line, merge audio |
|
|
272
|
+
| Search -> Report | web search/crawl, synthesize structured report, optionally save file |
|
|
348
273
|
| Video -> Image edit -> Video | extract frame, edit frame, use as next reference |
|
|
349
274
|
| RAG document chat | indexing workflow + query workflow |
|
|
350
275
|
|
|
@@ -3,22 +3,19 @@
|
|
|
3
3
|
Use this reference when submitting HowOne external AI workflow create/update operations through
|
|
4
4
|
`external-ai-capability`. This is an AI workflow design reference, not an app SDK guide.
|
|
5
5
|
|
|
6
|
-
Workflow create/update/status operations are asynchronous control-plane operations. They are not
|
|
7
|
-
runtime streaming support. Do not use job polling, task IDs, SSE, or background status as evidence
|
|
8
|
-
that a user-facing AI workflow can stream partial results.
|
|
9
|
-
|
|
10
6
|
## Current Tool Contract
|
|
11
7
|
|
|
12
8
|
Do not hand-build raw workflow HTTP requests in generated app work. Use `external-ai-capability`
|
|
13
9
|
after `.howone/ai/manifest.json` has been synced.
|
|
14
10
|
|
|
15
|
-
The tool performs:
|
|
11
|
+
The foreground tool performs:
|
|
16
12
|
|
|
17
13
|
```text
|
|
18
14
|
POST /workflows
|
|
19
|
-
GET /jobs/{job_id}
|
|
20
15
|
```
|
|
21
16
|
|
|
17
|
+
The host-owned background poller performs `GET /jobs/{job_id}` and finalizes successful bindings.
|
|
18
|
+
|
|
22
19
|
The tool reads the synced manifest and submits operations for selected capabilities.
|
|
23
20
|
|
|
24
21
|
## Create
|
|
@@ -69,16 +66,21 @@ Tool behavior:
|
|
|
69
66
|
|
|
70
67
|
```text
|
|
71
68
|
previous config = current manifest capability.workflowId
|
|
72
|
-
new config = freshly generated UUID
|
|
69
|
+
new config = freshly generated UUID sent as config_id
|
|
73
70
|
mode = update
|
|
74
|
-
|
|
71
|
+
original_config_id = previous config sent to EAX
|
|
72
|
+
workflow code = regenerated by EAX from the current capability contract and updatePrompt
|
|
73
|
+
submitted state = local manifest remains unchanged while EAX runs
|
|
74
|
+
completed state = backend capability version receives the fresh UUID
|
|
75
75
|
```
|
|
76
76
|
|
|
77
|
-
After update, re-read `.howone/ai/manifest.json`. The
|
|
78
|
-
SDK bindings and future execution.
|
|
77
|
+
After a completed update, run `sync_ai_artifacts` and then re-read `.howone/ai/manifest.json`. The
|
|
78
|
+
newly synced `workflowId` is the value used by SDK bindings and future execution. Failed operations
|
|
79
|
+
keep their previous backend and local manifest bindings.
|
|
79
80
|
|
|
80
|
-
Do not pass stale `workflowConfigID` values from old docs or older status payloads.
|
|
81
|
-
tool
|
|
81
|
+
Do not pass stale `workflowConfigID` values from old docs or older status payloads. Agents should
|
|
82
|
+
not pass `original_config_id` directly either; the current tool derives it from the manifest and
|
|
83
|
+
owns config rotation; the background finalizer owns backend binding promotion.
|
|
82
84
|
|
|
83
85
|
## Selection Rules
|
|
84
86
|
|
|
@@ -106,9 +108,6 @@ Terminal result meaning:
|
|
|
106
108
|
| `completed` | workflow operation completed |
|
|
107
109
|
| `failed` / `canceled` / `timed_out` | report error and do not pretend workflow is ready |
|
|
108
110
|
|
|
109
|
-
For generated apps, progress UI is app-owned and should model non-streaming states such as
|
|
110
|
-
pending/running/completed/failed around the final workflow result.
|
|
111
|
-
|
|
112
111
|
## Standard Flow
|
|
113
112
|
|
|
114
113
|
New AI feature:
|
|
@@ -117,6 +116,8 @@ New AI feature:
|
|
|
117
116
|
ai-capability-design apply_capability_patch
|
|
118
117
|
sync_ai_artifacts
|
|
119
118
|
external-ai-capability { cwd, capabilityNames }
|
|
119
|
+
wait for terminal result
|
|
120
|
+
sync_ai_artifacts
|
|
120
121
|
read .howone/ai/manifest.json
|
|
121
122
|
```
|
|
122
123
|
|
|
@@ -126,6 +127,8 @@ Schema-changing AI update:
|
|
|
126
127
|
ai-capability-design apply_capability_patch
|
|
127
128
|
sync_ai_artifacts
|
|
128
129
|
external-ai-capability { cwd, updates: [{ capabilityName, updatePrompt }] }
|
|
130
|
+
wait for terminal result
|
|
131
|
+
sync_ai_artifacts
|
|
129
132
|
read .howone/ai/manifest.json
|
|
130
133
|
```
|
|
131
134
|
|
|
@@ -133,7 +136,10 @@ Behavior-only update:
|
|
|
133
136
|
|
|
134
137
|
```text
|
|
135
138
|
external-ai-capability { cwd, updates: [{ capabilityName, updatePrompt }] }
|
|
139
|
+
wait for terminal result
|
|
140
|
+
sync_ai_artifacts
|
|
136
141
|
read .howone/ai/manifest.json
|
|
142
|
+
update SDK workflowId bindings from the newly synced manifest
|
|
137
143
|
```
|
|
138
144
|
|
|
139
145
|
SDK/code work happens after these steps and belongs to the SDK track.
|
|
@@ -144,6 +150,6 @@ SDK/code work happens after these steps and belongs to the SDK track.
|
|
|
144
150
|
- Create uses the existing manifest `workflowId`.
|
|
145
151
|
- Update lets the tool generate a fresh config UUID.
|
|
146
152
|
- Update has a concrete `updatePrompt`.
|
|
147
|
-
- The
|
|
153
|
+
- The backend capability version is finalized before local artifacts are synced again.
|
|
154
|
+
- The manifest is re-read only after the post-completion sync.
|
|
148
155
|
- SDK bindings are copied from manifest, not from memory or old status IDs.
|
|
149
|
-
- Status polling is not streaming workflow output.
|
|
@@ -138,30 +138,6 @@ Rules:
|
|
|
138
138
|
- output descriptions must specify language;
|
|
139
139
|
- if user asks for latest/current, this workflow must retrieve data internally.
|
|
140
140
|
|
|
141
|
-
## Playbook: RSS Digest
|
|
142
|
-
|
|
143
|
-
Use when the user provides or asks for a specific RSS feed URL and wants feed items, summaries, or
|
|
144
|
-
a digest.
|
|
145
|
-
|
|
146
|
-
Inputs:
|
|
147
|
-
|
|
148
|
-
- `rss_url`;
|
|
149
|
-
- optional `item_limit`;
|
|
150
|
-
- optional `language`;
|
|
151
|
-
- optional `summary_instruction`.
|
|
152
|
-
|
|
153
|
-
Outputs:
|
|
154
|
-
|
|
155
|
-
- `items` with title, URL, published date, and optional summary;
|
|
156
|
-
- optional `digest` when the product needs a synthesized overview.
|
|
157
|
-
|
|
158
|
-
Rules:
|
|
159
|
-
|
|
160
|
-
- use RSS feed fetching only for explicit RSS URLs;
|
|
161
|
-
- use web search/crawling for general latest news without an RSS URL;
|
|
162
|
-
- do not treat RSS as arbitrary third-party API integration;
|
|
163
|
-
- if users need saved feed history, persist items or digests through entities.
|
|
164
|
-
|
|
165
141
|
## Playbook: Stock Analysis
|
|
166
142
|
|
|
167
143
|
Use for historical price analysis.
|
|
@@ -245,7 +221,7 @@ Output:
|
|
|
245
221
|
Rules:
|
|
246
222
|
|
|
247
223
|
- single speaker per call;
|
|
248
|
-
- dialogue should generate multiple clips and
|
|
224
|
+
- dialogue should generate multiple clips and merge;
|
|
249
225
|
- persist audio URL through entity if user needs library/history.
|
|
250
226
|
|
|
251
227
|
## Playbook: Video Generator
|
|
@@ -269,46 +245,6 @@ Rules:
|
|
|
269
245
|
- for longer output, compose multiple clips and concatenate;
|
|
270
246
|
- first-frame image helps consistency.
|
|
271
247
|
|
|
272
|
-
## Playbook: Video Frame Utility
|
|
273
|
-
|
|
274
|
-
Use when the product needs a first frame and last frame from a video URL.
|
|
275
|
-
|
|
276
|
-
Inputs:
|
|
277
|
-
|
|
278
|
-
- `source_video_url`.
|
|
279
|
-
|
|
280
|
-
Outputs:
|
|
281
|
-
|
|
282
|
-
- `first_frame_image_url`;
|
|
283
|
-
- `last_frame_image_url`.
|
|
284
|
-
|
|
285
|
-
Rules:
|
|
286
|
-
|
|
287
|
-
- use this only for first/last-frame extraction;
|
|
288
|
-
- do not promise arbitrary frame-by-frame analysis or video editing;
|
|
289
|
-
- persist extracted image URLs through entities if the app needs history.
|
|
290
|
-
|
|
291
|
-
## Playbook: File Creator / Modifier
|
|
292
|
-
|
|
293
|
-
Use when the product needs to create or modify a supported file: text, PDF, DOCX, PPTX, or XLSX.
|
|
294
|
-
|
|
295
|
-
Inputs:
|
|
296
|
-
|
|
297
|
-
- `file_type`: txt, md, pdf, docx, pptx, or xlsx;
|
|
298
|
-
- `content_or_instruction`;
|
|
299
|
-
- optional `source_file_url` for modification.
|
|
300
|
-
|
|
301
|
-
Output:
|
|
302
|
-
|
|
303
|
-
- `file_url`.
|
|
304
|
-
|
|
305
|
-
Rules:
|
|
306
|
-
|
|
307
|
-
- create/modify supported file types only;
|
|
308
|
-
- app uploads source files first and passes URLs;
|
|
309
|
-
- do not use generated files as a database;
|
|
310
|
-
- persist file URLs through entities if users need history, folders, sharing, or review.
|
|
311
|
-
|
|
312
248
|
## RAG Playbook
|
|
313
249
|
|
|
314
250
|
Use only when app needs question answering over user/project documents.
|
|
@@ -334,7 +270,6 @@ Rules:
|
|
|
334
270
|
- Verify capability exists in `03-service-capability-catalog.md`.
|
|
335
271
|
- Use URL inputs for files/media.
|
|
336
272
|
- Keep outputs minimal and product-facing.
|
|
337
|
-
- Do not design streaming/realtime AI output.
|
|
338
273
|
- Decide persistence separately.
|
|
339
274
|
- Generate SDK bindings only after manifest sync and external workflow submit.
|
|
340
275
|
- Use app-owned UI for progress/errors.
|
|
@@ -17,7 +17,7 @@ Load only the track needed for the user's request. Do not read SDK files while d
|
|
|
17
17
|
|
|
18
18
|
Use this skill before work when any condition is true:
|
|
19
19
|
|
|
20
|
-
- You need to decide whether HowOne can satisfy the user's request, whether
|
|
20
|
+
- You need to decide whether HowOne can satisfy the user's request, whether an explicit user-owned integration is outside platform contracts, or whether the request needs clarification before handoff.
|
|
21
21
|
- The user asks for persisted app data, backend schema, entity fields, access, indexes, public pages, private history, or Mongo-backed records.
|
|
22
22
|
- The user asks for HowOne AI behavior, capability contracts, workflow generation/update/status, or `external-ai`.
|
|
23
23
|
- The work reads or writes `.howone/database/*`, `.howone/ai/*`, `src/lib/sdk.ts`, or app code using `@howone/sdk` / `howone.*`.
|
|
@@ -37,7 +37,7 @@ Classify the request before tool writes:
|
|
|
37
37
|
| Add/change HowOne AI behavior | AI | `ai-capability-design`, `sync_ai_artifacts`, `external-ai-capability`, `03-ai-capabilities/*` |
|
|
38
38
|
| Call HowOne from generated app code | SDK | `src/lib/sdk.ts`, synced manifests, `04-app-sdk/*` |
|
|
39
39
|
| UI only, no HowOne data or AI | None | edit app code only |
|
|
40
|
-
|
|
|
40
|
+
| Explicit user-owned integrations | App-owned | only when the user explicitly asks to connect something outside HowOne; do not reclassify ordinary AI/data/auth app requests |
|
|
41
41
|
|
|
42
42
|
If multiple tracks apply, process them in dependency order:
|
|
43
43
|
|
|
@@ -72,7 +72,8 @@ get_current_schema -> apply_schema_patch -> sync_schema_artifacts -> read .howon
|
|
|
72
72
|
AI contract:
|
|
73
73
|
|
|
74
74
|
```text
|
|
75
|
-
get_current_ai_capabilities -> apply_capability_patch -> sync_ai_artifacts -> external-ai-capability
|
|
75
|
+
get_current_ai_capabilities -> apply_capability_patch -> sync_ai_artifacts -> external-ai-capability
|
|
76
|
+
-> wait for terminal result -> sync_ai_artifacts -> read .howone/ai/manifest.json
|
|
76
77
|
```
|
|
77
78
|
|
|
78
79
|
No contract dry-run step. Normal generation applies one well-formed patch directly. For destructive,
|
|
@@ -144,5 +145,5 @@ read synced manifests -> update src/lib/sdk.ts -> implement UI/server code using
|
|
|
144
145
|
- Backend and AI design references must not include SDK implementation work.
|
|
145
146
|
- SDK references must not invent backend or AI contracts; they consume synced manifests.
|
|
146
147
|
- AI workflows must not perform database CRUD; persistence is app code through entities.
|
|
147
|
-
-
|
|
148
|
+
- Explicit user-owned integrations are app code, not a platform gap.
|
|
148
149
|
- Platform gap means missing HowOne contract/tool/catalog support, not an unsupported technology name.
|
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
MIT License
|
|
2
|
-
|
|
3
|
-
Copyright (c) 2026 Jane (@xiaoerzhan / 小耳)
|
|
4
|
-
|
|
5
|
-
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
-
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
-
in the Software without restriction, including without limitation the rights
|
|
8
|
-
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
-
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
-
furnished to do so, subject to the following conditions:
|
|
11
|
-
|
|
12
|
-
The above copyright notice and this permission notice shall be included in all
|
|
13
|
-
copies or substantial portions of the Software.
|
|
14
|
-
|
|
15
|
-
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
-
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
-
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
-
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
-
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
-
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
-
SOFTWARE.
|