[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6BT2R0J21KCBMR2PPTJJS0M":3,"skill-same:01M6BT2R0J21KCBMR2PPTJJS0M":88},{"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":20,"linkOnly":21,"markdownContent":22,"markdownBody":23,"frontMatter":24,"refName":25,"commitSha":26,"skillDirectory":27,"forksCount":28,"repositoryHtmlUrl":29,"repositoryHomepageUrl":6,"ownerHtmlUrl":30,"ownerBlogUrl":31,"ownerDescription":32,"updatedAt":33,"install":34,"resources":47},"01M6BT2R0J21KCBMR2PPTJJS0M","tidy",null,"Analyze all unpushed commits on the current branch and propose which ones belong together and should be squashed into the same commit. Use when the user says \"tidy\", \"tidy commits\", \"which commits belong together\", \"clean up my commits\", or \"squash plan\" before pushing.","ream88\u002Fdotfiles","ream88","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F14321?v=4","01M6BT28Y1V18WJ7XN124RDKB3","Mario Uher","01M6BT292SHGT43DFP42J60XQ6",1,"MIT","https:\u002F\u002Fgithub.com\u002Fream88\u002Fdotfiles\u002Fblob\u002Fmain\u002Fsrc\u002Fclaude\u002Fskills\u002Ftidy\u002FSKILL.md",[],[5,19],"commit","2026-11-10 10:12:30",false,"---\nname: tidy\ndescription: Analyze all unpushed commits on the current branch and propose which ones belong together and should be squashed into the same commit. Use when the user says \"tidy\", \"tidy commits\", \"which commits belong together\", \"clean up my commits\", or \"squash plan\" before pushing.\n---\n\n# Tidy\n\nGo through every commit on the checked-out branch that is not yet pushed to\nits upstream and think hard (ultrathink) about which of them are logically\nrelated and should probably have been the same commit in the first place.\n\n## Scope\n\n- Only unpushed commits: `git log @{upstream}..HEAD` (fall back to the\n  branch's merge-base with the default branch if no upstream is set).\n- If there are no unpushed commits, say so and stop.\n- Never touch pushed commits — they are immutable.\n\n## Procedure\n\n1. List the unpushed commits: `git log --oneline @{upstream}..HEAD`.\n2. For each commit inspect subject, body, and the files\u002Fhunks it touches\n   (`git show --stat`, and the actual diff when the stat is ambiguous).\n3. Reason deeply about relatedness. Signals that two commits belong together:\n   - One is a fixup\u002Ftypo\u002Fformatting\u002Freview-feedback pass on the other.\n   - They touch the same feature across layers (schema + context + LiveView\n     + test for the same behavior).\n   - A later commit is only needed because of an earlier one (compile fix,\n     test fix, forgotten file).\n   - The mirrored change in a sibling app (e.g. platform_web + verify_web\n     versions of the same feature) — mirror pairs usually belong together.\n   Signals they should stay separate: independent features, refactor vs.\n   behavior change, deliberate stepping stones the history should show.\n4. Output a grouping plan: each group with its member commits (SHA + subject),\n   a one-line reason, and a proposed subject for the combined commit. List\n   commits that should stay standalone too.\n5. Do NOT rebase. Present the plan and wait; only perform the interactive\n   rebase\u002Fsquash if the user approves. When squashing, follow the [commit\n   skill](..\u002Fcommit\u002FSKILL.md) rules for the new subjects.\n","# Tidy\n\nGo through every commit on the checked-out branch that is not yet pushed to\nits upstream and think hard (ultrathink) about which of them are logically\nrelated and should probably have been the same commit in the first place.\n\n## Scope\n\n- Only unpushed commits: `git log @{upstream}..HEAD` (fall back to the\n  branch's merge-base with the default branch if no upstream is set).\n- If there are no unpushed commits, say so and stop.\n- Never touch pushed commits — they are immutable.\n\n## Procedure\n\n1. List the unpushed commits: `git log --oneline @{upstream}..HEAD`.\n2. For each commit inspect subject, body, and the files\u002Fhunks it touches\n   (`git show --stat`, and the actual diff when the stat is ambiguous).\n3. Reason deeply about relatedness. Signals that two commits belong together:\n   - One is a fixup\u002Ftypo\u002Fformatting\u002Freview-feedback pass on the other.\n   - They touch the same feature across layers (schema + context + LiveView\n     + test for the same behavior).\n   - A later commit is only needed because of an earlier one (compile fix,\n     test fix, forgotten file).\n   - The mirrored change in a sibling app (e.g. platform_web + verify_web\n     versions of the same feature) — mirror pairs usually belong together.\n   Signals they should stay separate: independent features, refactor vs.\n   behavior change, deliberate stepping stones the history should show.\n4. Output a grouping plan: each group with its member commits (SHA + subject),\n   a one-line reason, and a proposed subject for the combined commit. List\n   commits that should stay standalone too.\n5. Do NOT rebase. Present the plan and wait; only perform the interactive\n   rebase\u002Fsquash if the user approves. When squashing, follow the [commit\n   skill](..\u002Fcommit\u002FSKILL.md) rules for the new subjects.\n",{"name":5,"description":7},"main","f5b7cf3248a3626ad9641724296c05293c55574e","src\u002Fclaude\u002Fskills\u002Ftidy",0,"https:\u002F\u002Fgithub.com\u002Fream88\u002Fdotfiles","https:\u002F\u002Fgithub.com\u002Fream88","https:\u002F\u002Fmariouher.com","I create things","2026-09-26 20:15:03",{"source":8,"skillName":5,"commands":35,"prompt":45,"zipAvailable":46},[36,39,42],{"tool":37,"command":38},"npx","npx skills add ream88\u002Fdotfiles --skill tidy",{"tool":40,"command":41},"bunx","bunx skills add ream88\u002Fdotfiles --skill tidy",{"tool":43,"command":44},"pnpm","pnpm dlx skills add ream88\u002Fdotfiles --skill tidy","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fream88\u002Fdotfiles\u002Fblob\u002Fmain\u002Fsrc\u002Fclaude\u002Fskills\u002Ftidy\u002FSKILL.md",true,[48,54,58,62,66,70,74,78,84],{"path":49,"resourceType":50,"resourceTypeDesc":51,"sizeBytes":52,"sourceHtmlUrl":53},"REFERENCE.md","REFERENCE","参考文档",10961,"https:\u002F\u002Fgithub.com\u002Flaurigates\u002Fclaude-plugins\u002Fblob\u002Fmain\u002Fblueprint-plugin\u002Fskills\u002Fblueprint-feature-tracker-sync\u002FREFERENCE.md",{"path":55,"resourceType":50,"resourceTypeDesc":51,"sizeBytes":56,"sourceHtmlUrl":57},"references\u002Fagentic-optimizations.md",886,"https:\u002F\u002Fgithub.com\u002Flaurigates\u002Fclaude-plugins\u002Fblob\u002Fmain\u002Fblueprint-plugin\u002Fskills\u002Fblueprint-feature-tracker-sync\u002Freferences\u002Fagentic-optimizations.md",{"path":59,"resourceType":50,"resourceTypeDesc":51,"sizeBytes":60,"sourceHtmlUrl":61},"references\u002Finteraction-mode.md",582,"https:\u002F\u002Fgithub.com\u002Flaurigates\u002Fclaude-plugins\u002Fblob\u002Fmain\u002Fblueprint-plugin\u002Fskills\u002Fblueprint-feature-tracker-sync\u002Freferences\u002Finteraction-mode.md",{"path":63,"resourceType":50,"resourceTypeDesc":51,"sizeBytes":64,"sourceHtmlUrl":65},"references\u002Fprompts.md",1035,"https:\u002F\u002Fgithub.com\u002Flaurigates\u002Fclaude-plugins\u002Fblob\u002Fmain\u002Fblueprint-plugin\u002Fskills\u002Fblueprint-feature-tracker-sync\u002Freferences\u002Fprompts.md",{"path":67,"resourceType":50,"resourceTypeDesc":51,"sizeBytes":68,"sourceHtmlUrl":69},"references\u002Fsidecar-drain.md",5500,"https:\u002F\u002Fgithub.com\u002Flaurigates\u002Fclaude-plugins\u002Fblob\u002Fmain\u002Fblueprint-plugin\u002Fskills\u002Fblueprint-feature-tracker-sync\u002Freferences\u002Fsidecar-drain.md",{"path":71,"resourceType":50,"resourceTypeDesc":51,"sizeBytes":72,"sourceHtmlUrl":73},"references\u002Fsummary-mode.md",998,"https:\u002F\u002Fgithub.com\u002Flaurigates\u002Fclaude-plugins\u002Fblob\u002Fmain\u002Fblueprint-plugin\u002Fskills\u002Fblueprint-feature-tracker-sync\u002Freferences\u002Fsummary-mode.md",{"path":75,"resourceType":50,"resourceTypeDesc":51,"sizeBytes":76,"sourceHtmlUrl":77},"references\u002Fsync-core.md",2207,"https:\u002F\u002Fgithub.com\u002Flaurigates\u002Fclaude-plugins\u002Fblob\u002Fmain\u002Fblueprint-plugin\u002Fskills\u002Fblueprint-feature-tracker-sync\u002Freferences\u002Fsync-core.md",{"path":79,"resourceType":80,"resourceTypeDesc":81,"sizeBytes":82,"sourceHtmlUrl":83},"scripts\u002Fblueprint-feature-tracker-sync.sh","SCRIPT","脚本",12122,"https:\u002F\u002Fgithub.com\u002Flaurigates\u002Fclaude-plugins\u002Fblob\u002Fmain\u002Fblueprint-plugin\u002Fskills\u002Fblueprint-feature-tracker-sync\u002Fscripts\u002Fblueprint-feature-tracker-sync.sh",{"path":85,"resourceType":80,"resourceTypeDesc":81,"sizeBytes":86,"sourceHtmlUrl":87},"scripts\u002Ftests\u002Ftest-blueprint-feature-tracker-sync.sh",10503,"https:\u002F\u002Fgithub.com\u002Flaurigates\u002Fclaude-plugins\u002Fblob\u002Fmain\u002Fblueprint-plugin\u002Fskills\u002Fblueprint-feature-tracker-sync\u002Fscripts\u002Ftests\u002Ftest-blueprint-feature-tracker-sync.sh",[89,98,107,127,137,151],{"skillNo":90,"name":91,"nameZh":6,"description":92,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":93,"categories":94,"keywords":95,"publishedAt":20},"01M6BT2PE8X7CNA4D25GR94KFE","simple-english","Write responses in ASD-STE100 Simplified Technical English. Use when the user asks for simple English, plain English, simplified text, or easy language, or when writing for readers who are not native English speakers.","https:\u002F\u002Fgithub.com\u002Fream88\u002Fdotfiles\u002Fblob\u002Fmain\u002Fsrc\u002Fclaude\u002Fskills\u002Fsimple-english\u002FSKILL.md",[],[96,97],"simple english","writing",{"skillNo":99,"name":100,"nameZh":6,"description":101,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":102,"categories":103,"keywords":104,"publishedAt":20},"01M6BT2N0MH83GDZPZT5B88KVH","open","Open the file most recently worked on in this session with its default macOS app. Use when the user says \"open\", \"open it\", \"open the file\", or \"show me the file\" after a file was created or edited.","https:\u002F\u002Fgithub.com\u002Fream88\u002Fdotfiles\u002Fblob\u002Fmain\u002Fsrc\u002Fclaude\u002Fskills\u002Fopen\u002FSKILL.md",[],[100,105,106],"file","macos",{"skillNo":108,"name":109,"nameZh":6,"description":110,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":111,"categories":112,"keywords":118,"publishedAt":20},"01M6BT2JK478K0TF4SBRAQB4H3","ical","Extract flight or train information from text, screenshots, PDFs, or other data sources\nand generate an iCalendar (.ics) file with properly formatted events. Supports flights\n(with IATA codes) and trains (e.g. ÖBB SCOTTY format).","https:\u002F\u002Fgithub.com\u002Fream88\u002Fdotfiles\u002Fblob\u002Fmain\u002Fsrc\u002Fclaude\u002Fskills\u002Fical\u002Fskill.md",[113],{"categoryNo":114,"categoryName":115,"taxonomyType":116,"taxonomyTypeDesc":117},"01JBSEEDCAT000000000000023","Skill与智能体开发","SCENARIO","使用场景",[109,119,120,121,105,122,123,124,125,126],"generate","ics","data","devtools","screenshot","chrome","screenshots","MCP",{"skillNo":128,"name":129,"nameZh":6,"description":130,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":131,"categories":132,"keywords":133,"publishedAt":20},"01M6BT2GQY0637Y2SYACGZRYKS","elixir-deps-update","Update all outdated dependencies in this Elixir project, handling both safe updates and breaking changes.","https:\u002F\u002Fgithub.com\u002Fream88\u002Fdotfiles\u002Fblob\u002Fmain\u002Fsrc\u002Fclaude\u002Fskills\u002Felixir-deps-update\u002FSKILL.md",[],[134,135,136],"update","elixir deps update","safe",{"skillNo":138,"name":139,"nameZh":6,"description":140,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":141,"categories":142,"keywords":146,"publishedAt":20},"01M6BT2EV8TNDKVP1HTK6QFGE9","critic","Ruthlessly critical code review that questions every single line change. Enforces\nKISS (Keep It Simple, Stupid) and DRY (Don't Repeat Yourself) principles. Use this\nto ensure code changes are truly necessary and not over-engineered. Will challenge\nany unnecessary complexity, redundancy, or deviation from simplicity.","https:\u002F\u002Fgithub.com\u002Fream88\u002Fdotfiles\u002Fblob\u002Fmain\u002Fsrc\u002Fclaude\u002Fskills\u002Fcritic\u002FSKILL.md",[143],{"categoryNo":144,"categoryName":145,"taxonomyType":116,"taxonomyTypeDesc":117},"01JBSEEDCAT000000000000007","代码审查",[139,147,148,149,150],"code","change","review","code review",{"skillNo":152,"name":19,"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":153,"categories":154,"keywords":155,"publishedAt":20},"01M6BT2DSQARTDK4Y89T0932AB","https:\u002F\u002Fgithub.com\u002Fream88\u002Fdotfiles\u002Fblob\u002Fmain\u002Fsrc\u002Fclaude\u002Fskills\u002Fcommit\u002FSKILL.md",[],[19]]