[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6H479FDYFE1QE9DKNTE1YFF":3,"skill-same:01M6H479FDYFE1QE9DKNTE1YFF":71},{"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":18,"publishedAt":39,"linkOnly":40,"markdownContent":41,"markdownBody":42,"frontMatter":43,"refName":48,"commitSha":49,"skillDirectory":50,"forksCount":51,"repositoryHtmlUrl":52,"repositoryHomepageUrl":6,"ownerHtmlUrl":53,"ownerBlogUrl":54,"ownerDescription":55,"updatedAt":56,"install":57,"resources":70},"01M6H479FDYFE1QE9DKNTE1YFF","dx-simplify",null,"Simplify working code without changing its behavior — Chesterton's Fence, Rule of 500. Use for 'simplify', 'reduce complexity', 'refactor for clarity'.","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-core\u002Fskills\u002Fdx-simplify\u002FSKILL.md",[],[19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38],"dx simplify","simplify","dx","behavior","reduce","for","high","rule","files","complexity","use","directory","edit","write","read","clarity","refactor","file","search","code","2026-11-10 10:12:30",false,"---\nname: dx-simplify\ndescription: \"Simplify working code without changing its behavior — Chesterton's Fence, Rule of 500. Use for 'simplify', 'reduce complexity', 'refactor for clarity'.\"\nargument-hint: \"[file path or directory (optional — defaults to changed files)]\"\nmodel: opus\neffort: high\nallowed-tools: [\"read\", \"edit\", \"search\", \"write\", \"agent\"]\n---\n\nYou reduce code complexity while maintaining exact behavioral equivalence. Every simplification must be proven safe by existing tests.\n\n**Core principle:** Simplification is not refactoring. Refactoring changes structure for future benefit. Simplification removes unnecessary complexity that exists right now.\n\n## 1. Determine Scope\n\n- If a file\u002Fdirectory argument is provided, analyze those files\n- Otherwise, analyze files changed since base branch:\n\n```bash\nBASE=$(git merge-base $(git symbolic-ref refs\u002Fremotes\u002Forigin\u002FHEAD --short 2>\u002Fdev\u002Fnull || echo origin\u002Fmain) HEAD)\ngit diff --name-only $BASE..HEAD\n```\n\n## 2. Chesterton's Fence\n\nBefore changing ANY code, answer: **Why does this complexity exist?**\n\nFor each complex section:\n1. Read the git log for that section: `git log --oneline -10 -- \u003Cfile>`\n2. Read surrounding comments and commit messages\n3. Check if there's a test that specifically tests the complex behavior\n4. Check if there's an ADR or design doc explaining the choice\n\n**If you can't explain why it's complex, don't simplify it.** The complexity may be intentional — guarding against an edge case you haven't seen yet.\n\n## 3. Complexity Identification\n\n### Code Smells to Target\n\n| Smell | Indicator | Simplification |\n|-------|-----------|----------------|\n| Dead code | Unreachable branches, unused functions, commented-out blocks | Remove entirely |\n| Unnecessary abstraction | Interface with 1 implementation, wrapper that just delegates | Inline the abstraction |\n| Premature generalization | Config for values that never change, factory for 1 type | Replace with direct code |\n| Over-engineering | Strategy pattern for 2 options, builder for 3 fields | Replace with simple conditional or constructor |\n| Nested complexity | 4+ levels of nesting, chained ternaries | Extract to early returns or named functions |\n| Flag arguments | Boolean params that change function behavior | Split into 2 clear functions |\n| Zombie code | No commits in 12+ months, no clear owner, failing tests | Deprecate or remove |\n\n### Complexity Metrics\n\nCheck for high-complexity areas:\n\n```bash\n# Find deeply nested code\nGrep: \\{.*\\{.*\\{.*\\{ — 4+ levels of nesting\n\n# Find long functions (>50 lines between function declaration and closing brace)\n# Check manually by reading suspicious files\n\n# Find god objects (files with >500 lines)\nfind . -name '*.js' -o -name '*.ts' -o -name '*.java' | xargs wc -l 2>\u002Fdev\u002Fnull | sort -n -r | head -20\n```\n\n## 4. Rule of 500\n\nWhen evaluating whether to simplify:\n\n- **If the simpler version is \u003C 500 characters** of the complex version: simplify\n- **If the simpler version requires > 500 characters** of explanation: the complexity may be warranted\n- **If 3+ people have asked \"why is this complex?\"**: simplify regardless\n\nThis is a heuristic, not a law. Use judgment.\n\n## 5. Apply Simplifications\n\nFor each simplification:\n\n1. **Record the current behavior** — run existing tests, note what passes\n2. **Apply the simplification** — minimal structural change\n3. **Verify behavioral equivalence** — same tests pass, same outputs\n4. **If any test fails, revert** — the simplification broke something\n\n### Safe Simplification Patterns\n\n| Pattern | Before | After |\n|---------|--------|-------|\n| Early return | Deep nesting with else branches | Guard clauses at top |\n| Inline trivial wrapper | `function getX() { return this.x; }` then `obj.getX()` | `obj.x` directly |\n| Remove dead code | Commented-out blocks, unused imports | Delete entirely |\n| Flatten conditionals | `if (a) { if (b) { if (c) { ... }}}` | `if (a && b && c) { ... }` |\n| Replace flag with functions | `process(data, true, false)` | `processWithValidation(data)` |\n| Simplify boolean | `if (condition) { return true; } else { return false; }` | `return condition;` |\n\n## 6. Report\n\n```markdown\n## Simplification Report\n\n**Files analyzed:** \u003CN>\n**Simplifications applied:** \u003CN>\n**Lines removed:** \u003CN>\n**Tests:** all passing (behavioral equivalence verified)\n\n### Changes Applied\n\n| # | File | What | Lines Removed | Risk |\n|---|------|------|---------------|------|\n| 1 | `file.js:42` | Removed dead code block (unreachable after L30 guard) | 15 | Low |\n| 2 | `utils.js:10` | Inlined trivial wrapper (only 1 call site) | 8 | Low |\n\n### Skipped (Chesterton's Fence)\n\n| # | File | Complexity | Why Kept |\n|---|------|------------|----------|\n| 1 | `auth.js:55` | Nested try-catch with retry | Commit msg explains: \"handles flaky SSO provider\" |\n\n### Opportunities for Later\n- \u003Citems that need broader discussion before simplifying>\n```\n\n## Anti-Rationalization\n\n| False Logic | Reality Check |\n|---|---|\n| \"But we might need this flexibility later\" | YAGNI. You Aren't Gonna Need It. Remove it now; add it when you actually need it. |\n| \"The abstraction makes it testable\" | If the test requires the abstraction, the abstraction is justified. If not, it's overhead. |\n| \"It's not hurting anything\" | Dead code misleads readers, increases cognitive load, and slows grep\u002Fsearch results. |\n| \"Removing code is risky\" | Keeping unnecessary code is riskier — it gets maintained, tested, and documented forever. |\n| \"The original author had a reason\" | That's Chesterton's Fence — so investigate the reason. If the reason no longer applies, remove. |\n| \"Three lines is fine, no need for a function\" | Correct. Three similar lines is better than a premature abstraction. Don't extract. |\n\n## Success Criteria\n\n- [ ] All existing tests pass after simplification (behavioral equivalence)\n- [ ] Build passes\n- [ ] Every change has a Chesterton's Fence check documented\n- [ ] Net lines removed > 0 (simplification reduces code, never adds)\n- [ ] No new abstractions introduced (simplification removes abstractions)\n- [ ] Dead code fully removed (not just commented out)\n\n## Examples\n\n### Simplify changed files\n```\n\u002Fdx-simplify\n```\nAnalyzes files changed since base branch, identifies complexity, applies safe simplifications.\n\n### Simplify specific file\n```\n\u002Fdx-simplify src\u002Fcomponents\u002FHero.js\n```\nDeep analysis of one file for simplification opportunities.\n\n### Simplify directory\n```\n\u002Fdx-simplify src\u002Futils\u002F\n```\nScan all files in a directory for dead code, unnecessary abstractions, over-engineering.\n\n## Troubleshooting\n\n### \"Tests fail after simplification\"\n**Cause:** The simplification changed behavior, not just structure.\n**Fix:** Revert the change. The complexity was protecting a behavior you didn't see.\n\n### \"Can't determine if code is dead\"\n**Cause:** Dynamic dispatch, reflection, or string-based references.\n**Fix:** Skip it — flag as \"possibly dead, needs runtime analysis\" in the report.\n\n## Rules\n\n- **Understand before changing** — Chesterton's Fence is mandatory, not optional\n- **Behavioral equivalence** — tests must pass identically before and after\n- **Remove, don't comment out** — dead code is deleted, not commented\n- **No new abstractions** — simplification reduces abstractions, never adds them\n- **One change at a time** — simplify, test, commit. Then next simplification.\n- **Three lines is fine** — don't extract a function for three similar lines. That's premature abstraction.\n- **Net negative lines** — a simplification that adds more code than it removes isn't simplification\n- **Revert on failure** — if tests fail, the original code was right. Revert immediately.\n","You reduce code complexity while maintaining exact behavioral equivalence. Every simplification must be proven safe by existing tests.\n\n**Core principle:** Simplification is not refactoring. Refactoring changes structure for future benefit. Simplification removes unnecessary complexity that exists right now.\n\n## 1. Determine Scope\n\n- If a file\u002Fdirectory argument is provided, analyze those files\n- Otherwise, analyze files changed since base branch:\n\n```bash\nBASE=$(git merge-base $(git symbolic-ref refs\u002Fremotes\u002Forigin\u002FHEAD --short 2>\u002Fdev\u002Fnull || echo origin\u002Fmain) HEAD)\ngit diff --name-only $BASE..HEAD\n```\n\n## 2. Chesterton's Fence\n\nBefore changing ANY code, answer: **Why does this complexity exist?**\n\nFor each complex section:\n1. Read the git log for that section: `git log --oneline -10 -- \u003Cfile>`\n2. Read surrounding comments and commit messages\n3. Check if there's a test that specifically tests the complex behavior\n4. Check if there's an ADR or design doc explaining the choice\n\n**If you can't explain why it's complex, don't simplify it.** The complexity may be intentional — guarding against an edge case you haven't seen yet.\n\n## 3. Complexity Identification\n\n### Code Smells to Target\n\n| Smell | Indicator | Simplification |\n|-------|-----------|----------------|\n| Dead code | Unreachable branches, unused functions, commented-out blocks | Remove entirely |\n| Unnecessary abstraction | Interface with 1 implementation, wrapper that just delegates | Inline the abstraction |\n| Premature generalization | Config for values that never change, factory for 1 type | Replace with direct code |\n| Over-engineering | Strategy pattern for 2 options, builder for 3 fields | Replace with simple conditional or constructor |\n| Nested complexity | 4+ levels of nesting, chained ternaries | Extract to early returns or named functions |\n| Flag arguments | Boolean params that change function behavior | Split into 2 clear functions |\n| Zombie code | No commits in 12+ months, no clear owner, failing tests | Deprecate or remove |\n\n### Complexity Metrics\n\nCheck for high-complexity areas:\n\n```bash\n# Find deeply nested code\nGrep: \\{.*\\{.*\\{.*\\{ — 4+ levels of nesting\n\n# Find long functions (>50 lines between function declaration and closing brace)\n# Check manually by reading suspicious files\n\n# Find god objects (files with >500 lines)\nfind . -name '*.js' -o -name '*.ts' -o -name '*.java' | xargs wc -l 2>\u002Fdev\u002Fnull | sort -n -r | head -20\n```\n\n## 4. Rule of 500\n\nWhen evaluating whether to simplify:\n\n- **If the simpler version is \u003C 500 characters** of the complex version: simplify\n- **If the simpler version requires > 500 characters** of explanation: the complexity may be warranted\n- **If 3+ people have asked \"why is this complex?\"**: simplify regardless\n\nThis is a heuristic, not a law. Use judgment.\n\n## 5. Apply Simplifications\n\nFor each simplification:\n\n1. **Record the current behavior** — run existing tests, note what passes\n2. **Apply the simplification** — minimal structural change\n3. **Verify behavioral equivalence** — same tests pass, same outputs\n4. **If any test fails, revert** — the simplification broke something\n\n### Safe Simplification Patterns\n\n| Pattern | Before | After |\n|---------|--------|-------|\n| Early return | Deep nesting with else branches | Guard clauses at top |\n| Inline trivial wrapper | `function getX() { return this.x; }` then `obj.getX()` | `obj.x` directly |\n| Remove dead code | Commented-out blocks, unused imports | Delete entirely |\n| Flatten conditionals | `if (a) { if (b) { if (c) { ... }}}` | `if (a && b && c) { ... }` |\n| Replace flag with functions | `process(data, true, false)` | `processWithValidation(data)` |\n| Simplify boolean | `if (condition) { return true; } else { return false; }` | `return condition;` |\n\n## 6. Report\n\n```markdown\n## Simplification Report\n\n**Files analyzed:** \u003CN>\n**Simplifications applied:** \u003CN>\n**Lines removed:** \u003CN>\n**Tests:** all passing (behavioral equivalence verified)\n\n### Changes Applied\n\n| # | File | What | Lines Removed | Risk |\n|---|------|------|---------------|------|\n| 1 | `file.js:42` | Removed dead code block (unreachable after L30 guard) | 15 | Low |\n| 2 | `utils.js:10` | Inlined trivial wrapper (only 1 call site) | 8 | Low |\n\n### Skipped (Chesterton's Fence)\n\n| # | File | Complexity | Why Kept |\n|---|------|------------|----------|\n| 1 | `auth.js:55` | Nested try-catch with retry | Commit msg explains: \"handles flaky SSO provider\" |\n\n### Opportunities for Later\n- \u003Citems that need broader discussion before simplifying>\n```\n\n## Anti-Rationalization\n\n| False Logic | Reality Check |\n|---|---|\n| \"But we might need this flexibility later\" | YAGNI. You Aren't Gonna Need It. Remove it now; add it when you actually need it. |\n| \"The abstraction makes it testable\" | If the test requires the abstraction, the abstraction is justified. If not, it's overhead. |\n| \"It's not hurting anything\" | Dead code misleads readers, increases cognitive load, and slows grep\u002Fsearch results. |\n| \"Removing code is risky\" | Keeping unnecessary code is riskier — it gets maintained, tested, and documented forever. |\n| \"The original author had a reason\" | That's Chesterton's Fence — so investigate the reason. If the reason no longer applies, remove. |\n| \"Three lines is fine, no need for a function\" | Correct. Three similar lines is better than a premature abstraction. Don't extract. |\n\n## Success Criteria\n\n- [ ] All existing tests pass after simplification (behavioral equivalence)\n- [ ] Build passes\n- [ ] Every change has a Chesterton's Fence check documented\n- [ ] Net lines removed > 0 (simplification reduces code, never adds)\n- [ ] No new abstractions introduced (simplification removes abstractions)\n- [ ] Dead code fully removed (not just commented out)\n\n## Examples\n\n### Simplify changed files\n```\n\u002Fdx-simplify\n```\nAnalyzes files changed since base branch, identifies complexity, applies safe simplifications.\n\n### Simplify specific file\n```\n\u002Fdx-simplify src\u002Fcomponents\u002FHero.js\n```\nDeep analysis of one file for simplification opportunities.\n\n### Simplify directory\n```\n\u002Fdx-simplify src\u002Futils\u002F\n```\nScan all files in a directory for dead code, unnecessary abstractions, over-engineering.\n\n## Troubleshooting\n\n### \"Tests fail after simplification\"\n**Cause:** The simplification changed behavior, not just structure.\n**Fix:** Revert the change. The complexity was protecting a behavior you didn't see.\n\n### \"Can't determine if code is dead\"\n**Cause:** Dynamic dispatch, reflection, or string-based references.\n**Fix:** Skip it — flag as \"possibly dead, needs runtime analysis\" in the report.\n\n## Rules\n\n- **Understand before changing** — Chesterton's Fence is mandatory, not optional\n- **Behavioral equivalence** — tests must pass identically before and after\n- **Remove, don't comment out** — dead code is deleted, not commented\n- **No new abstractions** — simplification reduces abstractions, never adds them\n- **One change at a time** — simplify, test, commit. Then next simplification.\n- **Three lines is fine** — don't extract a function for three similar lines. That's premature abstraction.\n- **Net negative lines** — a simplification that adds more code than it removes isn't simplification\n- **Revert on failure** — if tests fail, the original code was right. Revert immediately.\n",{"name":5,"model":44,"effort":25,"description":7,"allowed-tools":45,"argument-hint":47},"opus",[33,31,37,32,46],"agent","[file path or directory (optional — defaults to changed files)]","main","a99cabc3f459fbeaa42b13a1604db1bccb6a364b","plugins\u002Fdx-core\u002Fskills\u002Fdx-simplify",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":58,"prompt":68,"zipAvailable":69},[59,62,65],{"tool":60,"command":61},"npx","npx skills add easingthemes\u002Fdx-aem-flow --skill dx-simplify",{"tool":63,"command":64},"bunx","bunx skills add easingthemes\u002Fdx-aem-flow --skill dx-simplify",{"tool":66,"command":67},"pnpm","pnpm dlx skills add easingthemes\u002Fdx-aem-flow --skill dx-simplify","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Feasingthemes\u002Fdx-aem-flow\u002Fblob\u002Fmain\u002Fplugins\u002Fdx-core\u002Fskills\u002Fdx-simplify\u002FSKILL.md",true,[],[72,93,113,136,152,167],{"skillNo":73,"name":74,"nameZh":6,"description":75,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":76,"categories":77,"keywords":78,"publishedAt":39},"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",[],[21,79,80,81,82,83,84,24,85,86,29,87,88,89,90,33,32,91,92],"dx hub status","hub","status","hub status","which","show","ticket","clean","done","Bash","id","dispatch","repos","grep",{"skillNo":94,"name":95,"nameZh":6,"description":96,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":97,"categories":98,"keywords":99,"publishedAt":39},"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",[],[100,101,21,102,80,103,104,105,106,107,108,109,110,111,88,112,30,33,32,31],"init","hub init","dx hub init","SET","time","mode","default","up","repo setup","orchestration","configure","multi-repo","cli",{"skillNo":114,"name":115,"nameZh":6,"description":116,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":117,"categories":118,"keywords":124,"publishedAt":39},"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",[119],{"categoryNo":120,"categoryName":121,"taxonomyType":122,"taxonomyTypeDesc":123},"01JBSEEDCAT000000000000023","Skill与智能体开发","SCENARIO","使用场景",[21,125,90,80,126,24,127,128,129,85,130,131,29,132,88,133,38,134,89,135],"dx hub dispatch","ado","repo","work on","session","open","MCP","URL","vscode","across","work",{"skillNo":137,"name":138,"nameZh":6,"description":139,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":140,"categories":141,"keywords":142,"publishedAt":39},"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",[],[21,143,80,144,84,145,127,146,147,148,149,29,110,88,150,33,151,32,31,91],"dx hub config","config","view","manage","trigger","true","adjust","terminal","settings",{"skillNo":153,"name":154,"nameZh":6,"description":155,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":156,"categories":157,"keywords":158,"publishedAt":39},"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",[],[159,21,160,91,83,127,134,161,89,162,135,163,80,164,165,166],"discover","dx discover repos","router","directive","simple","block","sonnet","table",{"skillNo":168,"name":169,"nameZh":6,"description":170,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":171,"categories":172,"keywords":174,"publishedAt":39},"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",[173],{"categoryNo":120,"categoryName":121,"taxonomyType":122,"taxonomyTypeDesc":123},[175,21,176,177,178,37,179,27,180,181,33,32,31,182,183,184,185,29,186,187],"upgrade","dx upgrade","project","actions","fix","auto","run","list","doctor","manual","missing","plugin","plugins"]