[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M71GXDC86B9XJHTZ385K4F5E":3,"skill-same:01M71GXDC86B9XJHTZ385K4F5E":46},{"skillNo":4,"name":5,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":6,"repositoryNo":11,"starsCount":12,"licenseSpdxId":13,"licenseFileUrl":6,"sourceHtmlUrl":14,"categories":15,"keywords":16,"publishedAt":20,"linkOnly":21,"markdownContent":22,"markdownBody":23,"frontMatter":24,"refName":25,"commitSha":26,"skillDirectory":27,"forksCount":28,"repositoryHtmlUrl":29,"repositoryHomepageUrl":6,"ownerHtmlUrl":30,"ownerBlogUrl":6,"ownerDescription":6,"updatedAt":31,"install":32,"resources":45},"01M71GXDC86B9XJHTZ385K4F5E","plasm-catalog-polish",null,"PlasmTools\u002Fplasm-core","PlasmTools","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F281353390?v=4","01M71GWJFJFZQRD4NNTXY58ZQ8","01M71GWJG8F2ADWJDZCD57ZH94",9,"Apache-2.0","https:\u002F\u002Fgithub.com\u002FPlasmTools\u002Fplasm-core\u002Fblob\u002Fmain\u002Fskills\u002Fplasm-catalog-polish\u002FSKILL.md",[],[17,18,19],"polish","catalog","plasm catalog polish","2026-11-10 10:12:30",false,"---\nname: plasm-catalog-polish\ndescription: Polish an existing Plasm catalog to be publish-ready. Runs an autonomous diagnostic \u002F fix loop on `apis\u002F\u003Capi>\u002F`: CGS validation, mapping checks against the OpenAPI spec when available, teaching table prompt hygiene, descriptions and discovery audit, eval coverage, and transport evidence via the e2e-test skill. Iterates until the catalog passes its quality bar, then reports a before \u002F after delta. Use after `plasm-authoring`, `plasm-catalog-reprint`, or any time a catalog is \"almost there but not shipped\". Trigger phrases: \"polish the catalog\", \"clean up apis\u002F\u003Capi>\", \"make it ship-ready\", \"fix the descriptions\", \"fix the eval coverage\", \"polish\".\n---\n\n# Plasm Catalog Polish\n\nThis skill turns a \"mostly authored\" Plasm catalog into something publish-ready. It is **autonomous**: invoke it, let it run the diagnostic-fix-rediagnose loop, and read the delta at the end. It does not require human input between iterations except for blockers it cannot resolve (missing credentials, ambiguous semantic choices that require user judgement, or core Plasm gaps).\n\n## When to run\n\n- After [plasm-authoring](..\u002Fplasm-authoring\u002FSKILL.md) finishes a first pass on a new catalog.\n- After [plasm-catalog-reprint](..\u002Fplasm-catalog-reprint\u002FSKILL.md) regenerates an existing catalog.\n- On any existing `apis\u002F\u003Capi>\u002F` whose quality has drifted (descriptions, eval coverage, missing relations, typed-but-stringly fields).\n- Before opening a publish PR.\n\n## Inputs\n\n- `apis\u002F\u003Capi>\u002F` — required.\n- `apis\u002F\u003Capi>\u002FREADME.md` — read for auth env vars, OpenAPI path, sandbox info, intentional scope.\n- Optional: a focus area provided by the user (\"just descriptions\", \"just typing\", \"just evals\"). If unset, polish runs the full audit.\n\n## Audit Dimensions\n\nPolish operates along these dimensions. Each has a clear gate and a clear fix path. The skill loops until every gate is green or a blocker is recorded.\n\n### 1. CGS validation (gate)\n\n```bash\ncargo run -p plasm-cli --bin plasm-cgs -- schema validate apis\u002F\u003Capi>\n```\n\nAny failure is a stop-the-loop blocker. Fix or report.\n\n### 2. Mapping correctness against the spec (gate when spec exists)\n\n```bash\ncargo run -p plasm-cli --bin plasm-cgs -- validate --spec path\u002Fto\u002Fopenapi.json apis\u002F\u003Capi>\n```\n\nAddress every reported drift:\n\n- Capabilities present in CGS but missing from mappings.\n- Mapping params that do not appear in the OpenAPI operation.\n- Body \u002F query shape mismatches.\n\nFor GraphQL or non-OpenAPI catalogs, document the lack of spec validation in the run summary.\n\n### 3. CGS field typing audit (fix-and-revalidate)\n\nRead every entity and capability parameter. For each `value_ref` resolving to `string`, ask the strict typing checklist from [plasm-authoring SKILL.md](..\u002Fplasm-authoring\u002FSKILL.md):\n\n- Should it be `date` + `value_format`?\n- Should it be `select` \u002F `multi_select` with `allowed_values`?\n- Should it be `entity_ref` with `target:`?\n- Should it be `blob`?\n- Should it use a specific `string_semantics`?\n\nFix the `values:` row, then revalidate.\n\n### 4. Relation completeness (fix-and-revalidate)\n\n- Every `entity_ref` whose target is in the catalog should support FK navigation. Confirm the target has a `get` capability, or document why it does not.\n- Every parent \u002F child sub-resource URL should have a `materialize` block on the parent's `many` relation, using `query_scoped` or `query_scoped_bindings`.\n- Self-referential `entity_ref` (parent \u002F child trees) should be modeled if the API supports it.\n\n### 5. Action output contracts (gate)\n\nEvery `kind: action` must declare:\n\n- non-empty `provides:` (entity projection from response), **or**\n- `output: { type: side_effect, description: \"\u003Cdomain effect>\" }` (non-empty description, not \"updates resource\").\n\nValidation will reject violations; this dimension reads them and fixes the descriptions or projection lists.\n\n### 6. Description hygiene (fix-and-revalidate)\n\nAudit entity `description`, capability `description`, and `output.description` for `side_effect` actions. Rewrite any string that:\n\n- Contains an HTTP method, REST path, status code, or bare `http:\u002F\u002F` \u002F `https:\u002F\u002F` URL (except `auth.token_url`).\n- Names other capability ids (\"call `foo_query` first\").\n- Inventories fields, relations, or projection contents that teaching table already prints.\n- Uses tabular jargon (\"row\", \"column\") in domain-facing prose.\n- Restates the wire type or enum members that `value_ref` already conveys.\n\nRun the automated linter (from monorepo root or `plasm-oss\u002F`):\n\n```bash\npython3 plasm-oss\u002Fscripts\u002Fcheck_catalog_description_hygiene.py --catalog \u003Capi> --fail-on error\n```\n\nBulk remediation helper (review diff before commit):\n\n```bash\npython3 plasm-oss\u002Fscripts\u002Fapply_description_hygiene_fixes.py --catalog \u003Capi>\n```\n\nRule ids: `A_identity_restatement`, `B_eval_example_leakage`, `C_field_param_inventory`, `D_generic_get_boilerplate`, `E_composed_projection_dup`, `F_scoping_parenthetical`, `G_tabular_jargon` — see [plasm-authoring reference.md — Teaching-table-facing descriptions](..\u002Fplasm-authoring\u002Freference.md#teaching-table-facing-descriptions-entities-and-capabilities).\n\n### 7. Composed reads (`views:`) check\n\nIf the README, sample expressions, or eval cases imply a \"snapshot\" or \"summary\" entity that no single endpoint returns, ensure it is modeled as a `views:` composition rather than prose-only guidance. Canonical example: `apis\u002Fcloudflare` `SecurityOverview` + `views.security_overview`.\n\n### 8. Transport evidence (gate via e2e-test skill)\n\nDelegate to [plasm-catalog-e2e-test](..\u002Fplasm-catalog-e2e-test\u002FSKILL.md). At minimum, the catalog must pass:\n\n- Tier 0 (validation).\n- Tier 1 (Hermit) when an OpenAPI spec is available.\n- Tier 2 (live) or Tier 3 (sandbox) when credentials exist.\n\nIf transport tests reveal decode failures, return to dimensions 3 \u002F 4 \u002F 6 above. Polish is the right home for those fixes.\n\n### 9. Eval coverage (gate)\n\n```bash\ncargo run -p plasm-eval -- coverage --schema apis\u002F\u003Capi> --cases apis\u002F\u003Capi>\u002Feval\u002Fcases.yaml\n```\n\nFix missing buckets by adding eval cases — not by softening the coverage gate. Use the scaffold for hints:\n\n```bash\ncargo run -p plasm-eval -- scaffold --schema apis\u002F\u003Capi>\n```\n\nIf `eval\u002Fcases.yaml` does not exist, create it with `--write` and edit until coverage passes.\n\n### 10. README sanity (fix)\n\n`apis\u002F\u003Capi>\u002FREADME.md` should document:\n\n- Capability count and scope summary.\n- Auth env vars or `scheme: none` declaration.\n- OpenAPI source path or URL when applicable.\n- Sandbox \u002F test-mode URL when applicable.\n- Known limitations (write capabilities skipped, vendor quirks, rate-limit notes).\n\nThe skill updates the README when these are missing or stale.\n\n### 11. Information-flow annotations (fix when mutating caps exist)\n\nWhen the catalog exposes send\u002Fpublish\u002Fpost\u002Freply\u002Fshare\u002Fdelete\u002Fpay capabilities, audit Guardians-style labels per [reference.md — Information-flow annotations](..\u002Fplasm-authoring\u002Freference.md#information-flow-annotations-guardians--plan-flow-typing):\n\n- Top-level **`data_classes:`** registry present and closed (every `data_class`, `sink_class`, and `sanitizes` reference resolves).\n- Sensitive **entity fields** (`body`, `description`, PII, secrets) carry **`data_class:`**.\n- Exfiltration\u002Fdestructive **`input_schema`** params carry **`sink_class:`** (sink names registered in `data_classes:`).\n- Scrub\u002Fredact capabilities declare **`sanitizes:`** when applicable.\n\nRead-only catalogs: record \"flow annotations deferred (read-only surface)\" in the polish summary. Revalidate after fixes; bump `version:` when annotations change.\n\n## Loop\n\n```mermaid\nflowchart TD\n  start[\"Polish invoked\"] --> snapshot[\"Snapshot before-state\"]\n  snapshot --> validate{\"Tier 0 validate\"}\n  validate -- \"fail\" --> fixValidate[\"Fix CGS errors\"]\n  fixValidate --> validate\n  validate -- \"pass\" --> audit[\"Run dimensions 2-7, 10\"]\n  audit --> changed{\"Anything changed?\"}\n  changed -- \"yes\" --> validate\n  changed -- \"no\" --> e2e[\"e2e-test skill\"]\n  e2e --> evalCov[\"eval coverage\"]\n  evalCov -- \"fail\" --> addCases[\"Add eval cases\"]\n  addCases --> evalCov\n  evalCov -- \"pass\" --> delta[\"Emit before\u002Fafter delta\"]\n  delta --> done[\"Polish complete\"]\n```\n\nThe loop keeps re-running validation after every structural change. It stops when one of the following is true:\n\n- All dimensions are green.\n- A blocker is recorded (missing credentials, ambiguous semantic choice, core Plasm gap).\n- The user interrupts.\n\n## Required Evidence\n\nWhen polish completes, emit a delta record. Recommended shape:\n\n```\ncatalog: apis\u002F\u003Capi>\nbefore:\n  version: \u003Cn>\n  schema validate: \u003Cpass | fail with N errors>\n  validate --spec: \u003Cpass | fail | not applicable>\n  typing audit: \u003CN stringly fields downgraded to typed>\n  description audit: \u003CN descriptions rewritten>\n  action output audit: \u003CN actions fixed>\n  views audit: \u003C0 | N composed reads added>\n  eval coverage: \u003Cpass | fail with missing buckets>\n  hermit: \u003Cpass | fail | not applicable>\n  live: \u003Cpass | fail | skipped>\n  sandbox: \u003Cpass | fail | skipped>\n\nafter:\n  version: \u003Cn+m>\n  all dimensions: green\n  notes:\n    - any blockers\n    - any user decisions needed\n    - any candidates for plasm-catalog-retro\n\nartifacts touched:\n  apis\u002F\u003Capi>\u002Fdomain.yaml\n  apis\u002F\u003Capi>\u002Fmappings.yaml\n  apis\u002F\u003Capi>\u002Feval\u002Fcases.yaml\n  apis\u002F\u003Capi>\u002FREADME.md\n```\n\n## Handoff\n\n- Successful polish → optional [plasm-catalog-score](..\u002Fplasm-catalog-score\u002FSKILL.md) to grade the catalog against the rubric.\n- Systemic findings → [plasm-catalog-retro](..\u002Fplasm-catalog-retro\u002FSKILL.md).\n- Polish revealed the model is fundamentally wrong → [plasm-catalog-reprint](..\u002Fplasm-catalog-reprint\u002FSKILL.md).\n\n## What polish refuses to do\n\n- Soften coverage requirements to make a catalog \"pass\".\n- Paper over missing `output.description` on side-effect actions with generic phrases.\n- Add API-specific runbooks to entity \u002F capability descriptions.\n- Modify `crates\u002Fplasm-core`, `crates\u002Fplasm-cml`, or `crates\u002Fplasm-runtime` to make a model fit. Core gaps go to a separate task.\n- Generate `domain.yaml` mechanically from the spec.\n","# Plasm Catalog Polish\n\nThis skill turns a \"mostly authored\" Plasm catalog into something publish-ready. It is **autonomous**: invoke it, let it run the diagnostic-fix-rediagnose loop, and read the delta at the end. It does not require human input between iterations except for blockers it cannot resolve (missing credentials, ambiguous semantic choices that require user judgement, or core Plasm gaps).\n\n## When to run\n\n- After [plasm-authoring](..\u002Fplasm-authoring\u002FSKILL.md) finishes a first pass on a new catalog.\n- After [plasm-catalog-reprint](..\u002Fplasm-catalog-reprint\u002FSKILL.md) regenerates an existing catalog.\n- On any existing `apis\u002F\u003Capi>\u002F` whose quality has drifted (descriptions, eval coverage, missing relations, typed-but-stringly fields).\n- Before opening a publish PR.\n\n## Inputs\n\n- `apis\u002F\u003Capi>\u002F` — required.\n- `apis\u002F\u003Capi>\u002FREADME.md` — read for auth env vars, OpenAPI path, sandbox info, intentional scope.\n- Optional: a focus area provided by the user (\"just descriptions\", \"just typing\", \"just evals\"). If unset, polish runs the full audit.\n\n## Audit Dimensions\n\nPolish operates along these dimensions. Each has a clear gate and a clear fix path. The skill loops until every gate is green or a blocker is recorded.\n\n### 1. CGS validation (gate)\n\n```bash\ncargo run -p plasm-cli --bin plasm-cgs -- schema validate apis\u002F\u003Capi>\n```\n\nAny failure is a stop-the-loop blocker. Fix or report.\n\n### 2. Mapping correctness against the spec (gate when spec exists)\n\n```bash\ncargo run -p plasm-cli --bin plasm-cgs -- validate --spec path\u002Fto\u002Fopenapi.json apis\u002F\u003Capi>\n```\n\nAddress every reported drift:\n\n- Capabilities present in CGS but missing from mappings.\n- Mapping params that do not appear in the OpenAPI operation.\n- Body \u002F query shape mismatches.\n\nFor GraphQL or non-OpenAPI catalogs, document the lack of spec validation in the run summary.\n\n### 3. CGS field typing audit (fix-and-revalidate)\n\nRead every entity and capability parameter. For each `value_ref` resolving to `string`, ask the strict typing checklist from [plasm-authoring SKILL.md](..\u002Fplasm-authoring\u002FSKILL.md):\n\n- Should it be `date` + `value_format`?\n- Should it be `select` \u002F `multi_select` with `allowed_values`?\n- Should it be `entity_ref` with `target:`?\n- Should it be `blob`?\n- Should it use a specific `string_semantics`?\n\nFix the `values:` row, then revalidate.\n\n### 4. Relation completeness (fix-and-revalidate)\n\n- Every `entity_ref` whose target is in the catalog should support FK navigation. Confirm the target has a `get` capability, or document why it does not.\n- Every parent \u002F child sub-resource URL should have a `materialize` block on the parent's `many` relation, using `query_scoped` or `query_scoped_bindings`.\n- Self-referential `entity_ref` (parent \u002F child trees) should be modeled if the API supports it.\n\n### 5. Action output contracts (gate)\n\nEvery `kind: action` must declare:\n\n- non-empty `provides:` (entity projection from response), **or**\n- `output: { type: side_effect, description: \"\u003Cdomain effect>\" }` (non-empty description, not \"updates resource\").\n\nValidation will reject violations; this dimension reads them and fixes the descriptions or projection lists.\n\n### 6. Description hygiene (fix-and-revalidate)\n\nAudit entity `description`, capability `description`, and `output.description` for `side_effect` actions. Rewrite any string that:\n\n- Contains an HTTP method, REST path, status code, or bare `http:\u002F\u002F` \u002F `https:\u002F\u002F` URL (except `auth.token_url`).\n- Names other capability ids (\"call `foo_query` first\").\n- Inventories fields, relations, or projection contents that teaching table already prints.\n- Uses tabular jargon (\"row\", \"column\") in domain-facing prose.\n- Restates the wire type or enum members that `value_ref` already conveys.\n\nRun the automated linter (from monorepo root or `plasm-oss\u002F`):\n\n```bash\npython3 plasm-oss\u002Fscripts\u002Fcheck_catalog_description_hygiene.py --catalog \u003Capi> --fail-on error\n```\n\nBulk remediation helper (review diff before commit):\n\n```bash\npython3 plasm-oss\u002Fscripts\u002Fapply_description_hygiene_fixes.py --catalog \u003Capi>\n```\n\nRule ids: `A_identity_restatement`, `B_eval_example_leakage`, `C_field_param_inventory`, `D_generic_get_boilerplate`, `E_composed_projection_dup`, `F_scoping_parenthetical`, `G_tabular_jargon` — see [plasm-authoring reference.md — Teaching-table-facing descriptions](..\u002Fplasm-authoring\u002Freference.md#teaching-table-facing-descriptions-entities-and-capabilities).\n\n### 7. Composed reads (`views:`) check\n\nIf the README, sample expressions, or eval cases imply a \"snapshot\" or \"summary\" entity that no single endpoint returns, ensure it is modeled as a `views:` composition rather than prose-only guidance. Canonical example: `apis\u002Fcloudflare` `SecurityOverview` + `views.security_overview`.\n\n### 8. Transport evidence (gate via e2e-test skill)\n\nDelegate to [plasm-catalog-e2e-test](..\u002Fplasm-catalog-e2e-test\u002FSKILL.md). At minimum, the catalog must pass:\n\n- Tier 0 (validation).\n- Tier 1 (Hermit) when an OpenAPI spec is available.\n- Tier 2 (live) or Tier 3 (sandbox) when credentials exist.\n\nIf transport tests reveal decode failures, return to dimensions 3 \u002F 4 \u002F 6 above. Polish is the right home for those fixes.\n\n### 9. Eval coverage (gate)\n\n```bash\ncargo run -p plasm-eval -- coverage --schema apis\u002F\u003Capi> --cases apis\u002F\u003Capi>\u002Feval\u002Fcases.yaml\n```\n\nFix missing buckets by adding eval cases — not by softening the coverage gate. Use the scaffold for hints:\n\n```bash\ncargo run -p plasm-eval -- scaffold --schema apis\u002F\u003Capi>\n```\n\nIf `eval\u002Fcases.yaml` does not exist, create it with `--write` and edit until coverage passes.\n\n### 10. README sanity (fix)\n\n`apis\u002F\u003Capi>\u002FREADME.md` should document:\n\n- Capability count and scope summary.\n- Auth env vars or `scheme: none` declaration.\n- OpenAPI source path or URL when applicable.\n- Sandbox \u002F test-mode URL when applicable.\n- Known limitations (write capabilities skipped, vendor quirks, rate-limit notes).\n\nThe skill updates the README when these are missing or stale.\n\n### 11. Information-flow annotations (fix when mutating caps exist)\n\nWhen the catalog exposes send\u002Fpublish\u002Fpost\u002Freply\u002Fshare\u002Fdelete\u002Fpay capabilities, audit Guardians-style labels per [reference.md — Information-flow annotations](..\u002Fplasm-authoring\u002Freference.md#information-flow-annotations-guardians--plan-flow-typing):\n\n- Top-level **`data_classes:`** registry present and closed (every `data_class`, `sink_class`, and `sanitizes` reference resolves).\n- Sensitive **entity fields** (`body`, `description`, PII, secrets) carry **`data_class:`**.\n- Exfiltration\u002Fdestructive **`input_schema`** params carry **`sink_class:`** (sink names registered in `data_classes:`).\n- Scrub\u002Fredact capabilities declare **`sanitizes:`** when applicable.\n\nRead-only catalogs: record \"flow annotations deferred (read-only surface)\" in the polish summary. Revalidate after fixes; bump `version:` when annotations change.\n\n## Loop\n\n```mermaid\nflowchart TD\n  start[\"Polish invoked\"] --> snapshot[\"Snapshot before-state\"]\n  snapshot --> validate{\"Tier 0 validate\"}\n  validate -- \"fail\" --> fixValidate[\"Fix CGS errors\"]\n  fixValidate --> validate\n  validate -- \"pass\" --> audit[\"Run dimensions 2-7, 10\"]\n  audit --> changed{\"Anything changed?\"}\n  changed -- \"yes\" --> validate\n  changed -- \"no\" --> e2e[\"e2e-test skill\"]\n  e2e --> evalCov[\"eval coverage\"]\n  evalCov -- \"fail\" --> addCases[\"Add eval cases\"]\n  addCases --> evalCov\n  evalCov -- \"pass\" --> delta[\"Emit before\u002Fafter delta\"]\n  delta --> done[\"Polish complete\"]\n```\n\nThe loop keeps re-running validation after every structural change. It stops when one of the following is true:\n\n- All dimensions are green.\n- A blocker is recorded (missing credentials, ambiguous semantic choice, core Plasm gap).\n- The user interrupts.\n\n## Required Evidence\n\nWhen polish completes, emit a delta record. Recommended shape:\n\n```\ncatalog: apis\u002F\u003Capi>\nbefore:\n  version: \u003Cn>\n  schema validate: \u003Cpass | fail with N errors>\n  validate --spec: \u003Cpass | fail | not applicable>\n  typing audit: \u003CN stringly fields downgraded to typed>\n  description audit: \u003CN descriptions rewritten>\n  action output audit: \u003CN actions fixed>\n  views audit: \u003C0 | N composed reads added>\n  eval coverage: \u003Cpass | fail with missing buckets>\n  hermit: \u003Cpass | fail | not applicable>\n  live: \u003Cpass | fail | skipped>\n  sandbox: \u003Cpass | fail | skipped>\n\nafter:\n  version: \u003Cn+m>\n  all dimensions: green\n  notes:\n    - any blockers\n    - any user decisions needed\n    - any candidates for plasm-catalog-retro\n\nartifacts touched:\n  apis\u002F\u003Capi>\u002Fdomain.yaml\n  apis\u002F\u003Capi>\u002Fmappings.yaml\n  apis\u002F\u003Capi>\u002Feval\u002Fcases.yaml\n  apis\u002F\u003Capi>\u002FREADME.md\n```\n\n## Handoff\n\n- Successful polish → optional [plasm-catalog-score](..\u002Fplasm-catalog-score\u002FSKILL.md) to grade the catalog against the rubric.\n- Systemic findings → [plasm-catalog-retro](..\u002Fplasm-catalog-retro\u002FSKILL.md).\n- Polish revealed the model is fundamentally wrong → [plasm-catalog-reprint](..\u002Fplasm-catalog-reprint\u002FSKILL.md).\n\n## What polish refuses to do\n\n- Soften coverage requirements to make a catalog \"pass\".\n- Paper over missing `output.description` on side-effect actions with generic phrases.\n- Add API-specific runbooks to entity \u002F capability descriptions.\n- Modify `crates\u002Fplasm-core`, `crates\u002Fplasm-cml`, or `crates\u002Fplasm-runtime` to make a model fit. Core gaps go to a separate task.\n- Generate `domain.yaml` mechanically from the spec.\n",{},"main","8f036e9443513eb615ca40218052395b4f489eba","skills\u002Fplasm-catalog-polish",3,"https:\u002F\u002Fgithub.com\u002FPlasmTools\u002Fplasm-core","https:\u002F\u002Fgithub.com\u002FPlasmTools","2026-11-13 04:23:00",{"source":7,"skillName":5,"commands":33,"prompt":43,"zipAvailable":44},[34,37,40],{"tool":35,"command":36},"npx","npx skills add PlasmTools\u002Fplasm-core --skill plasm-catalog-polish",{"tool":38,"command":39},"bunx","bunx skills add PlasmTools\u002Fplasm-core --skill plasm-catalog-polish",{"tool":41,"command":42},"pnpm","pnpm dlx skills add PlasmTools\u002Fplasm-core --skill plasm-catalog-polish","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002FPlasmTools\u002Fplasm-core\u002Fblob\u002Fmain\u002Fskills\u002Fplasm-catalog-polish\u002FSKILL.md",true,[],[47,77,84,92,99,112],{"skillNo":48,"name":49,"nameZh":6,"description":50,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":6,"repositoryNo":11,"starsCount":12,"licenseSpdxId":13,"licenseFileUrl":6,"sourceHtmlUrl":51,"categories":52,"keywords":58,"publishedAt":20},"01M71GXN906T8EMB9G6PZ5XA38","plasm-forge","OSS entry skill for Plasm CGS \u002F CML catalog authoring — points at the canonical skill suite under `skills\u002F` in plasm-core. Use when agents need the authoring playbook; pair with `.cursor\u002Fagents\u002Fplasm-forge.md` (Cursor) for autonomous catalog work.","https:\u002F\u002Fgithub.com\u002FPlasmTools\u002Fplasm-core\u002Fblob\u002Fmain\u002Fskills\u002Fplasm-forge\u002FSKILL.md",[53],{"categoryNo":54,"categoryName":55,"taxonomyType":56,"taxonomyTypeDesc":57},"01JBSEEDCAT000000000000023","Skill与智能体开发","SCENARIO","使用场景",[59,60,61,18,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76],"plasm forge","forge","work","autonomous","use","when","with","pair","cursor","at","entry","playbook","authoring","suite","canonical","oss","for","core",{"skillNo":78,"name":79,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":6,"repositoryNo":11,"starsCount":12,"licenseSpdxId":13,"licenseFileUrl":6,"sourceHtmlUrl":80,"categories":81,"keywords":82,"publishedAt":20},"01M71GXKKSBRV99VB8JHXTSZ5V","plasm-catalog-score","https:\u002F\u002Fgithub.com\u002FPlasmTools\u002Fplasm-core\u002Fblob\u002Fmain\u002Fskills\u002Fplasm-catalog-score\u002FSKILL.md",[],[83,18],"plasm catalog score",{"skillNo":85,"name":86,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":6,"repositoryNo":11,"starsCount":12,"licenseSpdxId":13,"licenseFileUrl":6,"sourceHtmlUrl":87,"categories":88,"keywords":89,"publishedAt":20},"01M71GXHASQBWNG6R5CTDJEZZW","plasm-catalog-retro","https:\u002F\u002Fgithub.com\u002FPlasmTools\u002Fplasm-core\u002Fblob\u002Fmain\u002Fskills\u002Fplasm-catalog-retro\u002FSKILL.md",[],[90,91,18],"retro","plasm catalog retro",{"skillNo":93,"name":94,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":6,"repositoryNo":11,"starsCount":12,"licenseSpdxId":13,"licenseFileUrl":6,"sourceHtmlUrl":95,"categories":96,"keywords":97,"publishedAt":20},"01M71GXFM75YTJDHM24BY9ERHA","plasm-catalog-reprint","https:\u002F\u002Fgithub.com\u002FPlasmTools\u002Fplasm-core\u002Fblob\u002Fmain\u002Fskills\u002Fplasm-catalog-reprint\u002FSKILL.md",[],[98,18],"plasm catalog reprint",{"skillNo":100,"name":101,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":6,"repositoryNo":11,"starsCount":12,"licenseSpdxId":13,"licenseFileUrl":6,"sourceHtmlUrl":102,"categories":103,"keywords":107,"publishedAt":20},"01M71GXBJV6YV7H86Y4T9CBXK3","plasm-catalog-e2e-test","https:\u002F\u002Fgithub.com\u002FPlasmTools\u002Fplasm-core\u002Fblob\u002Fmain\u002Fskills\u002Fplasm-catalog-e2e-test\u002FSKILL.md",[104],{"categoryNo":105,"categoryName":106,"taxonomyType":56,"taxonomyTypeDesc":57},"01JBSEEDCAT000000000000008","测试与质量",[108,109,110,18,111],"plasm catalog e2e test","test","e2e","e2e test",{"skillNo":113,"name":114,"nameZh":6,"description":115,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":6,"repositoryNo":11,"starsCount":12,"licenseSpdxId":13,"licenseFileUrl":6,"sourceHtmlUrl":116,"categories":117,"keywords":118,"publishedAt":20},"01M71GX89APRV34VCV6RP79BX4","plasm-catalog-adversarial-verify","Programming-agent adversarial prove loop for Plasm catalogs (AppWorld-first). Certifies teaching + dry\u002Flive Plasm and mandatory semantic auto-seed (intent-only plasm_context). Writes evidence under apis\u002F...\u002Fe2e\u002F. Use when verifying or hardening a catalog outside CUGA\u002Feval ladders.","https:\u002F\u002Fgithub.com\u002FPlasmTools\u002Fplasm-core\u002Fblob\u002Fmain\u002Fskills\u002Fplasm-catalog-adversarial-verify\u002FSKILL.md",[],[18,119,120,121,122,123,124,75,125,126,110,127,128,63,129,64,130,131,132,133],"plasm catalog adversarial verify","adversarial","verify","adversarial verify","teaching","evidence","eval","only","auto","prove","loop","intent","first","dry","programming"]