[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M71PVMJ4ESRVCK2GZEN32QM4":3,"skill-same:01M71PVMJ4ESRVCK2GZEN32QM4":109},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":16,"categories":17,"keywords":23,"publishedAt":44,"linkOnly":45,"markdownContent":46,"markdownBody":47,"frontMatter":48,"refName":56,"commitSha":57,"skillDirectory":58,"forksCount":14,"repositoryHtmlUrl":59,"repositoryHomepageUrl":60,"ownerHtmlUrl":61,"ownerBlogUrl":6,"ownerDescription":6,"updatedAt":62,"install":63,"resources":76},"01M71PVMJ4ESRVCK2GZEN32QM4","tao-generate-referring-expressions",null,"Four-step image referring-expression pipeline: turns images plus KITTI bounding-box labels into region descriptions, scene captions, grounded referring expressions, and (optionally) verified expressions via VLM distillation. Use when the user wants to generate referring-expression annotations from images with KITTI labels, build region descriptions, produce grouped grounding phrases tied to bboxes, run a double-check verification pass on grounding expressions, auto-label traffic \u002F scene images for referring datasets, or run the image_referring_expression pipeline. Triggers include 'referring expression', 'region description', 'KITTI labels', 'spatial relationship annotation', 'auto-label image referring expression', 'image_referring_expression'.","pattanation\u002FNorvik","pattanation","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F235419268?v=4","01M71M5THHYYB15ME8R2E4FCZG","Patta","01M71M5TJM1NDM992M8PDKYR2K",0,"Apache-2.0","https:\u002F\u002Fgithub.com\u002Fpattanation\u002FNorvik\u002Fblob\u002Fclaude\u002Finstall-gsd-build-foQdV\u002F.agents\u002Fskills\u002Ftao-generate-referring-expressions\u002FSKILL.md",[18],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000016","图像与多媒体","SCENARIO","使用场景",[24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43],"generate","tao generate referring expressions","tao","when","image","kitti","referring-expression","auto-label","bounding-boxes","labels","traffic","expression","relationship","images","auto","Bash","Captions","api","pipeline","verification","2026-11-10 13:02:02",false,"---\nname: tao-generate-referring-expressions\ndescription: \"Four-step image referring-expression pipeline: turns images plus KITTI bounding-box labels into region\n  descriptions, scene captions, grounded referring expressions, and (optionally) verified expressions via VLM distillation. Use\n  when the user wants to generate referring-expression annotations from images with KITTI labels, build region descriptions,\n  produce grouped grounding phrases tied to bboxes, run a double-check verification pass on grounding expressions, auto-label\n  traffic \u002F scene images for referring datasets, or run the image_referring_expression pipeline. Triggers include 'referring\n  expression', 'region description', 'KITTI labels', 'spatial relationship annotation', 'auto-label image referring expression',\n  'image_referring_expression'.\"\nlicense: Apache-2.0\ncompatibility: Requires docker + nvidia-container-toolkit + at least one VLM endpoint (Gemini API key or OpenAI-compatible).\nmetadata:\n  author: NVIDIA Corporation\n  version: \"0.1.0\"\ntags:\n  - image\n  - referring-expression\n  - kitti\n  - bounding-boxes\n  - auto-label\n  - vlm\nallowed-tools: Read Bash Write\n---\n\n# Image Referring Expression Pipeline\n\nGenerate referring-expression and grounding annotations from images with KITTI-format bounding box labels. A single VLM (Gemini or any OpenAI-compatible endpoint) runs four steps: per-object region descriptions, holistic image captions, grouped grounding expressions tied to bboxes, and an optional double-check verification pass.\n\n## Purpose\n\nTransform `(image, KITTI labels)` pairs into a unified `annotations.jsonl` containing rich, grounded referring expressions. The VLM acts as a \"teacher\" annotator: Steps 0-1 see the image; Step 2 groups Step 0 outputs into grouping phrases with bbox lists; Step 3 (optional) re-examines those bboxes against the image and corrects mismatches.\n\n## Pipeline Architecture\n\n```\nStep 0: Region expression  ──┐\n                              ├──▶  Step 2: Grounding expression  ──▶  [Step 3: Double check]\nStep 1: Image caption  ──────┘                                                   (optional)\n```\n\n- **Step 0 (region_expr)** — VLM emits one short discriminative phrase per KITTI bbox (`bbox_2d`, `type`, `color`, `description`).\n- **Step 1 (image_caption)** — VLM emits a holistic, location-agnostic scene caption.\n- **Step 2 (grounding_expr)** — VLM groups Step 0 objects into grouping phrases and returns one bbox list per group, optionally using Step 1's caption as extra context.\n- **Step 3 (double_check)** — VLM re-checks each Step 2 bbox against the image; bad matches are removed, slightly-off boxes get tightened.\n\nSteps 0 and 1 run in parallel within a single thread pool (they only depend on the seed records). Each step writes its own `step_\u003CN>_*\u002Fannotations.jsonl` and skips already-processed images on re-run unless `workflow.force_reprocess: true`.\n\n## Instructions\n\n### Initial setup\n\nWhen a user wants to run this pipeline, walk through these steps:\n\n1. **Images**: Ask for `data.image_dir`, the directory containing `.jpg`, `.jpeg`, or `.png` images.\n2. **KITTI labels**: Ask for `data.kitti_label_dir`, the directory containing one `.txt` label file per image. Each label line must use KITTI format: `\u003Ctype> \u003Ctruncated> \u003Coccluded> \u003Calpha> \u003Cbbox_left> \u003Cbbox_top> \u003Cbbox_right> \u003Cbbox_bottom> ...`. Lines with fewer than 8 fields are silently skipped. Set this even for Step 1-only runs because Steps 0 and 2 require it.\n3. **Resume from existing annotations**: If the user already has a unified `annotations.jsonl` from a previous run, set `data.input_annotations_jsonl` to that file instead of seeding from `data.image_dir` and `data.kitti_label_dir`.\n4. **API access**: Ask the user which VLM endpoint they want to use. Present these five options and act on the choice:\n   1. **Gemini** — set `vlm.backend: \"gemini\"`; require `GOOGLE_API_KEY` (env var or `vlm.gemini.api_key`).\n   2. **NIM** (e.g. `https:\u002F\u002Finference-api.nvidia.com\u002Fv1`) — set `vlm.backend: \"openai\"`; collect `base_url`, `model_name`, and `api_key`.\n   3. **TAO inference microservice** (self-hosted, OpenAI-compatible). Confirm whether the server is already running:\n      - **Running** — collect `base_url`, `model_name`, and (optionally) `api_key`; set `vlm.backend: \"openai\"`.\n      - **Not running** — guide the user through the `skills\u002Fapplications\u002Ftao-run-inference-service` skill, which stands up a local TAO inference microservice with an OpenAI-compatible API. Before promising a specific model, check `skills\u002Fapplications\u002Ftao-run-inference-service\u002Freferences\u002Fservice.yaml` for `valid_network_arch_config_basenames`. Once the server is up, collect `base_url`, `model_name`, and (optionally) `api_key`; set `vlm.backend: \"openai\"`.\n   4. **vLLM** (self-hosted, OpenAI-compatible). Confirm whether the server is already running:\n      - **Running** — collect `base_url`, `model_name`, and (optionally) `api_key`; set `vlm.backend: \"openai\"`.\n      - **Not running** — follow [references\u002Fvllm_server.md](references\u002Fvllm_server.md) to install and launch a vLLM server, then collect `base_url`, `model_name`, and (optionally) `api_key`; set `vlm.backend: \"openai\"`.\n   5. **Custom** (any other OpenAI-compatible endpoint) — set `vlm.backend: \"openai\"`; collect `base_url`, `model_name`, and (optionally) `api_key`.\n\n   If the user has no endpoint and does not want to set one up, stop and help resolve API access first.\n5. **Workflow steps**: Choose one of:\n   - Full pipeline: `[\"0\", \"1\", \"2\", \"3\"]`\n   - No caption generation: `[\"0\", \"2\", \"3\"]`, where Step 2 falls back to image-only context\n   - No verification: `[\"0\", \"1\", \"2\"]`\n   - Custom subset: any supported subset of steps\n6. **Output format**: Choose one of:\n   - `jsonl`: unified schema only\n   - `legacy`: byte-compatible `.txt.stepN` files only\n   - `both`: writes both formats and is the default for downstream tooling\n\n### Running the pipeline\n\nThe pipeline runs inside the TAO Toolkit container via the `auto_label` CLI:\n\n```bash\nauto_label generate -e \u002Fpath\u002Fto\u002Fspec.yaml \\\n    results_dir=\u002Fresults \\\n    image_referring_expression.data.image_dir=\u002Fdata\u002Fimages \\\n    image_referring_expression.data.kitti_label_dir=\u002Fdata\u002Flabels \\\n    image_referring_expression.vlm.gemini.api_key=$GOOGLE_API_KEY\n```\n\nGenerate a default spec: `auto_label default_specs results_dir=\u002Fresults module_name=auto_label`, then set `autolabel_type: \"image_referring_expression\"`. All fields support Hydra dot-notation overrides on the command line.\n\nSee [references\u002Fconfiguration.md](references\u002Fconfiguration.md) for the full YAML structure, all parameters, model\u002Fendpoint setup, and error patterns.\n\n### Recommended pilot workflow\n\n1. Run on 5-10 images with all four steps.\n2. Inspect `step_0_region_expr\u002Fannotations.jsonl` — are object types, colors, and discriminating phrases accurate?\n3. Inspect `step_2_grounding_expr\u002Fannotations.jsonl` — are objects grouped sensibly, and do bbox coordinates match the described groups?\n4. Inspect `step_3_double_check\u002Fannotations.jsonl` — were mismatched bboxes removed or tightened? Are any new errors introduced (rare)?\n5. If quality is insufficient, switch the VLM to a stronger model (e.g. `gemini-2.5-pro` or a larger Qwen3-VL endpoint), raise `media_resolution` \u002F `max_output_tokens`, then re-run with `workflow.force_reprocess=true`.\n6. Scale to the full dataset once satisfied.\n\n## Configuration\n\nKey configuration fields (full reference in [references\u002Fconfiguration.md](references\u002Fconfiguration.md)):\n\n| Field | Default | Description |\n|-------|---------|-------------|\n| `workflow.steps` | `[\"0\",\"1\",\"2\",\"3\"]` | Which steps to execute (`0`=region_expr, `1`=image_caption, `2`=grounding_expr, `3`=double_check) |\n| `workflow.max_workers` | `4` | Parallel threads per step (watch API rate limits) |\n| `workflow.force_reprocess` | `false` | Ignore cached per-step outputs and reprocess from scratch |\n| `workflow.output_format` | `\"jsonl\"` (set to `\"both\"` in the default spec) | `\"jsonl\"`, `\"legacy\"`, or `\"both\"` |\n| `vlm.backend` | `\"gemini\"` | `\"gemini\"` or `\"openai\"` (OpenAI-compatible endpoint) |\n| `data.image_dir` | required | Directory of input images (`.jpg` \u002F `.jpeg` \u002F `.png`) |\n| `data.kitti_label_dir` | required (unless resuming) | Directory of KITTI-format `.txt` label files |\n| `data.input_annotations_jsonl` | `\"\"` | Optional pre-seeded `annotations.jsonl` (skips KITTI seeding) |\n\n## Inputs\n\nTwo ways to seed the pipeline:\n\n1. **Image directory + KITTI labels** (default). Set `data.image_dir` and `data.kitti_label_dir`. The orchestrator walks the image directory, reads the matching `\u003Cstem>.txt` KITTI file, parses bboxes (fields 0 + 4-7), reads each image's `width`\u002F`height` via PIL, and writes a `seed_annotations.jsonl` to `results_dir\u002F`.\n2. **Pre-seeded annotations JSONL** (resume \u002F pre-computed regions). Set `data.input_annotations_jsonl` to a file with one `{\"image_id\", \"image_path\", \"width\", \"height\", \"kitti_bboxes\": [...]}` object per line.\n\n## Outputs\n\nAll outputs go to `results_dir\u002F`:\n\n- `seed_annotations.jsonl` — initial per-image records (unless `input_annotations_jsonl` was supplied).\n- `step_0_region_expr\u002Fannotations.jsonl` — adds `regions[]` (each with `bbox`\u002F`bbox_2d`, `type`, `color`, `description`).\n- `step_1_image_caption\u002Fannotations.jsonl` — adds `caption` (string).\n- `step_2_grounding_expr\u002Fannotations.jsonl` — adds `expressions[]` (each `{text, instances: [{bbox: [x1,y1,x2,y2]}]}`).\n- `step_3_double_check\u002Fannotations.jsonl` — same shape as Step 2, with bboxes removed\u002Fupdated.\n- `results_dir\u002Fannotations.jsonl` — copy of the last completed step's output.\n- When `workflow.output_format` is `\"legacy\"` or `\"both\"`, each step also writes byte-compatible `step_\u003CN>_*\u002Flabels\u002F\u003Cstem>.txt.stepN` files for the original 2d-data-engine tooling.\n\n## Prerequisites\n\n- **Container**: `nvcr.io\u002Fnvidia\u002Ftao\u002Ftao-toolkit:6.26.3-pyt`\n- **API access**: At least one VLM endpoint (Gemini API key or OpenAI-compatible endpoint capable of image input)\n- **PIL \u002F Pillow**: Required to read image dimensions during seeding (already present in the TAO container)\n","# Image Referring Expression Pipeline\n\nGenerate referring-expression and grounding annotations from images with KITTI-format bounding box labels. A single VLM (Gemini or any OpenAI-compatible endpoint) runs four steps: per-object region descriptions, holistic image captions, grouped grounding expressions tied to bboxes, and an optional double-check verification pass.\n\n## Purpose\n\nTransform `(image, KITTI labels)` pairs into a unified `annotations.jsonl` containing rich, grounded referring expressions. The VLM acts as a \"teacher\" annotator: Steps 0-1 see the image; Step 2 groups Step 0 outputs into grouping phrases with bbox lists; Step 3 (optional) re-examines those bboxes against the image and corrects mismatches.\n\n## Pipeline Architecture\n\n```\nStep 0: Region expression  ──┐\n                              ├──▶  Step 2: Grounding expression  ──▶  [Step 3: Double check]\nStep 1: Image caption  ──────┘                                                   (optional)\n```\n\n- **Step 0 (region_expr)** — VLM emits one short discriminative phrase per KITTI bbox (`bbox_2d`, `type`, `color`, `description`).\n- **Step 1 (image_caption)** — VLM emits a holistic, location-agnostic scene caption.\n- **Step 2 (grounding_expr)** — VLM groups Step 0 objects into grouping phrases and returns one bbox list per group, optionally using Step 1's caption as extra context.\n- **Step 3 (double_check)** — VLM re-checks each Step 2 bbox against the image; bad matches are removed, slightly-off boxes get tightened.\n\nSteps 0 and 1 run in parallel within a single thread pool (they only depend on the seed records). Each step writes its own `step_\u003CN>_*\u002Fannotations.jsonl` and skips already-processed images on re-run unless `workflow.force_reprocess: true`.\n\n## Instructions\n\n### Initial setup\n\nWhen a user wants to run this pipeline, walk through these steps:\n\n1. **Images**: Ask for `data.image_dir`, the directory containing `.jpg`, `.jpeg`, or `.png` images.\n2. **KITTI labels**: Ask for `data.kitti_label_dir`, the directory containing one `.txt` label file per image. Each label line must use KITTI format: `\u003Ctype> \u003Ctruncated> \u003Coccluded> \u003Calpha> \u003Cbbox_left> \u003Cbbox_top> \u003Cbbox_right> \u003Cbbox_bottom> ...`. Lines with fewer than 8 fields are silently skipped. Set this even for Step 1-only runs because Steps 0 and 2 require it.\n3. **Resume from existing annotations**: If the user already has a unified `annotations.jsonl` from a previous run, set `data.input_annotations_jsonl` to that file instead of seeding from `data.image_dir` and `data.kitti_label_dir`.\n4. **API access**: Ask the user which VLM endpoint they want to use. Present these five options and act on the choice:\n   1. **Gemini** — set `vlm.backend: \"gemini\"`; require `GOOGLE_API_KEY` (env var or `vlm.gemini.api_key`).\n   2. **NIM** (e.g. `https:\u002F\u002Finference-api.nvidia.com\u002Fv1`) — set `vlm.backend: \"openai\"`; collect `base_url`, `model_name`, and `api_key`.\n   3. **TAO inference microservice** (self-hosted, OpenAI-compatible). Confirm whether the server is already running:\n      - **Running** — collect `base_url`, `model_name`, and (optionally) `api_key`; set `vlm.backend: \"openai\"`.\n      - **Not running** — guide the user through the `skills\u002Fapplications\u002Ftao-run-inference-service` skill, which stands up a local TAO inference microservice with an OpenAI-compatible API. Before promising a specific model, check `skills\u002Fapplications\u002Ftao-run-inference-service\u002Freferences\u002Fservice.yaml` for `valid_network_arch_config_basenames`. Once the server is up, collect `base_url`, `model_name`, and (optionally) `api_key`; set `vlm.backend: \"openai\"`.\n   4. **vLLM** (self-hosted, OpenAI-compatible). Confirm whether the server is already running:\n      - **Running** — collect `base_url`, `model_name`, and (optionally) `api_key`; set `vlm.backend: \"openai\"`.\n      - **Not running** — follow [references\u002Fvllm_server.md](references\u002Fvllm_server.md) to install and launch a vLLM server, then collect `base_url`, `model_name`, and (optionally) `api_key`; set `vlm.backend: \"openai\"`.\n   5. **Custom** (any other OpenAI-compatible endpoint) — set `vlm.backend: \"openai\"`; collect `base_url`, `model_name`, and (optionally) `api_key`.\n\n   If the user has no endpoint and does not want to set one up, stop and help resolve API access first.\n5. **Workflow steps**: Choose one of:\n   - Full pipeline: `[\"0\", \"1\", \"2\", \"3\"]`\n   - No caption generation: `[\"0\", \"2\", \"3\"]`, where Step 2 falls back to image-only context\n   - No verification: `[\"0\", \"1\", \"2\"]`\n   - Custom subset: any supported subset of steps\n6. **Output format**: Choose one of:\n   - `jsonl`: unified schema only\n   - `legacy`: byte-compatible `.txt.stepN` files only\n   - `both`: writes both formats and is the default for downstream tooling\n\n### Running the pipeline\n\nThe pipeline runs inside the TAO Toolkit container via the `auto_label` CLI:\n\n```bash\nauto_label generate -e \u002Fpath\u002Fto\u002Fspec.yaml \\\n    results_dir=\u002Fresults \\\n    image_referring_expression.data.image_dir=\u002Fdata\u002Fimages \\\n    image_referring_expression.data.kitti_label_dir=\u002Fdata\u002Flabels \\\n    image_referring_expression.vlm.gemini.api_key=$GOOGLE_API_KEY\n```\n\nGenerate a default spec: `auto_label default_specs results_dir=\u002Fresults module_name=auto_label`, then set `autolabel_type: \"image_referring_expression\"`. All fields support Hydra dot-notation overrides on the command line.\n\nSee [references\u002Fconfiguration.md](references\u002Fconfiguration.md) for the full YAML structure, all parameters, model\u002Fendpoint setup, and error patterns.\n\n### Recommended pilot workflow\n\n1. Run on 5-10 images with all four steps.\n2. Inspect `step_0_region_expr\u002Fannotations.jsonl` — are object types, colors, and discriminating phrases accurate?\n3. Inspect `step_2_grounding_expr\u002Fannotations.jsonl` — are objects grouped sensibly, and do bbox coordinates match the described groups?\n4. Inspect `step_3_double_check\u002Fannotations.jsonl` — were mismatched bboxes removed or tightened? Are any new errors introduced (rare)?\n5. If quality is insufficient, switch the VLM to a stronger model (e.g. `gemini-2.5-pro` or a larger Qwen3-VL endpoint), raise `media_resolution` \u002F `max_output_tokens`, then re-run with `workflow.force_reprocess=true`.\n6. Scale to the full dataset once satisfied.\n\n## Configuration\n\nKey configuration fields (full reference in [references\u002Fconfiguration.md](references\u002Fconfiguration.md)):\n\n| Field | Default | Description |\n|-------|---------|-------------|\n| `workflow.steps` | `[\"0\",\"1\",\"2\",\"3\"]` | Which steps to execute (`0`=region_expr, `1`=image_caption, `2`=grounding_expr, `3`=double_check) |\n| `workflow.max_workers` | `4` | Parallel threads per step (watch API rate limits) |\n| `workflow.force_reprocess` | `false` | Ignore cached per-step outputs and reprocess from scratch |\n| `workflow.output_format` | `\"jsonl\"` (set to `\"both\"` in the default spec) | `\"jsonl\"`, `\"legacy\"`, or `\"both\"` |\n| `vlm.backend` | `\"gemini\"` | `\"gemini\"` or `\"openai\"` (OpenAI-compatible endpoint) |\n| `data.image_dir` | required | Directory of input images (`.jpg` \u002F `.jpeg` \u002F `.png`) |\n| `data.kitti_label_dir` | required (unless resuming) | Directory of KITTI-format `.txt` label files |\n| `data.input_annotations_jsonl` | `\"\"` | Optional pre-seeded `annotations.jsonl` (skips KITTI seeding) |\n\n## Inputs\n\nTwo ways to seed the pipeline:\n\n1. **Image directory + KITTI labels** (default). Set `data.image_dir` and `data.kitti_label_dir`. The orchestrator walks the image directory, reads the matching `\u003Cstem>.txt` KITTI file, parses bboxes (fields 0 + 4-7), reads each image's `width`\u002F`height` via PIL, and writes a `seed_annotations.jsonl` to `results_dir\u002F`.\n2. **Pre-seeded annotations JSONL** (resume \u002F pre-computed regions). Set `data.input_annotations_jsonl` to a file with one `{\"image_id\", \"image_path\", \"width\", \"height\", \"kitti_bboxes\": [...]}` object per line.\n\n## Outputs\n\nAll outputs go to `results_dir\u002F`:\n\n- `seed_annotations.jsonl` — initial per-image records (unless `input_annotations_jsonl` was supplied).\n- `step_0_region_expr\u002Fannotations.jsonl` — adds `regions[]` (each with `bbox`\u002F`bbox_2d`, `type`, `color`, `description`).\n- `step_1_image_caption\u002Fannotations.jsonl` — adds `caption` (string).\n- `step_2_grounding_expr\u002Fannotations.jsonl` — adds `expressions[]` (each `{text, instances: [{bbox: [x1,y1,x2,y2]}]}`).\n- `step_3_double_check\u002Fannotations.jsonl` — same shape as Step 2, with bboxes removed\u002Fupdated.\n- `results_dir\u002Fannotations.jsonl` — copy of the last completed step's output.\n- When `workflow.output_format` is `\"legacy\"` or `\"both\"`, each step also writes byte-compatible `step_\u003CN>_*\u002Flabels\u002F\u003Cstem>.txt.stepN` files for the original 2d-data-engine tooling.\n\n## Prerequisites\n\n- **Container**: `nvcr.io\u002Fnvidia\u002Ftao\u002Ftao-toolkit:6.26.3-pyt`\n- **API access**: At least one VLM endpoint (Gemini API key or OpenAI-compatible endpoint capable of image input)\n- **PIL \u002F Pillow**: Required to read image dimensions during seeding (already present in the TAO container)\n",{"name":5,"tags":49,"license":15,"metadata":51,"description":7,"allowed-tools":54,"compatibility":55},[28,30,29,32,31,50],"vlm",{"author":52,"version":53},"NVIDIA Corporation","0.1.0","Read Bash Write","Requires docker + nvidia-container-toolkit + at least one VLM endpoint (Gemini API key or OpenAI-compatible).","claude\u002Finstall-gsd-build-foQdV","d86cd127f527124b5fd0fd0bc679a4d79b7d01d7",".agents\u002Fskills\u002Ftao-generate-referring-expressions","https:\u002F\u002Fgithub.com\u002Fpattanation\u002FNorvik","https:\u002F\u002Fnorvik-orpin.vercel.app","https:\u002F\u002Fgithub.com\u002Fpattanation","2026-07-17 11:17:04",{"source":8,"skillName":5,"commands":64,"prompt":74,"zipAvailable":75},[65,68,71],{"tool":66,"command":67},"npx","npx skills add pattanation\u002FNorvik --skill tao-generate-referring-expressions",{"tool":69,"command":70},"bunx","bunx skills add pattanation\u002FNorvik --skill tao-generate-referring-expressions",{"tool":72,"command":73},"pnpm","pnpm dlx skills add pattanation\u002FNorvik --skill tao-generate-referring-expressions","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fpattanation\u002FNorvik\u002Fblob\u002Fclaude\u002Finstall-gsd-build-foQdV\u002F.agents\u002Fskills\u002Ftao-generate-referring-expressions\u002FSKILL.md",true,[77,83,87,91,95,99,103],{"path":78,"resourceType":79,"resourceTypeDesc":80,"sizeBytes":81,"sourceHtmlUrl":82},"BENCHMARK.md","REFERENCE","参考文档",3893,"https:\u002F\u002Fgithub.com\u002Fpattanation\u002FNorvik\u002Fblob\u002Fclaude\u002Finstall-gsd-build-foQdV\u002F.agents\u002Fskills\u002Ftao-generate-referring-expressions\u002FBENCHMARK.md",{"path":84,"resourceType":79,"resourceTypeDesc":80,"sizeBytes":85,"sourceHtmlUrl":86},"evals\u002Fevals.json",849,"https:\u002F\u002Fgithub.com\u002Fpattanation\u002FNorvik\u002Fblob\u002Fclaude\u002Finstall-gsd-build-foQdV\u002F.agents\u002Fskills\u002Ftao-generate-referring-expressions\u002Fevals\u002Fevals.json",{"path":88,"resourceType":79,"resourceTypeDesc":80,"sizeBytes":89,"sourceHtmlUrl":90},"references\u002Fconfiguration.md",12993,"https:\u002F\u002Fgithub.com\u002Fpattanation\u002FNorvik\u002Fblob\u002Fclaude\u002Finstall-gsd-build-foQdV\u002F.agents\u002Fskills\u002Ftao-generate-referring-expressions\u002Freferences\u002Fconfiguration.md",{"path":92,"resourceType":79,"resourceTypeDesc":80,"sizeBytes":93,"sourceHtmlUrl":94},"references\u002Fskill_info.yaml",1439,"https:\u002F\u002Fgithub.com\u002Fpattanation\u002FNorvik\u002Fblob\u002Fclaude\u002Finstall-gsd-build-foQdV\u002F.agents\u002Fskills\u002Ftao-generate-referring-expressions\u002Freferences\u002Fskill_info.yaml",{"path":96,"resourceType":79,"resourceTypeDesc":80,"sizeBytes":97,"sourceHtmlUrl":98},"references\u002Fvllm_server.md",6869,"https:\u002F\u002Fgithub.com\u002Fpattanation\u002FNorvik\u002Fblob\u002Fclaude\u002Finstall-gsd-build-foQdV\u002F.agents\u002Fskills\u002Ftao-generate-referring-expressions\u002Freferences\u002Fvllm_server.md",{"path":100,"resourceType":79,"resourceTypeDesc":80,"sizeBytes":101,"sourceHtmlUrl":102},"skill-card.md",3901,"https:\u002F\u002Fgithub.com\u002Fpattanation\u002FNorvik\u002Fblob\u002Fclaude\u002Finstall-gsd-build-foQdV\u002F.agents\u002Fskills\u002Ftao-generate-referring-expressions\u002Fskill-card.md",{"path":104,"resourceType":105,"resourceTypeDesc":106,"sizeBytes":107,"sourceHtmlUrl":108},"skill.oms.sig","OTHER","其他",5329,"https:\u002F\u002Fgithub.com\u002Fpattanation\u002FNorvik\u002Fblob\u002Fclaude\u002Finstall-gsd-build-foQdV\u002F.agents\u002Fskills\u002Ftao-generate-referring-expressions\u002Fskill.oms.sig",[110,141,167,191,213,228],{"skillNo":111,"name":112,"nameZh":6,"description":113,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":114,"sourceHtmlUrl":115,"categories":116,"keywords":123,"publishedAt":44},"01M71QDV4DM8T19HEHWATEF1K4","webapp-testing","Toolkit for interacting with and testing local web applications using Playwright. Supports verifying frontend functionality, debugging UI behavior, capturing browser screenshots, and viewing browser logs.","https:\u002F\u002Fgithub.com\u002Fpattanation\u002FNorvik\u002Fblob\u002Fclaude\u002Finstall-gsd-build-foQdV\u002F.agents\u002Fskills\u002Fwebapp-testing\u002FLICENSE.txt","https:\u002F\u002Fgithub.com\u002Fpattanation\u002FNorvik\u002Fblob\u002Fclaude\u002Finstall-gsd-build-foQdV\u002F.agents\u002Fskills\u002Fwebapp-testing\u002FSKILL.md",[117,120],{"categoryNo":118,"categoryName":119,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000008","测试与质量",{"categoryNo":121,"categoryName":122,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000009","前端开发",[124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140],"webapp","testing","webapp testing","for","applications","local","frontend","debugging","toolkit","logs","browser","with","playwright","web","behavior","ui","screenshots",{"skillNo":142,"name":143,"nameZh":6,"description":144,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":145,"sourceHtmlUrl":146,"categories":147,"keywords":149,"publishedAt":44},"01M71QDH2GGMXGA9105C9W1N7B","web-artifacts-builder","Suite of tools for creating elaborate, multi-component claude.ai HTML artifacts using modern frontend web technologies (React, Tailwind CSS, shadcn\u002Fui). Use for complex artifacts requiring state management, routing, or shadcn\u002Fui components - not for simple single-file HTML\u002FJSX artifacts.","https:\u002F\u002Fgithub.com\u002Fpattanation\u002FNorvik\u002Fblob\u002Fclaude\u002Finstall-gsd-build-foQdV\u002F.agents\u002Fskills\u002Fweb-artifacts-builder\u002FLICENSE.txt","https:\u002F\u002Fgithub.com\u002Fpattanation\u002FNorvik\u002Fblob\u002Fclaude\u002Finstall-gsd-build-foQdV\u002F.agents\u002Fskills\u002Fweb-artifacts-builder\u002FSKILL.md",[148],{"categoryNo":121,"categoryName":122,"taxonomyType":21,"taxonomyTypeDesc":22},[150,151,152,137,153,154,155,127,156,157,130,158,159,160,161,162,163,164,165,166],"builder","artifacts builder","artifacts","web artifacts builder","single-file","css","Tailwind","ui components","single","use","file","components","react","multi","state","routing","state management",{"skillNo":168,"name":169,"nameZh":6,"description":170,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":171,"licenseFileUrl":172,"sourceHtmlUrl":173,"categories":174,"keywords":176,"publishedAt":44},"01M71QD9T2XC3EWMQNN9ACNWQ1","vueuse-functions","Apply VueUse composables where appropriate to build concise, maintainable Vue.js \u002F Nuxt features.","MIT","https:\u002F\u002Fgithub.com\u002Fpattanation\u002FNorvik\u002Fblob\u002Fclaude\u002Finstall-gsd-build-foQdV\u002F.agents\u002Fskills\u002Fvueuse-functions\u002FLICENSE.md","https:\u002F\u002Fgithub.com\u002Fpattanation\u002FNorvik\u002Fblob\u002Fclaude\u002Finstall-gsd-build-foQdV\u002F.agents\u002Fskills\u002Fvueuse-functions\u002FSKILL.md",[175],{"categoryNo":121,"categoryName":122,"taxonomyType":21,"taxonomyTypeDesc":22},[177,178,179,180,181,182,183,184,185,186,187,188,189,190],"functions","vueuse","vueuse functions","project","nuxt","apply","github","concise","build","https","features","vue","js","composables",{"skillNo":192,"name":193,"nameZh":6,"description":194,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":171,"licenseFileUrl":195,"sourceHtmlUrl":196,"categories":197,"keywords":200,"publishedAt":44},"01M71QD51HWSGYMCMB7RW7PGK8","vue-testing-best-practices","Use for Vue.js testing. Covers Vitest, Vue Test Utils, component testing, mocking, testing patterns, and Playwright for E2E testing.","https:\u002F\u002Fgithub.com\u002Fpattanation\u002FNorvik\u002Fblob\u002Fclaude\u002Finstall-gsd-build-foQdV\u002F.agents\u002Fskills\u002Fvue-testing-best-practices\u002FLICENSE.md","https:\u002F\u002Fgithub.com\u002Fpattanation\u002FNorvik\u002Fblob\u002Fclaude\u002Finstall-gsd-build-foQdV\u002F.agents\u002Fskills\u002Fvue-testing-best-practices\u002FSKILL.md",[198,199],{"categoryNo":118,"categoryName":119,"taxonomyType":21,"taxonomyTypeDesc":22},{"categoryNo":121,"categoryName":122,"taxonomyType":21,"taxonomyTypeDesc":22},[201,125,202,188,203,136,204,205,206,183,207,127,208,209,210,159,211,189,212],"vue testing best practices","testing best practices","best practices","test","testing patterns","component","vitest","mocking","e2e","utils","patterns","e2e testing",{"skillNo":214,"name":215,"nameZh":6,"description":216,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":171,"licenseFileUrl":217,"sourceHtmlUrl":218,"categories":219,"keywords":221,"publishedAt":44},"01M71QD358H2DJ9THJRBP77T3T","vue-router-best-practices","Vue Router 4 patterns, navigation guards, route params, and route-component lifecycle interactions.","https:\u002F\u002Fgithub.com\u002Fpattanation\u002FNorvik\u002Fblob\u002Fclaude\u002Finstall-gsd-build-foQdV\u002F.agents\u002Fskills\u002Fvue-router-best-practices\u002FLICENSE.md","https:\u002F\u002Fgithub.com\u002Fpattanation\u002FNorvik\u002Fblob\u002Fclaude\u002Finstall-gsd-build-foQdV\u002F.agents\u002Fskills\u002Fvue-router-best-practices\u002FSKILL.md",[220],{"categoryNo":121,"categoryName":122,"taxonomyType":21,"taxonomyTypeDesc":22},[222,188,223,203,224,206,225,183,211,226,227],"router","vue router best practices","route","guards","navigation","lifecycle",{"skillNo":229,"name":230,"nameZh":6,"description":231,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":171,"licenseFileUrl":232,"sourceHtmlUrl":233,"categories":234,"keywords":236,"publishedAt":44},"01M71QCYPNWDE2MQZ1TF3ED5S4","vue-best-practices","MUST be used for Vue.js tasks. Strongly recommends Composition API with `\u003Cscript setup>` and TypeScript as the standard approach. Covers Vue 3, SSR, Volar, vue-tsc. Load for any Vue, .vue files, Vue Router, Pinia, or Vite with Vue work. ALWAYS use Composition API unless the project explicitly requires Options API.","https:\u002F\u002Fgithub.com\u002Fpattanation\u002FNorvik\u002Fblob\u002Fclaude\u002Finstall-gsd-build-foQdV\u002F.agents\u002Fskills\u002Fvue-best-practices\u002FLICENSE.md","https:\u002F\u002Fgithub.com\u002Fpattanation\u002FNorvik\u002Fblob\u002Fclaude\u002Finstall-gsd-build-foQdV\u002F.agents\u002Fskills\u002Fvue-best-practices\u002FSKILL.md",[235],{"categoryNo":121,"categoryName":122,"taxonomyType":21,"taxonomyTypeDesc":22},[237,188,203,238,180,239,240,41,222,241,242,243,244,245,246,127,247,159,248,249],"vue best practices","Composition","files","tasks","pinia","work","options","ssr","typescript","as","vite","load","standard"]