bloby-bot 0.69.5 → 0.70.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.
Files changed (41) hide show
  1. package/README.md +4 -4
  2. package/package.json +1 -1
  3. package/supervisor/channels/whatsapp.ts +25 -22
  4. package/supervisor/chat/bloby-main.tsx +1 -1
  5. package/supervisor/harnesses/claude.ts +24 -0
  6. package/supervisor/harnesses/codex.ts +2 -27
  7. package/supervisor/harnesses/pi/index.ts +6 -0
  8. package/supervisor/harnesses/skills.ts +133 -0
  9. package/supervisor/index.ts +230 -20
  10. package/supervisor/public/morphy/headphones-idle.webp +0 -0
  11. package/supervisor/public/morphy/headphones.json +4 -4
  12. package/supervisor/public/morphy/headphones.webp +0 -0
  13. package/supervisor/public/morphy/teleporting.json +2 -2
  14. package/supervisor/public/morphy/teleporting.webp +0 -0
  15. package/supervisor/shell.ts +53 -0
  16. package/supervisor/vite-dev.ts +28 -13
  17. package/supervisor/widget.js +124 -24
  18. package/supervisor/workspace-guard.js +33 -0
  19. package/vite.config.ts +26 -1
  20. package/workspace/client/index.html +6 -1
  21. package/workspace/client/public/morphy/headphones-idle.webp +0 -0
  22. package/workspace/client/public/morphy/headphones.json +4 -4
  23. package/workspace/client/public/morphy/headphones.webp +0 -0
  24. package/workspace/client/public/morphy/teleporting.json +2 -2
  25. package/workspace/client/public/morphy/teleporting.webp +0 -0
  26. package/workspace/client/public/sw.js +25 -2
  27. package/workspace/skills/create-skill/SKILL.md +188 -0
  28. package/workspace/skills/create-skill/references/patterns.md +126 -0
  29. package/workspace/skills/mac/skill.json +15 -2
  30. package/workspace/client/public/arrow.png +0 -0
  31. package/workspace/client/public/bloby_happy.mov +0 -0
  32. package/workspace/client/public/bloby_happy.webm +0 -0
  33. package/workspace/client/public/bloby_happy_reappearing.mov +0 -0
  34. package/workspace/client/public/bloby_happy_reappearing.webm +0 -0
  35. package/workspace/client/public/bloby_say_hi.mov +0 -0
  36. package/workspace/client/public/bloby_say_hi.webm +0 -0
  37. package/workspace/client/public/bloby_tilts.webm +0 -0
  38. package/workspace/client/public/headphones_spritesheet.webp +0 -0
  39. package/workspace/client/public/spritesheet.webp +0 -0
  40. package/workspace/skills/telegram/.claude-plugin/plugin.json +0 -6
  41. package/workspace/skills/whatsapp/.claude-plugin/plugin.json +0 -6
