[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M7DF0V5JQMWGSX2F62TJSZDH":3,"skill-same:01M7DF0V5JQMWGSX2F62TJSZDH":51},{"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":18,"publishedAt":19,"linkOnly":20,"markdownContent":21,"markdownBody":22,"frontMatter":23,"refName":24,"commitSha":25,"skillDirectory":26,"forksCount":27,"repositoryHtmlUrl":28,"repositoryHomepageUrl":6,"ownerHtmlUrl":29,"ownerBlogUrl":6,"ownerDescription":6,"updatedAt":30,"install":31,"resources":44},"01M7DF0V5JQMWGSX2F62TJSZDH","e2e-testing",null,"Write end-to-end tests for important user-visible flows through the system's public interface. Use when a claim spans a complete flow that unit or integration tests cannot prove.","andersonmrodrigues\u002Fpaved","andersonmrodrigues","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F13907380?v=4","01M7DEV3FP2VMQZ3FP2FP1TK1C","Anderson Rodrigues","01M7DEV3GC2QAQBW4FMNT98H48",1,"MIT","https:\u002F\u002Fgithub.com\u002Fandersonmrodrigues\u002Fpaved\u002Fblob\u002Fmain\u002Fplugins\u002Fclaude\u002Fpaved\u002Fruntime\u002Fpaved-core\u002Fcore\u002Fskills\u002Ftesting\u002Fe2e-testing\u002FSKILL.md",[],[],"2026-11-15 14:19:17",false,"---\nname: e2e-testing\ndescription: >-\n  Write end-to-end tests for important user-visible flows through the system's public interface. Use when a claim spans a complete flow that unit or integration tests cannot prove.\n---\n\n# End-to-end testing\n\n## When to use\n\nFor critical flows only: those whose failure a user would notice first, and claims that\ndepend on many components working together. Use a project-local verification skill when\none documents how to reach and exercise the real interface. Everything a lower level\ncan prove belongs there; end-to-end tests are the slowest and least precise.\n\n## Required context\n\nThe verification profile (how end-to-end tests run and against what environment).\nUseful: the product context (which flows are critical), the feature map (entry points),\nand any project-local `verify-*` skill under `.paved\u002Fskills\u002F`.\n\n## Preconditions\n\n- The project has an end-to-end setup, or the profile records `e2e` as unavailable, in\n  which case this skill records a gap and stops.\n- The flow is described as user-visible steps and expected outcomes.\n\n## Procedure\n\n1. **Read the project-local verification guide when present**: read its `SKILL.md` and\n   feature map, then use only its documented launch, readiness, interaction, evidence and\n   cleanup paths. If a claim is stale, confirm it against the source and report the mismatch.\n2. **Discover the existing suite**: where it lives, how it starts the system, how it\n   selects elements or calls endpoints, how it creates and removes test data, and how\n   it waits for asynchronous results.\n3. **Check lower levels first.** If a unit or integration test can prove the claim,\n   write that instead and say why no end-to-end test was added.\n4. **Script the flow as a user would**: through the public interface only, never by\n   reaching into internal state to set up or check results.\n5. **Select stable handles**: dedicated test attributes or public identifiers the suite\n   already uses, not layout positions or visible text that changes with copy edits.\n6. **Wait on conditions, never on fixed delays.** A sleep hides timing problems until\n   the day the environment is slower.\n7. **Isolate data**: each test creates and removes what it needs, so the suite can run\n   in parallel and repeatedly.\n8. **Run the test several times**; a test that fails intermittently is fixed or removed,\n   not retried until green.\n\n## Tools\n\nNone. The command and the target environment come from the verification profile.\n\n## Rules\n\nNone beyond those that apply by scope.\n\n## Verification\n\nRequired: `e2e`.\n\n## Evidence\n\nA check result for the end-to-end run, with the environment it ran against.\n\n## Completion criteria\n\n- The flow's claims are asserted through the public interface.\n- The test passes on repeated runs.\n- Claims a lower level could prove were tested there instead.\n\n## Failure modes\n\n| Failure | Signal | Response |\n|---|---|---|\n| Flaky test | Passes on retry | Find the race; wait on a condition |\n| Backdoor setup | Test writes internal state directly | Use the public interface or the suite's fixtures |\n| Pyramid inverted | Many end-to-end tests for local logic | Move those claims down a level |\n| Environment unavailable | Suite cannot start the system | Record a gap; do not fake the environment |\n\n## References\n\nNone.\n","# End-to-end testing\n\n## When to use\n\nFor critical flows only: those whose failure a user would notice first, and claims that\ndepend on many components working together. Use a project-local verification skill when\none documents how to reach and exercise the real interface. Everything a lower level\ncan prove belongs there; end-to-end tests are the slowest and least precise.\n\n## Required context\n\nThe verification profile (how end-to-end tests run and against what environment).\nUseful: the product context (which flows are critical), the feature map (entry points),\nand any project-local `verify-*` skill under `.paved\u002Fskills\u002F`.\n\n## Preconditions\n\n- The project has an end-to-end setup, or the profile records `e2e` as unavailable, in\n  which case this skill records a gap and stops.\n- The flow is described as user-visible steps and expected outcomes.\n\n## Procedure\n\n1. **Read the project-local verification guide when present**: read its `SKILL.md` and\n   feature map, then use only its documented launch, readiness, interaction, evidence and\n   cleanup paths. If a claim is stale, confirm it against the source and report the mismatch.\n2. **Discover the existing suite**: where it lives, how it starts the system, how it\n   selects elements or calls endpoints, how it creates and removes test data, and how\n   it waits for asynchronous results.\n3. **Check lower levels first.** If a unit or integration test can prove the claim,\n   write that instead and say why no end-to-end test was added.\n4. **Script the flow as a user would**: through the public interface only, never by\n   reaching into internal state to set up or check results.\n5. **Select stable handles**: dedicated test attributes or public identifiers the suite\n   already uses, not layout positions or visible text that changes with copy edits.\n6. **Wait on conditions, never on fixed delays.** A sleep hides timing problems until\n   the day the environment is slower.\n7. **Isolate data**: each test creates and removes what it needs, so the suite can run\n   in parallel and repeatedly.\n8. **Run the test several times**; a test that fails intermittently is fixed or removed,\n   not retried until green.\n\n## Tools\n\nNone. The command and the target environment come from the verification profile.\n\n## Rules\n\nNone beyond those that apply by scope.\n\n## Verification\n\nRequired: `e2e`.\n\n## Evidence\n\nA check result for the end-to-end run, with the environment it ran against.\n\n## Completion criteria\n\n- The flow's claims are asserted through the public interface.\n- The test passes on repeated runs.\n- Claims a lower level could prove were tested there instead.\n\n## Failure modes\n\n| Failure | Signal | Response |\n|---|---|---|\n| Flaky test | Passes on retry | Find the race; wait on a condition |\n| Backdoor setup | Test writes internal state directly | Use the public interface or the suite's fixtures |\n| Pyramid inverted | Many end-to-end tests for local logic | Move those claims down a level |\n| Environment unavailable | Suite cannot start the system | Record a gap; do not fake the environment |\n\n## References\n\nNone.\n",{"name":5,"description":7},"main","1cd80f05aff924ea609012e864fa5c22c16c7d2d","plugins\u002Fclaude\u002Fpaved\u002Fruntime\u002Fpaved-core\u002Fcore\u002Fskills\u002Ftesting\u002Fe2e-testing",0,"https:\u002F\u002Fgithub.com\u002Fandersonmrodrigues\u002Fpaved","https:\u002F\u002Fgithub.com\u002Fandersonmrodrigues","2026-11-14 20:09:28",{"source":8,"skillName":5,"commands":32,"prompt":42,"zipAvailable":43},[33,36,39],{"tool":34,"command":35},"npx","npx skills add andersonmrodrigues\u002Fpaved --skill e2e-testing",{"tool":37,"command":38},"bunx","bunx skills add andersonmrodrigues\u002Fpaved --skill e2e-testing",{"tool":40,"command":41},"pnpm","pnpm dlx skills add andersonmrodrigues\u002Fpaved --skill e2e-testing","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fandersonmrodrigues\u002Fpaved\u002Fblob\u002Fmain\u002Fplugins\u002Fclaude\u002Fpaved\u002Fruntime\u002Fpaved-core\u002Fcore\u002Fskills\u002Ftesting\u002Fe2e-testing\u002FSKILL.md",true,[45],{"path":46,"resourceType":47,"resourceTypeDesc":48,"sizeBytes":49,"sourceHtmlUrl":50},"skill.yaml","REFERENCE","参考文档",256,"https:\u002F\u002Fgithub.com\u002Fandersonmrodrigues\u002Fpaved\u002Fblob\u002Fmain\u002Fplugins\u002Fclaude\u002Fpaved\u002Fruntime\u002Fpaved-core\u002Fcore\u002Fskills\u002Ftesting\u002Fe2e-testing\u002Fskill.yaml",[52,59,65,71,77,83],{"skillNo":53,"name":54,"nameZh":6,"description":55,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":56,"categories":57,"keywords":58,"publishedAt":19},"01M7DFBWJT4T1MPBHTWT19PBEK","sample-skill","Does a sample task. Use when a sample is needed.","https:\u002F\u002Fgithub.com\u002Fandersonmrodrigues\u002Fpaved\u002Fblob\u002Fmain\u002Ftests\u002Ffixtures\u002Fskills\u002Fvalid\u002Fsample-skill\u002FSKILL.md",[],[],{"skillNo":60,"name":61,"nameZh":6,"description":55,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":62,"categories":63,"keywords":64,"publishedAt":19},"01M7DFBS6WTK30PBSW4ZS0NPWT","unexplained-contract","https:\u002F\u002Fgithub.com\u002Fandersonmrodrigues\u002Fpaved\u002Fblob\u002Fmain\u002Ftests\u002Ffixtures\u002Fskills\u002Finvalid\u002Funexplained-contract\u002FSKILL.md",[],[],{"skillNo":66,"name":67,"nameZh":6,"description":55,"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":70,"publishedAt":19},"01M7DFBPJGG170V9WTMFWY73R4","shell-block","https:\u002F\u002Fgithub.com\u002Fandersonmrodrigues\u002Fpaved\u002Fblob\u002Fmain\u002Ftests\u002Ffixtures\u002Fskills\u002Finvalid\u002Fshell-block\u002FSKILL.md",[],[],{"skillNo":72,"name":73,"nameZh":6,"description":55,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":74,"categories":75,"keywords":76,"publishedAt":19},"01M7DFBMZYR20JPTXNE5A8EFG6","project-identifier","https:\u002F\u002Fgithub.com\u002Fandersonmrodrigues\u002Fpaved\u002Fblob\u002Fmain\u002Ftests\u002Ffixtures\u002Fskills\u002Finvalid\u002Fproject-identifier\u002FSKILL.md",[],[],{"skillNo":78,"name":79,"nameZh":6,"description":55,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":80,"categories":81,"keywords":82,"publishedAt":19},"01M7DFBJ8J533DAKA3FTF54SX3","oversized","https:\u002F\u002Fgithub.com\u002Fandersonmrodrigues\u002Fpaved\u002Fblob\u002Fmain\u002Ftests\u002Ffixtures\u002Fskills\u002Finvalid\u002Foversized\u002FSKILL.md",[],[],{"skillNo":84,"name":85,"nameZh":6,"description":86,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":87,"categories":88,"keywords":89,"publishedAt":19},"01M7DFBFAD0RYCRHTZ2JW4RX7E","no-activation","Does a sample task.","https:\u002F\u002Fgithub.com\u002Fandersonmrodrigues\u002Fpaved\u002Fblob\u002Fmain\u002Ftests\u002Ffixtures\u002Fskills\u002Finvalid\u002Fno-activation\u002FSKILL.md",[],[]]