# choeyunbeom/skill-curator architecture

> Architecture diagram of the GitHub repository choeyunbeom/skill-curator, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-11-14). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/choeyunbeom/skill-curator
- Repository: https://github.com/choeyunbeom/skill-curator

## Overview

skill-curator is a flat research harness for safely pruning an append-only, file-based skill library and measuring the effects. The main workflow collects skills, probes them for behavioral duplicates and health on evaluation and drift data, applies lifecycle transitions, then compares curated and raw libraries in benchmark evaluation and replays removals for deletion regret. Separate analysis scripts examine prompt pollution and other results. The README documents these capabilities; some implementation links are shown only where the excerpts or index support them.

Main entry points: [`harness/run_experiment.py`](https://github.com/choeyunbeom/skill-curator/blob/main/harness/run_experiment.py) (Experiment runner), [`harness/modules/evaluator.py`](https://github.com/choeyunbeom/skill-curator/blob/main/harness/modules/evaluator.py) (Benchmark evaluator), [`harness/modules/sandbox.py`](https://github.com/choeyunbeom/skill-curator/blob/main/harness/modules/sandbox.py) (Skill sandbox), [`harness/analyze_flips.py`](https://github.com/choeyunbeom/skill-curator/blob/main/harness/analyze_flips.py) (Flip analysis)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_curation["Curation"]
  node_collector["Corpus collection<br/>[collect_corpus.py]"]
  node_experiment["Experiment runner<br/>[run_experiment.py]"]
  node_model["Skill model<br/>[skill_model.py]"]
  node_dedup["Behavioral dedup<br/>[dedup_engine.py]"]
  node_taskstream["Health probes<br/>[task_stream.py]"]
  node_health["Health monitor<br/>[health_monitor.py]"]
  node_lifecycle["Lifecycle manager"]
  node_regret["Regret tracker<br/>[regret_tracker.py]"]
  node_sandbox["Skill sandbox<br/>[sandbox.py]"]
  node_runner["Skill runner<br/>[_skill_runner.py]"]
end

subgraph group_library["Skill library"]
  node_raw["Raw library"]
  node_curated["Curated library"]
  node_archive["Recoverable archive"]
  node_driftdata["Drift data"]
end

subgraph group_evaluation["Evaluation"]
  node_retrieval["Lexical retrieval<br/>[retrieval.py]"]
  node_executor["Code executor<br/>[code_executor.py]"]
  node_evaluator["Benchmark evaluator<br/>[evaluator.py]"]
end

subgraph group_analysis["Analysis"]
  node_pollution["Pollution analysis"]
  node_flips["Flip analysis<br/>[analyze_flips.py]"]
end

node_operator(("Research operator"))
node_generator(("Skill generator"))
node_dab["DABench"]
node_llm["Generator LLM session"]

node_operator -->|"runs"| node_experiment
node_collector -->|"harvests from"| node_generator
node_experiment -->|"loads baseline"| node_raw
node_experiment -->|"curates copy"| node_curated
node_experiment -->|"invokes"| node_dedup
node_experiment -->|"builds probes"| node_taskstream
node_experiment -->|"checks health"| node_health
node_experiment -->|"applies transitions"| node_lifecycle
node_experiment -->|"records removals"| node_regret
node_experiment -->|"runs benchmark"| node_evaluator
node_dedup -->|"executes probes"| node_sandbox
node_health -->|"runs skills"| node_sandbox
node_sandbox -->|"launches subprocess"| node_runner
node_lifecycle -->|"moves archived skills"| node_archive
node_taskstream -->|"probes drift data"| node_driftdata
node_evaluator -->|"retrieves top-k"| node_retrieval
node_evaluator -->|"executes solver code"| node_executor
node_evaluator -->|"evaluates tasks"| node_dab
node_evaluator -->|"asks session"| node_llm
node_pollution -->|"reuses curation"| node_experiment
node_flips -->|"rebuilds curated set"| node_experiment
node_flips -->|"compares task results"| node_evaluator

click node_collector "https://github.com/choeyunbeom/skill-curator/blob/main/harness/collect_corpus.py"
click node_experiment "https://github.com/choeyunbeom/skill-curator/blob/main/harness/run_experiment.py"
click node_model "https://github.com/choeyunbeom/skill-curator/blob/main/harness/modules/skill_model.py"
click node_dedup "https://github.com/choeyunbeom/skill-curator/blob/main/harness/modules/dedup_engine.py"
click node_taskstream "https://github.com/choeyunbeom/skill-curator/blob/main/harness/modules/task_stream.py"
click node_health "https://github.com/choeyunbeom/skill-curator/blob/main/harness/modules/health_monitor.py"
click node_lifecycle "https://github.com/choeyunbeom/skill-curator/blob/main/harness/modules/lifecycle_manager.py"
click node_regret "https://github.com/choeyunbeom/skill-curator/blob/main/harness/modules/regret_tracker.py"
click node_sandbox "https://github.com/choeyunbeom/skill-curator/blob/main/harness/modules/sandbox.py"
click node_runner "https://github.com/choeyunbeom/skill-curator/blob/main/harness/modules/_skill_runner.py"
click node_raw "https://github.com/choeyunbeom/skill-curator/tree/main/harness/skill_library/raw"
click node_curated "https://github.com/choeyunbeom/skill-curator/tree/main/harness/skill_library/curated"
click node_archive "https://github.com/choeyunbeom/skill-curator/tree/main/harness/skill_library/archived"
click node_driftdata "https://github.com/choeyunbeom/skill-curator/tree/main/harness/skill_library/drift_data"
click node_retrieval "https://github.com/choeyunbeom/skill-curator/blob/main/harness/modules/retrieval.py"
click node_executor "https://github.com/choeyunbeom/skill-curator/blob/main/harness/modules/code_executor.py"
click node_evaluator "https://github.com/choeyunbeom/skill-curator/blob/main/harness/modules/evaluator.py"
click node_pollution "https://github.com/choeyunbeom/skill-curator/blob/main/harness/analyze_pollution.py"
click node_flips "https://github.com/choeyunbeom/skill-curator/blob/main/harness/analyze_flips.py"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_collector,node_experiment,node_model,node_dedup,node_taskstream,node_health,node_lifecycle,node_regret,node_sandbox,node_runner toneBlue
class node_raw,node_curated,node_archive,node_driftdata toneAmber
class node_retrieval,node_executor,node_evaluator toneMint
class node_pollution,node_flips toneRose
class node_operator,node_generator,node_dab,node_llm toneIndigo
```

## Components

### Curation

- [Corpus collection](https://github.com/choeyunbeom/skill-curator/blob/main/harness/collect_corpus.py): `harness/collect_corpus.py`
- [Experiment runner](https://github.com/choeyunbeom/skill-curator/blob/main/harness/run_experiment.py): `harness/run_experiment.py`
- [Skill model](https://github.com/choeyunbeom/skill-curator/blob/main/harness/modules/skill_model.py): `harness/modules/skill_model.py`
- [Behavioral dedup](https://github.com/choeyunbeom/skill-curator/blob/main/harness/modules/dedup_engine.py): `harness/modules/dedup_engine.py`
- [Health probes](https://github.com/choeyunbeom/skill-curator/blob/main/harness/modules/task_stream.py): `harness/modules/task_stream.py`
- [Health monitor](https://github.com/choeyunbeom/skill-curator/blob/main/harness/modules/health_monitor.py): `harness/modules/health_monitor.py`
- [Lifecycle manager](https://github.com/choeyunbeom/skill-curator/blob/main/harness/modules/lifecycle_manager.py): `harness/modules/lifecycle_manager.py`
- [Regret tracker](https://github.com/choeyunbeom/skill-curator/blob/main/harness/modules/regret_tracker.py): `harness/modules/regret_tracker.py`
- [Skill sandbox](https://github.com/choeyunbeom/skill-curator/blob/main/harness/modules/sandbox.py): `harness/modules/sandbox.py`
- [Skill runner](https://github.com/choeyunbeom/skill-curator/blob/main/harness/modules/_skill_runner.py): `harness/modules/_skill_runner.py`

### Skill library

- [Raw library](https://github.com/choeyunbeom/skill-curator/tree/main/harness/skill_library/raw): `harness/skill_library/raw`
- [Curated library](https://github.com/choeyunbeom/skill-curator/tree/main/harness/skill_library/curated): `harness/skill_library/curated`
- [Recoverable archive](https://github.com/choeyunbeom/skill-curator/tree/main/harness/skill_library/archived): `harness/skill_library/archived`
- [Drift data](https://github.com/choeyunbeom/skill-curator/tree/main/harness/skill_library/drift_data): `harness/skill_library/drift_data`

### Evaluation

- [Lexical retrieval](https://github.com/choeyunbeom/skill-curator/blob/main/harness/modules/retrieval.py): `harness/modules/retrieval.py`
- [Code executor](https://github.com/choeyunbeom/skill-curator/blob/main/harness/modules/code_executor.py): `harness/modules/code_executor.py`
- [Benchmark evaluator](https://github.com/choeyunbeom/skill-curator/blob/main/harness/modules/evaluator.py): `harness/modules/evaluator.py`

### Analysis

- [Pollution analysis](https://github.com/choeyunbeom/skill-curator/blob/main/harness/analyze_pollution.py): `harness/analyze_pollution.py`
- [Flip analysis](https://github.com/choeyunbeom/skill-curator/blob/main/harness/analyze_flips.py): `harness/analyze_flips.py`

### Other components

- **Research operator**
- **Skill generator**
- **DABench**
- **Generator LLM session**

## Connections

- Research operator → Experiment runner: runs (evidence: `README.md`)
- Corpus collection → Skill generator: harvests from (evidence: `README.md`)
- Experiment runner → Raw library: loads baseline (evidence: `README.md`)
- Experiment runner → Curated library: curates copy (evidence: `README.md`)
- Experiment runner → Behavioral dedup: invokes (evidence: `harness/run_experiment.py`)
- Experiment runner → Health probes: builds probes (evidence: `harness/run_experiment.py`)
- Experiment runner → Health monitor: checks health (evidence: `harness/run_experiment.py`)
- Experiment runner → Lifecycle manager: applies transitions (evidence: `harness/run_experiment.py`)
- Experiment runner → Regret tracker: records removals (evidence: `harness/run_experiment.py`)
- Experiment runner → Benchmark evaluator: runs benchmark (evidence: `harness/run_experiment.py`)
- Behavioral dedup → Skill sandbox: executes probes (evidence: `harness/modules/dedup_engine.py`)
- Health monitor → Skill sandbox: runs skills (evidence: `harness/modules/health_monitor.py`)
- Skill sandbox → Skill runner: launches subprocess (evidence: `harness/modules/sandbox.py`)
- Lifecycle manager → Recoverable archive: moves archived skills (evidence: `harness/modules/lifecycle_manager.py`)
- Health probes → Drift data: probes drift data (evidence: `README.md`)
- Benchmark evaluator → Lexical retrieval: retrieves top-k (evidence: `harness/modules/evaluator.py`)
- Benchmark evaluator → Code executor: executes solver code (evidence: `harness/modules/evaluator.py`)
- Benchmark evaluator → DABench: evaluates tasks (evidence: `README.md`)
- Benchmark evaluator → Generator LLM session: asks session (evidence: `README.md`)
- Pollution analysis → Experiment runner: reuses curation (evidence: `harness/analyze_pollution.py`)
- Flip analysis → Experiment runner: rebuilds curated set (evidence: `harness/analyze_flips.py`)
- Flip analysis → Benchmark evaluator: compares task results (evidence: `harness/analyze_flips.py`)
