[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M7CVVC18TGAYQYYZAZVT0EX0":3,"skill-same:01M7CVVC18TGAYQYYZAZVT0EX0":158},{"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":19,"linkOnly":20,"markdownContent":21,"markdownBody":22,"frontMatter":23,"refName":24,"commitSha":25,"skillDirectory":26,"forksCount":14,"repositoryHtmlUrl":27,"repositoryHomepageUrl":6,"ownerHtmlUrl":28,"ownerBlogUrl":29,"ownerDescription":6,"updatedAt":30,"install":31,"resources":44},"01M7CVVC18TGAYQYYZAZVT0EX0","pr-review",null,"Reviews a GitHub or Azure DevOps Pull Request against the thruput-io rules in this repository's `rules\u002FRules.yaml`, published at https:\u002F\u002Fthruput.se\u002Fagents\u002F, and posts the review as inline comments on the correct lines. Distinct from the built-in `\u002Freview` skill in that it (a) probes the rules in subagents, one per rule group, (b) cites each violation by the rule's id and published URL, and (c) groups all inline comments into one review where the host allows it, rather than posting N individual comments. Trigger when the user provides a PR URL or asks for a rules-driven PR review.","thruput-io\u002Fagents","thruput-io","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F206518468?v=4","01M7CVV3D8Y6WZF9WHP5GVDP48","thruput.io","01M7CVV3EBFXRT2Y6SHGH8TPZ4",0,"Apache-2.0","https:\u002F\u002Fgithub.com\u002Fthruput-io\u002Fagents\u002Fblob\u002Fmain\u002Fskills\u002Fpr-review\u002FSKILL.md",[],[],"2026-11-15 14:19:17",false,"---\nname: pr-review\ndescription: Reviews a GitHub or Azure DevOps Pull Request against the thruput-io rules in this repository's `rules\u002FRules.yaml`, published at https:\u002F\u002Fthruput.se\u002Fagents\u002F, and posts the review as inline comments on the correct lines. Distinct from the built-in `\u002Freview` skill in that it (a) probes the rules in subagents, one per rule group, (b) cites each violation by the rule's id and published URL, and (c) groups all inline comments into one review where the host allows it, rather than posting N individual comments. Trigger when the user provides a PR URL or asks for a rules-driven PR review.\n---\n\n# PR Review Skill\n\nRead [`CODE_REVIEW.md`](CODE_REVIEW.md) and follow it. It is the source of truth for both what to review and how to execute the review. Two scripts do the parts a model must not be trusted with: `scripts\u002Fprepare.mjs` resolves the pull request once, downloads the repository at the head commit, computes the change set and the lines under review, reads the changed files once and hands each as fragments, and writes one instructions file per probe; `scripts\u002Fcheck.mjs` is the command each probe runs on its own ledger, and applies every check the review will; `scripts\u002Freview.mjs` runs the same checks on every ledger, refuses any that does not answer its instructions row for row, then builds and posts the review from the ledgers alone.\n\nThe rules it serves are the entries of [`rules\u002FRules.yaml`](rules\u002FRules.yaml); the `[[term]]`s they name are defined in [`rules\u002FDefinitions.yaml`](rules\u002FDefinitions.yaml), and their parents in [`rules\u002FPrinciples.yaml`](rules\u002FPrinciples.yaml). `prepare.mjs` reads them, once, from `${CLAUDE_SKILL_DIR}\u002Frules\u002F`: the rules this skill was installed with, linked into the skill from this repository's `rules\u002F`. A violation is posted as breaking the principle its rule protects, linked to that principle's anchor on https:\u002F\u002Fthruput.se\u002Fagents\u002F.\n\nIt dispatches one subagent per instructions file, as [`CODE_REVIEW.md` step 2](CODE_REVIEW.md#2-probe) sets out. What a subagent does is fixed by constants in the schema of that file, `instructions` for every probe and `task` for each kind, which every file carries; `prepare.mjs` populates the rest, so there is no prompt to write and no schema to hand over. The file and one fixed message are the only channel to a probe: the reviewing context never adds to it, so what a probe is told is the same on every run. Every subagent is the plugin's `probe` agent, defined in [`agents\u002Fprobe.md`](..\u002F..\u002Fagents\u002Fprobe.md): it loads no CLAUDE.md, so nothing but its file tells it what to do. It runs on the cheapest model available; the context subagent is dispatched on the most capable one. What crosses between the reviewing context, a probe, and the review is shaped by the schemas published under `https:\u002F\u002Fthruput.se\u002Fagents\u002Fschemas\u002Freview\u002F`: the change set, the fragments a changed file is handed as, the instructions a probe receives, the ledger its rows go into, and each violation in it. Validate against them rather than reading a shape off this prose.\n\nThe escalation index is bundled under `references\u002F`; `prepare.mjs` downloads every ruleset it names, once, and hands them to the escalation probe.\n\nThe host is folded at the perimeter: one adapter per host beside the scripts, `scripts\u002Fgithub.mjs`, `scripts\u002Fazure-devops.mjs`, and `scripts\u002Fgit.mjs`, each written against the host's published API description under [`references\u002Fhosts\u002F`](references\u002Fhosts\u002F). Nothing else in the skill names a host. The cheat sheets under `references\u002F` describe the hosts for a reader; the scripts do not read them.\n\n## Requirements\n\n- `node` and `tar`; the scripts fetch their other tools with `npx`.\n- For a GitHub pull request, `gh`; for an Azure DevOps pull request, `az` with the `azure-devops` extension and `git`; for a change in a plain repository, `git`. Each is used as it stands in the environment.\n- The rules: `rules\u002F` in the skill, links to this repository's rules and what they rest on, up to the axioms, which resolve on macOS and Linux.\n- Network access to `raw.githubusercontent.com\u002Fciembor\u002Fagent-rules-books`, from which `prepare.mjs` downloads the escalation rulesets.\n\n## Files\n\n- `CODE_REVIEW.md` — the review process.\n- `scripts\u002Fprepare.mjs`, `scripts\u002Freview.mjs` — the two commands the process runs; `scripts\u002Fcheck.mjs` the command a probe runs on its ledger, which `review.mjs` reuses; `scripts\u002Flib.mjs` holds their host-neutral logic and `scripts\u002Fgithub.mjs`, `scripts\u002Fazure-devops.mjs`, `scripts\u002Fgit.mjs` the adapters, each tested beside it.\n- `references\u002Fhosts\u002F` — the hosts' published API descriptions the adapters are written against: GitHub's REST OpenAPI description and GraphQL schema, Azure DevOps' Git and Policy specifications. Refresh with:\n\n      curl -sSL -o references\u002Fhosts\u002Fgithub.openapi.json https:\u002F\u002Fraw.githubusercontent.com\u002Fgithub\u002Frest-api-description\u002Fmain\u002Fdescriptions\u002Fapi.github.com\u002Fapi.github.com.json\n      curl -sSL -o references\u002Fhosts\u002Fgithub.graphql https:\u002F\u002Fdocs.github.com\u002Fpublic\u002Ffpt\u002Fschema.docs.graphql\n      curl -sSL -o references\u002Fhosts\u002Fazure-devops-git.json https:\u002F\u002Fraw.githubusercontent.com\u002FMicrosoftDocs\u002Fvsts-rest-api-specs\u002Fmaster\u002Fspecification\u002Fgit\u002F7.1\u002Fgit.json\n      curl -sSL -o references\u002Fhosts\u002Fazure-devops-policy.json https:\u002F\u002Fraw.githubusercontent.com\u002FMicrosoftDocs\u002Fvsts-rest-api-specs\u002Fmaster\u002Fspecification\u002Fpolicy\u002F7.1\u002Fpolicy.json\n\n- `rules\u002F`, `schemas\u002F` — this repository's rules and schemas, linked into the skill.\n- `https:\u002F\u002Fthruput.se\u002Fagents\u002Fschemas\u002Freview\u002F` — the shapes the process passes around, from this repository's `schemas\u002Freview\u002F`: the change set, the fragments, the review, the rulebook, the instructions for each kind of probe, the threads, the outcome, the ledger, and the violation.\n- `references\u002Fagent-rules-books-INDEX.md`, `references\u002Fagent-rules-books-search-index.json` — escalation index, byte-for-byte mirrors of the handbook's `references\u002F`. Refresh with:\n\n      for f in agent-rules-books-INDEX.md agent-rules-books-search-index.json; do\n        gh api \"repos\u002Fthruput-io\u002Fhandbook\u002Fcontents\u002Freferences\u002F$f\" --jq '.content' | base64 -d > \"references\u002F$f\"\n      done\n\n- `references\u002Fgh-cheat-sheet.md`, `references\u002Faz-cheat-sheet.md` — host cheat sheets for filing review comments and interacting with GitHub and Azure DevOps PRs.\n","# PR Review Skill\n\nRead [`CODE_REVIEW.md`](CODE_REVIEW.md) and follow it. It is the source of truth for both what to review and how to execute the review. Two scripts do the parts a model must not be trusted with: `scripts\u002Fprepare.mjs` resolves the pull request once, downloads the repository at the head commit, computes the change set and the lines under review, reads the changed files once and hands each as fragments, and writes one instructions file per probe; `scripts\u002Fcheck.mjs` is the command each probe runs on its own ledger, and applies every check the review will; `scripts\u002Freview.mjs` runs the same checks on every ledger, refuses any that does not answer its instructions row for row, then builds and posts the review from the ledgers alone.\n\nThe rules it serves are the entries of [`rules\u002FRules.yaml`](rules\u002FRules.yaml); the `[[term]]`s they name are defined in [`rules\u002FDefinitions.yaml`](rules\u002FDefinitions.yaml), and their parents in [`rules\u002FPrinciples.yaml`](rules\u002FPrinciples.yaml). `prepare.mjs` reads them, once, from `${CLAUDE_SKILL_DIR}\u002Frules\u002F`: the rules this skill was installed with, linked into the skill from this repository's `rules\u002F`. A violation is posted as breaking the principle its rule protects, linked to that principle's anchor on https:\u002F\u002Fthruput.se\u002Fagents\u002F.\n\nIt dispatches one subagent per instructions file, as [`CODE_REVIEW.md` step 2](CODE_REVIEW.md#2-probe) sets out. What a subagent does is fixed by constants in the schema of that file, `instructions` for every probe and `task` for each kind, which every file carries; `prepare.mjs` populates the rest, so there is no prompt to write and no schema to hand over. The file and one fixed message are the only channel to a probe: the reviewing context never adds to it, so what a probe is told is the same on every run. Every subagent is the plugin's `probe` agent, defined in [`agents\u002Fprobe.md`](..\u002F..\u002Fagents\u002Fprobe.md): it loads no CLAUDE.md, so nothing but its file tells it what to do. It runs on the cheapest model available; the context subagent is dispatched on the most capable one. What crosses between the reviewing context, a probe, and the review is shaped by the schemas published under `https:\u002F\u002Fthruput.se\u002Fagents\u002Fschemas\u002Freview\u002F`: the change set, the fragments a changed file is handed as, the instructions a probe receives, the ledger its rows go into, and each violation in it. Validate against them rather than reading a shape off this prose.\n\nThe escalation index is bundled under `references\u002F`; `prepare.mjs` downloads every ruleset it names, once, and hands them to the escalation probe.\n\nThe host is folded at the perimeter: one adapter per host beside the scripts, `scripts\u002Fgithub.mjs`, `scripts\u002Fazure-devops.mjs`, and `scripts\u002Fgit.mjs`, each written against the host's published API description under [`references\u002Fhosts\u002F`](references\u002Fhosts\u002F). Nothing else in the skill names a host. The cheat sheets under `references\u002F` describe the hosts for a reader; the scripts do not read them.\n\n## Requirements\n\n- `node` and `tar`; the scripts fetch their other tools with `npx`.\n- For a GitHub pull request, `gh`; for an Azure DevOps pull request, `az` with the `azure-devops` extension and `git`; for a change in a plain repository, `git`. Each is used as it stands in the environment.\n- The rules: `rules\u002F` in the skill, links to this repository's rules and what they rest on, up to the axioms, which resolve on macOS and Linux.\n- Network access to `raw.githubusercontent.com\u002Fciembor\u002Fagent-rules-books`, from which `prepare.mjs` downloads the escalation rulesets.\n\n## Files\n\n- `CODE_REVIEW.md` — the review process.\n- `scripts\u002Fprepare.mjs`, `scripts\u002Freview.mjs` — the two commands the process runs; `scripts\u002Fcheck.mjs` the command a probe runs on its ledger, which `review.mjs` reuses; `scripts\u002Flib.mjs` holds their host-neutral logic and `scripts\u002Fgithub.mjs`, `scripts\u002Fazure-devops.mjs`, `scripts\u002Fgit.mjs` the adapters, each tested beside it.\n- `references\u002Fhosts\u002F` — the hosts' published API descriptions the adapters are written against: GitHub's REST OpenAPI description and GraphQL schema, Azure DevOps' Git and Policy specifications. Refresh with:\n\n      curl -sSL -o references\u002Fhosts\u002Fgithub.openapi.json https:\u002F\u002Fraw.githubusercontent.com\u002Fgithub\u002Frest-api-description\u002Fmain\u002Fdescriptions\u002Fapi.github.com\u002Fapi.github.com.json\n      curl -sSL -o references\u002Fhosts\u002Fgithub.graphql https:\u002F\u002Fdocs.github.com\u002Fpublic\u002Ffpt\u002Fschema.docs.graphql\n      curl -sSL -o references\u002Fhosts\u002Fazure-devops-git.json https:\u002F\u002Fraw.githubusercontent.com\u002FMicrosoftDocs\u002Fvsts-rest-api-specs\u002Fmaster\u002Fspecification\u002Fgit\u002F7.1\u002Fgit.json\n      curl -sSL -o references\u002Fhosts\u002Fazure-devops-policy.json https:\u002F\u002Fraw.githubusercontent.com\u002FMicrosoftDocs\u002Fvsts-rest-api-specs\u002Fmaster\u002Fspecification\u002Fpolicy\u002F7.1\u002Fpolicy.json\n\n- `rules\u002F`, `schemas\u002F` — this repository's rules and schemas, linked into the skill.\n- `https:\u002F\u002Fthruput.se\u002Fagents\u002Fschemas\u002Freview\u002F` — the shapes the process passes around, from this repository's `schemas\u002Freview\u002F`: the change set, the fragments, the review, the rulebook, the instructions for each kind of probe, the threads, the outcome, the ledger, and the violation.\n- `references\u002Fagent-rules-books-INDEX.md`, `references\u002Fagent-rules-books-search-index.json` — escalation index, byte-for-byte mirrors of the handbook's `references\u002F`. Refresh with:\n\n      for f in agent-rules-books-INDEX.md agent-rules-books-search-index.json; do\n        gh api \"repos\u002Fthruput-io\u002Fhandbook\u002Fcontents\u002Freferences\u002F$f\" --jq '.content' | base64 -d > \"references\u002F$f\"\n      done\n\n- `references\u002Fgh-cheat-sheet.md`, `references\u002Faz-cheat-sheet.md` — host cheat sheets for filing review comments and interacting with GitHub and Azure DevOps PRs.\n",{"name":5,"description":7},"main","5680eea7f5297718cb633a8f96b3c593599b9887","skills\u002Fpr-review","https:\u002F\u002Fgithub.com\u002Fthruput-io\u002Fagents","https:\u002F\u002Fgithub.com\u002Fthruput-io","https:\u002F\u002Fthruput.se\u002F","2026-11-14 22:55:44",{"source":8,"skillName":5,"commands":32,"prompt":42,"zipAvailable":43},[33,36,39],{"tool":34,"command":35},"npx","npx skills add thruput-io\u002Fagents --skill pr-review",{"tool":37,"command":38},"bunx","bunx skills add thruput-io\u002Fagents --skill pr-review",{"tool":40,"command":41},"pnpm","pnpm dlx skills add thruput-io\u002Fagents --skill pr-review","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fthruput-io\u002Fagents\u002Fblob\u002Fmain\u002Fskills\u002Fpr-review\u002FSKILL.md",true,[45,51,55,59,63,67,71,75,79,83,87,91,95,98,102,108,114,118,122,126,130,134,138,142,146,150,154],{"path":46,"resourceType":47,"resourceTypeDesc":48,"sizeBytes":49,"sourceHtmlUrl":50},"CODE_REVIEW.md","REFERENCE","参考文档",4691,"https:\u002F\u002Fgithub.com\u002Fthruput-io\u002Fagents\u002Fblob\u002Fmain\u002Fskills\u002Fpr-review\u002FCODE_REVIEW.md",{"path":52,"resourceType":47,"resourceTypeDesc":48,"sizeBytes":53,"sourceHtmlUrl":54},"references\u002Fagent-rules-books-INDEX.md",8766,"https:\u002F\u002Fgithub.com\u002Fthruput-io\u002Fagents\u002Fblob\u002Fmain\u002Fskills\u002Fpr-review\u002Freferences\u002Fagent-rules-books-INDEX.md",{"path":56,"resourceType":47,"resourceTypeDesc":48,"sizeBytes":57,"sourceHtmlUrl":58},"references\u002Fagent-rules-books-search-index.json",8189,"https:\u002F\u002Fgithub.com\u002Fthruput-io\u002Fagents\u002Fblob\u002Fmain\u002Fskills\u002Fpr-review\u002Freferences\u002Fagent-rules-books-search-index.json",{"path":60,"resourceType":47,"resourceTypeDesc":48,"sizeBytes":61,"sourceHtmlUrl":62},"references\u002Faz-cheat-sheet.md",17349,"https:\u002F\u002Fgithub.com\u002Fthruput-io\u002Fagents\u002Fblob\u002Fmain\u002Fskills\u002Fpr-review\u002Freferences\u002Faz-cheat-sheet.md",{"path":64,"resourceType":47,"resourceTypeDesc":48,"sizeBytes":65,"sourceHtmlUrl":66},"references\u002Fgh-cheat-sheet.md",2613,"https:\u002F\u002Fgithub.com\u002Fthruput-io\u002Fagents\u002Fblob\u002Fmain\u002Fskills\u002Fpr-review\u002Freferences\u002Fgh-cheat-sheet.md",{"path":68,"resourceType":47,"resourceTypeDesc":48,"sizeBytes":69,"sourceHtmlUrl":70},"references\u002Fhosts\u002Fazure-devops-git.json",530489,"https:\u002F\u002Fgithub.com\u002Fthruput-io\u002Fagents\u002Fblob\u002Fmain\u002Fskills\u002Fpr-review\u002Freferences\u002Fhosts\u002Fazure-devops-git.json",{"path":72,"resourceType":47,"resourceTypeDesc":48,"sizeBytes":73,"sourceHtmlUrl":74},"references\u002Fhosts\u002Fazure-devops-policy.json",38415,"https:\u002F\u002Fgithub.com\u002Fthruput-io\u002Fagents\u002Fblob\u002Fmain\u002Fskills\u002Fpr-review\u002Freferences\u002Fhosts\u002Fazure-devops-policy.json",{"path":76,"resourceType":47,"resourceTypeDesc":48,"sizeBytes":77,"sourceHtmlUrl":78},"references\u002Fhosts\u002Fgithub.graphql",1558210,"https:\u002F\u002Fgithub.com\u002Fthruput-io\u002Fagents\u002Fblob\u002Fmain\u002Fskills\u002Fpr-review\u002Freferences\u002Fhosts\u002Fgithub.graphql",{"path":80,"resourceType":47,"resourceTypeDesc":48,"sizeBytes":81,"sourceHtmlUrl":82},"references\u002Fhosts\u002Fgithub.openapi.json",13014127,"https:\u002F\u002Fgithub.com\u002Fthruput-io\u002Fagents\u002Fblob\u002Fmain\u002Fskills\u002Fpr-review\u002Freferences\u002Fhosts\u002Fgithub.openapi.json",{"path":84,"resourceType":47,"resourceTypeDesc":48,"sizeBytes":85,"sourceHtmlUrl":86},"rules\u002FAxioms.yaml",26,"https:\u002F\u002Fgithub.com\u002Fthruput-io\u002Fagents\u002Fblob\u002Fmain\u002Fskills\u002Fpr-review\u002Frules\u002FAxioms.yaml",{"path":88,"resourceType":47,"resourceTypeDesc":48,"sizeBytes":89,"sourceHtmlUrl":90},"rules\u002FDefinitions.yaml",31,"https:\u002F\u002Fgithub.com\u002Fthruput-io\u002Fagents\u002Fblob\u002Fmain\u002Fskills\u002Fpr-review\u002Frules\u002FDefinitions.yaml",{"path":92,"resourceType":47,"resourceTypeDesc":48,"sizeBytes":93,"sourceHtmlUrl":94},"rules\u002FPrinciples.yaml",30,"https:\u002F\u002Fgithub.com\u002Fthruput-io\u002Fagents\u002Fblob\u002Fmain\u002Fskills\u002Fpr-review\u002Frules\u002FPrinciples.yaml",{"path":96,"resourceType":47,"resourceTypeDesc":48,"sizeBytes":93,"sourceHtmlUrl":97},"rules\u002FRationales.yaml","https:\u002F\u002Fgithub.com\u002Fthruput-io\u002Fagents\u002Fblob\u002Fmain\u002Fskills\u002Fpr-review\u002Frules\u002FRationales.yaml",{"path":99,"resourceType":47,"resourceTypeDesc":48,"sizeBytes":100,"sourceHtmlUrl":101},"rules\u002FRules.yaml",25,"https:\u002F\u002Fgithub.com\u002Fthruput-io\u002Fagents\u002Fblob\u002Fmain\u002Fskills\u002Fpr-review\u002Frules\u002FRules.yaml",{"path":103,"resourceType":104,"resourceTypeDesc":105,"sizeBytes":106,"sourceHtmlUrl":107},"schemas","OTHER","其他",13,"https:\u002F\u002Fgithub.com\u002Fthruput-io\u002Fagents\u002Fblob\u002Fmain\u002Fskills\u002Fpr-review\u002Fschemas",{"path":109,"resourceType":110,"resourceTypeDesc":111,"sizeBytes":112,"sourceHtmlUrl":113},"scripts\u002Fazure-devops.mjs","SCRIPT","脚本",8174,"https:\u002F\u002Fgithub.com\u002Fthruput-io\u002Fagents\u002Fblob\u002Fmain\u002Fskills\u002Fpr-review\u002Fscripts\u002Fazure-devops.mjs",{"path":115,"resourceType":110,"resourceTypeDesc":111,"sizeBytes":116,"sourceHtmlUrl":117},"scripts\u002Fazure-devops.test.mjs",6102,"https:\u002F\u002Fgithub.com\u002Fthruput-io\u002Fagents\u002Fblob\u002Fmain\u002Fskills\u002Fpr-review\u002Fscripts\u002Fazure-devops.test.mjs",{"path":119,"resourceType":110,"resourceTypeDesc":111,"sizeBytes":120,"sourceHtmlUrl":121},"scripts\u002Fcheck.mjs",1377,"https:\u002F\u002Fgithub.com\u002Fthruput-io\u002Fagents\u002Fblob\u002Fmain\u002Fskills\u002Fpr-review\u002Fscripts\u002Fcheck.mjs",{"path":123,"resourceType":110,"resourceTypeDesc":111,"sizeBytes":124,"sourceHtmlUrl":125},"scripts\u002Fgit.mjs",1939,"https:\u002F\u002Fgithub.com\u002Fthruput-io\u002Fagents\u002Fblob\u002Fmain\u002Fskills\u002Fpr-review\u002Fscripts\u002Fgit.mjs",{"path":127,"resourceType":110,"resourceTypeDesc":111,"sizeBytes":128,"sourceHtmlUrl":129},"scripts\u002Fgit.test.mjs",1079,"https:\u002F\u002Fgithub.com\u002Fthruput-io\u002Fagents\u002Fblob\u002Fmain\u002Fskills\u002Fpr-review\u002Fscripts\u002Fgit.test.mjs",{"path":131,"resourceType":110,"resourceTypeDesc":111,"sizeBytes":132,"sourceHtmlUrl":133},"scripts\u002Fgithub.mjs",6570,"https:\u002F\u002Fgithub.com\u002Fthruput-io\u002Fagents\u002Fblob\u002Fmain\u002Fskills\u002Fpr-review\u002Fscripts\u002Fgithub.mjs",{"path":135,"resourceType":110,"resourceTypeDesc":111,"sizeBytes":136,"sourceHtmlUrl":137},"scripts\u002Fgithub.test.mjs",3414,"https:\u002F\u002Fgithub.com\u002Fthruput-io\u002Fagents\u002Fblob\u002Fmain\u002Fskills\u002Fpr-review\u002Fscripts\u002Fgithub.test.mjs",{"path":139,"resourceType":110,"resourceTypeDesc":111,"sizeBytes":140,"sourceHtmlUrl":141},"scripts\u002Flib.mjs",19226,"https:\u002F\u002Fgithub.com\u002Fthruput-io\u002Fagents\u002Fblob\u002Fmain\u002Fskills\u002Fpr-review\u002Fscripts\u002Flib.mjs",{"path":143,"resourceType":110,"resourceTypeDesc":111,"sizeBytes":144,"sourceHtmlUrl":145},"scripts\u002Flib.test.mjs",27605,"https:\u002F\u002Fgithub.com\u002Fthruput-io\u002Fagents\u002Fblob\u002Fmain\u002Fskills\u002Fpr-review\u002Fscripts\u002Flib.test.mjs",{"path":147,"resourceType":110,"resourceTypeDesc":111,"sizeBytes":148,"sourceHtmlUrl":149},"scripts\u002Fprepare.mjs",6409,"https:\u002F\u002Fgithub.com\u002Fthruput-io\u002Fagents\u002Fblob\u002Fmain\u002Fskills\u002Fpr-review\u002Fscripts\u002Fprepare.mjs",{"path":151,"resourceType":110,"resourceTypeDesc":111,"sizeBytes":152,"sourceHtmlUrl":153},"scripts\u002Freview.mjs",2216,"https:\u002F\u002Fgithub.com\u002Fthruput-io\u002Fagents\u002Fblob\u002Fmain\u002Fskills\u002Fpr-review\u002Fscripts\u002Freview.mjs",{"path":155,"resourceType":110,"resourceTypeDesc":111,"sizeBytes":156,"sourceHtmlUrl":157},"scripts\u002Fshell.mjs",325,"https:\u002F\u002Fgithub.com\u002Fthruput-io\u002Fagents\u002Fblob\u002Fmain\u002Fskills\u002Fpr-review\u002Fscripts\u002Fshell.mjs",[159,166,172,177],{"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":165,"publishedAt":19},"01M7CVV962EA8QQVN4N47HRN86","dad-joke","Delivers a software engineering dad joke immediately with no user input. Use whenever the user invokes \u002Fdad-joke, asks for a dad joke, programmer humor, coding puns, or a programming joke.","https:\u002F\u002Fgithub.com\u002Fthruput-io\u002Fagents\u002Fblob\u002Fmain\u002Fskills\u002Fdad-joke\u002FSKILL.md",[],[],{"skillNo":167,"name":5,"nameZh":6,"description":168,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":169,"categories":170,"keywords":171,"publishedAt":19},"01M7CVV7WG1E8KDQWCYHJVFHTK","Fixture of the pr-review skill","https:\u002F\u002Fgithub.com\u002Fthruput-io\u002Fagents\u002Fblob\u002Fmain\u002Fdocs\u002Fplans\u002Fagentplugins-conformance\u002Ftracer-bullets\u002Ftargets-claude-gemini-copilot\u002Fplugin\u002Fskills\u002Fpr-review\u002FSKILL.md",[],[],{"skillNo":173,"name":5,"nameZh":6,"description":168,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":174,"categories":175,"keywords":176,"publishedAt":19},"01M7CVV6MX5ACGKJFNQKF10BMX","https:\u002F\u002Fgithub.com\u002Fthruput-io\u002Fagents\u002Fblob\u002Fmain\u002Fdocs\u002Fplans\u002Fagentplugins-conformance\u002Ftracer-bullets\u002Flint-max-warnings\u002Fwithout-targets\u002Fskills\u002Fpr-review\u002FSKILL.md",[],[],{"skillNo":178,"name":5,"nameZh":6,"description":168,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":179,"categories":180,"keywords":181,"publishedAt":19},"01M7CVV5DF6JXM05G5JFW5C923","https:\u002F\u002Fgithub.com\u002Fthruput-io\u002Fagents\u002Fblob\u002Fmain\u002Fdocs\u002Fplans\u002Fagentplugins-conformance\u002Ftracer-bullets\u002Flint-max-warnings\u002Fwith-targets\u002Fskills\u002Fpr-review\u002FSKILL.md",[],[]]