@@ -0,0 +1,126 @@
1
+ # Authoring Patterns & Anti-Patterns
2
+
3
+ Read this while you're actually drafting a skill. `SKILL.md` has the workflow; this has
4
+ the craft.
5
+
6
+ ## Writing good descriptions
7
+
8
+ The description is the trigger, so it's worth obsessing over a little.
9
+
10
+ - **Third person.** "Extracts text from PDFs." Not "I can help you…" or "You can use…".
11
+ - **What + When.** Capabilities *and* the situations that should fire it.
12
+ - **Trigger terms.** Name the file types, phrases, and contexts. Include the cases where
13
+ the human won't say the obvious keyword but clearly needs the skill.
14
+
15
+ ```yaml
16
+ # PDF processing
17
+ description: Extract text and tables from PDFs, fill forms, merge documents. Use whenever
18
+ a PDF, form, or scanned document is involved, or the human asks to pull data out of a file.
19
+
20
+ # Spreadsheet analysis
21
+ description: Analyze spreadsheets, build pivot tables, generate charts. Use for .xlsx/.csv
22
+ files, tabular data, "summarize this sheet", or any number-crunching over rows and columns.
23
+
24
+ # Commit messages
25
+ description: Write descriptive commit messages from a git diff. Use when the human asks for
26
+ a commit message or wants staged changes summarized.
27
+ ```
28
+
29
+ ## Degrees of freedom — match specificity to fragility
30
+
31
+ | Freedom | When | How |
32
+ |---|---|---|
33
+ | **High** (prose guidance) | many valid approaches, context-dependent | code review, writing voice |
34
+ | **Medium** (templates/pseudocode) | a preferred shape with acceptable variation | report generation |
35
+ | **Low** (exact scripts) | fragile, consistency is critical | DB migrations, packaging |
36
+
37
+ Give the model room where judgment helps, and lock it down only where a wrong step is
38
+ expensive. Over-constraining a flexible task makes the skill brittle and annoying.
39
+
40
+ ## Output format pattern
41
+
42
+ When the result must take a specific shape, show the template:
43
+
44
+ ```markdown
45
+ ## Report structure
46
+ Use this template:
47
+ # [Title]
48
+ ## Summary
49
+ ## Key findings
50
+ ## Recommendations
51
+ ```
52
+
53
+ ## Examples pattern
54
+
55
+ For skills where quality depends on seeing a few examples, show input → output:
56
+
57
+ ```markdown
58
+ **Example 1**
59
+ Input: Added user auth with JWT tokens
60
+ Output: feat(auth): implement JWT-based authentication
61
+
62
+ **Example 2**
63
+ Input: Fixed dates showing in the wrong timezone
64
+ Output: fix(reports): use UTC timestamps in report generation
65
+ ```
66
+
67
+ Concrete examples teach far better than abstract description.
68
+
69
+ ## Workflow / checklist pattern
70
+
71
+ For multi-step operations, give a checklist the model can copy and track:
72
+
73
+ ```markdown
74
+ ## Form-filling workflow
75
+ - [ ] Analyze the form
76
+ - [ ] Map the fields
77
+ - [ ] Validate the mapping
78
+ - [ ] Fill and verify
79
+ ```
80
+
81
+ ## Feedback-loop pattern
82
+
83
+ For quality-critical work, build in a validate step:
84
+
85
+ ```markdown
86
+ 1. Make the edit
87
+ 2. Validate immediately: `python scripts/validate.py output/`
88
+ 3. If it fails: read the error, fix, re-run
89
+ 4. Only proceed once validation passes
90
+ ```
91
+
92
+ ## Scripts: bundle, don't regenerate
93
+
94
+ A pre-made script in `scripts/` beats code the model writes fresh each time — it's more
95
+ reliable, costs no context tokens, and stays consistent. Make clear whether the model
96
+ should **run** it (usual) or **read** it as reference. Document required packages, and
97
+ remember Bloby installs into the workspace `node_modules`/`package.json` — never the
98
+ parent. Use forward-slash paths (`scripts/helper.py`), never backslashes.
99
+
100
+ ---
101
+
102
+ ## Anti-patterns to avoid
103
+
104
+ 1. **Verbosity.** Don't explain what the model already knows ("A PDF is a file format…").
105
+ Every token competes for context. Challenge each line: does it justify its cost?
106
+
107
+ 2. **Too many options.** "Use pypdf or pdfplumber or PyMuPDF or…" paralyzes. Give one
108
+ default with an escape hatch: "Use pdfplumber; for scanned PDFs needing OCR, use
109
+ pdf2image + pytesseract."
110
+
111
+ 3. **Time-sensitive notes.** "Before August, use the old API" rots. Use a *Current* section
112
+ and tuck legacy behavior into a collapsed "Old patterns" block.
113
+
114
+ 4. **Inconsistent terminology.** Pick one word and stick to it — "field" everywhere, not
115
+ a mix of "box"/"element"/"control". Drift makes instructions ambiguous.
116
+
117
+ 5. **Vague names.** `processing-pdfs`, not `helper`/`utils`/`tools`.
118
+
119
+ 6. **Walls of MUST/NEVER.** Rigid all-caps rules signal you stopped explaining. Reframe
120
+ with the reasoning — it's more humane and more robust.
121
+
122
+ 7. **Deeply nested references.** Keep `references/` one level deep from `SKILL.md`.
123
+ Deeply chained reads get truncated or skipped.
124
+
125
+ 8. **Skills that surprise.** A skill's behavior must match what its description implies.
126
+ No malware, no exfiltration, no hidden side effects. (Roleplay/persona skills are fine.)
@@ -5,11 +5,24 @@
5
5
  "bloby_human": "Bruno Bertapeli",
6
6
  "bloby": "bloby-bruno",
7
7
  "author": "newbot-official",
8
- "description": "Morphy native macOS companion. Activates on the [Mac] tag. You reply with a concise spoken line (TTS) and optionally drive the Mac's action registry — one <mac_actions> JSON array that can show a notch card (preset), point the mascot at the screen, or spotlight a control. Custom cards use raw <notch_html>. The same registry works proactively (PULSE/cron) wrapped in <mac_push>. Card presets + schemas: presets/PRESETS.md. Reusable custom cards: frequentSnippets/.",
8
+ "description": "Morphy native macOS companion. Activates on the [Mac] tag. You reply with a concise spoken line (TTS) and optionally drive the Mac's action registry — one <mac_actions> JSON array that can show a notch card, point the mascot at the screen, or spotlight a control. Custom cards use <notch_html>. The same registry works proactively (PULSE/cron) wrapped in <mac_push>. Card presets + schemas: presets/PRESETS.md. Reusable custom cards: frequentSnippets/.",
9
9
  "depends": [],
10
10
  "env_keys": [],
11
11
  "has_telemetry": false,
12
12
  "size": "12KB",
13
13
  "contains_binaries": false,
14
- "tags": ["mac", "morphy", "notch", "macos", "voice", "tts", "visual", "html", "registry", "actions", "spotlight", "point"]
14
+ "tags": [
15
+ "mac",
16
+ "morphy",
17
+ "notch",
18
+ "macos",
19
+ "voice",
20
+ "tts",
21
+ "visual",
22
+ "html",
23
+ "registry",
24
+ "actions",
25
+ "spotlight",
26
+ "point"
27
+ ]
15
28
  }
Binary file
@@ -1,6 +0,0 @@
1
- {
2
- "name": "telegram",
3
- "version": "1.0.0",
4
- "description": "Telegram channel via your own @BotFather bot token. Paste-token connect, direct long-poll, voice/photo, channel/business/assistant modes.",
5
- "skills": "./"
6
- }
@@ -1,6 +0,0 @@
1
- {
2
- "name": "whatsapp",
3
- "version": "2.0.0",
4
- "description": "WhatsApp channel via Baileys. QR auth, messaging, voice transcription, channel and business modes.",
5
- "skills": "./"
6
- }