[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6PQAH29FCQB6921Y94CA8F4":3,"skill-same:01M6PQAH29FCQB6921Y94CA8F4":63},{"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":31,"linkOnly":32,"markdownContent":33,"markdownBody":34,"frontMatter":35,"refName":28,"commitSha":41,"skillDirectory":42,"forksCount":43,"repositoryHtmlUrl":44,"repositoryHomepageUrl":45,"ownerHtmlUrl":46,"ownerBlogUrl":47,"ownerDescription":48,"updatedAt":49,"install":50,"resources":62},"01M6PQAH29FCQB6921Y94CA8F4","merge-risk",null,"Use when assessing the risk of merging a PR","bholmesdev\u002Fhubble.md","bholmesdev","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F51384119?v=4","01M6CP8SJ3N9W8FYVCGV41QT3G","Ben Holmes","01M6CP8SP3A84K1TFMVS8BEBDW",1523,"MIT","https:\u002F\u002Fgithub.com\u002Fbholmesdev\u002Fhubble.md\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Fmerge-risk\u002FSKILL.md",[],[19,20,21,22,23,24,25,26,27,28,29,30],"merge","risk","merge risk","github","pr","https","engineering","matt pocock","use","main","true","blob","2026-11-10 10:12:30",false,"---\nname: \"merge-risk\"\ndescription: \"Use when assessing the risk of merging a PR\"\nmetadata:\n  internal: true\n  credits:\n    skill: pr\n    author: Matt Pocock\n    url: \"https:\u002F\u002Fgithub.com\u002Fmattpocock\u002Fskills\u002Fblob\u002Fmain\u002Fskills\u002Fengineering\u002Fpr\u002FSKILL.md\"\n---\nOutput format:\n\n```\n**Merge risk: \u003Clow-medium-high>**\n\n**\u003Ccategory>:** \u003Cverdict>\n\u003Clist gaps that increase risk. Use bullets, keep succinct. Include links to relevant files as needed>\n\n\u003C...list all categories>\n```\n\nThese are the **categories** and **verdicts** that affect risk, with descriptions of what \"low risk\" means:\n\n- **Alignment (poor ⚠️ \u002F decent ? \u002F good ✅):** Code aligns with the description and source issue, when present. Behavior assumptions and drive-bys must be documented.\n- **Impact (large ⚠️ \u002F medium ? \u002F small ✅):** Scope is contained and away from sensitive code paths.\n  - Consider blast radius: potential impact or scope of the changes introduced by this PR. Consider all possibilities. Examples are layout shift, breakages for consumers, mobile responsiveness, etc.\n  - Sensitive areas carry outsized risk regardless of diff size: auth, permissions, payments, PII, secrets, data migrations, dependency bumps, and infra or config changes. Flag any that are touched, and call out anything that widens access, weakens validation, or logs sensitive data.\n- **Verification (poor ⚠️ \u002F decent ? \u002F good ✅):** Behavior is verified, where applicable.\n  - Changes to the user experience **need** end-to-end proof as screenshots or recordings. Changes that could meaningfully affect performance **need** profiling. Prefer before-and-after evidence to standalone proof. When this coverage is lacking, it's a failure.\n  - Edge cases must be tested, or documented when they aren't; review the code closely and link the user to relevant code when only documentation is present.\n- **Rollback cost (high ⚠️ \u002F medium ? \u002F low ✅):** The code is reversible once merged. Consider one-way vs. two-way doors. You can walk back through two-way doors, but not one-way doors. A PR that is cheap to roll back is lower risk. Changes that involve destructive actions or hard-to-reverse decisions are one-way doors.\n- **Error detection (poor ⚠️ \u002F decent ? \u002F good ✅ \u002F N\u002FA ✅):** If applicable, critical flows should be monitored; If this breaks in production, someone should find out before users report it. Look for swallowed errors or fallbacks that hide breakage.\n\nGenerate a risk score for merging this PR on a scale of low - medium - high.\n\nVerdicts:\n\n- ⚠️ = 3\n- ? = 2\n- ✅ = 1\n\nWeights:\n\n- Impact = 2x\n- Verification = 2x\n- Rollback cost = 1.5x\n- Error detection = 1x\n- Alignment = 1x\n\nScore = Σ(score × weight) \u002F Σ(weights).\n\n- low: \u003C 1.5\n- medium: 1.5 – \u003C 2.25\n- high: ≥ 2.25\n\nKeep the numerical score and its calculations internal; do not include them in the output.\n","Output format:\n\n```\n**Merge risk: \u003Clow-medium-high>**\n\n**\u003Ccategory>:** \u003Cverdict>\n\u003Clist gaps that increase risk. Use bullets, keep succinct. Include links to relevant files as needed>\n\n\u003C...list all categories>\n```\n\nThese are the **categories** and **verdicts** that affect risk, with descriptions of what \"low risk\" means:\n\n- **Alignment (poor ⚠️ \u002F decent ? \u002F good ✅):** Code aligns with the description and source issue, when present. Behavior assumptions and drive-bys must be documented.\n- **Impact (large ⚠️ \u002F medium ? \u002F small ✅):** Scope is contained and away from sensitive code paths.\n  - Consider blast radius: potential impact or scope of the changes introduced by this PR. Consider all possibilities. Examples are layout shift, breakages for consumers, mobile responsiveness, etc.\n  - Sensitive areas carry outsized risk regardless of diff size: auth, permissions, payments, PII, secrets, data migrations, dependency bumps, and infra or config changes. Flag any that are touched, and call out anything that widens access, weakens validation, or logs sensitive data.\n- **Verification (poor ⚠️ \u002F decent ? \u002F good ✅):** Behavior is verified, where applicable.\n  - Changes to the user experience **need** end-to-end proof as screenshots or recordings. Changes that could meaningfully affect performance **need** profiling. Prefer before-and-after evidence to standalone proof. When this coverage is lacking, it's a failure.\n  - Edge cases must be tested, or documented when they aren't; review the code closely and link the user to relevant code when only documentation is present.\n- **Rollback cost (high ⚠️ \u002F medium ? \u002F low ✅):** The code is reversible once merged. Consider one-way vs. two-way doors. You can walk back through two-way doors, but not one-way doors. A PR that is cheap to roll back is lower risk. Changes that involve destructive actions or hard-to-reverse decisions are one-way doors.\n- **Error detection (poor ⚠️ \u002F decent ? \u002F good ✅ \u002F N\u002FA ✅):** If applicable, critical flows should be monitored; If this breaks in production, someone should find out before users report it. Look for swallowed errors or fallbacks that hide breakage.\n\nGenerate a risk score for merging this PR on a scale of low - medium - high.\n\nVerdicts:\n\n- ⚠️ = 3\n- ? = 2\n- ✅ = 1\n\nWeights:\n\n- Impact = 2x\n- Verification = 2x\n- Rollback cost = 1.5x\n- Error detection = 1x\n- Alignment = 1x\n\nScore = Σ(score × weight) \u002F Σ(weights).\n\n- low: \u003C 1.5\n- medium: 1.5 – \u003C 2.25\n- high: ≥ 2.25\n\nKeep the numerical score and its calculations internal; do not include them in the output.\n",{"name":5,"metadata":36,"description":7},{"credits":37,"internal":40},{"url":38,"skill":23,"author":39},"https:\u002F\u002Fgithub.com\u002Fmattpocock\u002Fskills\u002Fblob\u002Fmain\u002Fskills\u002Fengineering\u002Fpr\u002FSKILL.md","Matt Pocock",true,"cf633b3221b9572f22604168ac77c1ffa921debe",".agents\u002Fskills\u002Fmerge-risk",99,"https:\u002F\u002Fgithub.com\u002Fbholmesdev\u002Fhubble.md","https:\u002F\u002Fhubble.md","https:\u002F\u002Fgithub.com\u002Fbholmesdev","https:\u002F\u002Fbholmes.dev","Web developer, teacher, whiteboardist. Building the next terminal @warpdotdev ","2026-11-06 02:02:39",{"source":8,"skillName":5,"commands":51,"prompt":61,"zipAvailable":40},[52,55,58],{"tool":53,"command":54},"npx","npx skills add bholmesdev\u002Fhubble.md --skill merge-risk",{"tool":56,"command":57},"bunx","bunx skills add bholmesdev\u002Fhubble.md --skill merge-risk",{"tool":59,"command":60},"pnpm","pnpm dlx skills add bholmesdev\u002Fhubble.md --skill merge-risk","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fbholmesdev\u002Fhubble.md\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Fmerge-risk\u002FSKILL.md",[],[64,83,103,123,148,158],{"skillNo":65,"name":66,"nameZh":6,"description":67,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":68,"categories":69,"keywords":75,"publishedAt":31},"01M6PQAVS5DTTVEV9VA313YSYM","review-markdown-comments","Reply to, resolve, or reopen Hubble review comments stored as CriticMarkup in Markdown files. Use when asked to address a Hubble review comment.","https:\u002F\u002Fgithub.com\u002Fbholmesdev\u002Fhubble.md\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Freview-markdown-comments\u002FSKILL.md",[70],{"categoryNo":71,"categoryName":72,"taxonomyType":73,"taxonomyTypeDesc":74},"01JBSEEDCAT000000000000002","文档处理","SCENARIO","使用场景",[76,77,78,79,27,80,81,82],"review markdown comments","comments","markdown","review","reply","files","as",{"skillNo":84,"name":85,"nameZh":6,"description":86,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":87,"categories":88,"keywords":93,"publishedAt":31},"01M6PQA0ADFHMANPW4KRAV7EA6","embed-html-app","Embed a Hubble HTML App inline inside a Markdown File using an iframe block. Use when an app should be viewed in the context of a document.","https:\u002F\u002Fgithub.com\u002Fbholmesdev\u002Fhubble.md\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Fembed-html-app\u002FSKILL.md",[89,90],{"categoryNo":71,"categoryName":72,"taxonomyType":73,"taxonomyTypeDesc":74},{"categoryNo":91,"categoryName":92,"taxonomyType":73,"taxonomyTypeDesc":74},"01JBSEEDCAT000000000000009","前端开发",[94,95,96,97,98,78,99,100,27,101,102],"embed html app","embed","app","html","context","file","document","block","inline",{"skillNo":104,"name":105,"nameZh":6,"description":106,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":107,"categories":108,"keywords":109,"publishedAt":31},"01M6PQ9WQM5HF4QQ1J750346NY","edit-diagram","Create or edit a Hubble diagram: a .tldr file Hubble opens in its built-in tldraw canvas. With this skill installed, any diagram, canvas, whiteboard, or .tldr file is a Hubble diagram: use this skill instead of tldraw-offline, unless the user names the tldraw offline app or the file is a .tldraw archive.","https:\u002F\u002Fgithub.com\u002Fbholmesdev\u002Fhubble.md\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Fedit-diagram\u002FSKILL.md",[],[110,111,112,113,114,115,96,27,116,117,118,119,120,121,99,122],"edit diagram","edit","diagram","with","whiteboard","tldraw","user","archive","tldr","canvas","create","offline","tldraw offline",{"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":133,"publishedAt":31},"01M6PQ9JKMF9ZDQWNVSA38VCTT","create-html-app","Create or update a Hubble HTML App: a folder-local .html file Hubble runs as a self-contained interactive UI, with Alpine, Tailwind, Hubble theme tokens, and the injected hubble runtime API.","https:\u002F\u002Fgithub.com\u002Fbholmesdev\u002Fhubble.md\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Fcreate-html-app\u002FSKILL.md",[129,130],{"categoryNo":91,"categoryName":92,"taxonomyType":73,"taxonomyTypeDesc":74},{"categoryNo":131,"categoryName":132,"taxonomyType":73,"taxonomyTypeDesc":74},"01JBSEEDCAT000000000000010","后端与接口",[134,96,97,120,135,136,99,137,138,139,140,141,142,143,144,145,82,146,113,147],"create html app","theme tokens","update","ui","api","Tailwind","interactive","self","local","tokens","runtime","alpine","theme","folder",{"skillNo":149,"name":150,"nameZh":6,"description":151,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":152,"categories":153,"keywords":154,"publishedAt":31},"01M6CPAR6ECFN9P9H1S4XWDCB1","convex","Routes general Convex requests to the right project skill. Use when the user asks which Convex skill to use or gives an underspecified Convex app task.","https:\u002F\u002Fgithub.com\u002Fbholmesdev\u002Fhubble.md\u002Fblob\u002Fmain\u002Fpackages\u002Fsync-backend\u002F.agents\u002Fskills\u002Fconvex\u002FSKILL.md",[],[150,155,156,27,116,157],"task","project skill","general",{"skillNo":159,"name":160,"nameZh":6,"description":161,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":162,"categories":163,"keywords":164,"publishedAt":31},"01M6CPAN2D6X1VYW8CDT2NAY5N","convex-setup-auth","Sets up Convex auth, identity mapping, and access control. Use for login, auth providers, users tables, protected functions, or roles in a Convex app.","https:\u002F\u002Fgithub.com\u002Fbholmesdev\u002Fhubble.md\u002Fblob\u002Fmain\u002Fpackages\u002Fsync-backend\u002F.agents\u002Fskills\u002Fconvex-setup-auth\u002FSKILL.md",[],[165,150,166,167,168,27,169,170,171,172,173,174],"convex setup auth","setup auth","auth","setup","up","access","Providers","identity","convex auth","functions"]