felo-ai 0.2.48 → 0.2.50
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/felo-superAgent/SKILL.md +18 -17
- package/felo-twitter-writer/SKILL.md +22 -20
- package/package.json +1 -1
package/felo-superAgent/SKILL.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: felo-superAgent
|
|
3
|
-
description: "Felo SuperAgent API: AI conversation with real-time SSE streaming on a persistent LiveDoc canvas. Use when users want SuperAgent chat, continuous conversation,
|
|
3
|
+
description: "Felo SuperAgent API: AI conversation with real-time SSE streaming on a persistent LiveDoc canvas. Use when users want SuperAgent chat, continuous conversation, logo/branding design, or e-commerce product images. Do NOT use for tweet/X post writing — use felo-twitter-writer instead. Explicit commands: /felo-superagent."
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
# Felo SuperAgent Skill
|
|
@@ -57,7 +57,6 @@ Trigger this skill when users want:
|
|
|
57
57
|
|
|
58
58
|
- **SuperAgent conversation:** AI conversation with Felo SuperAgent, with real-time streaming output
|
|
59
59
|
- **Continuous conversation:** Multi-turn Q&A on a persistent LiveDoc canvas
|
|
60
|
-
- **Tweet writing:** Compose or post tweets (auto-selects `twitter-writer` skill)
|
|
61
60
|
- **Logo & branding:** Create logos or brand designs (auto-selects `logo-and-branding` skill)
|
|
62
61
|
- **E-commerce images:** Generate product images (auto-selects `ecommerce-product-image` skill)
|
|
63
62
|
- **Tool-augmented answers:** Responses that may include image generation, document creation, PPT generation, or Twitter/X search
|
|
@@ -65,15 +64,16 @@ Trigger this skill when users want:
|
|
|
65
64
|
|
|
66
65
|
**Trigger words:**
|
|
67
66
|
|
|
68
|
-
- English: superagent, super agent, stream chat, streaming conversation, livedoc conversation, continuous chat, follow-up question,
|
|
69
|
-
- Simplified Chinese (pinyin): chao ji zhu shou, liu shi dui hua, lian xu dui hua, zhui wen,
|
|
70
|
-
- Traditional Chinese (pinyin): chao ji zhu shou, liu shi dui hua, lian xu dui hua, zhui wen,
|
|
71
|
-
- Japanese (romaji): suupaa eejento, sutoriimingu kaiwa, keizoku kaiwa,
|
|
67
|
+
- English: superagent, super agent, stream chat, streaming conversation, livedoc conversation, continuous chat, follow-up question, create a logo, brand design, product image, e-commerce image
|
|
68
|
+
- Simplified Chinese (pinyin): chao ji zhu shou, liu shi dui hua, lian xu dui hua, zhui wen, she ji logo, pin pai she ji, dian shang tu pian
|
|
69
|
+
- Traditional Chinese (pinyin): chao ji zhu shou, liu shi dui hua, lian xu dui hua, zhui wen, she ji logo, pin pai she ji, dian shang tu pian
|
|
70
|
+
- Japanese (romaji): suupaa eejento, sutoriimingu kaiwa, keizoku kaiwa, rogo sakusei, shouhin gazou
|
|
72
71
|
|
|
73
72
|
**Explicit commands:** `/felo-superagent`, "use felo superagent", "felo superagent"
|
|
74
73
|
|
|
75
74
|
**Do NOT use for:**
|
|
76
75
|
|
|
76
|
+
- Tweet/X post writing of any kind (use `felo-twitter-writer` instead)
|
|
77
77
|
- Simple one-off Q&A or real-time information queries (prefer `felo-search`)
|
|
78
78
|
- Web page content fetching only (use `felo-web-fetch`)
|
|
79
79
|
- PPT/slide generation only (use `felo-slides`)
|
|
@@ -147,7 +147,7 @@ Skip to Step 3. Reuse the same ID. Sources include: a previous SuperAgent call's
|
|
|
147
147
|
node felo-livedoc/scripts/run_livedoc.mjs list --json
|
|
148
148
|
```
|
|
149
149
|
|
|
150
|
-
Parse the JSON output. The response contains `data.items` — an array of LiveDoc objects sorted by modification time.
|
|
150
|
+
Parse the JSON output. The response contains `data.items` — an array of LiveDoc objects sorted by modification time descending. Find the **first item where `is_shared === false`** and use its `short_id` as your `live_doc_id`. **NEVER pick an item where `is_shared === true`** — shared LiveDocs belong to other projects and will cause a 502 error.
|
|
151
151
|
|
|
152
152
|
Example response:
|
|
153
153
|
```json
|
|
@@ -156,16 +156,17 @@ Example response:
|
|
|
156
156
|
"data": {
|
|
157
157
|
"total": 3,
|
|
158
158
|
"items": [
|
|
159
|
-
{ "short_id": "
|
|
159
|
+
{ "short_id": "abc123", "name": "Shared Project", "is_shared": true, "modified_at": "..." },
|
|
160
|
+
{ "short_id": "QPetunwpGnkKuZHStP7gwt", "name": "My Workspace", "is_shared": false, "modified_at": "..." },
|
|
160
161
|
...
|
|
161
162
|
]
|
|
162
163
|
}
|
|
163
164
|
}
|
|
164
165
|
```
|
|
165
166
|
|
|
166
|
-
Use: `live_doc_id = data.items
|
|
167
|
+
Use: `live_doc_id = data.items.find(i => !i.is_shared)?.short_id`
|
|
167
168
|
|
|
168
|
-
**2c. If
|
|
169
|
+
**2c. If no `is_shared === false` item exists (or list is empty) — create one:**
|
|
169
170
|
|
|
170
171
|
```bash
|
|
171
172
|
node felo-livedoc/scripts/run_livedoc.mjs create --name "SuperAgent Workspace" --json
|
|
@@ -293,12 +294,12 @@ Example style block output:
|
|
|
293
294
|
```
|
|
294
295
|
Style name: darioamodei
|
|
295
296
|
Style labels: Thoughtful long-form essays
|
|
296
|
-
Style DNA: # Dario Amodei (@DarioAmodei) Tweet Writing Style DNA\n\n##
|
|
297
|
+
Style DNA: # Dario Amodei (@DarioAmodei) Tweet Writing Style DNA\n\n## Style Overview\nDario writes like a serious intellectual...
|
|
297
298
|
```
|
|
298
299
|
|
|
299
300
|
Serialized as `--ext`:
|
|
300
301
|
```bash
|
|
301
|
-
--ext '{"brand_style_requirement":"Style name: darioamodei\nStyle labels: Thoughtful long-form essays\nStyle DNA: # Dario Amodei (@DarioAmodei) Tweet Writing Style DNA\n\n##
|
|
302
|
+
--ext '{"brand_style_requirement":"Style name: darioamodei\nStyle labels: Thoughtful long-form essays\nStyle DNA: # Dario Amodei (@DarioAmodei) Tweet Writing Style DNA\n\n## Style Overview\nDario writes like a serious intellectual..."}'
|
|
302
303
|
```
|
|
303
304
|
|
|
304
305
|
**Important:** Pass the `brand_style_requirement` value completely and verbatim — do NOT truncate `Style DNA`. Partial style content will degrade output quality.
|
|
@@ -320,9 +321,9 @@ Construct and execute the command. **ALWAYS use `--json`** — in Claude Code's
|
|
|
320
321
|
- **Keep it concise:** The query has a 2000-character limit. Enrich the content but stay focused and avoid unnecessary padding.
|
|
321
322
|
|
|
322
323
|
Examples:
|
|
323
|
-
- User says "
|
|
324
|
-
- User says "
|
|
325
|
-
- User says "
|
|
324
|
+
- User says "continue" → `--query "Please continue the analysis above on quantum computing, expanding on real-world applications"`
|
|
325
|
+
- User says "one more" → `--query "Please generate another product image in a similar style, white background"`
|
|
326
|
+
- User says "fix it" → `--query "Please revise the tweet generated above, make the tone more casual and add some emojis"`
|
|
326
327
|
|
|
327
328
|
**New conversation (first question, no skill):**
|
|
328
329
|
```bash
|
|
@@ -349,7 +350,7 @@ node felo-superAgent/scripts/run_superagent.mjs \
|
|
|
349
350
|
--query "Write a tweet about the latest AI trends" \
|
|
350
351
|
--live-doc-id "LIVE_DOC_ID" \
|
|
351
352
|
--skill-id twitter-writer \
|
|
352
|
-
--ext '{"brand_style_requirement":"Style name: darioamodei\nStyle labels: Thoughtful long-form essays\nStyle DNA: # Dario Amodei (@DarioAmodei) Tweet Writing Style DNA\n\n##
|
|
353
|
+
--ext '{"brand_style_requirement":"Style name: darioamodei\nStyle labels: Thoughtful long-form essays\nStyle DNA: # Dario Amodei (@DarioAmodei) Tweet Writing Style DNA\n\n## Style Overview\nDario writes like a serious intellectual...(full content)"}' \
|
|
353
354
|
--accept-language en \
|
|
354
355
|
--json
|
|
355
356
|
```
|
|
@@ -569,7 +570,7 @@ node felo-superAgent/scripts/run_superagent.mjs \
|
|
|
569
570
|
--query "Write a tweet about AI trends" \
|
|
570
571
|
--live-doc-id "QPetunwpGnkKuZHStP7gwt" \
|
|
571
572
|
--skill-id twitter-writer \
|
|
572
|
-
--ext '{"brand_style_requirement":"Style name: darioamodei\nStyle labels: Thoughtful long-form essays\nStyle DNA: # Dario Amodei (@DarioAmodei) Tweet Writing Style DNA\n\n##
|
|
573
|
+
--ext '{"brand_style_requirement":"Style name: darioamodei\nStyle labels: Thoughtful long-form essays\nStyle DNA: # Dario Amodei (@DarioAmodei) Tweet Writing Style DNA\n\n## Style Overview\nDario writes like a serious intellectual...(full content, do NOT truncate)"}' \
|
|
573
574
|
--accept-language en \
|
|
574
575
|
--json
|
|
575
576
|
```
|
|
@@ -15,10 +15,11 @@ These rules are mandatory. Violating any of them will produce incorrect behavior
|
|
|
15
15
|
|
|
16
16
|
3. **ALWAYS output `data.answer` verbatim.** After the script finishes, print `data.answer` exactly as-is as your response text. Do NOT summarize, paraphrase, or add commentary around it.
|
|
17
17
|
|
|
18
|
-
4. **`--live-doc-id` is REQUIRED** for every SuperAgent call. Follow
|
|
19
|
-
- Reuse any `live_doc_id` already available in this session
|
|
20
|
-
- If none: run `node felo-livedoc/scripts/run_livedoc.mjs list --json`,
|
|
21
|
-
- If list is empty: run `node felo-livedoc/scripts/run_livedoc.mjs create --name "Twitter Writer" --json`, use `data.short_id`
|
|
18
|
+
4. **`--live-doc-id` is REQUIRED** for every SuperAgent call. Follow these rules strictly:
|
|
19
|
+
- Reuse any `live_doc_id` already available in this session (from a prior SuperAgent or livedoc call)
|
|
20
|
+
- If none: run `node felo-livedoc/scripts/run_livedoc.mjs list --json`, then find the **first item where `is_shared === false`** in `data.items` (list is sorted by modification time descending, so this gives the most recently modified private LiveDoc). Use its `short_id`.
|
|
21
|
+
- If no `is_shared === false` item exists (or list is empty): run `node felo-livedoc/scripts/run_livedoc.mjs create --name "Twitter Writer" --json`, use `data.short_id`
|
|
22
|
+
- **NEVER use a LiveDoc where `is_shared === true`** — shared LiveDocs belong to other projects and will cause a 502 error.
|
|
22
23
|
|
|
23
24
|
5. **Always persist state.** After every SuperAgent call, extract `thread_short_id` and `live_doc_short_id` from the JSON response fields `data.thread_short_id` and `data.live_doc_short_id`. Use them in subsequent calls.
|
|
24
25
|
|
|
@@ -184,7 +185,7 @@ Always pass `--accept-language` matching the user's language (same value used fo
|
|
|
184
185
|
|
|
185
186
|
**If the list is empty:** Skip silently. Proceed to Step 2 without `--ext`.
|
|
186
187
|
|
|
187
|
-
**If styles are available:**
|
|
188
|
+
**If styles are available:** Output the COMPLETE list as plain text — every style returned by the API, grouped by type, numbered sequentially. NEVER use `AskUserQuestion` tool (it limits to 4 options and will silently drop styles). NEVER pre-select or filter styles on behalf of the user. Always append a "no preference" option as the last item. Then wait for the user's plain-text reply before proceeding.
|
|
188
189
|
|
|
189
190
|
Example presentation (adapt language to match user's language):
|
|
190
191
|
```
|
|
@@ -192,10 +193,11 @@ Here are the available Twitter writing styles — choosing one will make the out
|
|
|
192
193
|
|
|
193
194
|
[Your styles]
|
|
194
195
|
1. My Bold Voice
|
|
195
|
-
2. darioamodei
|
|
196
196
|
|
|
197
197
|
[Recommended styles]
|
|
198
|
-
|
|
198
|
+
2. elonmusk — Shitposting provocateur
|
|
199
|
+
3. naval — Pithy aphorism master
|
|
200
|
+
...(list ALL styles, do not omit any)
|
|
199
201
|
|
|
200
202
|
0. No preference — use default style
|
|
201
203
|
```
|
|
@@ -269,7 +271,7 @@ node felo-superAgent/scripts/run_superagent.mjs \
|
|
|
269
271
|
--query "/twitter-writer ENRICHED_QUERY" \
|
|
270
272
|
--live-doc-id "LIVE_DOC_ID" \
|
|
271
273
|
--skill-id twitter-writer \
|
|
272
|
-
--ext '{"brand_style_requirement":"Style name: darioamodei\nStyle labels: Thoughtful long-form essays\nStyle DNA: # Dario Amodei (@DarioAmodei) Tweet Writing Style DNA\n\n##
|
|
274
|
+
--ext '{"brand_style_requirement":"Style name: darioamodei\nStyle labels: Thoughtful long-form essays\nStyle DNA: # Dario Amodei (@DarioAmodei) Tweet Writing Style DNA\n\n## Style Overview\nDario writes like a serious intellectual...(full content, do NOT truncate)"}' \
|
|
273
275
|
--accept-language LANG \
|
|
274
276
|
--json
|
|
275
277
|
```
|
|
@@ -338,7 +340,7 @@ User input
|
|
|
338
340
|
### Example A: Analyze an account's style
|
|
339
341
|
|
|
340
342
|
```
|
|
341
|
-
User: "@paulg
|
|
343
|
+
User: "Analyze @paulg's tweet style"
|
|
342
344
|
```
|
|
343
345
|
|
|
344
346
|
**Step 1:** Fetch tweets:
|
|
@@ -352,10 +354,10 @@ node felo-x-search/scripts/run_x_search.mjs --id "paulg" --user
|
|
|
352
354
|
**Step 3:** Call SuperAgent (Mode 1 — no style library step):
|
|
353
355
|
```bash
|
|
354
356
|
node felo-superAgent/scripts/run_superagent.mjs \
|
|
355
|
-
--query "/twitter-writer @paulg
|
|
357
|
+
--query "/twitter-writer Please analyze the following tweets from @paulg and extract a writing style DNA document. Cover tone, sentence structure, opening hooks, closing CTAs, frequently used words, hashtag strategy, and emoji usage.\n\nAccount bio: [BIO]\n\nTweets:\n[TWEETS]" \
|
|
356
358
|
--live-doc-id "LIVE_DOC_ID" \
|
|
357
359
|
--skill-id twitter-writer \
|
|
358
|
-
--accept-language
|
|
360
|
+
--accept-language en \
|
|
359
361
|
--json
|
|
360
362
|
```
|
|
361
363
|
|
|
@@ -366,7 +368,7 @@ node felo-superAgent/scripts/run_superagent.mjs \
|
|
|
366
368
|
### Example B: Create tweets with a reference style (Mode 1 → Mode 2)
|
|
367
369
|
|
|
368
370
|
```
|
|
369
|
-
User: "@paulg
|
|
371
|
+
User: "Write 3 tweets about startups in @paulg's style"
|
|
370
372
|
```
|
|
371
373
|
|
|
372
374
|
**Step 1:** Run Mode 1 to extract style DNA (same as Example A). Style library step is skipped because Mode 1 already establishes style context in the thread.
|
|
@@ -376,10 +378,10 @@ User: "@paulg のスタイルでスタートアップについてのツイート
|
|
|
376
378
|
**Step 3:** Follow-up call (continuing the same thread — `thread_short_id` from Mode 1, no `--ext`):
|
|
377
379
|
```bash
|
|
378
380
|
node felo-superAgent/scripts/run_superagent.mjs \
|
|
379
|
-
--query "/twitter-writer
|
|
381
|
+
--query "/twitter-writer Based on the @paulg style DNA extracted above, write 3 tweet variations about startups. Each should have a distinct tone and angle, within 280 characters." \
|
|
380
382
|
--thread-id "THREAD_SHORT_ID" \
|
|
381
383
|
--live-doc-id "LIVE_DOC_ID" \
|
|
382
|
-
--accept-language
|
|
384
|
+
--accept-language en \
|
|
383
385
|
--json
|
|
384
386
|
```
|
|
385
387
|
|
|
@@ -447,17 +449,17 @@ console.log(JSON.stringify({brand_style_requirement:block}));
|
|
|
447
449
|
### Example D: Iterate on generated content (follow-up, no style step)
|
|
448
450
|
|
|
449
451
|
```
|
|
450
|
-
User: "
|
|
452
|
+
User: "Make the 2nd tweet more humorous and add some emojis"
|
|
451
453
|
```
|
|
452
454
|
|
|
453
455
|
Already have `thread_short_id` and `live_doc_id` from the previous call. This is a follow-up — do NOT fetch styles again, do NOT pass `--ext`.
|
|
454
456
|
|
|
455
457
|
```bash
|
|
456
458
|
node felo-superAgent/scripts/run_superagent.mjs \
|
|
457
|
-
--query "/twitter-writer
|
|
459
|
+
--query "/twitter-writer Please revise the 2nd tweet generated above. Make the tone more humorous and lighthearted, and add appropriate emojis. Keep the original intent intact." \
|
|
458
460
|
--thread-id "THREAD_SHORT_ID" \
|
|
459
461
|
--live-doc-id "LIVE_DOC_ID" \
|
|
460
|
-
--accept-language
|
|
462
|
+
--accept-language en \
|
|
461
463
|
--json
|
|
462
464
|
```
|
|
463
465
|
|
|
@@ -526,7 +528,7 @@ node felo-superAgent/scripts/run_superagent.mjs \
|
|
|
526
528
|
### Example G: User chooses no preference
|
|
527
529
|
|
|
528
530
|
```
|
|
529
|
-
User: "
|
|
531
|
+
User: "Write a tweet about a new product launch"
|
|
530
532
|
```
|
|
531
533
|
|
|
532
534
|
**Step 1.5:** Fetch styles, present list. User replies: `0` (no preference).
|
|
@@ -534,10 +536,10 @@ User: "帮我写一条关于新产品发布的推文"
|
|
|
534
536
|
Proceed without `--ext`:
|
|
535
537
|
```bash
|
|
536
538
|
node felo-superAgent/scripts/run_superagent.mjs \
|
|
537
|
-
--query "/twitter-writer
|
|
539
|
+
--query "/twitter-writer Write 3 tweets about a new product launch, each with a slightly different tone." \
|
|
538
540
|
--live-doc-id "LIVE_DOC_ID" \
|
|
539
541
|
--skill-id twitter-writer \
|
|
540
|
-
--accept-language
|
|
542
|
+
--accept-language en \
|
|
541
543
|
--json
|
|
542
544
|
```
|
|
543
545
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "felo-ai",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.50",
|
|
4
4
|
"description": "Felo AI CLI - real-time search, PPT generation, SuperAgent conversation, LiveDoc management, web fetch, YouTube subtitles, LiveDoc knowledge base, and X (Twitter) search from the terminal",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "src/cli.js",
|