evolution
Skill26 starsChanged 10 days agoMITView on GitHub
Goal-contract, capability graph, TraceCard, and promotion-gate control plane for self-evolving reverse/security skill routing. Use before macro-routing when the task needs end-to-end completion, route repair, or reusable learning.
We split this skill into the rules it gives an agent
19 rules. About 0 are common, 11 are distinctive, and 8 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈11
Distinctive · estimate
This author's own choices. Worth a look.
8
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Distinctive: line 26
Every non-trivial reverse/security task MUST define:
- Very specific: line 35
Use goal.template.yaml as the minimum shape.
- Distinctive: line 53
If the graph says a required tool is missing, use the normal bootstrap path.
- Very specific: line 67
Use routing.json first for machine decisions.
- Distinctive: line 71
Before each costly or irreversible step, choose the next action using current evidence:
- Distinctive: line 73
If static analysis stops producing new facts, switch to dynamic verification.
- Distinctive: line 74
If Java-layer evidence points to native validation, branch to IDA/radare2.
- Very specific: line 75
If browser observation lacks the signing function, switch to CDP/hook/sourcemap recovery.
- Distinctive: line 76
If a tool fails twice for the same reason, record the failure and choose an alternate edge.
- Distinctive: line 77
If the required oracle cannot be tested, downgrade the conclusion to candidate or forensic memory.
- Very specific: line 83
Every substantive finding MUST distinguish observed evidence, inference, and unknowns.
- Very specific: line 93
Use unknowns: [] when none remain.
- Very specific: line 101
Every listed oracle is required: validated and promotion_candidate: true require a nonempty oracle list with every oracle passed.
- Distinctive: line 160
Write field-journal output into one of three tiers:
- Distinctive: line 166
All memory entries MUST include provenance: source trace, tool versions, verification time, and applicable environment.
- Distinctive: line 178
no regression in the mini benchmark or relevant fixtures
- Distinctive: line 180
no sensitive or un-anonymized data
- Very specific: line 183
Use promotion-record.template.yaml.
- Very specific: line 205
Run skills/scripts/fleet-sync.ps1 -RemotePath <remote-repo-path> -Direction Pull|Push after a session adds new candidate/ entries and you …
≈ “Common” is an estimate: at least 1 in 5 of the 308,232 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
Evolution Control Plane
This skill turns the routing pack from "pick a static module" into a closed loop:
GOAL -> capability graph -> macro route -> micro route -> TraceCard -> evaluator feedback -> candidate search -> promotion gate
It does not replace apk-reverse, ida-reverse, js-reverse, pentest-tools, or the CTF skills. It wraps them with a target contract, local capability facts, step-level evidence, and controlled learning.
ACTION REQUIRED
NOW: Create or update a task-local GOAL usinggoal.template.yamlbefore choosing a route.NOW: For OMP native IDA, record the current native tool schema and actual operation result through../ida-reverse/SKILL.md. For external tools, read../capability-graph.jsonif present; otherwise run../scripts/refresh-tool-index.ps1and use the generated graph.NEXT: Use../routing.jsonfor machine routing and../routing.mdfor human-readable fallback context.ACT: Route to the selected child skill and record each material decision in a TraceCard.EVOLVE: When changing a skill or route, use the candidate search loop below; do not optimize by editing stable files directly.END: Classify the result through the promotion gate before changing stable routing or skill docs.DOGFOOD: When Code Intel emitscode-intel-dogfood-finding.v1, readcode-intel-dogfood-finding.md; keep the finding incandidateuntil a re-run oracle proves the proposed tool repair.
Goal Contract
Every non-trivial reverse/security task MUST define:
inputs: artifacts, URLs, package names, captures, binaries, scope text, or fixture IDs.authorization_scope: CTF, own asset, lab fixture, bug bounty scope, or explicit engagement boundary.desired_outputs: what the user actually needs, such as function map, bypass replay, decoded algorithm, PoC, report, or diagram.success_oracles: deterministic checks that prove completion.budgets: max time, max tool calls, model/tool escalation limits.stop_conditions: what ends the task or requires user confirmation.
Use goal.template.yaml as the minimum shape. A route that cannot name its oracle is not ready to become an evolved skill.
Capability Graph
The capability graph is a session fact cache, not a wish list.
OMP's native ida is a session-provided interface. Record its live schema, selected native database, and operation evidence instead of requiring the external CLI index to contain idapro. Graph lookup and bootstrap below apply to external tools; a native worker failure follows omp-ida-native setup guidance.
Required fields per tool or service:
- exact path or startup command
- version or fixed package identity
- availability state
- smoke status
- service/MCP registration state when relevant
- owning skill and bootstrap method
last_checked
If the graph says a required tool is missing, use the normal bootstrap path. Do not guess paths.
Macro Route
Macro routing chooses the module family:
- APK / Android ->
apk-reverse - JS / browser signature ->
js-reverse - binary / native / stripped ->
ida-reverse,radare2, orreverse-engineering - patch diff / N-day ->
binary-diffpluspatch-diff-exploit - pwn ->
pwn-chain - protocol / pcap ->
reverse-engineeringor CTF protocol skill - active security assessment ->
pentest-tools,api-security,attack-chain, or related skill
Use routing.json first for machine decisions. Use routing.md when the JSON route is incomplete.
Micro Route
Before each costly or irreversible step, choose the next action using current evidence:
- If static analysis stops producing new facts, switch to dynamic verification.
- If Java-layer evidence points to native validation, branch to IDA/radare2.
- If browser observation lacks the signing function, switch to CDP/hook/sourcemap recovery.
- If a tool fails twice for the same reason, record the failure and choose an alternate edge.
- If the required oracle cannot be tested, downgrade the conclusion to candidate or forensic memory.
Record the decision in trace-card.template.yaml format.
Evidence and Unknowns
Every substantive finding MUST distinguish observed evidence, inference, and
unknowns. Each TraceCard step MUST have an evidence_refs list; use [] when
the step produced no evidence. A reference records its source and version, GOAL
input, examined coverage, and limitations. Prefer a durable evidence ID or path
over copied terminal prose. An evidence ID helps locate a record; it does not
prove the record is authentic or that its conclusion is true.
Record unresolved questions in the TraceCard with supporting and contradicting
evidence references, plus the authority, environment, or observation still
needed to resolve them. Each unknown requires affects_outcome: true|false.
Use unknowns: [] when none remain. Mark an unknown resolved only when at least
one supporting or contradicting evidence ID addresses it. IDs must be nonempty
and resolve to uniquely identified evidence records in this card's steps.
Unresolved questions affecting the requested outcome block validated and
promotion-candidate claims.
Each oracle result records oracle_id, status (pass|fail|not_run), and
evidence_refs (in-card evidence IDs); pass and fail require evidence.
Every listed oracle is required: validated and promotion_candidate: true
require a nonempty oracle list with every oracle passed. Promotion candidacy
additionally requires the validated tier; it never promotes automatically.
Step evidence arrays may remain empty when no evidence was produced.
Validate JSON TraceCards at the real acceptance boundary:
python "<PACK_ROOT>/scripts/run.py" tracecard-validate --input trace-card.json.
The stdlib reverse_skill.evolution.validate_trace_card enforces structure,
unique IDs and reference consistency beyond JSON Schema's structural checks.
This proves neither authenticity nor truth of external evidence; human review
and independent verification still govern promotion.
Claims of absence or equivalence require complete, comparable coverage of the relevant target and method. Missing, truncated, paginated, or incompatible evidence means “unknown,” not “absent.” Static differences are leads, not proof of runtime causation.
Lead the final report with the concise result, then link claims to evidence and state coverage, limitations, and remaining unknowns. New TraceCards use schema version 2; retain older version-1 records unchanged.
Candidate Search Loop
The repository includes a bounded OMP-backed route-selection optimizer. It is scoped to the routing prompt and local fixtures; it does not run child reverse-engineering skills or prove their task outcomes.
From any working directory, using paths within the complete installed package:
python "<PACK_ROOT>/scripts/run.py" evolve --candidate "<SKILL_ROOT>/routing.md" --catalog "<SKILL_ROOT>/routing.json" --fixtures "<SKILL_ROOT>/evolution/fixtures/route-selection.json" --output candidate-runs/run-001 --max-evaluations 3 --max-reflections 1The command uses the configured OMP model without a model override, disables tools, skills, rules, extensions, and session persistence, then evaluates the no-skill baseline, curated prompt, and each proposed prompt on the same complete frozen fixture suite. Reflection receives the full frozen routing catalog (including relevant route/fallback definitions), exact failed tasks, expected/observed routes, invalid-response diagnostics, untouched failed responses, and successful-case context. One bounded targeted proposal is evaluated at a time. Per-track pass rates and invalid responses determine the Pareto frontier; no source prompt is promoted or overwritten.
results.json retains every evaluated candidate's text, UTF-8 SHA-256 identity,
artifact path, input digests, and proposal parent ID/digest—even candidates
outside the final frontier. The empty no-skill baseline is retained too.
catalog.json and fixtures.json archive the exact bytes read once for the run;
their SHA-256 identities bind every evaluation to the same frozen inputs.
Reflection contexts and exact reflection responses are also retained for audit.
Route answers must be one complete JSON object with exactly route_id; leading
prose, additional JSON documents, trailing text and fenced JSON are invalid.
OMP print framing is narrowly defined as at most one exact leading
Working... line (LF or CRLF), after leading whitespace. Only that line is
removed; matching lines inside or after an answer are never discarded.
The entire remaining answer is validated, while the untouched stdout is saved.
Task and reflection prompts already travel on stdin, not argv. Candidate system
prompts use --append-system-prompt. Before the first model call, the curated
candidate is checked against the Windows CreateProcessW limit; every actual
subprocess argv and every reflected candidate are checked as well. The bound
includes Python's Windows quoting, executable/options/cwd, UTF-16 code units,
and the terminating NUL (32,767 units). Oversized candidates are refused, not
truncated; no speculative prompt-file transport is introduced.
max_evaluations counts complete candidate-suite runs (baseline, curated, proposals); reflections have a separate max_reflections cap. The command requires budget for at least three evaluations and one reflection, but stops without proposing when every frontier candidate passes. An independent full-suite verification remains necessary for promotion and is outside this search budget. The built-in route fixture set checks route selection only; expand or replace it with validated fixtures before treating results as representative of other tasks.
Memory Tiers
Write field-journal output into one of three tiers:
validated: oracle passed, route worked, safe to retrieve for future routing.candidate: promising but not regression-tested; may inform, must not control routing.forensic: failed, ambiguous, sensitive, or adversarial; useful for analysis only.
All memory entries MUST include provenance: source trace, tool versions, verification time, and applicable environment.
Code Intel dogfood findings are advisory evidence, not an authority override.
Consume their artifact digests through
code-intel-dogfood-finding.md, then retain
them in candidate until the cited project has been re-run after a repair.
Promotion Gate
Stable routing or child skill docs may change only when a candidate passes:
- oracle success for the source task
- no regression in the mini benchmark or relevant fixtures
- clear tool/capability requirements
- no sensitive or un-anonymized data
- rollback path documented
Use promotion-record.template.yaml. If evidence is incomplete, keep the entry in candidate.
Completion Check
- GOAL exists and names at least one success oracle.
- OMP native IDA schema and operation evidence were recorded, or the external capability graph was read/refreshed.
- Macro route and any micro-route switches are recorded.
- TraceCard records reproducible actions, evidence references, coverage, limitations, and unresolved questions.
- Field-journal tier is selected.
- Stable routing changes passed the promotion gate.
无人值守模式(Overnight)
本控制面的 Phase 0-3 全闭环无人值守运行由 overnight-run/ 提供:slot 填表 ↔ goal.template.yaml,.night/REPORT.md ↔ TraceCard,Phase 结局 ↔ 记忆分层,早上 review ↔ promotion gate。详见 overnight-run/SKILL.md。Overnight 产出的经验必须经 promotion gate 回流 field-journal/{validated,candidate,forensic}/ 后才允许改 stable 路由。
Fleet Sync
This repo can run on more than one machine in the operator's fleet. Session-local artifacts --
skills/field-journal/candidate/*.md, skills/field-journal/validated/*.md,
skills/capability-graph.json, skills/tool-index.md -- only exist on whichever machine
produced them until manually synced.
Run skills/scripts/fleet-sync.ps1 -RemotePath <remote-repo-path> -Direction Pull|Push after a
session adds new candidate/ entries and you are about to switch machines, or periodically to
keep both machines' capability graphs roughly aligned. The script only copies files that do not
already exist on the destination by filename (collision-safe additive merge) -- it never
overwrites and never deletes on either side. Filename collisions are reported, not resolved
automatically; resolve by hand and re-run.
Other versions4 projects use a version of this.
Word for word · 0
None found.
Edited · 0
None found.
Wrote their own version · 4
- yangwhale/CloseCrab★ 4same name
- ffsshhttiikk/opencode-agents-skills★ 2same name
- SageV1/makepad-skills★ 1same name
- VeltriaAI/beings-protocol★ 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 repository27 other files it gives its agents.
- reverse-skill-evolverSkill
- api-securitySkill
- apk-reverseSkill
- asr-registrySkill
- attack-chainSkill
- binary-diffSkill
- browser-automationSkill
- case-reviewSkill
- chainsSkill
- diagram-generatorSkill
- docs-generatorSkill
- edr-bypass-reSkill
- firmware-pentestSkill
- ghidra-reverseSkill
- ida-reverseSkill
- js-reverseSkill
- llm-securitySkill
- malware-analysisSkill
- mobile-reverseSkill
- overnight-runSkill
- patch-diff-exploitSkill
- pentest-toolsSkill
- src-hunterSkill
- pwn-chainSkill
- radare2Skill
- reverse-engineeringSkill
- supply-chain-securitySkill
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
Reviews can't be read right now.
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.

