[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6MMWCSZT6T3M6GVEN9QTHTS":3,"skill-same:01M6MMWCSZT6T3M6GVEN9QTHTS":88},{"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":45,"linkOnly":46,"markdownContent":47,"markdownBody":48,"frontMatter":49,"refName":58,"commitSha":59,"skillDirectory":60,"forksCount":61,"repositoryHtmlUrl":62,"repositoryHomepageUrl":63,"ownerHtmlUrl":64,"ownerBlogUrl":65,"ownerDescription":66,"updatedAt":67,"install":68,"resources":81},"01M6MMWCSZT6T3M6GVEN9QTHTS","e2e-environment-preflight",null,"Check external services, hosts, browser sessions, model endpoints, and agents before an end-to-end run. MANUAL-ONLY: load when a caller names it. NEVER auto-load from context for ordinary testing or debugging.","hashgraph-online\u002Fawesome-codex-plugins","hashgraph-online","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F160371962?v=4","01M6CNB6NRJVNNGN14TR01Q6D3","HOL (Hashgraph Online)","01M6JT1HSKKG9V68KQAQGBA7XP",1559,"Apache-2.0","https:\u002F\u002Fgithub.com\u002Fhashgraph-online\u002Fawesome-codex-plugins\u002Fblob\u002Fmain\u002Fplugins\u002Fsno-ai\u002Fsno-station-skills\u002Fskills\u002Fe2e-environment-preflight\u002FSKILL.md",[18],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000008","测试与质量","SCENARIO","使用场景",[24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44],"e2e environment preflight","e2e","preflight","environment","context","when","for","hosts","manual","end","only","never","auto","testing","write","read","model","browser","run","debugging","sessions","2026-11-10 10:12:30",false,"---\nname: e2e-environment-preflight\ndescription: \"Check external services, hosts, browser sessions, model endpoints, and agents before an end-to-end run. MANUAL-ONLY: load when a caller names it. NEVER auto-load from context for ordinary testing or debugging.\"\nrequires:\n  programs: []\n  harness:\n    - {slot: 4.shell, need: required}\n    - {slot: 4.file-read-write, need: required}\n---\n\n# e2e-environment-preflight — the gate that runs before the first row\n\n**Never auto-triggered.** Named callers only:\n\n| Caller | Moment |\n|---|---|\n| A requirements document or test plan | once end-to-end proof is required and the document names an external system |\n| A task brief | before staffing any end-to-end journey |\n| `e2e-red-triage` | when a red turns out to be environmental and owes a new check |\n\nThis skill is self-contained: the trigger and the three artifacts.\n\nTerms: the **owner** is whoever owns the work, usually the user; a **row** is one acceptance check in the test plan; a **journey** is one end-to-end scenario made of rows; a **red** is a row that failed or gave no answer; the **suite** is all the rows of a journey.\n\n**Each repository binds this locally.** A repo-level `e2e-environment-preflight` names its own systems, its\nown primer directory, its own evidence paths, and its own configuration decisions. This file is\nthe contract; the local one is the address book. If the repository has no local binding, the\nfirst journey that needs one writes it.\n\n## The trigger, as an operational test\n\n> The preflight is required when **any acceptance row's evidence comes from a system outside the\n> repository under test** — a running service, a host, a browser session, a live model endpoint,\n> an installed agent. Rows whose evidence is produced entirely by code in the repository do not\n> trigger it.\n\nThe test plan or requirements document states the answer as one of two literal forms:\n\n    External systems: none — \u003Cscope fact>\n    External systems: \u003Cname>, \u003Cname> — preflight required\n\nA library with no external systems answers `none` and never sees this skill again. **A plan that names a system for\nwhich no primer exists does not pass** — that refusal is how the first primer for a system gets\nwritten, without anyone having to remember to write it.\n\n## Why this exists\n\nThe three classes that reliably burn days — anything with a login, anything driving a browser,\nanything driving another agent — share one property: **when they break they produce nothing\nrather than an error, and the nothing appears far from the cause.** A revoked credential still\nreads as valid locally. A missing profile looks like an empty result. A dead actor looks like a\nslow one.\n\nSo an hour goes into attributing an absence, and goes again next month on the next system.\nThe preflight moves that cost to the front, where it is paid once and mechanically.\n\nThree reasons it is a gate and not a checklist: **you cannot tell a\nproduct defect from a setup defect** once the suite is running; **every mid-run fix invalidates\nthe rows already passed**, so the suite stops being one observation and becomes N observations\nof N environments; and **fix-one-rerun is a serial loop with a full suite inside it** — twelve\nmissing preconditions found one at a time cost twelve suite runs, found together they cost one\nrepair pass.\n\n**No row starts while any check is red. Amber is red.** A check going red at row 14 stops there:\nthe run is void, rows 1–13 do not carry over, repair happens outside the run, and the preflight\nruns again from the top.\n\n## Two stages, in this order\n\nChecking before the configuration is settled is checking against nothing. These are defaults; a project may choose otherwise and record it in its local binding.\n\n**Stage A — settle the decisions.** Some preconditions cannot be checked because nobody has\nsaid what correct means. A product with several valid configurations has no wrong setting to\ndetect; run the suite against whichever one happened to be set and it measures an arbitrary\nconfiguration and answers a question nobody asked.\n\nThe sorting test is one sentence: **if two defensible answers would make the same row pass and\nfail, it is the owner's decision.** Everything else the agent settles from the approved plan, the repository, or a written ruling — handing those up is noise, and noise makes the real questions\nget skimmed.\n\nAlways the owner's, and most often forgotten: **the ceilings** — wall-clock, spend, and which\nhosts may be destroyed. Ask with a recommendation derived from a measured sample. Without a\nrecorded ceiling the budget check cannot be green or red at all, and an executor invents one,\nsilently changing what *pass* means.\n\n**Onboarding is part of this and is the part that gets skipped.** A run of a real flow starts\nwhere a real user starts. If the product has a first-run path, the preflight names which path the run\ntakes. A suite that begins after onboarding has excluded the part most likely to break for a new\nuser, and it keeps passing while every new user fails.\n\nCollect the owner's set from the whole plan first and ask in **one** exchange, each item with\noptions, downstream consequence, and your recommendation. Answers become configuration-of-record\nin the preflight artifact — a configuration that lives only in a chat window cannot be reproduced\nand cannot be cited.\n\n**Stage B — derive the checks.** The standing floor — the checks every run needs whatever the plan says, such as the credential and absent-variable checks below — always applies. The project half is read\noff the approved plan, never invented: every actor (service, agent, or process) named alive during the test, every artifact path\nin an evidence requirement, every capability a planted defect needs. A precondition no row needs\nis not added; a row whose preconditions were never extracted is a defect in the plan.\n\n**A plan cannot name a precondition its author does not know exists.** That is what the primer supplies, and it is why Stage B depends on one.\n\n## Artifact 1 — the system primer\n\nOne per external system, one per repository, re-derived on a version change. Contents:\n\n- **The containment model, first, before any command.** What contains what. Most environment\n  mistakes are made at this layer: someone who has not been told a namespace exists will never\n  think to ask which one they are in, and will read an identifier off a directory path. A reader\n  given the containment model predicts the traps instead of memorising them.\n- **The identifier table — every value carries the command that re-derives it**, marked\n  last-observed rather than stated. Prefer the command over the value.\n- **Failure shape per dependency**: when this breaks, is it loud or quiet? The quiet ones are the\n  entire reason the file exists.\n- **A version binding and a void list** — what invalidates the document. Bind to the system's\n  version, never to a date: a dated document rots silently, a version-bound one announces it.\n\n**No bare value that has no command.** An accurate document quotes an identifier, the identifier moves, and the next reader inherits a false fact\nthat reads as surveyed truth. Your file will do this to its next reader unless the command is\npreferred.\n\n## Artifact 2 — the runner\n\nOne script per system. The primer exists so the runner is **derived from** it rather than\ninvented, which means every check carries five fields: the command, the expected observable, the\nfailure calibration, the person or team responsible for it, and the artifact field it writes.\n\n- **A prose condition is not a check.** \"The service is healthy\" is an intention, and an executor\n  satisfies an intention by believing it. Name the literal string, exit code, field value, count\n  or deadline — and separately name what makes it red.\n- **Reports every failure at once**, never stopping at the first; stopping recreates the serial\n  loop the gate exists to replace.\n- **Checks; never repairs.** A step that installs or fixes makes its own check pass by\n  construction and hides that the environment was not ready. Repair is separate and explicit,\n  after which the runner starts again from the top.\n- **Exits nonzero if anything is red.**\n- **Emits one artifact**: every check, its command, its observed output, its verdict, with a sha256 of its contents recorded in the run's results if the project keeps them, so a result can be traced to the\n  world it ran in. A suite whose artifact is missing or stale did not pass this gate.\n- **A check nobody has watched go red is not a check.** Break the precondition once, see it go\n  red, restore, record it. Where breaking it is unsafe, say so in the calibration field and name\n  what would have to exist to calibrate it.\n\n**The baseline and the mutations allowed anyway.** Rows themselves change the environment — they\nkill children, cut networks, plant stale records. So each row declares its own disposable\nmutations before it runs; a declared mutation is expected, is reverted, and voids nothing.\nAnything outside that allowlist — a dependency changed, a credential rotated, a host rebooted —\nvoids the run.\n\n**The two rules that keep being skipped are one rule.** A credential check that reads a variable\nhas checked nothing; only a real call that returned a real response passes. And some variables\nmust be **absent**, enumerated by name and asserted empty, because a key that overrides the intended login path silently changes which account and model the entire run used.\n\n**Acquiring a credential and using one are different things.** An interactive first-time login\ndoes not fail this gate: the credential persists and refreshes, and every call after it is made\nwith no human present. What is not automatable is *recovery after revocation* — and that is the\ngate working, not a hole in it. Record it as a bounded, named, human repair.\n\n## Artifact 3 — the red scoreboard\n\n**This is what the gate is for.** Every red gets exactly one bucket, appended to a journey-scoped\nscoreboard beside the preflight artifact:\n\n| Bucket | Meaning |\n|---|---|\n| `source` | a product defect — the only kind that counts as a win |\n| `environment` | a precondition wrong or unset |\n| `stuck` | no verdict at all: hang, timeout, empty, silent absence |\n| `harness` | the test itself was wrong |\n\n    {\"row\":\"\u003Crow-id>\",\"bucket\":\"source\",\"note\":\"…\",\"owed_check\":null}\n\nFour buckets, exhaustive, one per red, no \"other\". The rule that turns the scoreboard into a\nratchet:\n\n> **An `environment` or `stuck` red must name the preflight check that should have caught it. If\n> no such check exists, it is written before the journey closes** — `owed_check` carries the new\n> check's id.\n\nReport the four counts at the end of every run. Rising `source` with falling `environment` and\n`stuck` is the gate working. Flat `environment` across two journeys means the ratchet is not\nbeing applied — a process defect, not bad luck.\n\n## Anti-patterns — any one fails the gate\n\nThese are defaults; a project may choose otherwise and record it in its local binding.\n\n| | Anti-pattern | Why it is fatal |\n|---|---|---|\n| P1 | Asserting a variable is **set** instead of that the call **works** | set-and-wrong is the common case, not the edge case |\n| P2 | Asking a human to paste a credential during the run | a missing credential is a design defect, not a question |\n| P3 | Skipping a check because it passed last run | the environment changed; that is why it is a gate |\n| P4 | A check that passes when its input source is missing | it must report SOURCE MISSING, never CLEAR |\n| P5 | Installing or repairing inside the check | the check then measures itself |\n| P6 | Starting with a known-amber item | amber is red; there is no third state |\n| P7 | A preflight derived from imagination rather than the approved plan | it checks what no row needs and misses what every row needs |\n| P8 | Counting a mocked dependency as ready | a mock proves nothing about the real system it stands in for |\n| P9 | Choosing a configuration default silently | the run then measures an arbitrary setting |\n| P10 | Asking the owner one decision at a time, or asking what is derivable | N rounds instead of one, and noise makes the real questions get skimmed |\n| P11 | Starting the flow after onboarding because onboarding is \"setup\" | the first-run path is where new users break, and it stays untested forever |\n","# e2e-environment-preflight — the gate that runs before the first row\n\n**Never auto-triggered.** Named callers only:\n\n| Caller | Moment |\n|---|---|\n| A requirements document or test plan | once end-to-end proof is required and the document names an external system |\n| A task brief | before staffing any end-to-end journey |\n| `e2e-red-triage` | when a red turns out to be environmental and owes a new check |\n\nThis skill is self-contained: the trigger and the three artifacts.\n\nTerms: the **owner** is whoever owns the work, usually the user; a **row** is one acceptance check in the test plan; a **journey** is one end-to-end scenario made of rows; a **red** is a row that failed or gave no answer; the **suite** is all the rows of a journey.\n\n**Each repository binds this locally.** A repo-level `e2e-environment-preflight` names its own systems, its\nown primer directory, its own evidence paths, and its own configuration decisions. This file is\nthe contract; the local one is the address book. If the repository has no local binding, the\nfirst journey that needs one writes it.\n\n## The trigger, as an operational test\n\n> The preflight is required when **any acceptance row's evidence comes from a system outside the\n> repository under test** — a running service, a host, a browser session, a live model endpoint,\n> an installed agent. Rows whose evidence is produced entirely by code in the repository do not\n> trigger it.\n\nThe test plan or requirements document states the answer as one of two literal forms:\n\n    External systems: none — \u003Cscope fact>\n    External systems: \u003Cname>, \u003Cname> — preflight required\n\nA library with no external systems answers `none` and never sees this skill again. **A plan that names a system for\nwhich no primer exists does not pass** — that refusal is how the first primer for a system gets\nwritten, without anyone having to remember to write it.\n\n## Why this exists\n\nThe three classes that reliably burn days — anything with a login, anything driving a browser,\nanything driving another agent — share one property: **when they break they produce nothing\nrather than an error, and the nothing appears far from the cause.** A revoked credential still\nreads as valid locally. A missing profile looks like an empty result. A dead actor looks like a\nslow one.\n\nSo an hour goes into attributing an absence, and goes again next month on the next system.\nThe preflight moves that cost to the front, where it is paid once and mechanically.\n\nThree reasons it is a gate and not a checklist: **you cannot tell a\nproduct defect from a setup defect** once the suite is running; **every mid-run fix invalidates\nthe rows already passed**, so the suite stops being one observation and becomes N observations\nof N environments; and **fix-one-rerun is a serial loop with a full suite inside it** — twelve\nmissing preconditions found one at a time cost twelve suite runs, found together they cost one\nrepair pass.\n\n**No row starts while any check is red. Amber is red.** A check going red at row 14 stops there:\nthe run is void, rows 1–13 do not carry over, repair happens outside the run, and the preflight\nruns again from the top.\n\n## Two stages, in this order\n\nChecking before the configuration is settled is checking against nothing. These are defaults; a project may choose otherwise and record it in its local binding.\n\n**Stage A — settle the decisions.** Some preconditions cannot be checked because nobody has\nsaid what correct means. A product with several valid configurations has no wrong setting to\ndetect; run the suite against whichever one happened to be set and it measures an arbitrary\nconfiguration and answers a question nobody asked.\n\nThe sorting test is one sentence: **if two defensible answers would make the same row pass and\nfail, it is the owner's decision.** Everything else the agent settles from the approved plan, the repository, or a written ruling — handing those up is noise, and noise makes the real questions\nget skimmed.\n\nAlways the owner's, and most often forgotten: **the ceilings** — wall-clock, spend, and which\nhosts may be destroyed. Ask with a recommendation derived from a measured sample. Without a\nrecorded ceiling the budget check cannot be green or red at all, and an executor invents one,\nsilently changing what *pass* means.\n\n**Onboarding is part of this and is the part that gets skipped.** A run of a real flow starts\nwhere a real user starts. If the product has a first-run path, the preflight names which path the run\ntakes. A suite that begins after onboarding has excluded the part most likely to break for a new\nuser, and it keeps passing while every new user fails.\n\nCollect the owner's set from the whole plan first and ask in **one** exchange, each item with\noptions, downstream consequence, and your recommendation. Answers become configuration-of-record\nin the preflight artifact — a configuration that lives only in a chat window cannot be reproduced\nand cannot be cited.\n\n**Stage B — derive the checks.** The standing floor — the checks every run needs whatever the plan says, such as the credential and absent-variable checks below — always applies. The project half is read\noff the approved plan, never invented: every actor (service, agent, or process) named alive during the test, every artifact path\nin an evidence requirement, every capability a planted defect needs. A precondition no row needs\nis not added; a row whose preconditions were never extracted is a defect in the plan.\n\n**A plan cannot name a precondition its author does not know exists.** That is what the primer supplies, and it is why Stage B depends on one.\n\n## Artifact 1 — the system primer\n\nOne per external system, one per repository, re-derived on a version change. Contents:\n\n- **The containment model, first, before any command.** What contains what. Most environment\n  mistakes are made at this layer: someone who has not been told a namespace exists will never\n  think to ask which one they are in, and will read an identifier off a directory path. A reader\n  given the containment model predicts the traps instead of memorising them.\n- **The identifier table — every value carries the command that re-derives it**, marked\n  last-observed rather than stated. Prefer the command over the value.\n- **Failure shape per dependency**: when this breaks, is it loud or quiet? The quiet ones are the\n  entire reason the file exists.\n- **A version binding and a void list** — what invalidates the document. Bind to the system's\n  version, never to a date: a dated document rots silently, a version-bound one announces it.\n\n**No bare value that has no command.** An accurate document quotes an identifier, the identifier moves, and the next reader inherits a false fact\nthat reads as surveyed truth. Your file will do this to its next reader unless the command is\npreferred.\n\n## Artifact 2 — the runner\n\nOne script per system. The primer exists so the runner is **derived from** it rather than\ninvented, which means every check carries five fields: the command, the expected observable, the\nfailure calibration, the person or team responsible for it, and the artifact field it writes.\n\n- **A prose condition is not a check.** \"The service is healthy\" is an intention, and an executor\n  satisfies an intention by believing it. Name the literal string, exit code, field value, count\n  or deadline — and separately name what makes it red.\n- **Reports every failure at once**, never stopping at the first; stopping recreates the serial\n  loop the gate exists to replace.\n- **Checks; never repairs.** A step that installs or fixes makes its own check pass by\n  construction and hides that the environment was not ready. Repair is separate and explicit,\n  after which the runner starts again from the top.\n- **Exits nonzero if anything is red.**\n- **Emits one artifact**: every check, its command, its observed output, its verdict, with a sha256 of its contents recorded in the run's results if the project keeps them, so a result can be traced to the\n  world it ran in. A suite whose artifact is missing or stale did not pass this gate.\n- **A check nobody has watched go red is not a check.** Break the precondition once, see it go\n  red, restore, record it. Where breaking it is unsafe, say so in the calibration field and name\n  what would have to exist to calibrate it.\n\n**The baseline and the mutations allowed anyway.** Rows themselves change the environment — they\nkill children, cut networks, plant stale records. So each row declares its own disposable\nmutations before it runs; a declared mutation is expected, is reverted, and voids nothing.\nAnything outside that allowlist — a dependency changed, a credential rotated, a host rebooted —\nvoids the run.\n\n**The two rules that keep being skipped are one rule.** A credential check that reads a variable\nhas checked nothing; only a real call that returned a real response passes. And some variables\nmust be **absent**, enumerated by name and asserted empty, because a key that overrides the intended login path silently changes which account and model the entire run used.\n\n**Acquiring a credential and using one are different things.** An interactive first-time login\ndoes not fail this gate: the credential persists and refreshes, and every call after it is made\nwith no human present. What is not automatable is *recovery after revocation* — and that is the\ngate working, not a hole in it. Record it as a bounded, named, human repair.\n\n## Artifact 3 — the red scoreboard\n\n**This is what the gate is for.** Every red gets exactly one bucket, appended to a journey-scoped\nscoreboard beside the preflight artifact:\n\n| Bucket | Meaning |\n|---|---|\n| `source` | a product defect — the only kind that counts as a win |\n| `environment` | a precondition wrong or unset |\n| `stuck` | no verdict at all: hang, timeout, empty, silent absence |\n| `harness` | the test itself was wrong |\n\n    {\"row\":\"\u003Crow-id>\",\"bucket\":\"source\",\"note\":\"…\",\"owed_check\":null}\n\nFour buckets, exhaustive, one per red, no \"other\". The rule that turns the scoreboard into a\nratchet:\n\n> **An `environment` or `stuck` red must name the preflight check that should have caught it. If\n> no such check exists, it is written before the journey closes** — `owed_check` carries the new\n> check's id.\n\nReport the four counts at the end of every run. Rising `source` with falling `environment` and\n`stuck` is the gate working. Flat `environment` across two journeys means the ratchet is not\nbeing applied — a process defect, not bad luck.\n\n## Anti-patterns — any one fails the gate\n\nThese are defaults; a project may choose otherwise and record it in its local binding.\n\n| | Anti-pattern | Why it is fatal |\n|---|---|---|\n| P1 | Asserting a variable is **set** instead of that the call **works** | set-and-wrong is the common case, not the edge case |\n| P2 | Asking a human to paste a credential during the run | a missing credential is a design defect, not a question |\n| P3 | Skipping a check because it passed last run | the environment changed; that is why it is a gate |\n| P4 | A check that passes when its input source is missing | it must report SOURCE MISSING, never CLEAR |\n| P5 | Installing or repairing inside the check | the check then measures itself |\n| P6 | Starting with a known-amber item | amber is red; there is no third state |\n| P7 | A preflight derived from imagination rather than the approved plan | it checks what no row needs and misses what every row needs |\n| P8 | Counting a mocked dependency as ready | a mock proves nothing about the real system it stands in for |\n| P9 | Choosing a configuration default silently | the run then measures an arbitrary setting |\n| P10 | Asking the owner one decision at a time, or asking what is derivable | N rounds instead of one, and noise makes the real questions get skimmed |\n| P11 | Starting the flow after onboarding because onboarding is \"setup\" | the first-run path is where new users break, and it stays untested forever |\n",{"name":5,"requires":50,"description":7},{"harness":51,"programs":57},[52,55],{"need":53,"slot":54},"required","4.shell",{"need":53,"slot":56},"4.file-read-write",[],"main","2b63f856ce19c2a797929cacabd9e0fc936812fa","plugins\u002Fsno-ai\u002Fsno-station-skills\u002Fskills\u002Fe2e-environment-preflight",474,"https:\u002F\u002Fgithub.com\u002Fhashgraph-online\u002Fawesome-codex-plugins","https:\u002F\u002Fhol.org\u002Fplugins\u002Fbest-codex-plugins","https:\u002F\u002Fgithub.com\u002Fhashgraph-online","https:\u002F\u002Fhol.org","Open-source standards and developer tools for interoperable AI agents: discovery, identity, communication, payments, privacy and security.","2026-11-11 14:40:14",{"source":8,"skillName":5,"commands":69,"prompt":79,"zipAvailable":80},[70,73,76],{"tool":71,"command":72},"npx","npx skills add hashgraph-online\u002Fawesome-codex-plugins --skill e2e-environment-preflight",{"tool":74,"command":75},"bunx","bunx skills add hashgraph-online\u002Fawesome-codex-plugins --skill e2e-environment-preflight",{"tool":77,"command":78},"pnpm","pnpm dlx skills add hashgraph-online\u002Fawesome-codex-plugins --skill e2e-environment-preflight","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fhashgraph-online\u002Fawesome-codex-plugins\u002Fblob\u002Fmain\u002Fplugins\u002Fsno-ai\u002Fsno-station-skills\u002Fskills\u002Fe2e-environment-preflight\u002FSKILL.md",true,[82],{"path":83,"resourceType":84,"resourceTypeDesc":85,"sizeBytes":86,"sourceHtmlUrl":87},"scripts\u002Fselftest\u002Frun-selftest.sh","SCRIPT","脚本",1164,"https:\u002F\u002Fgithub.com\u002Fhashgraph-online\u002Fawesome-codex-plugins\u002Fblob\u002Fmain\u002Fplugins\u002Fsno-ai\u002Fsno-station-skills\u002Fskills\u002Fe2e-environment-preflight\u002Fscripts\u002Fselftest\u002Frun-selftest.sh",[89,97,103,110,134,158],{"skillNo":90,"name":91,"nameZh":6,"description":92,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":93,"categories":94,"keywords":95,"publishedAt":96},"01M746ZWACVKMZ1BJXJZHYJSSX","migrate-to-e2e","Moves an existing Playwright, Cypress, Selenium, Appium, Detox, Maestro, or TesterArmy suite to e2e one slice at a time, with the old suite running beside the new one until each ported test is proven. Keeps a MIGRATION.md progress file so any later session resumes where the last stopped. Optionally plants a defect to show both suites catch it. Use for \u002Fmigrate-to-e2e, \"migrate our tests to e2e\", \"port these Maestro flows\", \"move our TesterArmy tests\", or when a project has an e2e config and an older suite still running.","https:\u002F\u002Fgithub.com\u002Fhashgraph-online\u002Fawesome-codex-plugins\u002Fblob\u002Fmain\u002Fplugins\u002Ftester-army\u002Fe2e\u002Fskills\u002Fmigrate-to-e2e\u002FSKILL.md",[],[],"2026-11-11 15:11:14",{"skillNo":98,"name":25,"nameZh":6,"description":99,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":100,"categories":101,"keywords":102,"publishedAt":96},"01M746ZPTAX1Q0FBKAB1CYND7E","Writes, runs, and debugs end-to-end tests for web and mobile apps with e2e, the agentic test runner, which mixes agent.act goals with exact locator assertions on a Playwright browser or an iOS or Android device. Also drives a project's running app live over the e2e MCP server to look at a screen, check a UI change, take a screenshot or record a video, and try a locator; and runs bug bashes, parallel e2e explore runs with each bug proven by a repro test. Use when a project depends on e2e or has an e2e.config.ts, when asked for end-to-end, browser, mobile, or agentic UI tests, to check a change in the running app, to QA or bug bash an app or branch, or when an e2e run fails.","https:\u002F\u002Fgithub.com\u002Fhashgraph-online\u002Fawesome-codex-plugins\u002Fblob\u002Fmain\u002Fplugins\u002Ftester-army\u002Fe2e\u002Fskills\u002Fe2e\u002FSKILL.md",[],[],{"skillNo":104,"name":105,"nameZh":6,"description":106,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":107,"categories":108,"keywords":109,"publishedAt":96},"01M746ZJN784HVHMDP9MQGCSGG","create-verification-skill","Generate a project-local verify-\u003Capp> skill on top of e2e, so any coding agent can launch the app, check it is worth driving, exercise a feature the way a user does, keep evidence, and bug bash it. Writes the skill, a feature map with one explore charter per feature, and proves it once. Use for \u002Fcreate-verification-skill, \"make a verification skill for this repo\", or when a project has no scripted way to prove UI behavior.","https:\u002F\u002Fgithub.com\u002Fhashgraph-online\u002Fawesome-codex-plugins\u002Fblob\u002Fmain\u002Fplugins\u002Ftester-army\u002Fe2e\u002Fskills\u002Fcreate-verification-skill\u002FSKILL.md",[],[],{"skillNo":111,"name":112,"nameZh":6,"description":113,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":114,"categories":115,"keywords":116,"publishedAt":45},"01M716A6ETNB9B1SQ3GXZC75VR","deja-search","deja-vu memory — search the user's past AI coding sessions with the deja CLI. Holds what they already settled and never wrote into the repo (naming rules, banned or already-tried tools, required checks before merge, preferred values, who owns what). Use before your first edit in a task, before you call a change done or ready to merge, before you recommend a tool, library, design or reviewer, before re-debugging an error that may already be solved, when they say 'didn't we fix this before', 'what did we decide about X' or 'I already have that', and before telling them something on this machine does not exist.","https:\u002F\u002Fgithub.com\u002Fhashgraph-online\u002Fawesome-codex-plugins\u002Fblob\u002Fmain\u002Fplugins\u002Fvshulcz\u002Fdeja-vu\u002Fskills\u002Fdeja-search\u002FSKILL.md",[],[117,118,35,119,120,121,122,123,124,125,43,29,126,127,128,129,130,131,132,133],"search","deja search","error","ready","memory","re","decide","fix","design","you","done","reviewer","io","change","cli","merge","past",{"skillNo":135,"name":136,"nameZh":6,"description":137,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":138,"categories":139,"keywords":140,"publishedAt":45},"01M716A3J2W5SENSE9VGMXB375","deja-reflect","End-of-session reflection and memory curation with deja-vu. Review what was decided, what commands broke and what repaired them, and record durable project rules or decisions with deja remember so the next session starts with them.","https:\u002F\u002Fgithub.com\u002Fhashgraph-online\u002Fawesome-codex-plugins\u002Fblob\u002Fmain\u002Fplugins\u002Fvshulcz\u002Fdeja-vu\u002Fskills\u002Fdeja-reflect\u002FSKILL.md",[],[141,142,143,129,144,145,146,147,148,149,150,151,152,153,121,154,155,156,33,157],"deja reflect","reflect","review","with","record","github","next","https","node","Rules","decisions","brew","remember","project rules","project","session","reflection",{"skillNo":159,"name":160,"nameZh":6,"description":161,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":162,"categories":163,"keywords":173,"publishedAt":45},"01M715T3RR4BAYSR57HPPTJ0PF","revid","Make, edit, export and post AI videos with Revid (revid.ai) through the Revid MCP server. Use whenever the user wants a short-form or long-form video made (from an idea, a script, a URL, an article, a PDF, a tweet, a product page, their own clips, or a song), wants to find what is going viral on TikTok, YouTube, Instagram or X before making something, wants to edit or re-export an existing Revid project, generate a standalone AI image or clip, make a series episode, or publish and schedule a finished video to connected social accounts. Covers setup (hosted MCP with OAuth, or an API key), the 36 tools, credits, polling and the rules for publishing. Routes to the more specific revid-* skills when one fits.","https:\u002F\u002Fgithub.com\u002Fhashgraph-online\u002Fawesome-codex-plugins\u002Fblob\u002Fmain\u002Fplugins\u002Ftmakersas\u002Frevid-skills\u002Fskills\u002Frevid\u002FSKILL.md",[164,167,170],{"categoryNo":165,"categoryName":166,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000016","图像与多媒体",{"categoryNo":168,"categoryName":169,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000023","Skill与智能体开发",{"categoryNo":171,"categoryName":172,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000010","后端与接口",[160,174,175,176,177,178,179,155,180,122,181,182,183,184,29,185,186,187,188,189],"URL","Video","short-form","standalone","PDF","viral","tiktok","short","social","MCP","song","image","mcp server","schedule","api","publish"]