[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6H3ZXQPRGDQHSHG0SH51ZXZ":3,"skill-same:01M6H3ZXQPRGDQHSHG0SH51ZXZ":77},{"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":26,"publishedAt":47,"linkOnly":48,"markdownContent":49,"markdownBody":50,"frontMatter":51,"refName":55,"commitSha":56,"skillDirectory":57,"forksCount":58,"repositoryHtmlUrl":59,"repositoryHomepageUrl":6,"ownerHtmlUrl":60,"ownerBlogUrl":61,"ownerDescription":62,"updatedAt":63,"install":64,"resources":76},"01M6H3ZXQPRGDQHSHG0SH51ZXZ","auto-deploy",null,"Deploy Lambda code for AI automation agents (wi-router and\u002For pr-router). Packages agent steps + shared libs into a zip and uploads to AWS Lambda. Safe to re-run after code changes. Reads function names from .ai\u002Fautomation\u002Finfra.json.","easingthemes\u002Fdx-aem-flow","easingthemes","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F2750284?v=4","01M6H3XYGJY8QCX9ES36P2WF4H","Dragan Filipović","01M6H3XYMN1XVSGKN7N79SW3RH",7,"MIT","https:\u002F\u002Fgithub.com\u002Feasingthemes\u002Fdx-aem-flow\u002Fblob\u002Fmain\u002Fplugins\u002Fdx-automation\u002Fskills\u002Fauto-deploy\u002FSKILL.md",[18,23],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000011","运维与部署","SCENARIO","使用场景",{"categoryNo":24,"categoryName":25,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000023","Skill与智能体开发",[27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46],"deploy","auto deploy","auto","aws lambda","automation","changes","for","ai automation","zip","true","re","shared","packages","infra","uploads","router","pr","use","push","code","2026-11-10 10:12:30",false,"---\nname: auto-deploy\ndescription: Deploy Lambda code for AI automation agents (wi-router and\u002For pr-router). Packages agent steps + shared libs into a zip and uploads to AWS Lambda. Safe to re-run after code changes. Reads function names from .ai\u002Fautomation\u002Finfra.json.\nwhen_to_use: \"Use when deploying Lambda code changes for wi-router or pr-router, when the user says 'deploy automation', 'update Lambda', 'push Lambda changes', or after modifying agent prompts or shared libs.\"\nargument-hint: \"[wi-router|pr-router|all]\"\ndisable-model-invocation: true\n---\n\nYou deploy Lambda function code for the 2 AI automation agents (wi-router, pr-router). Wraps `lambda\u002Fdeploy.sh` with audit logging. Safe to re-run at any time after code changes.\n\n## 0. Prerequisites\n\nRead `.ai\u002Fautomation\u002Finfra.json`. Check `automationProfile`:\n- If `consumer` (or legacy `pr-only`\u002F`pr-delegation`): \"This repo uses the consumer profile — Lambda functions are managed by the hub project. Do NOT deploy Lambda from this repo.\" **STOP.**\n\n```bash\nsource .ai\u002Flib\u002Faudit.sh\nexport AUDIT_LOG_PREFIX=infra\n```\n\nExtract Lambda function names and region from infra.json.\n\nVerify: `zip` is installed (`which zip`). If missing: \"Install zip: `brew install zip` (macOS) or `apt install zip` (Linux)\". STOP.\n\n## 1. Parse Target\n\nDefault target: `all`. If user passed an argument (`wi-router`, `pr-router`), use that.\n\n## 2. Deploy\n\n```bash\ncd .ai\u002Fautomation\nbash lambda\u002Fdeploy.sh \u003Ctarget>\n```\n\nThe deploy script reads function names and files from `infra.json`, packages each Lambda + shared libs into a zip, and calls `aws_lambda_deploy` (audit-wrapped).\n\nReport output from the script.\n\n### What ships with the Lambda\n\nThe Lambda zip contains **only** the webhook router code (`wi-router.mjs` \u002F `pr-router.mjs`) and shared libs (`dedupe.js`, `dlq.js`, `rate-limiter.js`, `aws-sig.js`, `retry.js`). The Lambda's job is to route webhook events to ADO pipelines — it does not run agents.\n\nAgent code, MCP config, and pipeline YAML are **not** in the Lambda zip. They live in the `dx-aem-flow` plugin repo and are pulled by each pipeline at runtime:\n\n| Asset | Location | Distributed via |\n|-------|----------|-----------------|\n| Agent skills (`\u002Fdx-simple`, `\u002Fdx-pr-review`, …) | `plugins\u002Fdx-*\u002Fskills\u002F` | Marketplace clone in pipeline YAML (`git clone dx-aem-flow.git`) |\n| Pipeline YAML (`ado-cli-simple.yml`, …) | `plugins\u002Fdx-automation\u002Fdata\u002Fpipelines\u002Fcli\u002F` | Imported into ADO once via `\u002Fauto-pipelines` |\n| Pipeline MCP overrides (`simple-mcp.json`, …) | `plugins\u002Fdx-automation\u002Fdata\u002Fmcp\u002F` | Marketplace clone — pipeline copies into `.mcp.json` at runtime |\n\nSo **`data\u002Fmcp\u002Fsimple-mcp.json` does NOT need to be bundled into the Lambda zip** — the pipeline (`ado-cli-simple.yml`) already copies it from the plugin clone (`$(Pipeline.Workspace)\u002Fdx-aem-flow\u002Fplugins\u002Fdx-automation\u002Fdata\u002Fmcp\u002Fsimple-mcp.json` → `$(Build.SourcesDirectory)\u002F.mcp.json`) on every pipeline run. Adding new MCP overrides under `data\u002Fmcp\u002F` and committing\u002Fpushing to the plugin repo is sufficient — no re-deploy of Lambda is required.\n\n## 3. Verify Deployment\n\nAfter deploy, check the last modified timestamp for each deployed function:\n\n```bash\nREGION=$(python3 -c \"import json; print(json.load(open('.ai\u002Fautomation\u002Finfra.json'))['region'])\")\n\nfor FUNC in $(python3 -c \"\nimport json\nd = json.load(open('.ai\u002Fautomation\u002Finfra.json'))\ntargets = ['wi-router', 'pr-router'] if '\u003Ctarget>' == 'all' else ['\u003Ctarget>']\nfor t in targets: print(d['lambdas'][t]['functionName'])\n\"); do\n  aws lambda get-function --function-name \"$FUNC\" --region \"$REGION\" \\\n    --query 'Configuration.[FunctionName,LastModified,CodeSize]' --output table\ndone\n```\n\n## 4. Summary Report\n\n```markdown\n## Lambda Deploy Complete\n\n| Function | Last Modified | Code Size |\n|----------|--------------|-----------|\n| \u003CPREFIX>-WI-Router | \u003Ctimestamp> | \u003Cbytes> |\n| \u003CPREFIX>-PR-Router | \u003Ctimestamp> | \u003Cbytes> |\n\n**Audit log:** `.ai\u002Flogs\u002Finfra.\u003Cweek>.jsonl`\n\n### Next step\n`\u002Fauto-lambda-env` — Set Lambda environment variables\n```\n\n## Success Criteria\n\n- [ ] Lambda function code updated — `LastModified` timestamp is recent (within last 60 seconds)\n- [ ] Function exists and is in `Active` state after deployment\n- [ ] Zip package was built from the correct source directory\n\n## Examples\n\n1. `\u002Fauto-deploy` — Packages agent step handlers and shared libs into zip files, then deploys both WI-Router and PR-Router Lambda functions. Reports deployment timestamps and package sizes. Both functions updated successfully.\n\n2. `\u002Fauto-deploy wi-router` — Deploys only the WI-Router Lambda function (skips PR-Router). Useful after modifying only work-item-triggered agent steps. Reports the function name, timestamp, and package size.\n\n3. `\u002Fauto-deploy` (after code changes) — Re-deploys both Lambdas with updated agent step code. The `deploy.sh` script packages fresh zips and uploads via `aws_lambda_deploy`. Reports successful deployment with new timestamps.\n\n## Troubleshooting\n\n- **\"Function not found\" error during deploy**\n  **Cause:** The Lambda function hasn't been provisioned yet in AWS.\n  **Fix:** Run `\u002Fauto-provision` first to create the Lambda functions, then re-run `\u002Fauto-deploy`.\n\n- **Deploy succeeds but agent behavior doesn't change**\n  **Cause:** Lambda may be using a cached version, or the environment variables reference old configuration.\n  **Fix:** Check the Lambda's last modified timestamp in the deploy output. If it's current, the code is deployed — check environment variables with `\u002Fauto-lambda-env` or run `\u002Fauto-test --dryRun` to verify behavior.\n\n- **\"audit.sh not found\" or audit wrapper errors**\n  **Cause:** The audit helper script is missing or not sourced before deployment.\n  **Fix:** Ensure `.ai\u002Flib\u002Faudit.sh` exists (created by `\u002Fdx-init`). The deploy script sources it automatically — if the file is missing, re-run `\u002Fdx-init`.\n\n## Rules\n\n- **Always source audit.sh first** — deploy.sh uses `aws_lambda_deploy` wrapper\n- **Derive function names from infra.json** — never hardcode\n- **Report actual deploy output** — show what the script printed\n","You deploy Lambda function code for the 2 AI automation agents (wi-router, pr-router). Wraps `lambda\u002Fdeploy.sh` with audit logging. Safe to re-run at any time after code changes.\n\n## 0. Prerequisites\n\nRead `.ai\u002Fautomation\u002Finfra.json`. Check `automationProfile`:\n- If `consumer` (or legacy `pr-only`\u002F`pr-delegation`): \"This repo uses the consumer profile — Lambda functions are managed by the hub project. Do NOT deploy Lambda from this repo.\" **STOP.**\n\n```bash\nsource .ai\u002Flib\u002Faudit.sh\nexport AUDIT_LOG_PREFIX=infra\n```\n\nExtract Lambda function names and region from infra.json.\n\nVerify: `zip` is installed (`which zip`). If missing: \"Install zip: `brew install zip` (macOS) or `apt install zip` (Linux)\". STOP.\n\n## 1. Parse Target\n\nDefault target: `all`. If user passed an argument (`wi-router`, `pr-router`), use that.\n\n## 2. Deploy\n\n```bash\ncd .ai\u002Fautomation\nbash lambda\u002Fdeploy.sh \u003Ctarget>\n```\n\nThe deploy script reads function names and files from `infra.json`, packages each Lambda + shared libs into a zip, and calls `aws_lambda_deploy` (audit-wrapped).\n\nReport output from the script.\n\n### What ships with the Lambda\n\nThe Lambda zip contains **only** the webhook router code (`wi-router.mjs` \u002F `pr-router.mjs`) and shared libs (`dedupe.js`, `dlq.js`, `rate-limiter.js`, `aws-sig.js`, `retry.js`). The Lambda's job is to route webhook events to ADO pipelines — it does not run agents.\n\nAgent code, MCP config, and pipeline YAML are **not** in the Lambda zip. They live in the `dx-aem-flow` plugin repo and are pulled by each pipeline at runtime:\n\n| Asset | Location | Distributed via |\n|-------|----------|-----------------|\n| Agent skills (`\u002Fdx-simple`, `\u002Fdx-pr-review`, …) | `plugins\u002Fdx-*\u002Fskills\u002F` | Marketplace clone in pipeline YAML (`git clone dx-aem-flow.git`) |\n| Pipeline YAML (`ado-cli-simple.yml`, …) | `plugins\u002Fdx-automation\u002Fdata\u002Fpipelines\u002Fcli\u002F` | Imported into ADO once via `\u002Fauto-pipelines` |\n| Pipeline MCP overrides (`simple-mcp.json`, …) | `plugins\u002Fdx-automation\u002Fdata\u002Fmcp\u002F` | Marketplace clone — pipeline copies into `.mcp.json` at runtime |\n\nSo **`data\u002Fmcp\u002Fsimple-mcp.json` does NOT need to be bundled into the Lambda zip** — the pipeline (`ado-cli-simple.yml`) already copies it from the plugin clone (`$(Pipeline.Workspace)\u002Fdx-aem-flow\u002Fplugins\u002Fdx-automation\u002Fdata\u002Fmcp\u002Fsimple-mcp.json` → `$(Build.SourcesDirectory)\u002F.mcp.json`) on every pipeline run. Adding new MCP overrides under `data\u002Fmcp\u002F` and committing\u002Fpushing to the plugin repo is sufficient — no re-deploy of Lambda is required.\n\n## 3. Verify Deployment\n\nAfter deploy, check the last modified timestamp for each deployed function:\n\n```bash\nREGION=$(python3 -c \"import json; print(json.load(open('.ai\u002Fautomation\u002Finfra.json'))['region'])\")\n\nfor FUNC in $(python3 -c \"\nimport json\nd = json.load(open('.ai\u002Fautomation\u002Finfra.json'))\ntargets = ['wi-router', 'pr-router'] if '\u003Ctarget>' == 'all' else ['\u003Ctarget>']\nfor t in targets: print(d['lambdas'][t]['functionName'])\n\"); do\n  aws lambda get-function --function-name \"$FUNC\" --region \"$REGION\" \\\n    --query 'Configuration.[FunctionName,LastModified,CodeSize]' --output table\ndone\n```\n\n## 4. Summary Report\n\n```markdown\n## Lambda Deploy Complete\n\n| Function | Last Modified | Code Size |\n|----------|--------------|-----------|\n| \u003CPREFIX>-WI-Router | \u003Ctimestamp> | \u003Cbytes> |\n| \u003CPREFIX>-PR-Router | \u003Ctimestamp> | \u003Cbytes> |\n\n**Audit log:** `.ai\u002Flogs\u002Finfra.\u003Cweek>.jsonl`\n\n### Next step\n`\u002Fauto-lambda-env` — Set Lambda environment variables\n```\n\n## Success Criteria\n\n- [ ] Lambda function code updated — `LastModified` timestamp is recent (within last 60 seconds)\n- [ ] Function exists and is in `Active` state after deployment\n- [ ] Zip package was built from the correct source directory\n\n## Examples\n\n1. `\u002Fauto-deploy` — Packages agent step handlers and shared libs into zip files, then deploys both WI-Router and PR-Router Lambda functions. Reports deployment timestamps and package sizes. Both functions updated successfully.\n\n2. `\u002Fauto-deploy wi-router` — Deploys only the WI-Router Lambda function (skips PR-Router). Useful after modifying only work-item-triggered agent steps. Reports the function name, timestamp, and package size.\n\n3. `\u002Fauto-deploy` (after code changes) — Re-deploys both Lambdas with updated agent step code. The `deploy.sh` script packages fresh zips and uploads via `aws_lambda_deploy`. Reports successful deployment with new timestamps.\n\n## Troubleshooting\n\n- **\"Function not found\" error during deploy**\n  **Cause:** The Lambda function hasn't been provisioned yet in AWS.\n  **Fix:** Run `\u002Fauto-provision` first to create the Lambda functions, then re-run `\u002Fauto-deploy`.\n\n- **Deploy succeeds but agent behavior doesn't change**\n  **Cause:** Lambda may be using a cached version, or the environment variables reference old configuration.\n  **Fix:** Check the Lambda's last modified timestamp in the deploy output. If it's current, the code is deployed — check environment variables with `\u002Fauto-lambda-env` or run `\u002Fauto-test --dryRun` to verify behavior.\n\n- **\"audit.sh not found\" or audit wrapper errors**\n  **Cause:** The audit helper script is missing or not sourced before deployment.\n  **Fix:** Ensure `.ai\u002Flib\u002Faudit.sh` exists (created by `\u002Fdx-init`). The deploy script sources it automatically — if the file is missing, re-run `\u002Fdx-init`.\n\n## Rules\n\n- **Always source audit.sh first** — deploy.sh uses `aws_lambda_deploy` wrapper\n- **Derive function names from infra.json** — never hardcode\n- **Report actual deploy output** — show what the script printed\n",{"name":5,"description":7,"when_to_use":52,"argument-hint":53,"disable-model-invocation":54},"Use when deploying Lambda code changes for wi-router or pr-router, when the user says 'deploy automation', 'update Lambda', 'push Lambda changes', or after modifying agent prompts or shared libs.","[wi-router|pr-router|all]",true,"main","a99cabc3f459fbeaa42b13a1604db1bccb6a364b","plugins\u002Fdx-automation\u002Fskills\u002Fauto-deploy",3,"https:\u002F\u002Fgithub.com\u002Feasingthemes\u002Fdx-aem-flow","https:\u002F\u002Fgithub.com\u002Feasingthemes","https:\u002F\u002Fwww.linkedin.com\u002Fin\u002Fdraganfilipovic\u002F","Agentic SDLC platform in production. I build agent-ready codebases. AEM MCP Server author.","2026-11-11 09:59:48",{"source":8,"skillName":5,"commands":65,"prompt":75,"zipAvailable":54},[66,69,72],{"tool":67,"command":68},"npx","npx skills add easingthemes\u002Fdx-aem-flow --skill auto-deploy",{"tool":70,"command":71},"bunx","bunx skills add easingthemes\u002Fdx-aem-flow --skill auto-deploy",{"tool":73,"command":74},"pnpm","pnpm dlx skills add easingthemes\u002Fdx-aem-flow --skill auto-deploy","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Feasingthemes\u002Fdx-aem-flow\u002Fblob\u002Fmain\u002Fplugins\u002Fdx-automation\u002Fskills\u002Fauto-deploy\u002FSKILL.md",[],[78,102,124,143,158,172],{"skillNo":79,"name":80,"nameZh":6,"description":81,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":82,"categories":83,"keywords":84,"publishedAt":47},"01M6H48W19F46A7B7TSSQAMYRW","dx-hub-status","Show hub dispatch status — which repos are running, done, blocked or failed. Use for 'hub status', 'what's running'.","https:\u002F\u002Fgithub.com\u002Feasingthemes\u002Fdx-aem-flow\u002Fblob\u002Fmain\u002Fplugins\u002Fdx-hub\u002Fskills\u002Fdx-hub-status\u002FSKILL.md",[],[85,86,87,88,89,90,91,33,92,93,44,94,95,96,97,98,99,100,101],"dx","dx hub status","hub","status","hub status","which","show","ticket","clean","done","Bash","id","dispatch","read","write","repos","grep",{"skillNo":103,"name":104,"nameZh":6,"description":105,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":106,"categories":107,"keywords":108,"publishedAt":47},"01M6H48R6ZH7YMVPMVWMMWT3RA","dx-hub-init","Initialize a hub directory for multi-repo orchestration. Discovers sibling repos, merges configs, validates CLI compatibility. Use when setting up hub mode for the first time. Trigger on \"init hub\", \"set up hub\", \"multi-repo setup\".","https:\u002F\u002Fgithub.com\u002Feasingthemes\u002Fdx-aem-flow\u002Fblob\u002Fmain\u002Fplugins\u002Fdx-hub\u002Fskills\u002Fdx-hub-init\u002FSKILL.md",[],[109,110,85,111,87,112,113,114,115,116,117,118,119,120,95,121,122,98,99,123],"init","hub init","dx hub init","SET","time","mode","default","up","repo setup","orchestration","configure","multi-repo","cli","directory","edit",{"skillNo":125,"name":126,"nameZh":6,"description":127,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":128,"categories":129,"keywords":131,"publishedAt":47},"01M6H48K267CWEF8YNN3Y49BVT","dx-hub-dispatch","Dispatch a ticket to several repos — open an independent Claude session per repo in VS Code terminals. Use for 'hub dispatch', 'work on ticket across repos'.","https:\u002F\u002Fgithub.com\u002Feasingthemes\u002Fdx-aem-flow\u002Fblob\u002Fmain\u002Fplugins\u002Fdx-hub\u002Fskills\u002Fdx-hub-dispatch\u002FSKILL.md",[130],{"categoryNo":24,"categoryName":25,"taxonomyType":21,"taxonomyTypeDesc":22},[85,132,97,87,133,33,134,135,136,92,137,138,44,139,95,140,46,141,96,142],"dx hub dispatch","ado","repo","work on","session","open","MCP","URL","vscode","across","work",{"skillNo":144,"name":145,"nameZh":6,"description":146,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":147,"categories":148,"keywords":149,"publishedAt":47},"01M6H48FAWKTT6AAWT3H80ZKE0","dx-hub-config","View and edit hub configuration — add repos, adjust terminal delay. Use to manage hub settings. Trigger on \"hub config\", \"add repo to hub\", \"terminal delay\".","https:\u002F\u002Fgithub.com\u002Feasingthemes\u002Fdx-aem-flow\u002Fblob\u002Fmain\u002Fplugins\u002Fdx-hub\u002Fskills\u002Fdx-hub-config\u002FSKILL.md",[],[85,150,87,151,91,152,134,153,154,36,155,44,119,95,156,98,157,99,123,100],"dx hub config","config","view","manage","trigger","adjust","terminal","settings",{"skillNo":159,"name":160,"nameZh":6,"description":161,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":162,"categories":163,"keywords":164,"publishedAt":47},"01M6H48BNMYEJY6CCWPYHNQDAT","dx-discover-repos","Resolve which repos a work item touches (explicit directive → simple block → cross-repo table → LLM). Used by the KAI-HUB router to fan an agent out across repos; 'which repos'.","https:\u002F\u002Fgithub.com\u002Feasingthemes\u002Fdx-aem-flow\u002Fblob\u002Fmain\u002Fplugins\u002Fdx-hub\u002Fskills\u002Fdx-discover-repos\u002FSKILL.md",[],[165,85,166,100,90,134,141,42,96,167,142,168,87,169,170,171],"discover","dx discover repos","directive","simple","block","sonnet","table",{"skillNo":173,"name":174,"nameZh":6,"description":175,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":176,"categories":177,"keywords":179,"publishedAt":47},"01M6H487QA1FDSBT1HTZGW4HAQ","dx-upgrade","Upgrade a consumer project to the installed plugin versions — run dx-doctor, fix stale and missing files, list manual actions. Use after upgrading plugins.","https:\u002F\u002Fgithub.com\u002Feasingthemes\u002Fdx-aem-flow\u002Fblob\u002Fmain\u002Fplugins\u002Fdx-core\u002Fskills\u002Fdx-upgrade\u002FSKILL.md",[178],{"categoryNo":24,"categoryName":25,"taxonomyType":21,"taxonomyTypeDesc":22},[180,85,181,182,183,184,185,186,29,187,98,99,123,188,189,190,191,44,192,193],"upgrade","dx upgrade","project","actions","search","fix","files","run","list","doctor","manual","missing","plugin","plugins"]