[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6D2HM0GCPM0TM2HPG9HHR2R":3,"skill-same:01M6D2HM0GCPM0TM2HPG9HHR2R":104},{"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":40,"linkOnly":41,"markdownContent":42,"markdownBody":43,"frontMatter":44,"refName":45,"commitSha":46,"skillDirectory":47,"forksCount":48,"repositoryHtmlUrl":49,"repositoryHomepageUrl":50,"ownerHtmlUrl":51,"ownerBlogUrl":50,"ownerDescription":52,"updatedAt":53,"install":54,"resources":67},"01M6D2HM0GCPM0TM2HPG9HHR2R","writing",null,"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.","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\u002Fwriting\u002FSKILL.md",[18,23],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000018","写作与文案","SCENARIO","使用场景",{"categoryNo":24,"categoryName":25,"taxonomyType":26,"taxonomyTypeDesc":27},"01JBSEEDCAT000000000000036","内容创作者","PROFESSION","适用职业",[5,29,30,31,32,33,34,35,36,37,38,39],"translate","documentation","notifications","voice","text","page","read","document","drop","empty","emails","2026-11-10 10:12:30",false,"---\nname: writing\ndescription: \"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.\"\n---\n\n# Writing a person would sign\n\nGenerated prose gives itself away: \"Unlock the power of\", \"seamless\", \"In\ntoday's fast-paced world\", three adjectives where one fact belongs, numbers\nnobody measured, a cheerful closing line. This is how to write so that every\nsentence tells the reader something.\n\n## 1. Say the specific thing\n\n- Name what the product does, for whom, with what result, in the reader's\n  words. \"Sends a reminder when an invoice is 7 days overdue\" says more than\n  \"Streamline your billing workflow\".\n- Evidence over claims. With no real number, customer or quote, there is no\n  statistic, logo or testimonial: say what the product does instead.\n- Never invent facts, names, figures, quotes or features. A placeholder says\n  it is one: `[Customer quote]`.\n- Facts about the business that you were not given (its name, prices,\n  opening hours, policies, what it accepts) are placeholders on the page\n  itself, `[Business name]`, `[Price]`, not plausible guesses. A guess reads\n  as a promise the business never made.\n\n## 2. Words to drop\n\n- Words that promise and say nothing: unlock, elevate, empower, seamless,\n  leverage, robust, cutting-edge, next-generation, revolutionary,\n  game-changing, powerful, effortless, supercharge, delve, journey,\n  landscape, testament. Replace each with the concrete thing it stands for,\n  or delete it.\n- Stock moves: \"In today's…\" openings, \"It's not just X, it's Y\",\n  rhetorical questions, \"Let's dive in\", \"Here's the thing\", and closings\n  such as \"I hope this helps\".\n\n## 3. Sentences\n\n- Short sentences and plain words. Active voice with the actor named (\"We\n  update the price\", not \"The price is updated\") unless the actor is unknown\n  or beside the point.\n- One idea per sentence. Cut filler: \"in order to\" is \"to\"; \"it is important\n  to note that\" is nothing.\n- No em dashes: use a comma, a full stop, a colon or brackets. No stacks of\n  three adjectives, and no list of three out of habit: a list has as many\n  items as the content has.\n- Sentence case for headings and buttons. No capitals for emphasis and no\n  emoji as decoration.\n\n## 4. Interface copy\n\n- Buttons say what happens: \"Create invoice\", \"Send reminder\", \"Delete\n  project\". Not \"Get started\", \"Learn more\", \"Submit\", \"Explore\" or \"Click\n  here\".\n- A headline states the benefit or the fact, and the line under it backs it\n  with a detail. No slogan that would fit any product.\n- Labels are the nouns the user uses (\"Due date\"); help text says what to\n  enter and why; a placeholder is an example, never the label.\n- Errors say what happened, why if it is known, and what to do next, in the\n  user's terms: \"That card was declined. Try another card, or ask your bank.\"\n  Not \"Error 402\" or \"Something went wrong\".\n- Empty states say why the view is empty and the one action that fills it:\n  \"No invoices yet. Create your first one.\"\n- Confirmations name the consequence: \"Delete 3 files? This cannot be\n  undone.\"\n- One term per concept everywhere: \"project\", not \"project\" on one screen,\n  \"workspace\" on the next and \"space\" on a third.\n- Interface text goes through i18n, and a translation keeps the terms its\n  audience keeps in English (API key, token, webhook, email): the `i18n`\n  skill says what to translate and what to leave.\n\n## 4a. Page copy\n\n- A page reads in layers: the headline says the one thing, the line under it\n  backs it with a detail, each section heading says its point (not\n  \"Features\"), and the body gives the evidence. Someone who reads only the\n  headings still gets the argument.\n- Lead with the reader's problem or outcome, then how the product gets\n  there. One idea per section; paragraphs of two to four sentences; lists\n  when items are parallel.\n- Numbers, names and examples from the real product. Where they are\n  missing, a visible placeholder, never a plausible invention.\n- The call to action repeats the page's one action in the same words each\n  time.\n\n## 4b. Notifications and email\n\n- A subject line or title that says what happened (\"Invoice INV-104 was\n  paid\"), not \"Update from Acme\".\n- The first sentence carries the news; the action is one button that names\n  it; the reason the person received the message and how to change that\n  are at the end.\n- Transactional messages stay transactional: no marketing inside a password\n  reset.\n- Push notifications are short, specific and rare; never \"We miss you\".\n\n## 4c. Alt text, link text and labels for assistive technology\n\n- Alt text says what the image shows that matters here, in a sentence\n  (\"Chart: sign-ups doubled after the March launch\"), not \"image of\". A\n  decorative image gets `alt=\"\"`.\n- Link text makes sense alone: \"Read the pricing details\", not \"click here\"\n  or a bare URL; icon buttons have a name that says the action (\"Close\n  dialog\").\n\n## 4d. Numbers, dates and small things\n\n- Numerals for numbers (\"3 files\"), the reader's locale formats for dates,\n  times, currency and thousands (through `Intl`, not hand-written), units\n  always, and ranges written \"5 to 10\" in prose.\n- Time relative when recent (\"2 hours ago\"), absolute when it matters\n  (\"Due 12 March, 17:00\").\n- Sentence case, no full stop on headings, buttons or single-line labels; a\n  full stop on sentences in help text and errors.\n- Plural forms handled by the i18n library, never \"1 file(s)\".\n\n## 4e. Words that translate\n\n- Whole sentences as single strings, never glued from pieces (\"You have\" +\n  count + \"items\"): word order differs between languages.\n- No idioms, puns or cultural references in interface text; they do not\n  survive translation.\n- Room for text to grow by 30 to 40% in other languages; no text baked into\n  images.\n- One term per concept, kept in a glossary when the product has one.\n\n## 5. Documentation\n\n- Answer the reader's first question first: what this is and how to run it,\n  on the first screen.\n- Show, then explain: a working command or example before the paragraph\n  about it.\n- Describe what the code does now, read from the code, not guessed from\n  names. Mark anything you could not check.\n- Structure follows the content: no \"Features, Benefits, Conclusion\"\n  template, no section with nothing to say. A changelog says what changed\n  for the user; a commit message says what changed and why.\n\n## 6. Voice\n\n- Match the product's voice where it has one (existing copy, a style guide).\n  Otherwise: direct, warm and unhurried, like a colleague who knows the\n  subject.\n- No hype, no false modesty, no apologising for the product, and an\n  exclamation mark only for a genuine moment.\n\n## 6a. Inclusive and plain\n\n- Plain language a reader in a hurry understands: common words, the\n  reader's terms, jargon only where the audience uses it, acronyms spelled\n  out once.\n- People first, no assumptions about gender (they, you), ability, age or\n  culture; examples with a range of names.\n- No blame in errors (\"That code has expired\", not \"You entered a wrong\n  code\").\n\n## 7. Before you call it done\n\nRead it aloud. Delete every sentence that would fit another product, every\nword that adds nothing, and every claim you cannot back. Check every button,\nerror and empty state says what happens or what to do.\n","# Writing a person would sign\n\nGenerated prose gives itself away: \"Unlock the power of\", \"seamless\", \"In\ntoday's fast-paced world\", three adjectives where one fact belongs, numbers\nnobody measured, a cheerful closing line. This is how to write so that every\nsentence tells the reader something.\n\n## 1. Say the specific thing\n\n- Name what the product does, for whom, with what result, in the reader's\n  words. \"Sends a reminder when an invoice is 7 days overdue\" says more than\n  \"Streamline your billing workflow\".\n- Evidence over claims. With no real number, customer or quote, there is no\n  statistic, logo or testimonial: say what the product does instead.\n- Never invent facts, names, figures, quotes or features. A placeholder says\n  it is one: `[Customer quote]`.\n- Facts about the business that you were not given (its name, prices,\n  opening hours, policies, what it accepts) are placeholders on the page\n  itself, `[Business name]`, `[Price]`, not plausible guesses. A guess reads\n  as a promise the business never made.\n\n## 2. Words to drop\n\n- Words that promise and say nothing: unlock, elevate, empower, seamless,\n  leverage, robust, cutting-edge, next-generation, revolutionary,\n  game-changing, powerful, effortless, supercharge, delve, journey,\n  landscape, testament. Replace each with the concrete thing it stands for,\n  or delete it.\n- Stock moves: \"In today's…\" openings, \"It's not just X, it's Y\",\n  rhetorical questions, \"Let's dive in\", \"Here's the thing\", and closings\n  such as \"I hope this helps\".\n\n## 3. Sentences\n\n- Short sentences and plain words. Active voice with the actor named (\"We\n  update the price\", not \"The price is updated\") unless the actor is unknown\n  or beside the point.\n- One idea per sentence. Cut filler: \"in order to\" is \"to\"; \"it is important\n  to note that\" is nothing.\n- No em dashes: use a comma, a full stop, a colon or brackets. No stacks of\n  three adjectives, and no list of three out of habit: a list has as many\n  items as the content has.\n- Sentence case for headings and buttons. No capitals for emphasis and no\n  emoji as decoration.\n\n## 4. Interface copy\n\n- Buttons say what happens: \"Create invoice\", \"Send reminder\", \"Delete\n  project\". Not \"Get started\", \"Learn more\", \"Submit\", \"Explore\" or \"Click\n  here\".\n- A headline states the benefit or the fact, and the line under it backs it\n  with a detail. No slogan that would fit any product.\n- Labels are the nouns the user uses (\"Due date\"); help text says what to\n  enter and why; a placeholder is an example, never the label.\n- Errors say what happened, why if it is known, and what to do next, in the\n  user's terms: \"That card was declined. Try another card, or ask your bank.\"\n  Not \"Error 402\" or \"Something went wrong\".\n- Empty states say why the view is empty and the one action that fills it:\n  \"No invoices yet. Create your first one.\"\n- Confirmations name the consequence: \"Delete 3 files? This cannot be\n  undone.\"\n- One term per concept everywhere: \"project\", not \"project\" on one screen,\n  \"workspace\" on the next and \"space\" on a third.\n- Interface text goes through i18n, and a translation keeps the terms its\n  audience keeps in English (API key, token, webhook, email): the `i18n`\n  skill says what to translate and what to leave.\n\n## 4a. Page copy\n\n- A page reads in layers: the headline says the one thing, the line under it\n  backs it with a detail, each section heading says its point (not\n  \"Features\"), and the body gives the evidence. Someone who reads only the\n  headings still gets the argument.\n- Lead with the reader's problem or outcome, then how the product gets\n  there. One idea per section; paragraphs of two to four sentences; lists\n  when items are parallel.\n- Numbers, names and examples from the real product. Where they are\n  missing, a visible placeholder, never a plausible invention.\n- The call to action repeats the page's one action in the same words each\n  time.\n\n## 4b. Notifications and email\n\n- A subject line or title that says what happened (\"Invoice INV-104 was\n  paid\"), not \"Update from Acme\".\n- The first sentence carries the news; the action is one button that names\n  it; the reason the person received the message and how to change that\n  are at the end.\n- Transactional messages stay transactional: no marketing inside a password\n  reset.\n- Push notifications are short, specific and rare; never \"We miss you\".\n\n## 4c. Alt text, link text and labels for assistive technology\n\n- Alt text says what the image shows that matters here, in a sentence\n  (\"Chart: sign-ups doubled after the March launch\"), not \"image of\". A\n  decorative image gets `alt=\"\"`.\n- Link text makes sense alone: \"Read the pricing details\", not \"click here\"\n  or a bare URL; icon buttons have a name that says the action (\"Close\n  dialog\").\n\n## 4d. Numbers, dates and small things\n\n- Numerals for numbers (\"3 files\"), the reader's locale formats for dates,\n  times, currency and thousands (through `Intl`, not hand-written), units\n  always, and ranges written \"5 to 10\" in prose.\n- Time relative when recent (\"2 hours ago\"), absolute when it matters\n  (\"Due 12 March, 17:00\").\n- Sentence case, no full stop on headings, buttons or single-line labels; a\n  full stop on sentences in help text and errors.\n- Plural forms handled by the i18n library, never \"1 file(s)\".\n\n## 4e. Words that translate\n\n- Whole sentences as single strings, never glued from pieces (\"You have\" +\n  count + \"items\"): word order differs between languages.\n- No idioms, puns or cultural references in interface text; they do not\n  survive translation.\n- Room for text to grow by 30 to 40% in other languages; no text baked into\n  images.\n- One term per concept, kept in a glossary when the product has one.\n\n## 5. Documentation\n\n- Answer the reader's first question first: what this is and how to run it,\n  on the first screen.\n- Show, then explain: a working command or example before the paragraph\n  about it.\n- Describe what the code does now, read from the code, not guessed from\n  names. Mark anything you could not check.\n- Structure follows the content: no \"Features, Benefits, Conclusion\"\n  template, no section with nothing to say. A changelog says what changed\n  for the user; a commit message says what changed and why.\n\n## 6. Voice\n\n- Match the product's voice where it has one (existing copy, a style guide).\n  Otherwise: direct, warm and unhurried, like a colleague who knows the\n  subject.\n- No hype, no false modesty, no apologising for the product, and an\n  exclamation mark only for a genuine moment.\n\n## 6a. Inclusive and plain\n\n- Plain language a reader in a hurry understands: common words, the\n  reader's terms, jargon only where the audience uses it, acronyms spelled\n  out once.\n- People first, no assumptions about gender (they, you), ability, age or\n  culture; examples with a range of names.\n- No blame in errors (\"That code has expired\", not \"You entered a wrong\n  code\").\n\n## 7. Before you call it done\n\nRead it aloud. Delete every sentence that would fit another product, every\nword that adds nothing, and every claim you cannot back. Check every button,\nerror and empty state says what happens or what to do.\n",{"name":5,"description":7},"main","38293fe1b096e6bf3646c7344c38786ed688f464","crates\u002Fenowx-core\u002Fskills\u002Fwriting",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":55,"prompt":65,"zipAvailable":66},[56,59,62],{"tool":57,"command":58},"npx","npx skills add enowdev\u002Fenowxcli --skill writing",{"tool":60,"command":61},"bunx","bunx skills add enowdev\u002Fenowxcli --skill writing",{"tool":63,"command":64},"pnpm","pnpm dlx skills add enowdev\u002Fenowxcli --skill writing","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fenowdev\u002Fenowxcli\u002Fblob\u002Fmain\u002Fcrates\u002Fenowx-core\u002Fskills\u002Fwriting\u002FSKILL.md",true,[68,74,78,82,86,90,94,100],{"path":69,"resourceType":70,"resourceTypeDesc":71,"sizeBytes":72,"sourceHtmlUrl":73},"references\u002Fanimal_veterinary.md","REFERENCE","参考文档",11799,"https:\u002F\u002Fgithub.com\u002Ffadrienne\u002FMyGitHub\u002Fblob\u002Fmain\u002Fopenscience\u002Fbackend\u002Fcli\u002Fskills\u002Fdatabases\u002Ffda-database\u002Freferences\u002Fanimal_veterinary.md",{"path":75,"resourceType":70,"resourceTypeDesc":71,"sizeBytes":76,"sourceHtmlUrl":77},"references\u002Fapi_basics.md",15948,"https:\u002F\u002Fgithub.com\u002Ffadrienne\u002FMyGitHub\u002Fblob\u002Fmain\u002Fopenscience\u002Fbackend\u002Fcli\u002Fskills\u002Fdatabases\u002Ffda-database\u002Freferences\u002Fapi_basics.md",{"path":79,"resourceType":70,"resourceTypeDesc":71,"sizeBytes":80,"sourceHtmlUrl":81},"references\u002Fdevices.md",18934,"https:\u002F\u002Fgithub.com\u002Ffadrienne\u002FMyGitHub\u002Fblob\u002Fmain\u002Fopenscience\u002Fbackend\u002Fcli\u002Fskills\u002Fdatabases\u002Ffda-database\u002Freferences\u002Fdevices.md",{"path":83,"resourceType":70,"resourceTypeDesc":71,"sizeBytes":84,"sourceHtmlUrl":85},"references\u002Fdrugs.md",13903,"https:\u002F\u002Fgithub.com\u002Ffadrienne\u002FMyGitHub\u002Fblob\u002Fmain\u002Fopenscience\u002Fbackend\u002Fcli\u002Fskills\u002Fdatabases\u002Ffda-database\u002Freferences\u002Fdrugs.md",{"path":87,"resourceType":70,"resourceTypeDesc":71,"sizeBytes":88,"sourceHtmlUrl":89},"references\u002Ffoods.md",10789,"https:\u002F\u002Fgithub.com\u002Ffadrienne\u002FMyGitHub\u002Fblob\u002Fmain\u002Fopenscience\u002Fbackend\u002Fcli\u002Fskills\u002Fdatabases\u002Ffda-database\u002Freferences\u002Ffoods.md",{"path":91,"resourceType":70,"resourceTypeDesc":71,"sizeBytes":92,"sourceHtmlUrl":93},"references\u002Fother.md",13735,"https:\u002F\u002Fgithub.com\u002Ffadrienne\u002FMyGitHub\u002Fblob\u002Fmain\u002Fopenscience\u002Fbackend\u002Fcli\u002Fskills\u002Fdatabases\u002Ffda-database\u002Freferences\u002Fother.md",{"path":95,"resourceType":96,"resourceTypeDesc":97,"sizeBytes":98,"sourceHtmlUrl":99},"scripts\u002Ffda_examples.py","SCRIPT","脚本",10785,"https:\u002F\u002Fgithub.com\u002Ffadrienne\u002FMyGitHub\u002Fblob\u002Fmain\u002Fopenscience\u002Fbackend\u002Fcli\u002Fskills\u002Fdatabases\u002Ffda-database\u002Fscripts\u002Ffda_examples.py",{"path":101,"resourceType":96,"resourceTypeDesc":97,"sizeBytes":102,"sourceHtmlUrl":103},"scripts\u002Ffda_query.py",15411,"https:\u002F\u002Fgithub.com\u002Ffadrienne\u002FMyGitHub\u002Fblob\u002Fmain\u002Fopenscience\u002Fbackend\u002Fcli\u002Fskills\u002Fdatabases\u002Ffda-database\u002Fscripts\u002Ffda_query.py",[105,119,135,162,184,214],{"skillNo":106,"name":107,"nameZh":6,"description":108,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":109,"categories":110,"keywords":114,"publishedAt":40},"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",[111],{"categoryNo":112,"categoryName":113,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000023","Skill与智能体开发",[115,116,117,118,35],"demo","demo skill","tests","project",{"skillNo":120,"name":121,"nameZh":6,"description":122,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":123,"categories":124,"keywords":128,"publishedAt":40},"01M6D2HG07YS49NM196Q0R3AZ8","ui","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",[125],{"categoryNo":126,"categoryName":127,"taxonomyType":26,"taxonomyTypeDesc":27},"01JBSEEDCAT000000000000032","设计师",[121,129,130,131,35,132,34,133,134],"icons","layout","responsive","before building","SET","components",{"skillNo":136,"name":137,"nameZh":6,"description":138,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":139,"categories":140,"keywords":147,"publishedAt":40},"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",[141,144],{"categoryNo":142,"categoryName":143,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000015","视觉设计",{"categoryNo":145,"categoryName":146,"taxonomyType":26,"taxonomyTypeDesc":27},"01JBSEEDCAT000000000000030","开发工程师",[121,148,149,150,151,152,34,153,154,129,155,132,156,157,158,159,160,161,35],"ui themes","content","flash","Charts","logo","focus","code","screenshots","switching","tokens","drawing","photos","maps","Art",{"skillNo":163,"name":164,"nameZh":6,"description":165,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":166,"categories":167,"keywords":171,"publishedAt":40},"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",[168,169,170],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},{"categoryNo":145,"categoryName":146,"taxonomyType":26,"taxonomyTypeDesc":27},{"categoryNo":24,"categoryName":25,"taxonomyType":26,"taxonomyTypeDesc":27},[172,121,173,174,175,130,157,176,177,178,179,35,132,34,180,154,134,181,182,183],"ui structure","structure","article","anatomy","Blueprint","styling","why","list","how","pricing","dashboard","primitives",{"skillNo":185,"name":186,"nameZh":6,"description":187,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":188,"categories":189,"keywords":197,"publishedAt":40},"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",[190,193,196],{"categoryNo":191,"categoryName":192,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000008","测试与质量",{"categoryNo":194,"categoryName":195,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000009","前端开发",{"categoryNo":126,"categoryName":127,"taxonomyType":26,"taxonomyTypeDesc":27},[121,198,199,200,201,202,203,204,205,206,207,208,209,130,118,210,211,212,35,213],"vue","stack","ui stack vue","template","server","config","directory","testing","nuxt","pages","watch","runtime","transitions","forms","fetch","pinia",{"skillNo":215,"name":216,"nameZh":6,"description":217,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":218,"categories":219,"keywords":220,"publishedAt":40},"01M6D2GW10WYJMQ5MP0YWWX00Y","ui-stack-tailwind","Building with Tailwind CSS v4 (and v3) without the Tailwind-default look: setup per framework (Vite, Next.js, Astro, Laravel, monorepos), @theme tokens in OKLCH named by role, dark mode with @custom-variant, the layout system as tokens (one container, section spacing, a type scale, stretched rows) and how to fix each preview layout line with classes, state, aria, data, group, peer, has, motion and container-query variants, component recipes (button, field, card, navigation, table, dialog) with every state, motion with --animate-* and starting:, cn with tailwind-merge, cva, class order, @utility, arbitrary values, typography, v3 to v4 migration, and the generated look. Read when the project uses Tailwind.","https:\u002F\u002Fgithub.com\u002Fenowdev\u002Fenowxcli\u002Fblob\u002Fmain\u002Fcrates\u002Fenowx-core\u002Fskills\u002Fui-stack-tailwind\u002FSKILL.md",[],[221,199,222,121,223,130,118,224,225,226,227,228,229,230,231,180,232,233,234,235],"ui stack tailwind","Tailwind","aria","preview","next","query","default","fix","generated","dialog","laravel","astro","merge","component","css"]