[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6BXN9CWCJ2CTGDEZQ31YR8F":3,"skill-same:01M6BXN9CWCJ2CTGDEZQ31YR8F":58},{"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":24,"linkOnly":25,"markdownContent":26,"markdownBody":27,"frontMatter":28,"refName":29,"commitSha":30,"skillDirectory":31,"forksCount":32,"repositoryHtmlUrl":33,"repositoryHomepageUrl":6,"ownerHtmlUrl":34,"ownerBlogUrl":35,"ownerDescription":36,"updatedAt":37,"install":38,"resources":51},"01M6BXN9CWCJ2CTGDEZQ31YR8F","flamegraph",null,"Build a function call-graph flamegraph website for a Java codebase. Parses the sources, extracts every method and the calls between them, and renders a light-theme site where the user picks any class or method and sees its call tree as a hand-drawn SVG flamegraph. Use when the user runs \u002Fflamegraph or asks for a call graph, call-graph flamegraph, or a visualization of which methods call which.","diegopacheco\u002Fai-playground","diegopacheco","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F121278?v=4","01M6BXCP8P7GGSJ8M1W2MFDTGT","Diego Pacheco","01M6BXCPD3WM51H465XW9YM4BV",21,"Unlicense","https:\u002F\u002Fgithub.com\u002Fdiegopacheco\u002Fai-playground\u002Fblob\u002Fmain\u002Fpocs\u002Ffable5-agent-skill-flamegraph\u002Fskill\u002FSKILL.md",[],[5,19,20,21,22,23],"visualization","java","graph","website","site","2026-11-10 10:12:30",false,"---\nname: flamegraph\ndescription: Build a function call-graph flamegraph website for a Java codebase. Parses the sources, extracts every method and the calls between them, and renders a light-theme site where the user picks any class or method and sees its call tree as a hand-drawn SVG flamegraph. Use when the user runs \u002Fflamegraph or asks for a call graph, call-graph flamegraph, or a visualization of which methods call which.\n---\n\n# flamegraph\n\nGenerate a static call-graph flamegraph website for the Java project the user is working on.\n\n## Steps\n\n1. Find the Java source root. Prefer `src\u002Fmain\u002Fjava`; if absent, use the directory the user points at or the closest directory containing `.java` files. If the user names a specific module or subproject, scope to it.\n2. Run the generator that ships with this skill:\n\n   ```\n   python3 ~\u002F.claude\u002Fskills\u002Fflamegraph\u002Fbuild_flamegraph.py \u003Cjava-src-dir> \u003Cout-dir> [title]\n   ```\n\n   Use `flamegraph-site` inside the target project as `\u003Cout-dir>` unless the user asks for another location, and pass the project name as the title.\n3. The script writes a single self-contained `index.html`. Serve it with `python3 -m http.server` from `\u003Cout-dir>` (pick a free port) or tell the user to open the file directly, then report the URL or path.\n4. Tell the user how to use the site: the left panel lists every class and method, the search box filters it, clicking any method roots the flamegraph at that method, clicking a frame re-roots into it, and the breadcrumb trail walks back up. Frame width is proportional to the number of distinct call paths underneath, hovering shows file, line, and fan-in\u002Ffan-out, and a `↺` mark means a recursive cycle was pruned.\n\n## Notes\n\n- The site is light themed and hand-drawn in style: wobbly SVG frames, pastel fills per class, handwriting fonts.\n- The call graph is static: it is resolved from source text via field, parameter, and local-variable types, so dynamic dispatch through interfaces resolves only when the declared type itself defines the method.\n- The generator needs only the Python standard library; do not install anything.\n- If the script reports no methods found, confirm the path actually contains `.java` files before retrying.\n","# flamegraph\n\nGenerate a static call-graph flamegraph website for the Java project the user is working on.\n\n## Steps\n\n1. Find the Java source root. Prefer `src\u002Fmain\u002Fjava`; if absent, use the directory the user points at or the closest directory containing `.java` files. If the user names a specific module or subproject, scope to it.\n2. Run the generator that ships with this skill:\n\n   ```\n   python3 ~\u002F.claude\u002Fskills\u002Fflamegraph\u002Fbuild_flamegraph.py \u003Cjava-src-dir> \u003Cout-dir> [title]\n   ```\n\n   Use `flamegraph-site` inside the target project as `\u003Cout-dir>` unless the user asks for another location, and pass the project name as the title.\n3. The script writes a single self-contained `index.html`. Serve it with `python3 -m http.server` from `\u003Cout-dir>` (pick a free port) or tell the user to open the file directly, then report the URL or path.\n4. Tell the user how to use the site: the left panel lists every class and method, the search box filters it, clicking any method roots the flamegraph at that method, clicking a frame re-roots into it, and the breadcrumb trail walks back up. Frame width is proportional to the number of distinct call paths underneath, hovering shows file, line, and fan-in\u002Ffan-out, and a `↺` mark means a recursive cycle was pruned.\n\n## Notes\n\n- The site is light themed and hand-drawn in style: wobbly SVG frames, pastel fills per class, handwriting fonts.\n- The call graph is static: it is resolved from source text via field, parameter, and local-variable types, so dynamic dispatch through interfaces resolves only when the declared type itself defines the method.\n- The generator needs only the Python standard library; do not install anything.\n- If the script reports no methods found, confirm the path actually contains `.java` files before retrying.\n",{"name":5,"description":7},"main","90d379e95fcc23dd9759654c345424e1752b0f3a","pocs\u002Ffable5-agent-skill-flamegraph\u002Fskill",9,"https:\u002F\u002Fgithub.com\u002Fdiegopacheco\u002Fai-playground","https:\u002F\u002Fgithub.com\u002Fdiegopacheco","http:\u002F\u002Fdiego-pacheco.blogspot.com","Brazilian Hands-on Software Architect | 20+ years in Tech | Author | Father. Opinions are my own!","2026-11-07 09:01:46",{"source":8,"skillName":5,"commands":39,"prompt":49,"zipAvailable":50},[40,43,46],{"tool":41,"command":42},"npx","npx skills add diegopacheco\u002Fai-playground --skill flamegraph",{"tool":44,"command":45},"bunx","bunx skills add diegopacheco\u002Fai-playground --skill flamegraph",{"tool":47,"command":48},"pnpm","pnpm dlx skills add diegopacheco\u002Fai-playground --skill flamegraph","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fdiegopacheco\u002Fai-playground\u002Fblob\u002Fmain\u002Fpocs\u002Ffable5-agent-skill-flamegraph\u002Fskill\u002FSKILL.md",true,[52],{"path":53,"resourceType":54,"resourceTypeDesc":55,"sizeBytes":56,"sourceHtmlUrl":57},"build_flamegraph.py","SCRIPT","脚本",15634,"https:\u002F\u002Fgithub.com\u002Fdiegopacheco\u002Fai-playground\u002Fblob\u002Fmain\u002Fpocs\u002Ffable5-agent-skill-flamegraph\u002Fskill\u002Fbuild_flamegraph.py",[59,77,87,100,116,135],{"skillNo":60,"name":61,"nameZh":6,"description":62,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":63,"categories":64,"keywords":70,"publishedAt":24},"01M6WJ537DN520XY8MSW9ZV0RP","word-count","Counts the words, lines and characters of a text or a file.","https:\u002F\u002Fgithub.com\u002Fdiegopacheco\u002Fai-playground\u002Fblob\u002Fmain\u002Fpocs\u002Fskills-gateway-router\u002Fupstream-skills\u002Ftext-skills\u002Fword-count\u002FSKILL.md",[65],{"categoryNo":66,"categoryName":67,"taxonomyType":68,"taxonomyTypeDesc":69},"01JBSEEDCAT000000000000002","文档处理","SCENARIO","使用场景",[71,72,73,74,75,76],"count","word count","Word","characters","text","file",{"skillNo":78,"name":79,"nameZh":6,"description":80,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":81,"categories":82,"keywords":83,"publishedAt":24},"01M6WJ4Y2GT5SECWAKKYHGES4F","slugify","Turns a title or a sentence into a URL slug, lowercase words joined by hyphens with accents removed.","https:\u002F\u002Fgithub.com\u002Fdiegopacheco\u002Fai-playground\u002Fblob\u002Fmain\u002Fpocs\u002Fskills-gateway-router\u002Fupstream-skills\u002Ftext-skills\u002Fslugify\u002FSKILL.md",[],[79,84,85,86],"title","with","URL",{"skillNo":88,"name":89,"nameZh":6,"description":90,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":91,"categories":92,"keywords":93,"publishedAt":24},"01M6WJ4V9CWHT9NVCD441VK5MH","json-format","Validates a JSON file and pretty prints it with two space indentation, or reports where the JSON is invalid.","https:\u002F\u002Fgithub.com\u002Fdiegopacheco\u002Fai-playground\u002Fblob\u002Fmain\u002Fpocs\u002Fskills-gateway-router\u002Fupstream-skills\u002Fdev-skills\u002Fjson-format\u002FSKILL.md",[],[94,95,96,76,97,98,99,85],"json","format","json format","reports","invalid","it",{"skillNo":101,"name":102,"nameZh":6,"description":103,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":104,"categories":105,"keywords":106,"publishedAt":24},"01M6WJ4QMRKW8EFP71F4KS2DHE","commit-message","Writes a conventional commit message for the staged git changes.","https:\u002F\u002Fgithub.com\u002Fdiegopacheco\u002Fai-playground\u002Fblob\u002Fmain\u002Fpocs\u002Fskills-gateway-router\u002Fupstream-skills\u002Fdev-skills\u002Fcommit-message\u002FSKILL.md",[],[107,108,109,110,111,112,113,114,115],"commit","commit message","message","git","conventional commit","for","changes","staged","conventional commit message",{"skillNo":117,"name":118,"nameZh":6,"description":119,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":120,"categories":121,"keywords":122,"publishedAt":24},"01M6WJ4MAM2CJH0GWYXFBB9GQC","skills-gateway","Gateway and router to a catalog of skills that are not registered directly. Use it before any task a specialized skill could handle, such as text, JSON or git chores. It finds the right skill and loads its instructions.","https:\u002F\u002Fgithub.com\u002Fdiegopacheco\u002Fai-playground\u002Fblob\u002Fmain\u002Fpocs\u002Fskills-gateway-router\u002F.claude\u002Fskills\u002Fskills-gateway\u002FSKILL.md",[],[123,124,99,125,126,110,127,94,75,128,129,130,131,132,133,134],"skills gateway","gateway","task","loads","Bash","node","specialized","instructions","catalog","use","router","as",{"skillNo":136,"name":137,"nameZh":6,"description":138,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":139,"categories":140,"keywords":141,"publishedAt":24},"01M6M2PYJJQKMWGX7XT7ZJK0H3","decision-log","Record, list, show and supersede architecture decisions that persist across sessions in the shared agent infra state store. Use when the user says \"record this decision\", \"log an ADR\", \"what did we decide about\", \"list decisions\", or \"supersede decision\".","https:\u002F\u002Fgithub.com\u002Fdiegopacheco\u002Fai-playground\u002Fblob\u002Fmain\u002Fpocs\u002Fagent-skills-infra-poc\u002Fskills\u002Fdecision-log\u002FSKILL.md",[],[142,143,144,145,146,147,148,149,150,151,132,152,153,154,155,156,157,158,159,160],"decision log","log","decision","persist","architecture","state","adr","decide","decisions","list","show","infra","record","across","shared","store","about","supersede","sessions"]