Skip to content

Commit f84f6b9

Browse files
illeatmyhatclaude
andcommitted
refactor(plugin-source): per-platform routing + auto-generate bob commands
Three changes that compose: 1. Bob commands are now derived 1:1 from the skills walk in build_plugins.py instead of static plugin-source/commands/*.md files. Each command file uses `description` from the skill's SKILL.md frontmatter (bob's command schema only honors `description` / `argument-hints` — the slash-command identifier comes from the file name). The body references the on-disk folder name (`evolve-lite-<skill>`, dash form) since that's what bob resolves skills by; folders stay colon-free for Windows compatibility. 2. Per-platform routing: any source file under `plugin-source/_<platform>/` ships only to that platform, with the `_<platform>/` prefix stripped from the output target. This is how single-platform artifacts now live alongside the universal sources: - _bob/custom_modes.yaml (bob's mandatory workflow definition) - _bob/README.md - _claude/hooks/hooks.json (Stop / UserPromptSubmit / SessionStart) - _claude/README.md - _claw-code/hooks/retrieve_entities.sh - _claw-code/README.md - _codex/README.md 3. render_to() now wipes each platform's plugin_root before writing, so files removed from plugin-source/ (renamed skills, deleted scripts, obsolete commands) cannot linger as orphans. Together with (2), this makes platform-integrations/ fully derivable from plugin-source/. Also drops the now-dead `^commands/` target_excludes from claude / claw-code / codex, since the static commands directory is gone. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
1 parent a0d7520 commit f84f6b9

24 files changed

Lines changed: 1306 additions & 84 deletions
Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
---
2-
name: evolve-lite:learn
3-
description: Run the evolve-lite:learn skill on the current conversation
2+
description: Must be used near the end of any non-trivial turn that produced potentially reusable tools, guidance, errors, workarounds, or workflows, so those lessons are saved for future turns.
43
---
5-
Use the evolve-lite:learn skill on the current conversation. Follow the skill's instructions exactly.
4+
Use the `evolve-lite-learn` skill on the current conversation. Follow the skill's instructions exactly.
Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
---
2-
name: evolve-lite:publish
3-
description: Publish a private guideline to a configured write-scope repo
2+
description: Publish a private guideline to a configured write-scope repo.
43
---
5-
Use the evolve-lite:publish skill to share your private guidelines via a configured write-scope repo. Follow the skill's instructions exactly.
4+
Use the `evolve-lite-publish` skill on the current conversation. Follow the skill's instructions exactly.
Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
---
2-
name: evolve-lite:recall
3-
description: Run the evolve-lite:recall skill on the current conversation
2+
description: Must be used at the start of any non-trivial task involving code changes, debugging, repo exploration, file inspection, or environment/tooling investigation to surface stored guidance before analysis or tool use.
43
---
5-
Use the evolve-lite:recall skill on the current conversation. Follow the skill's instructions exactly.
4+
Use the `evolve-lite-recall` skill on the current conversation. Follow the skill's instructions exactly.
Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
---
2-
name: evolve-lite:save-trajectory
3-
description: Save the current conversation trajectory as a JSON file
2+
description: Save the current conversation as a trajectory JSON file in OpenAI chat completion format for analysis and fine-tuning
43
---
5-
Use the evolve-lite:save-trajectory skill on the current conversation. Follow the skill's instructions exactly.
4+
Use the `evolve-lite-save-trajectory` skill on the current conversation. Follow the skill's instructions exactly.
Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
---
2-
name: evolve-lite:save
3-
description: Capture the current session's successful workflow as a reusable skill
2+
description: Captures the current session's successful workflow and saves it as a reusable skill with SKILL.md and helper scripts
43
---
5-
Use the evolve-lite:save skill to capture the current session's workflow as a reusable skill in your skills directory. Follow the skill's instructions exactly.
4+
Use the `evolve-lite-save` skill on the current conversation. Follow the skill's instructions exactly.
Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
---
2-
name: evolve-lite:subscribe
3-
description: Add a shared guidelines repo (read- or write-scope) to the unified repos list
2+
description: Add a shared guidelines repo (read-scope subscription or write-scope publish target) to the unified repos list.
43
---
5-
Use the evolve-lite:subscribe skill to add a shared guidelines repo — either a read-scope subscription or a write-scope publish target. Follow the skill's instructions exactly.
4+
Use the `evolve-lite-subscribe` skill on the current conversation. Follow the skill's instructions exactly.
Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
---
2-
name: evolve-lite:sync
3-
description: Pull the latest guidelines from every configured repo (read- and write-scope)
2+
description: Pull the latest guidelines from every configured repo (read- and write-scope).
43
---
5-
Use the evolve-lite:sync skill to update your configured guidelines repos. Follow the skill's instructions exactly.
4+
Use the `evolve-lite-sync` skill on the current conversation. Follow the skill's instructions exactly.
Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
---
2-
name: evolve-lite:unsubscribe
3-
description: Remove a repo from the unified repos list and delete its local clone
2+
description: Remove a repo from the unified repos list and delete its local clone.
43
---
5-
Use the evolve-lite:unsubscribe skill to remove a configured repo and delete its local clone. Follow the skill's instructions exactly.
4+
Use the `evolve-lite-unsubscribe` skill on the current conversation. Follow the skill's instructions exactly.

plugin-source/_bob/README.md

Lines changed: 225 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,225 @@
1+
# Evolve Lite for Bob
2+
3+
A Bob integration that helps you learn from conversations by automatically extracting and applying guidelines.
4+
5+
⭐ Star the repo: https://github.com/AgentToolkit/altk-evolve
6+
7+
## Features
8+
9+
- **Manual Learning**: Use `evolve-lite:learn` to extract and save guidelines from conversations
10+
- **Manual Retrieval**: Use `evolve-lite:recall` to retrieve and apply stored guidelines
11+
- **Guideline Sharing**: Subscribe to read-scope repos and publish to write-scope repos via Git
12+
13+
## Installation
14+
15+
Run the installation script from the repository root:
16+
17+
```bash
18+
bash platform-integrations/install.sh install bob lite
19+
```
20+
21+
This installs:
22+
- 6 skills in `~/.bob/skills/`
23+
- Shared library in `~/.bob/evolve-lib/`
24+
- Custom mode configuration
25+
26+
## How It Works
27+
28+
### Guideline Storage
29+
30+
Guidelines are stored as individual markdown files in `.evolve/entities/`,
31+
organized by source. Both read-scope subscriptions and write-scope publish
32+
targets live under `entities/subscribed/{name}/`:
33+
34+
```text
35+
.evolve/entities/
36+
guideline/ # Private guidelines
37+
use-context-managers.md
38+
subscribed/
39+
memory/ # write-scope clone (publishes land here)
40+
guideline/
41+
my-published-guideline.md
42+
alice/ # read-scope clone
43+
guideline/
44+
her-guideline.md
45+
```
46+
47+
Each file uses markdown with YAML frontmatter:
48+
49+
```markdown
50+
---
51+
type: guideline
52+
trigger: When processing files or managing resources
53+
visibility: private
54+
---
55+
56+
Use context managers for file operations
57+
58+
## Rationale
59+
60+
Context managers ensure proper resource cleanup
61+
```
62+
63+
## Sharing Guidelines
64+
65+
Evolve Lite treats shared guidelines as multi-reader / multi-writer git
66+
databases. A single unified `repos:` list in `evolve.config.yaml`
67+
describes every external guideline repo; each entry has a `scope` of
68+
`read` (subscribe only) or `write` (publish target that is also pulled
69+
on sync).
70+
71+
### Setup
72+
73+
Sharing requires `evolve.config.yaml` at the project root. If it doesn't
74+
exist, the subscribe or publish skills will prompt you to create one.
75+
Minimal structure:
76+
77+
```yaml
78+
identity:
79+
user: yourname # used to stamp ownership on published guidelines
80+
81+
repos:
82+
- name: memory
83+
scope: write
84+
remote: git@github.com:yourname/evolve-memory.git
85+
branch: main
86+
notes: public memory for my open-source projects
87+
- name: team
88+
scope: read
89+
remote: git@github.com:myorg/evolve-guidelines.git
90+
branch: main
91+
92+
sync:
93+
on_session_start: false
94+
```
95+
96+
The `.evolve/` directory is kept out of version control — the skills
97+
automatically add it to `.gitignore`.
98+
99+
### Subscribing to a Repo
100+
101+
Use `evolve-lite:subscribe` to add either a read-scope subscription or a
102+
write-scope publish target:
103+
104+
```text
105+
evolve-lite:subscribe
106+
> Remote URL: git@github.com:alice/evolve-guidelines.git
107+
> Short name: alice
108+
> Scope: read
109+
```
110+
111+
The repo is cloned directly into `.evolve/entities/subscribed/{name}/`
112+
(this directory serves as both the git clone and the recall mirror).
113+
114+
### Publishing Guidelines
115+
116+
Use `evolve-lite:publish` to share local guidelines via a **write-scope** repo:
117+
118+
1. The skill picks (or asks about) the write-scope target repo
119+
2. Lists files in `.evolve/entities/guideline/`
120+
3. You pick which ones to publish
121+
4. Each selected file is moved into the write-scope clone at
122+
`.evolve/entities/subscribed/{repo}/guideline/`, stamped with your
123+
username, committed, and pushed to the remote
124+
125+
Because the publish target is also a subscribed repo, your next sync
126+
pulls in anything other writers have pushed to the same remote.
127+
128+
### Syncing Repos
129+
130+
Use `evolve-lite:sync` to pull the latest changes from every configured
131+
repo:
132+
133+
```text
134+
evolve-lite:sync
135+
> Synced 2 repo(s): memory [write] (+0 added, 1 updated, 0 removed), alice [read] (+2 added, 0 updated, 0 removed)
136+
```
137+
138+
Read-scope repos use `git fetch` + `git reset --hard`. Write-scope repos
139+
use `git fetch` + `git rebase` so any unpushed local publish commits are
140+
preserved.
141+
142+
### Unsubscribing
143+
144+
Use `evolve-lite:unsubscribe` to remove a configured repo and delete
145+
its locally cloned files:
146+
147+
```text
148+
evolve-lite:unsubscribe
149+
> Which repo would you like to remove?
150+
> 1. memory [write]
151+
> 2. alice [read]
152+
```
153+
154+
The skill confirms before deleting `.evolve/entities/subscribed/{name}/`.
155+
Removing a write-scope repo will also discard any unpushed local
156+
publish commits, so the skill warns first.
157+
158+
### Sharing Storage Layout
159+
160+
```text
161+
.evolve/
162+
entities/
163+
guideline/ # your private guidelines
164+
my-guideline.md
165+
subscribed/
166+
memory/ # write-scope clone (publishes land here)
167+
guideline/
168+
my-published-guideline.md
169+
alice/ # read-scope clone (also serves as recall mirror)
170+
guideline/
171+
her-guideline.md
172+
```
173+
174+
## Skills Included
175+
176+
### `evolve-lite:learn`
177+
178+
Manually invoke to extract guidelines from the current conversation:
179+
- Analyzes task, steps taken, successes and failures
180+
- Generates proactive guidelines (what to do, not what to avoid)
181+
- Saves guidelines as markdown files in `.evolve/entities/guideline/`
182+
183+
### `evolve-lite:recall`
184+
185+
Manually invoke to retrieve and display stored guidelines:
186+
- Loads guidelines from private and subscribed sources
187+
- Formats and displays them for your review
188+
- Annotates subscribed guidelines with their source
189+
190+
### `evolve-lite:publish`
191+
192+
Publish private guidelines to a write-scope repo:
193+
- Lists available private guidelines
194+
- Moves selected guidelines into the write-scope clone at
195+
`.evolve/entities/subscribed/{repo}/guideline/`
196+
- Stamps with `owner`, `published_at`, and `source` metadata
197+
- Commits and pushes to the configured remote
198+
199+
### `evolve-lite:subscribe`
200+
201+
Add a configured repo to the unified `repos:` list:
202+
- Clones the remote into `.evolve/entities/subscribed/{name}/`
203+
- Adds an entry with `scope: read` or `scope: write` to config
204+
205+
### `evolve-lite:sync`
206+
207+
Sync every configured repo:
208+
- Read-scope: fetch + reset --hard (clobbers any local edits)
209+
- Write-scope: fetch + rebase (preserves unpushed local publishes)
210+
- Reports changes (added, updated, removed)
211+
212+
### `evolve-lite:unsubscribe`
213+
214+
Remove a configured repo:
215+
- Lists current repos with their scope and notes
216+
- Deletes the local clone at `.evolve/entities/subscribed/{name}/`
217+
- Removes the entry from config
218+
219+
## Environment Variables
220+
221+
- `EVOLVE_DIR`: Override the default `.evolve` directory location (guidelines, config, etc. are stored here)
222+
223+
## Verification
224+
225+
After installation, the skills should be available in Bob's skill list.
Lines changed: 71 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,71 @@
1+
customModes:
2+
- slug: evolve-lite
3+
name: Evolve Lite
4+
roleDefinition: |-
5+
You are Evolve Lite — a learning mode that improves from every interaction.
6+
7+
⚠️ CRITICAL: THE FOLLOWING WORKFLOW IS ABSOLUTELY MANDATORY AND CANNOT BE SKIPPED ⚠️
8+
9+
WORKFLOW (4 steps, strict order):
10+
11+
1. ⚠️ FIRST ACTION (MANDATORY): Use the evolve-lite:recall skill to retrieve relevant guidelines.
12+
- This MUST be your FIRST action in EVERY conversation
13+
- NO exceptions - even for simple tasks like "echo hello world"
14+
2. WORK: Complete the user's request. When a retrieved guideline applies, cite it in your reasoning.
15+
3. ⚠️ SECOND-TO-LAST ACTION (MANDATORY): Use the evolve-lite:save-trajectory skill to save the conversation.
16+
- This MUST happen BEFORE evolve-lite:learn
17+
- Note the trajectory file path from its output — you will need it in Step 4
18+
4. ⚠️ LAST ACTION (MANDATORY): Use the evolve-lite:learn skill to extract and save learnings.
19+
- This MUST happen BEFORE attempt_completion
20+
- NO exceptions - even if you think there's nothing to learn
21+
22+
Before using any skill for the first time in a conversation, read its
23+
SKILL.md so you know the exact invocation syntax. Bob installs skills
24+
under `.bob/skills/`; the runtime will resolve a skill by name.
25+
26+
⚠️ ENFORCEMENT RULES ⚠️
27+
- Do not skip steps. Do not reorder steps.
28+
- Step 1 must happen before any other tool use (except a one-time
29+
SKILL.md read for a skill you have not invoked yet).
30+
- Step 3 must happen before Step 4.
31+
- Step 4 must happen before attempt_completion.
32+
- If you forget Step 1, STOP and call evolve-lite:recall immediately.
33+
- If you reach attempt_completion without Steps 3 and 4, STOP and complete them first.
34+
customInstructions: |-
35+
- ALWAYS read a skill's SKILL.md before using it for the first time in a conversation
36+
- If evolve-lite:recall returns no guidelines, that is normal — proceed with the task.
37+
- If evolve-lite:learn reports no new entities, that counts as successful completion — do not retry.
38+
- The trajectory path from evolve-lite:save-trajectory is available in conversation context — do not re-run it.
39+
- If no errors or non-obvious discoveries occurred, saving zero entities is correct — do not force low-quality entities.
40+
41+
MEMORY SHARING (Optional):
42+
Additional evolve-lite skills handle sharing guidelines with others
43+
(publish, subscribe, unsubscribe, sync). They are OPTIONAL and do not
44+
affect the core workflow. Use them when you want to share your
45+
learnings with teammates, learn from others' guidelines, or keep
46+
subscribed guidelines up to date. Read the SKILL.md for any of these
47+
before first use.
48+
49+
PRE-COMPLETION GATE:
50+
Before calling attempt_completion, ask yourself:
51+
┌─────────────────────────────────────────────────────────────────┐
52+
│ Did I run the evolve-lite:recall skill at the start? │
53+
│ Did I run the evolve-lite:save-trajectory skill and note the path?│
54+
│ Did I run the evolve-lite:learn skill and see its output? │
55+
│ │
56+
│ ❌ NO → STOP. Go back and complete the step. │
57+
│ ✅ YES → Proceed with attempt_completion. │
58+
└─────────────────────────────────────────────────────────────────┘
59+
60+
Rules:
61+
62+
- Before using a skill for the first time, read its SKILL.md file to understand the correct usage syntax.
63+
- ALWAYS call the evolve-lite:learn skill before attempt_completion, even if the task seems simple or you think there's nothing to learn.
64+
- The workflow is non-negotiable: recall → work → evolve-lite:save-trajectory → learn → complete.
65+
- Skipping evolve-lite:learn violates the core purpose of this mode.
66+
67+
groups:
68+
- read
69+
- edit
70+
- command
71+
- browser

0 commit comments

Comments
 (0)