[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6C4PB6VVC2X19B63B7YNH0T":3,"skill-same:01M6C4PB6VVC2X19B63B7YNH0T":291},{"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":28,"publishedAt":37,"linkOnly":38,"markdownContent":39,"markdownBody":40,"frontMatter":41,"refName":42,"commitSha":43,"skillDirectory":44,"forksCount":45,"repositoryHtmlUrl":46,"repositoryHomepageUrl":6,"ownerHtmlUrl":47,"ownerBlogUrl":48,"ownerDescription":49,"updatedAt":50,"install":51,"resources":64},"01M6C4PB6VVC2X19B63B7YNH0T","web-design",null,"WHEN refining UI layout, typography, color, or polish; NOT code implementation; provides concise principles for intentional, legible design.","mintuz\u002Fskills","mintuz","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F447031?v=4","01M6BVWJYSVR4XQC9AQCEMWQRG","Adam Bulmer","01M6C4DCXKNYZB281YB3PZDJJG",35,"MIT","https:\u002F\u002Fgithub.com\u002Fmintuz\u002Fskills\u002Fblob\u002Fmain\u002Fsrc\u002Fweb\u002Fskills\u002Fweb-design\u002FSKILL.md",[18,23],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000015","视觉设计","SCENARIO","使用场景",{"categoryNo":24,"categoryName":25,"taxonomyType":26,"taxonomyTypeDesc":27},"01JBSEEDCAT000000000000032","设计师","PROFESSION","适用职业",[29,30,31,32,33,34,35,36],"design","web","web design","code","code implementation","ui","polish","typography","2026-11-10 10:12:30",false,"---\nname: web-design\ndescription: WHEN refining UI layout, typography, color, or polish; NOT code implementation; provides concise principles for intentional, legible design.\n---\n\n# Web Design\n\nAim for clear hierarchy, generous spacing, and restrained styling.\n\n## Scope and Inputs\n\n- Give design decisions, not implementation code: state the visual and state specification, and leave the component source, utility classes, and engineering choices to the engineer. Say so when a request asks for them.\n- When a request conflicts with legibility or access, keep its intent: name each part you refuse, give the reason, and state the substitute treatment that delivers the same intent.\n- Choose and name the values that are yours to choose: sizes, weights, spacing, radii, and breakpoints. A value you select is a decision, not an invention, so state it instead of deferring it to later testing.\n- Never invent a product or brand fact, such as a brand colour, a surface colour, a price, or a measured result.\n- When a decision needs a fact you were not given: name each blocking fact, state the constraint it must satisfy, give the decision as a condition, and say what to change if the condition fails. Never certify a result you cannot measure (`principle-never-block-on-the-human`, `principle-gaps-are-not-passes`).\n\n## Visual Hierarchy & Focus\n\n- Group related elements by proximity and aligned edges, not as scattered, evenly spaced elements competing for attention.\n- Build hierarchy with weight and size before colour: `font-weight: 600` and size changes beat random accent colours.\n- Reduce noise: use spacing, background tints, or subtle dividers instead of heavy outlines and extra borders.\n\n## Layout & Spacing\n\n- Use a consistent 4px or 8px scale.\n- Make vertical rhythm obvious: larger gaps between sections than between labels and inputs.\n- Set max widths for readability (e.g. `max-width: 1280px` for pages, `68-70ch` for text blocks).\n- Size containers from their content: avoid fixed heights, and lose no content as text grows, because translated strings run longer and readers enlarge text up to 200%. Truncate only when the complete text stays available through a clearly marked control.\n- As available width falls, reduce the column count; state the minimum comfortable width for one column instead of compressing every column.\n- Pad clickable areas generously (12–16px vertical, 16–24px horizontal) so touch targets feel confident.\n\n## Typography\n\n- Use one font family; create contrast with weight, size, and letter-spacing.\n- Name the concrete sizes and line heights you choose (e.g. `32\u002F40`, `24\u002F32`, `18\u002F28`, `16\u002F24`, `14\u002F20`) and reuse them; never refer to “a small type scale” without its values.\n- Letter-space uppercase labels (about 0.08em); de-emphasise metadata with colour, not excessive shrinking.\n\n## Colour & Contrast\n\n- Start with neutrals; let one accent colour carry primary actions. Use softened greys instead of pure black or white.\n- Build palettes by lightening and darkening one hue: low-saturation tints for surfaces, bolder shades for actions.\n- Give text on tints at least 4.5:1 contrast for normal text and at least 3:1 for large text (24px and larger, or 18.66px and larger when bold). Add a subtle border where a tinted panel touches a white background.\n- Pair colour meaning (success\u002Finfo\u002Fwarn\u002Fdanger) with an icon or text so colour-blind users are covered.\n\n## Depth, Shape & Elevation\n\n- Prefer soft, diffuse shadows for elevation (slight offset, low-opacity blur); avoid harsh, opaque drop shadows.\n- Keep radii consistent (e.g. 8–12px across inputs, cards, modals); match inner elements to the parent radius.\n- Separate stacked surfaces with a light border or a faint shadow, not both.\n\n## Components That Feel Designed\n\n- Buttons: one clear primary, a low-emphasis secondary (ghost\u002Ftext), and a destructive variant, all with consistent padding and radius. Set emphasis by the task, not the consequence: when destruction is the main task of the screen, the destructive action carries the primary weight; otherwise give it the lowest emphasis that still leaves it findable, so it never competes with the primary action.\n- Forms: pair every input with a clear label (never placeholder-as-label), show inline validation close to the field, and use generous vertical spacing.\n- Lists\u002Ftables: increase row height, soften alternating backgrounds, and highlight the primary cell with weight or colour.\n- Icons: keep stroke weight consistent; pair icons with labels unless the meaning is universal; balance visual weight with padding.\n\n## States, Feedback & Empty Space\n\n- For each distinct control pattern, specify a visibly distinct treatment for every applicable state: hover, active, focus, loading, disabled, error, empty, and success. Note where one control departs from its pattern. Listing state names, or stating only that the states must differ, is incomplete.\n- Show loading with skeletons or subtle shimmer, not spinners alone; give friendly empty states a short “what to do next.”\n- Clarify errors with colour, icon, and text; reserve red for errors and use calmer hues for neutral info.\n- Treat whitespace as a design tool, not wasted space.\n\n## Compositional Polish\n\n- Keep gaps, radii, shadows, and border colours consistent across the entire UI.\n- Replace visual clutter (dividers, lines, boxes) with spacing and alignment; let one strong anchor (title or primary action) lead (`principle-earn-every-element`).\n- Put a dark or light overlay behind text on images to keep it legible.\n\n## Delivery Check\n\nBefore replying, confirm (`principle-define-done`):\n\n- A primary action that is not itself destructive stays visually distinct from red error or destructive meaning.\n- Every applicable state of each control pattern has its visible treatment specified.\n- Every action has a named emphasis (primary, secondary, or low) and every destructive action is marked.\n- Radius, spacing, and comfortably sized touch targets are given as named values on one consistent system, and every named value fits the declared scale.\n- Every piece of required copy, such as the empty state's next step, is present rather than implied.\n- Every refused request is paired with the replacement that keeps its intent.\n","# Web Design\n\nAim for clear hierarchy, generous spacing, and restrained styling.\n\n## Scope and Inputs\n\n- Give design decisions, not implementation code: state the visual and state specification, and leave the component source, utility classes, and engineering choices to the engineer. Say so when a request asks for them.\n- When a request conflicts with legibility or access, keep its intent: name each part you refuse, give the reason, and state the substitute treatment that delivers the same intent.\n- Choose and name the values that are yours to choose: sizes, weights, spacing, radii, and breakpoints. A value you select is a decision, not an invention, so state it instead of deferring it to later testing.\n- Never invent a product or brand fact, such as a brand colour, a surface colour, a price, or a measured result.\n- When a decision needs a fact you were not given: name each blocking fact, state the constraint it must satisfy, give the decision as a condition, and say what to change if the condition fails. Never certify a result you cannot measure (`principle-never-block-on-the-human`, `principle-gaps-are-not-passes`).\n\n## Visual Hierarchy & Focus\n\n- Group related elements by proximity and aligned edges, not as scattered, evenly spaced elements competing for attention.\n- Build hierarchy with weight and size before colour: `font-weight: 600` and size changes beat random accent colours.\n- Reduce noise: use spacing, background tints, or subtle dividers instead of heavy outlines and extra borders.\n\n## Layout & Spacing\n\n- Use a consistent 4px or 8px scale.\n- Make vertical rhythm obvious: larger gaps between sections than between labels and inputs.\n- Set max widths for readability (e.g. `max-width: 1280px` for pages, `68-70ch` for text blocks).\n- Size containers from their content: avoid fixed heights, and lose no content as text grows, because translated strings run longer and readers enlarge text up to 200%. Truncate only when the complete text stays available through a clearly marked control.\n- As available width falls, reduce the column count; state the minimum comfortable width for one column instead of compressing every column.\n- Pad clickable areas generously (12–16px vertical, 16–24px horizontal) so touch targets feel confident.\n\n## Typography\n\n- Use one font family; create contrast with weight, size, and letter-spacing.\n- Name the concrete sizes and line heights you choose (e.g. `32\u002F40`, `24\u002F32`, `18\u002F28`, `16\u002F24`, `14\u002F20`) and reuse them; never refer to “a small type scale” without its values.\n- Letter-space uppercase labels (about 0.08em); de-emphasise metadata with colour, not excessive shrinking.\n\n## Colour & Contrast\n\n- Start with neutrals; let one accent colour carry primary actions. Use softened greys instead of pure black or white.\n- Build palettes by lightening and darkening one hue: low-saturation tints for surfaces, bolder shades for actions.\n- Give text on tints at least 4.5:1 contrast for normal text and at least 3:1 for large text (24px and larger, or 18.66px and larger when bold). Add a subtle border where a tinted panel touches a white background.\n- Pair colour meaning (success\u002Finfo\u002Fwarn\u002Fdanger) with an icon or text so colour-blind users are covered.\n\n## Depth, Shape & Elevation\n\n- Prefer soft, diffuse shadows for elevation (slight offset, low-opacity blur); avoid harsh, opaque drop shadows.\n- Keep radii consistent (e.g. 8–12px across inputs, cards, modals); match inner elements to the parent radius.\n- Separate stacked surfaces with a light border or a faint shadow, not both.\n\n## Components That Feel Designed\n\n- Buttons: one clear primary, a low-emphasis secondary (ghost\u002Ftext), and a destructive variant, all with consistent padding and radius. Set emphasis by the task, not the consequence: when destruction is the main task of the screen, the destructive action carries the primary weight; otherwise give it the lowest emphasis that still leaves it findable, so it never competes with the primary action.\n- Forms: pair every input with a clear label (never placeholder-as-label), show inline validation close to the field, and use generous vertical spacing.\n- Lists\u002Ftables: increase row height, soften alternating backgrounds, and highlight the primary cell with weight or colour.\n- Icons: keep stroke weight consistent; pair icons with labels unless the meaning is universal; balance visual weight with padding.\n\n## States, Feedback & Empty Space\n\n- For each distinct control pattern, specify a visibly distinct treatment for every applicable state: hover, active, focus, loading, disabled, error, empty, and success. Note where one control departs from its pattern. Listing state names, or stating only that the states must differ, is incomplete.\n- Show loading with skeletons or subtle shimmer, not spinners alone; give friendly empty states a short “what to do next.”\n- Clarify errors with colour, icon, and text; reserve red for errors and use calmer hues for neutral info.\n- Treat whitespace as a design tool, not wasted space.\n\n## Compositional Polish\n\n- Keep gaps, radii, shadows, and border colours consistent across the entire UI.\n- Replace visual clutter (dividers, lines, boxes) with spacing and alignment; let one strong anchor (title or primary action) lead (`principle-earn-every-element`).\n- Put a dark or light overlay behind text on images to keep it legible.\n\n## Delivery Check\n\nBefore replying, confirm (`principle-define-done`):\n\n- A primary action that is not itself destructive stays visually distinct from red error or destructive meaning.\n- Every applicable state of each control pattern has its visible treatment specified.\n- Every action has a named emphasis (primary, secondary, or low) and every destructive action is marked.\n- Radius, spacing, and comfortably sized touch targets are given as named values on one consistent system, and every named value fits the declared scale.\n- Every piece of required copy, such as the empty state's next step, is present rather than implied.\n- Every refused request is paired with the replacement that keeps its intent.\n",{"name":5,"description":7},"main","4e0a12b5048eac78a3ace4feee657873cdd530ef","src\u002Fweb\u002Fskills\u002Fweb-design",7,"https:\u002F\u002Fgithub.com\u002Fmintuz\u002Fskills","https:\u002F\u002Fgithub.com\u002Fmintuz","http:\u002F\u002Fwww.mintuz.com","Working at @monzo, Previously worked at Moonpig, @booking and @bbc","2026-11-13 19:21:11",{"source":8,"skillName":5,"commands":52,"prompt":62,"zipAvailable":63},[53,56,59],{"tool":54,"command":55},"npx","npx skills add mintuz\u002Fskills --skill web-design",{"tool":57,"command":58},"bunx","bunx skills add mintuz\u002Fskills --skill web-design",{"tool":60,"command":61},"pnpm","pnpm dlx skills add mintuz\u002Fskills --skill web-design","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fmintuz\u002Fskills\u002Fblob\u002Fmain\u002Fsrc\u002Fweb\u002Fskills\u002Fweb-design\u002FSKILL.md",true,[65,71,77,81,85,89,93,97,101,105,109,113,117,121,125,129,133,137,141,145,149,153,157,161,165,169,173,177,181,185,189,193,197,201,205,209,213,217,221,225,229,233,237,243,247,251,255,259,263,267,271,275,279,283,287],{"path":66,"resourceType":67,"resourceTypeDesc":68,"sizeBytes":69,"sourceHtmlUrl":70},"html2pptx.md","REFERENCE","参考文档",19859,"https:\u002F\u002Fgithub.com\u002Fboisenoise\u002Fskills-collections\u002Fblob\u002Fmain\u002Fskills\u002Fantigravity-pptx\u002Fhtml2pptx.md",{"path":72,"resourceType":73,"resourceTypeDesc":74,"sizeBytes":75,"sourceHtmlUrl":76},"LICENSE.txt","LICENSE","许可证",1467,"https:\u002F\u002Fgithub.com\u002Fboisenoise\u002Fskills-collections\u002Fblob\u002Fmain\u002Fskills\u002Fantigravity-pptx\u002FLICENSE.txt",{"path":78,"resourceType":67,"resourceTypeDesc":68,"sizeBytes":79,"sourceHtmlUrl":80},"ooxml.md",10388,"https:\u002F\u002Fgithub.com\u002Fboisenoise\u002Fskills-collections\u002Fblob\u002Fmain\u002Fskills\u002Fantigravity-pptx\u002Fooxml.md",{"path":82,"resourceType":67,"resourceTypeDesc":68,"sizeBytes":83,"sourceHtmlUrl":84},"ooxml\u002Fschemas\u002Fecma\u002Ffouth-edition\u002Fopc-contentTypes.xsd",1963,"https:\u002F\u002Fgithub.com\u002Fboisenoise\u002Fskills-collections\u002Fblob\u002Fmain\u002Fskills\u002Fantigravity-pptx\u002Fooxml\u002Fschemas\u002Fecma\u002Ffouth-edition\u002Fopc-contentTypes.xsd",{"path":86,"resourceType":67,"resourceTypeDesc":68,"sizeBytes":87,"sourceHtmlUrl":88},"ooxml\u002Fschemas\u002Fecma\u002Ffouth-edition\u002Fopc-coreProperties.xsd",2515,"https:\u002F\u002Fgithub.com\u002Fboisenoise\u002Fskills-collections\u002Fblob\u002Fmain\u002Fskills\u002Fantigravity-pptx\u002Fooxml\u002Fschemas\u002Fecma\u002Ffouth-edition\u002Fopc-coreProperties.xsd",{"path":90,"resourceType":67,"resourceTypeDesc":68,"sizeBytes":91,"sourceHtmlUrl":92},"ooxml\u002Fschemas\u002Fecma\u002Ffouth-edition\u002Fopc-digSig.xsd",2856,"https:\u002F\u002Fgithub.com\u002Fboisenoise\u002Fskills-collections\u002Fblob\u002Fmain\u002Fskills\u002Fantigravity-pptx\u002Fooxml\u002Fschemas\u002Fecma\u002Ffouth-edition\u002Fopc-digSig.xsd",{"path":94,"resourceType":67,"resourceTypeDesc":68,"sizeBytes":95,"sourceHtmlUrl":96},"ooxml\u002Fschemas\u002Fecma\u002Ffouth-edition\u002Fopc-relationships.xsd",1344,"https:\u002F\u002Fgithub.com\u002Fboisenoise\u002Fskills-collections\u002Fblob\u002Fmain\u002Fskills\u002Fantigravity-pptx\u002Fooxml\u002Fschemas\u002Fecma\u002Ffouth-edition\u002Fopc-relationships.xsd",{"path":98,"resourceType":67,"resourceTypeDesc":68,"sizeBytes":99,"sourceHtmlUrl":100},"ooxml\u002Fschemas\u002FISO-IEC29500-4_2016\u002Fdml-chart.xsd",74984,"https:\u002F\u002Fgithub.com\u002Fboisenoise\u002Fskills-collections\u002Fblob\u002Fmain\u002Fskills\u002Fantigravity-pptx\u002Fooxml\u002Fschemas\u002FISO-IEC29500-4_2016\u002Fdml-chart.xsd",{"path":102,"resourceType":67,"resourceTypeDesc":68,"sizeBytes":103,"sourceHtmlUrl":104},"ooxml\u002Fschemas\u002FISO-IEC29500-4_2016\u002Fdml-chartDrawing.xsd",6956,"https:\u002F\u002Fgithub.com\u002Fboisenoise\u002Fskills-collections\u002Fblob\u002Fmain\u002Fskills\u002Fantigravity-pptx\u002Fooxml\u002Fschemas\u002FISO-IEC29500-4_2016\u002Fdml-chartDrawing.xsd",{"path":106,"resourceType":67,"resourceTypeDesc":68,"sizeBytes":107,"sourceHtmlUrl":108},"ooxml\u002Fschemas\u002FISO-IEC29500-4_2016\u002Fdml-diagram.xsd",51302,"https:\u002F\u002Fgithub.com\u002Fboisenoise\u002Fskills-collections\u002Fblob\u002Fmain\u002Fskills\u002Fantigravity-pptx\u002Fooxml\u002Fschemas\u002FISO-IEC29500-4_2016\u002Fdml-diagram.xsd",{"path":110,"resourceType":67,"resourceTypeDesc":68,"sizeBytes":111,"sourceHtmlUrl":112},"ooxml\u002Fschemas\u002FISO-IEC29500-4_2016\u002Fdml-lockedCanvas.xsd",624,"https:\u002F\u002Fgithub.com\u002Fboisenoise\u002Fskills-collections\u002Fblob\u002Fmain\u002Fskills\u002Fantigravity-pptx\u002Fooxml\u002Fschemas\u002FISO-IEC29500-4_2016\u002Fdml-lockedCanvas.xsd",{"path":114,"resourceType":67,"resourceTypeDesc":68,"sizeBytes":115,"sourceHtmlUrl":116},"ooxml\u002Fschemas\u002FISO-IEC29500-4_2016\u002Fdml-main.xsd",152039,"https:\u002F\u002Fgithub.com\u002Fboisenoise\u002Fskills-collections\u002Fblob\u002Fmain\u002Fskills\u002Fantigravity-pptx\u002Fooxml\u002Fschemas\u002FISO-IEC29500-4_2016\u002Fdml-main.xsd",{"path":118,"resourceType":67,"resourceTypeDesc":68,"sizeBytes":119,"sourceHtmlUrl":120},"ooxml\u002Fschemas\u002FISO-IEC29500-4_2016\u002Fdml-picture.xsd",1231,"https:\u002F\u002Fgithub.com\u002Fboisenoise\u002Fskills-collections\u002Fblob\u002Fmain\u002Fskills\u002Fantigravity-pptx\u002Fooxml\u002Fschemas\u002FISO-IEC29500-4_2016\u002Fdml-picture.xsd",{"path":122,"resourceType":67,"resourceTypeDesc":68,"sizeBytes":123,"sourceHtmlUrl":124},"ooxml\u002Fschemas\u002FISO-IEC29500-4_2016\u002Fdml-spreadsheetDrawing.xsd",8862,"https:\u002F\u002Fgithub.com\u002Fboisenoise\u002Fskills-collections\u002Fblob\u002Fmain\u002Fskills\u002Fantigravity-pptx\u002Fooxml\u002Fschemas\u002FISO-IEC29500-4_2016\u002Fdml-spreadsheetDrawing.xsd",{"path":126,"resourceType":67,"resourceTypeDesc":68,"sizeBytes":127,"sourceHtmlUrl":128},"ooxml\u002Fschemas\u002FISO-IEC29500-4_2016\u002Fdml-wordprocessingDrawing.xsd",14795,"https:\u002F\u002Fgithub.com\u002Fboisenoise\u002Fskills-collections\u002Fblob\u002Fmain\u002Fskills\u002Fantigravity-pptx\u002Fooxml\u002Fschemas\u002FISO-IEC29500-4_2016\u002Fdml-wordprocessingDrawing.xsd",{"path":130,"resourceType":67,"resourceTypeDesc":68,"sizeBytes":131,"sourceHtmlUrl":132},"ooxml\u002Fschemas\u002FISO-IEC29500-4_2016\u002Fpml.xsd",83612,"https:\u002F\u002Fgithub.com\u002Fboisenoise\u002Fskills-collections\u002Fblob\u002Fmain\u002Fskills\u002Fantigravity-pptx\u002Fooxml\u002Fschemas\u002FISO-IEC29500-4_2016\u002Fpml.xsd",{"path":134,"resourceType":67,"resourceTypeDesc":68,"sizeBytes":135,"sourceHtmlUrl":136},"ooxml\u002Fschemas\u002FISO-IEC29500-4_2016\u002Fshared-additionalCharacteristics.xsd",1269,"https:\u002F\u002Fgithub.com\u002Fboisenoise\u002Fskills-collections\u002Fblob\u002Fmain\u002Fskills\u002Fantigravity-pptx\u002Fooxml\u002Fschemas\u002FISO-IEC29500-4_2016\u002Fshared-additionalCharacteristics.xsd",{"path":138,"resourceType":67,"resourceTypeDesc":68,"sizeBytes":139,"sourceHtmlUrl":140},"ooxml\u002Fschemas\u002FISO-IEC29500-4_2016\u002Fshared-bibliography.xsd",7328,"https:\u002F\u002Fgithub.com\u002Fboisenoise\u002Fskills-collections\u002Fblob\u002Fmain\u002Fskills\u002Fantigravity-pptx\u002Fooxml\u002Fschemas\u002FISO-IEC29500-4_2016\u002Fshared-bibliography.xsd",{"path":142,"resourceType":67,"resourceTypeDesc":68,"sizeBytes":143,"sourceHtmlUrl":144},"ooxml\u002Fschemas\u002FISO-IEC29500-4_2016\u002Fshared-commonSimpleTypes.xsd",6382,"https:\u002F\u002Fgithub.com\u002Fboisenoise\u002Fskills-collections\u002Fblob\u002Fmain\u002Fskills\u002Fantigravity-pptx\u002Fooxml\u002Fschemas\u002FISO-IEC29500-4_2016\u002Fshared-commonSimpleTypes.xsd",{"path":146,"resourceType":67,"resourceTypeDesc":68,"sizeBytes":147,"sourceHtmlUrl":148},"ooxml\u002Fschemas\u002FISO-IEC29500-4_2016\u002Fshared-customXmlDataProperties.xsd",1248,"https:\u002F\u002Fgithub.com\u002Fboisenoise\u002Fskills-collections\u002Fblob\u002Fmain\u002Fskills\u002Fantigravity-pptx\u002Fooxml\u002Fschemas\u002FISO-IEC29500-4_2016\u002Fshared-customXmlDataProperties.xsd",{"path":150,"resourceType":67,"resourceTypeDesc":68,"sizeBytes":151,"sourceHtmlUrl":152},"ooxml\u002Fschemas\u002FISO-IEC29500-4_2016\u002Fshared-customXmlSchemaProperties.xsd",880,"https:\u002F\u002Fgithub.com\u002Fboisenoise\u002Fskills-collections\u002Fblob\u002Fmain\u002Fskills\u002Fantigravity-pptx\u002Fooxml\u002Fschemas\u002FISO-IEC29500-4_2016\u002Fshared-customXmlSchemaProperties.xsd",{"path":154,"resourceType":67,"resourceTypeDesc":68,"sizeBytes":155,"sourceHtmlUrl":156},"ooxml\u002Fschemas\u002FISO-IEC29500-4_2016\u002Fshared-documentPropertiesCustom.xsd",2608,"https:\u002F\u002Fgithub.com\u002Fboisenoise\u002Fskills-collections\u002Fblob\u002Fmain\u002Fskills\u002Fantigravity-pptx\u002Fooxml\u002Fschemas\u002FISO-IEC29500-4_2016\u002Fshared-documentPropertiesCustom.xsd",{"path":158,"resourceType":67,"resourceTypeDesc":68,"sizeBytes":159,"sourceHtmlUrl":160},"ooxml\u002Fschemas\u002FISO-IEC29500-4_2016\u002Fshared-documentPropertiesExtended.xsd",3507,"https:\u002F\u002Fgithub.com\u002Fboisenoise\u002Fskills-collections\u002Fblob\u002Fmain\u002Fskills\u002Fantigravity-pptx\u002Fooxml\u002Fschemas\u002FISO-IEC29500-4_2016\u002Fshared-documentPropertiesExtended.xsd",{"path":162,"resourceType":67,"resourceTypeDesc":68,"sizeBytes":163,"sourceHtmlUrl":164},"ooxml\u002Fschemas\u002FISO-IEC29500-4_2016\u002Fshared-documentPropertiesVariantTypes.xsd",7507,"https:\u002F\u002Fgithub.com\u002Fboisenoise\u002Fskills-collections\u002Fblob\u002Fmain\u002Fskills\u002Fantigravity-pptx\u002Fooxml\u002Fschemas\u002FISO-IEC29500-4_2016\u002Fshared-documentPropertiesVariantTypes.xsd",{"path":166,"resourceType":67,"resourceTypeDesc":68,"sizeBytes":167,"sourceHtmlUrl":168},"ooxml\u002Fschemas\u002FISO-IEC29500-4_2016\u002Fshared-math.xsd",23313,"https:\u002F\u002Fgithub.com\u002Fboisenoise\u002Fskills-collections\u002Fblob\u002Fmain\u002Fskills\u002Fantigravity-pptx\u002Fooxml\u002Fschemas\u002FISO-IEC29500-4_2016\u002Fshared-math.xsd",{"path":170,"resourceType":67,"resourceTypeDesc":68,"sizeBytes":171,"sourceHtmlUrl":172},"ooxml\u002Fschemas\u002FISO-IEC29500-4_2016\u002Fshared-relationshipReference.xsd",1367,"https:\u002F\u002Fgithub.com\u002Fboisenoise\u002Fskills-collections\u002Fblob\u002Fmain\u002Fskills\u002Fantigravity-pptx\u002Fooxml\u002Fschemas\u002FISO-IEC29500-4_2016\u002Fshared-relationshipReference.xsd",{"path":174,"resourceType":67,"resourceTypeDesc":68,"sizeBytes":175,"sourceHtmlUrl":176},"ooxml\u002Fschemas\u002FISO-IEC29500-4_2016\u002Fsml.xsd",242277,"https:\u002F\u002Fgithub.com\u002Fboisenoise\u002Fskills-collections\u002Fblob\u002Fmain\u002Fskills\u002Fantigravity-pptx\u002Fooxml\u002Fschemas\u002FISO-IEC29500-4_2016\u002Fsml.xsd",{"path":178,"resourceType":67,"resourceTypeDesc":68,"sizeBytes":179,"sourceHtmlUrl":180},"ooxml\u002Fschemas\u002FISO-IEC29500-4_2016\u002Fvml-main.xsd",26148,"https:\u002F\u002Fgithub.com\u002Fboisenoise\u002Fskills-collections\u002Fblob\u002Fmain\u002Fskills\u002Fantigravity-pptx\u002Fooxml\u002Fschemas\u002FISO-IEC29500-4_2016\u002Fvml-main.xsd",{"path":182,"resourceType":67,"resourceTypeDesc":68,"sizeBytes":183,"sourceHtmlUrl":184},"ooxml\u002Fschemas\u002FISO-IEC29500-4_2016\u002Fvml-officeDrawing.xsd",25279,"https:\u002F\u002Fgithub.com\u002Fboisenoise\u002Fskills-collections\u002Fblob\u002Fmain\u002Fskills\u002Fantigravity-pptx\u002Fooxml\u002Fschemas\u002FISO-IEC29500-4_2016\u002Fvml-officeDrawing.xsd",{"path":186,"resourceType":67,"resourceTypeDesc":68,"sizeBytes":187,"sourceHtmlUrl":188},"ooxml\u002Fschemas\u002FISO-IEC29500-4_2016\u002Fvml-presentationDrawing.xsd",535,"https:\u002F\u002Fgithub.com\u002Fboisenoise\u002Fskills-collections\u002Fblob\u002Fmain\u002Fskills\u002Fantigravity-pptx\u002Fooxml\u002Fschemas\u002FISO-IEC29500-4_2016\u002Fvml-presentationDrawing.xsd",{"path":190,"resourceType":67,"resourceTypeDesc":68,"sizeBytes":191,"sourceHtmlUrl":192},"ooxml\u002Fschemas\u002FISO-IEC29500-4_2016\u002Fvml-spreadsheetDrawing.xsd",5712,"https:\u002F\u002Fgithub.com\u002Fboisenoise\u002Fskills-collections\u002Fblob\u002Fmain\u002Fskills\u002Fantigravity-pptx\u002Fooxml\u002Fschemas\u002FISO-IEC29500-4_2016\u002Fvml-spreadsheetDrawing.xsd",{"path":194,"resourceType":67,"resourceTypeDesc":68,"sizeBytes":195,"sourceHtmlUrl":196},"ooxml\u002Fschemas\u002FISO-IEC29500-4_2016\u002Fvml-wordprocessingDrawing.xsd",4010,"https:\u002F\u002Fgithub.com\u002Fboisenoise\u002Fskills-collections\u002Fblob\u002Fmain\u002Fskills\u002Fantigravity-pptx\u002Fooxml\u002Fschemas\u002FISO-IEC29500-4_2016\u002Fvml-wordprocessingDrawing.xsd",{"path":198,"resourceType":67,"resourceTypeDesc":68,"sizeBytes":199,"sourceHtmlUrl":200},"ooxml\u002Fschemas\u002FISO-IEC29500-4_2016\u002Fwml.xsd",171367,"https:\u002F\u002Fgithub.com\u002Fboisenoise\u002Fskills-collections\u002Fblob\u002Fmain\u002Fskills\u002Fantigravity-pptx\u002Fooxml\u002Fschemas\u002FISO-IEC29500-4_2016\u002Fwml.xsd",{"path":202,"resourceType":67,"resourceTypeDesc":68,"sizeBytes":203,"sourceHtmlUrl":204},"ooxml\u002Fschemas\u002FISO-IEC29500-4_2016\u002Fxml.xsd",4646,"https:\u002F\u002Fgithub.com\u002Fboisenoise\u002Fskills-collections\u002Fblob\u002Fmain\u002Fskills\u002Fantigravity-pptx\u002Fooxml\u002Fschemas\u002FISO-IEC29500-4_2016\u002Fxml.xsd",{"path":206,"resourceType":67,"resourceTypeDesc":68,"sizeBytes":207,"sourceHtmlUrl":208},"ooxml\u002Fschemas\u002Fmce\u002Fmc.xsd",3127,"https:\u002F\u002Fgithub.com\u002Fboisenoise\u002Fskills-collections\u002Fblob\u002Fmain\u002Fskills\u002Fantigravity-pptx\u002Fooxml\u002Fschemas\u002Fmce\u002Fmc.xsd",{"path":210,"resourceType":67,"resourceTypeDesc":68,"sizeBytes":211,"sourceHtmlUrl":212},"ooxml\u002Fschemas\u002Fmicrosoft\u002Fwml-2010.xsd",26549,"https:\u002F\u002Fgithub.com\u002Fboisenoise\u002Fskills-collections\u002Fblob\u002Fmain\u002Fskills\u002Fantigravity-pptx\u002Fooxml\u002Fschemas\u002Fmicrosoft\u002Fwml-2010.xsd",{"path":214,"resourceType":67,"resourceTypeDesc":68,"sizeBytes":215,"sourceHtmlUrl":216},"ooxml\u002Fschemas\u002Fmicrosoft\u002Fwml-2012.xsd",3745,"https:\u002F\u002Fgithub.com\u002Fboisenoise\u002Fskills-collections\u002Fblob\u002Fmain\u002Fskills\u002Fantigravity-pptx\u002Fooxml\u002Fschemas\u002Fmicrosoft\u002Fwml-2012.xsd",{"path":218,"resourceType":67,"resourceTypeDesc":68,"sizeBytes":219,"sourceHtmlUrl":220},"ooxml\u002Fschemas\u002Fmicrosoft\u002Fwml-2018.xsd",901,"https:\u002F\u002Fgithub.com\u002Fboisenoise\u002Fskills-collections\u002Fblob\u002Fmain\u002Fskills\u002Fantigravity-pptx\u002Fooxml\u002Fschemas\u002Fmicrosoft\u002Fwml-2018.xsd",{"path":222,"resourceType":67,"resourceTypeDesc":68,"sizeBytes":223,"sourceHtmlUrl":224},"ooxml\u002Fschemas\u002Fmicrosoft\u002Fwml-cex-2018.xsd",1778,"https:\u002F\u002Fgithub.com\u002Fboisenoise\u002Fskills-collections\u002Fblob\u002Fmain\u002Fskills\u002Fantigravity-pptx\u002Fooxml\u002Fschemas\u002Fmicrosoft\u002Fwml-cex-2018.xsd",{"path":226,"resourceType":67,"resourceTypeDesc":68,"sizeBytes":227,"sourceHtmlUrl":228},"ooxml\u002Fschemas\u002Fmicrosoft\u002Fwml-cid-2016.xsd",1002,"https:\u002F\u002Fgithub.com\u002Fboisenoise\u002Fskills-collections\u002Fblob\u002Fmain\u002Fskills\u002Fantigravity-pptx\u002Fooxml\u002Fschemas\u002Fmicrosoft\u002Fwml-cid-2016.xsd",{"path":230,"resourceType":67,"resourceTypeDesc":68,"sizeBytes":231,"sourceHtmlUrl":232},"ooxml\u002Fschemas\u002Fmicrosoft\u002Fwml-sdtdatahash-2020.xsd",600,"https:\u002F\u002Fgithub.com\u002Fboisenoise\u002Fskills-collections\u002Fblob\u002Fmain\u002Fskills\u002Fantigravity-pptx\u002Fooxml\u002Fschemas\u002Fmicrosoft\u002Fwml-sdtdatahash-2020.xsd",{"path":234,"resourceType":67,"resourceTypeDesc":68,"sizeBytes":235,"sourceHtmlUrl":236},"ooxml\u002Fschemas\u002Fmicrosoft\u002Fwml-symex-2015.xsd",745,"https:\u002F\u002Fgithub.com\u002Fboisenoise\u002Fskills-collections\u002Fblob\u002Fmain\u002Fskills\u002Fantigravity-pptx\u002Fooxml\u002Fschemas\u002Fmicrosoft\u002Fwml-symex-2015.xsd",{"path":238,"resourceType":239,"resourceTypeDesc":240,"sizeBytes":241,"sourceHtmlUrl":242},"ooxml\u002Fscripts\u002Fpack.py","SCRIPT","脚本",7218,"https:\u002F\u002Fgithub.com\u002Fboisenoise\u002Fskills-collections\u002Fblob\u002Fmain\u002Fskills\u002Fantigravity-pptx\u002Fooxml\u002Fscripts\u002Fpack.py",{"path":244,"resourceType":239,"resourceTypeDesc":240,"sizeBytes":245,"sourceHtmlUrl":246},"ooxml\u002Fscripts\u002Funpack.py",3897,"https:\u002F\u002Fgithub.com\u002Fboisenoise\u002Fskills-collections\u002Fblob\u002Fmain\u002Fskills\u002Fantigravity-pptx\u002Fooxml\u002Fscripts\u002Funpack.py",{"path":248,"resourceType":239,"resourceTypeDesc":240,"sizeBytes":249,"sourceHtmlUrl":250},"ooxml\u002Fscripts\u002Fvalidate.py",1959,"https:\u002F\u002Fgithub.com\u002Fboisenoise\u002Fskills-collections\u002Fblob\u002Fmain\u002Fskills\u002Fantigravity-pptx\u002Fooxml\u002Fscripts\u002Fvalidate.py",{"path":252,"resourceType":239,"resourceTypeDesc":240,"sizeBytes":253,"sourceHtmlUrl":254},"ooxml\u002Fscripts\u002Fvalidation\u002F__init__.py",336,"https:\u002F\u002Fgithub.com\u002Fboisenoise\u002Fskills-collections\u002Fblob\u002Fmain\u002Fskills\u002Fantigravity-pptx\u002Fooxml\u002Fscripts\u002Fvalidation\u002F__init__.py",{"path":256,"resourceType":239,"resourceTypeDesc":240,"sizeBytes":257,"sourceHtmlUrl":258},"ooxml\u002Fscripts\u002Fvalidation\u002Fbase.py",40700,"https:\u002F\u002Fgithub.com\u002Fboisenoise\u002Fskills-collections\u002Fblob\u002Fmain\u002Fskills\u002Fantigravity-pptx\u002Fooxml\u002Fscripts\u002Fvalidation\u002Fbase.py",{"path":260,"resourceType":239,"resourceTypeDesc":240,"sizeBytes":261,"sourceHtmlUrl":262},"ooxml\u002Fscripts\u002Fvalidation\u002Fdocx.py",10730,"https:\u002F\u002Fgithub.com\u002Fboisenoise\u002Fskills-collections\u002Fblob\u002Fmain\u002Fskills\u002Fantigravity-pptx\u002Fooxml\u002Fscripts\u002Fvalidation\u002Fdocx.py",{"path":264,"resourceType":239,"resourceTypeDesc":240,"sizeBytes":265,"sourceHtmlUrl":266},"ooxml\u002Fscripts\u002Fvalidation\u002Fpptx.py",12303,"https:\u002F\u002Fgithub.com\u002Fboisenoise\u002Fskills-collections\u002Fblob\u002Fmain\u002Fskills\u002Fantigravity-pptx\u002Fooxml\u002Fscripts\u002Fvalidation\u002Fpptx.py",{"path":268,"resourceType":239,"resourceTypeDesc":240,"sizeBytes":269,"sourceHtmlUrl":270},"ooxml\u002Fscripts\u002Fvalidation\u002Fredlining.py",11854,"https:\u002F\u002Fgithub.com\u002Fboisenoise\u002Fskills-collections\u002Fblob\u002Fmain\u002Fskills\u002Fantigravity-pptx\u002Fooxml\u002Fscripts\u002Fvalidation\u002Fredlining.py",{"path":272,"resourceType":239,"resourceTypeDesc":240,"sizeBytes":273,"sourceHtmlUrl":274},"scripts\u002Fhtml2pptx.js",39013,"https:\u002F\u002Fgithub.com\u002Fboisenoise\u002Fskills-collections\u002Fblob\u002Fmain\u002Fskills\u002Fantigravity-pptx\u002Fscripts\u002Fhtml2pptx.js",{"path":276,"resourceType":239,"resourceTypeDesc":240,"sizeBytes":277,"sourceHtmlUrl":278},"scripts\u002Finventory.py",38671,"https:\u002F\u002Fgithub.com\u002Fboisenoise\u002Fskills-collections\u002Fblob\u002Fmain\u002Fskills\u002Fantigravity-pptx\u002Fscripts\u002Finventory.py",{"path":280,"resourceType":239,"resourceTypeDesc":240,"sizeBytes":281,"sourceHtmlUrl":282},"scripts\u002Frearrange.py",9037,"https:\u002F\u002Fgithub.com\u002Fboisenoise\u002Fskills-collections\u002Fblob\u002Fmain\u002Fskills\u002Fantigravity-pptx\u002Fscripts\u002Frearrange.py",{"path":284,"resourceType":239,"resourceTypeDesc":240,"sizeBytes":285,"sourceHtmlUrl":286},"scripts\u002Freplace.py",14127,"https:\u002F\u002Fgithub.com\u002Fboisenoise\u002Fskills-collections\u002Fblob\u002Fmain\u002Fskills\u002Fantigravity-pptx\u002Fscripts\u002Freplace.py",{"path":288,"resourceType":239,"resourceTypeDesc":240,"sizeBytes":289,"sourceHtmlUrl":290},"scripts\u002Fthumbnail.py",15484,"https:\u002F\u002Fgithub.com\u002Fboisenoise\u002Fskills-collections\u002Fblob\u002Fmain\u002Fskills\u002Fantigravity-pptx\u002Fscripts\u002Fthumbnail.py",[292,313,326,347,364,380],{"skillNo":293,"name":294,"nameZh":6,"description":295,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":296,"categories":297,"keywords":304,"publishedAt":37},"01M6C4PDGB6ZZWBS35N3DF7PZZ","xstate","WHEN React state changes in response to an external answer — async submit, in-flight or loading flags, retries, cancellation, polling, optimistic updates, stale responses — or to an interaction with an interruptible middle, such as a drag or a gesture; or WHEN building, reviewing, testing, or visualising XState 5 actors and @xstate\u002Freact integrations; NOT for a value one event sets completely, such as a text draft, a focus flag, or a plain open and closed toggle; models typed lifecycles and renders legal Mermaid stateDiagram-v2 charts.","https:\u002F\u002Fgithub.com\u002Fmintuz\u002Fskills\u002Fblob\u002Fmain\u002Fsrc\u002Fweb\u002Fskills\u002Fxstate\u002FSKILL.md",[298,301],{"categoryNo":299,"categoryName":300,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000008","测试与质量",{"categoryNo":302,"categoryName":303,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000009","前端开发",[294,305,306,307,308,309,310,311,312],"react","text","state","integrations","Charts","mermaid","testing","open",{"skillNo":314,"name":315,"nameZh":6,"description":316,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":317,"categories":318,"keywords":320,"publishedAt":37},"01M6C4P8D92GJDA49V7X1CZXEV","tailwind","USE WHEN writing, fixing or reviewing styling in a project that uses Tailwind CSS, even a one-class change or a request that does not name Tailwind: colours, focus rings, spacing, class names chosen by a prop, map or CVA variants, theme tokens and dark mode in the Tailwind stylesheet or tailwind.config, setup or upgrades (if unsure whether the project uses Tailwind, check package.json or the main stylesheet first); NOT WHEN writing plain CSS or Sass in a project without Tailwind; produces class names Tailwind can find, syntax for the installed major version, visible focus indicators, and no unrequested dependency or invented brand value.","https:\u002F\u002Fgithub.com\u002Fmintuz\u002Fskills\u002Fblob\u002Fmain\u002Fsrc\u002Fweb\u002Fskills\u002Ftailwind\u002FSKILL.md",[319],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},[321,322,323,324,29,325],"Tailwind","libraries","component","css","design systems",{"skillNo":327,"name":328,"nameZh":6,"description":329,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":330,"categories":331,"keywords":335,"publishedAt":37},"01M6C4P5VWQ69Q32DA0634GDJY","refactoring","WHEN you need a plan to refactor, restructure, or clean up working code and the test result is known, either green or a recorded failing set; NOT for new feature delivery or any behavior change; reversible-baseline safety with prioritized improvements.","https:\u002F\u002Fgithub.com\u002Fmintuz\u002Fskills\u002Fblob\u002Fmain\u002Fsrc\u002Fweb\u002Fskills\u002Frefactoring\u002FSKILL.md",[332],{"categoryNo":333,"categoryName":334,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000007","代码审查",[328,336,337,338,339,340,341,342,343,32,344,345,346],"feature delivery","test","SET","new feature","plan","change","behavior","baseline","Safety","up","refactor",{"skillNo":348,"name":305,"nameZh":6,"description":349,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":350,"categories":351,"keywords":354,"publishedAt":37},"01M6C4P345APEFEX00J8T7QMXQ","USE WHEN changing the logic, data, props, state, Effects or rendered text of a React component, hook or page, even a one-line change; NOT WHEN the request is styling only (class names, Tailwind, CSS, dark mode, spacing, shadows) or tests only, or when it models submit, in-flight, loading, retry or failure states, even for a named React form (xstate covers that, including its React wiring); applies React 19 composition, state, Effect, structure, API and performance rules with only the project's installed libraries.","https:\u002F\u002Fgithub.com\u002Fmintuz\u002Fskills\u002Fblob\u002Fmain\u002Fsrc\u002Fweb\u002Fskills\u002Freact\u002FSKILL.md",[352,353],{"categoryNo":299,"categoryName":300,"taxonomyType":21,"taxonomyTypeDesc":22},{"categoryNo":302,"categoryName":303,"taxonomyType":21,"taxonomyTypeDesc":22},[305,355,356,324,321,357,311,358,32,359,360,361,362,307,337,363],"management","styling","performance","hooks","components","architecture","api","react components","state management",{"skillNo":365,"name":366,"nameZh":6,"description":367,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":368,"categories":369,"keywords":372,"publishedAt":37},"01M6C4P0DK385QBG3B3S86TQV2","react-testing","USE WHEN writing, fixing or reviewing a React Testing Library test for a component, hook or context provider, even one small test, or when asked for an end-to-end journey inside a Vitest or React Testing Library suite; NOT WHEN changing the component itself (react), testing XState actors or @xstate\u002Freact (xstate), or writing a Playwright or Cypress test; covers renderHook, providers, async results, forms and false-pass anti-patterns, and declines end-to-end journeys with the testable slices.","https:\u002F\u002Fgithub.com\u002Fmintuz\u002Fskills\u002Fblob\u002Fmain\u002Fsrc\u002Fweb\u002Fskills\u002Freact-testing\u002FSKILL.md",[370,371],{"categoryNo":299,"categoryName":300,"taxonomyType":21,"taxonomyTypeDesc":22},{"categoryNo":302,"categoryName":303,"taxonomyType":21,"taxonomyTypeDesc":22},[373,305,311,374,375,358,376,377,378,359,379,362],"react testing","context","anti-patterns","e2e","library","testing library","Providers",{"skillNo":381,"name":382,"nameZh":6,"description":383,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":384,"categories":385,"keywords":388,"publishedAt":37},"01M6C4NY0FTYGTS7THKRAC20T3","frontend-testing","USE WHEN testing non-React UI (vanilla JavaScript or TypeScript DOM code, a web component, or a Vue, Svelte or Angular component) with DOM Testing Library in Vitest or Jest with jsdom: writing, fixing or reviewing a test, or a request to add an end-to-end journey or a layout check to that suite; NOT WHEN the code or project uses React or React Testing Library (use web:react-testing), for XState actors (web:xstate), or for Playwright, Cypress or screenshot-comparison work in a real browser; covers queries, accessible names, userEvent, async results, network stubs and assertions that pass for the wrong reason, and declines what jsdom cannot prove while offering the part that fits.","https:\u002F\u002Fgithub.com\u002Fmintuz\u002Fskills\u002Fblob\u002Fmain\u002Fsrc\u002Fweb\u002Fskills\u002Ffrontend-testing\u002FSKILL.md",[386,387],{"categoryNo":299,"categoryName":300,"taxonomyType":21,"taxonomyTypeDesc":22},{"categoryNo":302,"categoryName":303,"taxonomyType":21,"taxonomyTypeDesc":22},[311,389,390,391,392,393,342,377,378,34],"frontend","frontend testing","browser","first","regression"]