[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill-nvidia-simready-foundation-conform-fet-005-simulate-grasp-physics":3,"mdc--bigmo-key":34,"related-repo-nvidia-simready-foundation-conform-fet-005-simulate-grasp-physics":2603,"related-org-nvidia-simready-foundation-conform-fet-005-simulate-grasp-physics":2689},{"slug":4,"name":4,"fn":5,"description":6,"org":7,"tags":11,"stars":23,"repoUrl":24,"updatedAt":25,"license":26,"forks":27,"topics":28,"repo":29,"sourceUrl":32,"mdContent":33},"simready-foundation-conform-fet-005-simulate-grasp-physics","repair SimReady grasp physics","Use for vision-guided SimReady grasp repair, grasp_identifier curves, and physics-material triage.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},"nvidia","NVIDIA","https:\u002F\u002Fpexgzepcugksgbtrxkhf.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Forg-logos\u002Fnvidia.png",[12,14,17,20],{"name":9,"slug":8,"type":13},"tag",{"name":15,"slug":16,"type":13},"Simulation","simulation",{"name":18,"slug":19,"type":13},"Physics","physics",{"name":21,"slug":22,"type":13},"Debugging","debugging",52,"https:\u002F\u002Fgithub.com\u002FNVIDIA\u002Fsimready-foundation","2026-07-14T05:34:04.275576","Apache-2.0",8,[],{"repoUrl":24,"stars":23,"forks":27,"topics":30,"description":31},[],"SimReady Foundation is a central repository for defining simulation content specifications based on various runtime use cases. ","https:\u002F\u002Fgithub.com\u002FNVIDIA\u002Fsimready-foundation\u002Ftree\u002FHEAD\u002Fskills\u002Fsimready-foundation-conform-fet-005-simulate-grasp-physics","---\nname: simready-foundation-conform-fet-005-simulate-grasp-physics\ndescription: \"Use for vision-guided SimReady grasp repair, grasp_identifier curves, and physics-material triage.\"\nlicense: Apache-2.0\nmetadata:\n  author: \"Shaad Boochoon \u003Csboochoon@nvidia.com>\"\n  tags:\n    - simready\n    - conformance\n    - grasp\n---\n\n\n# SimReady Conform FET-005 Simulate Grasp Physics\n\n## Purpose\nUse this workflow skill after Core, Minimal, and rigid-body requirements are already in a reasonable state and the next profile validation gate is `FET005_BASE_NEUTRAL`. It adds or repairs a USD grasp vector line that tells a robotic gripper where to grasp the asset.\n\nThis is a visual-semantic authoring skill, not a bounding-box shortcut. The grasp line must be chosen from visual evidence of the asset shape and intended grasp behavior, then authored deterministically as a `UsdGeom.BasisCurves` prim.\n\n## Capability Gate\n\nThis skill requires a vision-capable agent or model. Before authoring, replacing,\nor invoking any script that creates a grasp line, confirm that the current agent\ncan inspect visual evidence directly, such as renders, screenshots, viewport\ncaptures, or generated mesh previews.\n\nIf the current agent cannot use vision, stop immediately. Do not add or repair a\ngrasp line from bounds, text metadata, file names, validator failures, or user\ndescriptions alone. Tell the user that FET005 grasp-line repair requires a\nvision-capable model\u002Fagent and ask them to rerun this skill with vision enabled.\n\nIf the current agent can use vision and visual evidence is available, the agent\nis expected to choose explicit local-space grasp points from that evidence. Do\nnot skip authoring merely because the user did not pre-supply points. User\napproval is only required when the visual evidence, coordinate mapping, gripper\nconstraints, or grasp intent remain genuinely ambiguous after inspection.\n\n## Prerequisites\n\nRead the source-of-truth files named below before editing. Work on staged outputs where the skill requires them, and keep validation evidence with the result. This grasp workflow also requires a vision-capable agent or rendered visual evidence.\n\n## Source of Truth\n\nBefore changing an asset, load the selected FET005 manifest and requirement docs:\n\n- `nv_core\u002Fsr_specs\u002Fdocs\u002Ffeatures\u002FFET_005_base_neutral-0.1.0-simulate_grasp_physics.json`\n- `nv_core\u002Fsr_specs\u002Fdocs\u002Ffeatures\u002FFET_005-simulate_grasp_physics.md`\n- `nv_core\u002Fsr_specs\u002Fdocs\u002Fcapabilities\u002Fphysics_bodies\u002Fphysics_graspable\u002Frequirements\u002Fgraspable-vector-line.md`\n- `nv_core\u002Fsr_specs\u002Fdocs\u002Fcapabilities\u002Fphysics_bodies\u002Fphysics_graspable\u002Fvalidation.py`\n\nThe current manifest lists `PMT.001` and `GSP.001`. The current FET005 prose and graspable validator focus on `GSP.001`: at least one `BasisCurves` prim under the default prim, named with the `grasp_identifier` prefix, with at least two points. If validation reports `PMT.001`, read `references\u002Ffet005-requirements.md` and handle physics-material binding separately from grasp-line placement.\n\n## Inputs\n\nCollect these before editing:\n\n| Input | Requirement |\n|---|---|\n| `usd_asset` | Required `.usd`, `.usda`, or `.usdc` asset to repair. |\n| `output_root` | Required or inferred folder for staged assets and reports. |\n| `simready_profile` | Profile being validated, such as `prop-robotics-neutral`. |\n| `profile_version` | Profile version, if supplied by the user or validation command. |\n| `validation_report` | Preferred JSON or markdown report from the failing profile or feature validation gate. |\n| `visual_evidence` | Required renders, screenshots, viewport captures, or generated previews from enough angles to identify the graspable region. |\n| `source_visual_asset` | Optional source USD\u002FCAD\u002Fmesh used only for visual evidence when the staged SimReady USD has no renderable geometry. |\n| `gripper_context` | Optional gripper type, jaw width, approach constraints, and regions to prefer or avoid. |\n| `grasp_points` | Final two or more local-space USD points for the grasp line, chosen after visual review. |\n\n## Instructions\n\nUse this checklist when changing the repository:\n\n1. Confirm the input asset exists and that earlier gates needed by the selected profile are already staged. For a prop workflow, FET000 and FET001 should pass; FET003 should usually pass before FET005 because grasping assumes a physical prop.\n2. Parse the validation report and filter to `FET005_BASE_NEUTRAL`. If `GSP.001` already passes, do not add duplicate grasp lines.\n3. Inspect existing grasp vector prims under the default prim:\n   - type is `BasisCurves`\n   - name starts with `grasp_identifier`\n   - `points` has at least two points\n   - curve is under the asset default prim\n4. Generate or collect visual evidence before choosing points. Prefer real renders from `render-usd`, Kit, Omniverse viewport screenshots, or existing preview images when available. If no renderer is available, use `assets\u002Fscripts\u002Frender_grasp_preview.py` to generate a four-panel point-cloud PNG with top, front, side, and isometric views. If the staged USD opens but has no renderable mesh triangles, use the nearest source visual asset from conversion context or the asset fixture\u002Fsource tree, then record that fallback explicitly. If the current agent cannot inspect the generated or collected images with vision, write a first-class `BLOCKED` report and stop.\n5. Use visual reasoning to choose a grasp region:\n   - Prefer stable, rigid, central body geometry with enough contact area for opposing gripper fingers.\n   - Avoid handles, holes, voids, thin rims, fragile appendages, decorative parts, sharp protrusions, and table-contact bottoms unless the user or asset semantics explicitly say those are intended.\n   - For handled containers, prefer the main body or sidewall region, not the handle, unless a handle grasp is explicitly requested.\n   - For box-like props, prefer a line across two broad opposing side faces with clearance.\n   - For cylindrical props, prefer a diameter across the main body at a stable height, avoiding top and bottom edges.\n   - For tools, use the designed grip handle only when it is the intended robotic grasp region.\n6. Convert the selected visual grasp into USD local-space points. The line should intersect the graspable geometry and represent the gripper contact\u002Fclosing axis or agreed runtime convention. If the visual source and staged USD use different units, root transforms, or meter-normalization scales, convert points into the authoring parent's local space and record the conversion note. If the coordinate mapping is uncertain, inspect bounds, xform ops, layer scale, and default-prim transforms before authoring. If explicit points still cannot be chosen, write a `BLOCKED` report with the visual evidence path, the reason points could not be selected, and the exact inputs needed to continue.\n7. Stage a copy under `output_root`; do not mutate the source unless the user explicitly asks for in-place repair.\n8. Author or replace one `BasisCurves` prim named `grasp_identifier_##` under the default prim, with:\n   - `type = \"linear\"`\n   - `curveVertexCounts = [point_count]`\n   - `points = [...]`\n   - a small display width\n   - `purpose = \"guide\"`\n   - visible display color for review\n9. Render or inspect the repaired asset again. Confirm the line is visible, intersects the intended region, and is not accidentally placed through an avoided region. When possible, save overlay images or a small decision JSON beside the staged output.\n10. Rerun the same profile validation gate, or the narrowest available FET005 validation gate. Stop when FET005 passes or when the remaining FET005 issue requires user or runtime-gripper judgement. If the full profile still fails on another feature, report the first remaining failing gate separately from the FET005 result.\n\n## Authoring Script\n\nUse `assets\u002Fscripts\u002Frender_grasp_preview.py` to create visual evidence when a renderer or viewport is not available. This script uses USD mesh points and pure-Python PNG output, so it does not require PIL, matplotlib, Kit, or a display server:\n\n```bash\nuv run --python 3.12 python \u003Cskill-dir>\u002Fassets\u002Fscripts\u002Frender_grasp_preview.py \u003Cinput-usd> \\\n  --output \u003Coutput-root>\u002Fgrasp-preview.png \\\n  --report \u003Coutput-root>\u002Fgrasp-preview.json\n```\n\nAfter choosing explicit points, rerun the preview with the proposed line overlaid and inspect it before authoring:\n\n```bash\nuv run --python 3.12 python \u003Cskill-dir>\u002Fassets\u002Fscripts\u002Frender_grasp_preview.py \u003Cinput-usd> \\\n  --output \u003Coutput-root>\u002Fgrasp-preview-overlay.png \\\n  --point=-0.010,-0.032,0.050 \\\n  --point=-0.010,0.032,0.050 \\\n  --report \u003Coutput-root>\u002Fgrasp-preview-overlay.json\n```\n\nThe preview helper is evidence generation only. It does not choose the grasp\nregion and does not replace vision review.\n\nUse `assets\u002Fscripts\u002Fauthor_grasp_line.py` for deterministic USD authoring after the vision decision has produced explicit points. Prefer `uv run --python 3.12 python` or `python3`; do not assume `python` exists or points to Python 3.10+ on Linux:\n\n```bash\nuv run --python 3.12 python \u003Cskill-dir>\u002Fassets\u002Fscripts\u002Fauthor_grasp_line.py \u003Cinput-usd> \\\n  --output \u003Cstaged-output-usd> \\\n  --parent-prim \u002F\u003CdefaultPrim> \\\n  --name grasp_identifier_01 \\\n  --point=x0,y0,z0 \\\n  --point=x1,y1,z1 \\\n  --source-visual-asset \u003Csource-visual-usd-or-mesh> \\\n  --visual-evidence \u003Crender-or-screenshot> \\\n  --rationale \"why this grasp region was selected\" \\\n  --coordinate-note \"how source-space points map to authored local points\" \\\n  --report \u003Coutput-root>\u002Fauthor-grasp-line.json \\\n  --markdown-report \u003Coutput-root>\u002Fauthor-grasp-line.md\n```\n\nWhen repair is blocked before explicit points are available, use the same script\nto produce a distinguishable `BLOCKED` report instead of a failed repair report:\n\n```bash\nuv run --python 3.12 python \u003Cskill-dir>\u002Fassets\u002Fscripts\u002Fauthor_grasp_line.py \u003Cinput-usd> \\\n  --output \u003Cstaged-output-usd> \\\n  --visual-evidence \u003Crender-or-screenshot> \\\n  --blocked-reason \"Vision-capable agent could not choose two unambiguous local-space grasp points from the available evidence.\" \\\n  --report \u003Coutput-root>\u002Fauthor-grasp-line.json \\\n  --markdown-report \u003Coutput-root>\u002Fauthor-grasp-line.md\n```\n\nIf the Physical AI Skill Hub CLI is available, `author-grasp-vectors` can also author explicit points. Do not rely on its bounding-box heuristic unless visual review confirms the generated line is semantically correct for the asset.\n\nThe script only authors explicit points. It does not choose the grasp region, render evidence, or infer scale. Use the optional evidence and rationale flags so the report preserves the human\u002Fvision decision that led to those points. If no points are supplied, the script returns `BLOCKED` with `requirements_blocked = [\"GSP.001\"]`; workflow summaries must preserve that status instead of converting it to `FAIL`.\n\n## Vision Policy\n\nDo not use this skill to author a grasp line unless the current agent can inspect\nthe visual evidence directly. A non-vision agent must report `blocked` for\n`GSP.001` repair and should not call `assets\u002Fscripts\u002Fauthor_grasp_line.py`.\n\nDo not place the final line from a bounding box alone when the asset has meaningful shape, openings, handles, or multiple plausible grasp regions. A bounding-box line is acceptable only for simple primitives or after render review confirms it intersects the intended graspable body.\n\nIf there is no way to see the asset, block and request visual evidence or a specific user-approved grasp region. Passing `GSP.001` with an arbitrary line is not a useful SimReady repair.\n\nIf there is a way to see the asset and the current model is vision-capable, make\nthe repair actionable: inspect the image, choose two or more explicit points,\nauthor the curve, then rerun validation. A statement such as \"visual evidence\nexisted but no user-approved points were supplied\" is not sufficient unless the\nasset has unresolved ambiguity that the report names precisely.\n\n## Examples\n\nExample request:\n\n```text\nUse a vision-capable model to add a FET005 grasp line to a coffee mug USD asset.\n```\n\nExpected result summary:\n\n```text\nstaged_asset: repaired copy or output directory\nvalidation: selected feature\u002Fprofile gate and report path\nremaining_failures: next failing requirement IDs, if any\n```\n\n## Validation Handoff\n\nPreserve reports under the staged output directory. If the Physical AI Skill Hub validation commands are available, use:\n\n```bash\nuv run --python 3.12 validate-simready-profile \u003Cstaged-usd> \\\n  --profile \u003Cprofile> \\\n  --profile-version \u003Cversion> \\\n  --foundation-root \u003Csimready-foundation-root> \\\n  --foundation-spec-root \u003Csimready-foundation-root>\u002Fnv_core\u002Fsr_specs\u002Fdocs \\\n  --report \u003Coutput-root>\u002Fsimready-profile-after-fet005.json\n```\n\nCount this skill as successful when `FET005_BASE_NEUTRAL` passes, even if the full profile still fails on unrelated features. If `PMT.001` fails, report it as a physics-material binding issue and do not hide it by only adding a grasp line.\n\n## Limitations\n\n- Do not silently mutate the source asset; work on the requested staged output.\n- Do not hide later profile failures after the selected feature gate passes or fails.\n- Do not invent geometry, metadata, or runtime behavior that conflicts with the asset intent.\n\n## Troubleshooting\n\n- Error: validation tooling is unavailable. Solution: run the narrowest available USD or static check and report the gap.\n- Error: a repair would change asset intent. Solution: stop and ask for direction or stage the smallest reversible edit.\n- Error: later profile gates still fail. Solution: report the next failing feature and hand off to the matching conformance skill.\n\n## Resources\n\n- `assets\u002Fopenai.yaml` preserves optional UI metadata for clients that read skill display hints. It is not required for the workflow.\n- `assets\u002Fscripts\u002F` contains the deterministic preview and authoring helpers for this skill.\n- `references\u002F` contains detailed requirement notes; load only the files needed for the active validation failure.\n\n## Available Scripts\n\n| Script | Purpose | Arguments |\n|---|---|---|\n| `assets\u002Fscripts\u002Frender_grasp_preview.py` | Render point-cloud visual evidence and optional line overlays. | `\u003Cinput-usd>`, `--output`, optional `--point`, optional `--report` |\n| `assets\u002Fscripts\u002Fauthor_grasp_line.py` | Author explicit vision-selected points as a `grasp_identifier` BasisCurves prim or write a `BLOCKED` report. | `\u003Cinput-usd>`, `--output` or `--in-place`, `--point`, `--visual-evidence`, `--rationale`, `--coordinate-note`, report paths |\n\n## Summary Format\n\nReport:\n\n| Field | Meaning |\n|---|---|\n| `input_usd_path` | Original USD path. |\n| `output_usd_path` | Latest staged\u002Frepaired USD path. |\n| `profile` and `profile_version` | Validation target. |\n| `fet005_version` | Selected `FET005_BASE_NEUTRAL` manifest version. |\n| `visual_evidence` | Renders\u002Fscreenshots inspected. |\n| `grasp_vector_path` | Authored or repaired `BasisCurves` prim. |\n| `grasp_points` | Final local-space points. |\n| `grasp_rationale` | Why this region is graspable and what was avoided. |\n| `status` | `PASS`, `BLOCKED`, or `FAIL`. Preserve `BLOCKED` separately from validation failures. |\n| `requirements_repaired` | Requirement IDs changed by this skill. |\n| `requirements_blocked` | Requirement IDs that need visual, gripper, material, or runtime-test judgement. |\n| `blocked_reasons` and `needed_inputs` | Required when no grasp line is authored. |\n| `validation_report` | Path to the rerun validation report. |\n| `next_step` | Usually rerun the selected full profile or address the next failing feature. |\n\nKeep the user-facing summary short: what visual evidence was used, where the grasp line was placed, why that region was chosen, and what validation reported.\n",{"data":35,"body":42},{"name":4,"description":6,"license":26,"metadata":36},{"author":37,"tags":38},"Shaad Boochoon \u003Csboochoon@nvidia.com>",[39,40,41],"simready","conformance","grasp",{"type":43,"children":44},"root",[45,54,61,76,89,95,100,105,110,116,121,127,132,173,232,238,243,456,462,467,709,715,727,888,893,1049,1054,1090,1444,1456,1663,1676,1703,1709,1735,1740,1752,1757,1763,1768,1778,1783,1792,1798,1803,2005,2024,2030,2048,2054,2072,2078,2114,2120,2273,2279,2284,2592,2597],{"type":46,"tag":47,"props":48,"children":50},"element","h1",{"id":49},"simready-conform-fet-005-simulate-grasp-physics",[51],{"type":52,"value":53},"text","SimReady Conform FET-005 Simulate Grasp Physics",{"type":46,"tag":55,"props":56,"children":58},"h2",{"id":57},"purpose",[59],{"type":52,"value":60},"Purpose",{"type":46,"tag":62,"props":63,"children":64},"p",{},[65,67,74],{"type":52,"value":66},"Use this workflow skill after Core, Minimal, and rigid-body requirements are already in a reasonable state and the next profile validation gate is ",{"type":46,"tag":68,"props":69,"children":71},"code",{"className":70},[],[72],{"type":52,"value":73},"FET005_BASE_NEUTRAL",{"type":52,"value":75},". It adds or repairs a USD grasp vector line that tells a robotic gripper where to grasp the asset.",{"type":46,"tag":62,"props":77,"children":78},{},[79,81,87],{"type":52,"value":80},"This is a visual-semantic authoring skill, not a bounding-box shortcut. The grasp line must be chosen from visual evidence of the asset shape and intended grasp behavior, then authored deterministically as a ",{"type":46,"tag":68,"props":82,"children":84},{"className":83},[],[85],{"type":52,"value":86},"UsdGeom.BasisCurves",{"type":52,"value":88}," prim.",{"type":46,"tag":55,"props":90,"children":92},{"id":91},"capability-gate",[93],{"type":52,"value":94},"Capability Gate",{"type":46,"tag":62,"props":96,"children":97},{},[98],{"type":52,"value":99},"This skill requires a vision-capable agent or model. Before authoring, replacing,\nor invoking any script that creates a grasp line, confirm that the current agent\ncan inspect visual evidence directly, such as renders, screenshots, viewport\ncaptures, or generated mesh previews.",{"type":46,"tag":62,"props":101,"children":102},{},[103],{"type":52,"value":104},"If the current agent cannot use vision, stop immediately. Do not add or repair a\ngrasp line from bounds, text metadata, file names, validator failures, or user\ndescriptions alone. Tell the user that FET005 grasp-line repair requires a\nvision-capable model\u002Fagent and ask them to rerun this skill with vision enabled.",{"type":46,"tag":62,"props":106,"children":107},{},[108],{"type":52,"value":109},"If the current agent can use vision and visual evidence is available, the agent\nis expected to choose explicit local-space grasp points from that evidence. Do\nnot skip authoring merely because the user did not pre-supply points. User\napproval is only required when the visual evidence, coordinate mapping, gripper\nconstraints, or grasp intent remain genuinely ambiguous after inspection.",{"type":46,"tag":55,"props":111,"children":113},{"id":112},"prerequisites",[114],{"type":52,"value":115},"Prerequisites",{"type":46,"tag":62,"props":117,"children":118},{},[119],{"type":52,"value":120},"Read the source-of-truth files named below before editing. Work on staged outputs where the skill requires them, and keep validation evidence with the result. This grasp workflow also requires a vision-capable agent or rendered visual evidence.",{"type":46,"tag":55,"props":122,"children":124},{"id":123},"source-of-truth",[125],{"type":52,"value":126},"Source of Truth",{"type":46,"tag":62,"props":128,"children":129},{},[130],{"type":52,"value":131},"Before changing an asset, load the selected FET005 manifest and requirement docs:",{"type":46,"tag":133,"props":134,"children":135},"ul",{},[136,146,155,164],{"type":46,"tag":137,"props":138,"children":139},"li",{},[140],{"type":46,"tag":68,"props":141,"children":143},{"className":142},[],[144],{"type":52,"value":145},"nv_core\u002Fsr_specs\u002Fdocs\u002Ffeatures\u002FFET_005_base_neutral-0.1.0-simulate_grasp_physics.json",{"type":46,"tag":137,"props":147,"children":148},{},[149],{"type":46,"tag":68,"props":150,"children":152},{"className":151},[],[153],{"type":52,"value":154},"nv_core\u002Fsr_specs\u002Fdocs\u002Ffeatures\u002FFET_005-simulate_grasp_physics.md",{"type":46,"tag":137,"props":156,"children":157},{},[158],{"type":46,"tag":68,"props":159,"children":161},{"className":160},[],[162],{"type":52,"value":163},"nv_core\u002Fsr_specs\u002Fdocs\u002Fcapabilities\u002Fphysics_bodies\u002Fphysics_graspable\u002Frequirements\u002Fgraspable-vector-line.md",{"type":46,"tag":137,"props":165,"children":166},{},[167],{"type":46,"tag":68,"props":168,"children":170},{"className":169},[],[171],{"type":52,"value":172},"nv_core\u002Fsr_specs\u002Fdocs\u002Fcapabilities\u002Fphysics_bodies\u002Fphysics_graspable\u002Fvalidation.py",{"type":46,"tag":62,"props":174,"children":175},{},[176,178,184,186,192,194,199,201,207,209,215,217,222,224,230],{"type":52,"value":177},"The current manifest lists ",{"type":46,"tag":68,"props":179,"children":181},{"className":180},[],[182],{"type":52,"value":183},"PMT.001",{"type":52,"value":185}," and ",{"type":46,"tag":68,"props":187,"children":189},{"className":188},[],[190],{"type":52,"value":191},"GSP.001",{"type":52,"value":193},". The current FET005 prose and graspable validator focus on ",{"type":46,"tag":68,"props":195,"children":197},{"className":196},[],[198],{"type":52,"value":191},{"type":52,"value":200},": at least one ",{"type":46,"tag":68,"props":202,"children":204},{"className":203},[],[205],{"type":52,"value":206},"BasisCurves",{"type":52,"value":208}," prim under the default prim, named with the ",{"type":46,"tag":68,"props":210,"children":212},{"className":211},[],[213],{"type":52,"value":214},"grasp_identifier",{"type":52,"value":216}," prefix, with at least two points. If validation reports ",{"type":46,"tag":68,"props":218,"children":220},{"className":219},[],[221],{"type":52,"value":183},{"type":52,"value":223},", read ",{"type":46,"tag":68,"props":225,"children":227},{"className":226},[],[228],{"type":52,"value":229},"references\u002Ffet005-requirements.md",{"type":52,"value":231}," and handle physics-material binding separately from grasp-line placement.",{"type":46,"tag":55,"props":233,"children":235},{"id":234},"inputs",[236],{"type":52,"value":237},"Inputs",{"type":46,"tag":62,"props":239,"children":240},{},[241],{"type":52,"value":242},"Collect these before editing:",{"type":46,"tag":244,"props":245,"children":246},"table",{},[247,266],{"type":46,"tag":248,"props":249,"children":250},"thead",{},[251],{"type":46,"tag":252,"props":253,"children":254},"tr",{},[255,261],{"type":46,"tag":256,"props":257,"children":258},"th",{},[259],{"type":52,"value":260},"Input",{"type":46,"tag":256,"props":262,"children":263},{},[264],{"type":52,"value":265},"Requirement",{"type":46,"tag":267,"props":268,"children":269},"tbody",{},[270,312,329,354,371,388,405,422,439],{"type":46,"tag":252,"props":271,"children":272},{},[273,283],{"type":46,"tag":274,"props":275,"children":276},"td",{},[277],{"type":46,"tag":68,"props":278,"children":280},{"className":279},[],[281],{"type":52,"value":282},"usd_asset",{"type":46,"tag":274,"props":284,"children":285},{},[286,288,294,296,302,304,310],{"type":52,"value":287},"Required ",{"type":46,"tag":68,"props":289,"children":291},{"className":290},[],[292],{"type":52,"value":293},".usd",{"type":52,"value":295},", ",{"type":46,"tag":68,"props":297,"children":299},{"className":298},[],[300],{"type":52,"value":301},".usda",{"type":52,"value":303},", or ",{"type":46,"tag":68,"props":305,"children":307},{"className":306},[],[308],{"type":52,"value":309},".usdc",{"type":52,"value":311}," asset to repair.",{"type":46,"tag":252,"props":313,"children":314},{},[315,324],{"type":46,"tag":274,"props":316,"children":317},{},[318],{"type":46,"tag":68,"props":319,"children":321},{"className":320},[],[322],{"type":52,"value":323},"output_root",{"type":46,"tag":274,"props":325,"children":326},{},[327],{"type":52,"value":328},"Required or inferred folder for staged assets and reports.",{"type":46,"tag":252,"props":330,"children":331},{},[332,341],{"type":46,"tag":274,"props":333,"children":334},{},[335],{"type":46,"tag":68,"props":336,"children":338},{"className":337},[],[339],{"type":52,"value":340},"simready_profile",{"type":46,"tag":274,"props":342,"children":343},{},[344,346,352],{"type":52,"value":345},"Profile being validated, such as ",{"type":46,"tag":68,"props":347,"children":349},{"className":348},[],[350],{"type":52,"value":351},"prop-robotics-neutral",{"type":52,"value":353},".",{"type":46,"tag":252,"props":355,"children":356},{},[357,366],{"type":46,"tag":274,"props":358,"children":359},{},[360],{"type":46,"tag":68,"props":361,"children":363},{"className":362},[],[364],{"type":52,"value":365},"profile_version",{"type":46,"tag":274,"props":367,"children":368},{},[369],{"type":52,"value":370},"Profile version, if supplied by the user or validation command.",{"type":46,"tag":252,"props":372,"children":373},{},[374,383],{"type":46,"tag":274,"props":375,"children":376},{},[377],{"type":46,"tag":68,"props":378,"children":380},{"className":379},[],[381],{"type":52,"value":382},"validation_report",{"type":46,"tag":274,"props":384,"children":385},{},[386],{"type":52,"value":387},"Preferred JSON or markdown report from the failing profile or feature validation gate.",{"type":46,"tag":252,"props":389,"children":390},{},[391,400],{"type":46,"tag":274,"props":392,"children":393},{},[394],{"type":46,"tag":68,"props":395,"children":397},{"className":396},[],[398],{"type":52,"value":399},"visual_evidence",{"type":46,"tag":274,"props":401,"children":402},{},[403],{"type":52,"value":404},"Required renders, screenshots, viewport captures, or generated previews from enough angles to identify the graspable region.",{"type":46,"tag":252,"props":406,"children":407},{},[408,417],{"type":46,"tag":274,"props":409,"children":410},{},[411],{"type":46,"tag":68,"props":412,"children":414},{"className":413},[],[415],{"type":52,"value":416},"source_visual_asset",{"type":46,"tag":274,"props":418,"children":419},{},[420],{"type":52,"value":421},"Optional source USD\u002FCAD\u002Fmesh used only for visual evidence when the staged SimReady USD has no renderable geometry.",{"type":46,"tag":252,"props":423,"children":424},{},[425,434],{"type":46,"tag":274,"props":426,"children":427},{},[428],{"type":46,"tag":68,"props":429,"children":431},{"className":430},[],[432],{"type":52,"value":433},"gripper_context",{"type":46,"tag":274,"props":435,"children":436},{},[437],{"type":52,"value":438},"Optional gripper type, jaw width, approach constraints, and regions to prefer or avoid.",{"type":46,"tag":252,"props":440,"children":441},{},[442,451],{"type":46,"tag":274,"props":443,"children":444},{},[445],{"type":46,"tag":68,"props":446,"children":448},{"className":447},[],[449],{"type":52,"value":450},"grasp_points",{"type":46,"tag":274,"props":452,"children":453},{},[454],{"type":52,"value":455},"Final two or more local-space USD points for the grasp line, chosen after visual review.",{"type":46,"tag":55,"props":457,"children":459},{"id":458},"instructions",[460],{"type":52,"value":461},"Instructions",{"type":46,"tag":62,"props":463,"children":464},{},[465],{"type":52,"value":466},"Use this checklist when changing the repository:",{"type":46,"tag":468,"props":469,"children":470},"ol",{},[471,476,495,539,568,606,618,630,699,704],{"type":46,"tag":137,"props":472,"children":473},{},[474],{"type":52,"value":475},"Confirm the input asset exists and that earlier gates needed by the selected profile are already staged. For a prop workflow, FET000 and FET001 should pass; FET003 should usually pass before FET005 because grasping assumes a physical prop.",{"type":46,"tag":137,"props":477,"children":478},{},[479,481,486,488,493],{"type":52,"value":480},"Parse the validation report and filter to ",{"type":46,"tag":68,"props":482,"children":484},{"className":483},[],[485],{"type":52,"value":73},{"type":52,"value":487},". If ",{"type":46,"tag":68,"props":489,"children":491},{"className":490},[],[492],{"type":52,"value":191},{"type":52,"value":494}," already passes, do not add duplicate grasp lines.",{"type":46,"tag":137,"props":496,"children":497},{},[498,500],{"type":52,"value":499},"Inspect existing grasp vector prims under the default prim:\n",{"type":46,"tag":133,"props":501,"children":502},{},[503,513,523,534],{"type":46,"tag":137,"props":504,"children":505},{},[506,508],{"type":52,"value":507},"type is ",{"type":46,"tag":68,"props":509,"children":511},{"className":510},[],[512],{"type":52,"value":206},{"type":46,"tag":137,"props":514,"children":515},{},[516,518],{"type":52,"value":517},"name starts with ",{"type":46,"tag":68,"props":519,"children":521},{"className":520},[],[522],{"type":52,"value":214},{"type":46,"tag":137,"props":524,"children":525},{},[526,532],{"type":46,"tag":68,"props":527,"children":529},{"className":528},[],[530],{"type":52,"value":531},"points",{"type":52,"value":533}," has at least two points",{"type":46,"tag":137,"props":535,"children":536},{},[537],{"type":52,"value":538},"curve is under the asset default prim",{"type":46,"tag":137,"props":540,"children":541},{},[542,544,550,552,558,560,566],{"type":52,"value":543},"Generate or collect visual evidence before choosing points. Prefer real renders from ",{"type":46,"tag":68,"props":545,"children":547},{"className":546},[],[548],{"type":52,"value":549},"render-usd",{"type":52,"value":551},", Kit, Omniverse viewport screenshots, or existing preview images when available. If no renderer is available, use ",{"type":46,"tag":68,"props":553,"children":555},{"className":554},[],[556],{"type":52,"value":557},"assets\u002Fscripts\u002Frender_grasp_preview.py",{"type":52,"value":559}," to generate a four-panel point-cloud PNG with top, front, side, and isometric views. If the staged USD opens but has no renderable mesh triangles, use the nearest source visual asset from conversion context or the asset fixture\u002Fsource tree, then record that fallback explicitly. If the current agent cannot inspect the generated or collected images with vision, write a first-class ",{"type":46,"tag":68,"props":561,"children":563},{"className":562},[],[564],{"type":52,"value":565},"BLOCKED",{"type":52,"value":567}," report and stop.",{"type":46,"tag":137,"props":569,"children":570},{},[571,573],{"type":52,"value":572},"Use visual reasoning to choose a grasp region:\n",{"type":46,"tag":133,"props":574,"children":575},{},[576,581,586,591,596,601],{"type":46,"tag":137,"props":577,"children":578},{},[579],{"type":52,"value":580},"Prefer stable, rigid, central body geometry with enough contact area for opposing gripper fingers.",{"type":46,"tag":137,"props":582,"children":583},{},[584],{"type":52,"value":585},"Avoid handles, holes, voids, thin rims, fragile appendages, decorative parts, sharp protrusions, and table-contact bottoms unless the user or asset semantics explicitly say those are intended.",{"type":46,"tag":137,"props":587,"children":588},{},[589],{"type":52,"value":590},"For handled containers, prefer the main body or sidewall region, not the handle, unless a handle grasp is explicitly requested.",{"type":46,"tag":137,"props":592,"children":593},{},[594],{"type":52,"value":595},"For box-like props, prefer a line across two broad opposing side faces with clearance.",{"type":46,"tag":137,"props":597,"children":598},{},[599],{"type":52,"value":600},"For cylindrical props, prefer a diameter across the main body at a stable height, avoiding top and bottom edges.",{"type":46,"tag":137,"props":602,"children":603},{},[604],{"type":52,"value":605},"For tools, use the designed grip handle only when it is the intended robotic grasp region.",{"type":46,"tag":137,"props":607,"children":608},{},[609,611,616],{"type":52,"value":610},"Convert the selected visual grasp into USD local-space points. The line should intersect the graspable geometry and represent the gripper contact\u002Fclosing axis or agreed runtime convention. If the visual source and staged USD use different units, root transforms, or meter-normalization scales, convert points into the authoring parent's local space and record the conversion note. If the coordinate mapping is uncertain, inspect bounds, xform ops, layer scale, and default-prim transforms before authoring. If explicit points still cannot be chosen, write a ",{"type":46,"tag":68,"props":612,"children":614},{"className":613},[],[615],{"type":52,"value":565},{"type":52,"value":617}," report with the visual evidence path, the reason points could not be selected, and the exact inputs needed to continue.",{"type":46,"tag":137,"props":619,"children":620},{},[621,623,628],{"type":52,"value":622},"Stage a copy under ",{"type":46,"tag":68,"props":624,"children":626},{"className":625},[],[627],{"type":52,"value":323},{"type":52,"value":629},"; do not mutate the source unless the user explicitly asks for in-place repair.",{"type":46,"tag":137,"props":631,"children":632},{},[633,635,640,642,648,650],{"type":52,"value":634},"Author or replace one ",{"type":46,"tag":68,"props":636,"children":638},{"className":637},[],[639],{"type":52,"value":206},{"type":52,"value":641}," prim named ",{"type":46,"tag":68,"props":643,"children":645},{"className":644},[],[646],{"type":52,"value":647},"grasp_identifier_##",{"type":52,"value":649}," under the default prim, with:\n",{"type":46,"tag":133,"props":651,"children":652},{},[653,662,671,680,685,694],{"type":46,"tag":137,"props":654,"children":655},{},[656],{"type":46,"tag":68,"props":657,"children":659},{"className":658},[],[660],{"type":52,"value":661},"type = \"linear\"",{"type":46,"tag":137,"props":663,"children":664},{},[665],{"type":46,"tag":68,"props":666,"children":668},{"className":667},[],[669],{"type":52,"value":670},"curveVertexCounts = [point_count]",{"type":46,"tag":137,"props":672,"children":673},{},[674],{"type":46,"tag":68,"props":675,"children":677},{"className":676},[],[678],{"type":52,"value":679},"points = [...]",{"type":46,"tag":137,"props":681,"children":682},{},[683],{"type":52,"value":684},"a small display width",{"type":46,"tag":137,"props":686,"children":687},{},[688],{"type":46,"tag":68,"props":689,"children":691},{"className":690},[],[692],{"type":52,"value":693},"purpose = \"guide\"",{"type":46,"tag":137,"props":695,"children":696},{},[697],{"type":52,"value":698},"visible display color for review",{"type":46,"tag":137,"props":700,"children":701},{},[702],{"type":52,"value":703},"Render or inspect the repaired asset again. Confirm the line is visible, intersects the intended region, and is not accidentally placed through an avoided region. When possible, save overlay images or a small decision JSON beside the staged output.",{"type":46,"tag":137,"props":705,"children":706},{},[707],{"type":52,"value":708},"Rerun the same profile validation gate, or the narrowest available FET005 validation gate. Stop when FET005 passes or when the remaining FET005 issue requires user or runtime-gripper judgement. If the full profile still fails on another feature, report the first remaining failing gate separately from the FET005 result.",{"type":46,"tag":55,"props":710,"children":712},{"id":711},"authoring-script",[713],{"type":52,"value":714},"Authoring Script",{"type":46,"tag":62,"props":716,"children":717},{},[718,720,725],{"type":52,"value":719},"Use ",{"type":46,"tag":68,"props":721,"children":723},{"className":722},[],[724],{"type":52,"value":557},{"type":52,"value":726}," to create visual evidence when a renderer or viewport is not available. This script uses USD mesh points and pure-Python PNG output, so it does not require PIL, matplotlib, Kit, or a display server:",{"type":46,"tag":728,"props":729,"children":734},"pre",{"className":730,"code":731,"language":732,"meta":733,"style":733},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","uv run --python 3.12 python \u003Cskill-dir>\u002Fassets\u002Fscripts\u002Frender_grasp_preview.py \u003Cinput-usd> \\\n  --output \u003Coutput-root>\u002Fgrasp-preview.png \\\n  --report \u003Coutput-root>\u002Fgrasp-preview.json\n","bash","",[735],{"type":46,"tag":68,"props":736,"children":737},{"__ignoreMap":733},[738,822,858],{"type":46,"tag":739,"props":740,"children":743},"span",{"class":741,"line":742},"line",1,[744,750,756,761,767,772,778,783,789,794,799,803,808,813,817],{"type":46,"tag":739,"props":745,"children":747},{"style":746},"--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B",[748],{"type":52,"value":749},"uv",{"type":46,"tag":739,"props":751,"children":753},{"style":752},"--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D",[754],{"type":52,"value":755}," run",{"type":46,"tag":739,"props":757,"children":758},{"style":752},[759],{"type":52,"value":760}," --python",{"type":46,"tag":739,"props":762,"children":764},{"style":763},"--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C",[765],{"type":52,"value":766}," 3.12",{"type":46,"tag":739,"props":768,"children":769},{"style":752},[770],{"type":52,"value":771}," python",{"type":46,"tag":739,"props":773,"children":775},{"style":774},"--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF",[776],{"type":52,"value":777}," \u003C",{"type":46,"tag":739,"props":779,"children":780},{"style":752},[781],{"type":52,"value":782},"skill-di",{"type":46,"tag":739,"props":784,"children":786},{"style":785},"--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8",[787],{"type":52,"value":788},"r",{"type":46,"tag":739,"props":790,"children":791},{"style":774},[792],{"type":52,"value":793},">",{"type":46,"tag":739,"props":795,"children":796},{"style":752},[797],{"type":52,"value":798},"\u002Fassets\u002Fscripts\u002Frender_grasp_preview.py",{"type":46,"tag":739,"props":800,"children":801},{"style":774},[802],{"type":52,"value":777},{"type":46,"tag":739,"props":804,"children":805},{"style":752},[806],{"type":52,"value":807},"input-us",{"type":46,"tag":739,"props":809,"children":810},{"style":785},[811],{"type":52,"value":812},"d",{"type":46,"tag":739,"props":814,"children":815},{"style":774},[816],{"type":52,"value":793},{"type":46,"tag":739,"props":818,"children":819},{"style":785},[820],{"type":52,"value":821}," \\\n",{"type":46,"tag":739,"props":823,"children":825},{"class":741,"line":824},2,[826,831,835,840,845,849,854],{"type":46,"tag":739,"props":827,"children":828},{"style":752},[829],{"type":52,"value":830},"  --output",{"type":46,"tag":739,"props":832,"children":833},{"style":774},[834],{"type":52,"value":777},{"type":46,"tag":739,"props":836,"children":837},{"style":752},[838],{"type":52,"value":839},"output-roo",{"type":46,"tag":739,"props":841,"children":842},{"style":785},[843],{"type":52,"value":844},"t",{"type":46,"tag":739,"props":846,"children":847},{"style":774},[848],{"type":52,"value":793},{"type":46,"tag":739,"props":850,"children":851},{"style":752},[852],{"type":52,"value":853},"\u002Fgrasp-preview.png",{"type":46,"tag":739,"props":855,"children":856},{"style":785},[857],{"type":52,"value":821},{"type":46,"tag":739,"props":859,"children":861},{"class":741,"line":860},3,[862,867,871,875,879,883],{"type":46,"tag":739,"props":863,"children":864},{"style":752},[865],{"type":52,"value":866},"  --report",{"type":46,"tag":739,"props":868,"children":869},{"style":774},[870],{"type":52,"value":777},{"type":46,"tag":739,"props":872,"children":873},{"style":752},[874],{"type":52,"value":839},{"type":46,"tag":739,"props":876,"children":877},{"style":785},[878],{"type":52,"value":844},{"type":46,"tag":739,"props":880,"children":881},{"style":774},[882],{"type":52,"value":793},{"type":46,"tag":739,"props":884,"children":885},{"style":752},[886],{"type":52,"value":887},"\u002Fgrasp-preview.json\n",{"type":46,"tag":62,"props":889,"children":890},{},[891],{"type":52,"value":892},"After choosing explicit points, rerun the preview with the proposed line overlaid and inspect it before authoring:",{"type":46,"tag":728,"props":894,"children":896},{"className":730,"code":895,"language":732,"meta":733,"style":733},"uv run --python 3.12 python \u003Cskill-dir>\u002Fassets\u002Fscripts\u002Frender_grasp_preview.py \u003Cinput-usd> \\\n  --output \u003Coutput-root>\u002Fgrasp-preview-overlay.png \\\n  --point=-0.010,-0.032,0.050 \\\n  --point=-0.010,0.032,0.050 \\\n  --report \u003Coutput-root>\u002Fgrasp-preview-overlay.json\n",[897],{"type":46,"tag":68,"props":898,"children":899},{"__ignoreMap":733},[900,963,995,1007,1020],{"type":46,"tag":739,"props":901,"children":902},{"class":741,"line":742},[903,907,911,915,919,923,927,931,935,939,943,947,951,955,959],{"type":46,"tag":739,"props":904,"children":905},{"style":746},[906],{"type":52,"value":749},{"type":46,"tag":739,"props":908,"children":909},{"style":752},[910],{"type":52,"value":755},{"type":46,"tag":739,"props":912,"children":913},{"style":752},[914],{"type":52,"value":760},{"type":46,"tag":739,"props":916,"children":917},{"style":763},[918],{"type":52,"value":766},{"type":46,"tag":739,"props":920,"children":921},{"style":752},[922],{"type":52,"value":771},{"type":46,"tag":739,"props":924,"children":925},{"style":774},[926],{"type":52,"value":777},{"type":46,"tag":739,"props":928,"children":929},{"style":752},[930],{"type":52,"value":782},{"type":46,"tag":739,"props":932,"children":933},{"style":785},[934],{"type":52,"value":788},{"type":46,"tag":739,"props":936,"children":937},{"style":774},[938],{"type":52,"value":793},{"type":46,"tag":739,"props":940,"children":941},{"style":752},[942],{"type":52,"value":798},{"type":46,"tag":739,"props":944,"children":945},{"style":774},[946],{"type":52,"value":777},{"type":46,"tag":739,"props":948,"children":949},{"style":752},[950],{"type":52,"value":807},{"type":46,"tag":739,"props":952,"children":953},{"style":785},[954],{"type":52,"value":812},{"type":46,"tag":739,"props":956,"children":957},{"style":774},[958],{"type":52,"value":793},{"type":46,"tag":739,"props":960,"children":961},{"style":785},[962],{"type":52,"value":821},{"type":46,"tag":739,"props":964,"children":965},{"class":741,"line":824},[966,970,974,978,982,986,991],{"type":46,"tag":739,"props":967,"children":968},{"style":752},[969],{"type":52,"value":830},{"type":46,"tag":739,"props":971,"children":972},{"style":774},[973],{"type":52,"value":777},{"type":46,"tag":739,"props":975,"children":976},{"style":752},[977],{"type":52,"value":839},{"type":46,"tag":739,"props":979,"children":980},{"style":785},[981],{"type":52,"value":844},{"type":46,"tag":739,"props":983,"children":984},{"style":774},[985],{"type":52,"value":793},{"type":46,"tag":739,"props":987,"children":988},{"style":752},[989],{"type":52,"value":990},"\u002Fgrasp-preview-overlay.png",{"type":46,"tag":739,"props":992,"children":993},{"style":785},[994],{"type":52,"value":821},{"type":46,"tag":739,"props":996,"children":997},{"class":741,"line":860},[998,1003],{"type":46,"tag":739,"props":999,"children":1000},{"style":752},[1001],{"type":52,"value":1002},"  --point=-0.010,-0.032,0.050",{"type":46,"tag":739,"props":1004,"children":1005},{"style":785},[1006],{"type":52,"value":821},{"type":46,"tag":739,"props":1008,"children":1010},{"class":741,"line":1009},4,[1011,1016],{"type":46,"tag":739,"props":1012,"children":1013},{"style":752},[1014],{"type":52,"value":1015},"  --point=-0.010,0.032,0.050",{"type":46,"tag":739,"props":1017,"children":1018},{"style":785},[1019],{"type":52,"value":821},{"type":46,"tag":739,"props":1021,"children":1023},{"class":741,"line":1022},5,[1024,1028,1032,1036,1040,1044],{"type":46,"tag":739,"props":1025,"children":1026},{"style":752},[1027],{"type":52,"value":866},{"type":46,"tag":739,"props":1029,"children":1030},{"style":774},[1031],{"type":52,"value":777},{"type":46,"tag":739,"props":1033,"children":1034},{"style":752},[1035],{"type":52,"value":839},{"type":46,"tag":739,"props":1037,"children":1038},{"style":785},[1039],{"type":52,"value":844},{"type":46,"tag":739,"props":1041,"children":1042},{"style":774},[1043],{"type":52,"value":793},{"type":46,"tag":739,"props":1045,"children":1046},{"style":752},[1047],{"type":52,"value":1048},"\u002Fgrasp-preview-overlay.json\n",{"type":46,"tag":62,"props":1050,"children":1051},{},[1052],{"type":52,"value":1053},"The preview helper is evidence generation only. It does not choose the grasp\nregion and does not replace vision review.",{"type":46,"tag":62,"props":1055,"children":1056},{},[1057,1058,1064,1066,1072,1074,1080,1082,1088],{"type":52,"value":719},{"type":46,"tag":68,"props":1059,"children":1061},{"className":1060},[],[1062],{"type":52,"value":1063},"assets\u002Fscripts\u002Fauthor_grasp_line.py",{"type":52,"value":1065}," for deterministic USD authoring after the vision decision has produced explicit points. Prefer ",{"type":46,"tag":68,"props":1067,"children":1069},{"className":1068},[],[1070],{"type":52,"value":1071},"uv run --python 3.12 python",{"type":52,"value":1073}," or ",{"type":46,"tag":68,"props":1075,"children":1077},{"className":1076},[],[1078],{"type":52,"value":1079},"python3",{"type":52,"value":1081},"; do not assume ",{"type":46,"tag":68,"props":1083,"children":1085},{"className":1084},[],[1086],{"type":52,"value":1087},"python",{"type":52,"value":1089}," exists or points to Python 3.10+ on Linux:",{"type":46,"tag":728,"props":1091,"children":1093},{"className":730,"code":1092,"language":732,"meta":733,"style":733},"uv run --python 3.12 python \u003Cskill-dir>\u002Fassets\u002Fscripts\u002Fauthor_grasp_line.py \u003Cinput-usd> \\\n  --output \u003Cstaged-output-usd> \\\n  --parent-prim \u002F\u003CdefaultPrim> \\\n  --name grasp_identifier_01 \\\n  --point=x0,y0,z0 \\\n  --point=x1,y1,z1 \\\n  --source-visual-asset \u003Csource-visual-usd-or-mesh> \\\n  --visual-evidence \u003Crender-or-screenshot> \\\n  --rationale \"why this grasp region was selected\" \\\n  --coordinate-note \"how source-space points map to authored local points\" \\\n  --report \u003Coutput-root>\u002Fauthor-grasp-line.json \\\n  --markdown-report \u003Coutput-root>\u002Fauthor-grasp-line.md\n",[1094],{"type":46,"tag":68,"props":1095,"children":1096},{"__ignoreMap":733},[1097,1161,1189,1225,1242,1254,1267,1298,1327,1355,1381,1414],{"type":46,"tag":739,"props":1098,"children":1099},{"class":741,"line":742},[1100,1104,1108,1112,1116,1120,1124,1128,1132,1136,1141,1145,1149,1153,1157],{"type":46,"tag":739,"props":1101,"children":1102},{"style":746},[1103],{"type":52,"value":749},{"type":46,"tag":739,"props":1105,"children":1106},{"style":752},[1107],{"type":52,"value":755},{"type":46,"tag":739,"props":1109,"children":1110},{"style":752},[1111],{"type":52,"value":760},{"type":46,"tag":739,"props":1113,"children":1114},{"style":763},[1115],{"type":52,"value":766},{"type":46,"tag":739,"props":1117,"children":1118},{"style":752},[1119],{"type":52,"value":771},{"type":46,"tag":739,"props":1121,"children":1122},{"style":774},[1123],{"type":52,"value":777},{"type":46,"tag":739,"props":1125,"children":1126},{"style":752},[1127],{"type":52,"value":782},{"type":46,"tag":739,"props":1129,"children":1130},{"style":785},[1131],{"type":52,"value":788},{"type":46,"tag":739,"props":1133,"children":1134},{"style":774},[1135],{"type":52,"value":793},{"type":46,"tag":739,"props":1137,"children":1138},{"style":752},[1139],{"type":52,"value":1140},"\u002Fassets\u002Fscripts\u002Fauthor_grasp_line.py",{"type":46,"tag":739,"props":1142,"children":1143},{"style":774},[1144],{"type":52,"value":777},{"type":46,"tag":739,"props":1146,"children":1147},{"style":752},[1148],{"type":52,"value":807},{"type":46,"tag":739,"props":1150,"children":1151},{"style":785},[1152],{"type":52,"value":812},{"type":46,"tag":739,"props":1154,"children":1155},{"style":774},[1156],{"type":52,"value":793},{"type":46,"tag":739,"props":1158,"children":1159},{"style":785},[1160],{"type":52,"value":821},{"type":46,"tag":739,"props":1162,"children":1163},{"class":741,"line":824},[1164,1168,1172,1177,1181,1185],{"type":46,"tag":739,"props":1165,"children":1166},{"style":752},[1167],{"type":52,"value":830},{"type":46,"tag":739,"props":1169,"children":1170},{"style":774},[1171],{"type":52,"value":777},{"type":46,"tag":739,"props":1173,"children":1174},{"style":752},[1175],{"type":52,"value":1176},"staged-output-us",{"type":46,"tag":739,"props":1178,"children":1179},{"style":785},[1180],{"type":52,"value":812},{"type":46,"tag":739,"props":1182,"children":1183},{"style":774},[1184],{"type":52,"value":793},{"type":46,"tag":739,"props":1186,"children":1187},{"style":785},[1188],{"type":52,"value":821},{"type":46,"tag":739,"props":1190,"children":1191},{"class":741,"line":860},[1192,1197,1202,1207,1212,1217,1221],{"type":46,"tag":739,"props":1193,"children":1194},{"style":752},[1195],{"type":52,"value":1196},"  --parent-prim",{"type":46,"tag":739,"props":1198,"children":1199},{"style":752},[1200],{"type":52,"value":1201}," \u002F",{"type":46,"tag":739,"props":1203,"children":1204},{"style":774},[1205],{"type":52,"value":1206},"\u003C",{"type":46,"tag":739,"props":1208,"children":1209},{"style":752},[1210],{"type":52,"value":1211},"defaultPri",{"type":46,"tag":739,"props":1213,"children":1214},{"style":785},[1215],{"type":52,"value":1216},"m",{"type":46,"tag":739,"props":1218,"children":1219},{"style":774},[1220],{"type":52,"value":793},{"type":46,"tag":739,"props":1222,"children":1223},{"style":785},[1224],{"type":52,"value":821},{"type":46,"tag":739,"props":1226,"children":1227},{"class":741,"line":1009},[1228,1233,1238],{"type":46,"tag":739,"props":1229,"children":1230},{"style":752},[1231],{"type":52,"value":1232},"  --name",{"type":46,"tag":739,"props":1234,"children":1235},{"style":752},[1236],{"type":52,"value":1237}," grasp_identifier_01",{"type":46,"tag":739,"props":1239,"children":1240},{"style":785},[1241],{"type":52,"value":821},{"type":46,"tag":739,"props":1243,"children":1244},{"class":741,"line":1022},[1245,1250],{"type":46,"tag":739,"props":1246,"children":1247},{"style":752},[1248],{"type":52,"value":1249},"  --point=x0,y0,z0",{"type":46,"tag":739,"props":1251,"children":1252},{"style":785},[1253],{"type":52,"value":821},{"type":46,"tag":739,"props":1255,"children":1257},{"class":741,"line":1256},6,[1258,1263],{"type":46,"tag":739,"props":1259,"children":1260},{"style":752},[1261],{"type":52,"value":1262},"  --point=x1,y1,z1",{"type":46,"tag":739,"props":1264,"children":1265},{"style":785},[1266],{"type":52,"value":821},{"type":46,"tag":739,"props":1268,"children":1270},{"class":741,"line":1269},7,[1271,1276,1280,1285,1290,1294],{"type":46,"tag":739,"props":1272,"children":1273},{"style":752},[1274],{"type":52,"value":1275},"  --source-visual-asset",{"type":46,"tag":739,"props":1277,"children":1278},{"style":774},[1279],{"type":52,"value":777},{"type":46,"tag":739,"props":1281,"children":1282},{"style":752},[1283],{"type":52,"value":1284},"source-visual-usd-or-mes",{"type":46,"tag":739,"props":1286,"children":1287},{"style":785},[1288],{"type":52,"value":1289},"h",{"type":46,"tag":739,"props":1291,"children":1292},{"style":774},[1293],{"type":52,"value":793},{"type":46,"tag":739,"props":1295,"children":1296},{"style":785},[1297],{"type":52,"value":821},{"type":46,"tag":739,"props":1299,"children":1300},{"class":741,"line":27},[1301,1306,1310,1315,1319,1323],{"type":46,"tag":739,"props":1302,"children":1303},{"style":752},[1304],{"type":52,"value":1305},"  --visual-evidence",{"type":46,"tag":739,"props":1307,"children":1308},{"style":774},[1309],{"type":52,"value":777},{"type":46,"tag":739,"props":1311,"children":1312},{"style":752},[1313],{"type":52,"value":1314},"render-or-screensho",{"type":46,"tag":739,"props":1316,"children":1317},{"style":785},[1318],{"type":52,"value":844},{"type":46,"tag":739,"props":1320,"children":1321},{"style":774},[1322],{"type":52,"value":793},{"type":46,"tag":739,"props":1324,"children":1325},{"style":785},[1326],{"type":52,"value":821},{"type":46,"tag":739,"props":1328,"children":1330},{"class":741,"line":1329},9,[1331,1336,1341,1346,1351],{"type":46,"tag":739,"props":1332,"children":1333},{"style":752},[1334],{"type":52,"value":1335},"  --rationale",{"type":46,"tag":739,"props":1337,"children":1338},{"style":774},[1339],{"type":52,"value":1340}," \"",{"type":46,"tag":739,"props":1342,"children":1343},{"style":752},[1344],{"type":52,"value":1345},"why this grasp region was selected",{"type":46,"tag":739,"props":1347,"children":1348},{"style":774},[1349],{"type":52,"value":1350},"\"",{"type":46,"tag":739,"props":1352,"children":1353},{"style":785},[1354],{"type":52,"value":821},{"type":46,"tag":739,"props":1356,"children":1358},{"class":741,"line":1357},10,[1359,1364,1368,1373,1377],{"type":46,"tag":739,"props":1360,"children":1361},{"style":752},[1362],{"type":52,"value":1363},"  --coordinate-note",{"type":46,"tag":739,"props":1365,"children":1366},{"style":774},[1367],{"type":52,"value":1340},{"type":46,"tag":739,"props":1369,"children":1370},{"style":752},[1371],{"type":52,"value":1372},"how source-space points map to authored local points",{"type":46,"tag":739,"props":1374,"children":1375},{"style":774},[1376],{"type":52,"value":1350},{"type":46,"tag":739,"props":1378,"children":1379},{"style":785},[1380],{"type":52,"value":821},{"type":46,"tag":739,"props":1382,"children":1384},{"class":741,"line":1383},11,[1385,1389,1393,1397,1401,1405,1410],{"type":46,"tag":739,"props":1386,"children":1387},{"style":752},[1388],{"type":52,"value":866},{"type":46,"tag":739,"props":1390,"children":1391},{"style":774},[1392],{"type":52,"value":777},{"type":46,"tag":739,"props":1394,"children":1395},{"style":752},[1396],{"type":52,"value":839},{"type":46,"tag":739,"props":1398,"children":1399},{"style":785},[1400],{"type":52,"value":844},{"type":46,"tag":739,"props":1402,"children":1403},{"style":774},[1404],{"type":52,"value":793},{"type":46,"tag":739,"props":1406,"children":1407},{"style":752},[1408],{"type":52,"value":1409},"\u002Fauthor-grasp-line.json",{"type":46,"tag":739,"props":1411,"children":1412},{"style":785},[1413],{"type":52,"value":821},{"type":46,"tag":739,"props":1415,"children":1417},{"class":741,"line":1416},12,[1418,1423,1427,1431,1435,1439],{"type":46,"tag":739,"props":1419,"children":1420},{"style":752},[1421],{"type":52,"value":1422},"  --markdown-report",{"type":46,"tag":739,"props":1424,"children":1425},{"style":774},[1426],{"type":52,"value":777},{"type":46,"tag":739,"props":1428,"children":1429},{"style":752},[1430],{"type":52,"value":839},{"type":46,"tag":739,"props":1432,"children":1433},{"style":785},[1434],{"type":52,"value":844},{"type":46,"tag":739,"props":1436,"children":1437},{"style":774},[1438],{"type":52,"value":793},{"type":46,"tag":739,"props":1440,"children":1441},{"style":752},[1442],{"type":52,"value":1443},"\u002Fauthor-grasp-line.md\n",{"type":46,"tag":62,"props":1445,"children":1446},{},[1447,1449,1454],{"type":52,"value":1448},"When repair is blocked before explicit points are available, use the same script\nto produce a distinguishable ",{"type":46,"tag":68,"props":1450,"children":1452},{"className":1451},[],[1453],{"type":52,"value":565},{"type":52,"value":1455}," report instead of a failed repair report:",{"type":46,"tag":728,"props":1457,"children":1459},{"className":730,"code":1458,"language":732,"meta":733,"style":733},"uv run --python 3.12 python \u003Cskill-dir>\u002Fassets\u002Fscripts\u002Fauthor_grasp_line.py \u003Cinput-usd> \\\n  --output \u003Cstaged-output-usd> \\\n  --visual-evidence \u003Crender-or-screenshot> \\\n  --blocked-reason \"Vision-capable agent could not choose two unambiguous local-space grasp points from the available evidence.\" \\\n  --report \u003Coutput-root>\u002Fauthor-grasp-line.json \\\n  --markdown-report \u003Coutput-root>\u002Fauthor-grasp-line.md\n",[1460],{"type":46,"tag":68,"props":1461,"children":1462},{"__ignoreMap":733},[1463,1526,1553,1580,1605,1636],{"type":46,"tag":739,"props":1464,"children":1465},{"class":741,"line":742},[1466,1470,1474,1478,1482,1486,1490,1494,1498,1502,1506,1510,1514,1518,1522],{"type":46,"tag":739,"props":1467,"children":1468},{"style":746},[1469],{"type":52,"value":749},{"type":46,"tag":739,"props":1471,"children":1472},{"style":752},[1473],{"type":52,"value":755},{"type":46,"tag":739,"props":1475,"children":1476},{"style":752},[1477],{"type":52,"value":760},{"type":46,"tag":739,"props":1479,"children":1480},{"style":763},[1481],{"type":52,"value":766},{"type":46,"tag":739,"props":1483,"children":1484},{"style":752},[1485],{"type":52,"value":771},{"type":46,"tag":739,"props":1487,"children":1488},{"style":774},[1489],{"type":52,"value":777},{"type":46,"tag":739,"props":1491,"children":1492},{"style":752},[1493],{"type":52,"value":782},{"type":46,"tag":739,"props":1495,"children":1496},{"style":785},[1497],{"type":52,"value":788},{"type":46,"tag":739,"props":1499,"children":1500},{"style":774},[1501],{"type":52,"value":793},{"type":46,"tag":739,"props":1503,"children":1504},{"style":752},[1505],{"type":52,"value":1140},{"type":46,"tag":739,"props":1507,"children":1508},{"style":774},[1509],{"type":52,"value":777},{"type":46,"tag":739,"props":1511,"children":1512},{"style":752},[1513],{"type":52,"value":807},{"type":46,"tag":739,"props":1515,"children":1516},{"style":785},[1517],{"type":52,"value":812},{"type":46,"tag":739,"props":1519,"children":1520},{"style":774},[1521],{"type":52,"value":793},{"type":46,"tag":739,"props":1523,"children":1524},{"style":785},[1525],{"type":52,"value":821},{"type":46,"tag":739,"props":1527,"children":1528},{"class":741,"line":824},[1529,1533,1537,1541,1545,1549],{"type":46,"tag":739,"props":1530,"children":1531},{"style":752},[1532],{"type":52,"value":830},{"type":46,"tag":739,"props":1534,"children":1535},{"style":774},[1536],{"type":52,"value":777},{"type":46,"tag":739,"props":1538,"children":1539},{"style":752},[1540],{"type":52,"value":1176},{"type":46,"tag":739,"props":1542,"children":1543},{"style":785},[1544],{"type":52,"value":812},{"type":46,"tag":739,"props":1546,"children":1547},{"style":774},[1548],{"type":52,"value":793},{"type":46,"tag":739,"props":1550,"children":1551},{"style":785},[1552],{"type":52,"value":821},{"type":46,"tag":739,"props":1554,"children":1555},{"class":741,"line":860},[1556,1560,1564,1568,1572,1576],{"type":46,"tag":739,"props":1557,"children":1558},{"style":752},[1559],{"type":52,"value":1305},{"type":46,"tag":739,"props":1561,"children":1562},{"style":774},[1563],{"type":52,"value":777},{"type":46,"tag":739,"props":1565,"children":1566},{"style":752},[1567],{"type":52,"value":1314},{"type":46,"tag":739,"props":1569,"children":1570},{"style":785},[1571],{"type":52,"value":844},{"type":46,"tag":739,"props":1573,"children":1574},{"style":774},[1575],{"type":52,"value":793},{"type":46,"tag":739,"props":1577,"children":1578},{"style":785},[1579],{"type":52,"value":821},{"type":46,"tag":739,"props":1581,"children":1582},{"class":741,"line":1009},[1583,1588,1592,1597,1601],{"type":46,"tag":739,"props":1584,"children":1585},{"style":752},[1586],{"type":52,"value":1587},"  --blocked-reason",{"type":46,"tag":739,"props":1589,"children":1590},{"style":774},[1591],{"type":52,"value":1340},{"type":46,"tag":739,"props":1593,"children":1594},{"style":752},[1595],{"type":52,"value":1596},"Vision-capable agent could not choose two unambiguous local-space grasp points from the available evidence.",{"type":46,"tag":739,"props":1598,"children":1599},{"style":774},[1600],{"type":52,"value":1350},{"type":46,"tag":739,"props":1602,"children":1603},{"style":785},[1604],{"type":52,"value":821},{"type":46,"tag":739,"props":1606,"children":1607},{"class":741,"line":1022},[1608,1612,1616,1620,1624,1628,1632],{"type":46,"tag":739,"props":1609,"children":1610},{"style":752},[1611],{"type":52,"value":866},{"type":46,"tag":739,"props":1613,"children":1614},{"style":774},[1615],{"type":52,"value":777},{"type":46,"tag":739,"props":1617,"children":1618},{"style":752},[1619],{"type":52,"value":839},{"type":46,"tag":739,"props":1621,"children":1622},{"style":785},[1623],{"type":52,"value":844},{"type":46,"tag":739,"props":1625,"children":1626},{"style":774},[1627],{"type":52,"value":793},{"type":46,"tag":739,"props":1629,"children":1630},{"style":752},[1631],{"type":52,"value":1409},{"type":46,"tag":739,"props":1633,"children":1634},{"style":785},[1635],{"type":52,"value":821},{"type":46,"tag":739,"props":1637,"children":1638},{"class":741,"line":1256},[1639,1643,1647,1651,1655,1659],{"type":46,"tag":739,"props":1640,"children":1641},{"style":752},[1642],{"type":52,"value":1422},{"type":46,"tag":739,"props":1644,"children":1645},{"style":774},[1646],{"type":52,"value":777},{"type":46,"tag":739,"props":1648,"children":1649},{"style":752},[1650],{"type":52,"value":839},{"type":46,"tag":739,"props":1652,"children":1653},{"style":785},[1654],{"type":52,"value":844},{"type":46,"tag":739,"props":1656,"children":1657},{"style":774},[1658],{"type":52,"value":793},{"type":46,"tag":739,"props":1660,"children":1661},{"style":752},[1662],{"type":52,"value":1443},{"type":46,"tag":62,"props":1664,"children":1665},{},[1666,1668,1674],{"type":52,"value":1667},"If the Physical AI Skill Hub CLI is available, ",{"type":46,"tag":68,"props":1669,"children":1671},{"className":1670},[],[1672],{"type":52,"value":1673},"author-grasp-vectors",{"type":52,"value":1675}," can also author explicit points. Do not rely on its bounding-box heuristic unless visual review confirms the generated line is semantically correct for the asset.",{"type":46,"tag":62,"props":1677,"children":1678},{},[1679,1681,1686,1688,1694,1696,1702],{"type":52,"value":1680},"The script only authors explicit points. It does not choose the grasp region, render evidence, or infer scale. Use the optional evidence and rationale flags so the report preserves the human\u002Fvision decision that led to those points. If no points are supplied, the script returns ",{"type":46,"tag":68,"props":1682,"children":1684},{"className":1683},[],[1685],{"type":52,"value":565},{"type":52,"value":1687}," with ",{"type":46,"tag":68,"props":1689,"children":1691},{"className":1690},[],[1692],{"type":52,"value":1693},"requirements_blocked = [\"GSP.001\"]",{"type":52,"value":1695},"; workflow summaries must preserve that status instead of converting it to ",{"type":46,"tag":68,"props":1697,"children":1699},{"className":1698},[],[1700],{"type":52,"value":1701},"FAIL",{"type":52,"value":353},{"type":46,"tag":55,"props":1704,"children":1706},{"id":1705},"vision-policy",[1707],{"type":52,"value":1708},"Vision Policy",{"type":46,"tag":62,"props":1710,"children":1711},{},[1712,1714,1720,1722,1727,1729,1734],{"type":52,"value":1713},"Do not use this skill to author a grasp line unless the current agent can inspect\nthe visual evidence directly. A non-vision agent must report ",{"type":46,"tag":68,"props":1715,"children":1717},{"className":1716},[],[1718],{"type":52,"value":1719},"blocked",{"type":52,"value":1721}," for\n",{"type":46,"tag":68,"props":1723,"children":1725},{"className":1724},[],[1726],{"type":52,"value":191},{"type":52,"value":1728}," repair and should not call ",{"type":46,"tag":68,"props":1730,"children":1732},{"className":1731},[],[1733],{"type":52,"value":1063},{"type":52,"value":353},{"type":46,"tag":62,"props":1736,"children":1737},{},[1738],{"type":52,"value":1739},"Do not place the final line from a bounding box alone when the asset has meaningful shape, openings, handles, or multiple plausible grasp regions. A bounding-box line is acceptable only for simple primitives or after render review confirms it intersects the intended graspable body.",{"type":46,"tag":62,"props":1741,"children":1742},{},[1743,1745,1750],{"type":52,"value":1744},"If there is no way to see the asset, block and request visual evidence or a specific user-approved grasp region. Passing ",{"type":46,"tag":68,"props":1746,"children":1748},{"className":1747},[],[1749],{"type":52,"value":191},{"type":52,"value":1751}," with an arbitrary line is not a useful SimReady repair.",{"type":46,"tag":62,"props":1753,"children":1754},{},[1755],{"type":52,"value":1756},"If there is a way to see the asset and the current model is vision-capable, make\nthe repair actionable: inspect the image, choose two or more explicit points,\nauthor the curve, then rerun validation. A statement such as \"visual evidence\nexisted but no user-approved points were supplied\" is not sufficient unless the\nasset has unresolved ambiguity that the report names precisely.",{"type":46,"tag":55,"props":1758,"children":1760},{"id":1759},"examples",[1761],{"type":52,"value":1762},"Examples",{"type":46,"tag":62,"props":1764,"children":1765},{},[1766],{"type":52,"value":1767},"Example request:",{"type":46,"tag":728,"props":1769,"children":1773},{"className":1770,"code":1772,"language":52,"meta":733},[1771],"language-text","Use a vision-capable model to add a FET005 grasp line to a coffee mug USD asset.\n",[1774],{"type":46,"tag":68,"props":1775,"children":1776},{"__ignoreMap":733},[1777],{"type":52,"value":1772},{"type":46,"tag":62,"props":1779,"children":1780},{},[1781],{"type":52,"value":1782},"Expected result summary:",{"type":46,"tag":728,"props":1784,"children":1787},{"className":1785,"code":1786,"language":52,"meta":733},[1771],"staged_asset: repaired copy or output directory\nvalidation: selected feature\u002Fprofile gate and report path\nremaining_failures: next failing requirement IDs, if any\n",[1788],{"type":46,"tag":68,"props":1789,"children":1790},{"__ignoreMap":733},[1791],{"type":52,"value":1786},{"type":46,"tag":55,"props":1793,"children":1795},{"id":1794},"validation-handoff",[1796],{"type":52,"value":1797},"Validation Handoff",{"type":46,"tag":62,"props":1799,"children":1800},{},[1801],{"type":52,"value":1802},"Preserve reports under the staged output directory. If the Physical AI Skill Hub validation commands are available, use:",{"type":46,"tag":728,"props":1804,"children":1806},{"className":730,"code":1805,"language":732,"meta":733,"style":733},"uv run --python 3.12 validate-simready-profile \u003Cstaged-usd> \\\n  --profile \u003Cprofile> \\\n  --profile-version \u003Cversion> \\\n  --foundation-root \u003Csimready-foundation-root> \\\n  --foundation-spec-root \u003Csimready-foundation-root>\u002Fnv_core\u002Fsr_specs\u002Fdocs \\\n  --report \u003Coutput-root>\u002Fsimready-profile-after-fet005.json\n",[1807],{"type":46,"tag":68,"props":1808,"children":1809},{"__ignoreMap":733},[1810,1855,1885,1915,1944,1977],{"type":46,"tag":739,"props":1811,"children":1812},{"class":741,"line":742},[1813,1817,1821,1825,1829,1834,1838,1843,1847,1851],{"type":46,"tag":739,"props":1814,"children":1815},{"style":746},[1816],{"type":52,"value":749},{"type":46,"tag":739,"props":1818,"children":1819},{"style":752},[1820],{"type":52,"value":755},{"type":46,"tag":739,"props":1822,"children":1823},{"style":752},[1824],{"type":52,"value":760},{"type":46,"tag":739,"props":1826,"children":1827},{"style":763},[1828],{"type":52,"value":766},{"type":46,"tag":739,"props":1830,"children":1831},{"style":752},[1832],{"type":52,"value":1833}," validate-simready-profile",{"type":46,"tag":739,"props":1835,"children":1836},{"style":774},[1837],{"type":52,"value":777},{"type":46,"tag":739,"props":1839,"children":1840},{"style":752},[1841],{"type":52,"value":1842},"staged-us",{"type":46,"tag":739,"props":1844,"children":1845},{"style":785},[1846],{"type":52,"value":812},{"type":46,"tag":739,"props":1848,"children":1849},{"style":774},[1850],{"type":52,"value":793},{"type":46,"tag":739,"props":1852,"children":1853},{"style":785},[1854],{"type":52,"value":821},{"type":46,"tag":739,"props":1856,"children":1857},{"class":741,"line":824},[1858,1863,1867,1872,1877,1881],{"type":46,"tag":739,"props":1859,"children":1860},{"style":752},[1861],{"type":52,"value":1862},"  --profile",{"type":46,"tag":739,"props":1864,"children":1865},{"style":774},[1866],{"type":52,"value":777},{"type":46,"tag":739,"props":1868,"children":1869},{"style":752},[1870],{"type":52,"value":1871},"profil",{"type":46,"tag":739,"props":1873,"children":1874},{"style":785},[1875],{"type":52,"value":1876},"e",{"type":46,"tag":739,"props":1878,"children":1879},{"style":774},[1880],{"type":52,"value":793},{"type":46,"tag":739,"props":1882,"children":1883},{"style":785},[1884],{"type":52,"value":821},{"type":46,"tag":739,"props":1886,"children":1887},{"class":741,"line":860},[1888,1893,1897,1902,1907,1911],{"type":46,"tag":739,"props":1889,"children":1890},{"style":752},[1891],{"type":52,"value":1892},"  --profile-version",{"type":46,"tag":739,"props":1894,"children":1895},{"style":774},[1896],{"type":52,"value":777},{"type":46,"tag":739,"props":1898,"children":1899},{"style":752},[1900],{"type":52,"value":1901},"versio",{"type":46,"tag":739,"props":1903,"children":1904},{"style":785},[1905],{"type":52,"value":1906},"n",{"type":46,"tag":739,"props":1908,"children":1909},{"style":774},[1910],{"type":52,"value":793},{"type":46,"tag":739,"props":1912,"children":1913},{"style":785},[1914],{"type":52,"value":821},{"type":46,"tag":739,"props":1916,"children":1917},{"class":741,"line":1009},[1918,1923,1927,1932,1936,1940],{"type":46,"tag":739,"props":1919,"children":1920},{"style":752},[1921],{"type":52,"value":1922},"  --foundation-root",{"type":46,"tag":739,"props":1924,"children":1925},{"style":774},[1926],{"type":52,"value":777},{"type":46,"tag":739,"props":1928,"children":1929},{"style":752},[1930],{"type":52,"value":1931},"simready-foundation-roo",{"type":46,"tag":739,"props":1933,"children":1934},{"style":785},[1935],{"type":52,"value":844},{"type":46,"tag":739,"props":1937,"children":1938},{"style":774},[1939],{"type":52,"value":793},{"type":46,"tag":739,"props":1941,"children":1942},{"style":785},[1943],{"type":52,"value":821},{"type":46,"tag":739,"props":1945,"children":1946},{"class":741,"line":1022},[1947,1952,1956,1960,1964,1968,1973],{"type":46,"tag":739,"props":1948,"children":1949},{"style":752},[1950],{"type":52,"value":1951},"  --foundation-spec-root",{"type":46,"tag":739,"props":1953,"children":1954},{"style":774},[1955],{"type":52,"value":777},{"type":46,"tag":739,"props":1957,"children":1958},{"style":752},[1959],{"type":52,"value":1931},{"type":46,"tag":739,"props":1961,"children":1962},{"style":785},[1963],{"type":52,"value":844},{"type":46,"tag":739,"props":1965,"children":1966},{"style":774},[1967],{"type":52,"value":793},{"type":46,"tag":739,"props":1969,"children":1970},{"style":752},[1971],{"type":52,"value":1972},"\u002Fnv_core\u002Fsr_specs\u002Fdocs",{"type":46,"tag":739,"props":1974,"children":1975},{"style":785},[1976],{"type":52,"value":821},{"type":46,"tag":739,"props":1978,"children":1979},{"class":741,"line":1256},[1980,1984,1988,1992,1996,2000],{"type":46,"tag":739,"props":1981,"children":1982},{"style":752},[1983],{"type":52,"value":866},{"type":46,"tag":739,"props":1985,"children":1986},{"style":774},[1987],{"type":52,"value":777},{"type":46,"tag":739,"props":1989,"children":1990},{"style":752},[1991],{"type":52,"value":839},{"type":46,"tag":739,"props":1993,"children":1994},{"style":785},[1995],{"type":52,"value":844},{"type":46,"tag":739,"props":1997,"children":1998},{"style":774},[1999],{"type":52,"value":793},{"type":46,"tag":739,"props":2001,"children":2002},{"style":752},[2003],{"type":52,"value":2004},"\u002Fsimready-profile-after-fet005.json\n",{"type":46,"tag":62,"props":2006,"children":2007},{},[2008,2010,2015,2017,2022],{"type":52,"value":2009},"Count this skill as successful when ",{"type":46,"tag":68,"props":2011,"children":2013},{"className":2012},[],[2014],{"type":52,"value":73},{"type":52,"value":2016}," passes, even if the full profile still fails on unrelated features. If ",{"type":46,"tag":68,"props":2018,"children":2020},{"className":2019},[],[2021],{"type":52,"value":183},{"type":52,"value":2023}," fails, report it as a physics-material binding issue and do not hide it by only adding a grasp line.",{"type":46,"tag":55,"props":2025,"children":2027},{"id":2026},"limitations",[2028],{"type":52,"value":2029},"Limitations",{"type":46,"tag":133,"props":2031,"children":2032},{},[2033,2038,2043],{"type":46,"tag":137,"props":2034,"children":2035},{},[2036],{"type":52,"value":2037},"Do not silently mutate the source asset; work on the requested staged output.",{"type":46,"tag":137,"props":2039,"children":2040},{},[2041],{"type":52,"value":2042},"Do not hide later profile failures after the selected feature gate passes or fails.",{"type":46,"tag":137,"props":2044,"children":2045},{},[2046],{"type":52,"value":2047},"Do not invent geometry, metadata, or runtime behavior that conflicts with the asset intent.",{"type":46,"tag":55,"props":2049,"children":2051},{"id":2050},"troubleshooting",[2052],{"type":52,"value":2053},"Troubleshooting",{"type":46,"tag":133,"props":2055,"children":2056},{},[2057,2062,2067],{"type":46,"tag":137,"props":2058,"children":2059},{},[2060],{"type":52,"value":2061},"Error: validation tooling is unavailable. Solution: run the narrowest available USD or static check and report the gap.",{"type":46,"tag":137,"props":2063,"children":2064},{},[2065],{"type":52,"value":2066},"Error: a repair would change asset intent. Solution: stop and ask for direction or stage the smallest reversible edit.",{"type":46,"tag":137,"props":2068,"children":2069},{},[2070],{"type":52,"value":2071},"Error: later profile gates still fail. Solution: report the next failing feature and hand off to the matching conformance skill.",{"type":46,"tag":55,"props":2073,"children":2075},{"id":2074},"resources",[2076],{"type":52,"value":2077},"Resources",{"type":46,"tag":133,"props":2079,"children":2080},{},[2081,2092,2103],{"type":46,"tag":137,"props":2082,"children":2083},{},[2084,2090],{"type":46,"tag":68,"props":2085,"children":2087},{"className":2086},[],[2088],{"type":52,"value":2089},"assets\u002Fopenai.yaml",{"type":52,"value":2091}," preserves optional UI metadata for clients that read skill display hints. It is not required for the workflow.",{"type":46,"tag":137,"props":2093,"children":2094},{},[2095,2101],{"type":46,"tag":68,"props":2096,"children":2098},{"className":2097},[],[2099],{"type":52,"value":2100},"assets\u002Fscripts\u002F",{"type":52,"value":2102}," contains the deterministic preview and authoring helpers for this skill.",{"type":46,"tag":137,"props":2104,"children":2105},{},[2106,2112],{"type":46,"tag":68,"props":2107,"children":2109},{"className":2108},[],[2110],{"type":52,"value":2111},"references\u002F",{"type":52,"value":2113}," contains detailed requirement notes; load only the files needed for the active validation failure.",{"type":46,"tag":55,"props":2115,"children":2117},{"id":2116},"available-scripts",[2118],{"type":52,"value":2119},"Available Scripts",{"type":46,"tag":244,"props":2121,"children":2122},{},[2123,2143],{"type":46,"tag":248,"props":2124,"children":2125},{},[2126],{"type":46,"tag":252,"props":2127,"children":2128},{},[2129,2134,2138],{"type":46,"tag":256,"props":2130,"children":2131},{},[2132],{"type":52,"value":2133},"Script",{"type":46,"tag":256,"props":2135,"children":2136},{},[2137],{"type":52,"value":60},{"type":46,"tag":256,"props":2139,"children":2140},{},[2141],{"type":52,"value":2142},"Arguments",{"type":46,"tag":267,"props":2144,"children":2145},{},[2146,2193],{"type":46,"tag":252,"props":2147,"children":2148},{},[2149,2157,2162],{"type":46,"tag":274,"props":2150,"children":2151},{},[2152],{"type":46,"tag":68,"props":2153,"children":2155},{"className":2154},[],[2156],{"type":52,"value":557},{"type":46,"tag":274,"props":2158,"children":2159},{},[2160],{"type":52,"value":2161},"Render point-cloud visual evidence and optional line overlays.",{"type":46,"tag":274,"props":2163,"children":2164},{},[2165,2171,2172,2178,2180,2186,2187],{"type":46,"tag":68,"props":2166,"children":2168},{"className":2167},[],[2169],{"type":52,"value":2170},"\u003Cinput-usd>",{"type":52,"value":295},{"type":46,"tag":68,"props":2173,"children":2175},{"className":2174},[],[2176],{"type":52,"value":2177},"--output",{"type":52,"value":2179},", optional ",{"type":46,"tag":68,"props":2181,"children":2183},{"className":2182},[],[2184],{"type":52,"value":2185},"--point",{"type":52,"value":2179},{"type":46,"tag":68,"props":2188,"children":2190},{"className":2189},[],[2191],{"type":52,"value":2192},"--report",{"type":46,"tag":252,"props":2194,"children":2195},{},[2196,2204,2223],{"type":46,"tag":274,"props":2197,"children":2198},{},[2199],{"type":46,"tag":68,"props":2200,"children":2202},{"className":2201},[],[2203],{"type":52,"value":1063},{"type":46,"tag":274,"props":2205,"children":2206},{},[2207,2209,2214,2216,2221],{"type":52,"value":2208},"Author explicit vision-selected points as a ",{"type":46,"tag":68,"props":2210,"children":2212},{"className":2211},[],[2213],{"type":52,"value":214},{"type":52,"value":2215}," BasisCurves prim or write a ",{"type":46,"tag":68,"props":2217,"children":2219},{"className":2218},[],[2220],{"type":52,"value":565},{"type":52,"value":2222}," report.",{"type":46,"tag":274,"props":2224,"children":2225},{},[2226,2231,2232,2237,2238,2244,2245,2250,2251,2257,2258,2264,2265,2271],{"type":46,"tag":68,"props":2227,"children":2229},{"className":2228},[],[2230],{"type":52,"value":2170},{"type":52,"value":295},{"type":46,"tag":68,"props":2233,"children":2235},{"className":2234},[],[2236],{"type":52,"value":2177},{"type":52,"value":1073},{"type":46,"tag":68,"props":2239,"children":2241},{"className":2240},[],[2242],{"type":52,"value":2243},"--in-place",{"type":52,"value":295},{"type":46,"tag":68,"props":2246,"children":2248},{"className":2247},[],[2249],{"type":52,"value":2185},{"type":52,"value":295},{"type":46,"tag":68,"props":2252,"children":2254},{"className":2253},[],[2255],{"type":52,"value":2256},"--visual-evidence",{"type":52,"value":295},{"type":46,"tag":68,"props":2259,"children":2261},{"className":2260},[],[2262],{"type":52,"value":2263},"--rationale",{"type":52,"value":295},{"type":46,"tag":68,"props":2266,"children":2268},{"className":2267},[],[2269],{"type":52,"value":2270},"--coordinate-note",{"type":52,"value":2272},", report paths",{"type":46,"tag":55,"props":2274,"children":2276},{"id":2275},"summary-format",[2277],{"type":52,"value":2278},"Summary Format",{"type":46,"tag":62,"props":2280,"children":2281},{},[2282],{"type":52,"value":2283},"Report:",{"type":46,"tag":244,"props":2285,"children":2286},{},[2287,2303],{"type":46,"tag":248,"props":2288,"children":2289},{},[2290],{"type":46,"tag":252,"props":2291,"children":2292},{},[2293,2298],{"type":46,"tag":256,"props":2294,"children":2295},{},[2296],{"type":52,"value":2297},"Field",{"type":46,"tag":256,"props":2299,"children":2300},{},[2301],{"type":52,"value":2302},"Meaning",{"type":46,"tag":267,"props":2304,"children":2305},{},[2306,2323,2340,2363,2387,2403,2426,2442,2459,2501,2518,2535,2559,2575],{"type":46,"tag":252,"props":2307,"children":2308},{},[2309,2318],{"type":46,"tag":274,"props":2310,"children":2311},{},[2312],{"type":46,"tag":68,"props":2313,"children":2315},{"className":2314},[],[2316],{"type":52,"value":2317},"input_usd_path",{"type":46,"tag":274,"props":2319,"children":2320},{},[2321],{"type":52,"value":2322},"Original USD path.",{"type":46,"tag":252,"props":2324,"children":2325},{},[2326,2335],{"type":46,"tag":274,"props":2327,"children":2328},{},[2329],{"type":46,"tag":68,"props":2330,"children":2332},{"className":2331},[],[2333],{"type":52,"value":2334},"output_usd_path",{"type":46,"tag":274,"props":2336,"children":2337},{},[2338],{"type":52,"value":2339},"Latest staged\u002Frepaired USD path.",{"type":46,"tag":252,"props":2341,"children":2342},{},[2343,2358],{"type":46,"tag":274,"props":2344,"children":2345},{},[2346,2352,2353],{"type":46,"tag":68,"props":2347,"children":2349},{"className":2348},[],[2350],{"type":52,"value":2351},"profile",{"type":52,"value":185},{"type":46,"tag":68,"props":2354,"children":2356},{"className":2355},[],[2357],{"type":52,"value":365},{"type":46,"tag":274,"props":2359,"children":2360},{},[2361],{"type":52,"value":2362},"Validation target.",{"type":46,"tag":252,"props":2364,"children":2365},{},[2366,2375],{"type":46,"tag":274,"props":2367,"children":2368},{},[2369],{"type":46,"tag":68,"props":2370,"children":2372},{"className":2371},[],[2373],{"type":52,"value":2374},"fet005_version",{"type":46,"tag":274,"props":2376,"children":2377},{},[2378,2380,2385],{"type":52,"value":2379},"Selected ",{"type":46,"tag":68,"props":2381,"children":2383},{"className":2382},[],[2384],{"type":52,"value":73},{"type":52,"value":2386}," manifest version.",{"type":46,"tag":252,"props":2388,"children":2389},{},[2390,2398],{"type":46,"tag":274,"props":2391,"children":2392},{},[2393],{"type":46,"tag":68,"props":2394,"children":2396},{"className":2395},[],[2397],{"type":52,"value":399},{"type":46,"tag":274,"props":2399,"children":2400},{},[2401],{"type":52,"value":2402},"Renders\u002Fscreenshots inspected.",{"type":46,"tag":252,"props":2404,"children":2405},{},[2406,2415],{"type":46,"tag":274,"props":2407,"children":2408},{},[2409],{"type":46,"tag":68,"props":2410,"children":2412},{"className":2411},[],[2413],{"type":52,"value":2414},"grasp_vector_path",{"type":46,"tag":274,"props":2416,"children":2417},{},[2418,2420,2425],{"type":52,"value":2419},"Authored or repaired ",{"type":46,"tag":68,"props":2421,"children":2423},{"className":2422},[],[2424],{"type":52,"value":206},{"type":52,"value":88},{"type":46,"tag":252,"props":2427,"children":2428},{},[2429,2437],{"type":46,"tag":274,"props":2430,"children":2431},{},[2432],{"type":46,"tag":68,"props":2433,"children":2435},{"className":2434},[],[2436],{"type":52,"value":450},{"type":46,"tag":274,"props":2438,"children":2439},{},[2440],{"type":52,"value":2441},"Final local-space points.",{"type":46,"tag":252,"props":2443,"children":2444},{},[2445,2454],{"type":46,"tag":274,"props":2446,"children":2447},{},[2448],{"type":46,"tag":68,"props":2449,"children":2451},{"className":2450},[],[2452],{"type":52,"value":2453},"grasp_rationale",{"type":46,"tag":274,"props":2455,"children":2456},{},[2457],{"type":52,"value":2458},"Why this region is graspable and what was avoided.",{"type":46,"tag":252,"props":2460,"children":2461},{},[2462,2471],{"type":46,"tag":274,"props":2463,"children":2464},{},[2465],{"type":46,"tag":68,"props":2466,"children":2468},{"className":2467},[],[2469],{"type":52,"value":2470},"status",{"type":46,"tag":274,"props":2472,"children":2473},{},[2474,2480,2481,2486,2487,2492,2494,2499],{"type":46,"tag":68,"props":2475,"children":2477},{"className":2476},[],[2478],{"type":52,"value":2479},"PASS",{"type":52,"value":295},{"type":46,"tag":68,"props":2482,"children":2484},{"className":2483},[],[2485],{"type":52,"value":565},{"type":52,"value":303},{"type":46,"tag":68,"props":2488,"children":2490},{"className":2489},[],[2491],{"type":52,"value":1701},{"type":52,"value":2493},". Preserve ",{"type":46,"tag":68,"props":2495,"children":2497},{"className":2496},[],[2498],{"type":52,"value":565},{"type":52,"value":2500}," separately from validation failures.",{"type":46,"tag":252,"props":2502,"children":2503},{},[2504,2513],{"type":46,"tag":274,"props":2505,"children":2506},{},[2507],{"type":46,"tag":68,"props":2508,"children":2510},{"className":2509},[],[2511],{"type":52,"value":2512},"requirements_repaired",{"type":46,"tag":274,"props":2514,"children":2515},{},[2516],{"type":52,"value":2517},"Requirement IDs changed by this skill.",{"type":46,"tag":252,"props":2519,"children":2520},{},[2521,2530],{"type":46,"tag":274,"props":2522,"children":2523},{},[2524],{"type":46,"tag":68,"props":2525,"children":2527},{"className":2526},[],[2528],{"type":52,"value":2529},"requirements_blocked",{"type":46,"tag":274,"props":2531,"children":2532},{},[2533],{"type":52,"value":2534},"Requirement IDs that need visual, gripper, material, or runtime-test judgement.",{"type":46,"tag":252,"props":2536,"children":2537},{},[2538,2554],{"type":46,"tag":274,"props":2539,"children":2540},{},[2541,2547,2548],{"type":46,"tag":68,"props":2542,"children":2544},{"className":2543},[],[2545],{"type":52,"value":2546},"blocked_reasons",{"type":52,"value":185},{"type":46,"tag":68,"props":2549,"children":2551},{"className":2550},[],[2552],{"type":52,"value":2553},"needed_inputs",{"type":46,"tag":274,"props":2555,"children":2556},{},[2557],{"type":52,"value":2558},"Required when no grasp line is authored.",{"type":46,"tag":252,"props":2560,"children":2561},{},[2562,2570],{"type":46,"tag":274,"props":2563,"children":2564},{},[2565],{"type":46,"tag":68,"props":2566,"children":2568},{"className":2567},[],[2569],{"type":52,"value":382},{"type":46,"tag":274,"props":2571,"children":2572},{},[2573],{"type":52,"value":2574},"Path to the rerun validation report.",{"type":46,"tag":252,"props":2576,"children":2577},{},[2578,2587],{"type":46,"tag":274,"props":2579,"children":2580},{},[2581],{"type":46,"tag":68,"props":2582,"children":2584},{"className":2583},[],[2585],{"type":52,"value":2586},"next_step",{"type":46,"tag":274,"props":2588,"children":2589},{},[2590],{"type":52,"value":2591},"Usually rerun the selected full profile or address the next failing feature.",{"type":46,"tag":62,"props":2593,"children":2594},{},[2595],{"type":52,"value":2596},"Keep the user-facing summary short: what visual evidence was used, where the grasp line was placed, why that region was chosen, and what validation reported.",{"type":46,"tag":2598,"props":2599,"children":2600},"style",{},[2601],{"type":52,"value":2602},"html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"items":2604,"total":2688},[2605,2617,2630,2640,2653,2664,2677],{"slug":2606,"name":2606,"fn":2607,"description":2608,"org":2609,"tags":2610,"stars":23,"repoUrl":24,"updatedAt":2616},"simready-foundation-add-capability","add SimReady capability documentation","Add SimReady capability docs, requirement indexes, validation stubs, and registrations for new requirement families.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[2611,2614,2615],{"name":2612,"slug":2613,"type":13},"Documentation","documentation",{"name":9,"slug":8,"type":13},{"name":15,"slug":16,"type":13},"2026-07-14T05:34:08.047242",{"slug":2618,"name":2618,"fn":2619,"description":2620,"org":2621,"tags":2622,"stars":23,"repoUrl":24,"updatedAt":2629},"simready-foundation-add-feature","add SimReady features and documentation","Use for adding SimReady feature docs, manifests, requirement mappings, validation strategy, and index entries.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[2623,2624,2627,2628],{"name":2612,"slug":2613,"type":13},{"name":2625,"slug":2626,"type":13},"Engineering","engineering",{"name":9,"slug":8,"type":13},{"name":15,"slug":16,"type":13},"2026-07-14T05:34:23.330216",{"slug":2631,"name":2631,"fn":2632,"description":2633,"org":2634,"tags":2635,"stars":23,"repoUrl":24,"updatedAt":2639},"simready-foundation-add-feature-adapter","mutate USD assets with feature adapters","Use for adding SimReady feature adapters that mutate USD assets between exact feature or profile versions.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[2636,2637,2638],{"name":2625,"slug":2626,"type":13},{"name":9,"slug":8,"type":13},{"name":15,"slug":16,"type":13},"2026-07-14T05:34:02.999518",{"slug":2641,"name":2641,"fn":2642,"description":2643,"org":2644,"tags":2645,"stars":23,"repoUrl":24,"updatedAt":2652},"simready-foundation-add-profile","add SimReady profile versions","Use for adding SimReady profile versions with feature bundles, docs, indexes, and validation notes.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[2646,2647,2648,2649],{"name":2612,"slug":2613,"type":13},{"name":9,"slug":8,"type":13},{"name":15,"slug":16,"type":13},{"name":2650,"slug":2651,"type":13},"Validation","validation","2026-07-14T05:34:00.482781",{"slug":2654,"name":2654,"fn":2655,"description":2656,"org":2657,"tags":2658,"stars":23,"repoUrl":24,"updatedAt":2663},"simready-foundation-add-requirement","add atomic SimReady requirements","Use for adding atomic SimReady requirements with stable IDs, docs, examples, indexes, and validator follow-up.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[2659,2660,2661,2662],{"name":2612,"slug":2613,"type":13},{"name":9,"slug":8,"type":13},{"name":15,"slug":16,"type":13},{"name":2650,"slug":2651,"type":13},"2026-07-14T05:34:11.881936",{"slug":2665,"name":2665,"fn":2666,"description":2667,"org":2668,"tags":2669,"stars":23,"repoUrl":24,"updatedAt":2676},"simready-foundation-add-runtime-test","add SimReady runtime tests","Use for adding SimReady runtime tests, runner expectations, batch\u002Fjob\u002Freport notes, and validation evidence.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[2670,2671,2672,2675],{"name":9,"slug":8,"type":13},{"name":15,"slug":16,"type":13},{"name":2673,"slug":2674,"type":13},"Testing","testing",{"name":2650,"slug":2651,"type":13},"2026-07-14T05:34:09.295859",{"slug":2678,"name":2678,"fn":2679,"description":2680,"org":2681,"tags":2682,"stars":23,"repoUrl":24,"updatedAt":2687},"simready-foundation-add-validator","add executable SimReady validators","Use for adding executable SimReady validators that report requirement IDs with focused pass\u002Ffail coverage.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[2683,2684,2685,2686],{"name":2625,"slug":2626,"type":13},{"name":9,"slug":8,"type":13},{"name":15,"slug":16,"type":13},{"name":2650,"slug":2651,"type":13},"2026-07-14T05:34:14.407249",26,{"items":2690,"total":2842},[2691,2707,2724,2735,2747,2759,2772,2786,2797,2808,2822,2831],{"slug":2692,"name":2692,"fn":2693,"description":2694,"org":2695,"tags":2696,"stars":2704,"repoUrl":2705,"updatedAt":2706},"nemoclaw-user-guide","retrieve NemoClaw documentation and configuration","Guides human users' AI agents to the NemoClaw docs MCP server and canonical Fern documentation in Markdown form. Use when users ask how to install, configure, operate, troubleshoot, secure, or learn NemoClaw with an AI coding assistant. Trigger keywords - nemoclaw docs, use nemoclaw with ai agent, nemoclaw mcp docs, nemoclaw install help, nemoclaw quickstart, nemoclaw markdown docs, llms.txt, agent skills.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[2697,2698,2701],{"name":2612,"slug":2613,"type":13},{"name":2699,"slug":2700,"type":13},"MCP","mcp",{"name":2702,"slug":2703,"type":13},"Search","search",21777,"https:\u002F\u002Fgithub.com\u002FNVIDIA\u002FNemoClaw","2026-07-20T06:00:01.461044",{"slug":2708,"name":2708,"fn":2709,"description":2710,"org":2711,"tags":2712,"stars":2721,"repoUrl":2722,"updatedAt":2723},"mcore-build-and-dependency","manage Megatron-LM development environments","Container-based dev environment setup and dependency management for Megatron-LM. Covers acquiring and launching the CI container, uv package management, and updating uv.lock.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[2713,2716,2719],{"name":2714,"slug":2715,"type":13},"Containers","containers",{"name":2717,"slug":2718,"type":13},"Deployment","deployment",{"name":2720,"slug":1087,"type":13},"Python",17049,"https:\u002F\u002Fgithub.com\u002FNVIDIA\u002FMegatron-LM","2026-07-27T06:06:11.249662",{"slug":2725,"name":2725,"fn":2726,"description":2727,"org":2728,"tags":2729,"stars":2721,"repoUrl":2722,"updatedAt":2734},"mcore-bump-base-image","update NVIDIA PyTorch base images","Bump the NVIDIA PyTorch base image (`nvcr.io\u002Fnvidia\u002Fpytorch:YY.MM-py3`) used by Megatron-LM CI. Covers the two pin sites (GitHub CI in `docker\u002F.ngc_version.dev` and GitLab CI in `.gitlab\u002Fstages\u002F01.build.yml`), the post-bump CI loop (re-run functional tests, refresh golden values, mark broken tests), and the gotchas that bit PRs",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[2730,2733],{"name":2731,"slug":2732,"type":13},"CI\u002FCD","ci-cd",{"name":2717,"slug":2718,"type":13},"2026-07-14T05:25:59.97109",{"slug":2736,"name":2736,"fn":2737,"description":2738,"org":2739,"tags":2740,"stars":2721,"repoUrl":2722,"updatedAt":2746},"mcore-cicd","manage CI\u002FCD pipelines for Megatron-LM","CI\u002FCD reference for Megatron-LM. Covers CI pipeline structure, PR scope labels, triggering internal GitLab CI (which force-pushes the current branch to a pull-request\u002FBRANCH ref — always dry-run and verify the destination first; never run against shared or protected branches), and CI failure investigation.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[2741,2742,2743],{"name":2731,"slug":2732,"type":13},{"name":2717,"slug":2718,"type":13},{"name":2744,"slug":2745,"type":13},"GitHub","github","2026-07-27T06:06:12.278222",{"slug":2748,"name":2748,"fn":2749,"description":2750,"org":2751,"tags":2752,"stars":2721,"repoUrl":2722,"updatedAt":2758},"mcore-create-issue","investigate CI failures and create issues","Investigate a failing GitHub Actions run or job and create a GitHub issue for the failure.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[2753,2754,2755],{"name":21,"slug":22,"type":13},{"name":2744,"slug":2745,"type":13},{"name":2756,"slug":2757,"type":13},"Triage","triage","2026-07-14T05:25:57.442089",{"slug":2760,"name":2760,"fn":2761,"description":2762,"org":2763,"tags":2764,"stars":2721,"repoUrl":2722,"updatedAt":2771},"mcore-linting-and-formatting","lint and format Megatron-LM code","Linting and formatting for Megatron-LM. Covers running autoformat.sh, tools (ruff, black, isort, pylint, mypy), and code style rules.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[2765,2768],{"name":2766,"slug":2767,"type":13},"Best Practices","best-practices",{"name":2769,"slug":2770,"type":13},"Code Analysis","code-analysis","2026-07-14T05:25:56.18433",{"slug":2773,"name":2773,"fn":2774,"description":2775,"org":2776,"tags":2777,"stars":2721,"repoUrl":2722,"updatedAt":2785},"mcore-migrate-gpt-to-hybrid","migrate Megatron-LM models to HybridModel","Migration guide for moving Megatron Core GPTModel checkpoints, model providers, training commands, and layer mappings to HybridModel.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[2778,2781,2784],{"name":2779,"slug":2780,"type":13},"Machine Learning","machine-learning",{"name":2782,"slug":2783,"type":13},"Migration","migration",{"name":9,"slug":8,"type":13},"2026-07-17T06:07:11.777011",{"slug":2787,"name":2787,"fn":2788,"description":2789,"org":2790,"tags":2791,"stars":2721,"repoUrl":2722,"updatedAt":2796},"mcore-onboard-gb200-1node-tests","onboard functional tests for GB200","Onboard 1-node GitHub MR functional tests for GB200 from existing mr-scoped 2-node tests.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[2792,2795],{"name":2793,"slug":2794,"type":13},"QA","qa",{"name":2673,"slug":2674,"type":13},"2026-07-14T05:25:53.673039",{"slug":2798,"name":2798,"fn":2799,"description":2800,"org":2801,"tags":2802,"stars":2721,"repoUrl":2722,"updatedAt":2807},"mcore-run-on-slurm","launch distributed training jobs on SLURM","How to launch distributed Megatron-LM training jobs on a SLURM cluster. Covers a minimal sbatch skeleton, environment-variable setup for torch.distributed.run, CUDA_DEVICE_MAX_CONNECTIONS rules across hardware and parallelism modes, container conventions, monitoring, and per-rank failure diagnosis.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[2803,2804],{"name":2717,"slug":2718,"type":13},{"name":2805,"slug":2806,"type":13},"Infrastructure","infrastructure","2026-07-14T05:25:49.362534",{"slug":2809,"name":2809,"fn":2810,"description":2811,"org":2812,"tags":2813,"stars":2721,"repoUrl":2722,"updatedAt":2821},"mcore-split-pr","split pull requests to reduce review load","Split a PR into multiple PRs to reduce the number of required CODEOWNERS reviewer groups.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[2814,2817,2818],{"name":2815,"slug":2816,"type":13},"Code Review","code-review",{"name":2744,"slug":2745,"type":13},{"name":2819,"slug":2820,"type":13},"Pull Requests","pull-requests","2026-07-14T05:26:01.226578",{"slug":2823,"name":2823,"fn":2824,"description":2825,"org":2826,"tags":2827,"stars":2721,"repoUrl":2722,"updatedAt":2830},"mcore-testing","run and manage Megatron-LM tests","Test system for Megatron-LM. Covers test layout, recipe YAML structure, adding and running unit and functional tests, golden values, marker filters, and CI parity.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[2828,2829],{"name":2793,"slug":2794,"type":13},{"name":2673,"slug":2674,"type":13},"2026-07-14T05:25:54.928983",{"slug":2832,"name":2832,"fn":2833,"description":2834,"org":2835,"tags":2836,"stars":2721,"repoUrl":2722,"updatedAt":2841},"nightly-sync","manage nightly main-to-dev sync workflows","Domain knowledge for the nightly main-to-dev sync workflow. Covers merge strategy, CI architecture, failure investigation, and known issues.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[2837,2840],{"name":2838,"slug":2839,"type":13},"Automation","automation",{"name":2731,"slug":2732,"type":13},"2026-07-30T05:29:03.275638",496]