mirror of
https://github.com/muratcankoylan/Agent-Skills-for-Context-Engineering.git
synced 2026-09-14 20:36:54 +08:00
0d7595d0ac
Ships a file-based research-to-skill operating system on top of the v2.1 skill corpus. The corpus now compounds across runs: mechanisms have a gated promotion path, claims have explicit provenance, runs have an enforceable state machine, skill activation is regression-tested, and the harness is benchmarked against adversarial scenarios. A continuous loop runs the whole thing unattended from launchd, retrieving sources over stdlib HTTP and parking anything that needs human review. Highlights - Mechanism registry + accepted/rejected ledgers (5 seeded mechanisms) - Claim provenance for 6 volatile claims across 6 skills - Corpus index mapping skills to scenarios, mechanisms, and claims - Activation regression fixtures (8 cases, all passing) - Adversarial benchmark harness (7 scenarios) with append-only history - Run state machine: initialized -> retrieved -> evaluated -> proposed -> novelty_checked -> validated -> pr_ready -> closed - Continuous loop (loop_discover, loop_step, loop_daily, loop_status) with atomic JSONL writes and fcntl locks - launchd service definitions and operator runbook - CI workflow runs validate_repo --strict, run_benchmarks, and check_activation_cases on every PR - AGENTS.md, CHANGELOG.md, researcher/runs/README.md, researcher/insights/auto-research-experiment.md Skill changes - All 14 published skills migrated from keyword triggers to activation-scenario descriptions - Hardened evaluation/advanced-evaluation and project-development/ harness-engineering boundaries Repository policy - Active research runs (researcher/runs/*/) are runtime state and gitignored. Seed run kept as a worked example, closed reference-only. - Runtime queue, logs, snapshots, status, and loop event files are gitignored. Verification - validate_repo --strict: 0 errors, 0 warnings, 14 skills - run_benchmarks: 3 checks, 0 failures, 7 scenarios - check_activation_cases: 8 cases, 0 failures - Python compile: clean (12 researcher scripts) - Lint: clean - Live loop: 13 iterations executed across init/retrieve/park/reap paths No paid LLM judges, no automated source discovery beyond the manual seed, and no log rotation. See researcher/insights/auto-research-experiment.md for the full lessons-learned writeup. Co-authored-by: Cursor <cursoragent@cursor.com>
Researcher Queue
The queue files are the persistent ledger that lets the autonomous loop run for days without losing state. Every change is append-only or replaces the entire file with a new sorted snapshot.
Files
inbox.jsonl- candidate sources discovered but not yet initialized as runs.parked.jsonl- run IDs that hit a human-review gate and are waiting for a reviewer.done.jsonl- run IDs that have been closed (accepted, rejected, reference-only, abandoned).quarantine.jsonl- sources removed from rotation because retrieval failed or the source registry rejects them.
Source Record Shape
Each line in inbox.jsonl and quarantine.jsonl is a JSON object:
{
"source_id": "deterministic-hash",
"url": "https://example.com/post",
"title": "Short title",
"author_or_org": "Org",
"source_type": "paper | engineering_blog | documentation | benchmark | code | talk | other",
"candidate_reason": "Why this source matters",
"feed": "manual-seed | parallel-research | rss | other",
"discovered_at": "ISO-8601",
"attempts": 0,
"last_status": "queued | initialized | failed"
}
Active runs live under researcher/runs/<run-id>/ and have their own run-state.json. The loop scripts read those state files directly rather than duplicating active-run state here, so there is one source of truth per run.