skill-evolve
Skill444 starsChanged 7 months agoMITView on GitHub
Optional sidecar skill for controlled feedback-driven skill evolution. Not part of the default pipeline. Only activates when explicitly requested.
8 other projects use a version of this.
Adopted by
Most recently taken up by
- Iabstergo1/pdf-to-study-kbtheir own version, first seen Nov 7, 2026
- J03Fr0st/skillstheir own version, first seen Nov 1, 2026
- LeeYudok/agents-scaffoldtheir own version, first seen Oct 24, 2026
- aberson/skill-meshtheir own version, first seen Oct 24, 2026
- UniClipboard/UniClipboardtheir own version, first seen Oct 8, 2026
- yologdev/yoyo-evolvetheir own version, first seen Oct 8, 2026
Other versions8 projects use a version of this.
Word for word · 0
None found.
Edited · 0
None found.
Wrote their own version · 8
- UniClipboard/UniClipboard★ 2ksame name
- yologdev/yoyo-evolve★ 1.9ksame name
- LeeYudok/agents-scaffold★ 38same name
- OrangeViolin/skill-evolve★ 37same name
- aberson/skill-mesh★ 2same name
- Iabstergo1/pdf-to-study-kb★ 2same name
- mikeweib/claude-skills★ 1same name
- J03Fr0st/skills★ 0same name
How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.
In this repository15 other files it gives its agents.
- archive-groundingSkill
- audio_structuringSkill
- document-groundingSkill
- grounded-research-litSkill
- grounded-reviewSkill
- grounded-summarySkill
- input-routerSkill
- meeting-audio-groundingSkill
- meeting-groundingSkill
- meeting-video-groundingSkill
- one-reportSkill
- pptx-groundingSkill
- remote-inputSkill
- report-exportSkill
- table-groundingSkill
The file
Show its rules and text
We split this skill into the rules it gives an agent
32 rules. 0 are common, 23 are distinctive, and 9 are very specific to this project.
0
Common
Most of the 5 edited versions we read keep these.
23
Distinctive
This author's own choices. Worth a look.
9
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Distinctive: line 20
Test reviewed patches in isolated workspaces
- Distinctive: line 30
Run automatically during normal report generation
- Distinctive: line 39
Use this skill when:
- Distinctive: line 44
Do NOT use this skill when:
- Distinctive: line 53
When explicitly invoked, follow this controlled flow:
- Very specific: line 57
Use collect_feedback.py to ingest raw user feedback:
- Distinctive: line 101
Dependency References: All other skills/agent configs that reference this skill
- Distinctive: line 106
When generating a proposal, the agent must:
- Distinctive: line 109
Scan Dependencies: Search all skills and agent configs to find references to the main file
- Distinctive: line 110
Check other skills' "What This Skill Is" or invocation chain descriptions
- Distinctive: line 111
Check agent configs for skill references
- Distinctive: line 112
Check prompting templates for skill paths
- Very specific: line 117
If the modification target is grounded-review:
- Very specific: line 128
If before content exists → generate not_contains assertion to verify old content removed
- Very specific: line 129
If after content exists → generate contains assertion to verify new content added
- Very specific: line 134
Avoid redundant assertions (one contains can verify content without splitting)
- Distinctive: line 138
If dependency references also need updates, those points should have corresponding assertions
- Distinctive: line 139
Ensure consistency between main file and reference points
- Very specific: line 169
Before applying any changes, review and refine the proposed planned_changes so they contain concrete, safe edits.
- Distinctive: line 171
Do not treat an auto-generated proposal as ready-to-apply by default.
- Distinctive: line 187
Test the patch against evaluation cases:
- Distinctive: line 201
Main File Assertions: Verify core changes in the main skill file
- Distinctive: line 202
Dependency Reference Assertions: Verify sync updates for all dependency reference points
- Distinctive: line 203
Consistency Checks: Ensure descriptions/behaviors match between main file and references
- Very specific: line 215
If any assertion fails (main file or dependency reference), gate result is reject:
- Distinctive: line 226
If gate passes, promote the candidate:
- Very specific: line 254
No remaining old patterns (e.g., weighted_total >= 90 when it should be >= 95)
- Distinctive: line 258
If gate fails, the patch is rejected and stable version remains unchanged.
- Distinctive: line 291
Rollback Ready: Every stable version knows its rollback target
- Very specific: line 382
If a user wants to use a promoted version in a future chat, they must explicitly point the prompt at that versioned snapshot path or …
- Distinctive: line 386
If a proposal is not suitable or fails the regression gate, archive it explicitly using:
- Distinctive: line 394
Do not leave failed proposals ambiguous if you already know they should not be promoted.
“Common” is measured: kept by at least 6 in 10 of the 5 edited versions of this file we could read. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
Skill Evolve (Optional Sidecar)
This is an OPTIONAL sidecar capability, NOT part of the default pipeline.
What This Skill Is
Skill Evolve is a controlled, opt-in framework for turning real user feedback into skill improvements over time.
It is designed to:
- Collect and normalize user feedback
- Generate minimal patch proposals
- Require manual review/refinement of generated patch proposals before real patch application
- Test reviewed patches in isolated workspaces
- Run regression gates
- Promote verified patches to new stable versions
- Preserve the default
.cursor/skills/tree unchanged unless a human later chooses to merge approved changes manually
What This Skill Is NOT
This skill must NOT:
- Run automatically during normal report generation
- Modify stable skills without explicit evolve flow
- Replace human judgment with automated decisions
- Make the default pipeline behave differently
When to Use This Skill
Use this skill when:
- User explicitly requests "skill evolution" or "feedback-driven improvement"
- User provides feedback that should be tracked and potentially addressed
- User wants to analyze and improve the skill framework
Do NOT use this skill when:
- Generating reports (use
one-reportinstead) - Running normal pipeline operations
- User has not explicitly requested skill evolution
Controlled Evolve Loop Flow
When explicitly invoked, follow this controlled flow:
Step 1: Collect Feedback
Use collect_feedback.py to ingest raw user feedback:
python .cursor/skills/skill-evolve/scripts/collect_feedback.py --interactive
# OR
python .cursor/skills/skill-evolve/scripts/collect_feedback.py --text "feedback text"
# OR
python .cursor/skills/skill-evolve/scripts/collect_feedback.py --file /path/to/feedback.txtRaw feedback preserves user language and is saved to:
{WORKSPACE}/.skill-evolve-data/feedback/raw/
Step 2: Normalize Feedback
Convert raw feedback to structured format:
python .cursor/skills/skill-evolve/scripts/normalize_feedback.py \
--feedback-id FB-XXXXXX \
--stage <grounding|research|summary|review|export> \
--skill <skill-name>Normalized feedback is saved to:
{WORKSPACE}/.skill-evolve-data/feedback/normalized/
Step 3: Propose Minimal Patch
Generate a patch proposal from normalized feedback:
python .cursor/skills/skill-evolve/scripts/propose_skill_patch.py \
--feedback-id FB-XXXXXX,FB-YYYYYYPatch proposals are saved to:
{WORKSPACE}/.skill-evolve-data/patch_proposals/proposed/
Change Unit
A patch proposal is not just a single modified skill file, but a complete change unit containing:
- Main File: The skill being modified
- Dependency References: All other skills/agent configs that reference this skill
- Auto-generated Assertions: For regression gate verification
Dependency Reference Scanning
When generating a proposal, the agent must:
- Identify Main File: Determine which skill is the modification target
- Scan Dependencies: Search all skills and agent configs to find references to the main file
- Check other skills' "What This Skill Is" or invocation chain descriptions
- Check agent configs for skill references
- Check prompting templates for skill paths
- Declare Reference Points: List all locations requiring sync updates in the proposal
- Analyze Impact Scope: Distinguish between "description update only" and "behavior sync required" references
Example:
If the modification target is grounded-review:
- Main File:
.cursor/skills/grounded-review/SKILL.md - Dependency References:
.cursor/skills/one-report/SKILL.md(as sub-process reference).cursor/agents/reviewer.md(agent config)
Auto-generated Assertions
The proposal script should auto-generate assertions rather than relying on manual creation:
- Analyze planned_changes:
- If
beforecontent exists → generatenot_containsassertion to verify old content removed - If
aftercontent exists → generatecontainsassertion to verify new content added - Numeric changes (90→95) → generate
regex_matchassertion
- If
- Minimal Assertion Set:
- Core semantic changes must be covered by assertions
- Avoid redundant assertions (one
containscan verify content without splitting) - Empty tests cannot pass vacuously (reject if no changes)
- Cross-file Assertions:
- If dependency references also need updates, those points should have corresponding assertions
- Ensure consistency between main file and reference points
Auto-generated Assertion Example (threshold 90→95):
{
"assertions": [
{
"name": "threshold_updated_to_95",
"type": "contains",
"file": "grounded-review/SKILL.md",
"pattern": "weighted total >= 95"
},
{
"name": "old_threshold_90_removed",
"type": "not_contains",
"file": "grounded-review/SKILL.md",
"pattern": "weighted total >= 90"
},
{
"name": "one_report_sync",
"type": "contains",
"file": "one-report/SKILL.md",
"pattern": "review threshold"
}
]
}Step 4: Review and Refine Patch Proposal
Before applying any changes, review and refine the proposed planned_changes so they contain concrete, safe edits.
Do not treat an auto-generated proposal as ready-to-apply by default.
Step 5: Apply Patch Candidate
Apply the reviewed patch to an isolated workspace for testing:
python .cursor/skills/skill-evolve/scripts/apply_patch_to_workspace.py \
--proposal-id PP-XXXXXX \
--apply-changesThis creates a candidate workspace without modifying stable skills.
Step 6: Run Regression Gate
Test the patch against evaluation cases:
python .cursor/skills/skill-evolve/scripts/run_regression_gate.py \
--proposal-id PP-XXXXXXResults are saved to:
{WORKSPACE}/.skill-evolve-data/evaluations/results/
Regression Gate for Change Units
Regression gate must verify the complete change unit:
- Main File Assertions: Verify core changes in the main skill file
- Dependency Reference Assertions: Verify sync updates for all dependency reference points
- Consistency Checks: Ensure descriptions/behaviors match between main file and references
Assertion File Path Resolution
The file field in assertions is resolved relative to workspace root:
grounded-review/SKILL.md→{workspace}/grounded-review/SKILL.mdone-report/SKILL.md→{workspace}/one-report/SKILL.md.cursor/agents/reviewer.md→{workspace}/.cursor/agents/reviewer.md
Failure Handling
If any assertion fails (main file or dependency reference), gate result is reject:
{
"decision": "reject",
"reason": "Dependency reference out of sync: one-report/SKILL.md missing review threshold update"
}Step 7: Promote or Reject
If gate passes, promote the candidate:
Standard promotion (creates versioned directory only):
python .cursor/skills/skill-evolve/scripts/promote_skill_version.py \
--gate-id GR-XXXXXX \
--notes "Description of changes"Sync promotion (also updates stable skills/):
python .cursor/skills/skill-evolve/scripts/promote_skill_version.py \
--gate-id GR-XXXXXX \
--notes "Description of changes" \
--syncResult (standard):
- Original
.cursor/skills/remains untouched - New
.skill-evolve-data/skills-versions/v002/created with patches applied
Result (--sync):
- Versioned directory created as above
- Additionally: stable
.cursor/skills/is updated with approved patches - Consistency checks run to ensure no old patterns remain
Consistency Check Feature: The promote script now runs full line-by-line checks on patched files to ensure:
- No remaining old patterns (e.g.,
weighted_total >= 90when it should be>= 95) - Cross-file consistency (all related files updated together)
- Report any missed updates before finalizing
If gate fails, the patch is rejected and stable version remains unchanged.
Version Management
Stable Version Pointer
Located at: {WORKSPACE}/.skill-evolve-data/stable/current_version.json
Contains:
- Current stable version ID
- Path to version manifest
- Last update timestamp
Version Manifests
Located at: {WORKSPACE}/.skill-evolve-data/versions/vXXX/version_manifest.json
Contains:
- Version ID
- Based-on version
- Accepted patch IDs
- Passed gate IDs
- Rollback information
Safety Principles
- Opt-in Only: Nothing runs automatically
- Isolation: Patches are tested in isolated workspaces
- Human Approval: Promotion requires successful gate + explicit promotion call
- Rollback Ready: Every stable version knows its rollback target
- No Overwrite: Stable skills are never modified without explicit promotion
Directory Layout
Skill Code (in .cursor/skills/skill-evolve/)
.cursor/
skills/
skill-evolve/
SKILL.md # This file
scripts/ # Evolution workflow scripts
schemas/ # JSON schemasData Directory (in {WORKSPACE}/.skill-evolve-data/)
{WORKSPACE}/
.skill-evolve-data/
stable/
current_version.json
versions/
v001/
version_manifest.json
vXXX/
skills-versions/ # Versioned skill+agent snapshots (created on promotion)
v001/
agents/ # copy of .cursor/agents/
skills/ # copy of .cursor/skills/
v002/
agents/
skills/
feedback/
raw/ # Original user feedback
normalized/ # Structured feedback
patch_proposals/
proposed/ # Generated proposals
accepted/ # Successfully promoted
rejected/ # Failed or rejected
evaluations/
cases/ # Evaluation case definitions
results/ # Gate execution resultsKey Design Principle
- Skill code stays in
.cursor/skills/skill-evolve/(git-managed) - Versioned snapshots go to
.skill-evolve-data/skills-versions/(each version contains bothagents/andskills/sub-dirs) - Runtime data goes to
{WORKSPACE}/.skill-evolve-data/(local, git-ignored)
Example Invocation
User explicitly requests skill evolution:
Use the skill-evolve framework to analyze my feedback and propose improvements.
My feedback: The grounded-research-lit skill sometimes opens fewer papers than the `MIN_OPENED_PAPERS` threshold set by `research_mode`. The cursor backend should ensure the configured minimum number of unique papers are opened before proceeding to summary.
Feedback ID reference: FB-280408 (collected earlier)Agent would then:
- Normalize the feedback with appropriate stage and skill
- Propose a minimal patch
- Apply to candidate workspace
- Run regression gate
- Report results for human decision
Summary
| Aspect | Default Pipeline | Skill Evolve |
| Activation | Automatic | Explicit request only |
| Purpose | Report generation | Skill improvement |
| Modifications | None | Controlled via gate |
| Automatic changes | Yes | No |
| Human approval | N/A | Required for promotion |
Important Activation Rule
Promotion updates the Skill Evolve stable pointer and creates a new versioned snapshot such as .skill-evolve-data/skills-versions/v002/, which contains both agents/ and skills/ sub-directories. This ensures every version is self-contained and reproducible.
It does not automatically rewrite ordinary prompts or make the default .cursor/skills/ or .cursor/agents/ trees behave differently.
If a user wants to use a promoted version in a future chat, they must explicitly point the prompt at that versioned snapshot path or manually merge the approved changes back into .cursor/skills/ and .cursor/agents/.
Rejection Path
If a proposal is not suitable or fails the regression gate, archive it explicitly using:
python .cursor/skills/skill-evolve/scripts/reject_patch_proposal.py \
--proposal-id PP-XXXXXX \
--reason "Why this proposal is rejected"Do not leave failed proposals ambiguous if you already know they should not be promoted.
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

