[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M69B33CZ2FHMSEQJ4CXYNFP8":3,"skill-same:01M69B33CZ2FHMSEQJ4CXYNFP8":82},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":16,"categories":17,"keywords":23,"publishedAt":28,"linkOnly":29,"markdownContent":30,"markdownBody":31,"frontMatter":32,"refName":33,"commitSha":34,"skillDirectory":35,"forksCount":36,"repositoryHtmlUrl":37,"repositoryHomepageUrl":6,"ownerHtmlUrl":38,"ownerBlogUrl":39,"ownerDescription":40,"updatedAt":41,"install":42,"resources":55},"01M69B33CZ2FHMSEQJ4CXYNFP8","building-java-knowledge-graph",null,"Analyzes JVM projects (Java\u002FKotlin\u002FScala\u002FGroovy) and generates knowledge graphs with tree-sitter parsing. Requires Python 3 on the host and a JVM project with Maven\u002FGradle\u002FAnt\u002FIvy build files. Skips gracefully if either prerequisite is missing. Triggers when asked to \"build knowledge graph\", \"analyze project structure\", \"parse Java codebase\", or \"generate dependency graph\".","microsoft\u002Fgithub-copilot-modernization","microsoft","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F6154722?v=4","01M698VYDXZ6JW5WH3CRV650R8","Microsoft","01M69B2DAY0HTBHWQN4WF3JDBQ",55,"MIT","https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Fgithub-copilot-modernization\u002Fblob\u002Fmain\u002Fplugins\u002Fgithub-copilot-modernization\u002Fskills\u002Fbuilding-java-knowledge-graph\u002FSKILL.md",[18],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000021","资料检索与研究","SCENARIO","使用场景",[24,25,26,27],"building java knowledge graph","python","project structure","scala","2026-11-10 10:12:30",false,"---\nname: building-java-knowledge-graph\ndescription: Analyzes JVM projects (Java\u002FKotlin\u002FScala\u002FGroovy) and generates knowledge graphs with tree-sitter parsing. Requires Python 3 on the host and a JVM project with Maven\u002FGradle\u002FAnt\u002FIvy build files. Skips gracefully if either prerequisite is missing. Triggers when asked to \"build knowledge graph\", \"analyze project structure\", \"parse Java codebase\", or \"generate dependency graph\".\n---\n\n\n## Prerequisites\n\n**Step 1 — Verify JVM project:**\n\n```bash\nfind \"$PROJECT_ROOT\" -maxdepth 5 -type f \\( -name \"*.java\" -o -name \"*.kt\" -o -name \"*.scala\" -o -name \"*.groovy\" \\) | head -1\n```\n\n> If no JVM files found: skip this skill. Set `knowledge_graph_dir` to `null` in `setup_artifacts`. Non-fatal — downstream agents fall back to direct source analysis.\n\n**Step 2 — Verify Python:**\n\n```bash\npython3 --version 2>\u002Fdev\u002Fnull || python --version 2>\u002Fdev\u002Fnull\n```\n\n> If unavailable: skip this skill with same fallback as above.\n\n## Quick Start\n\n```bash\n# First-time setup (~1 minute)\npip3 install --user 'tree-sitter\u003C0.21'\npython3 scripts\u002Finstall_grammars.py\n\n# Optional: SVG generation\nbrew install graphviz  # macOS\n\n# Analyze project\npython3 scripts\u002Fbuild_knowledge_graph.py \u002Fpath\u002Fto\u002Fproject output-dir\n```\n\n⚠️ **DESTRUCTIVE OUTPUT**: The script wipes ALL files in `output-dir` before writing. **NEVER** point it at a shared directory like `{{BASE_PATH}}\u002F` or `{{BASE_PATH}}\u002Fartifacts\u002F`. Use a dedicated subdirectory:\n\n```\n# ✅ SAFE — dedicated subdirectory\npython3 scripts\u002Fbuild_knowledge_graph.py \u002Fpath\u002Fto\u002Fproject {{BASE_PATH}}\u002Fartifacts\u002Fkg_output\n\n# ❌ DANGER — will delete constitution.md, board.md, other artifacts!\npython3 scripts\u002Fbuild_knowledge_graph.py \u002Fpath\u002Fto\u002Fproject {{BASE_PATH}}\n```\n\nAfter the script finishes, copy `knowledge-graph.json` to `{{BASE_PATH}}\u002F` for other agents to consume.\n\n## What It Detects\n\n- **Build systems**: Maven (pom.xml), Gradle (build.gradle*), Ant (build.xml), Ivy (ivy.xml)\n- **Languages**: Java, Kotlin, Scala, Groovy via tree-sitter AST\n- **Structure**: Modules, packages, classes, interfaces, enums, annotations\n- **Relationships**: Inheritance, implementations, module dependencies\n- **Patterns**: Architecture layers (controller\u002Fservice\u002Frepository\u002Fmodel\u002Fconfig\u002Futil)\n- **Config**: `application*.properties`, `application*.yaml\u002Fyml`\n- **Gradle subprojects**: `settings.gradle` parsing\n\n## Output\n\nAll outputs are written under **the provided artifact path** (pass as 2nd argument to the script).\n\n```\nknowledge-graph.json           ← complete graph (nodes + edges)\nmodule-dependencies.{dot,svg}  ← module dependency diagram\nmodule-{name}.{dot,svg}        ← per-module class diagrams\nproject-{name}.{dot,svg}       ← complete project diagram\n```\n\n## Resources\n\n- `references\u002Fschema.md` — node\u002Fedge types, ID patterns, fields, visualization colors\n- `references\u002Fquerying.md` — jq and Python query examples\n- `scripts\u002Fbuild_knowledge_graph.py` — main analyzer\n- `scripts\u002Finstall_grammars.py` — grammar installer\n","## Prerequisites\n\n**Step 1 — Verify JVM project:**\n\n```bash\nfind \"$PROJECT_ROOT\" -maxdepth 5 -type f \\( -name \"*.java\" -o -name \"*.kt\" -o -name \"*.scala\" -o -name \"*.groovy\" \\) | head -1\n```\n\n> If no JVM files found: skip this skill. Set `knowledge_graph_dir` to `null` in `setup_artifacts`. Non-fatal — downstream agents fall back to direct source analysis.\n\n**Step 2 — Verify Python:**\n\n```bash\npython3 --version 2>\u002Fdev\u002Fnull || python --version 2>\u002Fdev\u002Fnull\n```\n\n> If unavailable: skip this skill with same fallback as above.\n\n## Quick Start\n\n```bash\n# First-time setup (~1 minute)\npip3 install --user 'tree-sitter\u003C0.21'\npython3 scripts\u002Finstall_grammars.py\n\n# Optional: SVG generation\nbrew install graphviz  # macOS\n\n# Analyze project\npython3 scripts\u002Fbuild_knowledge_graph.py \u002Fpath\u002Fto\u002Fproject output-dir\n```\n\n⚠️ **DESTRUCTIVE OUTPUT**: The script wipes ALL files in `output-dir` before writing. **NEVER** point it at a shared directory like `{{BASE_PATH}}\u002F` or `{{BASE_PATH}}\u002Fartifacts\u002F`. Use a dedicated subdirectory:\n\n```\n# ✅ SAFE — dedicated subdirectory\npython3 scripts\u002Fbuild_knowledge_graph.py \u002Fpath\u002Fto\u002Fproject {{BASE_PATH}}\u002Fartifacts\u002Fkg_output\n\n# ❌ DANGER — will delete constitution.md, board.md, other artifacts!\npython3 scripts\u002Fbuild_knowledge_graph.py \u002Fpath\u002Fto\u002Fproject {{BASE_PATH}}\n```\n\nAfter the script finishes, copy `knowledge-graph.json` to `{{BASE_PATH}}\u002F` for other agents to consume.\n\n## What It Detects\n\n- **Build systems**: Maven (pom.xml), Gradle (build.gradle*), Ant (build.xml), Ivy (ivy.xml)\n- **Languages**: Java, Kotlin, Scala, Groovy via tree-sitter AST\n- **Structure**: Modules, packages, classes, interfaces, enums, annotations\n- **Relationships**: Inheritance, implementations, module dependencies\n- **Patterns**: Architecture layers (controller\u002Fservice\u002Frepository\u002Fmodel\u002Fconfig\u002Futil)\n- **Config**: `application*.properties`, `application*.yaml\u002Fyml`\n- **Gradle subprojects**: `settings.gradle` parsing\n\n## Output\n\nAll outputs are written under **the provided artifact path** (pass as 2nd argument to the script).\n\n```\nknowledge-graph.json           ← complete graph (nodes + edges)\nmodule-dependencies.{dot,svg}  ← module dependency diagram\nmodule-{name}.{dot,svg}        ← per-module class diagrams\nproject-{name}.{dot,svg}       ← complete project diagram\n```\n\n## Resources\n\n- `references\u002Fschema.md` — node\u002Fedge types, ID patterns, fields, visualization colors\n- `references\u002Fquerying.md` — jq and Python query examples\n- `scripts\u002Fbuild_knowledge_graph.py` — main analyzer\n- `scripts\u002Finstall_grammars.py` — grammar installer\n",{"name":5,"description":7},"main","a9c9469d86e9dc078018e8fb391abc7744088078","plugins\u002Fgithub-copilot-modernization\u002Fskills\u002Fbuilding-java-knowledge-graph",15,"https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Fgithub-copilot-modernization","https:\u002F\u002Fgithub.com\u002Fmicrosoft","https:\u002F\u002Fopensource.microsoft.com","Open source projects and samples from Microsoft","2026-09-24 00:17:59",{"source":8,"skillName":5,"commands":43,"prompt":53,"zipAvailable":54},[44,47,50],{"tool":45,"command":46},"npx","npx skills add microsoft\u002Fgithub-copilot-modernization --skill building-java-knowledge-graph",{"tool":48,"command":49},"bunx","bunx skills add microsoft\u002Fgithub-copilot-modernization --skill building-java-knowledge-graph",{"tool":51,"command":52},"pnpm","pnpm dlx skills add microsoft\u002Fgithub-copilot-modernization --skill building-java-knowledge-graph","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Fgithub-copilot-modernization\u002Fblob\u002Fmain\u002Fplugins\u002Fgithub-copilot-modernization\u002Fskills\u002Fbuilding-java-knowledge-graph\u002FSKILL.md",true,[56,62,68,72,78],{"path":57,"resourceType":58,"resourceTypeDesc":59,"sizeBytes":60,"sourceHtmlUrl":61},".gitignore","OTHER","其他",278,"https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Fgithub-copilot-modernization\u002Fblob\u002Fmain\u002Fplugins\u002Fgithub-copilot-modernization\u002Fskills\u002Fbuilding-java-knowledge-graph\u002F.gitignore",{"path":63,"resourceType":64,"resourceTypeDesc":65,"sizeBytes":66,"sourceHtmlUrl":67},"references\u002Fquerying.md","REFERENCE","参考文档",2103,"https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Fgithub-copilot-modernization\u002Fblob\u002Fmain\u002Fplugins\u002Fgithub-copilot-modernization\u002Fskills\u002Fbuilding-java-knowledge-graph\u002Freferences\u002Fquerying.md",{"path":69,"resourceType":64,"resourceTypeDesc":65,"sizeBytes":70,"sourceHtmlUrl":71},"references\u002Fschema.md",1357,"https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Fgithub-copilot-modernization\u002Fblob\u002Fmain\u002Fplugins\u002Fgithub-copilot-modernization\u002Fskills\u002Fbuilding-java-knowledge-graph\u002Freferences\u002Fschema.md",{"path":73,"resourceType":74,"resourceTypeDesc":75,"sizeBytes":76,"sourceHtmlUrl":77},"scripts\u002Fbuild_knowledge_graph.py","SCRIPT","脚本",76918,"https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Fgithub-copilot-modernization\u002Fblob\u002Fmain\u002Fplugins\u002Fgithub-copilot-modernization\u002Fskills\u002Fbuilding-java-knowledge-graph\u002Fscripts\u002Fbuild_knowledge_graph.py",{"path":79,"resourceType":74,"resourceTypeDesc":75,"sizeBytes":80,"sourceHtmlUrl":81},"scripts\u002Finstall_grammars.py",2309,"https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Fgithub-copilot-modernization\u002Fblob\u002Fmain\u002Fplugins\u002Fgithub-copilot-modernization\u002Fskills\u002Fbuilding-java-knowledge-graph\u002Fscripts\u002Finstall_grammars.py",[83,95,104,113,122,130],{"skillNo":84,"name":85,"nameZh":6,"description":86,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":87,"categories":88,"keywords":92,"publishedAt":28},"01M69B5DBRA354JMQRZP3D1X3X","verify-test-baseline","Generate and run post-migration tests from the frozen baseline specification.","https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Fgithub-copilot-modernization\u002Fblob\u002Fmain\u002Fplugins\u002Fgithub-copilot-modernization\u002Fskills\u002Fverify-test-baseline\u002FSKILL.md",[89],{"categoryNo":90,"categoryName":91,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000008","测试与质量",[93,94],"test","verify test baseline",{"skillNo":96,"name":97,"nameZh":6,"description":98,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":99,"categories":100,"keywords":101,"publishedAt":28},"01M69B5BJWPCN41J5ZAR2XFMBR","team-request","How team members request infrastructure connection info and handle secrets in team mode","https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Fgithub-copilot-modernization\u002Fblob\u002Fmain\u002Fplugins\u002Fgithub-copilot-modernization\u002Fskills\u002Fteam-request\u002FSKILL.md",[],[102,103],"team request","infrastructure",{"skillNo":105,"name":106,"nameZh":6,"description":107,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":108,"categories":109,"keywords":110,"publishedAt":28},"01M69B58TZ7SNTPB6C508M5HWX","team-charters","Provides role charters (mission, ownership, core principles, quality bar) for a multi-agent coding team. Each charter defines the role's mission, ownership scope, core principle (boundary constraints), and quality bar. Most roles also include communication rules. Consumed by the coordinator during task decomposition to assign work to the correct role.\nTriggers: \"look up role charter\", \"what does the architect own\", \"check role boundaries\", \"find team roles\", \"which role handles X\", \"list agent charters\", \"role responsibilities\".\nNOT for: task decomposition (use breaking-down-tasks), implementation (use implementing-code), architecture analysis (use analyzing-architecture).","https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Fgithub-copilot-modernization\u002Fblob\u002Fmain\u002Fplugins\u002Fgithub-copilot-modernization\u002Fskills\u002Fteam-charters\u002FSKILL.md",[],[111,112],"team charters","architecture",{"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":119,"publishedAt":28},"01M69B56JVPKCS2WWVSCZXHEZJ","struts-to-spring","Migration guideline for transforming Apache Struts 2 applications to Spring Boot 3.x and Spring MVC.","https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Fgithub-copilot-modernization\u002Fblob\u002Fmain\u002Fplugins\u002Fgithub-copilot-modernization\u002Fskills\u002Fstruts-to-spring\u002FSKILL.md",[],[120,121],"struts to spring","boot",{"skillNo":123,"name":124,"nameZh":6,"description":125,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":126,"categories":127,"keywords":128,"publishedAt":28},"01M69B54QQ6K8SDZ8MJYEKBYHJ","spring-boot-scaffolding","Reference guide for creating a new Spring Boot project during rewrite migration.","https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Fgithub-copilot-modernization\u002Fblob\u002Fmain\u002Fplugins\u002Fgithub-copilot-modernization\u002Fskills\u002Fspring-boot-scaffolding\u002FSKILL.md",[],[121,129],"spring boot scaffolding",{"skillNo":131,"name":132,"nameZh":6,"description":133,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":134,"categories":135,"keywords":136,"publishedAt":28},"01M69B52T5G9CZWHYXWP22WEKY","sharing-learnings","How to record project learnings so that later-phase workers and future agent runs can consume them.","https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Fgithub-copilot-modernization\u002Fblob\u002Fmain\u002Fplugins\u002Fgithub-copilot-modernization\u002Fskills\u002Fsharing-learnings\u002FSKILL.md",[],[137],"sharing learnings"]