[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6BXN0TYH8WDXAS1786X56HC":3,"skill-same:01M6BXN0TYH8WDXAS1786X56HC":122},{"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":25,"linkOnly":26,"markdownContent":27,"markdownBody":28,"frontMatter":29,"refName":33,"commitSha":34,"skillDirectory":35,"forksCount":36,"repositoryHtmlUrl":37,"repositoryHomepageUrl":6,"ownerHtmlUrl":38,"ownerBlogUrl":39,"ownerDescription":40,"updatedAt":41,"install":42,"resources":55},"01M6BXN0TYH8WDXAS1786X56HC","no-slop-pr",null,"Scores GitHub pull requests for AI slop and blocks the ones an agent wrote, in the spirit of No Sloptober. Use when the user runs \u002Fno-slop-pr, or asks to check, gate, block, flag or reject AI generated, LLM written, agent authored or sloppy pull requests.","diegopacheco\u002Fai-playground","diegopacheco","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F121278?v=4","01M6BXCP8P7GGSJ8M1W2MFDTGT","Diego Pacheco","01M6BXCPD3WM51H465XW9YM4BV",21,"Unlicense","https:\u002F\u002Fgithub.com\u002Fdiegopacheco\u002Fai-playground\u002Fblob\u002Fmain\u002Fpocs\u002Fclaude-opsu-5-5-no-sloptober\u002F.claude\u002Fskills\u002Fno-slop-pr\u002FSKILL.md",[],[19,20,21,22,23,24],"pr","no slop pr","github","pull requests","pull","Bash","2026-11-10 10:12:30",false,"---\nname: no-slop-pr\ndescription: Scores GitHub pull requests for AI slop and blocks the ones an agent wrote, in the spirit of No Sloptober. Use when the user runs \u002Fno-slop-pr, or asks to check, gate, block, flag or reject AI generated, LLM written, agent authored or sloppy pull requests.\nallowed-tools: [Bash, Read, AskUserQuestion]\n---\n\n# No Slop PR\n\nNo Sloptober asks for one month without LLM tools. This skill guards the other side of the door:\npull requests written by an agent do not get merged.\n\n## Inputs\n\n* A PR number or URL: `python3 .claude\u002Fskills\u002Fno-slop-pr\u002Fslop_check.py 42`\n* A PR from another repo: `python3 .claude\u002Fskills\u002Fno-slop-pr\u002Fslop_check.py 42 --repo owner\u002Fname`\n* All open PRs: loop over `gh pr list --state open --json number --jq '.[].number'`\n* Local files, no GitHub: `python3 .claude\u002Fskills\u002Fno-slop-pr\u002Fslop_check.py --text body.txt --diff change.diff`\n\nAdd `--json` for machine output. The script exits `1` on `BLOCK` and `0` otherwise, so it can gate CI.\n\n## Signals\n\nEvery signal, weight and threshold lives in `rules.json`. Read it, never guess.\n\n| Signal | Why it matters |\n|---|---|\n| AI co-author trailer | The commit itself admits an agent wrote it |\n| Generated-with footer | Same admission, in the PR body |\n| LLM tell phrases | delve, robust, seamless, comprehensive, this PR introduces |\n| Emoji bullets and headings | Checkmark and rocket bullet lists are an agent template |\n| Em dash storm | Humans rarely type the long dash, models love it |\n| Boilerplate section headings | Summary, Key Changes, Test Plan scaffolding |\n| Comment cruft in added code | Onarheim: agents add comments that explain nothing |\n\nScore is capped at 100. `BLOCK` at `block_at`, `SUSPECT` at `suspect_at`, `PASS` below.\n\n## Steps\n\n1. Run the script for every PR the user named.\n2. Print one line per PR: number, verdict, score, the top reasons.\n3. For `SUSPECT`, quote the lines that matched so a human decides. Never block on `SUSPECT` alone.\n4. For `BLOCK`, ask the user before touching GitHub. Only after a yes run\n   `gh pr review \u003Cn> --request-changes --body \"\u003Creasons>\"`. Never close, merge or push.\n5. The review body lists the reasons from the script and one line: `No Sloptober: please rewrite this PR yourself.`\n\n## Rules\n\n* The script is a filter, not a judge. Say so when reporting.\n* Never write the review body with emojis, em dashes or any phrase from `rules.json`.\n* Run the tests after changing `rules.json`: `python3 -m unittest discover -s .claude\u002Fskills\u002Fno-slop-pr\u002Ftests`.\n","# No Slop PR\n\nNo Sloptober asks for one month without LLM tools. This skill guards the other side of the door:\npull requests written by an agent do not get merged.\n\n## Inputs\n\n* A PR number or URL: `python3 .claude\u002Fskills\u002Fno-slop-pr\u002Fslop_check.py 42`\n* A PR from another repo: `python3 .claude\u002Fskills\u002Fno-slop-pr\u002Fslop_check.py 42 --repo owner\u002Fname`\n* All open PRs: loop over `gh pr list --state open --json number --jq '.[].number'`\n* Local files, no GitHub: `python3 .claude\u002Fskills\u002Fno-slop-pr\u002Fslop_check.py --text body.txt --diff change.diff`\n\nAdd `--json` for machine output. The script exits `1` on `BLOCK` and `0` otherwise, so it can gate CI.\n\n## Signals\n\nEvery signal, weight and threshold lives in `rules.json`. Read it, never guess.\n\n| Signal | Why it matters |\n|---|---|\n| AI co-author trailer | The commit itself admits an agent wrote it |\n| Generated-with footer | Same admission, in the PR body |\n| LLM tell phrases | delve, robust, seamless, comprehensive, this PR introduces |\n| Emoji bullets and headings | Checkmark and rocket bullet lists are an agent template |\n| Em dash storm | Humans rarely type the long dash, models love it |\n| Boilerplate section headings | Summary, Key Changes, Test Plan scaffolding |\n| Comment cruft in added code | Onarheim: agents add comments that explain nothing |\n\nScore is capped at 100. `BLOCK` at `block_at`, `SUSPECT` at `suspect_at`, `PASS` below.\n\n## Steps\n\n1. Run the script for every PR the user named.\n2. Print one line per PR: number, verdict, score, the top reasons.\n3. For `SUSPECT`, quote the lines that matched so a human decides. Never block on `SUSPECT` alone.\n4. For `BLOCK`, ask the user before touching GitHub. Only after a yes run\n   `gh pr review \u003Cn> --request-changes --body \"\u003Creasons>\"`. Never close, merge or push.\n5. The review body lists the reasons from the script and one line: `No Sloptober: please rewrite this PR yourself.`\n\n## Rules\n\n* The script is a filter, not a judge. Say so when reporting.\n* Never write the review body with emojis, em dashes or any phrase from `rules.json`.\n* Run the tests after changing `rules.json`: `python3 -m unittest discover -s .claude\u002Fskills\u002Fno-slop-pr\u002Ftests`.\n",{"name":5,"description":7,"allowed-tools":30},[24,31,32],"Read","AskUserQuestion","main","90d379e95fcc23dd9759654c345424e1752b0f3a","pocs\u002Fclaude-opsu-5-5-no-sloptober\u002F.claude\u002Fskills\u002Fno-slop-pr",9,"https:\u002F\u002Fgithub.com\u002Fdiegopacheco\u002Fai-playground","https:\u002F\u002Fgithub.com\u002Fdiegopacheco","http:\u002F\u002Fdiego-pacheco.blogspot.com","Brazilian Hands-on Software Architect | 20+ years in Tech | Author | Father. Opinions are my own!","2026-11-07 09:01:46",{"source":8,"skillName":5,"commands":43,"prompt":53,"zipAvailable":54},[44,47,50],{"tool":45,"command":46},"npx","npx skills add diegopacheco\u002Fai-playground --skill no-slop-pr",{"tool":48,"command":49},"bunx","bunx skills add diegopacheco\u002Fai-playground --skill no-slop-pr",{"tool":51,"command":52},"pnpm","pnpm dlx skills add diegopacheco\u002Fai-playground --skill no-slop-pr","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fdiegopacheco\u002Fai-playground\u002Fblob\u002Fmain\u002Fpocs\u002Fclaude-opsu-5-5-no-sloptober\u002F.claude\u002Fskills\u002Fno-slop-pr\u002FSKILL.md",true,[56,62,66,70,74,78,82,86,90,96,102,106,110,114,118],{"path":57,"resourceType":58,"resourceTypeDesc":59,"sizeBytes":60,"sourceHtmlUrl":61},"references\u002Fcommands-(you-run-these).md","REFERENCE","参考文档",1365,"https:\u002F\u002Fgithub.com\u002FDicklesworthstone\u002Fpi_agent_rust\u002Fblob\u002Fmain\u002Ftests\u002Fext_conformance\u002Fartifacts\u002Fplugins-community\u002Fplugins\u002Fcommunity\u002Fgastown\u002Fskills\u002Fgastown\u002Freferences\u002Fcommands-(you-run-these).md",{"path":63,"resourceType":58,"resourceTypeDesc":59,"sizeBytes":64,"sourceHtmlUrl":65},"references\u002Fcreative-freedom.md",1720,"https:\u002F\u002Fgithub.com\u002FDicklesworthstone\u002Fpi_agent_rust\u002Fblob\u002Fmain\u002Ftests\u002Fext_conformance\u002Fartifacts\u002Fplugins-community\u002Fplugins\u002Fcommunity\u002Fgastown\u002Fskills\u002Fgastown\u002Freferences\u002Fcreative-freedom.md",{"path":67,"resourceType":58,"resourceTypeDesc":59,"sizeBytes":68,"sourceHtmlUrl":69},"references\u002Ferrors.md",984,"https:\u002F\u002Fgithub.com\u002FDicklesworthstone\u002Fpi_agent_rust\u002Fblob\u002Fmain\u002Ftests\u002Fext_conformance\u002Fartifacts\u002Fplugins-community\u002Fplugins\u002Fcommunity\u002Fgastown\u002Fskills\u002Fgastown\u002Freferences\u002Ferrors.md",{"path":71,"resourceType":58,"resourceTypeDesc":59,"sizeBytes":72,"sourceHtmlUrl":73},"references\u002Fexamples.md",3965,"https:\u002F\u002Fgithub.com\u002FDicklesworthstone\u002Fpi_agent_rust\u002Fblob\u002Fmain\u002Ftests\u002Fext_conformance\u002Fartifacts\u002Fplugins-community\u002Fplugins\u002Fcommunity\u002Fgastown\u002Fskills\u002Fgastown\u002Freferences\u002Fexamples.md",{"path":75,"resourceType":58,"resourceTypeDesc":59,"sizeBytes":76,"sourceHtmlUrl":77},"references\u002Ffirst-contact.md",1591,"https:\u002F\u002Fgithub.com\u002FDicklesworthstone\u002Fpi_agent_rust\u002Fblob\u002Fmain\u002Ftests\u002Fext_conformance\u002Fartifacts\u002Fplugins-community\u002Fplugins\u002Fcommunity\u002Fgastown\u002Fskills\u002Fgastown\u002Freferences\u002Ffirst-contact.md",{"path":79,"resourceType":58,"resourceTypeDesc":59,"sizeBytes":80,"sourceHtmlUrl":81},"references\u002Finteraction-style.md",1910,"https:\u002F\u002Fgithub.com\u002FDicklesworthstone\u002Fpi_agent_rust\u002Fblob\u002Fmain\u002Ftests\u002Fext_conformance\u002Fartifacts\u002Fplugins-community\u002Fplugins\u002Fcommunity\u002Fgastown\u002Fskills\u002Fgastown\u002Freferences\u002Finteraction-style.md",{"path":83,"resourceType":58,"resourceTypeDesc":59,"sizeBytes":84,"sourceHtmlUrl":85},"references\u002Fsystem-readiness-checklist.md",2387,"https:\u002F\u002Fgithub.com\u002FDicklesworthstone\u002Fpi_agent_rust\u002Fblob\u002Fmain\u002Ftests\u002Fext_conformance\u002Fartifacts\u002Fplugins-community\u002Fplugins\u002Fcommunity\u002Fgastown\u002Fskills\u002Fgastown\u002Freferences\u002Fsystem-readiness-checklist.md",{"path":87,"resourceType":58,"resourceTypeDesc":59,"sizeBytes":88,"sourceHtmlUrl":89},"rules.json",1396,"https:\u002F\u002Fgithub.com\u002Fdiegopacheco\u002Fai-playground\u002Fblob\u002Fmain\u002Fpocs\u002Fclaude-opsu-5-5-no-sloptober\u002F.claude\u002Fskills\u002Fno-slop-pr\u002Frules.json",{"path":91,"resourceType":92,"resourceTypeDesc":93,"sizeBytes":94,"sourceHtmlUrl":95},"slop_check.py","SCRIPT","脚本",3347,"https:\u002F\u002Fgithub.com\u002Fdiegopacheco\u002Fai-playground\u002Fblob\u002Fmain\u002Fpocs\u002Fclaude-opsu-5-5-no-sloptober\u002F.claude\u002Fskills\u002Fno-slop-pr\u002Fslop_check.py",{"path":97,"resourceType":98,"resourceTypeDesc":99,"sizeBytes":100,"sourceHtmlUrl":101},"tests\u002Ffixtures\u002Fhuman.diff","OTHER","其他",225,"https:\u002F\u002Fgithub.com\u002Fdiegopacheco\u002Fai-playground\u002Fblob\u002Fmain\u002Fpocs\u002Fclaude-opsu-5-5-no-sloptober\u002F.claude\u002Fskills\u002Fno-slop-pr\u002Ftests\u002Ffixtures\u002Fhuman.diff",{"path":103,"resourceType":58,"resourceTypeDesc":59,"sizeBytes":104,"sourceHtmlUrl":105},"tests\u002Ffixtures\u002Fhuman.txt",184,"https:\u002F\u002Fgithub.com\u002Fdiegopacheco\u002Fai-playground\u002Fblob\u002Fmain\u002Fpocs\u002Fclaude-opsu-5-5-no-sloptober\u002F.claude\u002Fskills\u002Fno-slop-pr\u002Ftests\u002Ffixtures\u002Fhuman.txt",{"path":107,"resourceType":98,"resourceTypeDesc":99,"sizeBytes":108,"sourceHtmlUrl":109},"tests\u002Ffixtures\u002Fslop.diff",294,"https:\u002F\u002Fgithub.com\u002Fdiegopacheco\u002Fai-playground\u002Fblob\u002Fmain\u002Fpocs\u002Fclaude-opsu-5-5-no-sloptober\u002F.claude\u002Fskills\u002Fno-slop-pr\u002Ftests\u002Ffixtures\u002Fslop.diff",{"path":111,"resourceType":58,"resourceTypeDesc":59,"sizeBytes":112,"sourceHtmlUrl":113},"tests\u002Ffixtures\u002Fslop.txt",570,"https:\u002F\u002Fgithub.com\u002Fdiegopacheco\u002Fai-playground\u002Fblob\u002Fmain\u002Fpocs\u002Fclaude-opsu-5-5-no-sloptober\u002F.claude\u002Fskills\u002Fno-slop-pr\u002Ftests\u002Ffixtures\u002Fslop.txt",{"path":115,"resourceType":58,"resourceTypeDesc":59,"sizeBytes":116,"sourceHtmlUrl":117},"tests\u002Ffixtures\u002Fsuspect.txt",179,"https:\u002F\u002Fgithub.com\u002Fdiegopacheco\u002Fai-playground\u002Fblob\u002Fmain\u002Fpocs\u002Fclaude-opsu-5-5-no-sloptober\u002F.claude\u002Fskills\u002Fno-slop-pr\u002Ftests\u002Ffixtures\u002Fsuspect.txt",{"path":119,"resourceType":92,"resourceTypeDesc":93,"sizeBytes":120,"sourceHtmlUrl":121},"tests\u002Ftest_slop_check.py",2275,"https:\u002F\u002Fgithub.com\u002Fdiegopacheco\u002Fai-playground\u002Fblob\u002Fmain\u002Fpocs\u002Fclaude-opsu-5-5-no-sloptober\u002F.claude\u002Fskills\u002Fno-slop-pr\u002Ftests\u002Ftest_slop_check.py",[123,141,151,164,180,198],{"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":134,"publishedAt":25},"01M6WJ537DN520XY8MSW9ZV0RP","word-count","Counts the words, lines and characters of a text or a file.","https:\u002F\u002Fgithub.com\u002Fdiegopacheco\u002Fai-playground\u002Fblob\u002Fmain\u002Fpocs\u002Fskills-gateway-router\u002Fupstream-skills\u002Ftext-skills\u002Fword-count\u002FSKILL.md",[129],{"categoryNo":130,"categoryName":131,"taxonomyType":132,"taxonomyTypeDesc":133},"01JBSEEDCAT000000000000002","文档处理","SCENARIO","使用场景",[135,136,137,138,139,140],"count","word count","Word","characters","text","file",{"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":147,"publishedAt":25},"01M6WJ4Y2GT5SECWAKKYHGES4F","slugify","Turns a title or a sentence into a URL slug, lowercase words joined by hyphens with accents removed.","https:\u002F\u002Fgithub.com\u002Fdiegopacheco\u002Fai-playground\u002Fblob\u002Fmain\u002Fpocs\u002Fskills-gateway-router\u002Fupstream-skills\u002Ftext-skills\u002Fslugify\u002FSKILL.md",[],[143,148,149,150],"title","with","URL",{"skillNo":152,"name":153,"nameZh":6,"description":154,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":155,"categories":156,"keywords":157,"publishedAt":25},"01M6WJ4V9CWHT9NVCD441VK5MH","json-format","Validates a JSON file and pretty prints it with two space indentation, or reports where the JSON is invalid.","https:\u002F\u002Fgithub.com\u002Fdiegopacheco\u002Fai-playground\u002Fblob\u002Fmain\u002Fpocs\u002Fskills-gateway-router\u002Fupstream-skills\u002Fdev-skills\u002Fjson-format\u002FSKILL.md",[],[158,159,160,140,161,162,163,149],"json","format","json format","reports","invalid","it",{"skillNo":165,"name":166,"nameZh":6,"description":167,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":168,"categories":169,"keywords":170,"publishedAt":25},"01M6WJ4QMRKW8EFP71F4KS2DHE","commit-message","Writes a conventional commit message for the staged git changes.","https:\u002F\u002Fgithub.com\u002Fdiegopacheco\u002Fai-playground\u002Fblob\u002Fmain\u002Fpocs\u002Fskills-gateway-router\u002Fupstream-skills\u002Fdev-skills\u002Fcommit-message\u002FSKILL.md",[],[171,172,173,174,175,176,177,178,179],"commit","commit message","message","git","conventional commit","for","changes","staged","conventional commit message",{"skillNo":181,"name":182,"nameZh":6,"description":183,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":184,"categories":185,"keywords":186,"publishedAt":25},"01M6WJ4MAM2CJH0GWYXFBB9GQC","skills-gateway","Gateway and router to a catalog of skills that are not registered directly. Use it before any task a specialized skill could handle, such as text, JSON or git chores. It finds the right skill and loads its instructions.","https:\u002F\u002Fgithub.com\u002Fdiegopacheco\u002Fai-playground\u002Fblob\u002Fmain\u002Fpocs\u002Fskills-gateway-router\u002F.claude\u002Fskills\u002Fskills-gateway\u002FSKILL.md",[],[187,188,163,189,190,174,24,158,139,191,192,193,194,195,196,197],"skills gateway","gateway","task","loads","node","specialized","instructions","catalog","use","router","as",{"skillNo":199,"name":200,"nameZh":6,"description":201,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":202,"categories":203,"keywords":204,"publishedAt":25},"01M6M2PYJJQKMWGX7XT7ZJK0H3","decision-log","Record, list, show and supersede architecture decisions that persist across sessions in the shared agent infra state store. Use when the user says \"record this decision\", \"log an ADR\", \"what did we decide about\", \"list decisions\", or \"supersede decision\".","https:\u002F\u002Fgithub.com\u002Fdiegopacheco\u002Fai-playground\u002Fblob\u002Fmain\u002Fpocs\u002Fagent-skills-infra-poc\u002Fskills\u002Fdecision-log\u002FSKILL.md",[],[205,206,207,208,209,210,211,212,213,214,195,215,216,217,218,219,220,221,222,223],"decision log","log","decision","persist","architecture","state","adr","decide","decisions","list","show","infra","record","across","shared","store","about","supersede","sessions"]