[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6D9V3YNRP4W6494DKGGM9CH":3,"skill-same:01M6D9V3YNRP4W6494DKGGM9CH":60},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":15,"categories":16,"keywords":22,"publishedAt":34,"linkOnly":35,"markdownContent":36,"markdownBody":37,"frontMatter":38,"refName":39,"commitSha":40,"skillDirectory":41,"forksCount":13,"repositoryHtmlUrl":42,"repositoryHomepageUrl":43,"ownerHtmlUrl":44,"ownerBlogUrl":6,"ownerDescription":6,"updatedAt":45,"install":46,"resources":59},"01M6D9V3YNRP4W6494DKGGM9CH","create-adapter",null,"Scaffold a new Harbor benchmark adapter by running `harbor adapter init` and then guide implementation using the Adapters Agent Guide as the authoritative spec.","PGCodeLLM\u002Fharbor","PGCodeLLM","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F195791236?v=4","01M6D9TVQRJDRVYVFYGFS1Q7HQ","01M6D9TVW86XTGX60XE4CR6RBT",0,"Apache-2.0","https:\u002F\u002Fgithub.com\u002FPGCodeLLM\u002Fharbor\u002Fblob\u002Fmain\u002Fskills\u002Fcreate-adapter\u002FSKILL.md",[17],{"categoryNo":18,"categoryName":19,"taxonomyType":20,"taxonomyTypeDesc":21},"01JBSEEDCAT000000000000023","Skill与智能体开发","SCENARIO","使用场景",[23,24,25,26,27,28,29,30,31,32,33],"create","create adapter","spec","init","scaffold","benchmark","harbor","guide","agent guide","implementation","as","2026-11-10 10:12:30",false,"---\nname: create-adapter\ndescription: Scaffold a new Harbor benchmark adapter by running `harbor adapter init` and then guide implementation using the Adapters Agent Guide as the authoritative spec.\n---\n\n# Create Adapter\n\nBootstrap a new benchmark adapter in the Harbor repository. This skill scaffolds the adapter directory with `harbor adapter init` and then defers to the adapter tutorial for every implementation decision.\n\n## Authoritative reference\n\nThe adapter tutorial is the authoritative specification for this skill. Read it in full before taking any action beyond scaffolding:\n\n```\ndocs\u002Fcontent\u002Fdocs\u002Fdatasets\u002Fadapters.mdx\n```\n\nThat path is relative to the Harbor repo root (a skill prerequisite — see below). The tutorial contains:\n\n- Required directory structures for the generated tasks and the adapter code package.\n- Step-by-step process (steps 1-9) covering benchmark analysis, oracle verification, parity experiments, dataset registration, and submission.\n- Schemas for `task.toml`, `parity_experiment.json`, `adapter_metadata.json`, and `dataset.toml`.\n- Parity matching criterion, pre-flight checklist, and debug playbook.\n- README format rules (machine-parsed; deviations break automation).\n\nDo not substitute prior knowledge for the contents of that file. Treat it as the contract.\n\n## Prerequisites\n\n- Harbor CLI is installed and available on `PATH` (`harbor --version` succeeds).\n- Working directory is the Harbor repository root.\n- Harbor checkout is current: run `git fetch origin && git status` and pull `main` if behind. Stale checkouts miss recent adapter and agent fixes and are a common source of spurious parity failures later on.\n\n## Workflow\n\n### 1. Read the tutorial\n\nBefore any filesystem or CLI action, Read `docs\u002Fcontent\u002Fdocs\u002Fdatasets\u002Fadapters.mdx` in full. Pay particular attention to:\n\n- **Required Directory Structures** — the contract for generated task and adapter layouts.\n- **Step 1. Understand the Original Benchmark** — what to identify upstream before coding.\n- **Step 8. Register the Dataset → Naming rules** — the `name` field and `\u003Corg>\u002F\u003Ctask>` format requirements.\n\n### 2. Gather benchmark context from the user\n\nCollect the following before scaffolding. If the user has not provided an item, ask before proceeding — these inputs shape the scaffold and the tutorial steps that follow.\n\n| Field | Why it matters |\n|-------|---------------|\n| Adapter name | Lowercase, hyphen-separated. Must match the benchmark's common identifier (e.g., `swe-bench`, `aider-polyglot`). Becomes the directory under `adapters\u002F` and, after underscore conversion, the Python package name. |\n| Human-readable name | Passed via `--name`; appears in the generated README. |\n| Upstream repo URL | Needed for tutorial Step 1 (benchmark analysis) and for the `original_parity_repo` field later. |\n| Oracle solutions available? | If the benchmark ships reference solutions, use them. If not, oracle solutions must be LLM-generated (tutorial Step 3 → \"Benchmarks without oracle solutions\"). |\n| Agent scenario | Which of Step 4's scenarios applies: (1) existing compatible agent, (2) fork + add LLM agent, or (3) custom agent. This shapes the parity plan. |\n\n### 3. Create the adapter branch\n\nPer tutorial Step 2, work on a dedicated branch:\n\n```bash\ngit checkout -b \u003Cadapter-name>-adapter\n```\n\n### 4. Run the scaffold\n\nPrefer the non-interactive form when both names are known:\n\n```bash\nharbor adapter init \u003Cadapter-name> --name \"\u003CHuman-Readable Name>\"\n```\n\nOtherwise run `harbor adapter init` interactively and let the CLI prompt.\n\nExpected output: a new directory at `adapters\u002F\u003Cadapter-name>\u002F` containing `pyproject.toml`, `README.md`, `src\u002F\u003Cadapter_name>\u002F`, and the template task files under `src\u002F\u003Cadapter_name>\u002Ftask-template\u002F`. Verify the directory exists before continuing.\n\n### 5. Hand off to the tutorial\n\nContinue from \"Step 1. Understand the Original Benchmark\" in the tutorial. Do not invent structure, field names, or workflow beyond what the guide specifies.\n\n**High-priority gotchas** (each is documented in the tutorial, but these are the most common adapter-build failures — surface them proactively as you work through the steps):\n\n- **Every generated `task.toml` must contain a `name` field under `[task]`.** `main.py` is responsible for deriving a sanitized, unique, registry-safe name for every task. Tasks without a `name` cannot be registered. See the tutorial's \"Naming rules\" table.\n- **Task names must be stable across adapter runs.** Unstable names churn registry digests on republish. If upstream lacks stable identifiers, mint a deterministic scheme (e.g., `{dataset}-1`, `{dataset}-2`) from a reproducible sort.\n- **`version = \"1.0\"` in `task.toml` is the schema version — leave it alone.** Dataset versions are publish-time tags requested in the PR description, not a field in `task.toml` or `dataset.toml`.\n- **`main.py` must support `--output-dir`, `--limit`, `--overwrite`, and `--task-ids`.** These flags are required for reproducible runs and task-level debugging.\n- **The generated `README.md` is parsed by downstream automation.** Fill in every section exactly as the template defines; put extra context in the **Notes** section or in the `notes` fields of `parity_experiment.json` \u002F `adapter_metadata.json`. Do not add, rename, reorder, or remove sections.\n- **Do not run parity experiments unilaterally.** Tutorial Step 4 requires team coordination on agents, models, and number of runs before incurring API costs. Complete sanity checks first, and execute full runs symmetrically on both sides.\n\n## Reference adapters by scenario\n\nWhen implementation questions come up, point at an existing adapter that matches the benchmark's shape:\n\n| Scenario | Example adapter | When to use |\n|----------|----------------|-------------|\n| Compatible agent already exists | `adapters\u002Fadebench\u002F` | Upstream already supports Claude-Code \u002F Codex \u002F OpenHands \u002F Gemini-CLI |\n| Fork upstream + add LLM agent | `adapters\u002Fevoeval\u002F` | LLM-based benchmark with no Harbor-compatible agent |\n| Custom agent, separate dataset | `adapters\u002Fbixbench\u002F`, `adapters\u002Ffinanceagent\u002F` | Custom interaction semantics; financeagent also demos LLM-as-a-Judge |\n| Custom agent in-place | `adapters\u002Fmedagentbench\u002F` | Custom HTTPAgent, no separate dataset |\n| Multi-agent workflow | `adapters\u002Fcooperbench\u002F` | Multiple agents coordinate via messaging \u002F sidecars |\n| GPU tasks | `adapters\u002Ffeaturebench\u002F` | Comprehensive Docker + Modal GPU example |\n\n## What this skill does NOT do\n\n- Implement `adapter.py`, `main.py`, or any task-template files. Those are the contributor's work, guided by the tutorial.\n- Run oracle verification or parity experiments. Those require explicit user intent and, for parity, team coordination.\n- Publish the dataset or open PRs. Those are later steps in the tutorial.\n\n## Failure modes\n\n| Symptom | Likely cause | Action |\n|---------|--------------|--------|\n| `harbor: command not found` | Harbor CLI not installed | Install with `uv tool install harbor` or the repository's development setup. |\n| `harbor adapter init` fails with a name validation error | Adapter name contains invalid characters | Re-run with a lowercase, hyphen-separated name. |\n| Scaffold succeeds but `adapters\u002F\u003Cname>\u002F` is not present | Running from outside the repository root | `cd` to the Harbor repository root and re-run. |\n| Oracle passes locally but parity later fails spuriously | Stale Harbor checkout | `git fetch origin && git status`; pull `main` if behind. |\n","# Create Adapter\n\nBootstrap a new benchmark adapter in the Harbor repository. This skill scaffolds the adapter directory with `harbor adapter init` and then defers to the adapter tutorial for every implementation decision.\n\n## Authoritative reference\n\nThe adapter tutorial is the authoritative specification for this skill. Read it in full before taking any action beyond scaffolding:\n\n```\ndocs\u002Fcontent\u002Fdocs\u002Fdatasets\u002Fadapters.mdx\n```\n\nThat path is relative to the Harbor repo root (a skill prerequisite — see below). The tutorial contains:\n\n- Required directory structures for the generated tasks and the adapter code package.\n- Step-by-step process (steps 1-9) covering benchmark analysis, oracle verification, parity experiments, dataset registration, and submission.\n- Schemas for `task.toml`, `parity_experiment.json`, `adapter_metadata.json`, and `dataset.toml`.\n- Parity matching criterion, pre-flight checklist, and debug playbook.\n- README format rules (machine-parsed; deviations break automation).\n\nDo not substitute prior knowledge for the contents of that file. Treat it as the contract.\n\n## Prerequisites\n\n- Harbor CLI is installed and available on `PATH` (`harbor --version` succeeds).\n- Working directory is the Harbor repository root.\n- Harbor checkout is current: run `git fetch origin && git status` and pull `main` if behind. Stale checkouts miss recent adapter and agent fixes and are a common source of spurious parity failures later on.\n\n## Workflow\n\n### 1. Read the tutorial\n\nBefore any filesystem or CLI action, Read `docs\u002Fcontent\u002Fdocs\u002Fdatasets\u002Fadapters.mdx` in full. Pay particular attention to:\n\n- **Required Directory Structures** — the contract for generated task and adapter layouts.\n- **Step 1. Understand the Original Benchmark** — what to identify upstream before coding.\n- **Step 8. Register the Dataset → Naming rules** — the `name` field and `\u003Corg>\u002F\u003Ctask>` format requirements.\n\n### 2. Gather benchmark context from the user\n\nCollect the following before scaffolding. If the user has not provided an item, ask before proceeding — these inputs shape the scaffold and the tutorial steps that follow.\n\n| Field | Why it matters |\n|-------|---------------|\n| Adapter name | Lowercase, hyphen-separated. Must match the benchmark's common identifier (e.g., `swe-bench`, `aider-polyglot`). Becomes the directory under `adapters\u002F` and, after underscore conversion, the Python package name. |\n| Human-readable name | Passed via `--name`; appears in the generated README. |\n| Upstream repo URL | Needed for tutorial Step 1 (benchmark analysis) and for the `original_parity_repo` field later. |\n| Oracle solutions available? | If the benchmark ships reference solutions, use them. If not, oracle solutions must be LLM-generated (tutorial Step 3 → \"Benchmarks without oracle solutions\"). |\n| Agent scenario | Which of Step 4's scenarios applies: (1) existing compatible agent, (2) fork + add LLM agent, or (3) custom agent. This shapes the parity plan. |\n\n### 3. Create the adapter branch\n\nPer tutorial Step 2, work on a dedicated branch:\n\n```bash\ngit checkout -b \u003Cadapter-name>-adapter\n```\n\n### 4. Run the scaffold\n\nPrefer the non-interactive form when both names are known:\n\n```bash\nharbor adapter init \u003Cadapter-name> --name \"\u003CHuman-Readable Name>\"\n```\n\nOtherwise run `harbor adapter init` interactively and let the CLI prompt.\n\nExpected output: a new directory at `adapters\u002F\u003Cadapter-name>\u002F` containing `pyproject.toml`, `README.md`, `src\u002F\u003Cadapter_name>\u002F`, and the template task files under `src\u002F\u003Cadapter_name>\u002Ftask-template\u002F`. Verify the directory exists before continuing.\n\n### 5. Hand off to the tutorial\n\nContinue from \"Step 1. Understand the Original Benchmark\" in the tutorial. Do not invent structure, field names, or workflow beyond what the guide specifies.\n\n**High-priority gotchas** (each is documented in the tutorial, but these are the most common adapter-build failures — surface them proactively as you work through the steps):\n\n- **Every generated `task.toml` must contain a `name` field under `[task]`.** `main.py` is responsible for deriving a sanitized, unique, registry-safe name for every task. Tasks without a `name` cannot be registered. See the tutorial's \"Naming rules\" table.\n- **Task names must be stable across adapter runs.** Unstable names churn registry digests on republish. If upstream lacks stable identifiers, mint a deterministic scheme (e.g., `{dataset}-1`, `{dataset}-2`) from a reproducible sort.\n- **`version = \"1.0\"` in `task.toml` is the schema version — leave it alone.** Dataset versions are publish-time tags requested in the PR description, not a field in `task.toml` or `dataset.toml`.\n- **`main.py` must support `--output-dir`, `--limit`, `--overwrite`, and `--task-ids`.** These flags are required for reproducible runs and task-level debugging.\n- **The generated `README.md` is parsed by downstream automation.** Fill in every section exactly as the template defines; put extra context in the **Notes** section or in the `notes` fields of `parity_experiment.json` \u002F `adapter_metadata.json`. Do not add, rename, reorder, or remove sections.\n- **Do not run parity experiments unilaterally.** Tutorial Step 4 requires team coordination on agents, models, and number of runs before incurring API costs. Complete sanity checks first, and execute full runs symmetrically on both sides.\n\n## Reference adapters by scenario\n\nWhen implementation questions come up, point at an existing adapter that matches the benchmark's shape:\n\n| Scenario | Example adapter | When to use |\n|----------|----------------|-------------|\n| Compatible agent already exists | `adapters\u002Fadebench\u002F` | Upstream already supports Claude-Code \u002F Codex \u002F OpenHands \u002F Gemini-CLI |\n| Fork upstream + add LLM agent | `adapters\u002Fevoeval\u002F` | LLM-based benchmark with no Harbor-compatible agent |\n| Custom agent, separate dataset | `adapters\u002Fbixbench\u002F`, `adapters\u002Ffinanceagent\u002F` | Custom interaction semantics; financeagent also demos LLM-as-a-Judge |\n| Custom agent in-place | `adapters\u002Fmedagentbench\u002F` | Custom HTTPAgent, no separate dataset |\n| Multi-agent workflow | `adapters\u002Fcooperbench\u002F` | Multiple agents coordinate via messaging \u002F sidecars |\n| GPU tasks | `adapters\u002Ffeaturebench\u002F` | Comprehensive Docker + Modal GPU example |\n\n## What this skill does NOT do\n\n- Implement `adapter.py`, `main.py`, or any task-template files. Those are the contributor's work, guided by the tutorial.\n- Run oracle verification or parity experiments. Those require explicit user intent and, for parity, team coordination.\n- Publish the dataset or open PRs. Those are later steps in the tutorial.\n\n## Failure modes\n\n| Symptom | Likely cause | Action |\n|---------|--------------|--------|\n| `harbor: command not found` | Harbor CLI not installed | Install with `uv tool install harbor` or the repository's development setup. |\n| `harbor adapter init` fails with a name validation error | Adapter name contains invalid characters | Re-run with a lowercase, hyphen-separated name. |\n| Scaffold succeeds but `adapters\u002F\u003Cname>\u002F` is not present | Running from outside the repository root | `cd` to the Harbor repository root and re-run. |\n| Oracle passes locally but parity later fails spuriously | Stale Harbor checkout | `git fetch origin && git status`; pull `main` if behind. |\n",{"name":5,"description":7},"main","de2f043d9ffb2aa523e1494d4e00d0bfdce7afb8","skills\u002Fcreate-adapter","https:\u002F\u002Fgithub.com\u002FPGCodeLLM\u002Fharbor","https:\u002F\u002Fharborframework.com\u002F","https:\u002F\u002Fgithub.com\u002FPGCodeLLM","2026-11-12 12:30:06",{"source":8,"skillName":5,"commands":47,"prompt":57,"zipAvailable":58},[48,51,54],{"tool":49,"command":50},"npx","npx skills add PGCodeLLM\u002Fharbor --skill create-adapter",{"tool":52,"command":53},"bunx","bunx skills add PGCodeLLM\u002Fharbor --skill create-adapter",{"tool":55,"command":56},"pnpm","pnpm dlx skills add PGCodeLLM\u002Fharbor --skill create-adapter","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002FPGCodeLLM\u002Fharbor\u002Fblob\u002Fmain\u002Fskills\u002Fcreate-adapter\u002FSKILL.md",true,[],[61,74,90,103,120,132],{"skillNo":62,"name":63,"nameZh":6,"description":64,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":65,"categories":66,"keywords":67,"publishedAt":34},"01M6D9VFNTM2894A0RZP58Z5XF","upload-parity-experiments","Create or reuse Hugging Face dataset PRs for `harborframework\u002Fparity-experiments` and upload Harbor parity\u002Foracle result folders efficiently with sparse checkout, raw git pushes, and Git LFS.","https:\u002F\u002Fgithub.com\u002FPGCodeLLM\u002Fharbor\u002Fblob\u002Fmain\u002Fskills\u002Fupload-parity-experiments\u002FSKILL.md",[],[68,69,70,71,23,29,72,73],"upload parity experiments","experiments","upload","hugging face","oracle","git",{"skillNo":75,"name":76,"nameZh":6,"description":77,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":78,"categories":79,"keywords":80,"publishedAt":34},"01M6D9VD3NATFN5G8V1G8CZV0M","rewardkit","Write Harbor task verifiers using Reward Kit. Use when creating or editing a task's tests\u002F directory, adding grading criteria, setting up LLM\u002Fagent judges, or designing verifiers that produce a reward score.","https:\u002F\u002Fgithub.com\u002FPGCodeLLM\u002Fharbor\u002Fblob\u002Fmain\u002Fskills\u002Frewardkit\u002FSKILL.md",[],[76,81,82,83,29,84,85,86,87,88,89],"editing","directory","produce","write","use","up","task","grading","tests",{"skillNo":91,"name":92,"nameZh":6,"description":93,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":94,"categories":95,"keywords":96,"publishedAt":34},"01M6D9VAQVR2RH68F2AZ0FFZE0","publish","Publish a Harbor task or dataset to the registry. Use when the user wants to upload, publish, or share tasks or datasets\u002Fbenchmarks on the Harbor registry.","https:\u002F\u002Fgithub.com\u002FPGCodeLLM\u002Fharbor\u002Fblob\u002Fmain\u002Fskills\u002Fpublish\u002FSKILL.md",[],[92,97,98,85,99,100,87,70,29,101,102],"user","tasks","datasets","benchmarks","registry","share",{"skillNo":104,"name":105,"nameZh":6,"description":106,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":107,"categories":108,"keywords":109,"publishedAt":34},"01M6D9V6ZD67WGARQ2296KR5SC","create-task","Create a new Harbor task for evaluating agents. Use when the user wants to scaffold, build, or design a new task, benchmark problem, or eval. Guides through instruction writing, environment setup, verifier design (pytest vs Reward Kit vs custom), and solution scripting.","https:\u002F\u002Fgithub.com\u002FPGCodeLLM\u002Fharbor\u002Fblob\u002Fmain\u002Fskills\u002Fcreate-task\u002FSKILL.md",[],[110,87,23,111,112,113,27,114,28,29,115,97,116,85,117,118,119],"create task","scripting","design","writing","setup","eval","environment","pytest","build","verifier",{"skillNo":121,"name":122,"nameZh":6,"description":123,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":124,"categories":125,"keywords":126,"publishedAt":34},"01M6D9V1QS0V21GX1W7M5KNG1Z","generate-greeting","Generate a greeting message and write it to a file.","https:\u002F\u002Fgithub.com\u002FPGCodeLLM\u002Fharbor\u002Fblob\u002Fmain\u002Fexamples\u002Ftasks\u002Fhello-skills\u002Fenvironment\u002Fskills\u002Fgenerate-greeting\u002FSKILL.md",[],[127,128,129,130,84,131],"generate greeting","greeting","generate","file","message",{"skillNo":133,"name":134,"nameZh":6,"description":135,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":136,"categories":137,"keywords":138,"publishedAt":34},"01M6D9V08N633ABGSN808D0A0T","runtime-proof","Write the proof file for the Harbor runtime skill injection example.","https:\u002F\u002Fgithub.com\u002FPGCodeLLM\u002Fharbor\u002Fblob\u002Fmain\u002Fexamples\u002Fjobs\u002Fskills-merge\u002Fskills\u002Fruntime-proof\u002FSKILL.md",[],[139,140,141,29,84,142,130],"runtime proof","runtime","injection","example"]