[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M71NJX0FHTVX6MB0X3KW33Y8":3,"skill-same:01M71NJX0FHTVX6MB0X3KW33Y8":121},{"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":39,"linkOnly":40,"markdownContent":41,"markdownBody":42,"frontMatter":43,"refName":67,"commitSha":68,"skillDirectory":69,"forksCount":14,"repositoryHtmlUrl":70,"repositoryHomepageUrl":71,"ownerHtmlUrl":72,"ownerBlogUrl":6,"ownerDescription":6,"updatedAt":73,"install":74,"resources":87},"01M71NJX0FHTVX6MB0X3KW33Y8","jetson-customize-mgbe",null,"Enable Jetson Thor 25G\u002F10G\u002F1G MGBE QSFP via kernel-DT overlay. Do NOT use for UPHY lane allocation or ODMDATA edits.","pattanation\u002FNorvik","pattanation","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F235419268?v=4","01M71M5THHYYB15ME8R2E4FCZG","Patta","01M71M5TJM1NDM992M8PDKYR2K",0,"Apache-2.0","https:\u002F\u002Fgithub.com\u002Fpattanation\u002FNorvik\u002Fblob\u002Fclaude\u002Finstall-gsd-build-foQdV\u002F.agents\u002Fskills\u002Fjetson-customize-mgbe\u002FSKILL.md",[],[19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38],"customize","jetson customize mgbe","phase","team","image","documents","cpp","use","linux","Meta","thor","kernel","lane","for","overlay","platform","NVIDIA","target","do","sources","2026-11-10 10:56:23",false,"---\nname: jetson-customize-mgbe\ndescription: >-\n  Enable Jetson Thor 25G\u002F10G\u002F1G MGBE QSFP via kernel-DT overlay.\n  Do NOT use for UPHY lane allocation or ODMDATA edits.\nversion: 0.0.1\nlicense: \"Apache-2.0\"\nmetadata:\n  data-classification: public\n  author: \"Jetson Team\"\n  tags:\n    - bsp\n    - phase-2\n    - io\n    - mgbe\n    - ethernet\n  domain: meta\n  permissions:\n    file_read:\n      - \"{workspace}\u002Ftarget-platform\u002F\"\n      - \"{source.root_path}\u002F\"\n      - \"{bsp_image.root_path}\u002FLinux_for_Tegra\u002F\"\n      - \"{documents.root_path}\u002F\"\n    file_write:\n      - \"{workspace}\u002Ftarget-platform\u002F\"\n      - \"{source.root_path}\u002Fbsp_sources\u002Fhardware\u002Fnvidia\u002F\"\n    shell:\n      - \"dtc\"\n      - \"fdtoverlay\"\n      - \"cpp\"\n      - \"git\"\n---\n\n# Customize MGBE \u002F 25G QSFP\n\n## Overview\n\nThor T264 exposes mgbe0..mgbe3. On a custom carrier, the 25G QSFP cage\n(or 10G \u002F 1G fiber path) is wired to one of them through SerDes — with\nor without an external MDIO PHY in front of the cage. This skill\nrenders the kernel-DT overlay that pairs the BPMP allocation with\nkernel-side `status=\"okay\"` + PHY plumbing on `&mgbeN`.\n\n**Out of scope:**\n- UPHY lane allocation — owned by `\u002Fjetson-customize-uphy`. Refuse if\n  the chosen `uphy1-config-N` doesn't allocate the target MGBE.\n- All ODMDATA tokens (`mgbeN-speed-*`, sub-node `mgbeN_status=*`) —\n  owned by `\u002Fjetson-customize-uphy` in its single atomic ODMDATA\n  commit. This skill MUST NOT touch `ODMDATA=`.\n\nOutput is **one commit** to the composite custom overlay `.dts` in the\n`bsp_sources\u002F` hardware repo. `\u002Fjetson-build-source` compiles the\ncomposite to `.dtbo` and owns its Makefile + flash-conf registration.\n\n## When to invoke\n\n- The user says \"enable 25G\", \"configure QSFP\", \"set MGBE PHY mode\",\n  \"wire MGBE to QSFP\", or asks to bring up a 10G \u002F 1G fiber path.\n- Cold boot succeeds but `ip link show mgbe\u003CN>` reports `state DOWN`\n  or `NO-CARRIER` on the configured controller, OR the controller\n  never appears at all.\n- `jetson-customize-uphy` ran with `uphy1-config-8` (or another config\n  allocating MGBE) and you now need to bring up the per-controller\n  side.\n\n**Prerequisites:**\n\n- Active profile selected with `reference_devkit:` (Thor) +\n  `custom_carrier:` blocks.\n- `\u003Csource.root_path>\u002FLinux_for_Tegra\u002F.git` exists\n  (`\u002Fjetson-init-source`).\n- `\u002Fjetson-derive-carrier` has run — carrier flash-conf fork is in\n  the overlay tracker.\n- `\u002Fjetson-customize-uphy` chose a UPHY config that allocates the target\n  MGBE controller's lanes (`uphy1-config-8` on Thor for MGBE0..3 25G).\n- Source-of-truth docs registered or supplied at prompt:\n  Adaptation Guide, Module Design Guide, SoC TRM.\n- **When `custom_carrier:` is present, both\n  `documents.custom_carrier_schematic` AND\n  `documents.custom_carrier_pinmux_xls` are REQUIRED.** Refuse the run\n  if either is missing — MGBE routing on a custom carrier cannot be\n  guessed. Reference-devkit-only profiles skip this check.\n- `dtc` on PATH.\n\n## Procedure\n\nSee `references\u002Fprocedure.md` for the full step-by-step procedure (Steps 1–8). Summary:\n\n1. **Resolve active target + documents.** Validate active profile, custom_carrier, overlay tracker; locate the relevant Adaptation Guide chapter and pinmap.\n2. **Per-controller question loop.** AskUserQuestion driven by `questions.json` (controller, phy_mode, attach kind, I²C bus\u002Faddr, reset GPIO, compatible_list).\n3. **Derive max-speed from phy_mode.** Decompile the BPMP DTB to pick sub-node vs top-level token grammar; cite the inspection in notes.\n4. **Verify HSIO pins + auto-fix.** Run `pin_verifier.py` for MDC\u002FMDIO\u002FRESET\u002FINT; surface mismatches and route to `\u002Fjetson-customize-pinmux`.\n5. **(no ODMDATA edits.)** MGBE ODMDATA tokens are emitted by `\u002Fjetson-customize-uphy`. Step 5 only records the BPMP DTB token-form inspection (sub-node vs top-level) in `notes[]` for audit.\n6. **Append composite-overlay fragments.** Write one fragment per controller into the composite custom overlay `.dts`; obey the `\u002F* custom-bsp: mgbe:mgbe... *\u002F` marker contract; run the cpp\u002Fdtc\u002Ffdtoverlay pre-flight.\n7. **(Reserved.)** Sibling-skill ordering \u002F cross-cutting validation.\n8. **Run-state sidecar + summary + next-step chain.** Write `\u003Cprofile-stem>.jetson-customize-mgbe.json` and emit the one-line + table summary, then drive the downstream chain via sequential `AskUserQuestion` prompts per `references\u002Fprocedure.md` Step 8. Never substitute a printed \"Next step: …\" line for the prompts.\n\n## Gotchas\n\n- **Stock Thor BPMP DTB has no `\u002Fmgbe\u002Fmgbe@N` subtree** — only\n  `mgbe\u003CN>-speed` under `\u002Fuphy`. The `mgbe\u003CN>_status=disabled`\n  sub-node token is silently rejected on these releases; the whole\n  ODMDATA line is then dropped at flash time. Always decompile BPMP\n  DTB (Step 3) before emitting; use the top-level dashed form\n  (`mgbe\u003CN>-speed-del` to remove, `mgbe\u003CN>-speed-25G` to set) when\n  the sub-node isn't there. Same wrong-form failure surface as\n  `jetson-customize-uphy`.\n- **`mdio` child needs both `#address-cells = \u003C1>` AND\n  `#size-cells = \u003C0>`** when `phy_attach_kind==\"phy\"`. Missing either\n  → kernel rejects `phy@\u003Caddr>` reg property at probe; MGBE never\n  comes up.\n- **Overlay root `compatible` must intersect live DT compatible.**\n  UEFI plugin-manager filters by compatible match. A mismatched\n  overlay is silently skipped — flash succeeds, MGBE stays disabled,\n  no error in dmesg. Always sanity-check against\n  `\u002Fproc\u002Fdevice-tree\u002Fcompatible` on a booted reference DUT.\n- **`OVERLAY_DTB_FILE` ordering is `jetson-build-source`'s problem,\n  not this skill's.** This skill never touches the carrier flash\n  conf. The composite custom overlay is registered (by\n  `\u002Fjetson-build-source` Step 5.0a) AFTER the platform\n  `*-dynamic.dtbo`, which is the correct ordering. If you find\n  yourself appending `OVERLAY_DTB_FILE+=` in this skill, you're\n  duplicating ownership — stop, and let the build skill do it.\n- **UPHY lane allocation is `jetson-customize-uphy`'s job.** If the chosen\n  `uphy1-config-N` doesn't allocate lanes for the target MGBE\n  controller, BL31 SError (`fmon_update_config: detected fault\n  0x80`) on cold boot. Always run `\u002Fjetson-customize-uphy` first; cite the\n  chosen `uphy1-config-N` in this skill's run-summary `notes[]`.\n- **Don't disable a stock-okay controller via ODMDATA alone.** Same\n  rule as `jetson-customize-uphy`: `mgbe\u003CN>_status=disabled` for a\n  controller that's already disabled in BPMP DTB is a no-op the\n  parser may treat as ambiguous → drops the rest of the ODMDATA\n  line. Disable via the kernel-DT overlay (`status=\"disabled\"`) only.\n- **Don't touch the upstream BSP at `\u003Cbsp_image.root_path>`.** All\n  edits land in the overlay tracker \u002F `bsp_sources` mono-repo under\n  the pristine + customization commit pattern.\n- **JSON sidecar is structured state, not authoritative.** Same\n  caveat as `jetson-customize-uphy`: ODMDATA + overlay `.dts` + two git\n  commits are the device-facing outputs; the sidecar is for tooling\n  and idempotency only.\n\n## References\n\n- [`questions.json`](references\u002Fquestions.json) — Q-1..Q-8 prompt schema\n  consumed by Step 2.\n- [`..\u002F..\u002Fscripts\u002Fpin_verifier.py`](..\u002F..\u002Fscripts\u002Fpin_verifier.py)\n  — shared HSIO pin verifier (Step 4).\n- [`..\u002F..\u002Freferences\u002Fplatform_template.yaml`](..\u002F..\u002Freferences\u002Fplatform_template.yaml)\n  — `documents:` block consumed by Step 1.\n- [`..\u002F..\u002Fcontext\u002Fbsp-customization-workflow.md`](..\u002F..\u002Fcontext\u002Fbsp-customization-workflow.md#commit-batching-in-the-overlay-tracker)\n  — overlay edit protocol (batched pristine + customization commit).\n- [`..\u002Fjetson-customize-uphy\u002FSKILL.md`](..\u002Fjetson-customize-uphy\u002FSKILL.md) — sibling\n  skill that owns UPHY lane allocation. Must run before this skill to\n  set `uphy1-config-N` for MGBE-allocated configurations.\n- [`..\u002Fjetson-customize-pinmux\u002FSKILL.md`](..\u002Fjetson-customize-pinmux\u002FSKILL.md) —\n  sibling skill invoked by Step 4 (with operator confirmation) to\n  fix pin SFIO mismatches.\n- [`..\u002Fjetson-derive-carrier\u002FSKILL.md`](..\u002Fjetson-derive-carrier\u002FSKILL.md)\n  — must run first; produces the carrier flash-conf fork edited in\n  Step 5 and the carrier base overlay this skill orders after.\n- [`..\u002Fjetson-init-source\u002FSKILL.md`](..\u002Fjetson-init-source\u002FSKILL.md) —\n  produces the overlay tracker + bsp_sources repo this skill commits\n  into.\n","# Customize MGBE \u002F 25G QSFP\n\n## Overview\n\nThor T264 exposes mgbe0..mgbe3. On a custom carrier, the 25G QSFP cage\n(or 10G \u002F 1G fiber path) is wired to one of them through SerDes — with\nor without an external MDIO PHY in front of the cage. This skill\nrenders the kernel-DT overlay that pairs the BPMP allocation with\nkernel-side `status=\"okay\"` + PHY plumbing on `&mgbeN`.\n\n**Out of scope:**\n- UPHY lane allocation — owned by `\u002Fjetson-customize-uphy`. Refuse if\n  the chosen `uphy1-config-N` doesn't allocate the target MGBE.\n- All ODMDATA tokens (`mgbeN-speed-*`, sub-node `mgbeN_status=*`) —\n  owned by `\u002Fjetson-customize-uphy` in its single atomic ODMDATA\n  commit. This skill MUST NOT touch `ODMDATA=`.\n\nOutput is **one commit** to the composite custom overlay `.dts` in the\n`bsp_sources\u002F` hardware repo. `\u002Fjetson-build-source` compiles the\ncomposite to `.dtbo` and owns its Makefile + flash-conf registration.\n\n## When to invoke\n\n- The user says \"enable 25G\", \"configure QSFP\", \"set MGBE PHY mode\",\n  \"wire MGBE to QSFP\", or asks to bring up a 10G \u002F 1G fiber path.\n- Cold boot succeeds but `ip link show mgbe\u003CN>` reports `state DOWN`\n  or `NO-CARRIER` on the configured controller, OR the controller\n  never appears at all.\n- `jetson-customize-uphy` ran with `uphy1-config-8` (or another config\n  allocating MGBE) and you now need to bring up the per-controller\n  side.\n\n**Prerequisites:**\n\n- Active profile selected with `reference_devkit:` (Thor) +\n  `custom_carrier:` blocks.\n- `\u003Csource.root_path>\u002FLinux_for_Tegra\u002F.git` exists\n  (`\u002Fjetson-init-source`).\n- `\u002Fjetson-derive-carrier` has run — carrier flash-conf fork is in\n  the overlay tracker.\n- `\u002Fjetson-customize-uphy` chose a UPHY config that allocates the target\n  MGBE controller's lanes (`uphy1-config-8` on Thor for MGBE0..3 25G).\n- Source-of-truth docs registered or supplied at prompt:\n  Adaptation Guide, Module Design Guide, SoC TRM.\n- **When `custom_carrier:` is present, both\n  `documents.custom_carrier_schematic` AND\n  `documents.custom_carrier_pinmux_xls` are REQUIRED.** Refuse the run\n  if either is missing — MGBE routing on a custom carrier cannot be\n  guessed. Reference-devkit-only profiles skip this check.\n- `dtc` on PATH.\n\n## Procedure\n\nSee `references\u002Fprocedure.md` for the full step-by-step procedure (Steps 1–8). Summary:\n\n1. **Resolve active target + documents.** Validate active profile, custom_carrier, overlay tracker; locate the relevant Adaptation Guide chapter and pinmap.\n2. **Per-controller question loop.** AskUserQuestion driven by `questions.json` (controller, phy_mode, attach kind, I²C bus\u002Faddr, reset GPIO, compatible_list).\n3. **Derive max-speed from phy_mode.** Decompile the BPMP DTB to pick sub-node vs top-level token grammar; cite the inspection in notes.\n4. **Verify HSIO pins + auto-fix.** Run `pin_verifier.py` for MDC\u002FMDIO\u002FRESET\u002FINT; surface mismatches and route to `\u002Fjetson-customize-pinmux`.\n5. **(no ODMDATA edits.)** MGBE ODMDATA tokens are emitted by `\u002Fjetson-customize-uphy`. Step 5 only records the BPMP DTB token-form inspection (sub-node vs top-level) in `notes[]` for audit.\n6. **Append composite-overlay fragments.** Write one fragment per controller into the composite custom overlay `.dts`; obey the `\u002F* custom-bsp: mgbe:mgbe... *\u002F` marker contract; run the cpp\u002Fdtc\u002Ffdtoverlay pre-flight.\n7. **(Reserved.)** Sibling-skill ordering \u002F cross-cutting validation.\n8. **Run-state sidecar + summary + next-step chain.** Write `\u003Cprofile-stem>.jetson-customize-mgbe.json` and emit the one-line + table summary, then drive the downstream chain via sequential `AskUserQuestion` prompts per `references\u002Fprocedure.md` Step 8. Never substitute a printed \"Next step: …\" line for the prompts.\n\n## Gotchas\n\n- **Stock Thor BPMP DTB has no `\u002Fmgbe\u002Fmgbe@N` subtree** — only\n  `mgbe\u003CN>-speed` under `\u002Fuphy`. The `mgbe\u003CN>_status=disabled`\n  sub-node token is silently rejected on these releases; the whole\n  ODMDATA line is then dropped at flash time. Always decompile BPMP\n  DTB (Step 3) before emitting; use the top-level dashed form\n  (`mgbe\u003CN>-speed-del` to remove, `mgbe\u003CN>-speed-25G` to set) when\n  the sub-node isn't there. Same wrong-form failure surface as\n  `jetson-customize-uphy`.\n- **`mdio` child needs both `#address-cells = \u003C1>` AND\n  `#size-cells = \u003C0>`** when `phy_attach_kind==\"phy\"`. Missing either\n  → kernel rejects `phy@\u003Caddr>` reg property at probe; MGBE never\n  comes up.\n- **Overlay root `compatible` must intersect live DT compatible.**\n  UEFI plugin-manager filters by compatible match. A mismatched\n  overlay is silently skipped — flash succeeds, MGBE stays disabled,\n  no error in dmesg. Always sanity-check against\n  `\u002Fproc\u002Fdevice-tree\u002Fcompatible` on a booted reference DUT.\n- **`OVERLAY_DTB_FILE` ordering is `jetson-build-source`'s problem,\n  not this skill's.** This skill never touches the carrier flash\n  conf. The composite custom overlay is registered (by\n  `\u002Fjetson-build-source` Step 5.0a) AFTER the platform\n  `*-dynamic.dtbo`, which is the correct ordering. If you find\n  yourself appending `OVERLAY_DTB_FILE+=` in this skill, you're\n  duplicating ownership — stop, and let the build skill do it.\n- **UPHY lane allocation is `jetson-customize-uphy`'s job.** If the chosen\n  `uphy1-config-N` doesn't allocate lanes for the target MGBE\n  controller, BL31 SError (`fmon_update_config: detected fault\n  0x80`) on cold boot. Always run `\u002Fjetson-customize-uphy` first; cite the\n  chosen `uphy1-config-N` in this skill's run-summary `notes[]`.\n- **Don't disable a stock-okay controller via ODMDATA alone.** Same\n  rule as `jetson-customize-uphy`: `mgbe\u003CN>_status=disabled` for a\n  controller that's already disabled in BPMP DTB is a no-op the\n  parser may treat as ambiguous → drops the rest of the ODMDATA\n  line. Disable via the kernel-DT overlay (`status=\"disabled\"`) only.\n- **Don't touch the upstream BSP at `\u003Cbsp_image.root_path>`.** All\n  edits land in the overlay tracker \u002F `bsp_sources` mono-repo under\n  the pristine + customization commit pattern.\n- **JSON sidecar is structured state, not authoritative.** Same\n  caveat as `jetson-customize-uphy`: ODMDATA + overlay `.dts` + two git\n  commits are the device-facing outputs; the sidecar is for tooling\n  and idempotency only.\n\n## References\n\n- [`questions.json`](references\u002Fquestions.json) — Q-1..Q-8 prompt schema\n  consumed by Step 2.\n- [`..\u002F..\u002Fscripts\u002Fpin_verifier.py`](..\u002F..\u002Fscripts\u002Fpin_verifier.py)\n  — shared HSIO pin verifier (Step 4).\n- [`..\u002F..\u002Freferences\u002Fplatform_template.yaml`](..\u002F..\u002Freferences\u002Fplatform_template.yaml)\n  — `documents:` block consumed by Step 1.\n- [`..\u002F..\u002Fcontext\u002Fbsp-customization-workflow.md`](..\u002F..\u002Fcontext\u002Fbsp-customization-workflow.md#commit-batching-in-the-overlay-tracker)\n  — overlay edit protocol (batched pristine + customization commit).\n- [`..\u002Fjetson-customize-uphy\u002FSKILL.md`](..\u002Fjetson-customize-uphy\u002FSKILL.md) — sibling\n  skill that owns UPHY lane allocation. Must run before this skill to\n  set `uphy1-config-N` for MGBE-allocated configurations.\n- [`..\u002Fjetson-customize-pinmux\u002FSKILL.md`](..\u002Fjetson-customize-pinmux\u002FSKILL.md) —\n  sibling skill invoked by Step 4 (with operator confirmation) to\n  fix pin SFIO mismatches.\n- [`..\u002Fjetson-derive-carrier\u002FSKILL.md`](..\u002Fjetson-derive-carrier\u002FSKILL.md)\n  — must run first; produces the carrier flash-conf fork edited in\n  Step 5 and the carrier base overlay this skill orders after.\n- [`..\u002Fjetson-init-source\u002FSKILL.md`](..\u002Fjetson-init-source\u002FSKILL.md) —\n  produces the overlay tracker + bsp_sources repo this skill commits\n  into.\n",{"name":5,"license":15,"version":44,"metadata":45,"description":7},"0.0.1",{"tags":46,"author":52,"domain":53,"permissions":54,"data-classification":66},[47,48,49,50,51],"bsp","phase-2","io","mgbe","ethernet","Jetson Team","meta",{"shell":55,"file_read":59,"file_write":64},[56,57,25,58],"dtc","fdtoverlay","git",[60,61,62,63],"{workspace}\u002Ftarget-platform\u002F","{source.root_path}\u002F","{bsp_image.root_path}\u002FLinux_for_Tegra\u002F","{documents.root_path}\u002F",[60,65],"{source.root_path}\u002Fbsp_sources\u002Fhardware\u002Fnvidia\u002F","public","claude\u002Finstall-gsd-build-foQdV","d86cd127f527124b5fd0fd0bc679a4d79b7d01d7",".agents\u002Fskills\u002Fjetson-customize-mgbe","https:\u002F\u002Fgithub.com\u002Fpattanation\u002FNorvik","https:\u002F\u002Fnorvik-orpin.vercel.app","https:\u002F\u002Fgithub.com\u002Fpattanation","2026-07-17 11:17:04",{"source":8,"skillName":5,"commands":75,"prompt":85,"zipAvailable":86},[76,79,82],{"tool":77,"command":78},"npx","npx skills add pattanation\u002FNorvik --skill jetson-customize-mgbe",{"tool":80,"command":81},"bunx","bunx skills add pattanation\u002FNorvik --skill jetson-customize-mgbe",{"tool":83,"command":84},"pnpm","pnpm dlx skills add pattanation\u002FNorvik --skill jetson-customize-mgbe","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fpattanation\u002FNorvik\u002Fblob\u002Fclaude\u002Finstall-gsd-build-foQdV\u002F.agents\u002Fskills\u002Fjetson-customize-mgbe\u002FSKILL.md",true,[88,94,100,104,108,111,115],{"path":89,"resourceType":90,"resourceTypeDesc":91,"sizeBytes":92,"sourceHtmlUrl":93},"assets\u002Fquestions.json","ASSET","资产文件",5813,"https:\u002F\u002Fgithub.com\u002Fpattanation\u002FNorvik\u002Fblob\u002Fclaude\u002Finstall-gsd-build-foQdV\u002F.agents\u002Fskills\u002Fjetson-customize-mgbe\u002Fassets\u002Fquestions.json",{"path":95,"resourceType":96,"resourceTypeDesc":97,"sizeBytes":98,"sourceHtmlUrl":99},"BENCHMARK.md","REFERENCE","参考文档",3832,"https:\u002F\u002Fgithub.com\u002Fpattanation\u002FNorvik\u002Fblob\u002Fclaude\u002Finstall-gsd-build-foQdV\u002F.agents\u002Fskills\u002Fjetson-customize-mgbe\u002FBENCHMARK.md",{"path":101,"resourceType":96,"resourceTypeDesc":97,"sizeBytes":102,"sourceHtmlUrl":103},"evals\u002Fevals.json",6300,"https:\u002F\u002Fgithub.com\u002Fpattanation\u002FNorvik\u002Fblob\u002Fclaude\u002Finstall-gsd-build-foQdV\u002F.agents\u002Fskills\u002Fjetson-customize-mgbe\u002Fevals\u002Fevals.json",{"path":105,"resourceType":96,"resourceTypeDesc":97,"sizeBytes":106,"sourceHtmlUrl":107},"references\u002Fprocedure.md",13928,"https:\u002F\u002Fgithub.com\u002Fpattanation\u002FNorvik\u002Fblob\u002Fclaude\u002Finstall-gsd-build-foQdV\u002F.agents\u002Fskills\u002Fjetson-customize-mgbe\u002Freferences\u002Fprocedure.md",{"path":109,"resourceType":96,"resourceTypeDesc":97,"sizeBytes":92,"sourceHtmlUrl":110},"references\u002Fquestions.json","https:\u002F\u002Fgithub.com\u002Fpattanation\u002FNorvik\u002Fblob\u002Fclaude\u002Finstall-gsd-build-foQdV\u002F.agents\u002Fskills\u002Fjetson-customize-mgbe\u002Freferences\u002Fquestions.json",{"path":112,"resourceType":96,"resourceTypeDesc":97,"sizeBytes":113,"sourceHtmlUrl":114},"skill-card.md",3673,"https:\u002F\u002Fgithub.com\u002Fpattanation\u002FNorvik\u002Fblob\u002Fclaude\u002Finstall-gsd-build-foQdV\u002F.agents\u002Fskills\u002Fjetson-customize-mgbe\u002Fskill-card.md",{"path":116,"resourceType":117,"resourceTypeDesc":118,"sizeBytes":119,"sourceHtmlUrl":120},"skill.oms.sig","OTHER","其他",5301,"https:\u002F\u002Fgithub.com\u002Fpattanation\u002FNorvik\u002Fblob\u002Fclaude\u002Finstall-gsd-build-foQdV\u002F.agents\u002Fskills\u002Fjetson-customize-mgbe\u002Fskill.oms.sig",[122,155,180,204,226,241],{"skillNo":123,"name":124,"nameZh":6,"description":125,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":126,"sourceHtmlUrl":127,"categories":128,"keywords":137,"publishedAt":154},"01M71QDV4DM8T19HEHWATEF1K4","webapp-testing","Toolkit for interacting with and testing local web applications using Playwright. Supports verifying frontend functionality, debugging UI behavior, capturing browser screenshots, and viewing browser logs.","https:\u002F\u002Fgithub.com\u002Fpattanation\u002FNorvik\u002Fblob\u002Fclaude\u002Finstall-gsd-build-foQdV\u002F.agents\u002Fskills\u002Fwebapp-testing\u002FLICENSE.txt","https:\u002F\u002Fgithub.com\u002Fpattanation\u002FNorvik\u002Fblob\u002Fclaude\u002Finstall-gsd-build-foQdV\u002F.agents\u002Fskills\u002Fwebapp-testing\u002FSKILL.md",[129,134],{"categoryNo":130,"categoryName":131,"taxonomyType":132,"taxonomyTypeDesc":133},"01JBSEEDCAT000000000000008","测试与质量","SCENARIO","使用场景",{"categoryNo":135,"categoryName":136,"taxonomyType":132,"taxonomyTypeDesc":133},"01JBSEEDCAT000000000000009","前端开发",[138,139,140,32,141,142,143,144,145,146,147,148,149,150,151,152,153],"webapp","testing","webapp testing","applications","local","frontend","debugging","toolkit","logs","browser","with","playwright","web","behavior","ui","screenshots","2026-11-10 13:02:02",{"skillNo":156,"name":157,"nameZh":6,"description":158,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":159,"sourceHtmlUrl":160,"categories":161,"keywords":163,"publishedAt":154},"01M71QDH2GGMXGA9105C9W1N7B","web-artifacts-builder","Suite of tools for creating elaborate, multi-component claude.ai HTML artifacts using modern frontend web technologies (React, Tailwind CSS, shadcn\u002Fui). Use for complex artifacts requiring state management, routing, or shadcn\u002Fui components - not for simple single-file HTML\u002FJSX artifacts.","https:\u002F\u002Fgithub.com\u002Fpattanation\u002FNorvik\u002Fblob\u002Fclaude\u002Finstall-gsd-build-foQdV\u002F.agents\u002Fskills\u002Fweb-artifacts-builder\u002FLICENSE.txt","https:\u002F\u002Fgithub.com\u002Fpattanation\u002FNorvik\u002Fblob\u002Fclaude\u002Finstall-gsd-build-foQdV\u002F.agents\u002Fskills\u002Fweb-artifacts-builder\u002FSKILL.md",[162],{"categoryNo":135,"categoryName":136,"taxonomyType":132,"taxonomyTypeDesc":133},[164,165,166,150,167,168,169,32,170,171,143,172,26,173,174,175,176,177,178,179],"builder","artifacts builder","artifacts","web artifacts builder","single-file","css","Tailwind","ui components","single","file","components","react","multi","state","routing","state management",{"skillNo":181,"name":182,"nameZh":6,"description":183,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":184,"licenseFileUrl":185,"sourceHtmlUrl":186,"categories":187,"keywords":189,"publishedAt":154},"01M71QD9T2XC3EWMQNN9ACNWQ1","vueuse-functions","Apply VueUse composables where appropriate to build concise, maintainable Vue.js \u002F Nuxt features.","MIT","https:\u002F\u002Fgithub.com\u002Fpattanation\u002FNorvik\u002Fblob\u002Fclaude\u002Finstall-gsd-build-foQdV\u002F.agents\u002Fskills\u002Fvueuse-functions\u002FLICENSE.md","https:\u002F\u002Fgithub.com\u002Fpattanation\u002FNorvik\u002Fblob\u002Fclaude\u002Finstall-gsd-build-foQdV\u002F.agents\u002Fskills\u002Fvueuse-functions\u002FSKILL.md",[188],{"categoryNo":135,"categoryName":136,"taxonomyType":132,"taxonomyTypeDesc":133},[190,191,192,193,194,195,196,197,198,199,200,201,202,203],"functions","vueuse","vueuse functions","project","nuxt","apply","github","concise","build","https","features","vue","js","composables",{"skillNo":205,"name":206,"nameZh":6,"description":207,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":184,"licenseFileUrl":208,"sourceHtmlUrl":209,"categories":210,"keywords":213,"publishedAt":154},"01M71QD51HWSGYMCMB7RW7PGK8","vue-testing-best-practices","Use for Vue.js testing. Covers Vitest, Vue Test Utils, component testing, mocking, testing patterns, and Playwright for E2E testing.","https:\u002F\u002Fgithub.com\u002Fpattanation\u002FNorvik\u002Fblob\u002Fclaude\u002Finstall-gsd-build-foQdV\u002F.agents\u002Fskills\u002Fvue-testing-best-practices\u002FLICENSE.md","https:\u002F\u002Fgithub.com\u002Fpattanation\u002FNorvik\u002Fblob\u002Fclaude\u002Finstall-gsd-build-foQdV\u002F.agents\u002Fskills\u002Fvue-testing-best-practices\u002FSKILL.md",[211,212],{"categoryNo":130,"categoryName":131,"taxonomyType":132,"taxonomyTypeDesc":133},{"categoryNo":135,"categoryName":136,"taxonomyType":132,"taxonomyTypeDesc":133},[214,139,215,201,216,149,217,218,219,196,220,32,221,222,223,26,224,202,225],"vue testing best practices","testing best practices","best practices","test","testing patterns","component","vitest","mocking","e2e","utils","patterns","e2e testing",{"skillNo":227,"name":228,"nameZh":6,"description":229,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":184,"licenseFileUrl":230,"sourceHtmlUrl":231,"categories":232,"keywords":234,"publishedAt":154},"01M71QD358H2DJ9THJRBP77T3T","vue-router-best-practices","Vue Router 4 patterns, navigation guards, route params, and route-component lifecycle interactions.","https:\u002F\u002Fgithub.com\u002Fpattanation\u002FNorvik\u002Fblob\u002Fclaude\u002Finstall-gsd-build-foQdV\u002F.agents\u002Fskills\u002Fvue-router-best-practices\u002FLICENSE.md","https:\u002F\u002Fgithub.com\u002Fpattanation\u002FNorvik\u002Fblob\u002Fclaude\u002Finstall-gsd-build-foQdV\u002F.agents\u002Fskills\u002Fvue-router-best-practices\u002FSKILL.md",[233],{"categoryNo":135,"categoryName":136,"taxonomyType":132,"taxonomyTypeDesc":133},[235,201,236,216,237,219,238,196,224,239,240],"router","vue router best practices","route","guards","navigation","lifecycle",{"skillNo":242,"name":243,"nameZh":6,"description":244,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":184,"licenseFileUrl":245,"sourceHtmlUrl":246,"categories":247,"keywords":249,"publishedAt":154},"01M71QCYPNWDE2MQZ1TF3ED5S4","vue-best-practices","MUST be used for Vue.js tasks. Strongly recommends Composition API with `\u003Cscript setup>` and TypeScript as the standard approach. Covers Vue 3, SSR, Volar, vue-tsc. Load for any Vue, .vue files, Vue Router, Pinia, or Vite with Vue work. ALWAYS use Composition API unless the project explicitly requires Options API.","https:\u002F\u002Fgithub.com\u002Fpattanation\u002FNorvik\u002Fblob\u002Fclaude\u002Finstall-gsd-build-foQdV\u002F.agents\u002Fskills\u002Fvue-best-practices\u002FLICENSE.md","https:\u002F\u002Fgithub.com\u002Fpattanation\u002FNorvik\u002Fblob\u002Fclaude\u002Finstall-gsd-build-foQdV\u002F.agents\u002Fskills\u002Fvue-best-practices\u002FSKILL.md",[248],{"categoryNo":135,"categoryName":136,"taxonomyType":132,"taxonomyTypeDesc":133},[250,201,216,251,193,252,253,254,235,255,256,257,258,259,260,32,261,26,262,263],"vue best practices","Composition","files","tasks","api","pinia","work","options","ssr","typescript","as","vite","load","standard"]