一键导入
skill-evolve
Optional sidecar skill for controlled feedback-driven skill evolution. Not part of the default pipeline. Only activates when explicitly requested.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
Optional sidecar skill for controlled feedback-driven skill evolution. Not part of the default pipeline. Only activates when explicitly requested.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
基于 SOC 职业分类
| name | skill-evolve |
| description | Optional sidecar skill for controlled feedback-driven skill evolution. Not part of the default pipeline. Only activates when explicitly requested. |
This is an OPTIONAL sidecar capability, NOT part of the default pipeline.
Skill Evolve is a controlled, opt-in framework for turning real user feedback into skill improvements over time.
It is designed to:
.cursor/skills/ tree unchanged unless a human later chooses to merge approved changes manuallyThis skill must NOT:
Use this skill when:
Do NOT use this skill when:
one-report instead)When explicitly invoked, follow this controlled flow:
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.txt
Raw feedback preserves user language and is saved to:
{WORKSPACE}/.skill-evolve-data/feedback/raw/
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/
Generate a patch proposal from normalized feedback:
python .cursor/skills/skill-evolve/scripts/propose_skill_patch.py \
--feedback-id FB-XXXXXX,FB-YYYYYY
Patch proposals are saved to:
{WORKSPACE}/.skill-evolve-data/patch_proposals/proposed/
A patch proposal is not just a single modified skill file, but a complete change unit containing:
When generating a proposal, the agent must:
Example:
If the modification target is grounded-review:
.cursor/skills/grounded-review/SKILL.md.cursor/skills/one-report/SKILL.md (as sub-process reference).cursor/agents/reviewer.md (agent config)The proposal script should auto-generate assertions rather than relying on manual creation:
Analyze planned_changes:
before content exists → generate not_contains assertion to verify old content removedafter content exists → generate contains assertion to verify new content addedregex_match assertionMinimal Assertion Set:
contains can verify content without splitting)Cross-file Assertions:
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"
}
]
}
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.
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-changes
This creates a candidate workspace without modifying stable skills.
Test the patch against evaluation cases:
python .cursor/skills/skill-evolve/scripts/run_regression_gate.py \
--proposal-id PP-XXXXXX
Results are saved to:
{WORKSPACE}/.skill-evolve-data/evaluations/results/
Regression gate must verify the complete change unit:
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.mdIf 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"
}
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" \
--sync
Result (standard):
.cursor/skills/ remains untouched.skill-evolve-data/skills-versions/v002/ created with patches appliedResult (--sync):
.cursor/skills/ is updated with approved patchesConsistency Check Feature: The promote script now runs full line-by-line checks on patched files to ensure:
weighted_total >= 90 when it should be >= 95)If gate fails, the patch is rejected and stable version remains unchanged.
Located at: {WORKSPACE}/.skill-evolve-data/stable/current_version.json
Contains:
Located at: {WORKSPACE}/.skill-evolve-data/versions/vXXX/version_manifest.json
Contains:
.cursor/skills/skill-evolve/).cursor/
skills/
skill-evolve/
SKILL.md # This file
scripts/ # Evolution workflow scripts
schemas/ # JSON schemas
{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 results
.cursor/skills/skill-evolve/ (git-managed).skill-evolve-data/skills-versions/ (each version contains both agents/ and skills/ sub-dirs){WORKSPACE}/.skill-evolve-data/ (local, git-ignored)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:
| 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 |
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/.
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.
Unpack a ZIP archive, inventory its files, run the corresponding child grounding skill for each supported child file, and then write a real archive-level grounded.md.
Convert a raw document into a structured grounding note for downstream research and summarization.
Run focused literature and web research from a grounded note. Use when a grounded note already exists and you want targeted research results, opened-link evidence, deeper per-paper analysis materials, optional downloaded literature, and a two-stage literature output (`lit_initial.md` then refined `lit.md`).
Review a research report draft with a structured scoring rubric, run a bounded repair loop when needed, and produce the final deliverable report.
Create a rich, evidence-preserving research report draft from a grounded note and its follow-up literature result. This is the main report-writing stage of the middle pipeline, not a compression memo.
Use the input path to select the correct downstream grounding pipeline and continue execution until the selected grounding workflow is completed.