-
Notifications
You must be signed in to change notification settings - Fork 11
feat(platform-integrations): add codex evolve-lite installer #111
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merged
visahak
merged 9 commits into
AgentToolkit:main
from
visahak:codex/evolve-lite-installer
Apr 2, 2026
Merged
Changes from all commits
Commits
Show all changes
9 commits
Select commit
Hold shift + click to select a range
dc6c844
feat(platform-integrations): add codex evolve-lite installer
visahak 279e5f0
fix(platform-integrations): clarify codex hooks setup
visahak 7f4e182
chore(tests): format codex integration checks
visahak c112f58
fix(platform-integrations): harden codex hook resolution
visahak b5c7ce8
fix(platform-integrations): preserve merged evolve config entries
visahak f7255b9
fix(platform-integrations): set codex recall entities dir
visahak 9c1cbc9
test(platform-integrations): expect bob full docker mcp config
visahak 3c94da6
test(platform-integrations): clarify bob mcp preservation semantics
visahak 7cee14c
Merge branch 'main' into codex/evolve-lite-installer
visahak File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
29 changes: 29 additions & 0 deletions
29
platform-integrations/codex/plugins/evolve-lite/.codex-plugin/plugin.json
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,29 @@ | ||
| { | ||
| "name": "evolve-lite", | ||
| "version": "1.0.0", | ||
| "description": "Recall and save Evolve entities in Codex without MCP.", | ||
| "author": { | ||
| "name": "Vinod Muthusamy", | ||
| "url": "https://github.com/AgentToolkit/altk-evolve" | ||
| }, | ||
| "homepage": "https://github.com/AgentToolkit/altk-evolve", | ||
| "repository": "https://github.com/AgentToolkit/altk-evolve", | ||
| "license": "MIT", | ||
| "keywords": ["evolve", "codex", "entities", "memory"], | ||
| "skills": "./skills/", | ||
| "interface": { | ||
| "displayName": "Evolve Lite", | ||
| "shortDescription": "Recall and save reusable Evolve entities.", | ||
| "longDescription": "A lightweight Codex plugin that helps you save reusable entities from successful sessions and recall them automatically on new prompts.", | ||
| "developerName": "AgentToolkit", | ||
| "category": "Productivity", | ||
| "capabilities": ["Interactive", "Write"], | ||
| "websiteURL": "https://github.com/AgentToolkit/altk-evolve", | ||
| "defaultPrompt": [ | ||
| "Recall Evolve entities for this task.", | ||
| "Save new Evolve learnings from this session.", | ||
| "Show me the entities stored for this repo." | ||
| ], | ||
| "brandColor": "#2563EB" | ||
| } | ||
| } |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,69 @@ | ||
| # Evolve Lite Plugin for Codex | ||
|
|
||
| Evolve Lite for Codex provides lightweight file-backed learning and recall without MCP. | ||
|
|
||
| ## Features | ||
|
|
||
| - Automatic recall through a repo-level Codex `UserPromptSubmit` hook when Codex hooks are enabled | ||
| - Manual `learn` skill to save reusable entities into `.evolve/entities/` | ||
| - Manual `recall` skill to inspect everything stored for the current repo | ||
|
|
||
| ## Storage | ||
|
|
||
| Entities are stored in the active workspace under: | ||
|
|
||
| ```text | ||
| .evolve/entities/ | ||
| guideline/ | ||
| use-context-managers-for-file-operations.md | ||
| cache-api-responses-locally.md | ||
| ``` | ||
|
|
||
| Each entity is a markdown file with lightweight YAML frontmatter. | ||
|
|
||
| ## Source Layout | ||
|
|
||
| This source tree intentionally omits `lib/`. | ||
|
|
||
| The shared library lives in: | ||
|
|
||
| ```text | ||
| platform-integrations/claude/plugins/evolve-lite/lib/ | ||
| ``` | ||
|
|
||
| `platform-integrations/install.sh` copies that shared library into the installed Codex plugin so the installed layout is self-contained. | ||
|
|
||
| ## Installation | ||
|
|
||
| Use the platform installer from the repo root: | ||
|
|
||
| ```bash | ||
| platform-integrations/install.sh install --platform codex | ||
| ``` | ||
|
|
||
| That installs: | ||
|
|
||
| - `plugins/evolve-lite/` | ||
| - `.agents/plugins/marketplace.json` | ||
| - `.codex/hooks.json` | ||
|
|
||
| Automatic recall requires Codex hooks to be enabled in `~/.codex/config.toml`: | ||
|
|
||
| ```toml | ||
| [features] | ||
| codex_hooks = true | ||
| ``` | ||
|
|
||
| If you do not want to enable Codex hooks, you can still invoke the installed `evolve-lite:recall` skill manually to load or inspect the saved guidance for the current repo. | ||
|
|
||
| The installed Codex hook does not require `git`. It walks upward from the current working directory until it finds the repo-local `plugins/evolve-lite/.../retrieve_entities.py` script. | ||
|
|
||
| ## Included Skills | ||
|
|
||
| ### `learn` | ||
|
|
||
| Analyze the current session and save proactive Evolve entities as markdown files. | ||
|
|
||
| ### `recall` | ||
|
|
||
| Show the entities already stored for the current workspace. |
117 changes: 117 additions & 0 deletions
117
platform-integrations/codex/plugins/evolve-lite/skills/learn/SKILL.md
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,117 @@ | ||
| --- | ||
| name: learn | ||
| description: Extract actionable entities from Codex conversation trajectories. Systematically identifies errors, failures, and inefficiencies to generate proactive entities that prevent them from recurring. | ||
| --- | ||
|
|
||
| # Entity Generator | ||
|
|
||
| ## Overview | ||
|
|
||
| This skill analyzes the current Codex conversation to extract actionable entities that would help on similar tasks in the future. It **prioritizes errors encountered during the conversation** such as tool failures, exceptions, wrong approaches, and retry loops, then turns them into proactive recommendations that prevent them from recurring. | ||
|
|
||
| ## Workflow | ||
|
|
||
| ### Step 1: Analyze the Conversation | ||
|
|
||
| Identify from your current conversation: | ||
|
|
||
| - **Task/Request**: What was the user asking for? | ||
| - **Steps Taken**: What reasoning, actions, and observations occurred? | ||
| - **What Worked**: Which approaches succeeded? | ||
| - **What Failed**: Which approaches did not work and why? | ||
| - **Errors Encountered**: Tool failures, exceptions, permission errors, retry loops, dead ends, and wrong initial approaches | ||
|
|
||
| ### Step 2: Identify Errors and Root Causes | ||
|
|
||
| Scan the conversation for these error signals: | ||
|
|
||
| 1. **Tool or command failures**: Non-zero exit codes, error messages, exceptions, stack traces | ||
| 2. **Permission or access errors**: "Permission denied", "not found", sandbox restrictions | ||
| 3. **Wrong initial approach**: First attempt abandoned in favor of a different strategy | ||
| 4. **Retry loops**: Same action attempted multiple times with variations before succeeding | ||
| 5. **Missing prerequisites**: Missing dependencies, packages, or configs discovered mid-task | ||
| 6. **Silent failures**: Actions that appeared to succeed but produced wrong results | ||
|
|
||
| For each error found, document: | ||
|
|
||
| | | Error Example | Root Cause | Resolution | Prevention Guideline | | ||
| |---|---|---|---|---| | ||
| | 1 | `exiftool: command not found` | System tool unavailable in sandbox | Switched to Python PIL | Use PIL for image metadata in sandboxed environments | | ||
| | 2 | `git push` rejected (no upstream) | Branch not tracked to remote | Added `-u origin branch` | Always set upstream when pushing a new branch | | ||
| | 3 | Tried regex parsing of HTML, got wrong results | Regex cannot handle nested tags | Switched to BeautifulSoup | Use a proper HTML parser, never regex | | ||
|
|
||
| If no errors are found, continue to Step 3 and extract entities from successful patterns. | ||
|
|
||
| ### Step 3: Extract Entities | ||
|
|
||
| Extract 3-5 proactive entities. **Prioritize entities derived from errors identified in Step 2.** | ||
|
|
||
| Follow these principles: | ||
|
|
||
| 1. **Reframe failures as proactive recommendations** | ||
| If an approach failed due to permissions, recommend the alternative first. | ||
|
|
||
| 2. **Focus on what worked, stated as the primary approach** | ||
| Bad: "If exiftool fails, use PIL instead" | ||
| Good: "In sandboxed environments, use Python libraries like PIL or Pillow for image metadata extraction" | ||
|
|
||
| 3. **Triggers should be situational context, not failure conditions** | ||
| Bad trigger: "When apt-get fails" | ||
| Good trigger: "When working in containerized or sandboxed environments" | ||
|
|
||
| 4. **For retry loops, recommend the final working approach as the starting point** | ||
| If three variations were tried before one worked, the entity should recommend the working variation directly. | ||
|
|
||
| ### Step 4: Output Entities JSON | ||
|
|
||
| Output entities in this JSON format: | ||
|
|
||
| ```json | ||
| { | ||
| "entities": [ | ||
| { | ||
| "content": "Proactive entity stating what TO DO", | ||
| "rationale": "Why this approach works better", | ||
| "type": "guideline", | ||
| "trigger": "Situational context when this applies" | ||
| } | ||
| ] | ||
| } | ||
| ``` | ||
|
|
||
| ### Step 5: Save Entities | ||
|
|
||
| After generating the entities JSON, save them using the helper script: | ||
|
|
||
| #### Method 1: Direct Pipe | ||
|
|
||
| ```bash | ||
| echo '<your-json-output>' | python3 "$(git rev-parse --show-toplevel 2>/dev/null || pwd)/plugins/evolve-lite/skills/learn/scripts/save_entities.py" | ||
| ``` | ||
|
|
||
| #### Method 2: From File | ||
|
|
||
| ```bash | ||
| cat entities.json | python3 "$(git rev-parse --show-toplevel 2>/dev/null || pwd)/plugins/evolve-lite/skills/learn/scripts/save_entities.py" | ||
| ``` | ||
|
|
||
| #### Method 3: Interactive | ||
|
|
||
| ```bash | ||
| python3 "$(git rev-parse --show-toplevel 2>/dev/null || pwd)/plugins/evolve-lite/skills/learn/scripts/save_entities.py" | ||
| ``` | ||
|
|
||
| The script will: | ||
|
|
||
| - Find or create the entities directory at `.evolve/entities/` | ||
| - Write each entity as a markdown file in `{type}/` subdirectories | ||
| - Deduplicate against existing entities | ||
| - Display confirmation with the total count | ||
|
|
||
| ## Best Practices | ||
|
|
||
| 1. Prioritize error-derived entities first. | ||
| 2. Keep entities specific and actionable. | ||
| 3. Include rationale so the future agent understands why the guidance matters. | ||
| 4. Use situational triggers instead of failure-based triggers. | ||
| 5. Limit output to the 3-5 most valuable entities. |
Oops, something went wrong.
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Uh oh!
There was an error while loading. Please reload this page.