[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M71MBHHCZ74T03W0QNMH6ZPC":3,"skill-same:01M71MBHHCZ74T03W0QNMH6ZPC":105},{"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":58,"commitSha":59,"skillDirectory":60,"forksCount":14,"repositoryHtmlUrl":61,"repositoryHomepageUrl":62,"ownerHtmlUrl":63,"ownerBlogUrl":6,"ownerDescription":6,"updatedAt":64,"install":65,"resources":78},"01M71MBHHCZ74T03W0QNMH6ZPC","amc-run-sample-calibration",null,"Run end-to-end calibration on the shipped sample dataset (sdg_08_2_sample_data_010926.zip) against a running AMC microservice. Use when user says 'test sample dataset', 'run sample calibration', 'verify AMC install', or 'launch and test'.","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\u002Famc-run-sample-calibration\u002FSKILL.md",[18],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000010","后端与接口","SCENARIO","使用场景",[24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43],"run","calibration","amc run sample calibration","sample","use","magic","python","NVIDIA","microservice","zip","running","data","install","2026","api","dataset","when","auto","end","rest-api","2026-11-10 10:56:23",false,"---\nname: \"amc-run-sample-calibration\"\ndescription: \"Run end-to-end calibration on the shipped sample dataset (sdg_08_2_sample_data_010926.zip) against a running AMC microservice. Use when user says 'test sample dataset', 'run sample calibration', 'verify AMC install', or 'launch and test'.\"\nowner: \"NVIDIA CORPORATION\"\nservice: \"auto-magic-calib\"\nversion: \"1.0.0\"\nreviewed: \"2026-04-28\"\nlicense: \"Apache-2.0\"\ndata_classification: public\nmetadata:\n  tags: [amc, calibration, sample, rest-api, validation, python]\n---\n\n# Skill: Calibrate Sample Dataset\n\n## When to Use This Skill\n\nActivate this skill when the user wants to sanity-check a running AMC stack with the bundled sample dataset. Typical prompts:\n\n- \"test the sample dataset\" \u002F \"run sample calibration\"\n- \"verify AMC install\"\n- \"launch and test\" (chain with `amc-setup-calibration-stack` if the MS isn't already running)\n\n**Do NOT use this skill when:**\n\n- The user references their own video paths (e.g. `\u002Fdata\u002Fvideos\u002F`, `cam_*.mp4` not from the bundled zip) — route to `amc-run-video-calibration`. This skill is exclusively for `assets\u002Fsdg_08_2_sample_data_010926.zip`.\n\nPrerequisite: AMC microservice running on a port in 8000-8009. If no backend is detected, delegate to `amc-setup-calibration-stack` first.\n\nIf execution cannot proceed in the current environment (no backend, missing sample data, etc.), surface the blocker AND describe the expected workflow + API sequence concisely so the user understands what will run once prerequisites are met. Do not fabricate calibration outputs, evaluation metrics, or trajectories.\n\n## Overview\n\nRun a full calibration on the bundled sample dataset (`sdg_08_2_sample_data_010926.zip`, 4 synthetic warehouse cameras with ground truth) against a running AutoMagicCalib microservice. Useful for verifying that a freshly-launched stack works end-to-end before throwing real data at it.\n\nThe sample includes GT, so the run produces evaluation metrics (L2 distance, reprojection error) — no calibration parameter tuning needed.\n\n## Prerequisites\n\n- [ ] AMC microservice running (follow `skills\u002Famc-setup-calibration-stack\u002FSKILL.md` if not)\n- [ ] Sample zip present at `assets\u002Fsdg_08_2_sample_data_010926.zip`\n- [ ] Python 3 with `requests` available, or use the Swagger UI path below\n  - The bundled script self-heals: if `requests` is missing it creates a throwaway venv under `${TMPDIR:-\u002Ftmp}\u002Famc-sample-test-venv` (nothing written to the repo)\n  - If `python3 -m venv` itself fails with `ensurepip not available`: `sudo apt install -y python3-venv python3-pip`\n\n## Instructions\n\n**\"launch AMC and test sample dataset\" (or similar):**\n\n1. Run `skills\u002Famc-setup-calibration-stack\u002FSKILL.md` first.\n2. Wait for `\u002Fv1\u002Fready` to return OK.\n3. Extract sample data (snippet below) — idempotent, safe to re-run.\n4. Run the bundled script in [Run Script](#run-script).\n5. Report final metrics + UI URL for manual inspection.\n6. VGGT refinement is attempted by default when the project reports `vggt_state: READY`; otherwise the script explains that VGGT setup is optional and can be enabled later for refinement.\n\n**\"test sample dataset\" (MS already running):**\n\n1. Detect backend: scan ports 8000–8009 for a `\u002Fv1\u002Fready` response.\n2. If none → point to the setup skill.\n3. Extract sample data if not already cached.\n4. Run the bundled script.\n5. Report metrics.\n\n### Detect Running Backend\n\n```bash\nMS_PORT=\"\"\nfor port in {8000..8009}; do\n  if curl -s \"http:\u002F\u002Flocalhost:$port\u002Fv1\u002Fready\" | grep -q '\"code\":0'; then\n    MS_PORT=$port; break\n  fi\ndone\n[ -z \"$MS_PORT\" ] && { echo \"No running backend. Run amc-setup-calibration-stack skill first.\"; exit 1; }\necho \"Backend on port $MS_PORT\"\n```\n\n### Locate + Extract Sample Data (idempotent)\n\n```bash\nexport REPO_ROOT=$(git rev-parse --show-toplevel)\n\nSAMPLE_ZIP=\"$REPO_ROOT\u002Fassets\u002Fsdg_08_2_sample_data_010926.zip\"\n[ -f \"$SAMPLE_ZIP\" ] || { echo \"Sample zip not found at $SAMPLE_ZIP\"; exit 1; }\n\n# Cache directory next to the zip.\nSAMPLE_DIR=\"$(dirname \"$SAMPLE_ZIP\")\u002F.cache\u002Fsdg_08_2_sample_data_010926\"\n\nif [ ! -d \"$SAMPLE_DIR\" ]; then\n  mkdir -p \"$SAMPLE_DIR\"\n  unzip -q \"$SAMPLE_ZIP\" -d \"$SAMPLE_DIR\"\nfi\nls \"$SAMPLE_DIR\"\n# Expected (possibly inside a wrapper folder): alignment_data\u002F  GT.zip  videos\u002F\n```\n\n## Run Script\n\nRun `scripts\u002Frun_sample_calibration.py` from the `auto-magic-calib` repo root, or set `REPO_ROOT=\u002Fpath\u002Fto\u002Fauto-magic-calib`. The script reads `compose\u002F.env` for the backend port, accepts `BASE_URL`, `MS_PORT`, `SAMPLE_DIR`, and `RUN_VGGT` overrides, creates a fresh project each run, attempts VGGT when ready, and prints the NGC warehouse dataset note at the end.\n\n## Alternative: Swagger UI Walkthrough\n\n> **Agent shortcut**: if the user explicitly requested a Swagger UI walkthrough (or said \"no Python\"), emit the table below and stop — do not invoke shell tooling, read other sections, or run the bundled Python script.\n\nThe microservice exposes an interactive OpenAPI UI at **`http:\u002F\u002F\u003CHOST_IP>:\u003CMS_PORT>\u002Fdocs`**. If you prefer clicking through the API by hand:\n\n1. Open `http:\u002F\u002F\u003CHOST_IP>:\u003CMS_PORT>\u002Fdocs` in a browser.\n2. Unzip `sdg_08_2_sample_data_010926.zip` into a cache directory next to it.\n3. Execute these endpoints **in order**, copying the `project_id` from step 1 into subsequent paths:\n\n   | # | Endpoint | Body \u002F Files |\n   |---|---|---|\n   | 1 | `POST \u002Fv1\u002Fcreate_project` | `project_name`: any string |\n   | 2 | `POST \u002Fv1\u002Fupload_video_files\u002F{project_id}` | `files`: upload all 4 `videos\u002Fcam_0*.mp4` **sorted by name** |\n   | 3 | `POST \u002Fv1\u002Fupload_alignment\u002F{project_id}` | `alignment_file`: `alignment_data\u002Falignment_data.json` |\n   | 4 | `POST \u002Fv1\u002Fupload_layout\u002F{project_id}` | `layout_file`: `alignment_data\u002Flayout.png` |\n   | 5 | `POST \u002Fv1\u002Fupload_gt_file\u002F{project_id}` | `gt_file`: `GT.zip` |\n   | 6 | `POST \u002Fv1\u002Fverify_project\u002F{project_id}` | — (expect `project_state: READY`) |\n   | 7 | `POST \u002Fv1\u002Fcalibrate\u002F{project_id}` | JSON: `{\"detector_type\": \"resnet\"}` |\n   | 8 | `GET \u002Fv1\u002Fget_project_info\u002F{project_id}` | Refresh every ~10 s until `project_state` = `COMPLETED` |\n   | 9 | `GET \u002Fv1\u002Fresult\u002F{project_id}\u002Fevaluation_statistics` | Read L2 distance + reprojection error |\n   | 10 optional | `POST \u002Fv1\u002Fvggt\u002Fcalibrate\u002F{project_id}` then `GET \u002Fv1\u002Fvggt_results\u002F{project_id}\u002Fevaluation_statistics` | Run only when `vggt_state` is `READY`; poll `vggt_state` until `COMPLETED` |\n\nThis is the same sequence the bundled Python script runs, just executed manually. Step 10 is attempted by default when `vggt_state` is `READY`; otherwise it is skipped with setup guidance.\n\n### Status Fields from `get_project_info`\n\n`project_info.project_state` is the AMC calibration lifecycle for the project. Poll it until it reaches `COMPLETED` (or stop on `ERROR`).\n\n`project_info.vggt_state` is a **per-project** VGGT refinement lifecycle, a project-scoped status rather than a direct global service or model-load status. A newly created project can report `vggt_state: \"INIT\"` even when the VGGT model is present and mounted. The expected lifecycle is `INIT` → `READY` after AMC calibration completes → `RUNNING` while VGGT refinement runs → `COMPLETED` (or `ERROR`). Interpret `INIT` on a new or uncalibrated project as normal project state. If AMC calibration is complete and the project remains in a non-ready VGGT state, confirm VGGT setup and model availability with the setup skill checks and service logs.\n\n## Success Criteria\n\n- Project reaches `project_state == \"COMPLETED\"` within ~30 min.\n- `\u002Fv1\u002Fresult\u002F{id}\u002Fevaluation_statistics` returns non-empty `statistics` (GT was uploaded).\n- VGGT either runs to `vggt_state == \"COMPLETED\"` and reports `\u002Fv1\u002Fvggt_results\u002F{id}\u002Fevaluation_statistics`, or is skipped with setup guidance because the project is not `READY` for VGGT.\n- No `ERROR` state encountered.\n\nRepresentative metrics for the sample (yours should be similar):\n\n```\nAverage L2 distance(m)               : \u003C 1.5\nAverage reprojection error 0(px)     : \u003C 10\n```\n\n## Key Output Files (on the server)\n\nResults persist under `$REPO_ROOT\u002Fprojects\u002Fproject_\u003Cproject_id>\u002F`:\n\n```\nprojects\u002Fproject_\u003Cproject_id>\u002F\n├── output\u002F\n│   ├── single_view_results\u002Fcam_XX\u002F\n│   │   ├── camInfo_hyper_XX.yaml\n│   │   └── trajDump_Stream_0_3d.txt\n│   └── multi_view_results\u002FBA_output\u002Fresults_ba\u002Frefined\u002F\n│       └── camInfo_XX.yaml          # ← final calibration (use this)\n└── calibration.log\n```\n\n## Monitoring Progress\n\n```bash\nPROJECT_ID=\u003Cid_from_step_1>\nREPO_ROOT=$(git rev-parse --show-toplevel)\ntail -F --retry \"$REPO_ROOT\u002Fprojects\u002Fproject_${PROJECT_ID}\u002Fcalibration.log\"\n```\n\nOr stream MS logs:\n\n```bash\nREPO_ROOT=$(git rev-parse --show-toplevel)\ndocker compose -f \"$REPO_ROOT\u002Fcompose\u002Fcompose.yml\" logs -f auto-magic-calib-ms\n```\n\n## Troubleshooting\n\n| Issue | Fix |\n|---|---|\n| `requests` not installed | Inside a venv: `python3 -m venv venv && .\u002Fvenv\u002Fbin\u002Fpip install requests`. If `python3 -m venv` fails: `sudo apt install -y python3-venv python3-pip` first |\n| `[2] Uploaded N videos` where N >> 4 | `SAMPLE_DIR` resolved to the repo root (or another over-broad path) and `rglob(\"cam_*.mp4\")` swept stale videos from `.cache\u002F`, `projects\u002F`, etc. Stop the run (`POST \u002Fv1\u002Fstop_calibration\u002F{id}`), delete the project (`DELETE \u002Fv1\u002Fdelete_project\u002F{id}`), set `SAMPLE_DIR` explicitly to the extracted sample dir, re-run. The script anchors on `videos\u002F` and asserts `len(videos) \u003C= 16` to fail loud |\n| `verify_project` returns state `!= READY` | Confirm all 4 videos + alignment + layout + GT uploaded; inspect `GET \u002Fv1\u002Fget_project_info\u002F{id}` response |\n| Sample not extracted | `unzip \u003Crepo_root>\u002Fassets\u002Fsdg_08_2_sample_data_010926.zip -d \u003Crepo_root>\u002Fassets\u002F.cache\u002Fsdg_08_2_sample_data_010926\u002F` |\n| `cam_*.mp4` glob finds 0 files | Check wrapper-folder depth: `find \u003Csample_dir> -name \"cam_*.mp4\"` |\n| Calibration times out (>60 min) | Check `calibration.log` for \"insufficient tracklets\"; see root `README.md` guidelines on input videos |\n| Upload returns 413 | Raise server upload limit, or split files (sample files are \u003C200 MB total so this is unusual) |\n| Port scan finds no backend | Backend not running — run `amc-setup-calibration-stack` skill |\n\n## Additional Sample Dataset\n\nThe root `README.md` also documents `nv_warehouse_032326.zip`, a real-world warehouse dataset available from NGC. Download it with `ngc registry resource download-version \"nvidia\u002Famc-nv-warehouse\"`; then use `amc-run-video-calibration`, upload `nv_warehouse_config.json` in the config step, and run with the `transformer` detector. It does not include ground-truth data.\n\n## Related Skills\n\n- `skills\u002Famc-setup-calibration-stack\u002FSKILL.md` — launch MS + UI (prerequisite).\n- `skills\u002Famc-run-video-calibration\u002FSKILL.md` — run calibration on your own pre-recorded MP4s.\n\nRoot `README.md` \"Sample Data Setup\" and \"Calibration Workflow (UI)\" sections cover the human-oriented path through the same sample.\n\n\u003C!-- signing marker -->\n","# Skill: Calibrate Sample Dataset\n\n## When to Use This Skill\n\nActivate this skill when the user wants to sanity-check a running AMC stack with the bundled sample dataset. Typical prompts:\n\n- \"test the sample dataset\" \u002F \"run sample calibration\"\n- \"verify AMC install\"\n- \"launch and test\" (chain with `amc-setup-calibration-stack` if the MS isn't already running)\n\n**Do NOT use this skill when:**\n\n- The user references their own video paths (e.g. `\u002Fdata\u002Fvideos\u002F`, `cam_*.mp4` not from the bundled zip) — route to `amc-run-video-calibration`. This skill is exclusively for `assets\u002Fsdg_08_2_sample_data_010926.zip`.\n\nPrerequisite: AMC microservice running on a port in 8000-8009. If no backend is detected, delegate to `amc-setup-calibration-stack` first.\n\nIf execution cannot proceed in the current environment (no backend, missing sample data, etc.), surface the blocker AND describe the expected workflow + API sequence concisely so the user understands what will run once prerequisites are met. Do not fabricate calibration outputs, evaluation metrics, or trajectories.\n\n## Overview\n\nRun a full calibration on the bundled sample dataset (`sdg_08_2_sample_data_010926.zip`, 4 synthetic warehouse cameras with ground truth) against a running AutoMagicCalib microservice. Useful for verifying that a freshly-launched stack works end-to-end before throwing real data at it.\n\nThe sample includes GT, so the run produces evaluation metrics (L2 distance, reprojection error) — no calibration parameter tuning needed.\n\n## Prerequisites\n\n- [ ] AMC microservice running (follow `skills\u002Famc-setup-calibration-stack\u002FSKILL.md` if not)\n- [ ] Sample zip present at `assets\u002Fsdg_08_2_sample_data_010926.zip`\n- [ ] Python 3 with `requests` available, or use the Swagger UI path below\n  - The bundled script self-heals: if `requests` is missing it creates a throwaway venv under `${TMPDIR:-\u002Ftmp}\u002Famc-sample-test-venv` (nothing written to the repo)\n  - If `python3 -m venv` itself fails with `ensurepip not available`: `sudo apt install -y python3-venv python3-pip`\n\n## Instructions\n\n**\"launch AMC and test sample dataset\" (or similar):**\n\n1. Run `skills\u002Famc-setup-calibration-stack\u002FSKILL.md` first.\n2. Wait for `\u002Fv1\u002Fready` to return OK.\n3. Extract sample data (snippet below) — idempotent, safe to re-run.\n4. Run the bundled script in [Run Script](#run-script).\n5. Report final metrics + UI URL for manual inspection.\n6. VGGT refinement is attempted by default when the project reports `vggt_state: READY`; otherwise the script explains that VGGT setup is optional and can be enabled later for refinement.\n\n**\"test sample dataset\" (MS already running):**\n\n1. Detect backend: scan ports 8000–8009 for a `\u002Fv1\u002Fready` response.\n2. If none → point to the setup skill.\n3. Extract sample data if not already cached.\n4. Run the bundled script.\n5. Report metrics.\n\n### Detect Running Backend\n\n```bash\nMS_PORT=\"\"\nfor port in {8000..8009}; do\n  if curl -s \"http:\u002F\u002Flocalhost:$port\u002Fv1\u002Fready\" | grep -q '\"code\":0'; then\n    MS_PORT=$port; break\n  fi\ndone\n[ -z \"$MS_PORT\" ] && { echo \"No running backend. Run amc-setup-calibration-stack skill first.\"; exit 1; }\necho \"Backend on port $MS_PORT\"\n```\n\n### Locate + Extract Sample Data (idempotent)\n\n```bash\nexport REPO_ROOT=$(git rev-parse --show-toplevel)\n\nSAMPLE_ZIP=\"$REPO_ROOT\u002Fassets\u002Fsdg_08_2_sample_data_010926.zip\"\n[ -f \"$SAMPLE_ZIP\" ] || { echo \"Sample zip not found at $SAMPLE_ZIP\"; exit 1; }\n\n# Cache directory next to the zip.\nSAMPLE_DIR=\"$(dirname \"$SAMPLE_ZIP\")\u002F.cache\u002Fsdg_08_2_sample_data_010926\"\n\nif [ ! -d \"$SAMPLE_DIR\" ]; then\n  mkdir -p \"$SAMPLE_DIR\"\n  unzip -q \"$SAMPLE_ZIP\" -d \"$SAMPLE_DIR\"\nfi\nls \"$SAMPLE_DIR\"\n# Expected (possibly inside a wrapper folder): alignment_data\u002F  GT.zip  videos\u002F\n```\n\n## Run Script\n\nRun `scripts\u002Frun_sample_calibration.py` from the `auto-magic-calib` repo root, or set `REPO_ROOT=\u002Fpath\u002Fto\u002Fauto-magic-calib`. The script reads `compose\u002F.env` for the backend port, accepts `BASE_URL`, `MS_PORT`, `SAMPLE_DIR`, and `RUN_VGGT` overrides, creates a fresh project each run, attempts VGGT when ready, and prints the NGC warehouse dataset note at the end.\n\n## Alternative: Swagger UI Walkthrough\n\n> **Agent shortcut**: if the user explicitly requested a Swagger UI walkthrough (or said \"no Python\"), emit the table below and stop — do not invoke shell tooling, read other sections, or run the bundled Python script.\n\nThe microservice exposes an interactive OpenAPI UI at **`http:\u002F\u002F\u003CHOST_IP>:\u003CMS_PORT>\u002Fdocs`**. If you prefer clicking through the API by hand:\n\n1. Open `http:\u002F\u002F\u003CHOST_IP>:\u003CMS_PORT>\u002Fdocs` in a browser.\n2. Unzip `sdg_08_2_sample_data_010926.zip` into a cache directory next to it.\n3. Execute these endpoints **in order**, copying the `project_id` from step 1 into subsequent paths:\n\n   | # | Endpoint | Body \u002F Files |\n   |---|---|---|\n   | 1 | `POST \u002Fv1\u002Fcreate_project` | `project_name`: any string |\n   | 2 | `POST \u002Fv1\u002Fupload_video_files\u002F{project_id}` | `files`: upload all 4 `videos\u002Fcam_0*.mp4` **sorted by name** |\n   | 3 | `POST \u002Fv1\u002Fupload_alignment\u002F{project_id}` | `alignment_file`: `alignment_data\u002Falignment_data.json` |\n   | 4 | `POST \u002Fv1\u002Fupload_layout\u002F{project_id}` | `layout_file`: `alignment_data\u002Flayout.png` |\n   | 5 | `POST \u002Fv1\u002Fupload_gt_file\u002F{project_id}` | `gt_file`: `GT.zip` |\n   | 6 | `POST \u002Fv1\u002Fverify_project\u002F{project_id}` | — (expect `project_state: READY`) |\n   | 7 | `POST \u002Fv1\u002Fcalibrate\u002F{project_id}` | JSON: `{\"detector_type\": \"resnet\"}` |\n   | 8 | `GET \u002Fv1\u002Fget_project_info\u002F{project_id}` | Refresh every ~10 s until `project_state` = `COMPLETED` |\n   | 9 | `GET \u002Fv1\u002Fresult\u002F{project_id}\u002Fevaluation_statistics` | Read L2 distance + reprojection error |\n   | 10 optional | `POST \u002Fv1\u002Fvggt\u002Fcalibrate\u002F{project_id}` then `GET \u002Fv1\u002Fvggt_results\u002F{project_id}\u002Fevaluation_statistics` | Run only when `vggt_state` is `READY`; poll `vggt_state` until `COMPLETED` |\n\nThis is the same sequence the bundled Python script runs, just executed manually. Step 10 is attempted by default when `vggt_state` is `READY`; otherwise it is skipped with setup guidance.\n\n### Status Fields from `get_project_info`\n\n`project_info.project_state` is the AMC calibration lifecycle for the project. Poll it until it reaches `COMPLETED` (or stop on `ERROR`).\n\n`project_info.vggt_state` is a **per-project** VGGT refinement lifecycle, a project-scoped status rather than a direct global service or model-load status. A newly created project can report `vggt_state: \"INIT\"` even when the VGGT model is present and mounted. The expected lifecycle is `INIT` → `READY` after AMC calibration completes → `RUNNING` while VGGT refinement runs → `COMPLETED` (or `ERROR`). Interpret `INIT` on a new or uncalibrated project as normal project state. If AMC calibration is complete and the project remains in a non-ready VGGT state, confirm VGGT setup and model availability with the setup skill checks and service logs.\n\n## Success Criteria\n\n- Project reaches `project_state == \"COMPLETED\"` within ~30 min.\n- `\u002Fv1\u002Fresult\u002F{id}\u002Fevaluation_statistics` returns non-empty `statistics` (GT was uploaded).\n- VGGT either runs to `vggt_state == \"COMPLETED\"` and reports `\u002Fv1\u002Fvggt_results\u002F{id}\u002Fevaluation_statistics`, or is skipped with setup guidance because the project is not `READY` for VGGT.\n- No `ERROR` state encountered.\n\nRepresentative metrics for the sample (yours should be similar):\n\n```\nAverage L2 distance(m)               : \u003C 1.5\nAverage reprojection error 0(px)     : \u003C 10\n```\n\n## Key Output Files (on the server)\n\nResults persist under `$REPO_ROOT\u002Fprojects\u002Fproject_\u003Cproject_id>\u002F`:\n\n```\nprojects\u002Fproject_\u003Cproject_id>\u002F\n├── output\u002F\n│   ├── single_view_results\u002Fcam_XX\u002F\n│   │   ├── camInfo_hyper_XX.yaml\n│   │   └── trajDump_Stream_0_3d.txt\n│   └── multi_view_results\u002FBA_output\u002Fresults_ba\u002Frefined\u002F\n│       └── camInfo_XX.yaml          # ← final calibration (use this)\n└── calibration.log\n```\n\n## Monitoring Progress\n\n```bash\nPROJECT_ID=\u003Cid_from_step_1>\nREPO_ROOT=$(git rev-parse --show-toplevel)\ntail -F --retry \"$REPO_ROOT\u002Fprojects\u002Fproject_${PROJECT_ID}\u002Fcalibration.log\"\n```\n\nOr stream MS logs:\n\n```bash\nREPO_ROOT=$(git rev-parse --show-toplevel)\ndocker compose -f \"$REPO_ROOT\u002Fcompose\u002Fcompose.yml\" logs -f auto-magic-calib-ms\n```\n\n## Troubleshooting\n\n| Issue | Fix |\n|---|---|\n| `requests` not installed | Inside a venv: `python3 -m venv venv && .\u002Fvenv\u002Fbin\u002Fpip install requests`. If `python3 -m venv` fails: `sudo apt install -y python3-venv python3-pip` first |\n| `[2] Uploaded N videos` where N >> 4 | `SAMPLE_DIR` resolved to the repo root (or another over-broad path) and `rglob(\"cam_*.mp4\")` swept stale videos from `.cache\u002F`, `projects\u002F`, etc. Stop the run (`POST \u002Fv1\u002Fstop_calibration\u002F{id}`), delete the project (`DELETE \u002Fv1\u002Fdelete_project\u002F{id}`), set `SAMPLE_DIR` explicitly to the extracted sample dir, re-run. The script anchors on `videos\u002F` and asserts `len(videos) \u003C= 16` to fail loud |\n| `verify_project` returns state `!= READY` | Confirm all 4 videos + alignment + layout + GT uploaded; inspect `GET \u002Fv1\u002Fget_project_info\u002F{id}` response |\n| Sample not extracted | `unzip \u003Crepo_root>\u002Fassets\u002Fsdg_08_2_sample_data_010926.zip -d \u003Crepo_root>\u002Fassets\u002F.cache\u002Fsdg_08_2_sample_data_010926\u002F` |\n| `cam_*.mp4` glob finds 0 files | Check wrapper-folder depth: `find \u003Csample_dir> -name \"cam_*.mp4\"` |\n| Calibration times out (>60 min) | Check `calibration.log` for \"insufficient tracklets\"; see root `README.md` guidelines on input videos |\n| Upload returns 413 | Raise server upload limit, or split files (sample files are \u003C200 MB total so this is unusual) |\n| Port scan finds no backend | Backend not running — run `amc-setup-calibration-stack` skill |\n\n## Additional Sample Dataset\n\nThe root `README.md` also documents `nv_warehouse_032326.zip`, a real-world warehouse dataset available from NGC. Download it with `ngc registry resource download-version \"nvidia\u002Famc-nv-warehouse\"`; then use `amc-run-video-calibration`, upload `nv_warehouse_config.json` in the config step, and run with the `transformer` detector. It does not include ground-truth data.\n\n## Related Skills\n\n- `skills\u002Famc-setup-calibration-stack\u002FSKILL.md` — launch MS + UI (prerequisite).\n- `skills\u002Famc-run-video-calibration\u002FSKILL.md` — run calibration on your own pre-recorded MP4s.\n\nRoot `README.md` \"Sample Data Setup\" and \"Calibration Workflow (UI)\" sections cover the human-oriented path through the same sample.\n\n\u003C!-- signing marker -->\n",{"name":5,"owner":49,"license":15,"service":50,"version":51,"metadata":52,"reviewed":56,"description":7,"data_classification":57},"NVIDIA CORPORATION","auto-magic-calib","1.0.0",{"tags":53},[54,25,27,43,55,30],"amc","validation","2026-04-28","public","claude\u002Finstall-gsd-build-foQdV","d86cd127f527124b5fd0fd0bc679a4d79b7d01d7",".agents\u002Fskills\u002Famc-run-sample-calibration","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":66,"prompt":76,"zipAvailable":77},[67,70,73],{"tool":68,"command":69},"npx","npx skills add pattanation\u002FNorvik --skill amc-run-sample-calibration",{"tool":71,"command":72},"bunx","bunx skills add pattanation\u002FNorvik --skill amc-run-sample-calibration",{"tool":74,"command":75},"pnpm","pnpm dlx skills add pattanation\u002FNorvik --skill amc-run-sample-calibration","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fpattanation\u002FNorvik\u002Fblob\u002Fclaude\u002Finstall-gsd-build-foQdV\u002F.agents\u002Fskills\u002Famc-run-sample-calibration\u002FSKILL.md",true,[79,85,89,95,99],{"path":80,"resourceType":81,"resourceTypeDesc":82,"sizeBytes":83,"sourceHtmlUrl":84},"BENCHMARK.md","REFERENCE","参考文档",4511,"https:\u002F\u002Fgithub.com\u002Fpattanation\u002FNorvik\u002Fblob\u002Fclaude\u002Finstall-gsd-build-foQdV\u002F.agents\u002Fskills\u002Famc-run-sample-calibration\u002FBENCHMARK.md",{"path":86,"resourceType":81,"resourceTypeDesc":82,"sizeBytes":87,"sourceHtmlUrl":88},"evals\u002Fevals.json",5257,"https:\u002F\u002Fgithub.com\u002Fpattanation\u002FNorvik\u002Fblob\u002Fclaude\u002Finstall-gsd-build-foQdV\u002F.agents\u002Fskills\u002Famc-run-sample-calibration\u002Fevals\u002Fevals.json",{"path":90,"resourceType":91,"resourceTypeDesc":92,"sizeBytes":93,"sourceHtmlUrl":94},"scripts\u002Frun_sample_calibration.py","SCRIPT","脚本",9817,"https:\u002F\u002Fgithub.com\u002Fpattanation\u002FNorvik\u002Fblob\u002Fclaude\u002Finstall-gsd-build-foQdV\u002F.agents\u002Fskills\u002Famc-run-sample-calibration\u002Fscripts\u002Frun_sample_calibration.py",{"path":96,"resourceType":81,"resourceTypeDesc":82,"sizeBytes":97,"sourceHtmlUrl":98},"skill-card.md",3675,"https:\u002F\u002Fgithub.com\u002Fpattanation\u002FNorvik\u002Fblob\u002Fclaude\u002Finstall-gsd-build-foQdV\u002F.agents\u002Fskills\u002Famc-run-sample-calibration\u002Fskill-card.md",{"path":100,"resourceType":101,"resourceTypeDesc":102,"sizeBytes":103,"sourceHtmlUrl":104},"skill.oms.sig","OTHER","其他",4929,"https:\u002F\u002Fgithub.com\u002Fpattanation\u002FNorvik\u002Fblob\u002Fclaude\u002Finstall-gsd-build-foQdV\u002F.agents\u002Fskills\u002Famc-run-sample-calibration\u002Fskill.oms.sig",[106,138,163,187,209,224],{"skillNo":107,"name":108,"nameZh":6,"description":109,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":110,"sourceHtmlUrl":111,"categories":112,"keywords":119,"publishedAt":137},"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",[113,116],{"categoryNo":114,"categoryName":115,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000008","测试与质量",{"categoryNo":117,"categoryName":118,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000009","前端开发",[120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136],"webapp","testing","webapp testing","for","applications","local","frontend","debugging","toolkit","logs","browser","with","playwright","web","behavior","ui","screenshots","2026-11-10 13:02:02",{"skillNo":139,"name":140,"nameZh":6,"description":141,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":142,"sourceHtmlUrl":143,"categories":144,"keywords":146,"publishedAt":137},"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",[145],{"categoryNo":117,"categoryName":118,"taxonomyType":21,"taxonomyTypeDesc":22},[147,148,149,133,150,151,152,123,153,154,126,155,28,156,157,158,159,160,161,162],"builder","artifacts builder","artifacts","web artifacts builder","single-file","css","Tailwind","ui components","single","file","components","react","multi","state","routing","state management",{"skillNo":164,"name":165,"nameZh":6,"description":166,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":167,"licenseFileUrl":168,"sourceHtmlUrl":169,"categories":170,"keywords":172,"publishedAt":137},"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",[171],{"categoryNo":117,"categoryName":118,"taxonomyType":21,"taxonomyTypeDesc":22},[173,174,175,176,177,178,179,180,181,182,183,184,185,186],"functions","vueuse","vueuse functions","project","nuxt","apply","github","concise","build","https","features","vue","js","composables",{"skillNo":188,"name":189,"nameZh":6,"description":190,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":167,"licenseFileUrl":191,"sourceHtmlUrl":192,"categories":193,"keywords":196,"publishedAt":137},"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",[194,195],{"categoryNo":114,"categoryName":115,"taxonomyType":21,"taxonomyTypeDesc":22},{"categoryNo":117,"categoryName":118,"taxonomyType":21,"taxonomyTypeDesc":22},[197,121,198,184,199,132,200,201,202,179,203,123,204,205,206,28,207,185,208],"vue testing best practices","testing best practices","best practices","test","testing patterns","component","vitest","mocking","e2e","utils","patterns","e2e testing",{"skillNo":210,"name":211,"nameZh":6,"description":212,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":167,"licenseFileUrl":213,"sourceHtmlUrl":214,"categories":215,"keywords":217,"publishedAt":137},"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",[216],{"categoryNo":117,"categoryName":118,"taxonomyType":21,"taxonomyTypeDesc":22},[218,184,219,199,220,202,221,179,207,222,223],"router","vue router best practices","route","guards","navigation","lifecycle",{"skillNo":225,"name":226,"nameZh":6,"description":227,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":167,"licenseFileUrl":228,"sourceHtmlUrl":229,"categories":230,"keywords":232,"publishedAt":137},"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",[231],{"categoryNo":117,"categoryName":118,"taxonomyType":21,"taxonomyTypeDesc":22},[233,184,199,234,176,235,236,38,218,237,238,239,240,241,242,123,243,28,244,245],"vue best practices","Composition","files","tasks","pinia","work","options","ssr","typescript","as","vite","load","standard"]