[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6WM91XC1M1BF950YV33S0D0":3,"skill-same:01M6WM91XC1M1BF950YV33S0D0":73},{"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":18,"publishedAt":37,"linkOnly":38,"markdownContent":39,"markdownBody":40,"frontMatter":41,"refName":45,"commitSha":46,"skillDirectory":47,"forksCount":48,"repositoryHtmlUrl":49,"repositoryHomepageUrl":6,"ownerHtmlUrl":50,"ownerBlogUrl":6,"ownerDescription":51,"updatedAt":52,"install":53,"resources":66},"01M6WM91XC1M1BF950YV33S0D0","measurement-controls",null,"Check a benchmark, A\u002FB or eval metric measures what it claims: control arms, oracles that can fail, pooled correlations, small x\u002FN. Use when setting up an experiment or a metric says improved.","laurigates\u002Fclaude-plugins","laurigates","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F13014001?v=4","01M6C59YHWS9C7KMXKSRX1YXNP","Lauri Gates","01M6C59YP2APG9YAM4DWYQYGFJ",59,"MIT","https:\u002F\u002Fgithub.com\u002Flaurigates\u002Fclaude-plugins\u002Fblob\u002Fmain\u002Ftesting-plugin\u002Fskills\u002Fmeasurement-controls\u002FSKILL.md",[],[19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36],"measurement controls","measurement","controls","2026","benchmark","when","metric","claims","can","it","control","up","experiment","use","read","check","eval","grep","2026-11-10 10:12:30",false,"---\nname: measurement-controls\ndescription: \"Check a benchmark, A\u002FB or eval metric measures what it claims: control arms, oracles that can fail, pooled correlations, small x\u002FN. Use when setting up an experiment or a metric says improved.\"\nallowed-tools: Read, Grep, Glob, TodoWrite\ncreated: 2026-11-06\nmodified: 2026-11-07\nreviewed: 2026-11-06\n---\n\n# Measurement Controls\n\nA measurement fails most expensively when it returns a confident, well-formed\nanswer about something it never observed. Nothing in the run contradicts it,\nso the finding ships. Each numbered section is one way a control, an oracle or a\nmetric produces that answer, and the check that exposes it.\n\n## When to Use This Skill\n\n| Use this skill when... | Use something else when... |\n|---|---|\n| Setting up an A\u002FB, an A\u002FA′, or a \"did X change the output?\" control | Timing a change against a baseline → `benchmark-controls` |\n| An oracle or scorer is about to turn artifacts into verdicts | Auditing whether a green suite tests what it aims at → `test-strategy-review` |\n| A metric says \"improved\" and a person still complains | Finding weak assertions by mutating code → `mutation-testing` |\n| Correlating two variables, or reporting a rate as x\u002FN | A tool's empty result is about to gate an action → `agent-patterns-plugin:tool-result-traps` |\n| Locating a defect in a long artifact (video, audio, logs, rows) | |\n| Claiming an operation is \"lossless\", \"exact\" or \"byte-identical\" | |\n\n## 1. A control's two arms differ only in the variable\n\nA comparison control answers \"did X change the output?\" only while X is the\n**only** difference. If the arms also differ in a label, filename, extra step\nor timestamp, and the compared artifact carries it, the control reports\n\"different\" whatever X did. **A control that cannot fail has not tested\nanything.** Canonical break: a container format that embeds the generating\nparameters makes two files differ unconditionally; hash the decoded stream.\n\n1. **Enumerate what differs between the arms** besides the variable: step\n   counts, labels, output paths, seeds, timestamps, run order.\n2. **Ask whether the compared artifact carries any of it.** Containers,\n   embedded metadata, EXIF and log headers do. Compare decoded content.\n3. **Prove it can report \"same\"**: run A\u002FA′ with the variable removed and\n   confirm an identical digest. If not, every past verdict from it is void.\n4. **Keep the arms otherwise byte-identical**, output prefix included.\n\nTwo gates, not one:\n\n| Gate | Asks |\n|---|---|\n| A == A′ | Can the comparison report \"same\"? (determinism) |\n| B ≠ A **in what the system receives** | Was the variable applied at all? |\n\nDiff the input the system actually receives (the converted request, the\nresolved config), not the source file you edited: a value overridden\ndownstream is inert. Prove the gate refuses a deliberately broken variant.\n\nThe instrument, build-time checks and a few more ways a control lies (stale\nbytecode, a result cache, a test that re-implements its subject, a control\nthat cannot pass) are in [REFERENCE.md](REFERENCE.md#the-instrument-is-an-arm-too).\n\n## 2. Gate the oracle on a known-good case\n\nAn oracle can be wrong in the direction that produces a finding.\n**Before an oracle scores a failure case, make it recover a case already known\nto have succeeded. An instrument no better than chance on the known-good case\ncannot certify a failure anywhere.** The known-good case is usually free: a\nproject chasing a defect has examples where the thing worked.\n\n1. **Name a case known to have worked**, independently of the instrument, and\n   name the channel it is known-good *for*. A case validated on one axis is\n   not validated on another.\n2. **Score it. Require a high hit rate and more than one distinct answer.**\n   An oracle answering one label for everything scores 2\u002F4 on an alternating\n   two-class script by coincidence; without the degeneracy check, 50% reads as\n   borderline-usable when it is a constant.\n3. **Read the raw answer, not the gated verdict.** Scoring only the items the\n   oracle was confident about lets it pass by declining everything it would\n   get wrong.\n4. **Take ground truth from the artifact's own record** (plan, manifest, the\n   input that produced it), never the current tree.\n5. **Refuse in the tool**, not in a comment someone has to remember, and keep\n   a disqualified oracle as a selectable arm: a gate that has only ever passed\n   something has not been shown to discriminate.\n6. **When the oracle reports a surprising negative, re-run the gate** before\n   believing it. A negative from an ungated instrument is a claim about the\n   instrument.\n\n## 3. A pooled correlation or rate can be a grouping artifact\n\nCorrelating over several groups stacked together can produce a large `r` that\nreports only that the groups differ in both variables. **Before believing a\ncorrelation, ask what else varies along with both axes.** Report the\nwithin-group coefficient next to the pooled one.\n\n1. **Name the groups before computing anything**: lines per render, renders\n   per arm, files per repo, runs per machine, warm vs cold.\n2. **Tabulate each group's mean on both axes.** If the groups differ on both,\n   the pooled coefficient is contaminated before you compute it.\n3. **Compute `r` within each group** and report both. A pooled figure alone is\n   not a result.\n4. **Read the intercept.** If the effect is at full strength when the proposed\n   cause is absent, the cause is not the cause.\n5. **Mind the independence.** A surviving within-group `r` at small n is\n   suggestive, never established.\n6. **Record the dead correlation** with its numbers. Omitting it invites its\n   rediscovery. A pre-registered hypothesis protects against fishing, not\n   against confounding.\n\nThe same law for a **rate**: x\u002FN over observations that are not independent\ninflates n by the group size, and lets a systematic failure score partial\ncredit (a constant answer earns 2\u002F4 on an alternating truth).\n\n1. **Print the per-group outcome vector before any ratio** (`A A A A`, not\n   `2\u002F4`). The vector shows the failure mode.\n2. **Ask whether a partial score is reachable.** Classify groups into named\n   states and count states, with a `mixed` bucket you look at. A taxonomy with\n   no escape hatch confirms itself.\n3. **Score a deliberately degenerate arm** (all one label). If it earns more\n   than zero, the metric rewards collapse.\n4. **Label a pooled figure not-for-quoting** where it must still be computed.\n5. **Report n in units of the thing measured once.** Do not state a clean\n   structural rule from a dozen groups; that is the same small-sample error.\n\n## 4. Locate the event by content, not by formula\n\nA probe that computes where to look from an index formula measures whatever\nsits at that index, precisely. **Find the event by scanning for it, then\nmeasure.** An index derived from arithmetic is a hypothesis about the\nartifact's layout.\n\n1. **Name the boundary the report means, in the artifact's own terms**, before\n   measuring. \"The seam\" can have two referents.\n2. **Scan; do not compute.** One pass of a per-step statistic, then `argmax`.\n   It finds the true location and events nobody knew to look for.\n3. **Choose the statistic that matches the phenomenon.** A small change over a\n   large area is caught by area, not amplitude; the wrong one ranks arms in\n   reverse.\n4. **Localise with a picture before quantifying**: a difference map says what\n   changed.\n5. **Sanity-check the located index against the artifact's structure.**\n6. **Sampling is the wrong instrument for a local defect.** A defect that\n   occupies one adjacent pair cannot be found by sampling frames, rows or log\n   lines; scan every pair. Approving from a sample is a claim about the sample,\n   so name which sample. A stated limitation is not a mitigation.\n\nCalibrating with an injected signal, control-testing the failing arm, and\ndiffing by identity: [REFERENCE.md](REFERENCE.md#locating-and-calibrating).\n\n## 5. Measure the quantity that decides the user's verdict\n\nAn evaluator measures one quantity; the user experiences a phenomenon.\n**Before a metric gates work, establish that it measures what decides the\nuser's verdict.** An accurate, well-controlled metric about the wrong half\nmanufactures progress.\n\n1. **Write down the user's verdict procedure before choosing the metric**:\n   what does the person judging this actually do?\n2. **A column that declines most inputs is a coverage failure.** Count the\n   declines and report them next to the headline.\n3. **One human observation outranks any number of runs of an unvalidated\n   instrument.** Where a validation set is unfilled, say so in the result.\n4. **When human and instrument disagree, reconcile; do not pick.** The\n   disagreement points at the quantity nobody measures yet.\n5. **A metric earns authority per axis.** A validation transfers to the axis\n   and the comparison it was taken on (between-arm is weaker than absolute),\n   no further. Say which axis a number is about next to the number.\n6. **After any human review, ask which quantity they just used**, not only\n   whether they agreed with the number.\n\n## 6. Verify each layer against its own stem\n\nA placement check that correlates a source against a mixed result answers \"is\nthis where I put it\" only while the window holds that source alone. **Sum each\nlayer separately and verify each against its own stem.** \"The layers do not\noverlap\" is a property of today's content, not of the checker.\n\n1. **One stem per layer, keyed off each item's layer tag**, not off a\n   hand-maintained exclusion list. The exclusion list is the author having\n   noticed the problem for one case.\n2. **When a check newly fails on something you did not change, suspect the\n   check.**\n3. **Two instruments disagreeing is how you find it**; neither number is\n   trustworthy alone.\n\n## 7. A per-stream guarantee is not a per-file guarantee\n\n\"Lossless\", \"byte-identical\", \"no re-encode\" are claims about one code path,\nand a file carries several streams. **A guarantee is scoped to the stream the\ncode actually copies.** Name which stream, and measure the others.\n\n1. **Name the streams before believing the promise**: video, audio, subtitles,\n   timecode, metadata; or rows, sequences, constraints; or contents, modes,\n   mtimes.\n2. **Measure the stream the promise was not about, by content.** Header\n   durations and metadata are what the buggy path also produced.\n3. **Probe across the range, not at the start.** An accumulating error is\n   invisible at the origin, and the aggregate (total length, row count) passes\n   while every part is wrong. Verify per join.\n4. **Handle both signs** (pad and trim) when fixing a drift.\n5. **Scope the claim in the docstring**: \"video copied byte-for-byte, audio\n   re-encoded once\", never a bare \"lossless\".\n\n## Related\n\n- [REFERENCE.md](REFERENCE.md) — the instrument as an arm, checks that cannot\n  fail, calibration, and where each law bites outside media\n- `benchmark-controls` — timing-specific control hazards\n- `mutation-testing` — the mutation table that proves a check can fail\n- `agent-patterns-plugin:tool-result-traps` — empty or well-formed tool output\n  that is not the answer it looks like\n- `documentation-plugin:docs-claim-hygiene` — writing a measurement down with\n  its scope\n- `code-quality-plugin:code-derived-facts` — guards that must use a looser,\n  independent pattern\n\nDistilled from rules in the laurigates\u002Fcomfyui-nodes repository, whose dated\ninstances (video, audio and attribution experiments) are the provenance for\neach law.\n","# Measurement Controls\n\nA measurement fails most expensively when it returns a confident, well-formed\nanswer about something it never observed. Nothing in the run contradicts it,\nso the finding ships. Each numbered section is one way a control, an oracle or a\nmetric produces that answer, and the check that exposes it.\n\n## When to Use This Skill\n\n| Use this skill when... | Use something else when... |\n|---|---|\n| Setting up an A\u002FB, an A\u002FA′, or a \"did X change the output?\" control | Timing a change against a baseline → `benchmark-controls` |\n| An oracle or scorer is about to turn artifacts into verdicts | Auditing whether a green suite tests what it aims at → `test-strategy-review` |\n| A metric says \"improved\" and a person still complains | Finding weak assertions by mutating code → `mutation-testing` |\n| Correlating two variables, or reporting a rate as x\u002FN | A tool's empty result is about to gate an action → `agent-patterns-plugin:tool-result-traps` |\n| Locating a defect in a long artifact (video, audio, logs, rows) | |\n| Claiming an operation is \"lossless\", \"exact\" or \"byte-identical\" | |\n\n## 1. A control's two arms differ only in the variable\n\nA comparison control answers \"did X change the output?\" only while X is the\n**only** difference. If the arms also differ in a label, filename, extra step\nor timestamp, and the compared artifact carries it, the control reports\n\"different\" whatever X did. **A control that cannot fail has not tested\nanything.** Canonical break: a container format that embeds the generating\nparameters makes two files differ unconditionally; hash the decoded stream.\n\n1. **Enumerate what differs between the arms** besides the variable: step\n   counts, labels, output paths, seeds, timestamps, run order.\n2. **Ask whether the compared artifact carries any of it.** Containers,\n   embedded metadata, EXIF and log headers do. Compare decoded content.\n3. **Prove it can report \"same\"**: run A\u002FA′ with the variable removed and\n   confirm an identical digest. If not, every past verdict from it is void.\n4. **Keep the arms otherwise byte-identical**, output prefix included.\n\nTwo gates, not one:\n\n| Gate | Asks |\n|---|---|\n| A == A′ | Can the comparison report \"same\"? (determinism) |\n| B ≠ A **in what the system receives** | Was the variable applied at all? |\n\nDiff the input the system actually receives (the converted request, the\nresolved config), not the source file you edited: a value overridden\ndownstream is inert. Prove the gate refuses a deliberately broken variant.\n\nThe instrument, build-time checks and a few more ways a control lies (stale\nbytecode, a result cache, a test that re-implements its subject, a control\nthat cannot pass) are in [REFERENCE.md](REFERENCE.md#the-instrument-is-an-arm-too).\n\n## 2. Gate the oracle on a known-good case\n\nAn oracle can be wrong in the direction that produces a finding.\n**Before an oracle scores a failure case, make it recover a case already known\nto have succeeded. An instrument no better than chance on the known-good case\ncannot certify a failure anywhere.** The known-good case is usually free: a\nproject chasing a defect has examples where the thing worked.\n\n1. **Name a case known to have worked**, independently of the instrument, and\n   name the channel it is known-good *for*. A case validated on one axis is\n   not validated on another.\n2. **Score it. Require a high hit rate and more than one distinct answer.**\n   An oracle answering one label for everything scores 2\u002F4 on an alternating\n   two-class script by coincidence; without the degeneracy check, 50% reads as\n   borderline-usable when it is a constant.\n3. **Read the raw answer, not the gated verdict.** Scoring only the items the\n   oracle was confident about lets it pass by declining everything it would\n   get wrong.\n4. **Take ground truth from the artifact's own record** (plan, manifest, the\n   input that produced it), never the current tree.\n5. **Refuse in the tool**, not in a comment someone has to remember, and keep\n   a disqualified oracle as a selectable arm: a gate that has only ever passed\n   something has not been shown to discriminate.\n6. **When the oracle reports a surprising negative, re-run the gate** before\n   believing it. A negative from an ungated instrument is a claim about the\n   instrument.\n\n## 3. A pooled correlation or rate can be a grouping artifact\n\nCorrelating over several groups stacked together can produce a large `r` that\nreports only that the groups differ in both variables. **Before believing a\ncorrelation, ask what else varies along with both axes.** Report the\nwithin-group coefficient next to the pooled one.\n\n1. **Name the groups before computing anything**: lines per render, renders\n   per arm, files per repo, runs per machine, warm vs cold.\n2. **Tabulate each group's mean on both axes.** If the groups differ on both,\n   the pooled coefficient is contaminated before you compute it.\n3. **Compute `r` within each group** and report both. A pooled figure alone is\n   not a result.\n4. **Read the intercept.** If the effect is at full strength when the proposed\n   cause is absent, the cause is not the cause.\n5. **Mind the independence.** A surviving within-group `r` at small n is\n   suggestive, never established.\n6. **Record the dead correlation** with its numbers. Omitting it invites its\n   rediscovery. A pre-registered hypothesis protects against fishing, not\n   against confounding.\n\nThe same law for a **rate**: x\u002FN over observations that are not independent\ninflates n by the group size, and lets a systematic failure score partial\ncredit (a constant answer earns 2\u002F4 on an alternating truth).\n\n1. **Print the per-group outcome vector before any ratio** (`A A A A`, not\n   `2\u002F4`). The vector shows the failure mode.\n2. **Ask whether a partial score is reachable.** Classify groups into named\n   states and count states, with a `mixed` bucket you look at. A taxonomy with\n   no escape hatch confirms itself.\n3. **Score a deliberately degenerate arm** (all one label). If it earns more\n   than zero, the metric rewards collapse.\n4. **Label a pooled figure not-for-quoting** where it must still be computed.\n5. **Report n in units of the thing measured once.** Do not state a clean\n   structural rule from a dozen groups; that is the same small-sample error.\n\n## 4. Locate the event by content, not by formula\n\nA probe that computes where to look from an index formula measures whatever\nsits at that index, precisely. **Find the event by scanning for it, then\nmeasure.** An index derived from arithmetic is a hypothesis about the\nartifact's layout.\n\n1. **Name the boundary the report means, in the artifact's own terms**, before\n   measuring. \"The seam\" can have two referents.\n2. **Scan; do not compute.** One pass of a per-step statistic, then `argmax`.\n   It finds the true location and events nobody knew to look for.\n3. **Choose the statistic that matches the phenomenon.** A small change over a\n   large area is caught by area, not amplitude; the wrong one ranks arms in\n   reverse.\n4. **Localise with a picture before quantifying**: a difference map says what\n   changed.\n5. **Sanity-check the located index against the artifact's structure.**\n6. **Sampling is the wrong instrument for a local defect.** A defect that\n   occupies one adjacent pair cannot be found by sampling frames, rows or log\n   lines; scan every pair. Approving from a sample is a claim about the sample,\n   so name which sample. A stated limitation is not a mitigation.\n\nCalibrating with an injected signal, control-testing the failing arm, and\ndiffing by identity: [REFERENCE.md](REFERENCE.md#locating-and-calibrating).\n\n## 5. Measure the quantity that decides the user's verdict\n\nAn evaluator measures one quantity; the user experiences a phenomenon.\n**Before a metric gates work, establish that it measures what decides the\nuser's verdict.** An accurate, well-controlled metric about the wrong half\nmanufactures progress.\n\n1. **Write down the user's verdict procedure before choosing the metric**:\n   what does the person judging this actually do?\n2. **A column that declines most inputs is a coverage failure.** Count the\n   declines and report them next to the headline.\n3. **One human observation outranks any number of runs of an unvalidated\n   instrument.** Where a validation set is unfilled, say so in the result.\n4. **When human and instrument disagree, reconcile; do not pick.** The\n   disagreement points at the quantity nobody measures yet.\n5. **A metric earns authority per axis.** A validation transfers to the axis\n   and the comparison it was taken on (between-arm is weaker than absolute),\n   no further. Say which axis a number is about next to the number.\n6. **After any human review, ask which quantity they just used**, not only\n   whether they agreed with the number.\n\n## 6. Verify each layer against its own stem\n\nA placement check that correlates a source against a mixed result answers \"is\nthis where I put it\" only while the window holds that source alone. **Sum each\nlayer separately and verify each against its own stem.** \"The layers do not\noverlap\" is a property of today's content, not of the checker.\n\n1. **One stem per layer, keyed off each item's layer tag**, not off a\n   hand-maintained exclusion list. The exclusion list is the author having\n   noticed the problem for one case.\n2. **When a check newly fails on something you did not change, suspect the\n   check.**\n3. **Two instruments disagreeing is how you find it**; neither number is\n   trustworthy alone.\n\n## 7. A per-stream guarantee is not a per-file guarantee\n\n\"Lossless\", \"byte-identical\", \"no re-encode\" are claims about one code path,\nand a file carries several streams. **A guarantee is scoped to the stream the\ncode actually copies.** Name which stream, and measure the others.\n\n1. **Name the streams before believing the promise**: video, audio, subtitles,\n   timecode, metadata; or rows, sequences, constraints; or contents, modes,\n   mtimes.\n2. **Measure the stream the promise was not about, by content.** Header\n   durations and metadata are what the buggy path also produced.\n3. **Probe across the range, not at the start.** An accumulating error is\n   invisible at the origin, and the aggregate (total length, row count) passes\n   while every part is wrong. Verify per join.\n4. **Handle both signs** (pad and trim) when fixing a drift.\n5. **Scope the claim in the docstring**: \"video copied byte-for-byte, audio\n   re-encoded once\", never a bare \"lossless\".\n\n## Related\n\n- [REFERENCE.md](REFERENCE.md) — the instrument as an arm, checks that cannot\n  fail, calibration, and where each law bites outside media\n- `benchmark-controls` — timing-specific control hazards\n- `mutation-testing` — the mutation table that proves a check can fail\n- `agent-patterns-plugin:tool-result-traps` — empty or well-formed tool output\n  that is not the answer it looks like\n- `documentation-plugin:docs-claim-hygiene` — writing a measurement down with\n  its scope\n- `code-quality-plugin:code-derived-facts` — guards that must use a looser,\n  independent pattern\n\nDistilled from rules in the laurigates\u002Fcomfyui-nodes repository, whose dated\ninstances (video, audio and attribution experiments) are the provenance for\neach law.\n",{"name":5,"created":42,"modified":43,"reviewed":42,"description":7,"allowed-tools":44},1793923200000,1794009600000,"Read, Grep, Glob, TodoWrite","main","9d783554148f9c8a9c55a486b480760d3da673e6","testing-plugin\u002Fskills\u002Fmeasurement-controls",6,"https:\u002F\u002Fgithub.com\u002Flaurigates\u002Fclaude-plugins","https:\u002F\u002Fgithub.com\u002Flaurigates","Linux enthusiast, cloud engineer, neovim addict, electronics hobbyist.","2026-11-13 03:22:01",{"source":8,"skillName":5,"commands":54,"prompt":64,"zipAvailable":65},[55,58,61],{"tool":56,"command":57},"npx","npx skills add laurigates\u002Fclaude-plugins --skill measurement-controls",{"tool":59,"command":60},"bunx","bunx skills add laurigates\u002Fclaude-plugins --skill measurement-controls",{"tool":62,"command":63},"pnpm","pnpm dlx skills add laurigates\u002Fclaude-plugins --skill measurement-controls","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Flaurigates\u002Fclaude-plugins\u002Fblob\u002Fmain\u002Ftesting-plugin\u002Fskills\u002Fmeasurement-controls\u002FSKILL.md",true,[67],{"path":68,"resourceType":69,"resourceTypeDesc":70,"sizeBytes":71,"sourceHtmlUrl":72},"REFERENCE.md","REFERENCE","参考文档",7418,"https:\u002F\u002Fgithub.com\u002Flaurigates\u002Fclaude-plugins\u002Fblob\u002Fmain\u002Ftesting-plugin\u002Fskills\u002Fmeasurement-controls\u002FREFERENCE.md",[74,102,123,138,160,190],{"skillNo":75,"name":76,"nameZh":6,"description":77,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":78,"categories":79,"keywords":85,"publishedAt":37},"01M70PFHMH9ADY0CRE6047Y4B2","kitty-show-image","Show the user an image with a note on what to judge, via a file send or a labelled kitty tab. Use when the user must see an image, or icat fails with no \u002Fdev\u002Ftty.","https:\u002F\u002Fgithub.com\u002Flaurigates\u002Fclaude-plugins\u002Fblob\u002Fmain\u002Fkitty-plugin\u002Fskills\u002Fkitty-show-image\u002FSKILL.md",[80],{"categoryNo":81,"categoryName":82,"taxonomyType":83,"taxonomyTypeDesc":84},"01JBSEEDCAT000000000000016","图像与多媒体","SCENARIO","使用场景",[86,87,88,89,90,91,92,93,94,95,32,24,96,97,98,99,100,101,22,33],"show","kitty show image","image","kitty","show image","ls","get","send","open","dev","Bash","file","text","with","xdg","via",{"skillNo":103,"name":104,"nameZh":6,"description":105,"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":108,"publishedAt":37},"01M70PFEN18HKQ4RCQ1VPGMPTB","kitty-session-persistence","Snapshot and restore kitty terminal sessions on macOS. Use when surviving WindowServer hangs without losing tabs, configuring snapshots, or restoring after a force-reboot.","https:\u002F\u002Fgithub.com\u002Flaurigates\u002Fclaude-plugins\u002Fblob\u002Fmain\u002Fkitty-plugin\u002Fskills\u002Fkitty-session-persistence\u002FSKILL.md",[],[89,109,110,111,112,113,24,96,114,115,116,22,33,117,118,119,120,121,122,32],"kitty session persistence","session","persistence","false","snapshots","uname","reboot","terminal","write","edit","snapshot","macos","sessions","restore",{"skillNo":124,"name":125,"nameZh":6,"description":126,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":127,"categories":128,"keywords":129,"publishedAt":37},"01M70PFC77XGXCVQ1543VGZHYR","kitty-remote-control","Safe kitty remote control from an agent — read panes with kitty @ ls\u002Fget-text, notify, and never mutate the live terminal unasked. Use when running inside kitty.","https:\u002F\u002Fgithub.com\u002Flaurigates\u002Fclaude-plugins\u002Fblob\u002Fmain\u002Fkitty-plugin\u002Fskills\u002Fkitty-remote-control\u002FSKILL.md",[],[130,131,89,29,132,91,133,134,92,135,136,32,24,137,96,98,99,116,22,33],"kitty remote control","remote","remote control","running","never","panes","notify","query",{"skillNo":139,"name":140,"nameZh":6,"description":141,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":142,"categories":143,"keywords":144,"publishedAt":37},"01M70P6WVMCT5JG4SACTM69AF9","docs-reference-check","Dangling doc-reference gate: flag markdown naming repo paths or relative links that no longer exist. Use when docs cite moved\u002Fdeleted files, or wiring a doc-drift lint.","https:\u002F\u002Fgithub.com\u002Flaurigates\u002Fclaude-plugins\u002Fblob\u002Fmain\u002Fdocumentation-plugin\u002Fskills\u002Fdocs-reference-check\u002FSKILL.md",[],[145,34,146,147,148,149,150,151,152,153,32,24,96,154,97,155,156,157,158,159],"docs reference check","reference check","reference","docs","links","python3","repo","files","auto","drift","lint","wiring","chezmoi","references","cp",{"skillNo":161,"name":162,"nameZh":6,"description":163,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":164,"categories":165,"keywords":175,"publishedAt":37},"01M6C6NDE7DAQGNWSF22J5CJ0Z","youtube-upload","Upload a video to YouTube via the Data API v3 and edit its title, description, tags or thumbnail afterwards. Use when publishing or retitling a YouTube video.","https:\u002F\u002Fgithub.com\u002Flaurigates\u002Fclaude-plugins\u002Fblob\u002Fmain\u002Fyoutube-plugin\u002Fskills\u002Fyoutube-upload\u002FSKILL.md",[166,169,170],{"categoryNo":167,"categoryName":168,"taxonomyType":83,"taxonomyTypeDesc":84},"01JBSEEDCAT000000000000010","后端与接口",{"categoryNo":81,"categoryName":82,"taxonomyType":83,"taxonomyTypeDesc":84},{"categoryNo":171,"categoryName":172,"taxonomyType":173,"taxonomyTypeDesc":174},"01JBSEEDCAT000000000000030","开发工程师","PROFESSION","适用职业",[176,177,178,179,150,180,33,181,118,182,183,184,32,96,97,185,186,24,187,188,189,101,22],"youtube upload","upload","youtube","Video","run","uv run","publishing","data","uv","api","v3","tags","id","title",{"skillNo":191,"name":192,"nameZh":6,"description":193,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":194,"categories":195,"keywords":199,"publishedAt":37},"01M6C6NABWW1X58KJJM4F6GQMQ","youtube-studio-share","Share a private YouTube video with a whole Google Workspace organization by scripting YouTube Studio in the browser. Use when a video must be org-only.","https:\u002F\u002Fgithub.com\u002Flaurigates\u002Fclaude-plugins\u002Fblob\u002Fmain\u002Fyoutube-plugin\u002Fskills\u002Fyoutube-studio-share\u002FSKILL.md",[196],{"categoryNo":197,"categoryName":198,"taxonomyType":83,"taxonomyTypeDesc":84},"01JBSEEDCAT000000000000023","Skill与智能体开发",[200,201,202,203,178,179,204,205,206,207,208,33,209,210,211,212,32,213,24,99,214,22],"youtube studio share","share","youtube studio","studio","browser","javascript","scripting","google workspace","workspace","tool","google","only","MCP","chrome","organization"]