A portable agent-brain kit: methodology (superpowers), minimalism (YAGNI), cross-chat memory (SQLite FTS5), adversarial evals (trap-suite). 37 Hermes-compatible skills, English instructions, one command bootstrap.
Works in environments that read an agent rules file and SKILL.md skills. Developed and tested on Claude Code / OMP (see adapters for others; per-harness behavior beyond those is untested by this project).
| Layer | File | Role |
|---|---|---|
| Soul | AGENTS.md |
identity, red lines, routing (read first) |
| Contract | OPS.md |
phases, memory hierarchy, gates, changelog |
| Runtime | SKILL_RUNTIME.md |
context-size modes |
| Manifest | profile.yml |
single source of truth: paths, skills |
| Skills | skills/ |
37: always-on core + obra phase skills + domain + dashboard/UX |
| Memory engine | memory/db-tools/ |
build, search_all, findings, repomap (FTS5) |
| Evals | eval/ |
trap-suite (31 scenarios), task smoke (6 oracle-verified tasks incl. 2 canaries), trigger-eval (92 co-located queries across 13 skills; 80-query central fallback), ablation, rigor A/B, schema-v1 store + trend + telemetry |
| Adapters | adapters/ |
per-environment setup guides |
- Python 3.12 — the only version tested (CI: windows-latest and ubuntu-latest). Other versions are untested; reports of working setups are welcome.
- For the test suite:
pytest(python -m pip install pytest— the only test dependency; the kit itself is stdlib-only).
Phase 1 — memory bootstrap (one command, touches nothing global):
git clone https://github.com/oleg494/coding-kit.git coding-kit
cd coding-kit
python scripts/install.pyinstall.py creates ~/.memory/ (your private knowledge base — fixtures,
engine link, indexes), idempotent, safe to re-run. Custom location:
MEMORY_ROOT=/x/y python scripts/install.py. After it prints
search smoke: OK the memory store works standalone — prove it:
python ~/.memory/db-tools/findings.py add "first-note" \
--text "hello from coding-kit" --project coding-kit --importance normal \
--source README.md # → [✓] added (id=1)
python ~/.memory/db-tools/findings.py search "first-note" --project coding-kit # → found: 1
python ~/.memory/db-tools/findings.py projects # overview grouped by project and importance
python ~/.memory/db-tools/findings.py edit 1 --project coding-kit --importance high
python ~/.memory/db-tools/findings.py classify mapping.json --dry-run # validate batch mapping- Projects: dynamically discovered from
~/.memory/db/*.dbplus optionalprojects.json. Slug format:[a-z0-9][a-z0-9_-]{0,63}.portable: reusable engineering patterns, tools, and cross-project knowledge.unknown: unclassified personal notes, coursework, or items not tied to a specific project.
- Importance levels:
high: critical security boundaries, invariants, data-loss prevention, durable release contracts.normal: standard actionable engineering findings, reproducible runbooks, feature setups.low: transient checkpoints, scratch notes, personal experiments, milestone logs.unreviewed: default state prior to qualitative review.
- Batch Classification (
classify): Accepts JSON list or object with{"records": [...]}:[{"id": 1, "candidate_project": "coding-kit", "candidate_importance": "low", "project_rationale": "...", "importance_rationale": "..."}]Atomic transaction (rolls back on any error) and idempotent: user-curated records (cli_edit) are preserved unless--forceis given.
Phase 2 — agent integration (per-harness; install.py does NOT do
this step). Pick your agent from adapters/:
- Claude Code / OMP: rules →
~/.claude/CLAUDE.md; skills →~/.claude/skills/ - Antigravity: rules →
~/AGENTS.md; skills →~/.agents/skills/ - ZCode (Z.ai): rules →
~/.zcode/AGENTS.md; skills →~/.zcode/skills/(junction recommended) - Hermes: soul →
SOUL.md;config.yaml→skills.external_dirs
Verify integration by behavior, not file checks: ask the agent to show its
method (plan → TDD → implement → verify → report) and to search memory for
your first-note — it must route through
python ~/.memory/db-tools/search_all.py "X", not answer from
conversation. python scripts/doctor.py green means the repo and memory
root are self-consistent; it does not prove your harness loaded anything.
python ~/.memory/db-tools/search_all.py "X" # before "what do we know about X"
python ~/.memory/db-tools/search_all.py "X" --project <slug> # scoped to project
python ~/.memory/db-tools/search_all.py "X" --importance high # prioritized recallGates and checks (the kit's own lifecycle, run directly):
python scripts/doctor.py— 14 self-diagnostic health checks.python -m pytest tests -q— unit test suite (needspytestinstalled).python scripts/tools/check_file_sizes.py --ci— file-size gate (hard limits).python memory/scripts/memory-warmup.py— cross-chat memory warmup.
Broad authorization to choose and continue useful work ("do useful work",
"keep going without asking", "работай сам") loads skill autonomous-work.
It is task opt-in: ordinary bounded requests keep their existing scope, and
there is no MODE: override — STRICT_AUDIT and read-only tasks stay
read-only. Outward, destructive, spending, and memory-writing actions still
require explicit authorization.
The skill covers work selection from evidence, verify-by-observation loops, durable mission/progress/handoff state, and immediate stop/revocation. For continuation across process boundaries (context compaction, terminal death) an optional foreground stdlib supervisor ships with the kit:
python scripts/tools/autonomous.py --workspace PATH --mission TEXT \
--executor COMMAND --verify COMMAND \
[--state-dir PATH] [--max-iterations 10] [--timeout 600]--executor/--verify are argv, never a POSIX shell (Windows .cmd/.bat
need cmd). State defaults to <workspace>/.autonomous (state.json +
logs/, atomic writes, resumable). The executor writes a checkpoint proposal
(checkpoint.json, removed before each spawn; its absolute path is passed on
stdin as Checkpoint: <path> and via AUTONOMOUS_CHECKPOINT). Checkpoints
are untrusted claims, never commands: complete is accepted only after the
independent --verify exits zero. Exit codes: 0 verified completion only,
1 failed/exhausted/blocked/stalled, 130 user stop; a STOP file in the
state dir prevents a spawn and interrupts a live child. A filesystem
workspace is not a security sandbox. Design and acceptance criteria:
docs/research/2026-09-08-autonomous-mode.md.
The kit includes evaluation harnesses targeting distinct questions (health checks, trigger activation routing, and behavioral adherence are evaluated separately from task success or cost claims):
- Trap-suite (
eval/runner.py): 31 adversarial scenarios testing policy adherence to superpowers, YAGNI, and security invariants. Candidate answers are bounded and delimited as untrusted evidence. Omitted--judgedefaults to the executor (self-judging carries inherent bias; recommend configuring a distinct--judgefor gating). Adherence to rules does not prove task-level superiority. - Task Smoke (
eval/task_runner.py): 6 real coding tasks (incl. 2 impossible canaries) verified by deterministicverify.pytest oracles (no LLM judge for pass/fail). Each attempt runs in an isolated sandbox cloned fresh fromeval/tasks/repo-fixture(default--tries 2). This serves as a smoke canary, not a statistical benchmark. - Trigger Evals (
eval/trigger_eval.py):--queries autovalidates 92 co-located queries across 13 skills (per-skillevals/evals.json), witheval/trigger_queries.json(80 queries, 10 skills) as the central fallback for skills lacking a co-located file — testing skill activation routing. - Schema-v1 Results Store (
eval/results_io.py): atomic append-only JSON storage undereval/results/with microsecond UTC timestamps, UUIDrun_id, separatemodelmetadata, explicitmode("dry-run"vs"live"), and standardized failure taxonomies. - Trend Reporting (
eval/trend.py): summarizes newest runs by(kind, model), filters dry-runs and zero-result artifacts via explicit mode discriminators, reports baseline deltas, and produces structured Failure Evidence Packets with bounded trace tails for debugging. - Telemetry (
eval/telemetry.py): every result doc folds per-attempt wall-clockduration_sintoduration_s_total/duration_s_meanacross all three runners (trap/tasks/trigger). Optional--usage-json{tokens_total, cost_usd}records user-reported provider totals — the harness measures wall-clock only and never fabricates cost. - Ablation (
eval/ablate.py): experimental per-skill inlined-prompt contribution (pass-rate with vs. without the inlined skill body). Descriptive, not causal — ambient CLI skills are uncontrolled and small samples may be non-conclusive; it never deletes a skill. Requires a live--executor. - Rigor A/B (
eval/rigor/): controlled policy experiments with route/microtask/trap corpora, isolation + canary probes, and an acceptance gate that can reject its own candidate (it did — see docs/research/2026-09-03). - Isolation: executor subprocesses run from a neutral per-call temp
cwd, which prevents automatic discovery of repo-local instruction/config files via the inheritedcwd; ambient global skills and general filesystem access remain uncontrolled. HOME/auth environment is retained. Quick validation (no model, no live output):
python eval/ablate.py --help # ablation flags/contract
python eval/runner.py --inline-skills # dry-run: validate scenarios + skills manifest (no executor prompts sent)
python eval/task_runner.py --dry-run # validate task layout
python eval/trigger_eval.py --queries eval/trigger_queries.json # validate queriesHistorical external A/B run (2026-09) on DeepSWE
(pier + mini-swe-agent in Docker, model deepseek-v4-pro, 10-task seed-0
subset, 1 concurrent trial): the same agent with the kit (OPS.md + AGENTS.md +
36-skill manifest inlined, ~5.4k tokens) vs. without it. Raw artifacts are
retained outside this repository and are not bundled with the kit; this repo
ships no reproduction script or composite-analysis command for these numbers —
they are reported as run, not re-derivable from the repo.
- Pass rate: no difference — 6/9 both arms. In this test, the kit did not increase solved-task counts for a strong model.
- Token cost is real: +21% steps, +41% prompt tokens on identical outcomes (99.5M vs 70.4M across 5 mutually-solved tasks). Cache absorbs the kit's static ~5.4k-token overhead; the extra spend is the methodology's own iterations (plan → TDD → verify). No causal claim of overall cost reduction can be made.
- Task-dependent flips: kit won one task outright (24/24 vs 6/24 — process discipline rescued a flailing attempt) and lost one small fiddly task (2/5 vs 5/5 — ceremony overhead). n=9: descriptive observation, not a general verdict.
Honest takeaway: on a strong model and well-specified tasks the kit is not a uniform win — the sample showed process discipline rescuing one hard task and ceremony costing one small task, at a measurable token premium; no general reliability claim follows from n=9. Negative results and confounded replays are recorded as negative evidence, not optimization wins. Budget accordingly.
The kit repo contains only methodology and engine. Your knowledge (Wiki posts, findings, indexes) lives in ~/.memory/ — personal, never committed, gitignored in every place it can appear.
Developed and tested Windows-first (CI also runs ubuntu-latest). The engine link
is a junction on Windows, a symlink elsewhere — install.py picks automatically.
Phase-workflow skills (brainstorming, writing-plans, using-git-worktrees,
requesting-code-review, receiving-code-review, verification-before-completion,
systematic-debugging, dispatching-parallel-agents, finishing-a-development-branch)
are derived from
obra/superpowers (MIT) © Jesse Vincent,
reworked and extended for coding-kit. See skills/superpowers/LICENSE.
ponytail is adapted from DietrichGebert/ponytail
(MIT; see skills/ponytail/LICENSE).
The repository root is MIT (see LICENSE). One conflict is unresolved:
skills/windows-encoding-fixes declares license: Proprietary in its
frontmatter, which is inconsistent with the root MIT grant. This README
makes no rights determination in either direction and draws no
author-identity or provenance conclusion — a frontmatter label is not
proof of a grant or of an exclusion. The mismatch stays open until the
owner resolves it; the skill is wired into profile.yml, the
release-contract pin, integrity-manifest.json, and the trigger corpora,
so it is not a drop-in deletion.
MIT — see LICENSE.