You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
fix(platform-integrations): clean up Bob evolve-lite skills (#109)
* fix(platform-integrations): clean up Bob evolve-lite skills
- Remove hardcoded references, use platform-agnostic language
- Use .bob/skills/ relative paths instead of env vars for script references
- Remove unused retrieve_entities.py from recall skill (no hooks in Bob)
- Streamline learn skill SKILL.md (remove false hook reference, redundant
examples, verbose save methods)
- Update custom mode with explicit skill paths
* fix(platform-integrations): clean up trailing whitespace and add actionable recall instructions
Remove trailing spaces in custom_modes.yaml. Add concrete steps to
recall SKILL.md so the LLM knows to list and read .md files from
.evolve/entities/ subdirectories.
* fix(platform-integrations): resolve Step 0 vs Step 1 ordering conflict
Addresses CodeRabbit review finding: Resolve Step 0 vs Step 1 ordering conflict
description: Extract actionable entities from conversation trajectories. Systematically identifies errors, failures, and inefficiencies to generate proactive entities that prevent them from recurring.
3
+
description: Analyze the current conversation to extract actionable entities — proactive recommendations derived from errors, failures, and successful patterns.
4
4
---
5
5
6
6
# Entity Generator
7
7
8
8
## Overview
9
9
10
-
This skill analyzes conversation trajectories to extract actionable entities that would help on similar tasks in the future. It **prioritizes errors encountered during the conversation** — tool failures, exceptions, wrong approaches, retry loops — and transforms them into proactive recommendations that prevent those errors from recurring.
10
+
This skill analyzes the current conversation to extract actionable entities that would help on similar tasks in the future. It **prioritizes errors** — tool failures, exceptions, wrong approaches, retry loops — and transforms them into proactive recommendations that prevent those errors from recurring.
11
11
12
12
## Workflow
13
13
14
14
### Step 1: Analyze the Conversation
15
15
16
-
Identify from your current conversation:
16
+
Identify from the current conversation:
17
17
18
18
-**Task/Request**: What was the user asking for?
19
-
-**Steps Taken**: What reasoning, actions, and observations occurred?
20
19
-**What Worked**: Which approaches succeeded?
21
20
-**What Failed**: Which approaches didn't work and why?
22
-
-**Errors Encountered**: Tool failures, exceptions, permission errors, retry loops, dead ends, and wrong initial approaches
6.**Silent failures**: Actions that appeared to succeed but produced wrong results
34
33
35
-
For each error found, document:
36
-
37
-
|| Error Example | Root Cause | Resolution | Prevention Guideline |
38
-
|---|---|---|---|---|
39
-
| 1 |`exiftool: command not found`| System tool unavailable in sandbox | Switched to Python PIL | Use PIL for image metadata in sandboxed environments |
40
-
| 2 |`git push` rejected (no upstream) | Branch not tracked to remote | Added `-u origin branch`| Always set upstream when pushing a new branch |
41
-
| 3 | Tried regex parsing of HTML, got wrong results | Regex can't handle nested tags | Switched to BeautifulSoup | Use a proper HTML parser (BeautifulSoup/lxml), never regex |
42
-
43
-
> **If no errors are found**, proceed to Step 3 and extract entities from successful patterns.
34
+
If no errors are found, extract entities from successful patterns instead.
44
35
45
36
### Step 3: Extract Entities
46
37
47
-
Extract 3-5 proactive entities. **Prioritize entities derived from errors identified in Step 2.**
48
-
49
-
Follow these principles:
38
+
Extract 3-5 proactive entities. **Prioritize entities derived from errors.**
50
39
51
-
1.**Reframe failures as proactive recommendations:**
52
-
- If an approach failed due to permissions → recommend the alternative FIRST
53
-
- If a system tool wasn't available → recommend what worked instead
54
-
- If an approach hit environment constraints → recommend the constraint-aware approach
40
+
Principles:
55
41
56
-
2.**Focus on what worked, stated as the primary approach:**
42
+
1.**Reframe failures as proactive recommendations** — recommend what worked, not what to avoid
57
43
- Bad: "If exiftool fails, use PIL instead"
58
44
- Good: "In sandboxed environments, use Python libraries (PIL/Pillow) for image metadata extraction"
59
45
60
-
3.**Triggers should be situational context, not failure conditions:**
46
+
2.**Triggers should be situational context, not failure conditions**
61
47
- Bad trigger: "When apt-get fails"
62
48
- Good trigger: "When working in containerized/sandboxed environments"
63
49
64
-
4.**For retry loops, recommend the final working approach as the starting point:**
65
-
- If 3 variations were tried before one worked, the entity should recommend the working variation directly
66
-
- Eliminate the trial-and-error by encoding the answer
50
+
3.**For retry loops, recommend the final working approach directly** — eliminate trial-and-error by encoding the answer
67
51
68
-
### Step 4: Output Entities JSON
52
+
### Step 4: Save Entities
69
53
70
-
Output entities in the following JSON format:
54
+
Output entities as JSON and pipe to the save script:
71
55
72
-
```json
73
-
{
56
+
```bash
57
+
echo'{
74
58
"entities": [
75
59
{
76
60
"content": "Proactive entity stating what TO DO",
@@ -79,127 +63,21 @@ Output entities in the following JSON format:
79
63
"trigger": "Situational context when this applies"
80
64
}
81
65
]
82
-
}
83
-
```
84
-
85
-
### Step 5: Save Entities
86
-
87
-
After generating the entities JSON, save them using the save_entities.py script:
"trigger": "When extracting data from HTML documents or web pages"
178
-
}
179
-
```
180
-
181
-
**From a permission error** (apt-get blocked in sandbox):
182
-
```json
183
-
{
184
-
"content": "Install Python packages with pip/uv instead of system package managers in sandboxed environments",
185
-
"rationale": "apt-get and brew require root/sudo which sandboxed environments block; pip works in user space",
186
-
"type": "guideline",
187
-
"trigger": "When installing dependencies in containerized or sandboxed environments"
188
-
}
189
-
```
190
-
191
75
## Best Practices
192
76
193
-
1.**Prioritize error-derived entities**: Errors are the highest-signal source of learnings — extract entities from them first
194
-
2.**One error, one entity**: Each distinct error should produce exactly one prevention entity
195
-
3.**Be specific**: Generic entities are less useful than context-specific ones
196
-
4.**Be actionable**: Entities should clearly state what to do
197
-
5.**Include rationale**: Explain why the approach works
198
-
6.**Use situational triggers**: Context-based triggers are more useful than failure-based ones
199
-
7.**Limit to 3-5 entities**: Focus on the most impactful learnings
200
-
8.**Resolving Rules 2 vs 7**: When more than 5 distinct errors are found, start from Rule 2 (one error, one entity) then reduce to 3-5 entities using these steps:
201
-
-**Merge**: Combine errors with the same root cause or fix into a single prevention entity
202
-
-**Rank**: Select among remaining entities by severity > frequency > user impact > recency
203
-
-**Drop**: Discard lowest-ranked entities that exceed the cap
204
-
205
-
*Example*: A session hits 8 errors — 3 timeout variants (connect, read, DNS), 2 auth failures (expired token, missing header), 1 file-not-found, 1 permission error, 1 import error. Apply: merge the 3 timeouts into one network-resilience entity and the 2 auth failures into one auth-validation entity, then rank the resulting 5 entities (network-resilience, auth-validation, file-not-found, permission, import) and keep the top 3-5.
77
+
1.**Prioritize error-derived entities**: Errors are the highest-signal source of learnings
78
+
2.**One error, one entity**: Each distinct error should produce one prevention entity
79
+
3.**Be specific and actionable**: State what to do, not what to avoid
80
+
4.**Include rationale**: Explain why the approach works
81
+
5.**Use situational triggers**: Context-based, not failure-based
82
+
6.**Limit to 3-5 entities**: Focus on the most impactful learnings
83
+
7.**When more than 5 errors exist**: Merge errors with the same root cause, rank by severity > frequency > user impact, then keep the top 3-5
Copy file name to clipboardExpand all lines: platform-integrations/bob/evolve-lite/skills/evolve-recall/SKILL.md
+6-7Lines changed: 6 additions & 7 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -1,21 +1,20 @@
1
1
---
2
2
name: recall
3
-
description: Retrieves relevant entities from a knowledge base. Designed to be invoked automatically via hooks to inject context-appropriate entities before task execution.
3
+
description: Retrieves relevant entities from a knowledge base to inject context-appropriate entities before task execution.
4
4
---
5
5
6
6
# Entity Retrieval
7
7
8
8
## Overview
9
9
10
-
This skill retrieves relevant entities from a stored knowledge base based on the current task context. It loads all stored entities and presents them to Claude for relevance filtering.
10
+
This skill retrieves relevant entities from a stored knowledge base based on the current task context. Read all stored entities from the entities directory and apply any relevant ones to the current task.
11
11
12
12
## How It Works
13
13
14
-
1. Hook fires on user prompt submission
15
-
2. Script reads prompt from stdin (JSON with `prompt` field)
16
-
3. Loads all entities from the entities directory (`.evolve/entities/`)
17
-
4. Outputs formatted entities to stdout
18
-
5. Claude receives entities as additional context and applies relevant ones
14
+
1. List all `.md` files under `.evolve/entities/` and its subdirectories
15
+
2. Read each file — the YAML frontmatter contains `type` and `trigger`, the body contains the entity content and rationale
16
+
3. Review each entity for relevance to the current task
17
+
4. Apply relevant entities as additional context for your work
0 commit comments