[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M71SPFX5CA11Y6F2Z2RRY0K0":3,"skill-same:01M71SPFX5CA11Y6F2Z2RRY0K0":147},{"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":34,"linkOnly":35,"markdownContent":36,"markdownBody":37,"frontMatter":38,"refName":39,"commitSha":40,"skillDirectory":41,"forksCount":42,"repositoryHtmlUrl":43,"repositoryHomepageUrl":6,"ownerHtmlUrl":44,"ownerBlogUrl":6,"ownerDescription":45,"updatedAt":46,"install":47,"resources":60},"01M71SPFX5CA11Y6F2Z2RRY0K0","coding-standards",null,"Correct-by-construction TypeScript and Effect standards. Use for TypeScript engineering, Effect code, or when another skill needs the user's coding standards.","sanurb\u002F.dotfiles","sanurb","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F60886336?v=4","01M71SKJS17F5YPRE27CVMEH1X","Santiago U","01M71SKJSTGEXEQ82HMAQP4ZAF",2,"MIT","https:\u002F\u002Fgithub.com\u002Fsanurb\u002F.dotfiles\u002Fblob\u002Fmain\u002Fconfig\u002Fpi\u002Fagent\u002Fskills\u002Fcoding-standards\u002FSKILL.md",[],[19,20,21,22,23,24,25,26,27,28,29,30,31,32,33],"standards","coding standards","coding","effect","typescript engineering","for","correct","use","when","code","needs","another skill","typescript","engineering","user","2026-11-10 13:02:02",false,"---\nname: coding-standards\ndescription: Correct-by-construction TypeScript and Effect standards. Use for TypeScript engineering, Effect code, or when another skill needs the user's coding standards.\n---\n\n# TypeScript and Effect Coding Standards\n\nBuild **correct by construction**: parse data into meaningful types, make expected failures explicit, keep effects behind cohesive services, and test through real interfaces.\n\n## Decision priority\n\nWhen rules pull in different directions:\n\n1. Preserve correctness, safety, and debuggability.\n2. Apply these standards to new code and the complete behavior being changed.\n3. Follow compatible repository architecture and conventions.\n4. Contain incompatible older patterns at the nearest existing edge.\n5. Keep unrelated behavior unchanged unless a broader migration was requested.\n6. Record meaningful trade-offs with comments or ADRs.\n\n## Core principles\n\n- Expected failures are values; defects may throw or panic.\n- Parse external and serialized data into domain\u002Fapplication types at the edge.\n- Make illegal states unrepresentable where practical.\n- Start meaningful services from explicit interfaces.\n- Prefer composition, a functional core, and an imperative shell.\n- Design deep, cohesive modules with low caller burden.\n- Make every abstraction pass the deletion test.\n- Test behavior through real interfaces using real or faithful implementations rather than module mocks.\n- Prefer the simplest correct design and the least code.\n\n## 1. Establish the local rules\n\nRead the nearest `AGENTS.md`, package configuration, architecture docs, and the changed area's conventions for errors, schemas, services, tests, observability, and files.\n\nApply the decision priority above when local conventions conflict with these standards.\n\n**Complete when:** the governing files and runtime\u002Flibrary versions have been identified, and every compatible or incompatible local pattern touching the changed behavior is accounted for.\n\n## 2. Trace the behavior and load applicable references\n\nTrace each caller-visible operation from input through every decision and effect to its observable result. Classify each changed concern as domain behavior, application policy, technology\u002Fframework mechanics, or composition\u002Fresource wiring.\n\nRead every applicable reference completely before designing the change:\n\n- [`references\u002Feffect.md`](references\u002Feffect.md) — whenever Effect code changes; follow its branch pointers before editing.\n- [`references\u002Ferrors.md`](references\u002Ferrors.md) — when behavior can fail or absence may be ordinary.\n- [`references\u002Fsensitive-data-and-observability.md`](references\u002Fsensitive-data-and-observability.md) — when behavior handles secrets, personal data, logging, tracing, metrics, or error reporting.\n- [`references\u002Fparsing-and-schemas.md`](references\u002Fparsing-and-schemas.md) — when data crosses an external\u002Fserialized edge, a schema changes, or protocol\u002Fpersistence representations are designed.\n- [`references\u002Fdomain-types-and-state.md`](references\u002Fdomain-types-and-state.md) — when IDs, units, constrained values, optional inputs, entities, lifecycle states, or operation options change.\n- [`references\u002Fmodules-services-and-adapters.md`](references\u002Fmodules-services-and-adapters.md) — when behavior owns domain rules, coordinates effects, uses dependencies, crosses technology boundaries, or changes module\u002Fservice design.\n- [`references\u002Fpersistence.md`](references\u002Fpersistence.md) — when behavior reads or writes a database, cache, durable object, ORM model, transaction, or persisted record.\n- [`references\u002Fworkflows-transactions-and-idempotency.md`](references\u002Fworkflows-transactions-and-idempotency.md) — when work spans boundaries, retries, resumes, receives redelivery, delays, compensates, or may execute more than once.\n- [`references\u002Fconfiguration-and-resources.md`](references\u002Fconfiguration-and-resources.md) — when behavior reads configuration, creates\u002Fcloses resources, performs startup work, uses time\u002Frandomness, or touches global state.\n- [`references\u002Ftesting.md`](references\u002Ftesting.md) — whenever behavior, public inference, tests, or test implementations change.\n- [`references\u002Ftypescript-safety.md`](references\u002Ftypescript-safety.md) — when types, signatures, mutable values, casts, non-null assumptions, or compiler settings change.\n- [`references\u002Fimports-exports-and-files.md`](references\u002Fimports-exports-and-files.md) — when imports, exports, entrypoints, helper placement, or file organization change.\n- [`references\u002Fcomments-and-jsdoc.md`](references\u002Fcomments-and-jsdoc.md) — when exported symbols, comments, JSDoc, user-facing text, or rendered errors change.\n\n**Complete when:** every changed input, output, failure, dependency, effect, state transition, external representation, and test surface maps to an owning module and an applicable reference.\n\n## 3. Design from the public types inward\n\nDefine or confirm the caller-facing input, output, expected errors, and service interfaces before implementing them. Parse less-trusted data before it reaches inner code. Keep domain calculations pure. Put application policy and effect order in the owning service. Keep framework\u002Fprovider types private to their owner.\n\nCheck existing modules, services, clients, Adapters, schemas, errors, and helpers before adding one. Apply the deletion test: an abstraction earns its place when removing it would spread meaningful complexity into callers. For each new abstraction, record the existing owner or direct implementation considered and why it does not fit.\n\n**Complete when:** caller-facing inputs, outputs, expected errors, and service interfaces are explicit; every changed dependency and effect has one owner; each new abstraction has deletion-test evidence for the final report; and framework\u002Fprovider types remain private to their owner.\n\n## 4. Implement the complete changed behavior\n\nImplement every path required by the caller-visible operation, including expected failures, external translations, diagnostics, and resource behavior. Keep unrelated old behavior unchanged. Preserve existing compatible telemetry and error-reporting hooks.\n\n**Complete when:** every traced path is implemented through its owning interface; expected failures use explicit error values; external data reaches inner code as parsed types; and public application\u002Fdomain contracts expose application\u002Fdomain types.\n\n## 5. Verify through public interfaces\n\nAdd or update the tests required by [`references\u002Ftesting.md`](references\u002Ftesting.md). Run the repository's required verification commands, adding individual typecheck, test, build, or lint commands only when they are not already covered. Re-read each applicable reference and check every changed symbol against it. Fix each exception or report it with concrete evidence.\n\n**Complete when:** every required check passes or has a reported failure with concrete evidence; every applicable reference rule has been checked; every caller-visible feature has its required coverage; every added or changed export is intentional and has the documentation required by [`references\u002Fcomments-and-jsdoc.md`](references\u002Fcomments-and-jsdoc.md); each abstraction, helper, and cast in the changed behavior is required and conforms to its applicable reference; and all changes remain within the requested scope.","# TypeScript and Effect Coding Standards\n\nBuild **correct by construction**: parse data into meaningful types, make expected failures explicit, keep effects behind cohesive services, and test through real interfaces.\n\n## Decision priority\n\nWhen rules pull in different directions:\n\n1. Preserve correctness, safety, and debuggability.\n2. Apply these standards to new code and the complete behavior being changed.\n3. Follow compatible repository architecture and conventions.\n4. Contain incompatible older patterns at the nearest existing edge.\n5. Keep unrelated behavior unchanged unless a broader migration was requested.\n6. Record meaningful trade-offs with comments or ADRs.\n\n## Core principles\n\n- Expected failures are values; defects may throw or panic.\n- Parse external and serialized data into domain\u002Fapplication types at the edge.\n- Make illegal states unrepresentable where practical.\n- Start meaningful services from explicit interfaces.\n- Prefer composition, a functional core, and an imperative shell.\n- Design deep, cohesive modules with low caller burden.\n- Make every abstraction pass the deletion test.\n- Test behavior through real interfaces using real or faithful implementations rather than module mocks.\n- Prefer the simplest correct design and the least code.\n\n## 1. Establish the local rules\n\nRead the nearest `AGENTS.md`, package configuration, architecture docs, and the changed area's conventions for errors, schemas, services, tests, observability, and files.\n\nApply the decision priority above when local conventions conflict with these standards.\n\n**Complete when:** the governing files and runtime\u002Flibrary versions have been identified, and every compatible or incompatible local pattern touching the changed behavior is accounted for.\n\n## 2. Trace the behavior and load applicable references\n\nTrace each caller-visible operation from input through every decision and effect to its observable result. Classify each changed concern as domain behavior, application policy, technology\u002Fframework mechanics, or composition\u002Fresource wiring.\n\nRead every applicable reference completely before designing the change:\n\n- [`references\u002Feffect.md`](references\u002Feffect.md) — whenever Effect code changes; follow its branch pointers before editing.\n- [`references\u002Ferrors.md`](references\u002Ferrors.md) — when behavior can fail or absence may be ordinary.\n- [`references\u002Fsensitive-data-and-observability.md`](references\u002Fsensitive-data-and-observability.md) — when behavior handles secrets, personal data, logging, tracing, metrics, or error reporting.\n- [`references\u002Fparsing-and-schemas.md`](references\u002Fparsing-and-schemas.md) — when data crosses an external\u002Fserialized edge, a schema changes, or protocol\u002Fpersistence representations are designed.\n- [`references\u002Fdomain-types-and-state.md`](references\u002Fdomain-types-and-state.md) — when IDs, units, constrained values, optional inputs, entities, lifecycle states, or operation options change.\n- [`references\u002Fmodules-services-and-adapters.md`](references\u002Fmodules-services-and-adapters.md) — when behavior owns domain rules, coordinates effects, uses dependencies, crosses technology boundaries, or changes module\u002Fservice design.\n- [`references\u002Fpersistence.md`](references\u002Fpersistence.md) — when behavior reads or writes a database, cache, durable object, ORM model, transaction, or persisted record.\n- [`references\u002Fworkflows-transactions-and-idempotency.md`](references\u002Fworkflows-transactions-and-idempotency.md) — when work spans boundaries, retries, resumes, receives redelivery, delays, compensates, or may execute more than once.\n- [`references\u002Fconfiguration-and-resources.md`](references\u002Fconfiguration-and-resources.md) — when behavior reads configuration, creates\u002Fcloses resources, performs startup work, uses time\u002Frandomness, or touches global state.\n- [`references\u002Ftesting.md`](references\u002Ftesting.md) — whenever behavior, public inference, tests, or test implementations change.\n- [`references\u002Ftypescript-safety.md`](references\u002Ftypescript-safety.md) — when types, signatures, mutable values, casts, non-null assumptions, or compiler settings change.\n- [`references\u002Fimports-exports-and-files.md`](references\u002Fimports-exports-and-files.md) — when imports, exports, entrypoints, helper placement, or file organization change.\n- [`references\u002Fcomments-and-jsdoc.md`](references\u002Fcomments-and-jsdoc.md) — when exported symbols, comments, JSDoc, user-facing text, or rendered errors change.\n\n**Complete when:** every changed input, output, failure, dependency, effect, state transition, external representation, and test surface maps to an owning module and an applicable reference.\n\n## 3. Design from the public types inward\n\nDefine or confirm the caller-facing input, output, expected errors, and service interfaces before implementing them. Parse less-trusted data before it reaches inner code. Keep domain calculations pure. Put application policy and effect order in the owning service. Keep framework\u002Fprovider types private to their owner.\n\nCheck existing modules, services, clients, Adapters, schemas, errors, and helpers before adding one. Apply the deletion test: an abstraction earns its place when removing it would spread meaningful complexity into callers. For each new abstraction, record the existing owner or direct implementation considered and why it does not fit.\n\n**Complete when:** caller-facing inputs, outputs, expected errors, and service interfaces are explicit; every changed dependency and effect has one owner; each new abstraction has deletion-test evidence for the final report; and framework\u002Fprovider types remain private to their owner.\n\n## 4. Implement the complete changed behavior\n\nImplement every path required by the caller-visible operation, including expected failures, external translations, diagnostics, and resource behavior. Keep unrelated old behavior unchanged. Preserve existing compatible telemetry and error-reporting hooks.\n\n**Complete when:** every traced path is implemented through its owning interface; expected failures use explicit error values; external data reaches inner code as parsed types; and public application\u002Fdomain contracts expose application\u002Fdomain types.\n\n## 5. Verify through public interfaces\n\nAdd or update the tests required by [`references\u002Ftesting.md`](references\u002Ftesting.md). Run the repository's required verification commands, adding individual typecheck, test, build, or lint commands only when they are not already covered. Re-read each applicable reference and check every changed symbol against it. Fix each exception or report it with concrete evidence.\n\n**Complete when:** every required check passes or has a reported failure with concrete evidence; every applicable reference rule has been checked; every caller-visible feature has its required coverage; every added or changed export is intentional and has the documentation required by [`references\u002Fcomments-and-jsdoc.md`](references\u002Fcomments-and-jsdoc.md); each abstraction, helper, and cast in the changed behavior is required and conforms to its applicable reference; and all changes remain within the requested scope.",{"name":5,"description":7},"main","5acbba39180bbea80204d1a58db40ccbd813a13a","config\u002Fpi\u002Fagent\u002Fskills\u002Fcoding-standards",0,"https:\u002F\u002Fgithub.com\u002Fsanurb\u002F.dotfiles","https:\u002F\u002Fgithub.com\u002Fsanurb","Building things","2026-11-12 05:25:20",{"source":8,"skillName":5,"commands":48,"prompt":58,"zipAvailable":59},[49,52,55],{"tool":50,"command":51},"npx","npx skills add sanurb\u002F.dotfiles --skill coding-standards",{"tool":53,"command":54},"bunx","bunx skills add sanurb\u002F.dotfiles --skill coding-standards",{"tool":56,"command":57},"pnpm","pnpm dlx skills add sanurb\u002F.dotfiles --skill coding-standards","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fsanurb\u002F.dotfiles\u002Fblob\u002Fmain\u002Fconfig\u002Fpi\u002Fagent\u002Fskills\u002Fcoding-standards\u002FSKILL.md",true,[61,67,71,75,79,83,87,91,95,99,103,107,111,115,119,123,127,131,135,139,143],{"path":62,"resourceType":63,"resourceTypeDesc":64,"sizeBytes":65,"sourceHtmlUrl":66},"references\u002Fcomments-and-jsdoc.md","REFERENCE","参考文档",3525,"https:\u002F\u002Fgithub.com\u002Fsanurb\u002F.dotfiles\u002Fblob\u002Fmain\u002Fconfig\u002Fpi\u002Fagent\u002Fskills\u002Fcoding-standards\u002Freferences\u002Fcomments-and-jsdoc.md",{"path":68,"resourceType":63,"resourceTypeDesc":64,"sizeBytes":69,"sourceHtmlUrl":70},"references\u002Fconfiguration-and-resources.md",1700,"https:\u002F\u002Fgithub.com\u002Fsanurb\u002F.dotfiles\u002Fblob\u002Fmain\u002Fconfig\u002Fpi\u002Fagent\u002Fskills\u002Fcoding-standards\u002Freferences\u002Fconfiguration-and-resources.md",{"path":72,"resourceType":63,"resourceTypeDesc":64,"sizeBytes":73,"sourceHtmlUrl":74},"references\u002Fdomain-types-and-state.md",3353,"https:\u002F\u002Fgithub.com\u002Fsanurb\u002F.dotfiles\u002Fblob\u002Fmain\u002Fconfig\u002Fpi\u002Fagent\u002Fskills\u002Fcoding-standards\u002Freferences\u002Fdomain-types-and-state.md",{"path":76,"resourceType":63,"resourceTypeDesc":64,"sizeBytes":77,"sourceHtmlUrl":78},"references\u002Feffect-caching.md",3497,"https:\u002F\u002Fgithub.com\u002Fsanurb\u002F.dotfiles\u002Fblob\u002Fmain\u002Fconfig\u002Fpi\u002Fagent\u002Fskills\u002Fcoding-standards\u002Freferences\u002Feffect-caching.md",{"path":80,"resourceType":63,"resourceTypeDesc":64,"sizeBytes":81,"sourceHtmlUrl":82},"references\u002Feffect-configuration.md",3132,"https:\u002F\u002Fgithub.com\u002Fsanurb\u002F.dotfiles\u002Fblob\u002Fmain\u002Fconfig\u002Fpi\u002Fagent\u002Fskills\u002Fcoding-standards\u002Freferences\u002Feffect-configuration.md",{"path":84,"resourceType":63,"resourceTypeDesc":64,"sizeBytes":85,"sourceHtmlUrl":86},"references\u002Feffect-http-clients.md",5487,"https:\u002F\u002Fgithub.com\u002Fsanurb\u002F.dotfiles\u002Fblob\u002Fmain\u002Fconfig\u002Fpi\u002Fagent\u002Fskills\u002Fcoding-standards\u002Freferences\u002Feffect-http-clients.md",{"path":88,"resourceType":63,"resourceTypeDesc":64,"sizeBytes":89,"sourceHtmlUrl":90},"references\u002Feffect-scheduling-and-retry.md",5293,"https:\u002F\u002Fgithub.com\u002Fsanurb\u002F.dotfiles\u002Fblob\u002Fmain\u002Fconfig\u002Fpi\u002Fagent\u002Fskills\u002Fcoding-standards\u002Freferences\u002Feffect-scheduling-and-retry.md",{"path":92,"resourceType":63,"resourceTypeDesc":64,"sizeBytes":93,"sourceHtmlUrl":94},"references\u002Feffect-schema-and-data.md",5384,"https:\u002F\u002Fgithub.com\u002Fsanurb\u002F.dotfiles\u002Fblob\u002Fmain\u002Fconfig\u002Fpi\u002Fagent\u002Fskills\u002Fcoding-standards\u002Freferences\u002Feffect-schema-and-data.md",{"path":96,"resourceType":63,"resourceTypeDesc":64,"sizeBytes":97,"sourceHtmlUrl":98},"references\u002Feffect-services.md",9261,"https:\u002F\u002Fgithub.com\u002Fsanurb\u002F.dotfiles\u002Fblob\u002Fmain\u002Fconfig\u002Fpi\u002Fagent\u002Fskills\u002Fcoding-standards\u002Freferences\u002Feffect-services.md",{"path":100,"resourceType":63,"resourceTypeDesc":64,"sizeBytes":101,"sourceHtmlUrl":102},"references\u002Feffect-streams.md",5982,"https:\u002F\u002Fgithub.com\u002Fsanurb\u002F.dotfiles\u002Fblob\u002Fmain\u002Fconfig\u002Fpi\u002Fagent\u002Fskills\u002Fcoding-standards\u002Freferences\u002Feffect-streams.md",{"path":104,"resourceType":63,"resourceTypeDesc":64,"sizeBytes":105,"sourceHtmlUrl":106},"references\u002Feffect-testing.md",4666,"https:\u002F\u002Fgithub.com\u002Fsanurb\u002F.dotfiles\u002Fblob\u002Fmain\u002Fconfig\u002Fpi\u002Fagent\u002Fskills\u002Fcoding-standards\u002Freferences\u002Feffect-testing.md",{"path":108,"resourceType":63,"resourceTypeDesc":64,"sizeBytes":109,"sourceHtmlUrl":110},"references\u002Feffect.md",2058,"https:\u002F\u002Fgithub.com\u002Fsanurb\u002F.dotfiles\u002Fblob\u002Fmain\u002Fconfig\u002Fpi\u002Fagent\u002Fskills\u002Fcoding-standards\u002Freferences\u002Feffect.md",{"path":112,"resourceType":63,"resourceTypeDesc":64,"sizeBytes":113,"sourceHtmlUrl":114},"references\u002Ferrors.md",4585,"https:\u002F\u002Fgithub.com\u002Fsanurb\u002F.dotfiles\u002Fblob\u002Fmain\u002Fconfig\u002Fpi\u002Fagent\u002Fskills\u002Fcoding-standards\u002Freferences\u002Ferrors.md",{"path":116,"resourceType":63,"resourceTypeDesc":64,"sizeBytes":117,"sourceHtmlUrl":118},"references\u002Fimports-exports-and-files.md",3199,"https:\u002F\u002Fgithub.com\u002Fsanurb\u002F.dotfiles\u002Fblob\u002Fmain\u002Fconfig\u002Fpi\u002Fagent\u002Fskills\u002Fcoding-standards\u002Freferences\u002Fimports-exports-and-files.md",{"path":120,"resourceType":63,"resourceTypeDesc":64,"sizeBytes":121,"sourceHtmlUrl":122},"references\u002Fmodules-services-and-adapters.md",11060,"https:\u002F\u002Fgithub.com\u002Fsanurb\u002F.dotfiles\u002Fblob\u002Fmain\u002Fconfig\u002Fpi\u002Fagent\u002Fskills\u002Fcoding-standards\u002Freferences\u002Fmodules-services-and-adapters.md",{"path":124,"resourceType":63,"resourceTypeDesc":64,"sizeBytes":125,"sourceHtmlUrl":126},"references\u002Fparsing-and-schemas.md",2959,"https:\u002F\u002Fgithub.com\u002Fsanurb\u002F.dotfiles\u002Fblob\u002Fmain\u002Fconfig\u002Fpi\u002Fagent\u002Fskills\u002Fcoding-standards\u002Freferences\u002Fparsing-and-schemas.md",{"path":128,"resourceType":63,"resourceTypeDesc":64,"sizeBytes":129,"sourceHtmlUrl":130},"references\u002Fpersistence.md",1379,"https:\u002F\u002Fgithub.com\u002Fsanurb\u002F.dotfiles\u002Fblob\u002Fmain\u002Fconfig\u002Fpi\u002Fagent\u002Fskills\u002Fcoding-standards\u002Freferences\u002Fpersistence.md",{"path":132,"resourceType":63,"resourceTypeDesc":64,"sizeBytes":133,"sourceHtmlUrl":134},"references\u002Fsensitive-data-and-observability.md",1847,"https:\u002F\u002Fgithub.com\u002Fsanurb\u002F.dotfiles\u002Fblob\u002Fmain\u002Fconfig\u002Fpi\u002Fagent\u002Fskills\u002Fcoding-standards\u002Freferences\u002Fsensitive-data-and-observability.md",{"path":136,"resourceType":63,"resourceTypeDesc":64,"sizeBytes":137,"sourceHtmlUrl":138},"references\u002Ftesting.md",4261,"https:\u002F\u002Fgithub.com\u002Fsanurb\u002F.dotfiles\u002Fblob\u002Fmain\u002Fconfig\u002Fpi\u002Fagent\u002Fskills\u002Fcoding-standards\u002Freferences\u002Ftesting.md",{"path":140,"resourceType":63,"resourceTypeDesc":64,"sizeBytes":141,"sourceHtmlUrl":142},"references\u002Ftypescript-safety.md",3078,"https:\u002F\u002Fgithub.com\u002Fsanurb\u002F.dotfiles\u002Fblob\u002Fmain\u002Fconfig\u002Fpi\u002Fagent\u002Fskills\u002Fcoding-standards\u002Freferences\u002Ftypescript-safety.md",{"path":144,"resourceType":63,"resourceTypeDesc":64,"sizeBytes":145,"sourceHtmlUrl":146},"references\u002Fworkflows-transactions-and-idempotency.md",2221,"https:\u002F\u002Fgithub.com\u002Fsanurb\u002F.dotfiles\u002Fblob\u002Fmain\u002Fconfig\u002Fpi\u002Fagent\u002Fskills\u002Fcoding-standards\u002Freferences\u002Fworkflows-transactions-and-idempotency.md",[148,174,201,228,245,273],{"skillNo":149,"name":150,"nameZh":6,"description":151,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":152,"categories":153,"keywords":164,"publishedAt":34},"01M71SS19VAM2YZ2SA7HD0PT2P","writing-great-skills","Reference for writing and editing skills well — the vocabulary and principles that make a skill predictable.","https:\u002F\u002Fgithub.com\u002Fsanurb\u002F.dotfiles\u002Fblob\u002Fmain\u002Fconfig\u002Fpi\u002Fagent\u002Fskills\u002Fwriting-great-skills\u002FSKILL.md",[154,159],{"categoryNo":155,"categoryName":156,"taxonomyType":157,"taxonomyTypeDesc":158},"01JBSEEDCAT000000000000018","写作与文案","SCENARIO","使用场景",{"categoryNo":160,"categoryName":161,"taxonomyType":162,"taxonomyTypeDesc":163},"01JBSEEDCAT000000000000036","内容创作者","PROFESSION","适用职业",[165,166,167,24,168,169,170,171,172,173],"writing great skills","writing","principles","editing","a skill","true","reference","make","vocabulary",{"skillNo":175,"name":176,"nameZh":6,"description":177,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":178,"categories":179,"keywords":183,"publishedAt":34},"01M71SRXKJN6RYXPN9GFRVYSR3","write-discoverable-code","Rules for writing code that coding agents (and humans) can find and understand through\nplain-text search. Apply whenever writing or renaming code: functions, types, constants,\nfiles, error messages, doc comments.\n\nGrounded in measurement: agents navigate by plain-text search, not by AST or\nlanguage server, so every identifier is a search query and every search miss\ncosts wasted reads.","https:\u002F\u002Fgithub.com\u002Fsanurb\u002F.dotfiles\u002Fblob\u002Fmain\u002Fconfig\u002Fpi\u002Fagent\u002Fskills\u002Fwrite-discoverable-code\u002FSKILL.md",[180],{"categoryNo":181,"categoryName":182,"taxonomyType":162,"taxonomyTypeDesc":163},"01JBSEEDCAT000000000000030","开发工程师",[184,28,185,186,187,188,189,190,24,191,192,193,194,195,166,196,197,198,199,200],"write discoverable code","discoverable code","write","measurement","error","types","error messages","search","messages","constants","plain-text","files","Rules","query","apply","comments","can",{"skillNo":202,"name":203,"nameZh":6,"description":204,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":205,"categories":206,"keywords":210,"publishedAt":34},"01M71SRT760335ES5WSEAAQDN2","wrangler","Cloudflare Workers CLI for deploying, developing, and managing Workers, KV, R2, D1, Vectorize, Hyperdrive, Workers AI, Containers, Queues, Workflows, Pipelines, and Secrets Store. Load before running wrangler commands to ensure correct syntax and best practices. Biases towards retrieval from Cloudflare docs over pre-trained knowledge.","https:\u002F\u002Fgithub.com\u002Fsanurb\u002F.dotfiles\u002Fblob\u002Fmain\u002Fconfig\u002Fpi\u002Fagent\u002Fskills\u002Fwrangler\u002FSKILL.md",[207],{"categoryNo":208,"categoryName":209,"taxonomyType":157,"taxonomyTypeDesc":158},"01JBSEEDCAT000000000000010","后端与接口",[203,211,212,213,214,215,216,217,218,219,220,221,222,24,223,25,224,225,226,227],"cloudflare","d1","knowledge","workflows","cli","secrets","commands","syntax","cloudflare workers","r2","queues","running","containers","load","workers","best practices","store",{"skillNo":229,"name":230,"nameZh":6,"description":231,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":232,"categories":233,"keywords":234,"publishedAt":34},"01M71SRPHE452V400HD2EZC4XG","workers-best-practices","Reviews and authors Cloudflare Workers code against production best practices. Load when writing new Workers, reviewing Worker code, configuring wrangler.jsonc, or checking for common Workers anti-patterns (streaming, floating promises, global state, secrets, bindings, observability). Biases towards retrieval from Cloudflare docs over pre-trained knowledge.","https:\u002F\u002Fgithub.com\u002Fsanurb\u002F.dotfiles\u002Fblob\u002Fmain\u002Fconfig\u002Fpi\u002Fagent\u002Fskills\u002Fworkers-best-practices\u002FSKILL.md",[],[235,225,226,236,237,238,24,211,239,213,240,203,166,224,27,28,241,242,243,244],"workers best practices","observability","reviews","promises","worker","new","common","streaming","state","anti-patterns",{"skillNo":246,"name":247,"nameZh":6,"description":248,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":249,"categories":250,"keywords":254,"publishedAt":34},"01M71SRJ36HWMTQ9ZMQ2RB008S","web-perf","Analyzes web performance using Chrome DevTools MCP. Measures Core Web Vitals (LCP, INP, CLS) and supplementary metrics (FCP, TBT, Speed Index), identifies render-blocking resources, network dependency chains, layout shifts, caching issues, and accessibility gaps. Use when asked to audit, profile, debug, or optimize page load performance, Lighthouse scores, or site speed. Biases towards retrieval from current documentation over pre-trained knowledge.","https:\u002F\u002Fgithub.com\u002Fsanurb\u002F.dotfiles\u002Fblob\u002Fmain\u002Fconfig\u002Fpi\u002Fagent\u002Fskills\u002Fweb-perf\u002FSKILL.md",[251],{"categoryNo":252,"categoryName":253,"taxonomyType":157,"taxonomyTypeDesc":158},"01JBSEEDCAT000000000000023","Skill与智能体开发",[255,256,257,258,259,260,261,262,263,264,213,265,27,266,267,268,269,270,271,272],"web perf","perf","web","resources","vitals","chrome devtools","performance","render","issues","devtools","MCP","caching","documentation","optimize","layout","audit","dependency","network",{"skillNo":274,"name":275,"nameZh":6,"description":276,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":277,"categories":278,"keywords":279,"publishedAt":34},"01M71SREWXFKFN6DM80YCCQZ46","wayfinder","Plan a huge chunk of work — more than one agent session can hold — as a shared map of decision tickets on your issue tracker, and resolve them one at a time until the way to the destination is clear.","https:\u002F\u002Fgithub.com\u002Fsanurb\u002F.dotfiles\u002Fblob\u002Fmain\u002Fconfig\u002Fpi\u002Fagent\u002Fskills\u002Fwayfinder\u002FSKILL.md",[],[275,280,281,282,283,284,285,170,286,287,288,289,200,290,291,292,293,294,295,296],"shared","as","chunk","time","session","decision","more","map","one","one at a time","agent session","work","plan","tracker","tickets","at","destination"]