[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6D28VSSC9R9347DAQ89P5QR":3,"skill-same:01M6D28VSSC9R9347DAQ89P5QR":114},{"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":23,"publishedAt":36,"linkOnly":37,"markdownContent":38,"markdownBody":39,"frontMatter":40,"refName":41,"commitSha":42,"skillDirectory":43,"forksCount":44,"repositoryHtmlUrl":45,"repositoryHomepageUrl":46,"ownerHtmlUrl":47,"ownerBlogUrl":46,"ownerDescription":48,"updatedAt":49,"install":50,"resources":63},"01M6D28VSSC9R9347DAQ89P5QR","ui-audit",null,"Finding the marks of generated work in an interface that already exists: what to search the code for, how to judge each finding, and how to report and fix them. Read before reviewing, improving or redesigning an existing page or app.","enowdev\u002Fenowxcli","enowdev","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F179420349?v=4","01M6D1MVX2KC0X3Z9NESE7P22K","Enow Dev.","01M6D1MW1FMZGBDKWAJY4GQX81",67,"Apache-2.0","https:\u002F\u002Fgithub.com\u002Fenowdev\u002Fenowxcli\u002Fblob\u002Fmain\u002Fcrates\u002Fenowx-core\u002Fskills\u002Fui-audit\u002FSKILL.md",[18],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000030","开发工程师","PROFESSION","适用职业",[24,25,26,27,28,29,30,31,32,33,34,35],"audit","ui","ui audit","code","report","search","how","page","work","read","generated","fix","2026-11-10 10:12:30",false,"---\nname: ui-audit\ndescription: \"Finding the marks of generated work in an interface that already exists: what to search the code for, how to judge each finding, and how to report and fix them. Read before reviewing, improving or redesigning an existing page or app.\"\n---\n\n# Auditing an existing interface\n\nA page built by a model, or by hand from generated snippets, carries\nrecognisable marks. Most can be found in the code before the page is even\nopened. Audit first, then change: fixing a page without knowing what is\nwrong with it produces a different generic page.\n\n## 1. How to audit\n\n1. **Read the structure**: the page files, the components, the stylesheet or\n   theme, `DESIGN.md` if any. Note the direction the project already has.\n   An audit does not replace the owner's direction with yours.\n2. **Search**: run the `ui_check` tool on the interface; it runs most of the\n   searches in section 2 in one pass and lists the hits by priority. Use\n   `grep` for anything it does not cover. Each hit is a candidate, not a\n   verdict.\n3. **Judge each candidate**: a technique is slop when it is there by default\n   rather than for a reason (section 3). A gradient in the brand's own\n   palette is fine; the default blue-to-purple on every section is not.\n4. **Look at the rendered page** with the `preview` tool: overflow on a\n   phone, contrast as rendered, dead links, controls without a name, small\n   touch targets, console errors, a sidebar left open on a phone, content\n   floating beside a sidebar. A screen behind a sign-in is looked at with\n   `login` and a test account; without it the preview shows only the sign-in\n   form. Then the layout against the checks in the `ui-layout` skill:\n   positioning, focal point, text measure, rhythm, phone layout.\n5. **Check the structure** against `ui-structure`: does the page have the\n   regions its kind needs, in an order that answers the reader's questions,\n   on one skeleton (one container, gutters, one left edge, one surface per\n   level, the spacing scale, a breakpoint plan)? Then each control against\n   its contract in `ui-anatomy`: its variant fits its job, its size is on\n   the scale, it shows every state, the keyboard drives it. Structure comes\n   before taste: a tidy palette on a page with three left edges is a broken\n   page.\n6. **Report** (section 4), then fix what the task covers.\n\n## 2. What to search for\n\nSearch the source for each pattern; the list is where generated work\nusually shows.\n\n**Colour and effects**\n- Default gradients: `linear-gradient\\(.*(purple|violet|indigo|#6366f1|#8b5cf6|#a855f7)`,\n  `from-(purple|violet|indigo|blue)-[0-9]+ .*to-(purple|violet|pink|indigo)`,\n  `bg-clip-text` with a gradient (gradient headline text).\n- Glass everywhere: `backdrop-filter`, `backdrop-blur` on more than one or\n  two elements.\n- Glow: `box-shadow: 0 0 [0-9]+px`, `shadow-.*\u002F(50|60|70)`, `drop-shadow`\n  with a colour, on many elements.\n- Heavy shadows by default: `shadow-(xl|2xl)` on most cards.\n- Pills everywhere: `rounded-full` or `border-radius: 9999px` on buttons,\n  inputs, cards and badges together.\n- Decorative backgrounds: `radial-gradient` blobs, `bg-grid`, dot or grid\n  patterns, `blur-3xl` orbs.\n- Colours outside the tokens: `#[0-9a-fA-F]{3,8}`, `rgb\\(` outside the\n  token definitions; Tailwind arbitrary values `\\[#`.\n\n**Type**\n- Default fonts chosen without a reason: `Inter`, `Geist`, `Space Grotesk`,\n  `Poppins` with no design note.\n- Decorative labels: `uppercase` together with `tracking-widest` or\n  `letter-spacing: 0.2em` and more above headings.\n- Monospace as costume: `font-mono` on headings.\n\n**Copy**\n- Buzzwords: `unlock|elevate|empower|seamless|revolutioni|next-gen|cutting-edge|supercharge|effortless|game-chang|world-class|powerful`\n  (and the same words in the project's language).\n- Generic actions: `>\\s*(Get Started|Learn More|Try Now|Explore|Discover|Submit|Click here)\\s*\u003C`.\n- Em dashes in interface copy: `\\u2014` (search for the character itself).\n- Emoji in interface text: characters in the emoji ranges inside JSX, HTML\n  or strings rendered to the page (? ✨ ⚡ ? ✅ ? ?).\n- Placeholder text left in: `lorem ipsum`, `John Doe`, `jane@example`,\n  `Acme`, `Your Company`.\n\n**Fabricated content**\n- Invented figures: `[0-9]+[kKmM]?\\+`, `[0-9.]+%`, `99\\.9`, `10x`, near words\n  like users, customers, uptime, faster, rating.\n- Testimonials, star ratings, \"trusted by\" logo rows: search for\n  `testimonial`, `rating`, `stars`, `trusted`, `logos`. Real only with a\n  source.\n\n**Structure and behaviour**\n- Dead controls: `href=\"#\"`, `href=\"\"`, `onClick={() => {}}`, buttons with no\n  handler, nav links to anchors that do not exist.\n- Removed focus: `outline: none`, `outline-none` without a `focus-visible`\n  replacement.\n- Fixed viewport heights: `100vh`, `h-screen` on sections.\n- Fixed widths that break phones: `width: [0-9]{3,}px`, `w-\\[[0-9]{3,}px\\]`,\n  `min-width` on text containers.\n- Missing states: data fetching with no empty, loading or error branch.\n- Div soup: clickable `div`s (`\u003Cdiv onClick`), `div`s where `button`, `a`,\n  `nav`, `main` or `ul` belong; images with no `alt`.\n- Repetition: the same card markup copied three or more times instead of a\n  component; the same section composition repeated down the page.\n- Icons: emoji as icons; more than one icon library imported\n  (`lucide-react` and `react-icons` and `@heroicons` together); the generic\n  set (sparkles, rocket, zap, wand) on feature cards.\n\n**Positioning (application screens)**\n- A page column centred inside a shell: `mx-auto` with a `max-w-*` in the\n  component that wraps every screen (a `PageContainer`, a layout), or\n  `margin: 0 auto` on the content beside a sidebar (`ui-layout` 2b).\n- A sidebar with no narrow-screen state: an `aside` or sidebar with a fixed\n  width (`w-56`, `w-64`, `width: 240px`) and no `hidden`, `lg:` or media\n  query around it, and no Menu button that opens it as a drawer.\n- A filter or search area in its own card with a heading (\"Search and\n  filter\", a `SlidersHorizontal` icon before a title).\n- Controls in every row: steppers, inputs or selects inside table cells;\n  two or more buttons repeated on every row.\n- The same status badge on every row (\"Active\" on each).\n- A second job stacked under the first: another kind of record managed in a\n  section below the list.\n- A \"Reload\" or \"Refresh\" button beside the primary action.\n- Layout by hand: `float:`, `display: inline-block` rows, `position:\n  absolute` placing content (not an overlay), `\u003Cbr>` or empty `div`s for\n  space, `margin-(left|right|top): -` hacks, `&nbsp;` runs.\n- Gaps faked with margins: children with `margin-bottom`\u002F`mb-*` inside a\n  grid or flex row instead of the container's `gap`; gaps that differ\n  between rows of one grid.\n- Cards of one grid in different shapes: a `width`\u002F`w-*` on a card, images\n  without a fixed `aspect-ratio`, a fixed `height`\u002F`h-*` on cards, actions\n  not pushed down (`mt-auto`), so buttons sit at different heights.\n- Controls of different heights side by side: an input, a select and a\n  button in one row with different heights or padding.\n- Native dropdowns: `\u003Cselect` (or a `Select` from no component library)\n  outside a phone-first form. They render differently on every OS; use a\n  custom select (`ui-part-choices`, section 7).\n\n## 3. Judging a finding\n\nFor each candidate ask: what does this serve? Keep it when the answer names\na purpose (the brand's colour, a real hierarchy, a real status). It is slop\nwhen the only answer is \"it looks modern\" or there is no answer.\n\nRank what is left:\n\n- **High**: dishonest, broken or structurally wrong. Invented figures,\n  testimonials or logos, dead controls, removed focus, contrast below AA,\n  horizontal scroll or content cut off on a phone, content touching the\n  window's edge, sections on different left edges, panels of one level on\n  different surfaces, a page missing a region its kind needs (a dashboard\n  with no page header, a landing page with no clear primary action), a\n  selected state shown by a shade alone, a submit that accepts invalid\n  input, missing loading, empty or error states.\n- **Medium**: generated look. Default gradients and glass, identical card\n  grids, centred everything, buzzword copy, generic actions, emoji icons,\n  one composition repeated.\n- **Low**: consistency. Colours outside tokens, mixed icon sets, stray\n  radii, duplicated markup that should be a component.\n\n## 4. Reporting\n\nOpen with one verdict, the same scale as `review`: `Good` (sound\nstructure, tidy, nothing generated-looking left; never with a high\nfinding open, and never for a page you have not seen rendered), `Good with fixes`, `Needs work`, or `Bad` (the\nlayout or direction is wrong at the root; say what should replace it). Say\nit plainly: an untidy screen is untidy, a good one is good, with the reason.\nDrifting spacing, cards of different sizes and controls of different\nheights are findings, never left out to be kind.\n\nThen report findings as a numbered list, highest first, each with the file and\nline, what it is, why it reads as generated or what breaks, and the fix in\none line:\n\n```\n1. HIGH  app\u002Fpage.tsx:42  \"10,000+ happy clients\" has no source.\n   Fix: remove the figure, or mark it [REAL FIGURE].\n2. MED   components\u002FHero.tsx:12  purple-to-pink gradient headline, not in\n   the brand palette. Fix: solid text colour from the tokens.\n```\n\nThen, when the task is to improve the interface, fix the high and medium\nfindings in scope, following the `ui`, `ui-layout`, `ui-page-*` and `ui-part-*`\nskills, and say which you left and why. When the task is only to review,\nchange nothing.\n","# Auditing an existing interface\n\nA page built by a model, or by hand from generated snippets, carries\nrecognisable marks. Most can be found in the code before the page is even\nopened. Audit first, then change: fixing a page without knowing what is\nwrong with it produces a different generic page.\n\n## 1. How to audit\n\n1. **Read the structure**: the page files, the components, the stylesheet or\n   theme, `DESIGN.md` if any. Note the direction the project already has.\n   An audit does not replace the owner's direction with yours.\n2. **Search**: run the `ui_check` tool on the interface; it runs most of the\n   searches in section 2 in one pass and lists the hits by priority. Use\n   `grep` for anything it does not cover. Each hit is a candidate, not a\n   verdict.\n3. **Judge each candidate**: a technique is slop when it is there by default\n   rather than for a reason (section 3). A gradient in the brand's own\n   palette is fine; the default blue-to-purple on every section is not.\n4. **Look at the rendered page** with the `preview` tool: overflow on a\n   phone, contrast as rendered, dead links, controls without a name, small\n   touch targets, console errors, a sidebar left open on a phone, content\n   floating beside a sidebar. A screen behind a sign-in is looked at with\n   `login` and a test account; without it the preview shows only the sign-in\n   form. Then the layout against the checks in the `ui-layout` skill:\n   positioning, focal point, text measure, rhythm, phone layout.\n5. **Check the structure** against `ui-structure`: does the page have the\n   regions its kind needs, in an order that answers the reader's questions,\n   on one skeleton (one container, gutters, one left edge, one surface per\n   level, the spacing scale, a breakpoint plan)? Then each control against\n   its contract in `ui-anatomy`: its variant fits its job, its size is on\n   the scale, it shows every state, the keyboard drives it. Structure comes\n   before taste: a tidy palette on a page with three left edges is a broken\n   page.\n6. **Report** (section 4), then fix what the task covers.\n\n## 2. What to search for\n\nSearch the source for each pattern; the list is where generated work\nusually shows.\n\n**Colour and effects**\n- Default gradients: `linear-gradient\\(.*(purple|violet|indigo|#6366f1|#8b5cf6|#a855f7)`,\n  `from-(purple|violet|indigo|blue)-[0-9]+ .*to-(purple|violet|pink|indigo)`,\n  `bg-clip-text` with a gradient (gradient headline text).\n- Glass everywhere: `backdrop-filter`, `backdrop-blur` on more than one or\n  two elements.\n- Glow: `box-shadow: 0 0 [0-9]+px`, `shadow-.*\u002F(50|60|70)`, `drop-shadow`\n  with a colour, on many elements.\n- Heavy shadows by default: `shadow-(xl|2xl)` on most cards.\n- Pills everywhere: `rounded-full` or `border-radius: 9999px` on buttons,\n  inputs, cards and badges together.\n- Decorative backgrounds: `radial-gradient` blobs, `bg-grid`, dot or grid\n  patterns, `blur-3xl` orbs.\n- Colours outside the tokens: `#[0-9a-fA-F]{3,8}`, `rgb\\(` outside the\n  token definitions; Tailwind arbitrary values `\\[#`.\n\n**Type**\n- Default fonts chosen without a reason: `Inter`, `Geist`, `Space Grotesk`,\n  `Poppins` with no design note.\n- Decorative labels: `uppercase` together with `tracking-widest` or\n  `letter-spacing: 0.2em` and more above headings.\n- Monospace as costume: `font-mono` on headings.\n\n**Copy**\n- Buzzwords: `unlock|elevate|empower|seamless|revolutioni|next-gen|cutting-edge|supercharge|effortless|game-chang|world-class|powerful`\n  (and the same words in the project's language).\n- Generic actions: `>\\s*(Get Started|Learn More|Try Now|Explore|Discover|Submit|Click here)\\s*\u003C`.\n- Em dashes in interface copy: `\\u2014` (search for the character itself).\n- Emoji in interface text: characters in the emoji ranges inside JSX, HTML\n  or strings rendered to the page (? ✨ ⚡ ? ✅ ? ?).\n- Placeholder text left in: `lorem ipsum`, `John Doe`, `jane@example`,\n  `Acme`, `Your Company`.\n\n**Fabricated content**\n- Invented figures: `[0-9]+[kKmM]?\\+`, `[0-9.]+%`, `99\\.9`, `10x`, near words\n  like users, customers, uptime, faster, rating.\n- Testimonials, star ratings, \"trusted by\" logo rows: search for\n  `testimonial`, `rating`, `stars`, `trusted`, `logos`. Real only with a\n  source.\n\n**Structure and behaviour**\n- Dead controls: `href=\"#\"`, `href=\"\"`, `onClick={() => {}}`, buttons with no\n  handler, nav links to anchors that do not exist.\n- Removed focus: `outline: none`, `outline-none` without a `focus-visible`\n  replacement.\n- Fixed viewport heights: `100vh`, `h-screen` on sections.\n- Fixed widths that break phones: `width: [0-9]{3,}px`, `w-\\[[0-9]{3,}px\\]`,\n  `min-width` on text containers.\n- Missing states: data fetching with no empty, loading or error branch.\n- Div soup: clickable `div`s (`\u003Cdiv onClick`), `div`s where `button`, `a`,\n  `nav`, `main` or `ul` belong; images with no `alt`.\n- Repetition: the same card markup copied three or more times instead of a\n  component; the same section composition repeated down the page.\n- Icons: emoji as icons; more than one icon library imported\n  (`lucide-react` and `react-icons` and `@heroicons` together); the generic\n  set (sparkles, rocket, zap, wand) on feature cards.\n\n**Positioning (application screens)**\n- A page column centred inside a shell: `mx-auto` with a `max-w-*` in the\n  component that wraps every screen (a `PageContainer`, a layout), or\n  `margin: 0 auto` on the content beside a sidebar (`ui-layout` 2b).\n- A sidebar with no narrow-screen state: an `aside` or sidebar with a fixed\n  width (`w-56`, `w-64`, `width: 240px`) and no `hidden`, `lg:` or media\n  query around it, and no Menu button that opens it as a drawer.\n- A filter or search area in its own card with a heading (\"Search and\n  filter\", a `SlidersHorizontal` icon before a title).\n- Controls in every row: steppers, inputs or selects inside table cells;\n  two or more buttons repeated on every row.\n- The same status badge on every row (\"Active\" on each).\n- A second job stacked under the first: another kind of record managed in a\n  section below the list.\n- A \"Reload\" or \"Refresh\" button beside the primary action.\n- Layout by hand: `float:`, `display: inline-block` rows, `position:\n  absolute` placing content (not an overlay), `\u003Cbr>` or empty `div`s for\n  space, `margin-(left|right|top): -` hacks, `&nbsp;` runs.\n- Gaps faked with margins: children with `margin-bottom`\u002F`mb-*` inside a\n  grid or flex row instead of the container's `gap`; gaps that differ\n  between rows of one grid.\n- Cards of one grid in different shapes: a `width`\u002F`w-*` on a card, images\n  without a fixed `aspect-ratio`, a fixed `height`\u002F`h-*` on cards, actions\n  not pushed down (`mt-auto`), so buttons sit at different heights.\n- Controls of different heights side by side: an input, a select and a\n  button in one row with different heights or padding.\n- Native dropdowns: `\u003Cselect` (or a `Select` from no component library)\n  outside a phone-first form. They render differently on every OS; use a\n  custom select (`ui-part-choices`, section 7).\n\n## 3. Judging a finding\n\nFor each candidate ask: what does this serve? Keep it when the answer names\na purpose (the brand's colour, a real hierarchy, a real status). It is slop\nwhen the only answer is \"it looks modern\" or there is no answer.\n\nRank what is left:\n\n- **High**: dishonest, broken or structurally wrong. Invented figures,\n  testimonials or logos, dead controls, removed focus, contrast below AA,\n  horizontal scroll or content cut off on a phone, content touching the\n  window's edge, sections on different left edges, panels of one level on\n  different surfaces, a page missing a region its kind needs (a dashboard\n  with no page header, a landing page with no clear primary action), a\n  selected state shown by a shade alone, a submit that accepts invalid\n  input, missing loading, empty or error states.\n- **Medium**: generated look. Default gradients and glass, identical card\n  grids, centred everything, buzzword copy, generic actions, emoji icons,\n  one composition repeated.\n- **Low**: consistency. Colours outside tokens, mixed icon sets, stray\n  radii, duplicated markup that should be a component.\n\n## 4. Reporting\n\nOpen with one verdict, the same scale as `review`: `Good` (sound\nstructure, tidy, nothing generated-looking left; never with a high\nfinding open, and never for a page you have not seen rendered), `Good with fixes`, `Needs work`, or `Bad` (the\nlayout or direction is wrong at the root; say what should replace it). Say\nit plainly: an untidy screen is untidy, a good one is good, with the reason.\nDrifting spacing, cards of different sizes and controls of different\nheights are findings, never left out to be kind.\n\nThen report findings as a numbered list, highest first, each with the file and\nline, what it is, why it reads as generated or what breaks, and the fix in\none line:\n\n```\n1. HIGH  app\u002Fpage.tsx:42  \"10,000+ happy clients\" has no source.\n   Fix: remove the figure, or mark it [REAL FIGURE].\n2. MED   components\u002FHero.tsx:12  purple-to-pink gradient headline, not in\n   the brand palette. Fix: solid text colour from the tokens.\n```\n\nThen, when the task is to improve the interface, fix the high and medium\nfindings in scope, following the `ui`, `ui-layout`, `ui-page-*` and `ui-part-*`\nskills, and say which you left and why. When the task is only to review,\nchange nothing.\n",{"name":5,"description":7},"main","38293fe1b096e6bf3646c7344c38786ed688f464","crates\u002Fenowx-core\u002Fskills\u002Fui-audit",21,"https:\u002F\u002Fgithub.com\u002Fenowdev\u002Fenowxcli","https:\u002F\u002Fenowx.ai","https:\u002F\u002Fgithub.com\u002Fenowdev","Pretending to be a Developer","2026-10-06 02:05:35",{"source":8,"skillName":5,"commands":51,"prompt":61,"zipAvailable":62},[52,55,58],{"tool":53,"command":54},"npx","npx skills add enowdev\u002Fenowxcli --skill ui-audit",{"tool":56,"command":57},"bunx","bunx skills add enowdev\u002Fenowxcli --skill ui-audit",{"tool":59,"command":60},"pnpm","pnpm dlx skills add enowdev\u002Fenowxcli --skill ui-audit","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fenowdev\u002Fenowxcli\u002Fblob\u002Fmain\u002Fcrates\u002Fenowx-core\u002Fskills\u002Fui-audit\u002FSKILL.md",true,[64,70,74,78,82,86,90,94,98,102,106,110],{"path":65,"resourceType":66,"resourceTypeDesc":67,"sizeBytes":68,"sourceHtmlUrl":69},"references\u002Fai-cost-analysis.md","REFERENCE","参考文档",2169,"https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Fskills\u002Fblob\u002Fmain\u002F.github\u002Fplugins\u002Fazure-cost\u002Fskills\u002Fcost-analysis\u002Freferences\u002Fai-cost-analysis.md",{"path":71,"resourceType":66,"resourceTypeDesc":67,"sizeBytes":72,"sourceHtmlUrl":73},"references\u002Faks-anomaly.md",4635,"https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Fskills\u002Fblob\u002Fmain\u002F.github\u002Fplugins\u002Fazure-cost\u002Fskills\u002Fcost-analysis\u002Freferences\u002Faks-anomaly.md",{"path":75,"resourceType":66,"resourceTypeDesc":67,"sizeBytes":76,"sourceHtmlUrl":77},"references\u002Faks-cost-analysis.md",1531,"https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Fskills\u002Fblob\u002Fmain\u002F.github\u002Fplugins\u002Fazure-cost\u002Fskills\u002Fcost-analysis\u002Freferences\u002Faks-cost-analysis.md",{"path":79,"resourceType":66,"resourceTypeDesc":67,"sizeBytes":80,"sourceHtmlUrl":81},"references\u002Faks-enablement.md",1458,"https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Fskills\u002Fblob\u002Fmain\u002F.github\u002Fplugins\u002Fazure-cost\u002Fskills\u002Fcost-analysis\u002Freferences\u002Faks-enablement.md",{"path":83,"resourceType":66,"resourceTypeDesc":67,"sizeBytes":84,"sourceHtmlUrl":85},"references\u002Fcost-investigation.md",3247,"https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Fskills\u002Fblob\u002Fmain\u002F.github\u002Fplugins\u002Fazure-cost\u002Fskills\u002Fcost-analysis\u002Freferences\u002Fcost-investigation.md",{"path":87,"resourceType":66,"resourceTypeDesc":67,"sizeBytes":88,"sourceHtmlUrl":89},"references\u002Fcost-query\u002Fdimensions-by-scope.md",1534,"https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Fskills\u002Fblob\u002Fmain\u002F.github\u002Fplugins\u002Fazure-cost\u002Fskills\u002Fcost-analysis\u002Freferences\u002Fcost-query\u002Fdimensions-by-scope.md",{"path":91,"resourceType":66,"resourceTypeDesc":67,"sizeBytes":92,"sourceHtmlUrl":93},"references\u002Fcost-query\u002Ferror-handling.md",1557,"https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Fskills\u002Fblob\u002Fmain\u002F.github\u002Fplugins\u002Fazure-cost\u002Fskills\u002Fcost-analysis\u002Freferences\u002Fcost-query\u002Ferror-handling.md",{"path":95,"resourceType":66,"resourceTypeDesc":67,"sizeBytes":96,"sourceHtmlUrl":97},"references\u002Fcost-query\u002Fexamples.md",1183,"https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Fskills\u002Fblob\u002Fmain\u002F.github\u002Fplugins\u002Fazure-cost\u002Fskills\u002Fcost-analysis\u002Freferences\u002Fcost-query\u002Fexamples.md",{"path":99,"resourceType":66,"resourceTypeDesc":67,"sizeBytes":100,"sourceHtmlUrl":101},"references\u002Fcost-query\u002Fguardrails.md",1694,"https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Fskills\u002Fblob\u002Fmain\u002F.github\u002Fplugins\u002Fazure-cost\u002Fskills\u002Fcost-analysis\u002Freferences\u002Fcost-query\u002Fguardrails.md",{"path":103,"resourceType":66,"resourceTypeDesc":67,"sizeBytes":104,"sourceHtmlUrl":105},"references\u002Fcost-query\u002Frequest-body-schema.md",1448,"https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Fskills\u002Fblob\u002Fmain\u002F.github\u002Fplugins\u002Fazure-cost\u002Fskills\u002Fcost-analysis\u002Freferences\u002Fcost-query\u002Frequest-body-schema.md",{"path":107,"resourceType":66,"resourceTypeDesc":67,"sizeBytes":108,"sourceHtmlUrl":109},"references\u002Fcost-query\u002Fworkflow.md",2640,"https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Fskills\u002Fblob\u002Fmain\u002F.github\u002Fplugins\u002Fazure-cost\u002Fskills\u002Fcost-analysis\u002Freferences\u002Fcost-query\u002Fworkflow.md",{"path":111,"resourceType":66,"resourceTypeDesc":67,"sizeBytes":112,"sourceHtmlUrl":113},"references\u002Ftools-and-safety.md",2288,"https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Fskills\u002Fblob\u002Fmain\u002F.github\u002Fplugins\u002Fazure-cost\u002Fskills\u002Fcost-analysis\u002Freferences\u002Ftools-and-safety.md",[115,131,153,168,192,213],{"skillNo":116,"name":117,"nameZh":6,"description":118,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":119,"categories":120,"keywords":126,"publishedAt":36},"01M6D2HQYSQD9N7MTNDT4A7CBM","demo-skill","Project-scope demo skill for tests.","https:\u002F\u002Fgithub.com\u002Fenowdev\u002Fenowxcli\u002Fblob\u002Fmain\u002Fworkspace\u002F.agents\u002Fskills\u002Fdemo-skill\u002FSKILL.md",[121],{"categoryNo":122,"categoryName":123,"taxonomyType":124,"taxonomyTypeDesc":125},"01JBSEEDCAT000000000000023","Skill与智能体开发","SCENARIO","使用场景",[127,128,129,130,33],"demo skill","demo","tests","project",{"skillNo":132,"name":133,"nameZh":6,"description":134,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":135,"categories":136,"keywords":143,"publishedAt":36},"01M6D2HM0GCPM0TM2HPG9HHR2R","writing","Writing words people read: the specific thing instead of claims, words to drop, sentences, interface copy (buttons, labels, errors, empty states, confirmations), page copy, notifications and emails, alt text and link text, numbers and dates, words that translate well, documentation and voice. Read before writing a page's copy, an interface's text or a document.","https:\u002F\u002Fgithub.com\u002Fenowdev\u002Fenowxcli\u002Fblob\u002Fmain\u002Fcrates\u002Fenowx-core\u002Fskills\u002Fwriting\u002FSKILL.md",[137,140],{"categoryNo":138,"categoryName":139,"taxonomyType":124,"taxonomyTypeDesc":125},"01JBSEEDCAT000000000000018","写作与文案",{"categoryNo":141,"categoryName":142,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000036","内容创作者",[133,144,145,146,147,148,33,31,149,150,151,152],"text","emails","empty","drop","document","voice","notifications","documentation","translate",{"skillNo":154,"name":25,"nameZh":6,"description":155,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":156,"categories":157,"keywords":161,"publishedAt":36},"01M6D2HG07YS49NM196Q0R3AZ8","Designing or restyling an interface: direction, layout, type, colour, icons, components, states, responsive behaviour. Read before building a page, a screen or a set of components.","https:\u002F\u002Fgithub.com\u002Fenowdev\u002Fenowxcli\u002Fblob\u002Fmain\u002Fcrates\u002Fenowx-core\u002Fskills\u002Fui\u002FSKILL.md",[158],{"categoryNo":159,"categoryName":160,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000032","设计师",[25,162,163,164,165,31,166,33,167],"icons","components","SET","responsive","layout","before building",{"skillNo":169,"name":170,"nameZh":6,"description":171,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":172,"categories":173,"keywords":178,"publishedAt":36},"01M6D2HB59HZHWG1RYZDV4SJ91","ui-themes","Light and dark themes, and colour that holds in both: tokens with a value per theme, and what each kind of content needs to stay visible (icons, SVG drawings and line art, logos, photos, screenshots, charts, code, maps, borders, shadows, focus, form controls), switching without a flash, and checking both. Read before building a second theme or a theme toggle, and before any drawing, logo or chart on a page that has two themes.","https:\u002F\u002Fgithub.com\u002Fenowdev\u002Fenowxcli\u002Fblob\u002Fmain\u002Fcrates\u002Fenowx-core\u002Fskills\u002Fui-themes\u002FSKILL.md",[174,177],{"categoryNo":175,"categoryName":176,"taxonomyType":124,"taxonomyTypeDesc":125},"01JBSEEDCAT000000000000015","视觉设计",{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},[25,179,180,181,182,183,184,185,186,33,167,187,31,27,188,189,162,190,191],"ui themes","switching","photos","tokens","drawing","focus","maps","Art","flash","Charts","content","screenshots","logo",{"skillNo":193,"name":194,"nameZh":6,"description":195,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":196,"categories":197,"keywords":201,"publishedAt":36},"01M6D2H5R5KRAE524C8QX0T7Q0","ui-structure","Structure before styling: the blueprint written before any interface code (the screen's job, the regions its kind of page needs, their order and why, the layout skeleton in numbers, the components and their states), the anatomy and order of a homepage, a dashboard, a list, a detail page, settings, a form, sign-in, pricing, docs, an article and a checkout, and how to turn the blueprint into code (tokens, layout primitives, components, sections, page). Read first, before building or rebuilding any page or screen.","https:\u002F\u002Fgithub.com\u002Fenowdev\u002Fenowxcli\u002Fblob\u002Fmain\u002Fcrates\u002Fenowx-core\u002Fskills\u002Fui-structure\u002FSKILL.md",[198,199,200],{"categoryNo":138,"categoryName":139,"taxonomyType":124,"taxonomyTypeDesc":125},{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},{"categoryNo":141,"categoryName":142,"taxonomyType":21,"taxonomyTypeDesc":22},[202,25,203,163,204,205,27,206,207,208,166,182,209,210,211,33,167,31,212,30],"structure","ui structure","pricing","dashboard","Blueprint","article","anatomy","styling","primitives","list","why",{"skillNo":214,"name":215,"nameZh":6,"description":216,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":217,"categories":218,"keywords":226,"publishedAt":36},"01M6D2H0ZZBJG77MBGPZHA6MWD","ui-stack-vue","Building interfaces in Vue 3 and Nuxt: project layout, script setup with typed defineProps, defineEmits and defineModel, attribute fallthrough, slots and scoped slots, template refs, ref, reactive and computed, watch versus watchEffect, composables and VueUse, provide and inject, Pinia, keyed v-for, transitions, Nuxt 4 (app directory, pages, layouts, useFetch and useAsyncData keys, $fetch in handlers, server routes, runtime config, useSeoMeta, NuxtImg, middleware), VeeValidate forms, Reka UI and Nuxt UI, testing, vue-tsc, and the traps. Read when the project uses Vue or Nuxt.","https:\u002F\u002Fgithub.com\u002Fenowdev\u002Fenowxcli\u002Fblob\u002Fmain\u002Fcrates\u002Fenowx-core\u002Fskills\u002Fui-stack-vue\u002FSKILL.md",[219,222,225],{"categoryNo":220,"categoryName":221,"taxonomyType":124,"taxonomyTypeDesc":125},"01JBSEEDCAT000000000000008","测试与质量",{"categoryNo":223,"categoryName":224,"taxonomyType":124,"taxonomyTypeDesc":125},"01JBSEEDCAT000000000000009","前端开发",{"categoryNo":159,"categoryName":160,"taxonomyType":21,"taxonomyTypeDesc":22},[25,227,228,229,230,231,232,233,166,130,234,235,33,236,237,238,239,240,241,242],"vue","stack","ui stack vue","forms","pages","watch","runtime","transitions","fetch","pinia","nuxt","template","server","config","directory","testing"]