[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6D9VD3NATFN5G8V1G8CZV0M":3,"skill-same:01M6D9VD3NATFN5G8V1G8CZV0M":54},{"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":17,"publishedAt":28,"linkOnly":29,"markdownContent":30,"markdownBody":31,"frontMatter":32,"refName":33,"commitSha":34,"skillDirectory":35,"forksCount":13,"repositoryHtmlUrl":36,"repositoryHomepageUrl":37,"ownerHtmlUrl":38,"ownerBlogUrl":6,"ownerDescription":6,"updatedAt":39,"install":40,"resources":53},"01M6D9VD3NATFN5G8V1G8CZV0M","rewardkit",null,"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.","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\u002Frewardkit\u002FSKILL.md",[],[5,18,19,20,21,22,23,24,25,26,27],"directory","produce","harbor","editing","write","use","up","task","grading","tests","2026-11-10 10:12:30",false,"---\nname: rewardkit\ndescription: Write Harbor task verifiers using Reward Kit. Use when creating or editing a \n  task's tests\u002F directory, adding grading criteria, setting up LLM\u002Fagent judges, or designing \n  verifiers that produce a reward score.\n---\n\nHelp the user write task verifiers with Reward Kit. Reward Kit is a lightweight Python \npackage that turns a directory of criteria files into a reward score. Each criterion is a \nPython function call or a TOML judge file; folders become separate rewards.\n\n## Setup in a Harbor task\n\nPut criteria alongside `test.sh` in the task's `tests\u002F` directory:\n\n```\ntests\u002F\n├── test.sh\n├── checks.py         # programmatic criteria\n└── judge.toml        # optional LLM\u002Fagent judge\n```\n\n`tests\u002Ftest.sh`:\n```bash\n#!\u002Fbin\u002Fbash\nuvx --from 'harbor-rewardkit==0.1.*' rewardkit \u002Ftests\n```\n\nThis runs all criteria in `\u002Ftests\u002F` against the workspace at `\u002Fapp` and writes \n`\u002Flogs\u002Fverifier\u002Freward.json`. Defaults match Harbor's conventions — no extra config needed.\n\nIf judge criteria need API keys, pass them through `task.toml`:\n```toml\n[verifier.env]\nANTHROPIC_API_KEY = \"${ANTHROPIC_API_KEY}\"\n```\n\nAsk whether Reward Kit should run in the agent's shared environment or in a\nseparate verifier environment. Prefer a separate verifier environment when judge\nprompts, grading dependencies, API keys, or clean-room checks should not be\navailable to the agent:\n\n```toml\n[environment]\nnetwork_mode = \"no-network\"   # Agent env baseline — offline during agent.run()\n\n[verifier]\nenvironment_mode = \"separate\"\n\n[verifier.environment]\nnetwork_mode = \"public\"     # Verifier env baseline — LLM judge API calls\ndocker_image = \"python:3.12-slim\"\n```\n\nIn shared mode, the verifier runs in the agent container and inherits\n`[environment].network_mode`. Put `[verifier].network_mode` only when verify()\nneeds different network access than the agent phase (a phase override, not a\nbaseline). If agent and verifier need different baselines without runtime\nswitching, use `environment_mode = \"separate\"` and set\n`[verifier.environment].network_mode`.\n\nJudge criteria that call external APIs need a `public` baseline or allowlist on\nthe verifier environment. Programmatic checks that only read local files can use\n`no-network`.\n\nIn separate mode, `tests\u002F` is the verifier image build context and must provide\n`\u002Ftests\u002Ftest.sh` at runtime; Harbor does not upload `tests\u002F` into the running\nverifier container.\n\n## Programmatic criteria\n\nCall built-ins from any `.py` file in `tests\u002F`:\n\n```python\nimport rewardkit as rk\n\nrk.file_exists(\"output.txt\")\nrk.file_contains(\"output.txt\", \"hello\")\nrk.command_succeeds(\"python main.py\", weight=2.0)\nrk.json_key_equals(\"result.json\", \"status\", \"ok\")\n```\n\nAll criteria accept `weight` (default `1.0`) and `isolated` (default `False`, runs in \noverlayfs so side effects don't leak).\n\n### Available built-ins\n\n- **Files**: `file_exists`, `file_not_exists`, `file_contains`, `file_contains_regex`, \n  `file_matches`, `files_equal`, `diff_ratio`\n- **Commands**: `command_succeeds`, `command_output_contains`, `command_output_matches`, \n  `command_output_matches_regex` (30s default timeout, optional `cwd`)\n- **Data**: `json_key_equals`, `json_path_equals`, `csv_cell_equals`, `xlsx_cell_equals` \n  (needs `[office]` extra), `sqlite_query_equals`\n- **HTTP**: `http_status_equals`, `http_response_contains`\n- **Images**: `image_similarity`, `image_size_equals` (needs `[image]` extra)\n- **Trajectory**: `trajectory_tool_used`, `trajectory_tool_not_used`, `trajectory_turn_count`\n\nFor extras, install with `uv tool install harbor-rewardkit[all]`.\n\n## Custom criteria\n\nUse the `@criterion` decorator. First parameter is always `workspace: Path`. Returns \n`bool` or `float`:\n\n```python\nfrom pathlib import Path\nfrom rewardkit import criterion\n\n@criterion\ndef has_valid_output(workspace: Path) -> bool:\n    return (workspace \u002F \"output.txt\").read_text().strip() != \"\"\n```\n\nZero-parameter criteria auto-register. Criteria with extra args must be called via `rk`:\n\n```python\n@criterion(description=\"output has at least {n} lines\")\ndef has_n_lines(workspace: Path, n: int) -> bool:\n    return len((workspace \u002F \"output.txt\").read_text().splitlines()) >= n\n\nrk.has_n_lines(10, weight=2.0)\nrk.has_n_lines(50, weight=1.0)\n```\n\nFor criteria shared across reward subdirs, define with `shared=True` in a root-level file \nand call from subdirs.\n\n## Judge criteria (LLM or agent-as-a-judge)\n\nFor subjective checks (quality, readability, edge cases), create a TOML file:\n\n```toml\n[judge]\njudge = \"anthropic\u002Fclaude-sonnet-4-6\"   # LiteLLM model string\nfiles = [\"\u002Fapp\u002Fmain.py\"]\n\n[[criterion]]\ndescription = \"Is the code correct?\"\ntype = \"binary\"\n\n[[criterion]]\ndescription = \"How readable is the code?\"\ntype = \"likert\"\npoints = 5\nweight = 2.0\n```\n\nCriterion types:\n- `binary` — yes\u002Fno → 1.0 or 0.0\n- `likert` — 1..points, normalized to [0, 1]\n- `numeric` — min..max, normalized to [0, 1]\n\n### Agent judges\n\nAgent judges shell out to a CLI and can explore the filesystem:\n\n```toml\n[judge]\njudge = \"claude-code\"\nmodel = \"anthropic\u002Fclaude-sonnet-4-6\"\nisolated = true\n\n[[criterion]]\ndescription = \"Does the solution handle edge cases?\"\ntype = \"binary\"\n```\n\nSlower and more expensive than LLM judges, but they can run commands and inspect files.\n\n### Useful `[judge]` options\n\n`timeout` (default 300), `reasoning_effort` (`low`|`medium`|`high`), `reference` (path to \nreference solution), `atif-trajectory` (evaluate the agent's trajectory), `weight`, \n`prompt_template` (custom prompt with `{criteria}` placeholder).\n\n### Scoring aggregation\n\n```toml\n[scoring]\naggregation = \"all_pass\"   # weighted_mean | all_pass | any_pass | threshold\nthreshold = 0.7             # only for threshold\n```\n\nOnly affects aggregation *within* this TOML file.\n\n## Multi-reward tasks\n\nPut criteria in subdirectories — each becomes a separate reward:\n\n```\ntests\u002F\n├── test.sh\n├── correctness\u002F\n│   └── check.py\n├── structure\u002F\n│   └── files_exist.py\n└── quality\u002F\n    └── quality.toml\n```\n\nProduces:\n```json\n{ \"correctness\": 0.75, \"structure\": 1.0, \"quality\": 0.6 }\n```\n\n## Output files\n\n- `\u002Flogs\u002Fverifier\u002Freward.json` — per-reward scores\n- `\u002Flogs\u002Fverifier\u002Freward-details.json` — per-criterion results, judge reasoning, errors\n\n## Multi-step tasks\n\nIn a multi-step task, each step has its own `tests\u002F` under\n`steps\u002F{name}\u002Ftests\u002F`, and the verifier runs once per step. Reward Kit behaves\nthe same as in a single-step task: for each step it reads `\u002Ftests`, runs the\ncriteria against `\u002Fapp`, and writes `\u002Flogs\u002Fverifier\u002Freward.json` for that step.\nHarbor then aggregates per-step results into a trial-level reward via\n`multi_step_reward_strategy` in `task.toml` — aggregation happens *outside*\nReward Kit, so don't try to encode cross-step logic in your criteria.\n\nA task-level `tests\u002F` directory (at the task root) is uploaded to `\u002Ftests`\nfirst, then the step's own `tests\u002F` is layered on top (same-name files win).\nPut shared helpers (common `checks.py` functions with `shared=True`, fixture\nfiles, a fallback `test.sh`) at the task level, and step-specific criteria\nunder each step.\n\nMulti-reward subdirectories still work *within* a step: `steps\u002Ffoo\u002Ftests\u002F`\ncan contain `correctness\u002F`, `structure\u002F`, `quality\u002F` — each produces a\nseparate reward key for that step, and `multi_step_reward_strategy = \"mean\"`\naverages each key across steps. Use `\"final\"` when the last step is an\nend-to-end check whose rewards already represent the full task.\n\n## When to reach for what\n\n- **Use built-ins** for file existence, string matches, command output, JSON\u002FCSV checks, \n  HTTP probes.\n- **Use `@criterion`** when logic is task-specific but still programmatic.\n- **Use LLM judges** for subjective quality dimensions (readability, correctness of prose).\n- **Use agent judges** when the rubric requires exploring the filesystem or running code \n  (e.g. \"does the test suite actually pass?\").\n- **Use subdirectories** when you want separate scores (correctness vs structure vs \n  quality) rather than one blended number.\n- **Use `isolated=True`** for any criterion that runs mutating commands, so it doesn't \n  corrupt the workspace for other criteria.\n\n## Working example\n\nSee `examples\u002Ftasks\u002Freward-kit-example\u002F` in the Harbor repo.\n","Help the user write task verifiers with Reward Kit. Reward Kit is a lightweight Python \npackage that turns a directory of criteria files into a reward score. Each criterion is a \nPython function call or a TOML judge file; folders become separate rewards.\n\n## Setup in a Harbor task\n\nPut criteria alongside `test.sh` in the task's `tests\u002F` directory:\n\n```\ntests\u002F\n├── test.sh\n├── checks.py         # programmatic criteria\n└── judge.toml        # optional LLM\u002Fagent judge\n```\n\n`tests\u002Ftest.sh`:\n```bash\n#!\u002Fbin\u002Fbash\nuvx --from 'harbor-rewardkit==0.1.*' rewardkit \u002Ftests\n```\n\nThis runs all criteria in `\u002Ftests\u002F` against the workspace at `\u002Fapp` and writes \n`\u002Flogs\u002Fverifier\u002Freward.json`. Defaults match Harbor's conventions — no extra config needed.\n\nIf judge criteria need API keys, pass them through `task.toml`:\n```toml\n[verifier.env]\nANTHROPIC_API_KEY = \"${ANTHROPIC_API_KEY}\"\n```\n\nAsk whether Reward Kit should run in the agent's shared environment or in a\nseparate verifier environment. Prefer a separate verifier environment when judge\nprompts, grading dependencies, API keys, or clean-room checks should not be\navailable to the agent:\n\n```toml\n[environment]\nnetwork_mode = \"no-network\"   # Agent env baseline — offline during agent.run()\n\n[verifier]\nenvironment_mode = \"separate\"\n\n[verifier.environment]\nnetwork_mode = \"public\"     # Verifier env baseline — LLM judge API calls\ndocker_image = \"python:3.12-slim\"\n```\n\nIn shared mode, the verifier runs in the agent container and inherits\n`[environment].network_mode`. Put `[verifier].network_mode` only when verify()\nneeds different network access than the agent phase (a phase override, not a\nbaseline). If agent and verifier need different baselines without runtime\nswitching, use `environment_mode = \"separate\"` and set\n`[verifier.environment].network_mode`.\n\nJudge criteria that call external APIs need a `public` baseline or allowlist on\nthe verifier environment. Programmatic checks that only read local files can use\n`no-network`.\n\nIn separate mode, `tests\u002F` is the verifier image build context and must provide\n`\u002Ftests\u002Ftest.sh` at runtime; Harbor does not upload `tests\u002F` into the running\nverifier container.\n\n## Programmatic criteria\n\nCall built-ins from any `.py` file in `tests\u002F`:\n\n```python\nimport rewardkit as rk\n\nrk.file_exists(\"output.txt\")\nrk.file_contains(\"output.txt\", \"hello\")\nrk.command_succeeds(\"python main.py\", weight=2.0)\nrk.json_key_equals(\"result.json\", \"status\", \"ok\")\n```\n\nAll criteria accept `weight` (default `1.0`) and `isolated` (default `False`, runs in \noverlayfs so side effects don't leak).\n\n### Available built-ins\n\n- **Files**: `file_exists`, `file_not_exists`, `file_contains`, `file_contains_regex`, \n  `file_matches`, `files_equal`, `diff_ratio`\n- **Commands**: `command_succeeds`, `command_output_contains`, `command_output_matches`, \n  `command_output_matches_regex` (30s default timeout, optional `cwd`)\n- **Data**: `json_key_equals`, `json_path_equals`, `csv_cell_equals`, `xlsx_cell_equals` \n  (needs `[office]` extra), `sqlite_query_equals`\n- **HTTP**: `http_status_equals`, `http_response_contains`\n- **Images**: `image_similarity`, `image_size_equals` (needs `[image]` extra)\n- **Trajectory**: `trajectory_tool_used`, `trajectory_tool_not_used`, `trajectory_turn_count`\n\nFor extras, install with `uv tool install harbor-rewardkit[all]`.\n\n## Custom criteria\n\nUse the `@criterion` decorator. First parameter is always `workspace: Path`. Returns \n`bool` or `float`:\n\n```python\nfrom pathlib import Path\nfrom rewardkit import criterion\n\n@criterion\ndef has_valid_output(workspace: Path) -> bool:\n    return (workspace \u002F \"output.txt\").read_text().strip() != \"\"\n```\n\nZero-parameter criteria auto-register. Criteria with extra args must be called via `rk`:\n\n```python\n@criterion(description=\"output has at least {n} lines\")\ndef has_n_lines(workspace: Path, n: int) -> bool:\n    return len((workspace \u002F \"output.txt\").read_text().splitlines()) >= n\n\nrk.has_n_lines(10, weight=2.0)\nrk.has_n_lines(50, weight=1.0)\n```\n\nFor criteria shared across reward subdirs, define with `shared=True` in a root-level file \nand call from subdirs.\n\n## Judge criteria (LLM or agent-as-a-judge)\n\nFor subjective checks (quality, readability, edge cases), create a TOML file:\n\n```toml\n[judge]\njudge = \"anthropic\u002Fclaude-sonnet-4-6\"   # LiteLLM model string\nfiles = [\"\u002Fapp\u002Fmain.py\"]\n\n[[criterion]]\ndescription = \"Is the code correct?\"\ntype = \"binary\"\n\n[[criterion]]\ndescription = \"How readable is the code?\"\ntype = \"likert\"\npoints = 5\nweight = 2.0\n```\n\nCriterion types:\n- `binary` — yes\u002Fno → 1.0 or 0.0\n- `likert` — 1..points, normalized to [0, 1]\n- `numeric` — min..max, normalized to [0, 1]\n\n### Agent judges\n\nAgent judges shell out to a CLI and can explore the filesystem:\n\n```toml\n[judge]\njudge = \"claude-code\"\nmodel = \"anthropic\u002Fclaude-sonnet-4-6\"\nisolated = true\n\n[[criterion]]\ndescription = \"Does the solution handle edge cases?\"\ntype = \"binary\"\n```\n\nSlower and more expensive than LLM judges, but they can run commands and inspect files.\n\n### Useful `[judge]` options\n\n`timeout` (default 300), `reasoning_effort` (`low`|`medium`|`high`), `reference` (path to \nreference solution), `atif-trajectory` (evaluate the agent's trajectory), `weight`, \n`prompt_template` (custom prompt with `{criteria}` placeholder).\n\n### Scoring aggregation\n\n```toml\n[scoring]\naggregation = \"all_pass\"   # weighted_mean | all_pass | any_pass | threshold\nthreshold = 0.7             # only for threshold\n```\n\nOnly affects aggregation *within* this TOML file.\n\n## Multi-reward tasks\n\nPut criteria in subdirectories — each becomes a separate reward:\n\n```\ntests\u002F\n├── test.sh\n├── correctness\u002F\n│   └── check.py\n├── structure\u002F\n│   └── files_exist.py\n└── quality\u002F\n    └── quality.toml\n```\n\nProduces:\n```json\n{ \"correctness\": 0.75, \"structure\": 1.0, \"quality\": 0.6 }\n```\n\n## Output files\n\n- `\u002Flogs\u002Fverifier\u002Freward.json` — per-reward scores\n- `\u002Flogs\u002Fverifier\u002Freward-details.json` — per-criterion results, judge reasoning, errors\n\n## Multi-step tasks\n\nIn a multi-step task, each step has its own `tests\u002F` under\n`steps\u002F{name}\u002Ftests\u002F`, and the verifier runs once per step. Reward Kit behaves\nthe same as in a single-step task: for each step it reads `\u002Ftests`, runs the\ncriteria against `\u002Fapp`, and writes `\u002Flogs\u002Fverifier\u002Freward.json` for that step.\nHarbor then aggregates per-step results into a trial-level reward via\n`multi_step_reward_strategy` in `task.toml` — aggregation happens *outside*\nReward Kit, so don't try to encode cross-step logic in your criteria.\n\nA task-level `tests\u002F` directory (at the task root) is uploaded to `\u002Ftests`\nfirst, then the step's own `tests\u002F` is layered on top (same-name files win).\nPut shared helpers (common `checks.py` functions with `shared=True`, fixture\nfiles, a fallback `test.sh`) at the task level, and step-specific criteria\nunder each step.\n\nMulti-reward subdirectories still work *within* a step: `steps\u002Ffoo\u002Ftests\u002F`\ncan contain `correctness\u002F`, `structure\u002F`, `quality\u002F` — each produces a\nseparate reward key for that step, and `multi_step_reward_strategy = \"mean\"`\naverages each key across steps. Use `\"final\"` when the last step is an\nend-to-end check whose rewards already represent the full task.\n\n## When to reach for what\n\n- **Use built-ins** for file existence, string matches, command output, JSON\u002FCSV checks, \n  HTTP probes.\n- **Use `@criterion`** when logic is task-specific but still programmatic.\n- **Use LLM judges** for subjective quality dimensions (readability, correctness of prose).\n- **Use agent judges** when the rubric requires exploring the filesystem or running code \n  (e.g. \"does the test suite actually pass?\").\n- **Use subdirectories** when you want separate scores (correctness vs structure vs \n  quality) rather than one blended number.\n- **Use `isolated=True`** for any criterion that runs mutating commands, so it doesn't \n  corrupt the workspace for other criteria.\n\n## Working example\n\nSee `examples\u002Ftasks\u002Freward-kit-example\u002F` in the Harbor repo.\n",{"name":5,"description":7},"main","de2f043d9ffb2aa523e1494d4e00d0bfdce7afb8","skills\u002Frewardkit","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":41,"prompt":51,"zipAvailable":52},[42,45,48],{"tool":43,"command":44},"npx","npx skills add PGCodeLLM\u002Fharbor --skill rewardkit",{"tool":46,"command":47},"bunx","bunx skills add PGCodeLLM\u002Fharbor --skill rewardkit",{"tool":49,"command":50},"pnpm","pnpm dlx skills add PGCodeLLM\u002Fharbor --skill rewardkit","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002FPGCodeLLM\u002Fharbor\u002Fblob\u002Fmain\u002Fskills\u002Frewardkit\u002FSKILL.md",true,[],[55,69,82,101,120,132],{"skillNo":56,"name":57,"nameZh":6,"description":58,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":59,"categories":60,"keywords":61,"publishedAt":28},"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",[],[62,63,64,65,66,67,20,68],"experiments","upload","upload parity experiments","oracle","create","git","hugging face",{"skillNo":70,"name":71,"nameZh":6,"description":72,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":73,"categories":74,"keywords":75,"publishedAt":28},"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",[],[71,76,77,78,20,79,23,80,81,25,63],"tasks","registry","share","user","datasets","benchmarks",{"skillNo":83,"name":84,"nameZh":6,"description":85,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":86,"categories":87,"keywords":88,"publishedAt":28},"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",[],[89,66,25,90,23,91,92,93,94,95,96,97,98,99,20,100,79],"create task","build","verifier","pytest","scripting","environment","design","writing","scaffold","setup","benchmark","eval",{"skillNo":102,"name":103,"nameZh":6,"description":104,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":105,"categories":106,"keywords":112,"publishedAt":28},"01M6D9V3YNRP4W6494DKGGM9CH","create-adapter","Scaffold a new Harbor benchmark adapter by running `harbor adapter init` and then guide implementation using the Adapters Agent Guide as the authoritative spec.","https:\u002F\u002Fgithub.com\u002FPGCodeLLM\u002Fharbor\u002Fblob\u002Fmain\u002Fskills\u002Fcreate-adapter\u002FSKILL.md",[107],{"categoryNo":108,"categoryName":109,"taxonomyType":110,"taxonomyTypeDesc":111},"01JBSEEDCAT000000000000023","Skill与智能体开发","SCENARIO","使用场景",[113,66,114,115,116,97,99,20,117,118,119],"create adapter","guide","spec","init","agent guide","implementation","as",{"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":28},"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,22,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":28},"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,20,22,142,130],"runtime proof","runtime","injection","example"]