[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6D258MDRMC6X53SADTHTH50":3,"skill-same:01M6D258MDRMC6X53SADTHTH50":63},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":16,"categories":17,"keywords":28,"publishedAt":35,"linkOnly":36,"markdownContent":37,"markdownBody":38,"frontMatter":39,"refName":40,"commitSha":41,"skillDirectory":42,"forksCount":43,"repositoryHtmlUrl":44,"repositoryHomepageUrl":45,"ownerHtmlUrl":46,"ownerBlogUrl":45,"ownerDescription":47,"updatedAt":48,"install":49,"resources":62},"01M6D258MDRMC6X53SADTHTH50","research",null,"Answering a question with evidence: restating it precisely, deciding where the answer can be found, primary sources over secondary ones, checking versions and dates, confirming by running code when cheap, separating what was verified from what was inferred, and writing the answer first with its evidence and confidence. Read before any research question.","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\u002Fresearch\u002FSKILL.md",[18,23],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000021","资料检索与研究","SCENARIO","使用场景",{"categoryNo":24,"categoryName":25,"taxonomyType":26,"taxonomyTypeDesc":27},"01JBSEEDCAT000000000000030","开发工程师","PROFESSION","适用职业",[5,29,30,31,32,33,34],"writing","code","first","question","read","evidence","2026-11-10 10:12:30",false,"---\nname: research\ndescription: \"Answering a question with evidence: restating it precisely, deciding where the answer can be found, primary sources over secondary ones, checking versions and dates, confirming by running code when cheap, separating what was verified from what was inferred, and writing the answer first with its evidence and confidence. Read before any research question.\"\n---\n\n# Answering a question with evidence\n\nThe naive answer comes from memory about a library that has changed since,\ncites a 2019 blog post as current, states a guess as fact, or buries the\nanswer under a wall of links. A researched answer pins down exactly what was\nasked, finds it where it is decided (the code, the version in use, the\nspec), keeps what was seen apart from what was reasoned, and puts the answer\nin its first lines. The methods for the places answers live are in\n`research-code`, `research-web` and `research-libraries`.\n\n## 1. Restate the question\n\n- One sentence, precise enough to be checked. \"Does the session expire\n  after inactivity?\" becomes \"In this app, is the session cookie's lifetime\n  extended by activity, or fixed from sign-in?\"\n- Add what the answer depends on: the version in use, the runtime, the\n  environment (local, CI, production), the configuration, the branch.\n- Split compound questions (\"why is sign-in slow, and is it safe?\") and\n  answer each on its own.\n- A question you cannot ask back about (a delegated one) is answered for\n  its most plausible reading, and the answer names the reading.\n\n## 2. Decide where the answer lives\n\n| Kind of question | Where it is decided | Method |\n|---|---|---|\n| How does our code do X? | the code, its config and its tests | `research-code` |\n| Why is it like this? | commits, pull requests, ADRs, the changelog | `research-code` |\n| What does this dependency do? | its installed source, docs for that version, its changelog | `research-code`, `research-web` |\n| What does the platform or standard say? | the spec, MDN, browser support data | `research-web` |\n| What does this error mean? | the source that raises it, the issue tracker | `research-web` |\n| Which library should we use? | registries, repositories, a short trial | `research-libraries` |\n| Is X true in our setup? | the config file itself | read it |\n\nLook in the project before the web. The answer about this project is in\nthis project; a page on the web describes some other version of it.\n\n## 3. Primary sources over secondary ones\n\n| Source | Worth |\n|---|---|\n| The code that runs (the project, a dependency at its installed version), a command's output | Proof |\n| Official docs for that version, the spec, the changelog, a maintainer's answer in an issue | Strong evidence |\n| A merged pull request with a test | Strong, for the release it shipped in |\n| Blog posts, Stack Overflow, tutorials, forums, generated answers | Leads: follow them to the rows above |\n| Your own memory | A hypothesis to check |\n\nMemory is the weakest source for anything that changes: library APIs and\ndefaults, versions, limits, prices, browser support, command-line flags.\nCheck each of those before stating it.\n\n## 4. Versions and dates\n\n- The version in use comes from the lockfile (`package-lock.json`,\n  `pnpm-lock.yaml`, `yarn.lock`, `uv.lock`, `poetry.lock`, `Cargo.lock`,\n  `go.mod`, `Gemfile.lock`, `composer.lock`), not from the manifest's\n  range: `^4.2.0` may be 4.9.1 installed.\n- Runtimes: `.nvmrc`, `.node-version`, `engines`, `.python-version`,\n  `rust-toolchain.toml`, the `go` line in `go.mod`, the Dockerfile's `FROM`.\n- Docs to match: a versioned URL, the site's version switcher, source at\n  the tag (`\u002Fblob\u002Fv4.2.1\u002F`) rather than `main`.\n- Date every source. One older than a release that changed the behaviour\n  describes the old behaviour: read the changelog between its version and\n  yours before using it.\n\n## 5. Verify cheaply\n\n- Twenty lines of the implementation settle more than three articles: read\n  the function that decides, in the project or in the dependency's installed\n  source (`node_modules`, `site-packages`, `vendor`; see `research-code`).\n- An existing test that asserts the behaviour, and runs in CI, is evidence.\n  Cite it.\n- When you can run commands, run the smallest one that decides: a\n  `--version`, a one-line `node -e` or `python3 -c`, the project's test for\n  that path. When you cannot (the `research` agent has no `bash`), write the\n  exact command that would settle it and mark the claim inferred.\n- A wide sweep (every caller of a function across thirty files) goes to\n  `librarian`, which returns the excerpts and leaves your context for the\n  reasoning.\n\n## 6. Traps that make a checked answer wrong\n\n- **Two copies of one dependency.** A lockfile can hold several versions of\n  a package, one nested under another package; search it for every entry\n  before saying which version runs.\n- **The code on disk is not the code deployed.** For \"what does production\n  do\", find the deployed version (the release tag, the image, the deploy\n  config) and read that version (with git: `git show v1.4.2:\u003Cpath>`).\n- **Configuration decides.** An environment variable, a feature flag, a\n  per-environment config file, or a default overridden in\n  `docker-compose.yml`, `next.config.js` or `settings.py` changes the path.\n- **One name, several definitions.** A subclass override, a monkey patch, a\n  second route with the same path registered later, a module shadowed in a\n  monorepo: find the one that wins.\n- **Built output is not the source.** `dist\u002F`, `build\u002F` and `.next\u002F` may be\n  stale; read the source and say which you read.\n- **Caches.** A CDN, a build cache or a memoised value can make what is\n  observed differ from what the code says.\n\n## 7. Triangulate what matters\n\n- A claim the answer rests on gets two independent sources: the docs and\n  the source, or the source and a test. A blog repeating the docs is not a\n  second source.\n- When sources disagree, the code at the version in use beats the docs,\n  newer official sources beat older ones, and the answer states the\n  contradiction.\n- Look for evidence against your first guess as well. Stopping at the first\n  source that agrees is how confident wrong answers are made.\n\n## 8. Verified, inferred, unknown\n\n- **Verified:** seen directly (a line read, a command's output, docs for the\n  right version), with its citation.\n- **Inferred:** follows from verified facts by reasoning you show: \"the\n  middleware never sets the cookie again, so activity cannot extend it.\"\n- **Unknown:** what could not be settled, and what would settle it (a\n  command, a log, a person who knows).\n- \"Is\" and \"does\" only for verified claims; \"probably\" and \"appears\" only\n  with the reason beside them.\n- Confidence: high (a primary source for the right version, or a run),\n  medium (inferred from verified facts, or a primary source for a nearby\n  version), low (secondary sources only, or sources in conflict).\n\n## 9. The answer\n\n```\nThe session does not extend with activity: it expires 30 days after sign-in.\n\nEvidence\n- src\u002Fauth\u002Fsession.ts:41  maxAge: 60 * 60 * 24 * 30, set once at sign-in\n- src\u002Fauth\u002Fmiddleware.ts:18-35  reads the session; never sets the cookie again\n- tests\u002Fauth\u002Fsession.test.ts:77  asserts expiry on day 30 despite requests on day 29\n\nVerified: the lifetime and where it is set (read). Inferred: activity cannot\nextend it, since no path sets the cookie after sign-in.\nUnknown: whether the proxy rewrites the cookie; the production response\nheaders would show it (curl -sI https:\u002F\u002F\u003Chost>\u002Fapi\u002Fme).\nConfidence: high.\n```\n\n- The answer in one to three sentences, first. Then the evidence: paths with\n  lines, URLs with the version they describe and the date, command output\n  quoted short. Then caveats and confidence, in a line or two.\n- A web source is cited with its URL, what it documents, the version, the\n  date read, and the sentence that carries the claim, quoted.\n- Every link supports a claim in the answer; a link that supports nothing is\n  noise.\n- Quote the line that matters, not the page around it.\n- **Delegated:** the caller receives only the text from `DONE:` on, and\n  anything before it is dropped. Put the answer on the `DONE:` line with the\n  evidence indented under it; then `CHANGED: none`, `VERIFIED:` what was read\n  or fetched, and `NEXT:` the unknowns and what would settle them.\n\n## 10. Stop, or say it cannot be answered\n\n- Stop when the question is answered with the confidence it needs: a design\n  decision needs more than a passing curiosity.\n- A normal question takes 10 to 20 tool calls. Past that, answer with what\n  you have and say what is left.\n- When it cannot be answered: what you checked, what was missing, and the\n  next step (a command, access, a person). Never fill the gap with a guess\n  dressed as a finding.\n- Nothing beyond the question: related facts nobody asked for dilute the\n  answer.\n\n## Check it\n\n- The first lines answer the restated question, not a neighbouring one.\n- Every factual claim has a citation or is marked inferred.\n- Versions cited match the lockfile; each source's date was checked against\n  the releases since.\n- No unmarked claim from memory about something that changes.\n- A secret met along the way is not quoted: name the file and line only.\n\n## Avoid\n\nAnswers from memory about libraries, flags or limits; a 2019 post cited as\ncurrent; docs for another major version; guesses stated as facts; a wall of\nlinks; stopping at the first source that agrees; a whole page quoted for one\nline; padding with related facts; a question sent back when delegated,\ninstead of an answer to the plausible reading.\n","# Answering a question with evidence\n\nThe naive answer comes from memory about a library that has changed since,\ncites a 2019 blog post as current, states a guess as fact, or buries the\nanswer under a wall of links. A researched answer pins down exactly what was\nasked, finds it where it is decided (the code, the version in use, the\nspec), keeps what was seen apart from what was reasoned, and puts the answer\nin its first lines. The methods for the places answers live are in\n`research-code`, `research-web` and `research-libraries`.\n\n## 1. Restate the question\n\n- One sentence, precise enough to be checked. \"Does the session expire\n  after inactivity?\" becomes \"In this app, is the session cookie's lifetime\n  extended by activity, or fixed from sign-in?\"\n- Add what the answer depends on: the version in use, the runtime, the\n  environment (local, CI, production), the configuration, the branch.\n- Split compound questions (\"why is sign-in slow, and is it safe?\") and\n  answer each on its own.\n- A question you cannot ask back about (a delegated one) is answered for\n  its most plausible reading, and the answer names the reading.\n\n## 2. Decide where the answer lives\n\n| Kind of question | Where it is decided | Method |\n|---|---|---|\n| How does our code do X? | the code, its config and its tests | `research-code` |\n| Why is it like this? | commits, pull requests, ADRs, the changelog | `research-code` |\n| What does this dependency do? | its installed source, docs for that version, its changelog | `research-code`, `research-web` |\n| What does the platform or standard say? | the spec, MDN, browser support data | `research-web` |\n| What does this error mean? | the source that raises it, the issue tracker | `research-web` |\n| Which library should we use? | registries, repositories, a short trial | `research-libraries` |\n| Is X true in our setup? | the config file itself | read it |\n\nLook in the project before the web. The answer about this project is in\nthis project; a page on the web describes some other version of it.\n\n## 3. Primary sources over secondary ones\n\n| Source | Worth |\n|---|---|\n| The code that runs (the project, a dependency at its installed version), a command's output | Proof |\n| Official docs for that version, the spec, the changelog, a maintainer's answer in an issue | Strong evidence |\n| A merged pull request with a test | Strong, for the release it shipped in |\n| Blog posts, Stack Overflow, tutorials, forums, generated answers | Leads: follow them to the rows above |\n| Your own memory | A hypothesis to check |\n\nMemory is the weakest source for anything that changes: library APIs and\ndefaults, versions, limits, prices, browser support, command-line flags.\nCheck each of those before stating it.\n\n## 4. Versions and dates\n\n- The version in use comes from the lockfile (`package-lock.json`,\n  `pnpm-lock.yaml`, `yarn.lock`, `uv.lock`, `poetry.lock`, `Cargo.lock`,\n  `go.mod`, `Gemfile.lock`, `composer.lock`), not from the manifest's\n  range: `^4.2.0` may be 4.9.1 installed.\n- Runtimes: `.nvmrc`, `.node-version`, `engines`, `.python-version`,\n  `rust-toolchain.toml`, the `go` line in `go.mod`, the Dockerfile's `FROM`.\n- Docs to match: a versioned URL, the site's version switcher, source at\n  the tag (`\u002Fblob\u002Fv4.2.1\u002F`) rather than `main`.\n- Date every source. One older than a release that changed the behaviour\n  describes the old behaviour: read the changelog between its version and\n  yours before using it.\n\n## 5. Verify cheaply\n\n- Twenty lines of the implementation settle more than three articles: read\n  the function that decides, in the project or in the dependency's installed\n  source (`node_modules`, `site-packages`, `vendor`; see `research-code`).\n- An existing test that asserts the behaviour, and runs in CI, is evidence.\n  Cite it.\n- When you can run commands, run the smallest one that decides: a\n  `--version`, a one-line `node -e` or `python3 -c`, the project's test for\n  that path. When you cannot (the `research` agent has no `bash`), write the\n  exact command that would settle it and mark the claim inferred.\n- A wide sweep (every caller of a function across thirty files) goes to\n  `librarian`, which returns the excerpts and leaves your context for the\n  reasoning.\n\n## 6. Traps that make a checked answer wrong\n\n- **Two copies of one dependency.** A lockfile can hold several versions of\n  a package, one nested under another package; search it for every entry\n  before saying which version runs.\n- **The code on disk is not the code deployed.** For \"what does production\n  do\", find the deployed version (the release tag, the image, the deploy\n  config) and read that version (with git: `git show v1.4.2:\u003Cpath>`).\n- **Configuration decides.** An environment variable, a feature flag, a\n  per-environment config file, or a default overridden in\n  `docker-compose.yml`, `next.config.js` or `settings.py` changes the path.\n- **One name, several definitions.** A subclass override, a monkey patch, a\n  second route with the same path registered later, a module shadowed in a\n  monorepo: find the one that wins.\n- **Built output is not the source.** `dist\u002F`, `build\u002F` and `.next\u002F` may be\n  stale; read the source and say which you read.\n- **Caches.** A CDN, a build cache or a memoised value can make what is\n  observed differ from what the code says.\n\n## 7. Triangulate what matters\n\n- A claim the answer rests on gets two independent sources: the docs and\n  the source, or the source and a test. A blog repeating the docs is not a\n  second source.\n- When sources disagree, the code at the version in use beats the docs,\n  newer official sources beat older ones, and the answer states the\n  contradiction.\n- Look for evidence against your first guess as well. Stopping at the first\n  source that agrees is how confident wrong answers are made.\n\n## 8. Verified, inferred, unknown\n\n- **Verified:** seen directly (a line read, a command's output, docs for the\n  right version), with its citation.\n- **Inferred:** follows from verified facts by reasoning you show: \"the\n  middleware never sets the cookie again, so activity cannot extend it.\"\n- **Unknown:** what could not be settled, and what would settle it (a\n  command, a log, a person who knows).\n- \"Is\" and \"does\" only for verified claims; \"probably\" and \"appears\" only\n  with the reason beside them.\n- Confidence: high (a primary source for the right version, or a run),\n  medium (inferred from verified facts, or a primary source for a nearby\n  version), low (secondary sources only, or sources in conflict).\n\n## 9. The answer\n\n```\nThe session does not extend with activity: it expires 30 days after sign-in.\n\nEvidence\n- src\u002Fauth\u002Fsession.ts:41  maxAge: 60 * 60 * 24 * 30, set once at sign-in\n- src\u002Fauth\u002Fmiddleware.ts:18-35  reads the session; never sets the cookie again\n- tests\u002Fauth\u002Fsession.test.ts:77  asserts expiry on day 30 despite requests on day 29\n\nVerified: the lifetime and where it is set (read). Inferred: activity cannot\nextend it, since no path sets the cookie after sign-in.\nUnknown: whether the proxy rewrites the cookie; the production response\nheaders would show it (curl -sI https:\u002F\u002F\u003Chost>\u002Fapi\u002Fme).\nConfidence: high.\n```\n\n- The answer in one to three sentences, first. Then the evidence: paths with\n  lines, URLs with the version they describe and the date, command output\n  quoted short. Then caveats and confidence, in a line or two.\n- A web source is cited with its URL, what it documents, the version, the\n  date read, and the sentence that carries the claim, quoted.\n- Every link supports a claim in the answer; a link that supports nothing is\n  noise.\n- Quote the line that matters, not the page around it.\n- **Delegated:** the caller receives only the text from `DONE:` on, and\n  anything before it is dropped. Put the answer on the `DONE:` line with the\n  evidence indented under it; then `CHANGED: none`, `VERIFIED:` what was read\n  or fetched, and `NEXT:` the unknowns and what would settle them.\n\n## 10. Stop, or say it cannot be answered\n\n- Stop when the question is answered with the confidence it needs: a design\n  decision needs more than a passing curiosity.\n- A normal question takes 10 to 20 tool calls. Past that, answer with what\n  you have and say what is left.\n- When it cannot be answered: what you checked, what was missing, and the\n  next step (a command, access, a person). Never fill the gap with a guess\n  dressed as a finding.\n- Nothing beyond the question: related facts nobody asked for dilute the\n  answer.\n\n## Check it\n\n- The first lines answer the restated question, not a neighbouring one.\n- Every factual claim has a citation or is marked inferred.\n- Versions cited match the lockfile; each source's date was checked against\n  the releases since.\n- No unmarked claim from memory about something that changes.\n- A secret met along the way is not quoted: name the file and line only.\n\n## Avoid\n\nAnswers from memory about libraries, flags or limits; a 2019 post cited as\ncurrent; docs for another major version; guesses stated as facts; a wall of\nlinks; stopping at the first source that agrees; a whole page quoted for one\nline; padding with related facts; a question sent back when delegated,\ninstead of an answer to the plausible reading.\n",{"name":5,"description":7},"main","38293fe1b096e6bf3646c7344c38786ed688f464","crates\u002Fenowx-core\u002Fskills\u002Fresearch",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":50,"prompt":60,"zipAvailable":61},[51,54,57],{"tool":52,"command":53},"npx","npx skills add enowdev\u002Fenowxcli --skill research",{"tool":55,"command":56},"bunx","bunx skills add enowdev\u002Fenowxcli --skill research",{"tool":58,"command":59},"pnpm","pnpm dlx skills add enowdev\u002Fenowxcli --skill research","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fenowdev\u002Fenowxcli\u002Fblob\u002Fmain\u002Fcrates\u002Fenowx-core\u002Fskills\u002Fresearch\u002FSKILL.md",true,[],[64,78,100,116,140,162],{"skillNo":65,"name":66,"nameZh":6,"description":67,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":68,"categories":69,"keywords":73,"publishedAt":35},"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",[70],{"categoryNo":71,"categoryName":72,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000023","Skill与智能体开发",[74,75,76,77,33],"demo skill","demo","tests","project",{"skillNo":79,"name":29,"nameZh":6,"description":80,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":81,"categories":82,"keywords":89,"publishedAt":35},"01M6D2HM0GCPM0TM2HPG9HHR2R","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",[83,86],{"categoryNo":84,"categoryName":85,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000018","写作与文案",{"categoryNo":87,"categoryName":88,"taxonomyType":26,"taxonomyTypeDesc":27},"01JBSEEDCAT000000000000036","内容创作者",[29,90,91,92,93,94,33,95,96,97,98,99],"text","emails","empty","drop","document","page","voice","notifications","documentation","translate",{"skillNo":101,"name":102,"nameZh":6,"description":103,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":104,"categories":105,"keywords":109,"publishedAt":35},"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",[106],{"categoryNo":107,"categoryName":108,"taxonomyType":26,"taxonomyTypeDesc":27},"01JBSEEDCAT000000000000032","设计师",[102,110,111,112,113,95,114,33,115],"icons","components","SET","responsive","layout","before building",{"skillNo":117,"name":118,"nameZh":6,"description":119,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":120,"categories":121,"keywords":126,"publishedAt":35},"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",[122,125],{"categoryNo":123,"categoryName":124,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000015","视觉设计",{"categoryNo":24,"categoryName":25,"taxonomyType":26,"taxonomyTypeDesc":27},[102,127,128,129,130,131,132,133,134,33,115,135,95,30,136,137,110,138,139],"ui themes","switching","photos","tokens","drawing","focus","maps","Art","flash","Charts","content","screenshots","logo",{"skillNo":141,"name":142,"nameZh":6,"description":143,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":144,"categories":145,"keywords":149,"publishedAt":35},"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",[146,147,148],{"categoryNo":84,"categoryName":85,"taxonomyType":21,"taxonomyTypeDesc":22},{"categoryNo":24,"categoryName":25,"taxonomyType":26,"taxonomyTypeDesc":27},{"categoryNo":87,"categoryName":88,"taxonomyType":26,"taxonomyTypeDesc":27},[150,102,151,111,152,153,30,154,155,156,114,130,157,158,159,33,115,95,160,161],"structure","ui structure","pricing","dashboard","Blueprint","article","anatomy","styling","primitives","list","why","how",{"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":175,"publishedAt":35},"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",[168,171,174],{"categoryNo":169,"categoryName":170,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000008","测试与质量",{"categoryNo":172,"categoryName":173,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000009","前端开发",{"categoryNo":107,"categoryName":108,"taxonomyType":26,"taxonomyTypeDesc":27},[102,176,177,178,179,180,181,182,114,77,183,184,33,185,186,187,188,189,190,191],"vue","stack","ui stack vue","forms","pages","watch","runtime","transitions","fetch","pinia","nuxt","template","server","config","directory","testing"]