[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill-nvidia-aiq-deploy":3,"mdc--vgbaug-key":31,"related-repo-nvidia-aiq-deploy":2325,"related-org-nvidia-aiq-deploy":2421},{"slug":4,"name":4,"fn":5,"description":6,"org":7,"tags":11,"stars":20,"repoUrl":21,"updatedAt":22,"license":23,"forks":24,"topics":25,"repo":26,"sourceUrl":29,"mdContent":30},"aiq-deploy","deploy and manage NVIDIA AI-Q infrastructure","Use when asked to install, deploy, run, validate, troubleshoot, or stop NVIDIA AI-Q Blueprint infrastructure.\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},"nvidia","NVIDIA","https:\u002F\u002Fpexgzepcugksgbtrxkhf.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Forg-logos\u002Fnvidia.png",[12,16,17],{"name":13,"slug":14,"type":15},"Deployment","deployment","tag",{"name":9,"slug":8,"type":15},{"name":18,"slug":19,"type":15},"Infrastructure","infrastructure",2473,"https:\u002F\u002Fgithub.com\u002FNVIDIA\u002Fskills","2026-07-14T05:29:06.667109","Apache-2.0",281,[],{"repoUrl":21,"stars":20,"forks":24,"topics":27,"description":28},[],"AI agent skills published by NVIDIA","https:\u002F\u002Fgithub.com\u002FNVIDIA\u002Fskills\u002Ftree\u002FHEAD\u002Fskills\u002Faiq-deploy","---\nname: aiq-deploy\ndescription: |\n  Use when asked to install, deploy, run, validate, troubleshoot, or stop NVIDIA AI-Q Blueprint infrastructure.\nlicense: Apache-2.0\ncompatibility: |\n  Designed for Claude Code, OpenCode, Codex, and Agent Skills-compatible tools. Requires Git, network\n  access to GitHub, and one selected runtime path: Docker Compose v2 for the default local deployment,\n  Python 3.11+ and uv for local process or CLI mode, Node.js 20+ and npm for local web UI mode, or\n  kubectl 1.28+ and Helm 3.12+ for Kubernetes and Helm mode.\nmetadata:\n  version: \"2.1.0\"\n  author: \"NVIDIA AI-Q Blueprint Team \u003Caiq-blueprint@nvidia.com>\"\n  github-url: \"https:\u002F\u002Fgithub.com\u002FNVIDIA-AI-Blueprints\u002Faiq\"\n  tags:\n    - nvidia\n    - aiq\n    - blueprint\n    - deploy\n    - operations\n    - agent-skills\nallowed-tools: Read Bash\n---\n\n# AIQ Deploy Skill\n\n## Purpose\n\nUse this skill to get a local or self-hosted NVIDIA AI-Q Blueprint server running and verified for use by\n`aiq-research`.\n\nThis skill owns setup, deployment, operational checks, troubleshooting, and shutdown. It does not run deep\nresearch itself. After deployment is healthy, hand off the verified server URL to `aiq-research`.\nThe workflow stays explicit so deployment validation and handoff are repeatable across supported agent clients.\n\n## Prerequisites\n\nUsers need:\n\n- Access to clone or update `https:\u002F\u002Fgithub.com\u002FNVIDIA-AI-Blueprints\u002Faiq`.\n- Git available in the shell.\n- One deployment runtime:\n  - Docker Engine with Docker Compose v2 for the default durable local deployment.\n  - Python 3.11+ and `uv` for local process or CLI mode.\n  - Node.js 20+ and `npm` for local browser UI development mode.\n  - `kubectl` 1.28+, Helm 3.12+, and access to a Kubernetes cluster for Helm mode.\n- Network access to GitHub, NVIDIA-hosted model endpoints, and any selected search provider.\n- Credentials stored outside chat. Hosted-model usage requires `NVIDIA_API_KEY`; web research requires at least\n  one supported search provider key such as `TAVILY_API_KEY`, `SERPER_API_KEY`, or `EXA_API_KEY`.\n- System capacity for the selected runtime. Docker Compose mode starts the AI-Q backend and PostgreSQL by default;\n  browser UI mode also uses frontend port `3000`. Self-hosted model or RAG deployments may require GPU resources.\n\nBefore writing secrets, verify `deploy\u002F.env` is ignored:\n\n```bash\ngit check-ignore deploy\u002F.env\n```\n\nExpected output: `deploy\u002F.env` or a matching ignore rule. If it is not ignored, stop and fix the ignore rule before\nplacing credentials in the file.\n\n## Instructions\n\n1. Locate or clone the AI-Q repository.\n2. Confirm the expected repository files exist.\n3. Select the deployment mode.\n4. Prepare `deploy\u002F.env` without overwriting user secrets.\n5. Check runtime prerequisites for the selected path.\n6. Start the selected deployment.\n7. Run basic validation.\n8. Report the verified `AIQ_SERVER_URL` for `aiq-research`.\n9. Ask whether to run optional deep research completion validation.\n\n### Step 1 - Locate or clone AI-Q\n\nIf no AI-Q checkout exists, read `references\u002Flocate-or-clone.md` before cloning. In an existing checkout, confirm the\nrequired files:\n\n```bash\npwd\ntest -f pyproject.toml\ntest -f deploy\u002F.env.example\ntest -d configs\n```\n\nExpected output: `pwd` prints the AI-Q repository path; the `test` commands exit with status 0 and no output.\n\n### Step 2 - Select the deployment mode\n\nIf the user asks to install, deploy, set up, or run AI-Q without naming a mode, ask:\n\n```text\nHow do you want to run AI-Q?\n\n1. Skill backend - backend-only service for aiq-research w\u002Fo browser UI.\n2. CLI - interactive terminal AI-Q.\n3. UI - browser AI-Q app with backend and frontend.\n4. Custom - choose an existing AI-Q config or review advanced customization docs before deployment.\n```\n\nWait for the user's answer before starting services.\n\nDo not ask this question when the user already specified a mode, such as Docker Compose, Helm, UI, CLI, or Agent Skill\nbackend. Do not ask the full mode question when `aiq-research` routed here because a deep research request needs a\nbackend. In that case, prefer Agent Skill backend and ask only for permission to start it if needed.\n\n### Step 3 - Prepare environment and secrets\n\nRead `references\u002Fenv-and-secrets.md` before changing `deploy\u002F.env`.\n\n```bash\nif [ ! -f deploy\u002F.env ]; then\n  cp deploy\u002F.env.example deploy\u002F.env\n  echo \"created deploy\u002F.env from deploy\u002F.env.example\"\nfi\n```\n\nExpected output when the file is missing: `created deploy\u002F.env from deploy\u002F.env.example`. Expected output when the file\nalready exists: no output, and the existing file is preserved.\n\nNever print secret values. If credentials are missing, ask the user to update `deploy\u002F.env`; do not ask them to paste\nsecret values into chat.\n\n### Step 4 - Route to the selected deployment path\n\nMatch the user request, then read the referenced file before acting:\n\n| User Intent | Reference |\n|---|---|\n| No AI-Q checkout exists, install AIQ, clone AIQ, locate repo | `references\u002Flocate-or-clone.md` |\n| Configure environment, check API keys, inspect `.env` | `references\u002Fenv-and-secrets.md` |\n| Choose an AI-Q workflow config, understand config files, set `BACKEND_CONFIG` or `CONFIG_FILE` | `references\u002Fconfigs.md` |\n| Backend-only local server for `aiq-research`, AIQ as an Agent Skill | `references\u002Fskill-backend.md` |\n| Terminal assistant, CLI-only run, no web UI | `references\u002Fterminal-cli.md` |\n| Quick local development run, start UI\u002Fbackend without containers | `references\u002Flocal-web.md` |\n| Default durable local deployment, Docker Compose, containers, PostgreSQL | `references\u002Fdocker-compose.md` |\n| Kubernetes, Helm, cluster deployment | `references\u002Fkubernetes-helm.md` |\n| Foundational RAG \u002F FRAG integration | `references\u002Ffrag.md` |\n| Basic health checks, shallow smoke checks, handoff to `aiq-research` | `references\u002Fvalidation.md` |\n| Optional deep research completion validation | `references\u002Fend-to-end-validation.md` |\n| Logs, unhealthy services, port conflicts, config failures | `references\u002Ftroubleshooting.md` |\n| Stop services, restart, rebuild, safe cleanup | `references\u002Fshutdown.md` |\n\n### Step 5 - Validate and hand off\n\nAfter startup, read `references\u002Fvalidation.md` and run the appropriate checks for the selected mode. For the default\nlocal backend, verify health:\n\n```bash\ncurl -sf http:\u002F\u002Flocalhost:8000\u002Fhealth\n```\n\nExpected output: a successful JSON health response or an empty successful response depending on the server build. If the\ncommand fails, read `references\u002Ftroubleshooting.md` and diagnose before claiming the backend is ready.\n\n`aiq-research` needs a reachable AI-Q server URL. If the backend is on the default port, no extra configuration is\nneeded:\n\n```bash\nAIQ_SERVER_URL=http:\u002F\u002Flocalhost:8000\n```\n\nIf the backend runs elsewhere, tell the user to set:\n\n```bash\nexport AIQ_SERVER_URL=\"http:\u002F\u002Flocalhost:\u003CPORT>\"\n```\n\nDo not continue into deep research or deep research completion validation unless the user asks for it or confirms the\npost-deploy validation prompt. This skill's success criterion is a deployed and basically validated server, not report\ngeneration quality.\n\n## Version Compatibility\n\n**IMPORTANT:** This skill is designed for NVIDIA AI-Q Blueprint version 2.1.0.\n\nSemantic Versioning Compatibility Rules:\n\n```text\nSkill version: X.Y.Z\nBlueprint version: A.B.C\n\nCompatible IF:\n1. A == X (Major versions MUST match)\n2. B >= Y (Minor version must be equal or greater)\n3. C can be anything (Patch version does not affect compatibility)\n```\n\nExamples:\n\n- Skill version 2.1.0 is compatible with Blueprint version 2.1.0.\n- Skill version 2.1.0 is compatible with Blueprint version 2.2.0.\n- Skill version 2.1.0 is compatible with Blueprint version 2.1.5.\n- Skill version 2.1.0 is not compatible with Blueprint version 3.0.0.\n- Skill version 2.1.0 is not compatible with Blueprint version 2.0.0.\n\nIf your Blueprint version is not compatible:\n\n1. Check for an updated skill version matching your Blueprint version.\n2. Use a Blueprint version compatible with this skill.\n3. Proceed with caution only when the user accepts the compatibility risk; deployment commands or config names may have\n   changed.\n\n## Security Best Practices\n\n- Never print secret values. Check only whether required environment variables are set.\n- Store credentials in `deploy\u002F.env` or environment variables, not in chat transcripts, shell history, committed files,\n  or example commands.\n- Do not overwrite `deploy\u002F.env` when it already exists.\n- Ask before destructive cleanup such as deleting Docker volumes with `down -v`.\n- Do not claim FRAG is ready unless both `RAG_SERVER_URL` and `RAG_INGEST_URL` are configured and reachable.\n- Run verification commands yourself when possible.\n\n## Limitations\n\n- This skill prepares and validates AI-Q infrastructure; it does not judge deep research report quality.\n- It cannot provide or inspect secret values. Users must configure credentials outside chat.\n- Helm, FRAG, custom config, and self-hosted model paths depend on infrastructure the user controls.\n- Destructive cleanup, such as deleting Docker volumes, requires explicit user approval.\n\n## Examples\n\n### Example 1: Deploy a backend-only Skill server with Docker Compose\n\n```bash\ntest -f deploy\u002F.env || cp deploy\u002F.env.example deploy\u002F.env\ngit check-ignore deploy\u002F.env\ncd deploy\u002Fcompose\nBUILD_TARGET=release docker compose --env-file ..\u002F.env -f docker-compose.yaml config --quiet\nBUILD_TARGET=release docker compose --env-file ..\u002F.env -f docker-compose.yaml up -d --build aiq-agent\ncurl -sf http:\u002F\u002Flocalhost:8000\u002Fhealth\n```\n\nExpected output:\n\n```text\ndeploy\u002F.env\n\u003Cdocker compose starts aiq-agent and dependencies>\n\u003Chealth endpoint returns a successful response>\n```\n\nIf Docker, ports, credentials, or health checks fail, read `references\u002Ftroubleshooting.md` before retrying.\n\n### Example 2: Hand off a non-default backend URL to aiq-research\n\n```bash\nexport AIQ_SERVER_URL=\"http:\u002F\u002Flocalhost:8100\"\ncurl -sf \"$AIQ_SERVER_URL\u002Fhealth\"\n```\n\nExpected output: a successful health response. Then tell the user to keep `AIQ_SERVER_URL` set before invoking\n`aiq-research`.\n\n## References\n\n| Topic | Documentation |\n|---|---|\n| Locate or clone AI-Q | `references\u002Flocate-or-clone.md` |\n| Environment and secrets | `references\u002Fenv-and-secrets.md` |\n| Workflow configs | `references\u002Fconfigs.md` |\n| Agent Skill backend | `references\u002Fskill-backend.md` |\n| CLI deployment | `references\u002Fterminal-cli.md` |\n| Local web deployment | `references\u002Flocal-web.md` |\n| Docker Compose deployment | `references\u002Fdocker-compose.md` |\n| Kubernetes and Helm deployment | `references\u002Fkubernetes-helm.md` |\n| FRAG integration | `references\u002Ffrag.md` |\n| Basic validation | `references\u002Fvalidation.md` |\n| End-to-end validation | `references\u002Fend-to-end-validation.md` |\n| Troubleshooting | `references\u002Ftroubleshooting.md` |\n| Shutdown and cleanup | `references\u002Fshutdown.md` |\n\n## Common Issues\n\n### Issue: Backend port is already in use\n\n**Symptoms:**\n\n- Docker Compose fails to bind port `8000`.\n- `curl -sf http:\u002F\u002Flocalhost:8000\u002Fhealth` reaches an unexpected service or fails.\n\n**Causes:**\n\n- Another AI-Q backend or local development server is already running.\n- `PORT` in `deploy\u002F.env` conflicts with an existing process.\n\n**Solutions:**\n\n1. Identify the process:\n   ```bash\n   lsof -nP -iTCP:8000 -sTCP:LISTEN\n   ```\n2. Either stop the conflicting process with the user's approval or set a different port in `deploy\u002F.env`, such as\n   `PORT=8100`.\n3. Restart the selected deployment path and verify:\n   ```bash\n   curl -sf http:\u002F\u002Flocalhost:8100\u002Fhealth\n   ```\n\n### Issue: Required credentials are missing\n\n**Symptoms:**\n\n- Infrastructure starts, but model-backed chat or research requests fail.\n- Logs mention unauthorized, forbidden, invalid key, or missing provider configuration.\n\n**Causes:**\n\n- `NVIDIA_API_KEY` is missing or empty.\n- No supported search provider key is configured for web research.\n\n**Solutions:**\n\n1. Check presence without printing values by following `references\u002Fenv-and-secrets.md`.\n2. Ask the user to update `deploy\u002F.env`; do not ask them to paste secrets into chat.\n3. Rerun `references\u002Fvalidation.md` after the user updates credentials.\n\n### Issue: Backend is healthy but not compatible with aiq-research\n\n**Symptoms:**\n\n- `\u002Fhealth` succeeds, but `\u002Fchat` or `\u002Fv1\u002Fjobs\u002Fasync\u002Fagents` fails.\n- `aiq-research` reports that async agents are unavailable.\n\n**Causes:**\n\n- The selected config is CLI-only or does not expose the web\u002FAPI backend expected by the skill.\n- `BACKEND_CONFIG` or `CONFIG_FILE` points at the wrong AI-Q config.\n\n**Solutions:**\n\n1. Read `references\u002Fconfigs.md` and confirm the selected config is API-enabled.\n2. For the default Skill backend, use `configs\u002Fconfig_web_default_llamaindex.yml`.\n3. Restart the backend and rerun `references\u002Fvalidation.md`.\n\n### Issue: Docker cleanup would remove useful state\n\n**Symptoms:**\n\n- Troubleshooting suggests `docker compose down -v`.\n- The user may have local PostgreSQL job or checkpoint data they want to keep.\n\n**Causes:**\n\n- `down -v` removes Docker volumes.\n- Rebuilds and restarts are often enough for config or image changes.\n\n**Solutions:**\n\n1. Prefer a normal restart from `references\u002Fshutdown.md`.\n2. Ask for explicit approval before running volume deletion.\n3. After cleanup, rerun deployment and validation from the selected route.\n",{"data":32,"body":45},{"name":4,"description":6,"license":23,"compatibility":33,"metadata":34,"allowed-tools":44},"Designed for Claude Code, OpenCode, Codex, and Agent Skills-compatible tools. Requires Git, network\naccess to GitHub, and one selected runtime path: Docker Compose v2 for the default local deployment,\nPython 3.11+ and uv for local process or CLI mode, Node.js 20+ and npm for local web UI mode, or\nkubectl 1.28+ and Helm 3.12+ for Kubernetes and Helm mode.\n",{"version":35,"author":36,"github-url":37,"tags":38},"2.1.0","NVIDIA AI-Q Blueprint Team \u003Caiq-blueprint@nvidia.com>","https:\u002F\u002Fgithub.com\u002FNVIDIA-AI-Blueprints\u002Faiq",[8,39,40,41,42,43],"aiq","blueprint","deploy","operations","agent-skills","Read Bash",{"type":46,"children":47},"root",[48,57,64,79,91,97,102,227,240,274,286,292,362,369,382,452,471,477,482,492,497,509,515,534,629,641,653,659,664,943,949,961,986,998,1008,1032,1037,1076,1081,1087,1098,1103,1112,1117,1145,1150,1168,1174,1244,1250,1273,1279,1285,1485,1490,1499,1511,1517,1581,1599,1605,1835,1841,1847,1855,1881,1889,1915,1923,2008,2014,2021,2034,2041,2059,2066,2104,2110,2117,2155,2162,2186,2193,2230,2236,2243,2263,2270,2288,2295,2319],{"type":49,"tag":50,"props":51,"children":53},"element","h1",{"id":52},"aiq-deploy-skill",[54],{"type":55,"value":56},"text","AIQ Deploy Skill",{"type":49,"tag":58,"props":59,"children":61},"h2",{"id":60},"purpose",[62],{"type":55,"value":63},"Purpose",{"type":49,"tag":65,"props":66,"children":67},"p",{},[68,70,77],{"type":55,"value":69},"Use this skill to get a local or self-hosted NVIDIA AI-Q Blueprint server running and verified for use by\n",{"type":49,"tag":71,"props":72,"children":74},"code",{"className":73},[],[75],{"type":55,"value":76},"aiq-research",{"type":55,"value":78},".",{"type":49,"tag":65,"props":80,"children":81},{},[82,84,89],{"type":55,"value":83},"This skill owns setup, deployment, operational checks, troubleshooting, and shutdown. It does not run deep\nresearch itself. After deployment is healthy, hand off the verified server URL to ",{"type":49,"tag":71,"props":85,"children":87},{"className":86},[],[88],{"type":55,"value":76},{"type":55,"value":90},".\nThe workflow stays explicit so deployment validation and handoff are repeatable across supported agent clients.",{"type":49,"tag":58,"props":92,"children":94},{"id":93},"prerequisites",[95],{"type":55,"value":96},"Prerequisites",{"type":49,"tag":65,"props":98,"children":99},{},[100],{"type":55,"value":101},"Users need:",{"type":49,"tag":103,"props":104,"children":105},"ul",{},[106,118,123,173,178,214],{"type":49,"tag":107,"props":108,"children":109},"li",{},[110,112,117],{"type":55,"value":111},"Access to clone or update ",{"type":49,"tag":71,"props":113,"children":115},{"className":114},[],[116],{"type":55,"value":37},{"type":55,"value":78},{"type":49,"tag":107,"props":119,"children":120},{},[121],{"type":55,"value":122},"Git available in the shell.",{"type":49,"tag":107,"props":124,"children":125},{},[126,128],{"type":55,"value":127},"One deployment runtime:\n",{"type":49,"tag":103,"props":129,"children":130},{},[131,136,149,162],{"type":49,"tag":107,"props":132,"children":133},{},[134],{"type":55,"value":135},"Docker Engine with Docker Compose v2 for the default durable local deployment.",{"type":49,"tag":107,"props":137,"children":138},{},[139,141,147],{"type":55,"value":140},"Python 3.11+ and ",{"type":49,"tag":71,"props":142,"children":144},{"className":143},[],[145],{"type":55,"value":146},"uv",{"type":55,"value":148}," for local process or CLI mode.",{"type":49,"tag":107,"props":150,"children":151},{},[152,154,160],{"type":55,"value":153},"Node.js 20+ and ",{"type":49,"tag":71,"props":155,"children":157},{"className":156},[],[158],{"type":55,"value":159},"npm",{"type":55,"value":161}," for local browser UI development mode.",{"type":49,"tag":107,"props":163,"children":164},{},[165,171],{"type":49,"tag":71,"props":166,"children":168},{"className":167},[],[169],{"type":55,"value":170},"kubectl",{"type":55,"value":172}," 1.28+, Helm 3.12+, and access to a Kubernetes cluster for Helm mode.",{"type":49,"tag":107,"props":174,"children":175},{},[176],{"type":55,"value":177},"Network access to GitHub, NVIDIA-hosted model endpoints, and any selected search provider.",{"type":49,"tag":107,"props":179,"children":180},{},[181,183,189,191,197,199,205,207,213],{"type":55,"value":182},"Credentials stored outside chat. Hosted-model usage requires ",{"type":49,"tag":71,"props":184,"children":186},{"className":185},[],[187],{"type":55,"value":188},"NVIDIA_API_KEY",{"type":55,"value":190},"; web research requires at least\none supported search provider key such as ",{"type":49,"tag":71,"props":192,"children":194},{"className":193},[],[195],{"type":55,"value":196},"TAVILY_API_KEY",{"type":55,"value":198},", ",{"type":49,"tag":71,"props":200,"children":202},{"className":201},[],[203],{"type":55,"value":204},"SERPER_API_KEY",{"type":55,"value":206},", or ",{"type":49,"tag":71,"props":208,"children":210},{"className":209},[],[211],{"type":55,"value":212},"EXA_API_KEY",{"type":55,"value":78},{"type":49,"tag":107,"props":215,"children":216},{},[217,219,225],{"type":55,"value":218},"System capacity for the selected runtime. Docker Compose mode starts the AI-Q backend and PostgreSQL by default;\nbrowser UI mode also uses frontend port ",{"type":49,"tag":71,"props":220,"children":222},{"className":221},[],[223],{"type":55,"value":224},"3000",{"type":55,"value":226},". Self-hosted model or RAG deployments may require GPU resources.",{"type":49,"tag":65,"props":228,"children":229},{},[230,232,238],{"type":55,"value":231},"Before writing secrets, verify ",{"type":49,"tag":71,"props":233,"children":235},{"className":234},[],[236],{"type":55,"value":237},"deploy\u002F.env",{"type":55,"value":239}," is ignored:",{"type":49,"tag":241,"props":242,"children":247},"pre",{"className":243,"code":244,"language":245,"meta":246,"style":246},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","git check-ignore deploy\u002F.env\n","bash","",[248],{"type":49,"tag":71,"props":249,"children":250},{"__ignoreMap":246},[251],{"type":49,"tag":252,"props":253,"children":256},"span",{"class":254,"line":255},"line",1,[257,263,269],{"type":49,"tag":252,"props":258,"children":260},{"style":259},"--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B",[261],{"type":55,"value":262},"git",{"type":49,"tag":252,"props":264,"children":266},{"style":265},"--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D",[267],{"type":55,"value":268}," check-ignore",{"type":49,"tag":252,"props":270,"children":271},{"style":265},[272],{"type":55,"value":273}," deploy\u002F.env\n",{"type":49,"tag":65,"props":275,"children":276},{},[277,279,284],{"type":55,"value":278},"Expected output: ",{"type":49,"tag":71,"props":280,"children":282},{"className":281},[],[283],{"type":55,"value":237},{"type":55,"value":285}," or a matching ignore rule. If it is not ignored, stop and fix the ignore rule before\nplacing credentials in the file.",{"type":49,"tag":58,"props":287,"children":289},{"id":288},"instructions",[290],{"type":55,"value":291},"Instructions",{"type":49,"tag":293,"props":294,"children":295},"ol",{},[296,301,306,311,323,328,333,338,357],{"type":49,"tag":107,"props":297,"children":298},{},[299],{"type":55,"value":300},"Locate or clone the AI-Q repository.",{"type":49,"tag":107,"props":302,"children":303},{},[304],{"type":55,"value":305},"Confirm the expected repository files exist.",{"type":49,"tag":107,"props":307,"children":308},{},[309],{"type":55,"value":310},"Select the deployment mode.",{"type":49,"tag":107,"props":312,"children":313},{},[314,316,321],{"type":55,"value":315},"Prepare ",{"type":49,"tag":71,"props":317,"children":319},{"className":318},[],[320],{"type":55,"value":237},{"type":55,"value":322}," without overwriting user secrets.",{"type":49,"tag":107,"props":324,"children":325},{},[326],{"type":55,"value":327},"Check runtime prerequisites for the selected path.",{"type":49,"tag":107,"props":329,"children":330},{},[331],{"type":55,"value":332},"Start the selected deployment.",{"type":49,"tag":107,"props":334,"children":335},{},[336],{"type":55,"value":337},"Run basic validation.",{"type":49,"tag":107,"props":339,"children":340},{},[341,343,349,351,356],{"type":55,"value":342},"Report the verified ",{"type":49,"tag":71,"props":344,"children":346},{"className":345},[],[347],{"type":55,"value":348},"AIQ_SERVER_URL",{"type":55,"value":350}," for ",{"type":49,"tag":71,"props":352,"children":354},{"className":353},[],[355],{"type":55,"value":76},{"type":55,"value":78},{"type":49,"tag":107,"props":358,"children":359},{},[360],{"type":55,"value":361},"Ask whether to run optional deep research completion validation.",{"type":49,"tag":363,"props":364,"children":366},"h3",{"id":365},"step-1-locate-or-clone-ai-q",[367],{"type":55,"value":368},"Step 1 - Locate or clone AI-Q",{"type":49,"tag":65,"props":370,"children":371},{},[372,374,380],{"type":55,"value":373},"If no AI-Q checkout exists, read ",{"type":49,"tag":71,"props":375,"children":377},{"className":376},[],[378],{"type":55,"value":379},"references\u002Flocate-or-clone.md",{"type":55,"value":381}," before cloning. In an existing checkout, confirm the\nrequired files:",{"type":49,"tag":241,"props":383,"children":385},{"className":243,"code":384,"language":245,"meta":246,"style":246},"pwd\ntest -f pyproject.toml\ntest -f deploy\u002F.env.example\ntest -d configs\n",[386],{"type":49,"tag":71,"props":387,"children":388},{"__ignoreMap":246},[389,398,417,434],{"type":49,"tag":252,"props":390,"children":391},{"class":254,"line":255},[392],{"type":49,"tag":252,"props":393,"children":395},{"style":394},"--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF",[396],{"type":55,"value":397},"pwd\n",{"type":49,"tag":252,"props":399,"children":401},{"class":254,"line":400},2,[402,407,412],{"type":49,"tag":252,"props":403,"children":404},{"style":394},[405],{"type":55,"value":406},"test",{"type":49,"tag":252,"props":408,"children":409},{"style":265},[410],{"type":55,"value":411}," -f",{"type":49,"tag":252,"props":413,"children":414},{"style":265},[415],{"type":55,"value":416}," pyproject.toml\n",{"type":49,"tag":252,"props":418,"children":420},{"class":254,"line":419},3,[421,425,429],{"type":49,"tag":252,"props":422,"children":423},{"style":394},[424],{"type":55,"value":406},{"type":49,"tag":252,"props":426,"children":427},{"style":265},[428],{"type":55,"value":411},{"type":49,"tag":252,"props":430,"children":431},{"style":265},[432],{"type":55,"value":433}," deploy\u002F.env.example\n",{"type":49,"tag":252,"props":435,"children":437},{"class":254,"line":436},4,[438,442,447],{"type":49,"tag":252,"props":439,"children":440},{"style":394},[441],{"type":55,"value":406},{"type":49,"tag":252,"props":443,"children":444},{"style":265},[445],{"type":55,"value":446}," -d",{"type":49,"tag":252,"props":448,"children":449},{"style":265},[450],{"type":55,"value":451}," configs\n",{"type":49,"tag":65,"props":453,"children":454},{},[455,456,462,464,469],{"type":55,"value":278},{"type":49,"tag":71,"props":457,"children":459},{"className":458},[],[460],{"type":55,"value":461},"pwd",{"type":55,"value":463}," prints the AI-Q repository path; the ",{"type":49,"tag":71,"props":465,"children":467},{"className":466},[],[468],{"type":55,"value":406},{"type":55,"value":470}," commands exit with status 0 and no output.",{"type":49,"tag":363,"props":472,"children":474},{"id":473},"step-2-select-the-deployment-mode",[475],{"type":55,"value":476},"Step 2 - Select the deployment mode",{"type":49,"tag":65,"props":478,"children":479},{},[480],{"type":55,"value":481},"If the user asks to install, deploy, set up, or run AI-Q without naming a mode, ask:",{"type":49,"tag":241,"props":483,"children":487},{"className":484,"code":486,"language":55,"meta":246},[485],"language-text","How do you want to run AI-Q?\n\n1. Skill backend - backend-only service for aiq-research w\u002Fo browser UI.\n2. CLI - interactive terminal AI-Q.\n3. UI - browser AI-Q app with backend and frontend.\n4. Custom - choose an existing AI-Q config or review advanced customization docs before deployment.\n",[488],{"type":49,"tag":71,"props":489,"children":490},{"__ignoreMap":246},[491],{"type":55,"value":486},{"type":49,"tag":65,"props":493,"children":494},{},[495],{"type":55,"value":496},"Wait for the user's answer before starting services.",{"type":49,"tag":65,"props":498,"children":499},{},[500,502,507],{"type":55,"value":501},"Do not ask this question when the user already specified a mode, such as Docker Compose, Helm, UI, CLI, or Agent Skill\nbackend. Do not ask the full mode question when ",{"type":49,"tag":71,"props":503,"children":505},{"className":504},[],[506],{"type":55,"value":76},{"type":55,"value":508}," routed here because a deep research request needs a\nbackend. In that case, prefer Agent Skill backend and ask only for permission to start it if needed.",{"type":49,"tag":363,"props":510,"children":512},{"id":511},"step-3-prepare-environment-and-secrets",[513],{"type":55,"value":514},"Step 3 - Prepare environment and secrets",{"type":49,"tag":65,"props":516,"children":517},{},[518,520,526,528,533],{"type":55,"value":519},"Read ",{"type":49,"tag":71,"props":521,"children":523},{"className":522},[],[524],{"type":55,"value":525},"references\u002Fenv-and-secrets.md",{"type":55,"value":527}," before changing ",{"type":49,"tag":71,"props":529,"children":531},{"className":530},[],[532],{"type":55,"value":237},{"type":55,"value":78},{"type":49,"tag":241,"props":535,"children":537},{"className":243,"code":536,"language":245,"meta":246,"style":246},"if [ ! -f deploy\u002F.env ]; then\n  cp deploy\u002F.env.example deploy\u002F.env\n  echo \"created deploy\u002F.env from deploy\u002F.env.example\"\nfi\n",[538],{"type":49,"tag":71,"props":539,"children":540},{"__ignoreMap":246},[541,581,598,621],{"type":49,"tag":252,"props":542,"children":543},{"class":254,"line":255},[544,550,556,561,565,571,576],{"type":49,"tag":252,"props":545,"children":547},{"style":546},"--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#89DDFF;--shiki-default-font-style:italic;--shiki-dark:#89DDFF;--shiki-dark-font-style:italic",[548],{"type":55,"value":549},"if",{"type":49,"tag":252,"props":551,"children":553},{"style":552},"--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF",[554],{"type":55,"value":555}," [",{"type":49,"tag":252,"props":557,"children":558},{"style":552},[559],{"type":55,"value":560}," !",{"type":49,"tag":252,"props":562,"children":563},{"style":552},[564],{"type":55,"value":411},{"type":49,"tag":252,"props":566,"children":568},{"style":567},"--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8",[569],{"type":55,"value":570}," deploy\u002F.env ",{"type":49,"tag":252,"props":572,"children":573},{"style":552},[574],{"type":55,"value":575},"];",{"type":49,"tag":252,"props":577,"children":578},{"style":546},[579],{"type":55,"value":580}," then\n",{"type":49,"tag":252,"props":582,"children":583},{"class":254,"line":400},[584,589,594],{"type":49,"tag":252,"props":585,"children":586},{"style":259},[587],{"type":55,"value":588},"  cp",{"type":49,"tag":252,"props":590,"children":591},{"style":265},[592],{"type":55,"value":593}," deploy\u002F.env.example",{"type":49,"tag":252,"props":595,"children":596},{"style":265},[597],{"type":55,"value":273},{"type":49,"tag":252,"props":599,"children":600},{"class":254,"line":419},[601,606,611,616],{"type":49,"tag":252,"props":602,"children":603},{"style":394},[604],{"type":55,"value":605},"  echo",{"type":49,"tag":252,"props":607,"children":608},{"style":552},[609],{"type":55,"value":610}," \"",{"type":49,"tag":252,"props":612,"children":613},{"style":265},[614],{"type":55,"value":615},"created deploy\u002F.env from deploy\u002F.env.example",{"type":49,"tag":252,"props":617,"children":618},{"style":552},[619],{"type":55,"value":620},"\"\n",{"type":49,"tag":252,"props":622,"children":623},{"class":254,"line":436},[624],{"type":49,"tag":252,"props":625,"children":626},{"style":546},[627],{"type":55,"value":628},"fi\n",{"type":49,"tag":65,"props":630,"children":631},{},[632,634,639],{"type":55,"value":633},"Expected output when the file is missing: ",{"type":49,"tag":71,"props":635,"children":637},{"className":636},[],[638],{"type":55,"value":615},{"type":55,"value":640},". Expected output when the file\nalready exists: no output, and the existing file is preserved.",{"type":49,"tag":65,"props":642,"children":643},{},[644,646,651],{"type":55,"value":645},"Never print secret values. If credentials are missing, ask the user to update ",{"type":49,"tag":71,"props":647,"children":649},{"className":648},[],[650],{"type":55,"value":237},{"type":55,"value":652},"; do not ask them to paste\nsecret values into chat.",{"type":49,"tag":363,"props":654,"children":656},{"id":655},"step-4-route-to-the-selected-deployment-path",[657],{"type":55,"value":658},"Step 4 - Route to the selected deployment path",{"type":49,"tag":65,"props":660,"children":661},{},[662],{"type":55,"value":663},"Match the user request, then read the referenced file before acting:",{"type":49,"tag":665,"props":666,"children":667},"table",{},[668,687],{"type":49,"tag":669,"props":670,"children":671},"thead",{},[672],{"type":49,"tag":673,"props":674,"children":675},"tr",{},[676,682],{"type":49,"tag":677,"props":678,"children":679},"th",{},[680],{"type":55,"value":681},"User Intent",{"type":49,"tag":677,"props":683,"children":684},{},[685],{"type":55,"value":686},"Reference",{"type":49,"tag":688,"props":689,"children":690},"tbody",{},[691,708,730,761,785,802,819,836,853,870,892,909,926],{"type":49,"tag":673,"props":692,"children":693},{},[694,700],{"type":49,"tag":695,"props":696,"children":697},"td",{},[698],{"type":55,"value":699},"No AI-Q checkout exists, install AIQ, clone AIQ, locate repo",{"type":49,"tag":695,"props":701,"children":702},{},[703],{"type":49,"tag":71,"props":704,"children":706},{"className":705},[],[707],{"type":55,"value":379},{"type":49,"tag":673,"props":709,"children":710},{},[711,722],{"type":49,"tag":695,"props":712,"children":713},{},[714,716],{"type":55,"value":715},"Configure environment, check API keys, inspect ",{"type":49,"tag":71,"props":717,"children":719},{"className":718},[],[720],{"type":55,"value":721},".env",{"type":49,"tag":695,"props":723,"children":724},{},[725],{"type":49,"tag":71,"props":726,"children":728},{"className":727},[],[729],{"type":55,"value":525},{"type":49,"tag":673,"props":731,"children":732},{},[733,752],{"type":49,"tag":695,"props":734,"children":735},{},[736,738,744,746],{"type":55,"value":737},"Choose an AI-Q workflow config, understand config files, set ",{"type":49,"tag":71,"props":739,"children":741},{"className":740},[],[742],{"type":55,"value":743},"BACKEND_CONFIG",{"type":55,"value":745}," or ",{"type":49,"tag":71,"props":747,"children":749},{"className":748},[],[750],{"type":55,"value":751},"CONFIG_FILE",{"type":49,"tag":695,"props":753,"children":754},{},[755],{"type":49,"tag":71,"props":756,"children":758},{"className":757},[],[759],{"type":55,"value":760},"references\u002Fconfigs.md",{"type":49,"tag":673,"props":762,"children":763},{},[764,776],{"type":49,"tag":695,"props":765,"children":766},{},[767,769,774],{"type":55,"value":768},"Backend-only local server for ",{"type":49,"tag":71,"props":770,"children":772},{"className":771},[],[773],{"type":55,"value":76},{"type":55,"value":775},", AIQ as an Agent Skill",{"type":49,"tag":695,"props":777,"children":778},{},[779],{"type":49,"tag":71,"props":780,"children":782},{"className":781},[],[783],{"type":55,"value":784},"references\u002Fskill-backend.md",{"type":49,"tag":673,"props":786,"children":787},{},[788,793],{"type":49,"tag":695,"props":789,"children":790},{},[791],{"type":55,"value":792},"Terminal assistant, CLI-only run, no web UI",{"type":49,"tag":695,"props":794,"children":795},{},[796],{"type":49,"tag":71,"props":797,"children":799},{"className":798},[],[800],{"type":55,"value":801},"references\u002Fterminal-cli.md",{"type":49,"tag":673,"props":803,"children":804},{},[805,810],{"type":49,"tag":695,"props":806,"children":807},{},[808],{"type":55,"value":809},"Quick local development run, start UI\u002Fbackend without containers",{"type":49,"tag":695,"props":811,"children":812},{},[813],{"type":49,"tag":71,"props":814,"children":816},{"className":815},[],[817],{"type":55,"value":818},"references\u002Flocal-web.md",{"type":49,"tag":673,"props":820,"children":821},{},[822,827],{"type":49,"tag":695,"props":823,"children":824},{},[825],{"type":55,"value":826},"Default durable local deployment, Docker Compose, containers, PostgreSQL",{"type":49,"tag":695,"props":828,"children":829},{},[830],{"type":49,"tag":71,"props":831,"children":833},{"className":832},[],[834],{"type":55,"value":835},"references\u002Fdocker-compose.md",{"type":49,"tag":673,"props":837,"children":838},{},[839,844],{"type":49,"tag":695,"props":840,"children":841},{},[842],{"type":55,"value":843},"Kubernetes, Helm, cluster deployment",{"type":49,"tag":695,"props":845,"children":846},{},[847],{"type":49,"tag":71,"props":848,"children":850},{"className":849},[],[851],{"type":55,"value":852},"references\u002Fkubernetes-helm.md",{"type":49,"tag":673,"props":854,"children":855},{},[856,861],{"type":49,"tag":695,"props":857,"children":858},{},[859],{"type":55,"value":860},"Foundational RAG \u002F FRAG integration",{"type":49,"tag":695,"props":862,"children":863},{},[864],{"type":49,"tag":71,"props":865,"children":867},{"className":866},[],[868],{"type":55,"value":869},"references\u002Ffrag.md",{"type":49,"tag":673,"props":871,"children":872},{},[873,883],{"type":49,"tag":695,"props":874,"children":875},{},[876,878],{"type":55,"value":877},"Basic health checks, shallow smoke checks, handoff to ",{"type":49,"tag":71,"props":879,"children":881},{"className":880},[],[882],{"type":55,"value":76},{"type":49,"tag":695,"props":884,"children":885},{},[886],{"type":49,"tag":71,"props":887,"children":889},{"className":888},[],[890],{"type":55,"value":891},"references\u002Fvalidation.md",{"type":49,"tag":673,"props":893,"children":894},{},[895,900],{"type":49,"tag":695,"props":896,"children":897},{},[898],{"type":55,"value":899},"Optional deep research completion validation",{"type":49,"tag":695,"props":901,"children":902},{},[903],{"type":49,"tag":71,"props":904,"children":906},{"className":905},[],[907],{"type":55,"value":908},"references\u002Fend-to-end-validation.md",{"type":49,"tag":673,"props":910,"children":911},{},[912,917],{"type":49,"tag":695,"props":913,"children":914},{},[915],{"type":55,"value":916},"Logs, unhealthy services, port conflicts, config failures",{"type":49,"tag":695,"props":918,"children":919},{},[920],{"type":49,"tag":71,"props":921,"children":923},{"className":922},[],[924],{"type":55,"value":925},"references\u002Ftroubleshooting.md",{"type":49,"tag":673,"props":927,"children":928},{},[929,934],{"type":49,"tag":695,"props":930,"children":931},{},[932],{"type":55,"value":933},"Stop services, restart, rebuild, safe cleanup",{"type":49,"tag":695,"props":935,"children":936},{},[937],{"type":49,"tag":71,"props":938,"children":940},{"className":939},[],[941],{"type":55,"value":942},"references\u002Fshutdown.md",{"type":49,"tag":363,"props":944,"children":946},{"id":945},"step-5-validate-and-hand-off",[947],{"type":55,"value":948},"Step 5 - Validate and hand off",{"type":49,"tag":65,"props":950,"children":951},{},[952,954,959],{"type":55,"value":953},"After startup, read ",{"type":49,"tag":71,"props":955,"children":957},{"className":956},[],[958],{"type":55,"value":891},{"type":55,"value":960}," and run the appropriate checks for the selected mode. For the default\nlocal backend, verify health:",{"type":49,"tag":241,"props":962,"children":964},{"className":243,"code":963,"language":245,"meta":246,"style":246},"curl -sf http:\u002F\u002Flocalhost:8000\u002Fhealth\n",[965],{"type":49,"tag":71,"props":966,"children":967},{"__ignoreMap":246},[968],{"type":49,"tag":252,"props":969,"children":970},{"class":254,"line":255},[971,976,981],{"type":49,"tag":252,"props":972,"children":973},{"style":259},[974],{"type":55,"value":975},"curl",{"type":49,"tag":252,"props":977,"children":978},{"style":265},[979],{"type":55,"value":980}," -sf",{"type":49,"tag":252,"props":982,"children":983},{"style":265},[984],{"type":55,"value":985}," http:\u002F\u002Flocalhost:8000\u002Fhealth\n",{"type":49,"tag":65,"props":987,"children":988},{},[989,991,996],{"type":55,"value":990},"Expected output: a successful JSON health response or an empty successful response depending on the server build. If the\ncommand fails, read ",{"type":49,"tag":71,"props":992,"children":994},{"className":993},[],[995],{"type":55,"value":925},{"type":55,"value":997}," and diagnose before claiming the backend is ready.",{"type":49,"tag":65,"props":999,"children":1000},{},[1001,1006],{"type":49,"tag":71,"props":1002,"children":1004},{"className":1003},[],[1005],{"type":55,"value":76},{"type":55,"value":1007}," needs a reachable AI-Q server URL. If the backend is on the default port, no extra configuration is\nneeded:",{"type":49,"tag":241,"props":1009,"children":1011},{"className":243,"code":1010,"language":245,"meta":246,"style":246},"AIQ_SERVER_URL=http:\u002F\u002Flocalhost:8000\n",[1012],{"type":49,"tag":71,"props":1013,"children":1014},{"__ignoreMap":246},[1015],{"type":49,"tag":252,"props":1016,"children":1017},{"class":254,"line":255},[1018,1022,1027],{"type":49,"tag":252,"props":1019,"children":1020},{"style":567},[1021],{"type":55,"value":348},{"type":49,"tag":252,"props":1023,"children":1024},{"style":552},[1025],{"type":55,"value":1026},"=",{"type":49,"tag":252,"props":1028,"children":1029},{"style":265},[1030],{"type":55,"value":1031},"http:\u002F\u002Flocalhost:8000\n",{"type":49,"tag":65,"props":1033,"children":1034},{},[1035],{"type":55,"value":1036},"If the backend runs elsewhere, tell the user to set:",{"type":49,"tag":241,"props":1038,"children":1040},{"className":243,"code":1039,"language":245,"meta":246,"style":246},"export AIQ_SERVER_URL=\"http:\u002F\u002Flocalhost:\u003CPORT>\"\n",[1041],{"type":49,"tag":71,"props":1042,"children":1043},{"__ignoreMap":246},[1044],{"type":49,"tag":252,"props":1045,"children":1046},{"class":254,"line":255},[1047,1053,1058,1062,1067,1072],{"type":49,"tag":252,"props":1048,"children":1050},{"style":1049},"--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA",[1051],{"type":55,"value":1052},"export",{"type":49,"tag":252,"props":1054,"children":1055},{"style":567},[1056],{"type":55,"value":1057}," AIQ_SERVER_URL",{"type":49,"tag":252,"props":1059,"children":1060},{"style":552},[1061],{"type":55,"value":1026},{"type":49,"tag":252,"props":1063,"children":1064},{"style":552},[1065],{"type":55,"value":1066},"\"",{"type":49,"tag":252,"props":1068,"children":1069},{"style":265},[1070],{"type":55,"value":1071},"http:\u002F\u002Flocalhost:\u003CPORT>",{"type":49,"tag":252,"props":1073,"children":1074},{"style":552},[1075],{"type":55,"value":620},{"type":49,"tag":65,"props":1077,"children":1078},{},[1079],{"type":55,"value":1080},"Do not continue into deep research or deep research completion validation unless the user asks for it or confirms the\npost-deploy validation prompt. This skill's success criterion is a deployed and basically validated server, not report\ngeneration quality.",{"type":49,"tag":58,"props":1082,"children":1084},{"id":1083},"version-compatibility",[1085],{"type":55,"value":1086},"Version Compatibility",{"type":49,"tag":65,"props":1088,"children":1089},{},[1090,1096],{"type":49,"tag":1091,"props":1092,"children":1093},"strong",{},[1094],{"type":55,"value":1095},"IMPORTANT:",{"type":55,"value":1097}," This skill is designed for NVIDIA AI-Q Blueprint version 2.1.0.",{"type":49,"tag":65,"props":1099,"children":1100},{},[1101],{"type":55,"value":1102},"Semantic Versioning Compatibility Rules:",{"type":49,"tag":241,"props":1104,"children":1107},{"className":1105,"code":1106,"language":55,"meta":246},[485],"Skill version: X.Y.Z\nBlueprint version: A.B.C\n\nCompatible IF:\n1. A == X (Major versions MUST match)\n2. B >= Y (Minor version must be equal or greater)\n3. C can be anything (Patch version does not affect compatibility)\n",[1108],{"type":49,"tag":71,"props":1109,"children":1110},{"__ignoreMap":246},[1111],{"type":55,"value":1106},{"type":49,"tag":65,"props":1113,"children":1114},{},[1115],{"type":55,"value":1116},"Examples:",{"type":49,"tag":103,"props":1118,"children":1119},{},[1120,1125,1130,1135,1140],{"type":49,"tag":107,"props":1121,"children":1122},{},[1123],{"type":55,"value":1124},"Skill version 2.1.0 is compatible with Blueprint version 2.1.0.",{"type":49,"tag":107,"props":1126,"children":1127},{},[1128],{"type":55,"value":1129},"Skill version 2.1.0 is compatible with Blueprint version 2.2.0.",{"type":49,"tag":107,"props":1131,"children":1132},{},[1133],{"type":55,"value":1134},"Skill version 2.1.0 is compatible with Blueprint version 2.1.5.",{"type":49,"tag":107,"props":1136,"children":1137},{},[1138],{"type":55,"value":1139},"Skill version 2.1.0 is not compatible with Blueprint version 3.0.0.",{"type":49,"tag":107,"props":1141,"children":1142},{},[1143],{"type":55,"value":1144},"Skill version 2.1.0 is not compatible with Blueprint version 2.0.0.",{"type":49,"tag":65,"props":1146,"children":1147},{},[1148],{"type":55,"value":1149},"If your Blueprint version is not compatible:",{"type":49,"tag":293,"props":1151,"children":1152},{},[1153,1158,1163],{"type":49,"tag":107,"props":1154,"children":1155},{},[1156],{"type":55,"value":1157},"Check for an updated skill version matching your Blueprint version.",{"type":49,"tag":107,"props":1159,"children":1160},{},[1161],{"type":55,"value":1162},"Use a Blueprint version compatible with this skill.",{"type":49,"tag":107,"props":1164,"children":1165},{},[1166],{"type":55,"value":1167},"Proceed with caution only when the user accepts the compatibility risk; deployment commands or config names may have\nchanged.",{"type":49,"tag":58,"props":1169,"children":1171},{"id":1170},"security-best-practices",[1172],{"type":55,"value":1173},"Security Best Practices",{"type":49,"tag":103,"props":1175,"children":1176},{},[1177,1182,1194,1206,1218,1239],{"type":49,"tag":107,"props":1178,"children":1179},{},[1180],{"type":55,"value":1181},"Never print secret values. Check only whether required environment variables are set.",{"type":49,"tag":107,"props":1183,"children":1184},{},[1185,1187,1192],{"type":55,"value":1186},"Store credentials in ",{"type":49,"tag":71,"props":1188,"children":1190},{"className":1189},[],[1191],{"type":55,"value":237},{"type":55,"value":1193}," or environment variables, not in chat transcripts, shell history, committed files,\nor example commands.",{"type":49,"tag":107,"props":1195,"children":1196},{},[1197,1199,1204],{"type":55,"value":1198},"Do not overwrite ",{"type":49,"tag":71,"props":1200,"children":1202},{"className":1201},[],[1203],{"type":55,"value":237},{"type":55,"value":1205}," when it already exists.",{"type":49,"tag":107,"props":1207,"children":1208},{},[1209,1211,1217],{"type":55,"value":1210},"Ask before destructive cleanup such as deleting Docker volumes with ",{"type":49,"tag":71,"props":1212,"children":1214},{"className":1213},[],[1215],{"type":55,"value":1216},"down -v",{"type":55,"value":78},{"type":49,"tag":107,"props":1219,"children":1220},{},[1221,1223,1229,1231,1237],{"type":55,"value":1222},"Do not claim FRAG is ready unless both ",{"type":49,"tag":71,"props":1224,"children":1226},{"className":1225},[],[1227],{"type":55,"value":1228},"RAG_SERVER_URL",{"type":55,"value":1230}," and ",{"type":49,"tag":71,"props":1232,"children":1234},{"className":1233},[],[1235],{"type":55,"value":1236},"RAG_INGEST_URL",{"type":55,"value":1238}," are configured and reachable.",{"type":49,"tag":107,"props":1240,"children":1241},{},[1242],{"type":55,"value":1243},"Run verification commands yourself when possible.",{"type":49,"tag":58,"props":1245,"children":1247},{"id":1246},"limitations",[1248],{"type":55,"value":1249},"Limitations",{"type":49,"tag":103,"props":1251,"children":1252},{},[1253,1258,1263,1268],{"type":49,"tag":107,"props":1254,"children":1255},{},[1256],{"type":55,"value":1257},"This skill prepares and validates AI-Q infrastructure; it does not judge deep research report quality.",{"type":49,"tag":107,"props":1259,"children":1260},{},[1261],{"type":55,"value":1262},"It cannot provide or inspect secret values. Users must configure credentials outside chat.",{"type":49,"tag":107,"props":1264,"children":1265},{},[1266],{"type":55,"value":1267},"Helm, FRAG, custom config, and self-hosted model paths depend on infrastructure the user controls.",{"type":49,"tag":107,"props":1269,"children":1270},{},[1271],{"type":55,"value":1272},"Destructive cleanup, such as deleting Docker volumes, requires explicit user approval.",{"type":49,"tag":58,"props":1274,"children":1276},{"id":1275},"examples",[1277],{"type":55,"value":1278},"Examples",{"type":49,"tag":363,"props":1280,"children":1282},{"id":1281},"example-1-deploy-a-backend-only-skill-server-with-docker-compose",[1283],{"type":55,"value":1284},"Example 1: Deploy a backend-only Skill server with Docker Compose",{"type":49,"tag":241,"props":1286,"children":1288},{"className":243,"code":1287,"language":245,"meta":246,"style":246},"test -f deploy\u002F.env || cp deploy\u002F.env.example deploy\u002F.env\ngit check-ignore deploy\u002F.env\ncd deploy\u002Fcompose\nBUILD_TARGET=release docker compose --env-file ..\u002F.env -f docker-compose.yaml config --quiet\nBUILD_TARGET=release docker compose --env-file ..\u002F.env -f docker-compose.yaml up -d --build aiq-agent\ncurl -sf http:\u002F\u002Flocalhost:8000\u002Fhealth\n",[1289],{"type":49,"tag":71,"props":1290,"children":1291},{"__ignoreMap":246},[1292,1326,1341,1354,1410,1469],{"type":49,"tag":252,"props":1293,"children":1294},{"class":254,"line":255},[1295,1299,1303,1308,1313,1318,1322],{"type":49,"tag":252,"props":1296,"children":1297},{"style":394},[1298],{"type":55,"value":406},{"type":49,"tag":252,"props":1300,"children":1301},{"style":265},[1302],{"type":55,"value":411},{"type":49,"tag":252,"props":1304,"children":1305},{"style":265},[1306],{"type":55,"value":1307}," deploy\u002F.env",{"type":49,"tag":252,"props":1309,"children":1310},{"style":552},[1311],{"type":55,"value":1312}," ||",{"type":49,"tag":252,"props":1314,"children":1315},{"style":259},[1316],{"type":55,"value":1317}," cp",{"type":49,"tag":252,"props":1319,"children":1320},{"style":265},[1321],{"type":55,"value":593},{"type":49,"tag":252,"props":1323,"children":1324},{"style":265},[1325],{"type":55,"value":273},{"type":49,"tag":252,"props":1327,"children":1328},{"class":254,"line":400},[1329,1333,1337],{"type":49,"tag":252,"props":1330,"children":1331},{"style":259},[1332],{"type":55,"value":262},{"type":49,"tag":252,"props":1334,"children":1335},{"style":265},[1336],{"type":55,"value":268},{"type":49,"tag":252,"props":1338,"children":1339},{"style":265},[1340],{"type":55,"value":273},{"type":49,"tag":252,"props":1342,"children":1343},{"class":254,"line":419},[1344,1349],{"type":49,"tag":252,"props":1345,"children":1346},{"style":394},[1347],{"type":55,"value":1348},"cd",{"type":49,"tag":252,"props":1350,"children":1351},{"style":265},[1352],{"type":55,"value":1353}," deploy\u002Fcompose\n",{"type":49,"tag":252,"props":1355,"children":1356},{"class":254,"line":436},[1357,1362,1366,1371,1376,1381,1386,1391,1395,1400,1405],{"type":49,"tag":252,"props":1358,"children":1359},{"style":567},[1360],{"type":55,"value":1361},"BUILD_TARGET",{"type":49,"tag":252,"props":1363,"children":1364},{"style":552},[1365],{"type":55,"value":1026},{"type":49,"tag":252,"props":1367,"children":1368},{"style":265},[1369],{"type":55,"value":1370},"release",{"type":49,"tag":252,"props":1372,"children":1373},{"style":259},[1374],{"type":55,"value":1375}," docker",{"type":49,"tag":252,"props":1377,"children":1378},{"style":265},[1379],{"type":55,"value":1380}," compose",{"type":49,"tag":252,"props":1382,"children":1383},{"style":265},[1384],{"type":55,"value":1385}," --env-file",{"type":49,"tag":252,"props":1387,"children":1388},{"style":265},[1389],{"type":55,"value":1390}," ..\u002F.env",{"type":49,"tag":252,"props":1392,"children":1393},{"style":265},[1394],{"type":55,"value":411},{"type":49,"tag":252,"props":1396,"children":1397},{"style":265},[1398],{"type":55,"value":1399}," docker-compose.yaml",{"type":49,"tag":252,"props":1401,"children":1402},{"style":265},[1403],{"type":55,"value":1404}," config",{"type":49,"tag":252,"props":1406,"children":1407},{"style":265},[1408],{"type":55,"value":1409}," --quiet\n",{"type":49,"tag":252,"props":1411,"children":1413},{"class":254,"line":1412},5,[1414,1418,1422,1426,1430,1434,1438,1442,1446,1450,1455,1459,1464],{"type":49,"tag":252,"props":1415,"children":1416},{"style":567},[1417],{"type":55,"value":1361},{"type":49,"tag":252,"props":1419,"children":1420},{"style":552},[1421],{"type":55,"value":1026},{"type":49,"tag":252,"props":1423,"children":1424},{"style":265},[1425],{"type":55,"value":1370},{"type":49,"tag":252,"props":1427,"children":1428},{"style":259},[1429],{"type":55,"value":1375},{"type":49,"tag":252,"props":1431,"children":1432},{"style":265},[1433],{"type":55,"value":1380},{"type":49,"tag":252,"props":1435,"children":1436},{"style":265},[1437],{"type":55,"value":1385},{"type":49,"tag":252,"props":1439,"children":1440},{"style":265},[1441],{"type":55,"value":1390},{"type":49,"tag":252,"props":1443,"children":1444},{"style":265},[1445],{"type":55,"value":411},{"type":49,"tag":252,"props":1447,"children":1448},{"style":265},[1449],{"type":55,"value":1399},{"type":49,"tag":252,"props":1451,"children":1452},{"style":265},[1453],{"type":55,"value":1454}," up",{"type":49,"tag":252,"props":1456,"children":1457},{"style":265},[1458],{"type":55,"value":446},{"type":49,"tag":252,"props":1460,"children":1461},{"style":265},[1462],{"type":55,"value":1463}," --build",{"type":49,"tag":252,"props":1465,"children":1466},{"style":265},[1467],{"type":55,"value":1468}," aiq-agent\n",{"type":49,"tag":252,"props":1470,"children":1472},{"class":254,"line":1471},6,[1473,1477,1481],{"type":49,"tag":252,"props":1474,"children":1475},{"style":259},[1476],{"type":55,"value":975},{"type":49,"tag":252,"props":1478,"children":1479},{"style":265},[1480],{"type":55,"value":980},{"type":49,"tag":252,"props":1482,"children":1483},{"style":265},[1484],{"type":55,"value":985},{"type":49,"tag":65,"props":1486,"children":1487},{},[1488],{"type":55,"value":1489},"Expected output:",{"type":49,"tag":241,"props":1491,"children":1494},{"className":1492,"code":1493,"language":55,"meta":246},[485],"deploy\u002F.env\n\u003Cdocker compose starts aiq-agent and dependencies>\n\u003Chealth endpoint returns a successful response>\n",[1495],{"type":49,"tag":71,"props":1496,"children":1497},{"__ignoreMap":246},[1498],{"type":55,"value":1493},{"type":49,"tag":65,"props":1500,"children":1501},{},[1502,1504,1509],{"type":55,"value":1503},"If Docker, ports, credentials, or health checks fail, read ",{"type":49,"tag":71,"props":1505,"children":1507},{"className":1506},[],[1508],{"type":55,"value":925},{"type":55,"value":1510}," before retrying.",{"type":49,"tag":363,"props":1512,"children":1514},{"id":1513},"example-2-hand-off-a-non-default-backend-url-to-aiq-research",[1515],{"type":55,"value":1516},"Example 2: Hand off a non-default backend URL to aiq-research",{"type":49,"tag":241,"props":1518,"children":1520},{"className":243,"code":1519,"language":245,"meta":246,"style":246},"export AIQ_SERVER_URL=\"http:\u002F\u002Flocalhost:8100\"\ncurl -sf \"$AIQ_SERVER_URL\u002Fhealth\"\n",[1521],{"type":49,"tag":71,"props":1522,"children":1523},{"__ignoreMap":246},[1524,1552],{"type":49,"tag":252,"props":1525,"children":1526},{"class":254,"line":255},[1527,1531,1535,1539,1543,1548],{"type":49,"tag":252,"props":1528,"children":1529},{"style":1049},[1530],{"type":55,"value":1052},{"type":49,"tag":252,"props":1532,"children":1533},{"style":567},[1534],{"type":55,"value":1057},{"type":49,"tag":252,"props":1536,"children":1537},{"style":552},[1538],{"type":55,"value":1026},{"type":49,"tag":252,"props":1540,"children":1541},{"style":552},[1542],{"type":55,"value":1066},{"type":49,"tag":252,"props":1544,"children":1545},{"style":265},[1546],{"type":55,"value":1547},"http:\u002F\u002Flocalhost:8100",{"type":49,"tag":252,"props":1549,"children":1550},{"style":552},[1551],{"type":55,"value":620},{"type":49,"tag":252,"props":1553,"children":1554},{"class":254,"line":400},[1555,1559,1563,1567,1572,1577],{"type":49,"tag":252,"props":1556,"children":1557},{"style":259},[1558],{"type":55,"value":975},{"type":49,"tag":252,"props":1560,"children":1561},{"style":265},[1562],{"type":55,"value":980},{"type":49,"tag":252,"props":1564,"children":1565},{"style":552},[1566],{"type":55,"value":610},{"type":49,"tag":252,"props":1568,"children":1569},{"style":567},[1570],{"type":55,"value":1571},"$AIQ_SERVER_URL",{"type":49,"tag":252,"props":1573,"children":1574},{"style":265},[1575],{"type":55,"value":1576},"\u002Fhealth",{"type":49,"tag":252,"props":1578,"children":1579},{"style":552},[1580],{"type":55,"value":620},{"type":49,"tag":65,"props":1582,"children":1583},{},[1584,1586,1591,1593,1598],{"type":55,"value":1585},"Expected output: a successful health response. Then tell the user to keep ",{"type":49,"tag":71,"props":1587,"children":1589},{"className":1588},[],[1590],{"type":55,"value":348},{"type":55,"value":1592}," set before invoking\n",{"type":49,"tag":71,"props":1594,"children":1596},{"className":1595},[],[1597],{"type":55,"value":76},{"type":55,"value":78},{"type":49,"tag":58,"props":1600,"children":1602},{"id":1601},"references",[1603],{"type":55,"value":1604},"References",{"type":49,"tag":665,"props":1606,"children":1607},{},[1608,1624],{"type":49,"tag":669,"props":1609,"children":1610},{},[1611],{"type":49,"tag":673,"props":1612,"children":1613},{},[1614,1619],{"type":49,"tag":677,"props":1615,"children":1616},{},[1617],{"type":55,"value":1618},"Topic",{"type":49,"tag":677,"props":1620,"children":1621},{},[1622],{"type":55,"value":1623},"Documentation",{"type":49,"tag":688,"props":1625,"children":1626},{},[1627,1643,1659,1675,1691,1707,1723,1739,1755,1771,1787,1803,1819],{"type":49,"tag":673,"props":1628,"children":1629},{},[1630,1635],{"type":49,"tag":695,"props":1631,"children":1632},{},[1633],{"type":55,"value":1634},"Locate or clone AI-Q",{"type":49,"tag":695,"props":1636,"children":1637},{},[1638],{"type":49,"tag":71,"props":1639,"children":1641},{"className":1640},[],[1642],{"type":55,"value":379},{"type":49,"tag":673,"props":1644,"children":1645},{},[1646,1651],{"type":49,"tag":695,"props":1647,"children":1648},{},[1649],{"type":55,"value":1650},"Environment and secrets",{"type":49,"tag":695,"props":1652,"children":1653},{},[1654],{"type":49,"tag":71,"props":1655,"children":1657},{"className":1656},[],[1658],{"type":55,"value":525},{"type":49,"tag":673,"props":1660,"children":1661},{},[1662,1667],{"type":49,"tag":695,"props":1663,"children":1664},{},[1665],{"type":55,"value":1666},"Workflow configs",{"type":49,"tag":695,"props":1668,"children":1669},{},[1670],{"type":49,"tag":71,"props":1671,"children":1673},{"className":1672},[],[1674],{"type":55,"value":760},{"type":49,"tag":673,"props":1676,"children":1677},{},[1678,1683],{"type":49,"tag":695,"props":1679,"children":1680},{},[1681],{"type":55,"value":1682},"Agent Skill backend",{"type":49,"tag":695,"props":1684,"children":1685},{},[1686],{"type":49,"tag":71,"props":1687,"children":1689},{"className":1688},[],[1690],{"type":55,"value":784},{"type":49,"tag":673,"props":1692,"children":1693},{},[1694,1699],{"type":49,"tag":695,"props":1695,"children":1696},{},[1697],{"type":55,"value":1698},"CLI deployment",{"type":49,"tag":695,"props":1700,"children":1701},{},[1702],{"type":49,"tag":71,"props":1703,"children":1705},{"className":1704},[],[1706],{"type":55,"value":801},{"type":49,"tag":673,"props":1708,"children":1709},{},[1710,1715],{"type":49,"tag":695,"props":1711,"children":1712},{},[1713],{"type":55,"value":1714},"Local web deployment",{"type":49,"tag":695,"props":1716,"children":1717},{},[1718],{"type":49,"tag":71,"props":1719,"children":1721},{"className":1720},[],[1722],{"type":55,"value":818},{"type":49,"tag":673,"props":1724,"children":1725},{},[1726,1731],{"type":49,"tag":695,"props":1727,"children":1728},{},[1729],{"type":55,"value":1730},"Docker Compose deployment",{"type":49,"tag":695,"props":1732,"children":1733},{},[1734],{"type":49,"tag":71,"props":1735,"children":1737},{"className":1736},[],[1738],{"type":55,"value":835},{"type":49,"tag":673,"props":1740,"children":1741},{},[1742,1747],{"type":49,"tag":695,"props":1743,"children":1744},{},[1745],{"type":55,"value":1746},"Kubernetes and Helm deployment",{"type":49,"tag":695,"props":1748,"children":1749},{},[1750],{"type":49,"tag":71,"props":1751,"children":1753},{"className":1752},[],[1754],{"type":55,"value":852},{"type":49,"tag":673,"props":1756,"children":1757},{},[1758,1763],{"type":49,"tag":695,"props":1759,"children":1760},{},[1761],{"type":55,"value":1762},"FRAG integration",{"type":49,"tag":695,"props":1764,"children":1765},{},[1766],{"type":49,"tag":71,"props":1767,"children":1769},{"className":1768},[],[1770],{"type":55,"value":869},{"type":49,"tag":673,"props":1772,"children":1773},{},[1774,1779],{"type":49,"tag":695,"props":1775,"children":1776},{},[1777],{"type":55,"value":1778},"Basic validation",{"type":49,"tag":695,"props":1780,"children":1781},{},[1782],{"type":49,"tag":71,"props":1783,"children":1785},{"className":1784},[],[1786],{"type":55,"value":891},{"type":49,"tag":673,"props":1788,"children":1789},{},[1790,1795],{"type":49,"tag":695,"props":1791,"children":1792},{},[1793],{"type":55,"value":1794},"End-to-end validation",{"type":49,"tag":695,"props":1796,"children":1797},{},[1798],{"type":49,"tag":71,"props":1799,"children":1801},{"className":1800},[],[1802],{"type":55,"value":908},{"type":49,"tag":673,"props":1804,"children":1805},{},[1806,1811],{"type":49,"tag":695,"props":1807,"children":1808},{},[1809],{"type":55,"value":1810},"Troubleshooting",{"type":49,"tag":695,"props":1812,"children":1813},{},[1814],{"type":49,"tag":71,"props":1815,"children":1817},{"className":1816},[],[1818],{"type":55,"value":925},{"type":49,"tag":673,"props":1820,"children":1821},{},[1822,1827],{"type":49,"tag":695,"props":1823,"children":1824},{},[1825],{"type":55,"value":1826},"Shutdown and cleanup",{"type":49,"tag":695,"props":1828,"children":1829},{},[1830],{"type":49,"tag":71,"props":1831,"children":1833},{"className":1832},[],[1834],{"type":55,"value":942},{"type":49,"tag":58,"props":1836,"children":1838},{"id":1837},"common-issues",[1839],{"type":55,"value":1840},"Common Issues",{"type":49,"tag":363,"props":1842,"children":1844},{"id":1843},"issue-backend-port-is-already-in-use",[1845],{"type":55,"value":1846},"Issue: Backend port is already in use",{"type":49,"tag":65,"props":1848,"children":1849},{},[1850],{"type":49,"tag":1091,"props":1851,"children":1852},{},[1853],{"type":55,"value":1854},"Symptoms:",{"type":49,"tag":103,"props":1856,"children":1857},{},[1858,1870],{"type":49,"tag":107,"props":1859,"children":1860},{},[1861,1863,1869],{"type":55,"value":1862},"Docker Compose fails to bind port ",{"type":49,"tag":71,"props":1864,"children":1866},{"className":1865},[],[1867],{"type":55,"value":1868},"8000",{"type":55,"value":78},{"type":49,"tag":107,"props":1871,"children":1872},{},[1873,1879],{"type":49,"tag":71,"props":1874,"children":1876},{"className":1875},[],[1877],{"type":55,"value":1878},"curl -sf http:\u002F\u002Flocalhost:8000\u002Fhealth",{"type":55,"value":1880}," reaches an unexpected service or fails.",{"type":49,"tag":65,"props":1882,"children":1883},{},[1884],{"type":49,"tag":1091,"props":1885,"children":1886},{},[1887],{"type":55,"value":1888},"Causes:",{"type":49,"tag":103,"props":1890,"children":1891},{},[1892,1897],{"type":49,"tag":107,"props":1893,"children":1894},{},[1895],{"type":55,"value":1896},"Another AI-Q backend or local development server is already running.",{"type":49,"tag":107,"props":1898,"children":1899},{},[1900,1906,1908,1913],{"type":49,"tag":71,"props":1901,"children":1903},{"className":1902},[],[1904],{"type":55,"value":1905},"PORT",{"type":55,"value":1907}," in ",{"type":49,"tag":71,"props":1909,"children":1911},{"className":1910},[],[1912],{"type":55,"value":237},{"type":55,"value":1914}," conflicts with an existing process.",{"type":49,"tag":65,"props":1916,"children":1917},{},[1918],{"type":49,"tag":1091,"props":1919,"children":1920},{},[1921],{"type":55,"value":1922},"Solutions:",{"type":49,"tag":293,"props":1924,"children":1925},{},[1926,1961,1980],{"type":49,"tag":107,"props":1927,"children":1928},{},[1929,1931],{"type":55,"value":1930},"Identify the process:\n",{"type":49,"tag":241,"props":1932,"children":1934},{"className":243,"code":1933,"language":245,"meta":246,"style":246},"lsof -nP -iTCP:8000 -sTCP:LISTEN\n",[1935],{"type":49,"tag":71,"props":1936,"children":1937},{"__ignoreMap":246},[1938],{"type":49,"tag":252,"props":1939,"children":1940},{"class":254,"line":255},[1941,1946,1951,1956],{"type":49,"tag":252,"props":1942,"children":1943},{"style":259},[1944],{"type":55,"value":1945},"lsof",{"type":49,"tag":252,"props":1947,"children":1948},{"style":265},[1949],{"type":55,"value":1950}," -nP",{"type":49,"tag":252,"props":1952,"children":1953},{"style":265},[1954],{"type":55,"value":1955}," -iTCP:8000",{"type":49,"tag":252,"props":1957,"children":1958},{"style":265},[1959],{"type":55,"value":1960}," -sTCP:LISTEN\n",{"type":49,"tag":107,"props":1962,"children":1963},{},[1964,1966,1971,1973,1979],{"type":55,"value":1965},"Either stop the conflicting process with the user's approval or set a different port in ",{"type":49,"tag":71,"props":1967,"children":1969},{"className":1968},[],[1970],{"type":55,"value":237},{"type":55,"value":1972},", such as\n",{"type":49,"tag":71,"props":1974,"children":1976},{"className":1975},[],[1977],{"type":55,"value":1978},"PORT=8100",{"type":55,"value":78},{"type":49,"tag":107,"props":1981,"children":1982},{},[1983,1985],{"type":55,"value":1984},"Restart the selected deployment path and verify:\n",{"type":49,"tag":241,"props":1986,"children":1988},{"className":243,"code":1987,"language":245,"meta":246,"style":246},"curl -sf http:\u002F\u002Flocalhost:8100\u002Fhealth\n",[1989],{"type":49,"tag":71,"props":1990,"children":1991},{"__ignoreMap":246},[1992],{"type":49,"tag":252,"props":1993,"children":1994},{"class":254,"line":255},[1995,1999,2003],{"type":49,"tag":252,"props":1996,"children":1997},{"style":259},[1998],{"type":55,"value":975},{"type":49,"tag":252,"props":2000,"children":2001},{"style":265},[2002],{"type":55,"value":980},{"type":49,"tag":252,"props":2004,"children":2005},{"style":265},[2006],{"type":55,"value":2007}," http:\u002F\u002Flocalhost:8100\u002Fhealth\n",{"type":49,"tag":363,"props":2009,"children":2011},{"id":2010},"issue-required-credentials-are-missing",[2012],{"type":55,"value":2013},"Issue: Required credentials are missing",{"type":49,"tag":65,"props":2015,"children":2016},{},[2017],{"type":49,"tag":1091,"props":2018,"children":2019},{},[2020],{"type":55,"value":1854},{"type":49,"tag":103,"props":2022,"children":2023},{},[2024,2029],{"type":49,"tag":107,"props":2025,"children":2026},{},[2027],{"type":55,"value":2028},"Infrastructure starts, but model-backed chat or research requests fail.",{"type":49,"tag":107,"props":2030,"children":2031},{},[2032],{"type":55,"value":2033},"Logs mention unauthorized, forbidden, invalid key, or missing provider configuration.",{"type":49,"tag":65,"props":2035,"children":2036},{},[2037],{"type":49,"tag":1091,"props":2038,"children":2039},{},[2040],{"type":55,"value":1888},{"type":49,"tag":103,"props":2042,"children":2043},{},[2044,2054],{"type":49,"tag":107,"props":2045,"children":2046},{},[2047,2052],{"type":49,"tag":71,"props":2048,"children":2050},{"className":2049},[],[2051],{"type":55,"value":188},{"type":55,"value":2053}," is missing or empty.",{"type":49,"tag":107,"props":2055,"children":2056},{},[2057],{"type":55,"value":2058},"No supported search provider key is configured for web research.",{"type":49,"tag":65,"props":2060,"children":2061},{},[2062],{"type":49,"tag":1091,"props":2063,"children":2064},{},[2065],{"type":55,"value":1922},{"type":49,"tag":293,"props":2067,"children":2068},{},[2069,2080,2092],{"type":49,"tag":107,"props":2070,"children":2071},{},[2072,2074,2079],{"type":55,"value":2073},"Check presence without printing values by following ",{"type":49,"tag":71,"props":2075,"children":2077},{"className":2076},[],[2078],{"type":55,"value":525},{"type":55,"value":78},{"type":49,"tag":107,"props":2081,"children":2082},{},[2083,2085,2090],{"type":55,"value":2084},"Ask the user to update ",{"type":49,"tag":71,"props":2086,"children":2088},{"className":2087},[],[2089],{"type":55,"value":237},{"type":55,"value":2091},"; do not ask them to paste secrets into chat.",{"type":49,"tag":107,"props":2093,"children":2094},{},[2095,2097,2102],{"type":55,"value":2096},"Rerun ",{"type":49,"tag":71,"props":2098,"children":2100},{"className":2099},[],[2101],{"type":55,"value":891},{"type":55,"value":2103}," after the user updates credentials.",{"type":49,"tag":363,"props":2105,"children":2107},{"id":2106},"issue-backend-is-healthy-but-not-compatible-with-aiq-research",[2108],{"type":55,"value":2109},"Issue: Backend is healthy but not compatible with aiq-research",{"type":49,"tag":65,"props":2111,"children":2112},{},[2113],{"type":49,"tag":1091,"props":2114,"children":2115},{},[2116],{"type":55,"value":1854},{"type":49,"tag":103,"props":2118,"children":2119},{},[2120,2145],{"type":49,"tag":107,"props":2121,"children":2122},{},[2123,2128,2130,2136,2137,2143],{"type":49,"tag":71,"props":2124,"children":2126},{"className":2125},[],[2127],{"type":55,"value":1576},{"type":55,"value":2129}," succeeds, but ",{"type":49,"tag":71,"props":2131,"children":2133},{"className":2132},[],[2134],{"type":55,"value":2135},"\u002Fchat",{"type":55,"value":745},{"type":49,"tag":71,"props":2138,"children":2140},{"className":2139},[],[2141],{"type":55,"value":2142},"\u002Fv1\u002Fjobs\u002Fasync\u002Fagents",{"type":55,"value":2144}," fails.",{"type":49,"tag":107,"props":2146,"children":2147},{},[2148,2153],{"type":49,"tag":71,"props":2149,"children":2151},{"className":2150},[],[2152],{"type":55,"value":76},{"type":55,"value":2154}," reports that async agents are unavailable.",{"type":49,"tag":65,"props":2156,"children":2157},{},[2158],{"type":49,"tag":1091,"props":2159,"children":2160},{},[2161],{"type":55,"value":1888},{"type":49,"tag":103,"props":2163,"children":2164},{},[2165,2170],{"type":49,"tag":107,"props":2166,"children":2167},{},[2168],{"type":55,"value":2169},"The selected config is CLI-only or does not expose the web\u002FAPI backend expected by the skill.",{"type":49,"tag":107,"props":2171,"children":2172},{},[2173,2178,2179,2184],{"type":49,"tag":71,"props":2174,"children":2176},{"className":2175},[],[2177],{"type":55,"value":743},{"type":55,"value":745},{"type":49,"tag":71,"props":2180,"children":2182},{"className":2181},[],[2183],{"type":55,"value":751},{"type":55,"value":2185}," points at the wrong AI-Q config.",{"type":49,"tag":65,"props":2187,"children":2188},{},[2189],{"type":49,"tag":1091,"props":2190,"children":2191},{},[2192],{"type":55,"value":1922},{"type":49,"tag":293,"props":2194,"children":2195},{},[2196,2207,2219],{"type":49,"tag":107,"props":2197,"children":2198},{},[2199,2200,2205],{"type":55,"value":519},{"type":49,"tag":71,"props":2201,"children":2203},{"className":2202},[],[2204],{"type":55,"value":760},{"type":55,"value":2206}," and confirm the selected config is API-enabled.",{"type":49,"tag":107,"props":2208,"children":2209},{},[2210,2212,2218],{"type":55,"value":2211},"For the default Skill backend, use ",{"type":49,"tag":71,"props":2213,"children":2215},{"className":2214},[],[2216],{"type":55,"value":2217},"configs\u002Fconfig_web_default_llamaindex.yml",{"type":55,"value":78},{"type":49,"tag":107,"props":2220,"children":2221},{},[2222,2224,2229],{"type":55,"value":2223},"Restart the backend and rerun ",{"type":49,"tag":71,"props":2225,"children":2227},{"className":2226},[],[2228],{"type":55,"value":891},{"type":55,"value":78},{"type":49,"tag":363,"props":2231,"children":2233},{"id":2232},"issue-docker-cleanup-would-remove-useful-state",[2234],{"type":55,"value":2235},"Issue: Docker cleanup would remove useful state",{"type":49,"tag":65,"props":2237,"children":2238},{},[2239],{"type":49,"tag":1091,"props":2240,"children":2241},{},[2242],{"type":55,"value":1854},{"type":49,"tag":103,"props":2244,"children":2245},{},[2246,2258],{"type":49,"tag":107,"props":2247,"children":2248},{},[2249,2251,2257],{"type":55,"value":2250},"Troubleshooting suggests ",{"type":49,"tag":71,"props":2252,"children":2254},{"className":2253},[],[2255],{"type":55,"value":2256},"docker compose down -v",{"type":55,"value":78},{"type":49,"tag":107,"props":2259,"children":2260},{},[2261],{"type":55,"value":2262},"The user may have local PostgreSQL job or checkpoint data they want to keep.",{"type":49,"tag":65,"props":2264,"children":2265},{},[2266],{"type":49,"tag":1091,"props":2267,"children":2268},{},[2269],{"type":55,"value":1888},{"type":49,"tag":103,"props":2271,"children":2272},{},[2273,2283],{"type":49,"tag":107,"props":2274,"children":2275},{},[2276,2281],{"type":49,"tag":71,"props":2277,"children":2279},{"className":2278},[],[2280],{"type":55,"value":1216},{"type":55,"value":2282}," removes Docker volumes.",{"type":49,"tag":107,"props":2284,"children":2285},{},[2286],{"type":55,"value":2287},"Rebuilds and restarts are often enough for config or image changes.",{"type":49,"tag":65,"props":2289,"children":2290},{},[2291],{"type":49,"tag":1091,"props":2292,"children":2293},{},[2294],{"type":55,"value":1922},{"type":49,"tag":293,"props":2296,"children":2297},{},[2298,2309,2314],{"type":49,"tag":107,"props":2299,"children":2300},{},[2301,2303,2308],{"type":55,"value":2302},"Prefer a normal restart from ",{"type":49,"tag":71,"props":2304,"children":2306},{"className":2305},[],[2307],{"type":55,"value":942},{"type":55,"value":78},{"type":49,"tag":107,"props":2310,"children":2311},{},[2312],{"type":55,"value":2313},"Ask for explicit approval before running volume deletion.",{"type":49,"tag":107,"props":2315,"children":2316},{},[2317],{"type":55,"value":2318},"After cleanup, rerun deployment and validation from the selected route.",{"type":49,"tag":2320,"props":2321,"children":2322},"style",{},[2323],{"type":55,"value":2324},"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":2326,"total":2420},[2327,2344,2350,2363,2375,2392,2406],{"slug":2328,"name":2328,"fn":2329,"description":2330,"org":2331,"tags":2332,"stars":20,"repoUrl":21,"updatedAt":2343},"accelerated-computing-cudf","accelerate data processing with cuDF","Official NVIDIA-authored guidance for NVIDIA cuDF GPU DataFrames, pandas acceleration, dask-cuDF, ETL, joins, groupby, CSV\u002FParquet I\u002FO, nullable semantics, and multi-GPU DataFrame workloads.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[2333,2336,2339,2340],{"name":2334,"slug":2335,"type":15},"Data Analysis","data-analysis",{"name":2337,"slug":2338,"type":15},"Data Engineering","data-engineering",{"name":9,"slug":8,"type":15},{"name":2341,"slug":2342,"type":15},"Performance","performance","2026-07-14T05:28:43.176466",{"slug":4,"name":4,"fn":5,"description":6,"org":2345,"tags":2346,"stars":20,"repoUrl":21,"updatedAt":22},{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[2347,2348,2349],{"name":13,"slug":14,"type":15},{"name":18,"slug":19,"type":15},{"name":9,"slug":8,"type":15},{"slug":76,"name":76,"fn":2351,"description":2352,"org":2353,"tags":2354,"stars":20,"repoUrl":21,"updatedAt":2362},"conduct deep research with AI-Q","Use when asked to run deep research or AI-Q research through a reachable NVIDIA AI-Q Blueprint backend.\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[2355,2358,2359],{"name":2356,"slug":2357,"type":15},"Agents","agents",{"name":9,"slug":8,"type":15},{"name":2360,"slug":2361,"type":15},"Research","research","2026-07-14T05:28:06.816956",{"slug":2364,"name":2364,"fn":2365,"description":2366,"org":2367,"tags":2368,"stars":20,"repoUrl":21,"updatedAt":2374},"amc-run-sample-calibration","run AMC sample dataset calibration","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'.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[2369,2370,2371],{"name":2334,"slug":2335,"type":15},{"name":9,"slug":8,"type":15},{"name":2372,"slug":2373,"type":15},"Testing","testing","2026-07-17T05:29:03.913266",{"slug":2376,"name":2376,"fn":2377,"description":2378,"org":2379,"tags":2380,"stars":20,"repoUrl":21,"updatedAt":2391},"amc-run-video-calibration","calibrate video datasets with AutoMagicCalib","Calibrate a new dataset from pre-recorded video files via the AutoMagicCalib REST API. Use when user has local MP4s and says 'calibrate my videos', 'run AMC on these videos', or similar. For RTSP\u002Flive streams, use amc-run-rtsp-calibration instead.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[2381,2384,2387,2388],{"name":2382,"slug":2383,"type":15},"Automation","automation",{"name":2385,"slug":2386,"type":15},"Imaging","imaging",{"name":9,"slug":8,"type":15},{"name":2389,"slug":2390,"type":15},"Video","video","2026-07-17T05:28:53.905004",{"slug":2393,"name":2393,"fn":2394,"description":2395,"org":2396,"tags":2397,"stars":20,"repoUrl":21,"updatedAt":2405},"amc-setup-calibration-stack","deploy AutoMagicCalib microservice with Docker","Launch AutoMagicCalib microservice and web UI from NGC release images via Docker Compose. Use when user says 'deploy auto calibration', 'launch auto calibration', 'launch AMC', 'start MS+UI', or 'set up auto-magic-calib'. Requires NGC API key.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[2398,2399,2402,2403],{"name":13,"slug":14,"type":15},{"name":2400,"slug":2401,"type":15},"Docker","docker",{"name":9,"slug":8,"type":15},{"name":2404,"slug":42,"type":15},"Operations","2026-07-17T05:28:56.913999",{"slug":2407,"name":2407,"fn":2408,"description":2409,"org":2410,"tags":2411,"stars":20,"repoUrl":21,"updatedAt":2419},"cudaq-guide","develop quantum applications with CUDA-Q","CUDA-Q onboarding guide for installation, test programs, GPU simulation, QPU hardware, and quantum applications.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[2412,2413,2416],{"name":9,"slug":8,"type":15},{"name":2414,"slug":2415,"type":15},"Quantum Computing","quantum-computing",{"name":2417,"slug":2418,"type":15},"Simulation","simulation","2026-07-14T05:26:58.898253",305,{"items":2422,"total":2572},[2423,2440,2456,2467,2479,2493,2506,2520,2531,2540,2554,2563],{"slug":2424,"name":2424,"fn":2425,"description":2426,"org":2427,"tags":2428,"stars":2437,"repoUrl":2438,"updatedAt":2439},"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},[2429,2431,2434],{"name":1623,"slug":2430,"type":15},"documentation",{"name":2432,"slug":2433,"type":15},"MCP","mcp",{"name":2435,"slug":2436,"type":15},"Search","search",21777,"https:\u002F\u002Fgithub.com\u002FNVIDIA\u002FNemoClaw","2026-07-20T06:00:01.461044",{"slug":2441,"name":2441,"fn":2442,"description":2443,"org":2444,"tags":2445,"stars":2453,"repoUrl":2454,"updatedAt":2455},"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},[2446,2449,2450],{"name":2447,"slug":2448,"type":15},"Containers","containers",{"name":13,"slug":14,"type":15},{"name":2451,"slug":2452,"type":15},"Python","python",17049,"https:\u002F\u002Fgithub.com\u002FNVIDIA\u002FMegatron-LM","2026-07-27T06:06:11.249662",{"slug":2457,"name":2457,"fn":2458,"description":2459,"org":2460,"tags":2461,"stars":2453,"repoUrl":2454,"updatedAt":2466},"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},[2462,2465],{"name":2463,"slug":2464,"type":15},"CI\u002FCD","ci-cd",{"name":13,"slug":14,"type":15},"2026-07-14T05:25:59.97109",{"slug":2468,"name":2468,"fn":2469,"description":2470,"org":2471,"tags":2472,"stars":2453,"repoUrl":2454,"updatedAt":2478},"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},[2473,2474,2475],{"name":2463,"slug":2464,"type":15},{"name":13,"slug":14,"type":15},{"name":2476,"slug":2477,"type":15},"GitHub","github","2026-07-27T06:06:12.278222",{"slug":2480,"name":2480,"fn":2481,"description":2482,"org":2483,"tags":2484,"stars":2453,"repoUrl":2454,"updatedAt":2492},"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},[2485,2488,2489],{"name":2486,"slug":2487,"type":15},"Debugging","debugging",{"name":2476,"slug":2477,"type":15},{"name":2490,"slug":2491,"type":15},"Triage","triage","2026-07-14T05:25:57.442089",{"slug":2494,"name":2494,"fn":2495,"description":2496,"org":2497,"tags":2498,"stars":2453,"repoUrl":2454,"updatedAt":2505},"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},[2499,2502],{"name":2500,"slug":2501,"type":15},"Best Practices","best-practices",{"name":2503,"slug":2504,"type":15},"Code Analysis","code-analysis","2026-07-14T05:25:56.18433",{"slug":2507,"name":2507,"fn":2508,"description":2509,"org":2510,"tags":2511,"stars":2453,"repoUrl":2454,"updatedAt":2519},"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},[2512,2515,2518],{"name":2513,"slug":2514,"type":15},"Machine Learning","machine-learning",{"name":2516,"slug":2517,"type":15},"Migration","migration",{"name":9,"slug":8,"type":15},"2026-07-17T06:07:11.777011",{"slug":2521,"name":2521,"fn":2522,"description":2523,"org":2524,"tags":2525,"stars":2453,"repoUrl":2454,"updatedAt":2530},"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},[2526,2529],{"name":2527,"slug":2528,"type":15},"QA","qa",{"name":2372,"slug":2373,"type":15},"2026-07-14T05:25:53.673039",{"slug":2532,"name":2532,"fn":2533,"description":2534,"org":2535,"tags":2536,"stars":2453,"repoUrl":2454,"updatedAt":2539},"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},[2537,2538],{"name":13,"slug":14,"type":15},{"name":18,"slug":19,"type":15},"2026-07-14T05:25:49.362534",{"slug":2541,"name":2541,"fn":2542,"description":2543,"org":2544,"tags":2545,"stars":2453,"repoUrl":2454,"updatedAt":2553},"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},[2546,2549,2550],{"name":2547,"slug":2548,"type":15},"Code Review","code-review",{"name":2476,"slug":2477,"type":15},{"name":2551,"slug":2552,"type":15},"Pull Requests","pull-requests","2026-07-14T05:26:01.226578",{"slug":2555,"name":2555,"fn":2556,"description":2557,"org":2558,"tags":2559,"stars":2453,"repoUrl":2454,"updatedAt":2562},"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},[2560,2561],{"name":2527,"slug":2528,"type":15},{"name":2372,"slug":2373,"type":15},"2026-07-14T05:25:54.928983",{"slug":2564,"name":2564,"fn":2565,"description":2566,"org":2567,"tags":2568,"stars":2453,"repoUrl":2454,"updatedAt":2571},"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},[2569,2570],{"name":2382,"slug":2383,"type":15},{"name":2463,"slug":2464,"type":15},"2026-07-30T05:29:03.275638",496]