bloby-bot 0.69.4 → 0.69.6
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/package.json +1 -1
- package/supervisor/channels/whatsapp.ts +25 -22
- package/supervisor/index.ts +224 -20
- package/supervisor/public/morphy/headphones-idle.webp +0 -0
- package/supervisor/public/morphy/headphones.json +4 -4
- package/supervisor/public/morphy/headphones.webp +0 -0
- package/supervisor/public/morphy/teleporting.json +2 -2
- package/supervisor/public/morphy/teleporting.webp +0 -0
- package/supervisor/shell.ts +53 -0
- package/supervisor/vite-dev.ts +15 -1
- package/supervisor/widget.js +124 -24
- package/supervisor/workspace-guard.js +33 -0
- package/vite.config.ts +22 -0
- package/workspace/client/public/morphy/headphones-idle.webp +0 -0
- package/workspace/client/public/morphy/headphones.json +4 -4
- package/workspace/client/public/morphy/headphones.webp +0 -0
- package/workspace/client/public/morphy/teleporting.json +2 -2
- package/workspace/client/public/morphy/teleporting.webp +0 -0
- package/workspace/client/public/sw.js +25 -2
- package/workspace/skills/create-skill/SKILL.md +188 -0
- package/workspace/skills/create-skill/references/patterns.md +126 -0
- package/workspace/client/public/arrow.png +0 -0
- package/workspace/client/public/bloby_happy.mov +0 -0
- package/workspace/client/public/bloby_happy.webm +0 -0
- package/workspace/client/public/bloby_happy_reappearing.mov +0 -0
- package/workspace/client/public/bloby_happy_reappearing.webm +0 -0
- package/workspace/client/public/bloby_say_hi.mov +0 -0
- package/workspace/client/public/bloby_say_hi.webm +0 -0
- package/workspace/client/public/bloby_tilts.webm +0 -0
- package/workspace/client/public/headphones_spritesheet.webp +0 -0
- package/workspace/client/public/spritesheet.webp +0 -0
|
@@ -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.)
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|