[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M71FSTQ9B66S2FR00QT6PW7Z":3,"skill-same:01M71FSTQ9B66S2FR00QT6PW7Z":79},{"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":44,"linkOnly":45,"markdownContent":46,"markdownBody":47,"frontMatter":48,"refName":51,"commitSha":52,"skillDirectory":53,"forksCount":14,"repositoryHtmlUrl":54,"repositoryHomepageUrl":6,"ownerHtmlUrl":55,"ownerBlogUrl":56,"ownerDescription":57,"updatedAt":58,"install":59,"resources":72},"01M71FSTQ9B66S2FR00QT6PW7Z","wait-for-event",null,"ALWAYS invoke this skill when a coding-agent workflow must wake on the first of an agent-mail record, a herdr-hosted agent session state change, a consumption-control alert, or a clock instant, within one bounded timeout. NEVER poll mail, herdr, or alert state with a standing watcher or a hand-built loop.","outcomeeng\u002Fplugins","outcomeeng","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F257335685?v=4","01M71FRVRF36XYR3HRSCGFHK2R","Outcome Engineering","01M71FRVS4BZG17DWANFJ7EPNY",1,"MIT","https:\u002F\u002Fgithub.com\u002Foutcomeeng\u002Fplugins\u002Fblob\u002Fmain\u002Fsrc\u002Fplugins\u002Fcoding-agents\u002Fskills\u002Fwait-for-event\u002FSKILL.md",[18],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000023","Skill与智能体开发","SCENARIO","使用场景",[24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43],"wait for event","wait for","for","wait","event","clock","one","agent session","when","invoke","hand","with","workflow","alert","never","session","python3","loop","Bash","state","2026-11-10 10:12:30",false,"---\nname: wait-for-event\ndescription: >-\n  ALWAYS invoke this skill when a coding-agent workflow must wake on the first of an agent-mail record, a herdr-hosted agent session state change, a consumption-control alert, or a clock instant, within one bounded timeout. NEVER poll mail, herdr, or alert state with a standing watcher or a hand-built loop.\nargument-hint: \"\u003CJSON request>\"\nallowed-tools: Write, Bash(python3 \"${CLAUDE_SKILL_DIR}\u002Fscripts\u002Fwait_event.py\":*)\n---\n\n\u003Cobjective>\nOne JSON line naming the first event any requested source yielded, every source that could not be read, the expiry of the timeout, or the rejection of the request.\n\u003C\u002Fobjective>\n\n\u003Crequest>\n\nA request is one JSON object naming a required `timeoutSeconds`, a positive number, and a non-empty `sources` array. Each source is an object whose `kind` selects its form:\n\n| Kind    | Fields                                                      | Yields an event when                                                                        |\n| ------- | ----------------------------------------------------------- | ------------------------------------------------------------------------------------------- |\n| `mail`  | `agent`, `id`; optional `repository`                        | the complete listing of `agent`, read and unread records alike, holds a store id above `id` |\n| `pane`  | `sessions`, each `{session, state}`; optional `environment` | the state of a named hosted agent session differs from its `state`                          |\n| `spend` | `after`; optional `root`                                    | the consumption-control detector recorded an alert after the instant `after`                |\n| `clock` | `at`                                                        | the instant `at`, an ISO 8601 instant ending in `Z` that falls before the timeout, arrives  |\n\nEach value comes from the last event handled:\n\n- `id` is the store id of the last mail record handled, `0` for none, so a run that ends at any point loses no record.\n- `repository` is the absolute path of the repository whose mail project holds `agent`'s records. A mail source that omits it reads the project of the working directory the wait runs in; one that names it reads that repository's project, and a named path that resolves to no repository, or is not an absolute path, appears as an `unreadable-source` line with no fallback to the working directory's project. Pass `repository` whenever the wait runs in a different repository than the one that registered `agent`.\n- `state` is the last agent state handled for that session, one of the states `\u002Foperate-herdr` projects. `session` is the agent name or pane id herdr reports. `environment` defaults to `herdr`; any other environment projects no agent session state and is reported as unreadable.\n- `after` and `at` are ISO 8601 instants ending in `Z`. `root` names the detector state root and defaults to the one `\u002Fcontrol-token-spend` uses.\n\n```json\n{\n  \"timeoutSeconds\": 600,\n  \"sources\": [\n    { \"kind\": \"mail\", \"agent\": \"AmberGull\", \"id\": 41, \"repository\": \"\u002Fwork\u002Fproduct.git\" },\n    { \"kind\": \"pane\", \"sessions\": [{ \"session\": \"executor-288\", \"state\": \"working\" }] },\n    { \"kind\": \"spend\", \"after\": \"2026-10-16T09:00:00Z\" },\n    { \"kind\": \"clock\", \"at\": \"2026-10-16T10:00:00Z\" }\n  ]\n}\n```\n\n\u003C\u002Frequest>\n\n\u003Cline_forms>\n\nEvery run prints exactly one of these, each one JSON object on one line whose `kind` names its form, then exits.\n\n| `kind`              | Carries                                                                                        | Exit |\n| ------------------- | ---------------------------------------------------------------------------------------------- | ---- |\n| `event`             | `source`, plus the fields below for that source                                                | 0    |\n| `timeout`           | `timeoutSeconds`                                                                               | 0    |\n| `unreadable-source` | `sources`, one entry per unreadable source with its `source`, `detail`, and identifying fields | 1    |\n| `invalid-request`   | `detail` naming the field                                                                      | 2    |\n\nEvent fields by `source`:\n\n- `mail`: `record` with the record's `id`, `sender`, `kind`, and `subject`.\n- `pane`: `environment`, `session`, the new `state`, and `previousState`, the request's `state` for that session.\n- `spend`: the alert's `identity`, `recordedUtc`, and `signal`.\n- `clock`: `at`.\n\nA source that cannot be read is never a quiet period. A mail store that is unavailable or whose listing does not reach back to `id`, a session absent from the inventory or with incomplete evidence, an unavailable or ambiguous herdr result, an environment without agent session state, and a detector state root that is absent or unreadable each appear in an `unreadable-source` line. Drop or repair the named source before arming again.\n\n\u003C\u002Fline_forms>\n\n\u003Cworkflow>\n\n1. Interpret `$ARGUMENTS` as a complete JSON request. When it is empty, run nothing and report that `timeoutSeconds` and at least one source are required.\n2. Build the request from the last event handled, naming `timeoutSeconds` and every source to read.\n3. Write the request with the file-write tool to a file in the scratch directory the harness names for this session, under a file name unique to the agent and the request, and submit it through the input redirect in `\u003Cinvocation_form>`. Where the harness names no scratch directory, use the one the environment designates, such as `$RUNNER_TEMP` on a hosted runner.\n4. Arm one run at a time, with its one explicit `timeoutSeconds`, as the owner that collects its line. {!% if target == 'claude' %!}Let the run go to the background: its exit re-invokes the session, and the owner collects the line on the completion notice.{!% else %!}Run it in the foreground and collect the line within the active turn, or move the wait to the next step boundary.{!% endif %!}\n5. Read the one line the run prints. Act on `event` by handling it, then arm the next run with the new `id`, `state`, or `after` instant. Treat `timeout` as no event. Stop on `unreadable-source` or `invalid-request` and report the line verbatim.\n\n\u003C\u002Fworkflow>\n\n\u003Cinvocation_form>\n\nWith `\u003Crequest-file>` the file written in step 3:\n\n```bash\npython3 \"${CLAUDE_SKILL_DIR}\u002Fscripts\u002Fwait_event.py\" \u003C \u003Crequest-file>\n```\n\n\u003C\u002Finvocation_form>\n\n\u003Cconstraints>\n\n- ALWAYS supply `timeoutSeconds`; the run has no default timeout and rejects a request without a positive one before reading any source.\n- ALWAYS hold a wait to one invocation and re-arm it from the event handled; the script loops only inside its timeout and prints one line.\n- NEVER pass a request through a heredoc, a pipe, or an inline argument, and NEVER remove the request file.\n- NEVER run `am`, `herdr`, or a consumption-control read to reproduce a wait; the script reads mail through `\u002Foperate-agent-mail`, session states through `\u002Foperate-herdr`, and alerts through `\u002Fcontrol-token-spend`, and builds no command of its own.\n- NEVER rely on the wait to read or acknowledge a record or to prompt a pane; it keeps no cursor, state file, or lock and changes nothing. Judge a record with the `read` or `acknowledge` operation of `\u002Foperate-agent-mail` and steer a pane with `\u002Foperate-herdr`.\n- ALWAYS follow the arming rule `bounded-background-wait`: a wait has one explicit deadline, one result, and one owner that collects its termination, and the owner arms the next wait only after handling the line.\n- NEVER {!% if target == 'claude' %!}keep the wait as a standing watcher or let a run re-arm itself.{!% else %!}start the wait in the background, keep it as a standing watcher, or let a run re-arm itself.{!% endif %!}\n\n\u003C\u002Fconstraints>\n\n\u003Ctesting>\n\nThe script is covered over generated requests and controlled command runners and clocks at the adapters' command boundaries: the four line forms and their exit codes, a request without a positive timeout rejected before any source is read, each source's mapping from the capability result to an event, an unreadable-source line, or no event, the first-event order across sources, and the absence of any state write, mail send, record read or acknowledgement, or pane write.\n\n\u003C\u002Ftesting>\n\n\u003Csuccess_criteria>\n\n- Every run with a valid request prints exactly one line of the four forms and exits within its timeout, leaving no process and no file behind.\n- A request without a positive `timeoutSeconds`, a non-object document, and an unknown source kind print `invalid-request` and read no source.\n- Every mail, session, alert, or clock event carries the fields `\u003Cline_forms>` lists for its source, with store ids and instants preserved verbatim.\n- Every source the run cannot read appears in an `unreadable-source` line rather than passing as a quiet period.\n\n\u003C\u002Fsuccess_criteria>\n","\u003Cobjective>\nOne JSON line naming the first event any requested source yielded, every source that could not be read, the expiry of the timeout, or the rejection of the request.\n\u003C\u002Fobjective>\n\n\u003Crequest>\n\nA request is one JSON object naming a required `timeoutSeconds`, a positive number, and a non-empty `sources` array. Each source is an object whose `kind` selects its form:\n\n| Kind    | Fields                                                      | Yields an event when                                                                        |\n| ------- | ----------------------------------------------------------- | ------------------------------------------------------------------------------------------- |\n| `mail`  | `agent`, `id`; optional `repository`                        | the complete listing of `agent`, read and unread records alike, holds a store id above `id` |\n| `pane`  | `sessions`, each `{session, state}`; optional `environment` | the state of a named hosted agent session differs from its `state`                          |\n| `spend` | `after`; optional `root`                                    | the consumption-control detector recorded an alert after the instant `after`                |\n| `clock` | `at`                                                        | the instant `at`, an ISO 8601 instant ending in `Z` that falls before the timeout, arrives  |\n\nEach value comes from the last event handled:\n\n- `id` is the store id of the last mail record handled, `0` for none, so a run that ends at any point loses no record.\n- `repository` is the absolute path of the repository whose mail project holds `agent`'s records. A mail source that omits it reads the project of the working directory the wait runs in; one that names it reads that repository's project, and a named path that resolves to no repository, or is not an absolute path, appears as an `unreadable-source` line with no fallback to the working directory's project. Pass `repository` whenever the wait runs in a different repository than the one that registered `agent`.\n- `state` is the last agent state handled for that session, one of the states `\u002Foperate-herdr` projects. `session` is the agent name or pane id herdr reports. `environment` defaults to `herdr`; any other environment projects no agent session state and is reported as unreadable.\n- `after` and `at` are ISO 8601 instants ending in `Z`. `root` names the detector state root and defaults to the one `\u002Fcontrol-token-spend` uses.\n\n```json\n{\n  \"timeoutSeconds\": 600,\n  \"sources\": [\n    { \"kind\": \"mail\", \"agent\": \"AmberGull\", \"id\": 41, \"repository\": \"\u002Fwork\u002Fproduct.git\" },\n    { \"kind\": \"pane\", \"sessions\": [{ \"session\": \"executor-288\", \"state\": \"working\" }] },\n    { \"kind\": \"spend\", \"after\": \"2026-10-16T09:00:00Z\" },\n    { \"kind\": \"clock\", \"at\": \"2026-10-16T10:00:00Z\" }\n  ]\n}\n```\n\n\u003C\u002Frequest>\n\n\u003Cline_forms>\n\nEvery run prints exactly one of these, each one JSON object on one line whose `kind` names its form, then exits.\n\n| `kind`              | Carries                                                                                        | Exit |\n| ------------------- | ---------------------------------------------------------------------------------------------- | ---- |\n| `event`             | `source`, plus the fields below for that source                                                | 0    |\n| `timeout`           | `timeoutSeconds`                                                                               | 0    |\n| `unreadable-source` | `sources`, one entry per unreadable source with its `source`, `detail`, and identifying fields | 1    |\n| `invalid-request`   | `detail` naming the field                                                                      | 2    |\n\nEvent fields by `source`:\n\n- `mail`: `record` with the record's `id`, `sender`, `kind`, and `subject`.\n- `pane`: `environment`, `session`, the new `state`, and `previousState`, the request's `state` for that session.\n- `spend`: the alert's `identity`, `recordedUtc`, and `signal`.\n- `clock`: `at`.\n\nA source that cannot be read is never a quiet period. A mail store that is unavailable or whose listing does not reach back to `id`, a session absent from the inventory or with incomplete evidence, an unavailable or ambiguous herdr result, an environment without agent session state, and a detector state root that is absent or unreadable each appear in an `unreadable-source` line. Drop or repair the named source before arming again.\n\n\u003C\u002Fline_forms>\n\n\u003Cworkflow>\n\n1. Interpret `$ARGUMENTS` as a complete JSON request. When it is empty, run nothing and report that `timeoutSeconds` and at least one source are required.\n2. Build the request from the last event handled, naming `timeoutSeconds` and every source to read.\n3. Write the request with the file-write tool to a file in the scratch directory the harness names for this session, under a file name unique to the agent and the request, and submit it through the input redirect in `\u003Cinvocation_form>`. Where the harness names no scratch directory, use the one the environment designates, such as `$RUNNER_TEMP` on a hosted runner.\n4. Arm one run at a time, with its one explicit `timeoutSeconds`, as the owner that collects its line. {!% if target == 'claude' %!}Let the run go to the background: its exit re-invokes the session, and the owner collects the line on the completion notice.{!% else %!}Run it in the foreground and collect the line within the active turn, or move the wait to the next step boundary.{!% endif %!}\n5. Read the one line the run prints. Act on `event` by handling it, then arm the next run with the new `id`, `state`, or `after` instant. Treat `timeout` as no event. Stop on `unreadable-source` or `invalid-request` and report the line verbatim.\n\n\u003C\u002Fworkflow>\n\n\u003Cinvocation_form>\n\nWith `\u003Crequest-file>` the file written in step 3:\n\n```bash\npython3 \"${CLAUDE_SKILL_DIR}\u002Fscripts\u002Fwait_event.py\" \u003C \u003Crequest-file>\n```\n\n\u003C\u002Finvocation_form>\n\n\u003Cconstraints>\n\n- ALWAYS supply `timeoutSeconds`; the run has no default timeout and rejects a request without a positive one before reading any source.\n- ALWAYS hold a wait to one invocation and re-arm it from the event handled; the script loops only inside its timeout and prints one line.\n- NEVER pass a request through a heredoc, a pipe, or an inline argument, and NEVER remove the request file.\n- NEVER run `am`, `herdr`, or a consumption-control read to reproduce a wait; the script reads mail through `\u002Foperate-agent-mail`, session states through `\u002Foperate-herdr`, and alerts through `\u002Fcontrol-token-spend`, and builds no command of its own.\n- NEVER rely on the wait to read or acknowledge a record or to prompt a pane; it keeps no cursor, state file, or lock and changes nothing. Judge a record with the `read` or `acknowledge` operation of `\u002Foperate-agent-mail` and steer a pane with `\u002Foperate-herdr`.\n- ALWAYS follow the arming rule `bounded-background-wait`: a wait has one explicit deadline, one result, and one owner that collects its termination, and the owner arms the next wait only after handling the line.\n- NEVER {!% if target == 'claude' %!}keep the wait as a standing watcher or let a run re-arm itself.{!% else %!}start the wait in the background, keep it as a standing watcher, or let a run re-arm itself.{!% endif %!}\n\n\u003C\u002Fconstraints>\n\n\u003Ctesting>\n\nThe script is covered over generated requests and controlled command runners and clocks at the adapters' command boundaries: the four line forms and their exit codes, a request without a positive timeout rejected before any source is read, each source's mapping from the capability result to an event, an unreadable-source line, or no event, the first-event order across sources, and the absence of any state write, mail send, record read or acknowledgement, or pane write.\n\n\u003C\u002Ftesting>\n\n\u003Csuccess_criteria>\n\n- Every run with a valid request prints exactly one line of the four forms and exits within its timeout, leaving no process and no file behind.\n- A request without a positive `timeoutSeconds`, a non-object document, and an unknown source kind print `invalid-request` and read no source.\n- Every mail, session, alert, or clock event carries the fields `\u003Cline_forms>` lists for its source, with store ids and instants preserved verbatim.\n- Every source the run cannot read appears in an `unreadable-source` line rather than passing as a quiet period.\n\n\u003C\u002Fsuccess_criteria>\n",{"name":5,"description":7,"allowed-tools":49,"argument-hint":50},"Write, Bash(python3 \"${CLAUDE_SKILL_DIR}\u002Fscripts\u002Fwait_event.py\":*)","\u003CJSON request>","main","978d51c51d68c99cffb2ba48f7cad9d2f07e5738","src\u002Fplugins\u002Fcoding-agents\u002Fskills\u002Fwait-for-event","https:\u002F\u002Fgithub.com\u002Foutcomeeng\u002Fplugins","https:\u002F\u002Fgithub.com\u002Foutcomeeng","https:\u002F\u002Foutcome.engineering","Spec-driven development for AI-assisted engineering","2026-11-10 01:06:33",{"source":8,"skillName":5,"commands":60,"prompt":70,"zipAvailable":71},[61,64,67],{"tool":62,"command":63},"npx","npx skills add outcomeeng\u002Fplugins --skill wait-for-event",{"tool":65,"command":66},"bunx","bunx skills add outcomeeng\u002Fplugins --skill wait-for-event",{"tool":68,"command":69},"pnpm","pnpm dlx skills add outcomeeng\u002Fplugins --skill wait-for-event","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Foutcomeeng\u002Fplugins\u002Fblob\u002Fmain\u002Fsrc\u002Fplugins\u002Fcoding-agents\u002Fskills\u002Fwait-for-event\u002FSKILL.md",true,[73],{"path":74,"resourceType":75,"resourceTypeDesc":76,"sizeBytes":77,"sourceHtmlUrl":78},"scripts\u002Fwait_event.py","SCRIPT","脚本",21068,"https:\u002F\u002Fgithub.com\u002Foutcomeeng\u002Fplugins\u002Fblob\u002Fmain\u002Fsrc\u002Fplugins\u002Fcoding-agents\u002Fskills\u002Fwait-for-event\u002Fscripts\u002Fwait_event.py",[80,86,118,134,151,164],{"skillNo":81,"name":82,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":83,"categories":84,"keywords":85,"publishedAt":44},"01M71G25RZTPQG9KJ00JCHC1F7","plugin","https:\u002F\u002Fgithub.com\u002Foutcomeeng\u002Fplugins\u002Fblob\u002Fmain\u002Fsrc\u002Ftemplates\u002Fplugin\u002FSKILL.md",[],[82],{"skillNo":87,"name":88,"nameZh":6,"description":89,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":90,"categories":91,"keywords":100,"publishedAt":44},"01M71G23DCX3SV60H63HBBKQ6J","sanitize-powerpoint","ALWAYS invoke this skill when sanitizing, cleaning up, auditing, or aligning a PowerPoint (.pptx) deck — slide-master and layout structure, layout type attributes, stray fonts, non-theme colors, or layout naming. NEVER hand-edit pptx XML without this skill.","https:\u002F\u002Fgithub.com\u002Foutcomeeng\u002Fplugins\u002Fblob\u002Fmain\u002Fsrc\u002Fplugins\u002Fwork\u002Fskills\u002Fsanitize-powerpoint\u002FSKILL.md",[92,95],{"categoryNo":93,"categoryName":94,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000003","演示文稿",{"categoryNo":96,"categoryName":97,"taxonomyType":98,"taxonomyTypeDesc":99},"01JBSEEDCAT000000000000034","行政与办公人员","PROFESSION","适用职业",[101,102,103,104,105,106,107,38,108,109,110,111,112,113,114,115,116,117,33,32],"sanitize powerpoint","powerpoint","sanitize","fonts","type","cleaning","structure","attributes","theme","pptx","naming","layout","deck","up","edit","xml","master",{"skillNo":119,"name":120,"nameZh":6,"description":121,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":122,"categories":123,"keywords":124,"publishedAt":44},"01M71G21PQKBCDECHGVYSKPJW5","draw-excalidraw","ALWAYS invoke this skill when creating Excalidraw diagrams, visualizing workflows, architectures, or concepts. NEVER generate Excalidraw JSON without this skill.","https:\u002F\u002Fgithub.com\u002Foutcomeeng\u002Fplugins\u002Fblob\u002Fmain\u002Fsrc\u002Fplugins\u002Fwork\u002Fskills\u002Fdraw-excalidraw\u002FSKILL.md",[],[125,126,127,128,129,38,33,130,131,32,132,133],"draw excalidraw","excalidraw","draw","diagrams","architectures","generate","workflows","concepts","json",{"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":143,"publishedAt":44},"01M71G1ZMNGFD37RZYM620XM2C","typescript-test-standards","TypeScript test standards enforced across all skills. Loaded by other skills, not invoked directly.","https:\u002F\u002Fgithub.com\u002Foutcomeeng\u002Fplugins\u002Fblob\u002Fmain\u002Fsrc\u002Fplugins\u002Ftypescript\u002Fskills\u002Ftypescript-test-standards\u002FSKILL.md",[140],{"categoryNo":141,"categoryName":142,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000008","测试与质量",[144,145,146,147,148,149,150],"typescript","typescript test standards","test","standards","false","read","across",{"skillNo":152,"name":153,"nameZh":6,"description":154,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":155,"categories":156,"keywords":160,"publishedAt":44},"01M71G1XBH0X1VCTR7269MDGSY","typescript-code-standards","TypeScript code standards enforced across all skills. Loaded by other skills, not invoked directly.","https:\u002F\u002Fgithub.com\u002Foutcomeeng\u002Fplugins\u002Fblob\u002Fmain\u002Fsrc\u002Fplugins\u002Ftypescript\u002Fskills\u002Ftypescript-code-standards\u002FSKILL.md",[157],{"categoryNo":158,"categoryName":159,"taxonomyType":98,"taxonomyTypeDesc":99},"01JBSEEDCAT000000000000030","开发工程师",[144,161,162,163,147,148,149,150],"code","typescript code standards","code standards",{"skillNo":165,"name":166,"nameZh":6,"description":167,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":168,"categories":169,"keywords":170,"publishedAt":44},"01M71G1TQ3VN45SJ75DFMJDB9W","typescript-architecture-standards","TypeScript ADR conventions enforced across architect and auditor skills. Loaded by other skills, not invoked directly.","https:\u002F\u002Fgithub.com\u002Foutcomeeng\u002Fplugins\u002Fblob\u002Fmain\u002Fsrc\u002Fplugins\u002Ftypescript\u002Fskills\u002Ftypescript-architecture-standards\u002FSKILL.md",[],[171,147,172,173,144,174,175,150,149,176,148,177],"architecture standards","typescript architecture standards","architecture","adr","architect","auditor","conventions"]