[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M7ADHT2SJQMCCBPD07Y8Z0DP":3,"skill-same:01M7ADHT2SJQMCCBPD07Y8Z0DP":46},{"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":30,"updatedAt":31,"install":32,"resources":45},"01M7ADHT2SJQMCCBPD07Y8Z0DP","grug-implement",null,"Implement a feature or refactor with the smallest clear diff. Use when the user gives the required behavior or enough context to infer it.","stepankuzmin\u002Fskills","stepankuzmin","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F533564?v=4","01M7ADH01MGRSMC0YNW589Q6CE","Stepan Kuzmin","01M7ADH02CTNTX4NFP4S5WVYT9",0,"MIT","https:\u002F\u002Fgithub.com\u002Fstepankuzmin\u002Fskills\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Fgrug-implement\u002FSKILL.md",[],[],"2026-11-15 14:19:17",false,"---\nname: grug-implement\ndescription: Implement a feature or refactor with the smallest clear diff. Use when the user gives the required behavior or enough context to infer it.\n---\n\n# Grug implement\n\nGrug writes the smallest untangled change that meets today's requirement.\n\n## Untangle first\n\nUse an accepted plan when one exists. Otherwise derive the required behavior,\nconstraints, behavior to preserve, and non-goals from the user's request and\nlive code.\n\nName what is complected. Separate only the braid required by today's change.\n\nRead the target code, callers, and relevant tests. Proceed when the context\nsupports the smallest safe change. If missing information changes behavior,\nask the user. If the missing work is design, suggest grug-design. A formal plan\nis not required.\n\n## Make the change\n\nTry deletion, a local change, an existing module or boundary, then the smallest\nnew one. A new module must be deep: it hides more complexity than it adds. Keep\none authority for each decision.\n\nThree real callers or a trust boundary may justify sharing. They do not prove\nit.\n\nKeep new code in the file that uses it. Every read pays for the jump between\nfiles, so a caller elsewhere has to earn the split.\n\nChange the code that owns the behavior. Delete superseded code. Leave unrelated\ncode alone.\n\nKeep policy separate from mechanism. Keep decisions pure and effects at existing\nboundaries. Add lifecycle state only when time changes which events are allowed.\n\nIf the diff creates dual authority, old and new paths, wrappers around wrappers,\nor policy in callers, simplify it. If that changes the requested design, ask\nthe user or suggest grug-design.\n\nThe plan is wrong, not the code, when the same workaround repeats, unrelated\nedge cases each need a branch, types need casts or always-set optional fields,\nor callers must know the module's internal rules. Stop and return to\ngrug-design instead of patching around it.\n\n## Check and report\n\nRun the narrow existing checks that prove the changed behavior. Add a focused\ntest only when behavior changed and existing tests cannot catch the regression.\n\nProve claims by running code. The working tree includes the user's\nunreviewed work, so change it only with edits you can undo one at a time:\nbreak one line, run the test, then undo that edit. To run another version,\nread it with `git show \u003Crev>:\u003Cpath>` or check it out with `git worktree add`\nin a scratch directory and remove it after. Never run `git checkout`,\n`restore`, `reset`, `stash`, or `clean` on the working tree, and never commit.\n\nWhen the checks pass, run the grug-cleanup skill on the change.\n\nOpen with one sentence, alone in its paragraph: the change and the check\nresult. Then give cleanup's report without its opening sentence, and any\nblockers. When the user wants an independent second opinion, suggest\ngrug-review.\n","# Grug implement\n\nGrug writes the smallest untangled change that meets today's requirement.\n\n## Untangle first\n\nUse an accepted plan when one exists. Otherwise derive the required behavior,\nconstraints, behavior to preserve, and non-goals from the user's request and\nlive code.\n\nName what is complected. Separate only the braid required by today's change.\n\nRead the target code, callers, and relevant tests. Proceed when the context\nsupports the smallest safe change. If missing information changes behavior,\nask the user. If the missing work is design, suggest grug-design. A formal plan\nis not required.\n\n## Make the change\n\nTry deletion, a local change, an existing module or boundary, then the smallest\nnew one. A new module must be deep: it hides more complexity than it adds. Keep\none authority for each decision.\n\nThree real callers or a trust boundary may justify sharing. They do not prove\nit.\n\nKeep new code in the file that uses it. Every read pays for the jump between\nfiles, so a caller elsewhere has to earn the split.\n\nChange the code that owns the behavior. Delete superseded code. Leave unrelated\ncode alone.\n\nKeep policy separate from mechanism. Keep decisions pure and effects at existing\nboundaries. Add lifecycle state only when time changes which events are allowed.\n\nIf the diff creates dual authority, old and new paths, wrappers around wrappers,\nor policy in callers, simplify it. If that changes the requested design, ask\nthe user or suggest grug-design.\n\nThe plan is wrong, not the code, when the same workaround repeats, unrelated\nedge cases each need a branch, types need casts or always-set optional fields,\nor callers must know the module's internal rules. Stop and return to\ngrug-design instead of patching around it.\n\n## Check and report\n\nRun the narrow existing checks that prove the changed behavior. Add a focused\ntest only when behavior changed and existing tests cannot catch the regression.\n\nProve claims by running code. The working tree includes the user's\nunreviewed work, so change it only with edits you can undo one at a time:\nbreak one line, run the test, then undo that edit. To run another version,\nread it with `git show \u003Crev>:\u003Cpath>` or check it out with `git worktree add`\nin a scratch directory and remove it after. Never run `git checkout`,\n`restore`, `reset`, `stash`, or `clean` on the working tree, and never commit.\n\nWhen the checks pass, run the grug-cleanup skill on the change.\n\nOpen with one sentence, alone in its paragraph: the change and the check\nresult. Then give cleanup's report without its opening sentence, and any\nblockers. When the user wants an independent second opinion, suggest\ngrug-review.\n",{"name":5,"description":7},"main","7c3fa2c0275bcee7c1633a3ab6b0374e1a059b6e",".agents\u002Fskills\u002Fgrug-implement","https:\u002F\u002Fgithub.com\u002Fstepankuzmin\u002Fskills","https:\u002F\u002Fgithub.com\u002Fstepankuzmin","https:\u002F\u002Fstepankuzmin.com\u002F","Software Engineer at @Mapbox","2026-10-01 17:36:10",{"source":8,"skillName":5,"commands":33,"prompt":43,"zipAvailable":44},[34,37,40],{"tool":35,"command":36},"npx","npx skills add stepankuzmin\u002Fskills --skill grug-implement",{"tool":38,"command":39},"bunx","bunx skills add stepankuzmin\u002Fskills --skill grug-implement",{"tool":41,"command":42},"pnpm","pnpm dlx skills add stepankuzmin\u002Fskills --skill grug-implement","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fstepankuzmin\u002Fskills\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Fgrug-implement\u002FSKILL.md",true,[],[47,54,61,68,75,82],{"skillNo":48,"name":49,"nameZh":6,"description":50,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":51,"categories":52,"keywords":53,"publishedAt":19},"01M7ADN40WWNARJK5XDNNY59MR","vendor-skill","Adapt an external skill into this marketplace, or review upstream changes to one already adapted. Use when asked to vendor, import, adapt, mirror, or update a skill from skills.sh, `npx skills add`, or any external GitHub skills repo, especially to work around Claude Code Web only allowing one marketplace per GitHub repo name.","https:\u002F\u002Fgithub.com\u002Fstepankuzmin\u002Fskills\u002Fblob\u002Fmain\u002F.claude\u002Fskills\u002Fvendor-skill\u002FSKILL.md",[],[],{"skillNo":55,"name":56,"nameZh":6,"description":57,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":58,"categories":59,"keywords":60,"publishedAt":19},"01M7ADMYB3AZ7CPMS9V6P48H61","why","Use when the user asks to investigate why code is built the way it is: 'why does X work this way', 'why we picked Y', design rationale, regressions, or postmortems. Not for explaining a single error or a quick question. Queries each available evidence source (git and PRs, issues, docs, team chat) in parallel, then returns a cited read on decisions and tradeoffs. Use how for runtime behavior.","https:\u002F\u002Fgithub.com\u002Fstepankuzmin\u002Fskills\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Fwhy\u002FSKILL.md",[],[],{"skillNo":62,"name":63,"nameZh":6,"description":64,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":65,"categories":66,"keywords":67,"publishedAt":19},"01M7ADMWR9QP2Q2G4D5ZEKPV8W","unslop","Cut AI tells from any writing. Must always apply.","https:\u002F\u002Fgithub.com\u002Fstepankuzmin\u002Fskills\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Funslop\u002FSKILL.md",[],[],{"skillNo":69,"name":70,"nameZh":6,"description":71,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":72,"categories":73,"keywords":74,"publishedAt":19},"01M7ADMNW2S09DQBJ34JP7BBY7","uncomplect","Pressure-test a stateful system or replacement design through Rich Hickey's simplicity and complection, Greg Young's deletability, Ousterhout's deep modules, DDD boundaries, typed effects, and explicit lifecycle modeling. Use when the user asks \"what would Rich Hickey do\", \"optimize for deletion\", \"make this simpler\", \"define this error out of existence\", \"review this state machine\", \"design it twice\", or wants to replace a working prototype without preserving its accidental architecture.","https:\u002F\u002Fgithub.com\u002Fstepankuzmin\u002Fskills\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Funcomplect\u002FSKILL.md",[],[],{"skillNo":76,"name":77,"nameZh":6,"description":78,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":79,"categories":80,"keywords":81,"publishedAt":19},"01M7ADMJMJ8M5PGK63N0GQ5B59","typescript-best-practices","TypeScript best practices. Use when reading or editing any .ts or .tsx file.","https:\u002F\u002Fgithub.com\u002Fstepankuzmin\u002Fskills\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Ftypescript-best-practices\u002FSKILL.md",[],[],{"skillNo":83,"name":84,"nameZh":6,"description":85,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":86,"categories":87,"keywords":88,"publishedAt":19},"01M7ADMER5KTJPY8J7M8MTP6WA","technical-writing","Layered technical-writing standard: Diátaxis structure, Google developer style sentences, STE instruction rules, Global English syntax. Use for \u002Ftechnical-writing or when writing or reviewing docs, RFCs, readmes, PR descriptions, or commit messages.","https:\u002F\u002Fgithub.com\u002Fstepankuzmin\u002Fskills\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Ftechnical-writing\u002FSKILL.md",[],[]]