A thin orchestration + verification layer over a vendored CTF technique corpus. The split is deliberate:
- Technique content (decompiler patterns, packer signatures, anti-debug,
VM recovery, crypto recipes, web CVE chains) → forked from
ljagiello/ctf-skillsand vendored asctf-reverse/,ctf-crypto/, etc. Do not rewrite this; it is broad and good. - This layer → the parts that corpus does not provide: orchestration, routing, the hypothesis/evidence ledgers, the verification gate, the sandbox gate, and the search-agent contracts.
ctf-skill-pack/
shared/schemas.md # the contracts everything reads/writes
ctf-orchestrator/ # routing, board state, dedup, master flag ledger
researcher/ # fast single-pass lookup (shared service)
deepsearcher/ # iterative multi-hop investigation (expensive tier)
reverse/ # thin SOP over vendored ctf-reverse content
flag-discipline/ # verification gate — no solve without it
exploit-sandbox/ # isolation gate — no execution without it
Local-first: clone, strip, harden — no live dependency.
git clone https://github.com/ljagiello/ctf-skills /tmp/ctf-skills
# vendor only the category content you reference; keep their allowed-tools gates
cp -r /tmp/ctf-skills/ctf-reverse ./ctf-reverse
# reverse/SKILL.md references ./ctf-reverse/ for technique depthshared/schemas.md— done; everything depends on it.researcher— done;reverseand the orchestrator consume its schema.deepsearcher— done; researcher's escalation target.reverse— done; thin SOP, references vendoredctf-reverse/.flag-discipline+exploit-sandbox— done; the two gates.ctf-orchestrator— done; wires it together.
All category specialists are now present: reverse, crypto-attack,
web-exploit, binary-pwn, forensics, stego, jail-escape, osint,
misc. Each is the same SOP shape — thin decision loop + ledger + handoff,
technique depth from the vendored corpus. Category coverage is complete.
- Model racing (verialabs-style parallel solvers) — expensive; only under live time pressure, not a default.
- Memory consolidation / skill evolution (MemSkill, self-improving-agent) —
v2. Add a post-solve
consolidatestep once the static pack is proven. - Benchmark harness (InterCode-style) — a test rig for the pack later, not a solver now.
reverse-symbolic-solver,reverse-bytecode-vm— split out ofreverseonly when a challenge actually needs them; the handoff points already exist.
- No candidate is
solvedwithoutflag-discipline. - No unknown artifact runs outside
exploit-sandbox.
The only canonical runtime implementation lives under:
runtime/ctfrt/
Do not use or ship stale duplicated files such as top-level gate.py, contracts.py,
or orchestrator.py outside this directory.