[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6XCSXC7VK2F0ZM276F3DP0M":3,"skill-same:01M6XCSXC7VK2F0ZM276F3DP0M":83},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":16,"categories":17,"keywords":26,"publishedAt":47,"linkOnly":48,"markdownContent":49,"markdownBody":50,"frontMatter":51,"refName":53,"commitSha":54,"skillDirectory":55,"forksCount":56,"repositoryHtmlUrl":57,"repositoryHomepageUrl":58,"ownerHtmlUrl":59,"ownerBlogUrl":60,"ownerDescription":61,"updatedAt":62,"install":63,"resources":76},"01M6XCSXC7VK2F0ZM276F3DP0M","canary-lab-export",null,"Use when exporting a Canary Lab run as an evaluation — \"export the evaluation\", \"produce the report for run 7cvh\", \"give me the evaluation archive\", \"review what the run proved\" — through the export MCP tools (start\u002Fsubmit_external_evaluation_export, get\u002Flist\u002Fdownload_evaluation_export). The archive carries the report and a behavior certificate with an offline checker. The run must be terminal (passed, failed, or aborted).","ferterahadi\u002Fcanary-lab","ferterahadi","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F148174839?v=4","01M6XCHCY39C7QEF3JZJ3VZGNZ","Fer Terahadi","01M6XCHD1ZE9926NBC97ZMZZRY",4,"MIT","https:\u002F\u002Fgithub.com\u002Fferterahadi\u002Fcanary-lab\u002Fblob\u002Fmain\u002Fagent-integrations\u002Fcodex\u002Fskills\u002Fcanary-lab-export\u002FSKILL.md",[18,23],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000008","测试与质量","SCENARIO","使用场景",{"categoryNo":24,"categoryName":25,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000023","Skill与智能体开发",[27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46],"canary lab","canary lab export","lab","canary","export","list","when","checker","submit","get","me","MCP","certificate","Tools","Evaluation","start","offline","run","terminal","review","2026-11-10 10:12:30",false,"---\nname: canary-lab-export\ndescription: Use when exporting a Canary Lab run as an evaluation — \"export the evaluation\", \"produce the report for run 7cvh\", \"give me the evaluation archive\", \"review what the run proved\" — through the export MCP tools (start\u002Fsubmit_external_evaluation_export, get\u002Flist\u002Fdownload_evaluation_export). The archive carries the report and a behavior certificate with an offline checker. The run must be terminal (passed, failed, or aborted).\ntype: skill\n---\n\n# Canary Lab — Evaluation Export\n\n## MCP Invocation\n\nSetup and the plugin expose one public Canary Lab MCP tool: `exec` (usually\nrendered as `mcp__Canary_Lab__exec`). Every\nCanary Lab tool name below is the exact `command` value, not a separate public\ntool. For a feature-scoped command, replace both placeholders in this shape:\n\n```json\n{\"command\":\"\u003Cexact_tool_name>\",\"arguments\":{\"feature\":\"\u003Cfeature_name>\"}}\n```\n\nThis is the envelope shape, not every command's complete schema. Add the\nfields that command declares inside `arguments`; call `describe_tool` when a\nfield is uncertain.\n\nNever invent a wrapper verb such as `learn` or `call`, embed JSON in a command\nstring, or turn arguments into flags. Keep fields such as `confirm: true` inside\n`arguments`. Use `list_tools`, `search_tools`, or `describe_tool` as the\n`command` when discovery is needed. A deliberately selected focused or `full`\nprofile still exposes atomic tools for debugging; the setup-installed path is\n`compact` + `exec`.\n\nThis client writes the reasoning; Canary Lab renders the final\n`evaluation.html` + archive. These tools arrive via the Canary Lab MCP\nserver. If this client is already connected (the plugin connects with\n`compact`), skip this step. To configure the same connection manually: `npx\ncanary-lab mcp --profile compact`. The evaluation export is the deliverable of a run: a\nself-contained archive (per-test reasoning, verdicts, Playwright artifacts —\nvideo playback where the tests drive a browser) the user reviews from\n`evaluation.html` without any Canary Lab UI running.\n\n## Workspace Bootstrap\n\n1. Find the LIVE server first: read `~\u002F.canary-lab\u002Factive-servers.json`, which records `projectRoot`, `port` and `pid` for every UI that registered. A stopped server's entry LINGERS — the file is only rewritten when the next server registers — so an entry is a candidate, not proof: the health check below is what confirms it. One entry → that is your server and its `port`. Several → take the one whose `projectRoot` is the workspace the user means. None → fall back to `~\u002F.canary-lab\u002Fworkspaces.json` (Windows: `%USERPROFILE%\\.canary-lab\\workspaces.json`): one workspace → use it, several → ask which, none → ask the user to run `npx canary-lab setup`. Do NOT start from a guessed port.\n2. Then CONFIRM it is the right server: `curl -s http:\u002F\u002F127.0.0.1:\u003Cport>\u002Fmcp\u002Fhealth` and check that `projectRoot` is the workspace you intended. A healthy response does **not** settle the question on its own — a stale UI left behind by a demo or a tarball smoke test answers a port just as convincingly as the right one, and that is how a flight ends up running in someone's throwaway workspace. `projectRoot` matches what you intended → continue and tell the user which workspace. It names a DIFFERENT workspace → this is the wrong server; go back to step 1 rather than adopting it. It is under a temp directory (`\u002Ftmp`, `\u002Fprivate\u002Fvar\u002Ffolders`, `%TEMP%`) → never auto-select it; those are throwaway demo workspaces, so use one only when the user names it explicitly. Only when no live server serves the workspace you want does one need starting.\n3. If the health check fails, start `npx canary-lab ui` from the workspace in a visible long-running terminal; if this client cannot run long-lived commands, ask the user to run `npx canary-lab ui` from the workspace and confirm when it's up.\n4. A healthy `\u002Fmcp\u002Fhealth` means the server is live. On the setup-installed `compact` profile, atomic names such as `get_feature_coverage` are deliberately absent from `tools\u002Flist`; only `exec` is public. Call `exec` with `{\"command\":\"list_tools\",\"arguments\":{}}` before concluding the connection is missing. Only an unknown-tool error for `exec` means this session is not connected — ask the user to run `npx canary-lab setup --force` and reconnect\u002Frestart the client, then retry. Never drive `\u002Fmcp` with a hand-written HTTP\u002FJSON-RPC client (curl included; the health check above is the only direct HTTP use): a custom client bypasses client detection and reconnect handling.\n\n## Arguments\n\nAn invocation argument (`\u002Fcanary-lab-export \u003Csuite-or-run-id>`) is either a suite\n(feature) name or an exact run ID. The Getting Started guide supplies a suite;\n`canary-lab-run` hands off the terminal run's ID. Try `get_run(argument)` first:\nif it finds a run, export that exact run. Only a `run not found` result means the\nargument should be treated as a suite and resolved with `list_runs(feature)`.\n\n## Export Loop\n\n1. After resolving a terminal run (passed, failed, or aborted), call `start_external_evaluation_export` with its exact run ID and the requested language. If the user asks to export a failed or aborted run as-is, preserve that status in the report instead of trying to heal first. When the argument is a feature instead of a run, `list_runs(feature)` finds the candidates: pick the **newest terminal run that actually ran tests** — `executionType` `run` (or `verify`), never `boot` or `benchmark` (a fresh workspace ships one aborted boot session, which has no test results; the server rejects exporting it). If the feature has no such run yet, do NOT export anything — tell the user the suite has to run first (`canary-lab-run` \u002F `start_run`), or offer to run it.\n2. `start_external_evaluation_export` does not embed the run snapshot — call `get_run(runId)` for the summary\u002Ffailures while authoring. Use the returned `reportSchema` to write the evaluation report\u002Farchive wording in this client. If it returns `type: \"getting_started_busy\"`, a Getting Started demo already owns the workspace — follow the active target it returns; do not start another workflow. While you author, the user can watch the export live in the Canary Lab UI on the suite's Flight page (Evaluation report stage) — that view is read-only while this client drives.\n3. Call `submit_external_evaluation_export` with the `taskId` returned by `start_external_evaluation_export` (`task.taskId`), plus either `textSlots[]` or `rewrite`. If you submit a `rewrite`, `rewrite.cases` must keep the **exact count and order** of the template's `cases[]` — one case per run entry; **never merge, dedupe, or drop** skipped or duplicate run entries (prefer editing `textSlots[]`, which keeps the count correct automatically). The result includes an `evaluation` digest (featureTitle, summary, per-case title + confidence) — **relay it to the user in chat**; don't just say it's available in the UI.\n4. A completed `submit_external_evaluation_export` returns `archivePath`, the exact absolute path of the zip Canary Lab already wrote. Relay that path directly. Use `get_evaluation_export` or `list_evaluation_exports` to recover status and the same path. Do **not** end with `npx canary-lab export download` or ask the user to fetch the file when `archivePath` is present. Call `download_evaluation_export` only when the client cannot access the server filesystem and the user explicitly needs the archive bytes. Canary Lab stores the artifact, but it does not rewrite, translate, or generate the report with an internal agent for external exports.\n5. A completed task also carries `certificate` (a digest) and `certificatePath`. This internal behavior certificate is stored separately from the downloadable archive. Relay `certificate.statement` and every line of `certificate.notProven` as written: the recorded test copy, assertion strength, and run verdict have limits, including that absence of weakening is not proven. `get_evaluation_export` returns the digest and path; `download_evaluation_export` can return the full sidecar through MCP.\n6. End with the exact `archivePath` and say that the ZIP contains `evaluation.html` and captured videos where available. Opening the report is the review step the export exists for.\n\n## Guardrails\n\n- Keep the same `session_id` for the whole conversation.\n- Never heal or re-run just to make an export look better — export the run the user named, status preserved.\n","# Canary Lab — Evaluation Export\n\n## MCP Invocation\n\nSetup and the plugin expose one public Canary Lab MCP tool: `exec` (usually\nrendered as `mcp__Canary_Lab__exec`). Every\nCanary Lab tool name below is the exact `command` value, not a separate public\ntool. For a feature-scoped command, replace both placeholders in this shape:\n\n```json\n{\"command\":\"\u003Cexact_tool_name>\",\"arguments\":{\"feature\":\"\u003Cfeature_name>\"}}\n```\n\nThis is the envelope shape, not every command's complete schema. Add the\nfields that command declares inside `arguments`; call `describe_tool` when a\nfield is uncertain.\n\nNever invent a wrapper verb such as `learn` or `call`, embed JSON in a command\nstring, or turn arguments into flags. Keep fields such as `confirm: true` inside\n`arguments`. Use `list_tools`, `search_tools`, or `describe_tool` as the\n`command` when discovery is needed. A deliberately selected focused or `full`\nprofile still exposes atomic tools for debugging; the setup-installed path is\n`compact` + `exec`.\n\nThis client writes the reasoning; Canary Lab renders the final\n`evaluation.html` + archive. These tools arrive via the Canary Lab MCP\nserver. If this client is already connected (the plugin connects with\n`compact`), skip this step. To configure the same connection manually: `npx\ncanary-lab mcp --profile compact`. The evaluation export is the deliverable of a run: a\nself-contained archive (per-test reasoning, verdicts, Playwright artifacts —\nvideo playback where the tests drive a browser) the user reviews from\n`evaluation.html` without any Canary Lab UI running.\n\n## Workspace Bootstrap\n\n1. Find the LIVE server first: read `~\u002F.canary-lab\u002Factive-servers.json`, which records `projectRoot`, `port` and `pid` for every UI that registered. A stopped server's entry LINGERS — the file is only rewritten when the next server registers — so an entry is a candidate, not proof: the health check below is what confirms it. One entry → that is your server and its `port`. Several → take the one whose `projectRoot` is the workspace the user means. None → fall back to `~\u002F.canary-lab\u002Fworkspaces.json` (Windows: `%USERPROFILE%\\.canary-lab\\workspaces.json`): one workspace → use it, several → ask which, none → ask the user to run `npx canary-lab setup`. Do NOT start from a guessed port.\n2. Then CONFIRM it is the right server: `curl -s http:\u002F\u002F127.0.0.1:\u003Cport>\u002Fmcp\u002Fhealth` and check that `projectRoot` is the workspace you intended. A healthy response does **not** settle the question on its own — a stale UI left behind by a demo or a tarball smoke test answers a port just as convincingly as the right one, and that is how a flight ends up running in someone's throwaway workspace. `projectRoot` matches what you intended → continue and tell the user which workspace. It names a DIFFERENT workspace → this is the wrong server; go back to step 1 rather than adopting it. It is under a temp directory (`\u002Ftmp`, `\u002Fprivate\u002Fvar\u002Ffolders`, `%TEMP%`) → never auto-select it; those are throwaway demo workspaces, so use one only when the user names it explicitly. Only when no live server serves the workspace you want does one need starting.\n3. If the health check fails, start `npx canary-lab ui` from the workspace in a visible long-running terminal; if this client cannot run long-lived commands, ask the user to run `npx canary-lab ui` from the workspace and confirm when it's up.\n4. A healthy `\u002Fmcp\u002Fhealth` means the server is live. On the setup-installed `compact` profile, atomic names such as `get_feature_coverage` are deliberately absent from `tools\u002Flist`; only `exec` is public. Call `exec` with `{\"command\":\"list_tools\",\"arguments\":{}}` before concluding the connection is missing. Only an unknown-tool error for `exec` means this session is not connected — ask the user to run `npx canary-lab setup --force` and reconnect\u002Frestart the client, then retry. Never drive `\u002Fmcp` with a hand-written HTTP\u002FJSON-RPC client (curl included; the health check above is the only direct HTTP use): a custom client bypasses client detection and reconnect handling.\n\n## Arguments\n\nAn invocation argument (`\u002Fcanary-lab-export \u003Csuite-or-run-id>`) is either a suite\n(feature) name or an exact run ID. The Getting Started guide supplies a suite;\n`canary-lab-run` hands off the terminal run's ID. Try `get_run(argument)` first:\nif it finds a run, export that exact run. Only a `run not found` result means the\nargument should be treated as a suite and resolved with `list_runs(feature)`.\n\n## Export Loop\n\n1. After resolving a terminal run (passed, failed, or aborted), call `start_external_evaluation_export` with its exact run ID and the requested language. If the user asks to export a failed or aborted run as-is, preserve that status in the report instead of trying to heal first. When the argument is a feature instead of a run, `list_runs(feature)` finds the candidates: pick the **newest terminal run that actually ran tests** — `executionType` `run` (or `verify`), never `boot` or `benchmark` (a fresh workspace ships one aborted boot session, which has no test results; the server rejects exporting it). If the feature has no such run yet, do NOT export anything — tell the user the suite has to run first (`canary-lab-run` \u002F `start_run`), or offer to run it.\n2. `start_external_evaluation_export` does not embed the run snapshot — call `get_run(runId)` for the summary\u002Ffailures while authoring. Use the returned `reportSchema` to write the evaluation report\u002Farchive wording in this client. If it returns `type: \"getting_started_busy\"`, a Getting Started demo already owns the workspace — follow the active target it returns; do not start another workflow. While you author, the user can watch the export live in the Canary Lab UI on the suite's Flight page (Evaluation report stage) — that view is read-only while this client drives.\n3. Call `submit_external_evaluation_export` with the `taskId` returned by `start_external_evaluation_export` (`task.taskId`), plus either `textSlots[]` or `rewrite`. If you submit a `rewrite`, `rewrite.cases` must keep the **exact count and order** of the template's `cases[]` — one case per run entry; **never merge, dedupe, or drop** skipped or duplicate run entries (prefer editing `textSlots[]`, which keeps the count correct automatically). The result includes an `evaluation` digest (featureTitle, summary, per-case title + confidence) — **relay it to the user in chat**; don't just say it's available in the UI.\n4. A completed `submit_external_evaluation_export` returns `archivePath`, the exact absolute path of the zip Canary Lab already wrote. Relay that path directly. Use `get_evaluation_export` or `list_evaluation_exports` to recover status and the same path. Do **not** end with `npx canary-lab export download` or ask the user to fetch the file when `archivePath` is present. Call `download_evaluation_export` only when the client cannot access the server filesystem and the user explicitly needs the archive bytes. Canary Lab stores the artifact, but it does not rewrite, translate, or generate the report with an internal agent for external exports.\n5. A completed task also carries `certificate` (a digest) and `certificatePath`. This internal behavior certificate is stored separately from the downloadable archive. Relay `certificate.statement` and every line of `certificate.notProven` as written: the recorded test copy, assertion strength, and run verdict have limits, including that absence of weakening is not proven. `get_evaluation_export` returns the digest and path; `download_evaluation_export` can return the full sidecar through MCP.\n6. End with the exact `archivePath` and say that the ZIP contains `evaluation.html` and captured videos where available. Opening the report is the review step the export exists for.\n\n## Guardrails\n\n- Keep the same `session_id` for the whole conversation.\n- Never heal or re-run just to make an export look better — export the run the user named, status preserved.\n",{"name":5,"type":52,"description":7},"skill","main","2c85305cab69e5f773d59ea79a64a0b049a98345","agent-integrations\u002Fcodex\u002Fskills\u002Fcanary-lab-export",0,"https:\u002F\u002Fgithub.com\u002Fferterahadi\u002Fcanary-lab","https:\u002F\u002Fwww.npmjs.com\u002Fpackage\u002Fcanary-lab","https:\u002F\u002Fgithub.com\u002Fferterahadi","https:\u002F\u002Fgithub.com\u002Fferterahadi-oddle","Shipping well-tested, production-ready, vibe-coded code using today’s latest form of engineering - harness, agentic, loop, graph, or whatever drops next","2026-11-05 11:59:56",{"source":8,"skillName":5,"commands":64,"prompt":74,"zipAvailable":75},[65,68,71],{"tool":66,"command":67},"npx","npx skills add ferterahadi\u002Fcanary-lab --skill canary-lab-export",{"tool":69,"command":70},"bunx","bunx skills add ferterahadi\u002Fcanary-lab --skill canary-lab-export",{"tool":72,"command":73},"pnpm","pnpm dlx skills add ferterahadi\u002Fcanary-lab --skill canary-lab-export","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fferterahadi\u002Fcanary-lab\u002Fblob\u002Fmain\u002Fagent-integrations\u002Fcodex\u002Fskills\u002Fcanary-lab-export\u002FSKILL.md",true,[77],{"path":78,"resourceType":79,"resourceTypeDesc":80,"sizeBytes":81,"sourceHtmlUrl":82},"agents\u002Fopenai.yaml","REFERENCE","参考文档",191,"https:\u002F\u002Fgithub.com\u002Fferterahadi\u002Fcanary-lab\u002Fblob\u002Fmain\u002Fagent-integrations\u002Fcodex\u002Fskills\u002Fcanary-lab-export\u002Fagents\u002Fopenai.yaml",[84,93,103,120,141,159],{"skillNo":85,"name":86,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":87,"categories":88,"keywords":91,"publishedAt":47},"01M6XCWFJ75NNVF0N8C0XGNC17","off-by-one","https:\u002F\u002Fgithub.com\u002Fferterahadi\u002Fcanary-lab\u002Fblob\u002Fmain\u002Fapps\u002Fweb-server\u002Fprompts\u002Fsabotage-skills\u002Foff-by-one\u002Fskill.md",[89,90],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},{"categoryNo":24,"categoryName":25,"taxonomyType":21,"taxonomyTypeDesc":22},[92],"off by one",{"skillNo":94,"name":95,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":96,"categories":97,"keywords":100,"publishedAt":47},"01M6XCWBYW1QHVFKSDQCCRRRDT","multi-failure-cascade","https:\u002F\u002Fgithub.com\u002Fferterahadi\u002Fcanary-lab\u002Fblob\u002Fmain\u002Fapps\u002Fweb-server\u002Fprompts\u002Fsabotage-skills\u002Fmulti-failure-cascade\u002Fskill.md",[98,99],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},{"categoryNo":24,"categoryName":25,"taxonomyType":21,"taxonomyTypeDesc":22},[101,102],"multi","multi failure cascade",{"skillNo":104,"name":105,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":106,"categories":107,"keywords":115,"publishedAt":47},"01M6XCW8XA7QY74Q18D9PGFFMD","broken-delete-contract","https:\u002F\u002Fgithub.com\u002Fferterahadi\u002Fcanary-lab\u002Fblob\u002Fmain\u002Fapps\u002Fweb-server\u002Fprompts\u002Fsabotage-skills\u002Fbroken-delete-contract\u002Fskill.md",[108,109,110],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},{"categoryNo":24,"categoryName":25,"taxonomyType":21,"taxonomyTypeDesc":22},{"categoryNo":111,"categoryName":112,"taxonomyType":113,"taxonomyTypeDesc":114},"01JBSEEDCAT000000000000037","律师与法务","PROFESSION","适用职业",[116,117,118,119],"delete","broken","contract","broken delete contract",{"skillNo":121,"name":122,"nameZh":6,"description":123,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":124,"categories":125,"keywords":128,"publishedAt":47},"01M6XCW439KA486AN2QZACNYTC","canary-lab","Use when the user wants Canary Lab to take a product repo end to end — \"test this app\", \"onboard this repo\", \"run a flight\", \"evaluate what I just built\" — through the flight pipeline (start_flight \u002F get_flight \u002F respond_flight_checkpoint over MCP). One conducted pipeline continues a configured suite or takes bare repo(s) to a green, covered, healed run and publishes a downloadable Report; Parallel setup continues as Canary-owned background work. Use a focused skill only when the user asks for that single capability without asking for a Flight or \u002Fcanary-lab.","https:\u002F\u002Fgithub.com\u002Fferterahadi\u002Fcanary-lab\u002Fblob\u002Fmain\u002Fagent-integrations\u002Fplugin\u002Fcanary-lab\u002Fskills\u002Fcanary-lab\u002FSKILL.md",[126,127],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},{"categoryNo":24,"categoryName":25,"taxonomyType":21,"taxonomyTypeDesc":22},[29,30,27,129,130,131,132,133,134,36,135,136,137,138,139,140,33,42,38,44],"capability","pipeline","work","only","take","green","end","app","respond","suite","product","bare",{"skillNo":142,"name":143,"nameZh":6,"description":144,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":145,"categories":146,"keywords":149,"publishedAt":47},"01M6XCVYQ31KC4ZXCD5QMRKXEE","canary-lab-verify","Use when verifying a Canary Lab feature against a RUNNING target — a deployed environment (\"verify checkout on staging\", \"run the saved verify config\", \"check the deployed app\") or a locally booted app (\"verify a running app\") — through the verify MCP tools (list\u002Fget\u002Fcreate\u002Fupdate_verification_config, boot_services, execute_verification, get_verification_result). No heal loop. For run + heal use canary-lab-run; for end-to-end onboarding use canary-lab (flight).","https:\u002F\u002Fgithub.com\u002Fferterahadi\u002Fcanary-lab\u002Fblob\u002Fmain\u002Fagent-integrations\u002Fplugin\u002Fcanary-lab\u002Fskills\u002Fcanary-lab-verify\u002FSKILL.md",[147,148],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},{"categoryNo":24,"categoryName":25,"taxonomyType":21,"taxonomyTypeDesc":22},[30,150,29,151,27,36,38,152,153,44,154,155,40,156,32,135,136,157,158,33],"verify","canary lab verify","config","create","update","verification","loop","checkout","result",{"skillNo":160,"name":161,"nameZh":6,"description":162,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":163,"categories":164,"keywords":170,"publishedAt":47},"01M6XCVSWW705CN3C69FQMPZXN","canary-lab-run","Use when running or healing an EXISTING Canary Lab feature locally — \"run \u003Cfeature>\", \"fix the failing run\", \"rerun 7cvh\", \"drive the heal loop\" — through the repair MCP tools (start_run, wait_for_heal_task, signal_run, get_heal_context, pause_run, cancel_heal, abort_run). Fix failing runs by editing app\u002Fservice code, not tests. For end-to-end onboarding of a new repo use canary-lab (flight); for deployed-environment checks use canary-lab-verify.","https:\u002F\u002Fgithub.com\u002Fferterahadi\u002Fcanary-lab\u002Fblob\u002Fmain\u002Fagent-integrations\u002Fplugin\u002Fcanary-lab\u002Fskills\u002Fcanary-lab-run\u002FSKILL.md",[165,166,167],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},{"categoryNo":24,"categoryName":25,"taxonomyType":21,"taxonomyTypeDesc":22},{"categoryNo":168,"categoryName":169,"taxonomyType":113,"taxonomyTypeDesc":114},"01JBSEEDCAT000000000000030","开发工程师",[171,27,44,30,29,135,36,172,173,156,40,42,174,38,33,175,176,136,177,178],"canary lab run","fix","context","code","rerun","wait","new repo","failing"]