@urmzd/github-insights 2.0.0 → 2.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (57) hide show
  1. package/.github/workflows/release.yml +5 -1
  2. package/CHANGELOG.md +40 -0
  3. package/README.md +0 -2
  4. package/assets/insights/index.svg +14 -0
  5. package/assets/insights/metrics-calendar.svg +14 -0
  6. package/{metrics → assets/insights}/metrics-complexity.svg +1 -1
  7. package/{metrics → assets/insights}/metrics-contributions.svg +1 -1
  8. package/assets/insights/metrics-expertise.svg +14 -0
  9. package/assets/insights/metrics-languages.svg +14 -0
  10. package/{metrics → assets/insights}/metrics-pulse.svg +1 -1
  11. package/examples/classic/README.md +2 -2
  12. package/examples/classic/index.svg +2 -2
  13. package/examples/classic/metrics-calendar.svg +1 -1
  14. package/examples/classic/metrics-complexity.svg +1 -1
  15. package/examples/classic/metrics-contributions.svg +1 -1
  16. package/examples/classic/metrics-expertise.svg +2 -2
  17. package/examples/classic/metrics-languages.svg +1 -1
  18. package/examples/classic/metrics-pulse.svg +1 -1
  19. package/examples/ecosystem/README.md +23 -24
  20. package/examples/ecosystem/index.svg +2 -2
  21. package/examples/ecosystem/metrics-calendar.svg +1 -1
  22. package/examples/ecosystem/metrics-complexity.svg +1 -1
  23. package/examples/ecosystem/metrics-contributions.svg +1 -1
  24. package/examples/ecosystem/metrics-expertise.svg +2 -2
  25. package/examples/ecosystem/metrics-languages.svg +1 -1
  26. package/examples/ecosystem/metrics-pulse.svg +1 -1
  27. package/examples/minimal/README.md +2 -2
  28. package/examples/minimal/index.svg +2 -2
  29. package/examples/minimal/metrics-calendar.svg +1 -1
  30. package/examples/minimal/metrics-complexity.svg +1 -1
  31. package/examples/minimal/metrics-contributions.svg +1 -1
  32. package/examples/minimal/metrics-expertise.svg +2 -2
  33. package/examples/minimal/metrics-languages.svg +1 -1
  34. package/examples/minimal/metrics-pulse.svg +1 -1
  35. package/examples/modern/README.md +36 -38
  36. package/examples/modern/index.svg +2 -2
  37. package/examples/modern/metrics-calendar.svg +1 -1
  38. package/examples/modern/metrics-complexity.svg +1 -1
  39. package/examples/modern/metrics-contributions.svg +1 -1
  40. package/examples/modern/metrics-expertise.svg +2 -2
  41. package/examples/modern/metrics-languages.svg +1 -1
  42. package/examples/modern/metrics-pulse.svg +1 -1
  43. package/package.json +5 -5
  44. package/src/api.ts +1 -1
  45. package/src/config.ts +6 -12
  46. package/src/index.ts +6 -0
  47. package/src/metrics.ts +16 -2
  48. package/src/readme.test.ts +31 -25
  49. package/src/templates.test.ts +110 -13
  50. package/src/templates.ts +38 -11
  51. package/src/types.ts +3 -0
  52. package/metrics/index.svg +0 -14
  53. package/metrics/metrics-calendar.svg +0 -14
  54. package/metrics/metrics-expertise.svg +0 -14
  55. package/metrics/metrics-languages.svg +0 -14
  56. /package/{metrics → assets/insights}/metrics-domains.svg +0 -0
  57. /package/{metrics → assets/insights}/metrics-tech-stack.svg +0 -0
@@ -11,4 +11,4 @@
11
11
  .t-card-detail { font-size: 11px; fill: #8b949e; }
12
12
  .t-pill { font-size: 11px; font-weight: 600; }
13
13
  .t-bullet { font-size: 12px; fill: #c9d1d9; }
14
- </style></defs><rect width="808" height="390" rx="12" fill="#0d1117"/><text x="24" y="40" class="t t-h">SIGNATURE PROJECTS</text><text x="24" y="56" class="t t-sub">Top projects by technical complexity</text><rect x="24" y="66" width="760" height="52" rx="6" fill="#161b22" stroke="#30363d" stroke-width="1"/><rect x="24" y="66" width="4" height="52" rx="2" fill="#58a6ff"/><text x="40" y="84" class="t t-card-title">resume-generator</text><text x="768" y="84" class="t t-value" text-anchor="end">★ 10</text><text x="40" y="100" class="t t-card-detail">A data-driven CLI tool that converts YAML/JSON/TOML resume data into polished PDFs, DOCX,…</text><rect x="24" y="128" width="760" height="52" rx="6" fill="#161b22" stroke="#30363d" stroke-width="1"/><rect x="24" y="128" width="4" height="52" rx="2" fill="#3fb950"/><text x="40" y="146" class="t t-card-title">lepus-classifier</text><text x="768" y="146" class="t t-value" text-anchor="end">★ 2</text><text x="40" y="162" class="t t-card-detail">A CNN research project exploring optimal image classification architectures for small dat…</text><rect x="24" y="190" width="760" height="52" rx="6" fill="#161b22" stroke="#30363d" stroke-width="1"/><rect x="24" y="190" width="4" height="52" rx="2" fill="#d29922"/><text x="40" y="208" class="t t-card-title">linear-gp</text><text x="768" y="208" class="t t-value" text-anchor="end">★ 2</text><text x="40" y="224" class="t t-card-detail">A production-grade Rust framework for Linear Genetic Programming research, featuring modu…</text><rect x="24" y="252" width="760" height="52" rx="6" fill="#161b22" stroke="#30363d" stroke-width="1"/><rect x="24" y="252" width="4" height="52" rx="2" fill="#f85149"/><text x="40" y="270" class="t t-card-title">homai</text><text x="768" y="270" class="t t-value" text-anchor="end">★ 0</text><text x="40" y="286" class="t t-card-detail">Local-first, privacy-focused smart home control system. Manage Zigbee devices through a R…</text><rect x="24" y="314" width="760" height="52" rx="6" fill="#161b22" stroke="#30363d" stroke-width="1"/><rect x="24" y="314" width="4" height="52" rx="2" fill="#bc8cff"/><text x="40" y="332" class="t t-card-title">urmzd.com</text><text x="768" y="332" class="t t-value" text-anchor="end">★ 0</text><text x="40" y="348" class="t t-card-detail">Personal website and blog built with Astro, TypeScript, and MDX—featuring fast static sit…</text></svg>
14
+ </style></defs><rect width="808" height="390" rx="12" fill="#0d1117"/><text x="24" y="40" class="t t-h">SIGNATURE PROJECTS</text><text x="24" y="56" class="t t-sub">Top projects by technical complexity</text><rect x="24" y="66" width="760" height="52" rx="6" fill="#161b22" stroke="#30363d" stroke-width="1"/><rect x="24" y="66" width="4" height="52" rx="2" fill="#58a6ff"/><text x="40" y="84" class="t t-card-title">resume-generator</text><text x="768" y="84" class="t t-value" text-anchor="end">★ 10</text><text x="40" y="100" class="t t-card-detail">A data-driven CLI tool that converts YAML/JSON/TOML resume data into polished PDFs, DOCX,…</text><rect x="24" y="128" width="760" height="52" rx="6" fill="#161b22" stroke="#30363d" stroke-width="1"/><rect x="24" y="128" width="4" height="52" rx="2" fill="#3fb950"/><text x="40" y="146" class="t t-card-title">linear-gp</text><text x="768" y="146" class="t t-value" text-anchor="end">★ 2</text><text x="40" y="162" class="t t-card-detail">A production-grade Rust framework for Linear Genetic Programming research, featuring modu…</text><rect x="24" y="190" width="760" height="52" rx="6" fill="#161b22" stroke="#30363d" stroke-width="1"/><rect x="24" y="190" width="4" height="52" rx="2" fill="#d29922"/><text x="40" y="208" class="t t-card-title">zigbee-rest</text><text x="768" y="208" class="t t-value" text-anchor="end">★ 0</text><text x="40" y="224" class="t t-card-detail">Local-first, privacy-focused smart home control system. Manage Zigbee devices through a R…</text><rect x="24" y="252" width="760" height="52" rx="6" fill="#161b22" stroke="#30363d" stroke-width="1"/><rect x="24" y="252" width="4" height="52" rx="2" fill="#f85149"/><text x="40" y="270" class="t t-card-title">urmzd.com</text><text x="768" y="270" class="t t-value" text-anchor="end">★ 0</text><text x="40" y="286" class="t t-card-detail">Personal website and blog built with Astro, TypeScript, and MDX—featuring fast static sit…</text><rect x="24" y="314" width="760" height="52" rx="6" fill="#161b22" stroke="#30363d" stroke-width="1"/><rect x="24" y="314" width="4" height="52" rx="2" fill="#bc8cff"/><text x="40" y="332" class="t t-card-title">resume-generator-app</text><text x="768" y="332" class="t t-value" text-anchor="end">★ 0</text><text x="40" y="348" class="t t-card-detail">A native desktop app for building polished resumes with live PDF preview, template galler…</text></svg>
@@ -11,4 +11,4 @@
11
11
  .t-card-detail { font-size: 11px; fill: #8b949e; }
12
12
  .t-pill { font-size: 11px; font-weight: 600; }
13
13
  .t-bullet { font-size: 12px; fill: #c9d1d9; }
14
- </style></defs><rect width="808" height="186" rx="12" fill="#0d1117"/><text x="24" y="40" class="t t-h">OPEN SOURCE CONTRIBUTIONS</text><text x="24" y="56" class="t t-sub">External repositories contributed to (all time)</text><rect x="24" y="66" width="760" height="44" rx="6" fill="#161b22" stroke="#30363d" stroke-width="1"/><rect x="24" y="66" width="4" height="44" rx="2" fill="#58a6ff"/><text x="40" y="84" class="t t-card-title">MathisWellmann/gym-rs</text><text x="40" y="100" class="t t-card-detail">★ 126 · Rust</text><rect x="24" y="118" width="760" height="44" rx="6" fill="#161b22" stroke="#30363d" stroke-width="1"/><rect x="24" y="118" width="4" height="44" rx="2" fill="#3fb950"/><text x="40" y="136" class="t t-card-title">getzep/graphiti</text><text x="40" y="152" class="t t-card-detail">★ 23,772 · Python</text></svg>
14
+ </style></defs><rect width="808" height="186" rx="12" fill="#0d1117"/><text x="24" y="40" class="t t-h">OPEN SOURCE CONTRIBUTIONS</text><text x="24" y="56" class="t t-sub">External repositories contributed to (all time)</text><rect x="24" y="66" width="760" height="44" rx="6" fill="#161b22" stroke="#30363d" stroke-width="1"/><rect x="24" y="66" width="4" height="44" rx="2" fill="#58a6ff"/><text x="40" y="84" class="t t-card-title">MathisWellmann/gym-rs</text><text x="40" y="100" class="t t-card-detail">★ 127 · Rust</text><rect x="24" y="118" width="760" height="44" rx="6" fill="#161b22" stroke="#30363d" stroke-width="1"/><rect x="24" y="118" width="4" height="44" rx="2" fill="#3fb950"/><text x="40" y="136" class="t t-card-title">getzep/graphiti</text><text x="40" y="152" class="t t-card-detail">★ 23,825 · Python</text></svg>
@@ -1,4 +1,4 @@
1
- <svg xmlns="http://www.w3.org/2000/svg" width="808" height="534" viewBox="0 0 808 534"><defs><style>
1
+ <svg xmlns="http://www.w3.org/2000/svg" width="808" height="550" viewBox="0 0 808 550"><defs><style>
2
2
  .t { font-family: -apple-system,BlinkMacSystemFont,Segoe UI,Helvetica,Arial,sans-serif; }
3
3
  .t-h { font-size: 13px; fill: #c9d1d9; letter-spacing: 1.5px; font-weight: 600; }
4
4
  .t-sub { font-size: 11px; fill: #6e7681; }
@@ -11,4 +11,4 @@
11
11
  .t-card-detail { font-size: 11px; fill: #8b949e; }
12
12
  .t-pill { font-size: 11px; font-weight: 600; }
13
13
  .t-bullet { font-size: 12px; fill: #c9d1d9; }
14
- </style></defs><rect width="808" height="534" rx="12" fill="#0d1117"/><text x="24" y="40" class="t t-h">EXPERTISE</text><text x="24" y="56" class="t t-sub">Curated from dependencies, topics, and languages via AI analysis</text><text x="24" y="80" class="t t-subhdr">SYSTEMS PROGRAMMING &amp; CLI TOOLS</text><rect x="24" y="92" width="700" height="18" rx="4" fill="#58a6ff" fill-opacity="0.15"/><rect x="24" y="92" width="665" height="18" rx="4" fill="#58a6ff" fill-opacity="0.85"/><text x="734" y="105" class="t t-value">95%</text><text x="24" y="126" class="t t-card-detail">Go · Rust · Wails · Chezmoi · Nix</text><text x="24" y="154" class="t t-subhdr">MACHINE LEARNING &amp; AI</text><rect x="24" y="166" width="700" height="18" rx="4" fill="#3fb950" fill-opacity="0.15"/><rect x="24" y="166" width="630" height="18" rx="4" fill="#3fb950" fill-opacity="0.85"/><text x="734" y="179" class="t t-value">90%</text><text x="24" y="200" class="t t-card-detail">PyTorch · TensorFlow · Keras · Transformers · CNNs</text><text x="24" y="228" class="t t-subhdr">WEB DEVELOPMENT &amp; STATIC SITES</text><rect x="24" y="240" width="700" height="18" rx="4" fill="#d29922" fill-opacity="0.15"/><rect x="24" y="240" width="595" height="18" rx="4" fill="#d29922" fill-opacity="0.85"/><text x="734" y="253" class="t t-value">85%</text><text x="24" y="274" class="t t-card-detail">Astro · React · TypeScript · Tailwind CSS · MDX</text><text x="24" y="302" class="t t-subhdr">DEVOPS &amp; CI/CD AUTOMATION</text><rect x="24" y="314" width="700" height="18" rx="4" fill="#f85149" fill-opacity="0.15"/><rect x="24" y="314" width="560" height="18" rx="4" fill="#f85149" fill-opacity="0.85"/><text x="734" y="327" class="t t-value">80%</text><text x="24" y="348" class="t t-card-detail">GitHub Actions · Docker · Semantic Release · CI/CD · Embed-src</text><text x="24" y="376" class="t t-subhdr">KNOWLEDGE GRAPHS &amp; RETRIEVAL-AUGMENTED GENERATION</text><rect x="24" y="388" width="700" height="18" rx="4" fill="#bc8cff" fill-opacity="0.15"/><rect x="24" y="388" width="525" height="18" rx="4" fill="#bc8cff" fill-opacity="0.85"/><text x="734" y="401" class="t t-value">75%</text><text x="24" y="422" class="t t-card-detail">SurrealDB · Vector Search · RAG · kgdk · ragdk</text><text x="24" y="450" class="t t-subhdr">DESKTOP &amp; CROSS-PLATFORM APPS</text><rect x="24" y="462" width="700" height="18" rx="4" fill="#39d2c0" fill-opacity="0.15"/><rect x="24" y="462" width="489.99999999999994" height="18" rx="4" fill="#39d2c0" fill-opacity="0.85"/><text x="734" y="475" class="t t-value">70%</text><text x="24" y="496" class="t t-card-detail">JavaFX · Wails · React · Go · Rust</text></svg>
14
+ </style></defs><rect width="808" height="550" rx="12" fill="#0d1117"/><text x="24" y="40" class="t t-h">EXPERTISE</text><text x="24" y="56" class="t t-sub">Curated from dependencies, topics, and languages via AI analysis</text><text x="24" y="80" class="t t-subhdr">AI &amp; MACHINE LEARNING</text><rect x="24" y="92" width="700" height="18" rx="4" fill="#58a6ff" fill-opacity="0.15"/><rect x="24" y="92" width="630" height="18" rx="4" fill="#58a6ff" fill-opacity="0.85"/><text x="734" y="105" class="t t-value">90%</text><text x="24" y="126" class="t t-card-detail">PyTorch · PyTorch Lightning · Rust (Linear Genetic Programm… · Retrieval-Augmented Generatio… · Knowledge Graphs</text><text x="24" y="142" class="t t-card-detail">(SurrealDB) · Q-Learning</text><text x="24" y="170" class="t t-subhdr">WEB DEVELOPMENT &amp; STATIC SITES</text><rect x="24" y="182" width="700" height="18" rx="4" fill="#3fb950" fill-opacity="0.15"/><rect x="24" y="182" width="595" height="18" rx="4" fill="#3fb950" fill-opacity="0.85"/><text x="734" y="195" class="t t-value">85%</text><text x="24" y="216" class="t t-card-detail">Astro · React · TypeScript · Tailwind CSS · MDX</text><text x="24" y="244" class="t t-subhdr">BACKEND &amp; APIS</text><rect x="24" y="256" width="700" height="18" rx="4" fill="#d29922" fill-opacity="0.15"/><rect x="24" y="256" width="560" height="18" rx="4" fill="#d29922" fill-opacity="0.85"/><text x="734" y="269" class="t t-value">80%</text><text x="24" y="290" class="t t-card-detail">Go · FastAPI · OpenAPI · SurrealDB · Graph-enhanced Retrieval</text><text x="24" y="318" class="t t-subhdr">DEVOPS &amp; AUTOMATION</text><rect x="24" y="330" width="700" height="18" rx="4" fill="#f85149" fill-opacity="0.15"/><rect x="24" y="330" width="525" height="18" rx="4" fill="#f85149" fill-opacity="0.85"/><text x="734" y="343" class="t t-value">75%</text><text x="24" y="364" class="t t-card-detail">GitHub Actions · CI/CD · Chezmoi · Nix · Docker</text><text x="24" y="392" class="t t-subhdr">DESKTOP &amp; CLI APPLICATIONS</text><rect x="24" y="404" width="700" height="18" rx="4" fill="#bc8cff" fill-opacity="0.15"/><rect x="24" y="404" width="489.99999999999994" height="18" rx="4" fill="#bc8cff" fill-opacity="0.85"/><text x="734" y="417" class="t t-value">70%</text><text x="24" y="438" class="t t-card-detail">Rust · Go · JavaFX · Wails · Textual</text><text x="24" y="466" class="t t-subhdr">DOCUMENTATION &amp; PUBLISHING</text><rect x="24" y="478" width="700" height="18" rx="4" fill="#39d2c0" fill-opacity="0.15"/><rect x="24" y="478" width="420" height="18" rx="4" fill="#39d2c0" fill-opacity="0.85"/><text x="734" y="491" class="t t-value">60%</text><text x="24" y="512" class="t t-card-detail">TeX/LaTeX · Pandoc · Markdown · PDF Generation</text></svg>
@@ -11,4 +11,4 @@
11
11
  .t-card-detail { font-size: 11px; fill: #8b949e; }
12
12
  .t-pill { font-size: 11px; font-weight: 600; }
13
13
  .t-bullet { font-size: 12px; fill: #c9d1d9; }
14
- </style></defs><rect width="808" height="350" rx="12" fill="#0d1117"/><text x="24" y="40" class="t t-h">LANGUAGES</text><text x="24" y="56" class="t t-sub">By bytes of code across all public repos</text><circle cx="114" cy="156" r="70" fill="none" stroke="#00ADD8" stroke-width="28" stroke-dasharray="124.03007796372502 315.792893538846" stroke-dashoffset="0" transform="rotate(-90 114 156)" opacity="0.85"/><circle cx="114" cy="156" r="70" fill="none" stroke="#dea584" stroke-width="28" stroke-dasharray="109.07609693263761 330.7468745699334" stroke-dashoffset="-124.03007796372502" transform="rotate(-90 114 156)" opacity="0.85"/><circle cx="114" cy="156" r="70" fill="none" stroke="#3178c6" stroke-width="28" stroke-dasharray="103.35839830310418 336.4645731994668" stroke-dashoffset="-233.10617489636263" transform="rotate(-90 114 156)" opacity="0.85"/><circle cx="114" cy="156" r="70" fill="none" stroke="#3D6117" stroke-width="28" stroke-dasharray="20.231856689118267 419.59111481345275" stroke-dashoffset="-336.4645731994668" transform="rotate(-90 114 156)" opacity="0.85"/><circle cx="114" cy="156" r="70" fill="none" stroke="#3572A5" stroke-width="28" stroke-dasharray="17.15309588860027 422.66987561397076" stroke-dashoffset="-356.6964298885851" transform="rotate(-90 114 156)" opacity="0.85"/><circle cx="114" cy="156" r="70" fill="none" stroke="#89e051" stroke-width="28" stroke-dasharray="16.713272917097697 423.1096985854733" stroke-dashoffset="-373.84952577718536" transform="rotate(-90 114 156)" opacity="0.85"/><circle cx="114" cy="156" r="70" fill="none" stroke="#a52a22" stroke-width="28" stroke-dasharray="7.916813487046279 431.90615801552474" stroke-dashoffset="-390.56279869428306" transform="rotate(-90 114 156)" opacity="0.85"/><circle cx="114" cy="156" r="70" fill="none" stroke="#b07219" stroke-width="28" stroke-dasharray="6.597344572538565 433.22562693003243" stroke-dashoffset="-398.47961218132934" transform="rotate(-90 114 156)" opacity="0.85"/><circle cx="114" cy="156" r="70" fill="none" stroke="#000080" stroke-width="28" stroke-dasharray="6.157521601035993 433.66544990153506" stroke-dashoffset="-405.07695675386793" transform="rotate(-90 114 156)" opacity="0.85"/><circle cx="114" cy="156" r="70" fill="none" stroke="#e34c26" stroke-width="28" stroke-dasharray="5.717698629533424 434.1052728730376" stroke-dashoffset="-411.2344783549039" transform="rotate(-90 114 156)" opacity="0.85"/><text x="114" y="161" class="t" fill="#c9d1d9" font-size="14" font-weight="700" text-anchor="middle">10</text><text x="114" y="176" class="t" fill="#6e7681" font-size="10" text-anchor="middle">languages</text><rect x="244" y="76" width="12" height="12" rx="2" fill="#00ADD8" opacity="0.85"/><text x="264" y="86" class="t t-label">Go</text><text x="444" y="86" class="t t-value" text-anchor="end">28.2%</text><rect x="244" y="100" width="12" height="12" rx="2" fill="#dea584" opacity="0.85"/><text x="264" y="110" class="t t-label">Rust</text><text x="444" y="110" class="t t-value" text-anchor="end">24.8%</text><rect x="244" y="124" width="12" height="12" rx="2" fill="#3178c6" opacity="0.85"/><text x="264" y="134" class="t t-label">TypeScript</text><text x="444" y="134" class="t t-value" text-anchor="end">23.5%</text><rect x="244" y="148" width="12" height="12" rx="2" fill="#3D6117" opacity="0.85"/><text x="264" y="158" class="t t-label">TeX</text><text x="444" y="158" class="t t-value" text-anchor="end">4.6%</text><rect x="244" y="172" width="12" height="12" rx="2" fill="#3572A5" opacity="0.85"/><text x="264" y="182" class="t t-label">Python</text><text x="444" y="182" class="t t-value" text-anchor="end">3.9%</text><rect x="244" y="196" width="12" height="12" rx="2" fill="#89e051" opacity="0.85"/><text x="264" y="206" class="t t-label">Shell</text><text x="444" y="206" class="t t-value" text-anchor="end">3.8%</text><rect x="244" y="220" width="12" height="12" rx="2" fill="#a52a22" opacity="0.85"/><text x="264" y="230" class="t t-label">Jinja</text><text x="444" y="230" class="t t-value" text-anchor="end">1.8%</text><rect x="244" y="244" width="12" height="12" rx="2" fill="#b07219" opacity="0.85"/><text x="264" y="254" class="t t-label">Java</text><text x="444" y="254" class="t t-value" text-anchor="end">1.5%</text><rect x="244" y="268" width="12" height="12" rx="2" fill="#000080" opacity="0.85"/><text x="264" y="278" class="t t-label">Lua</text><text x="444" y="278" class="t t-value" text-anchor="end">1.4%</text><rect x="244" y="292" width="12" height="12" rx="2" fill="#e34c26" opacity="0.85"/><text x="264" y="302" class="t t-label">HTML</text><text x="444" y="302" class="t t-value" text-anchor="end">1.3%</text></svg>
14
+ </style></defs><rect width="808" height="350" rx="12" fill="#0d1117"/><text x="24" y="40" class="t t-h">LANGUAGES</text><text x="24" y="56" class="t t-sub">By bytes of code across all public repos</text><circle cx="114" cy="156" r="70" fill="none" stroke="#00ADD8" stroke-width="28" stroke-dasharray="120.51149419170444 319.31147731086656" stroke-dashoffset="0" transform="rotate(-90 114 156)" opacity="0.85"/><circle cx="114" cy="156" r="70" fill="none" stroke="#3178c6" stroke-width="28" stroke-dasharray="110.8353888186479 328.9875826839231" stroke-dashoffset="-120.51149419170444" transform="rotate(-90 114 156)" opacity="0.85"/><circle cx="114" cy="156" r="70" fill="none" stroke="#dea584" stroke-width="28" stroke-dasharray="108.63627396113505 331.186697541436" stroke-dashoffset="-231.34688301035234" transform="rotate(-90 114 156)" opacity="0.85"/><circle cx="114" cy="156" r="70" fill="none" stroke="#3D6117" stroke-width="28" stroke-dasharray="19.792033717615695 420.0309377849553" stroke-dashoffset="-339.9831569714874" transform="rotate(-90 114 156)" opacity="0.85"/><circle cx="114" cy="156" r="70" fill="none" stroke="#89e051" stroke-width="28" stroke-dasharray="15.833626974092558 423.98934452847845" stroke-dashoffset="-359.7751906891031" transform="rotate(-90 114 156)" opacity="0.85"/><circle cx="114" cy="156" r="70" fill="none" stroke="#3572A5" stroke-width="28" stroke-dasharray="13.634512116579701 426.18845938599134" stroke-dashoffset="-375.6088176631957" transform="rotate(-90 114 156)" opacity="0.85"/><circle cx="114" cy="156" r="70" fill="none" stroke="#a52a22" stroke-width="28" stroke-dasharray="7.916813487046279 431.90615801552474" stroke-dashoffset="-389.24332977977537" transform="rotate(-90 114 156)" opacity="0.85"/><circle cx="114" cy="156" r="70" fill="none" stroke="#b07219" stroke-width="28" stroke-dasharray="6.597344572538565 433.22562693003243" stroke-dashoffset="-397.16014326682165" transform="rotate(-90 114 156)" opacity="0.85"/><circle cx="114" cy="156" r="70" fill="none" stroke="#663399" stroke-width="28" stroke-dasharray="5.717698629533424 434.1052728730376" stroke-dashoffset="-403.75748783936024" transform="rotate(-90 114 156)" opacity="0.85"/><circle cx="114" cy="156" r="70" fill="none" stroke="#000080" stroke-width="28" stroke-dasharray="5.717698629533424 434.1052728730376" stroke-dashoffset="-409.47518646889364" transform="rotate(-90 114 156)" opacity="0.85"/><text x="114" y="161" class="t" fill="#c9d1d9" font-size="14" font-weight="700" text-anchor="middle">10</text><text x="114" y="176" class="t" fill="#6e7681" font-size="10" text-anchor="middle">languages</text><rect x="244" y="76" width="12" height="12" rx="2" fill="#00ADD8" opacity="0.85"/><text x="264" y="86" class="t t-label">Go</text><text x="444" y="86" class="t t-value" text-anchor="end">27.4%</text><rect x="244" y="100" width="12" height="12" rx="2" fill="#3178c6" opacity="0.85"/><text x="264" y="110" class="t t-label">TypeScript</text><text x="444" y="110" class="t t-value" text-anchor="end">25.2%</text><rect x="244" y="124" width="12" height="12" rx="2" fill="#dea584" opacity="0.85"/><text x="264" y="134" class="t t-label">Rust</text><text x="444" y="134" class="t t-value" text-anchor="end">24.7%</text><rect x="244" y="148" width="12" height="12" rx="2" fill="#3D6117" opacity="0.85"/><text x="264" y="158" class="t t-label">TeX</text><text x="444" y="158" class="t t-value" text-anchor="end">4.5%</text><rect x="244" y="172" width="12" height="12" rx="2" fill="#89e051" opacity="0.85"/><text x="264" y="182" class="t t-label">Shell</text><text x="444" y="182" class="t t-value" text-anchor="end">3.6%</text><rect x="244" y="196" width="12" height="12" rx="2" fill="#3572A5" opacity="0.85"/><text x="264" y="206" class="t t-label">Python</text><text x="444" y="206" class="t t-value" text-anchor="end">3.1%</text><rect x="244" y="220" width="12" height="12" rx="2" fill="#a52a22" opacity="0.85"/><text x="264" y="230" class="t t-label">Jinja</text><text x="444" y="230" class="t t-value" text-anchor="end">1.8%</text><rect x="244" y="244" width="12" height="12" rx="2" fill="#b07219" opacity="0.85"/><text x="264" y="254" class="t t-label">Java</text><text x="444" y="254" class="t t-value" text-anchor="end">1.5%</text><rect x="244" y="268" width="12" height="12" rx="2" fill="#663399" opacity="0.85"/><text x="264" y="278" class="t t-label">CSS</text><text x="444" y="278" class="t t-value" text-anchor="end">1.3%</text><rect x="244" y="292" width="12" height="12" rx="2" fill="#000080" opacity="0.85"/><text x="264" y="302" class="t t-label">Lua</text><text x="444" y="302" class="t t-value" text-anchor="end">1.3%</text></svg>
@@ -11,4 +11,4 @@
11
11
  .t-card-detail { font-size: 11px; fill: #8b949e; }
12
12
  .t-pill { font-size: 11px; font-weight: 600; }
13
13
  .t-bullet { font-size: 12px; fill: #c9d1d9; }
14
- </style></defs><rect width="808" height="162" rx="12" fill="#0d1117"/><text x="24" y="40" class="t t-h">AT A GLANCE</text><text x="24" y="56" class="t t-sub">Contribution activity over the past year</text><rect x="24" y="66" width="140" height="72" rx="8" fill="#161b22" stroke="#30363d" stroke-width="1"/><circle cx="38" cy="82" r="4" fill="#58a6ff"/><text x="48" y="86" class="t t-stat-label">COMMITS</text><text x="94" y="118" fill="#58a6ff" class="t t-stat-value" text-anchor="middle">1,049</text><rect x="179" y="66" width="140" height="72" rx="8" fill="#161b22" stroke="#30363d" stroke-width="1"/><circle cx="193" cy="82" r="4" fill="#3fb950"/><text x="203" y="86" class="t t-stat-label">PRS</text><text x="249" y="118" fill="#3fb950" class="t t-stat-value" text-anchor="middle">3</text><rect x="334" y="66" width="140" height="72" rx="8" fill="#161b22" stroke="#30363d" stroke-width="1"/><circle cx="348" cy="82" r="4" fill="#d29922"/><text x="358" y="86" class="t t-stat-label">REVIEWS</text><text x="404" y="118" fill="#d29922" class="t t-stat-value" text-anchor="middle">5</text><rect x="489" y="66" width="140" height="72" rx="8" fill="#161b22" stroke="#30363d" stroke-width="1"/><circle cx="503" cy="82" r="4" fill="#bc8cff"/><text x="513" y="86" class="t t-stat-label">REPOS</text><text x="559" y="118" fill="#bc8cff" class="t t-stat-value" text-anchor="middle">24</text></svg>
14
+ </style></defs><rect width="808" height="162" rx="12" fill="#0d1117"/><text x="24" y="40" class="t t-h">AT A GLANCE</text><text x="24" y="56" class="t t-sub">Contribution activity over the past year</text><rect x="24" y="66" width="140" height="72" rx="8" fill="#161b22" stroke="#30363d" stroke-width="1"/><circle cx="38" cy="82" r="4" fill="#58a6ff"/><text x="48" y="86" class="t t-stat-label">COMMITS</text><text x="94" y="118" fill="#58a6ff" class="t t-stat-value" text-anchor="middle">1,117</text><rect x="179" y="66" width="140" height="72" rx="8" fill="#161b22" stroke="#30363d" stroke-width="1"/><circle cx="193" cy="82" r="4" fill="#3fb950"/><text x="203" y="86" class="t t-stat-label">PRS</text><text x="249" y="118" fill="#3fb950" class="t t-stat-value" text-anchor="middle">3</text><rect x="334" y="66" width="140" height="72" rx="8" fill="#161b22" stroke="#30363d" stroke-width="1"/><circle cx="348" cy="82" r="4" fill="#d29922"/><text x="358" y="86" class="t t-stat-label">REVIEWS</text><text x="404" y="118" fill="#d29922" class="t t-stat-value" text-anchor="middle">5</text><rect x="489" y="66" width="140" height="72" rx="8" fill="#161b22" stroke="#30363d" stroke-width="1"/><circle cx="503" cy="82" r="4" fill="#bc8cff"/><text x="513" y="86" class="t t-stat-label">REPOS</text><text x="559" y="118" fill="#bc8cff" class="t t-stat-value" text-anchor="middle">26</text></svg>
@@ -1,6 +1,6 @@
1
1
  # Hi, I'm Urmzd 👋
2
2
 
3
- I build robust, multi-language systems—from AI-powered CLI tools and resume generators in Go, Rust, and TypeScript to privacy-first agents and knowledge graphs—empowering people with scalable, user-centric tech.
3
+ I build robust, multi-language systems in Go, TypeScript, and Rust—from AI-powered resume generators and privacy-first agents to modular frameworks for genetic programming and knowledge graphs. My work empowers people through automation, local-first apps, and scalable backend solutions.
4
4
 
5
5
  [![urmzd.com](https://img.shields.io/badge/urmzd.com-4285F4?style=flat&logo=google-chrome&logoColor=white)](https://urmzd.com) [![@urmzd_](https://img.shields.io/badge/@urmzd__-000000?style=flat&logo=x&logoColor=white)](https://x.com/urmzd_) [![urmzd](https://img.shields.io/badge/urmzd-0A66C2?style=flat&logo=linkedin&logoColor=white)](https://linkedin.com/in/urmzd)
6
6
 
@@ -8,44 +8,43 @@ I build robust, multi-language systems—from AI-powered CLI tools and resume ge
8
8
 
9
9
  | Project | Description |
10
10
  |---------|-------------|
11
- | [openapi-generator](https://github.com/urmzd/openapi-generator) | A Rust-based code generator that converts OpenAPI 3.x specifications into TypeScript and React clients, providing zero-dependency clients, SWR hooks, and SSE streaming support. |
12
- | [teasr](https://github.com/urmzd/teasr) | A Rust-based tool for capturing showcase screenshots and GIFs from web apps, desktop, and terminal, distributed as a single binary with no runtime dependencies. |
13
- | [semantic-release](https://github.com/urmzd/semantic-release) | A Rust CLI for trunk-based semantic release, supporting conventional commits, changelog generation, git tagging, and GitHub releases. |
14
- | [gitit](https://github.com/urmzd/gitit) | A Rust CLI tool for AI-powered git commands, generating atomic conventional commits, code reviews, branch names, and PR descriptions using Claude or Gemini. |
15
- | [github-insights](https://github.com/urmzd/github-insights) | A GitHub Action written in TypeScript that generates SVG visualizations of GitHub profile metrics. |
16
- | [resume-generator](https://github.com/urmzd/resume-generator) | A CLI tool written in Go that converts resume data from YAML/JSON/TOML into polished PDFs, DOCX, HTML, LaTeX, and Markdown, featuring multi-agent AI assessment via Ollama. |
17
- | [dotfiles](https://github.com/urmzd/dotfiles) | A collection of modern dotfiles managed with Chezmoi and Nix, enabling one-command environment bootstrap for macOS and Linux, including Neovim, Tmux, Zsh, and specialized development shells. |
18
- | [languide](https://github.com/urmzd/languide) | A Python CLI that generates scenario-based language learning PDFs with full Unicode/CJK support, covering topics for travelers and language learners. |
19
- | [embed-src](https://github.com/urmzd/embed-src) | A GitHub Action written in Rust that automatically syncs code snippets in markdown files with source code, keeping documentation up-to-date during CI/CD. |
11
+ | [oag](https://github.com/urmzd/oag) | A fast OpenAPI 3.x code generator written in Rust, supporting TypeScript, React/SWR, and FastAPI. It offers zero runtime dependencies and first-class SSE streaming. |
12
+ | [sr](https://github.com/urmzd/sr) | A Rust CLI tool for trunk-based semantic release, supporting conventional commits, changelog generation, git tags, and GitHub releases. It streamlines release management for Rust projects. |
13
+ | [teasr](https://github.com/urmzd/teasr) | A Rust-based tool for capturing showcase screenshots and GIFs from web apps, desktop, and terminal environments. It is distributed as a single binary with no runtime dependencies. |
14
+ | [gitit](https://github.com/urmzd/gitit) | A Rust CLI tool that provides AI-powered git commands, generating atomic conventional commits, code reviews, branch names, and PR descriptions using Claude or Gemini. It features two-tier caching for fast repeat runs. |
15
+ | [github-insights](https://github.com/urmzd/github-insights) | A GitHub Action written in TypeScript that generates SVG visualizations of GitHub profile metrics. It automates the creation of graphical insights for user profiles. |
16
+ | [resume-generator](https://github.com/urmzd/resume-generator) | A CLI tool written in Go that converts resume data in YAML, JSON, or TOML formats into polished PDFs, DOCX, HTML, LaTeX, and Markdown. It features multi-agent AI assessment via Ollama and supports multiple output formats. |
17
+ | [dotfiles](https://github.com/urmzd/dotfiles) | A collection of modern dotfiles managed with Chezmoi and Nix, enabling one-command environment bootstrap for macOS and Linux. It includes configurations for Neovim, Tmux, Zsh, and specialized development shells. |
18
+ | [languide](https://github.com/urmzd/languide) | A Python CLI that generates practical, scenario-based language learning PDFs with full Unicode and CJK support. It covers topics like restaurants, hotels, and transportation for travelers and language learners. |
19
+ | [embed-src](https://github.com/urmzd/embed-src) | A GitHub Action written in Rust and Shell that automatically syncs code snippets in markdown files with source code. It helps keep documentation up-to-date during CI/CD workflows. |
20
+ | [urmzd](https://github.com/urmzd/urmzd) | A GitHub profile README repository, used for displaying profile information and updates. It is auto-generated and maintained for user presentation. |
20
21
 
21
22
  ### SDKs
22
23
 
23
24
  | Project | Description |
24
25
  |---------|-------------|
25
- | [adk](https://github.com/urmzd/adk) | A strongly-typed Go SDK for building streaming LLM agent loops, featuring conversation trees, tool registry, sub-agents, compaction, embeddings, and pluggable providers. |
26
- | [ragdk](https://github.com/urmzd/ragdk) | A Go library for multi-modal retrieval augmented generation (RAG) with graph-enhanced retrieval, supporting document hierarchy, pluggable extractors, vector search, and kgdk integration. |
27
- | [lightning-kfold](https://github.com/urmzd/lightning-kfold) | A Python library providing stratified K-fold cross-validation with ensemble voting for PyTorch Lightning. |
28
- | [kgdk](https://github.com/urmzd/kgdk) | A Go SDK for building and querying knowledge graphs with a SurrealDB backend, entity extraction pipeline, vector search, and pluggable Graph interface. |
26
+ | [adk](https://github.com/urmzd/adk) | A strongly-typed Go SDK for building streaming LLM agent loops, supporting conversation trees, tool registry, sub-agents, compaction, embeddings, and pluggable providers. |
27
+ | [ragdk](https://github.com/urmzd/ragdk) | A Go library for multi-modal Retrieval-Augmented Generation (RAG) with graph-enhanced retrieval, supporting document hierarchies, pluggable extractors, vector search, and kgdk integration. |
28
+ | [lightning-kfold](https://github.com/urmzd/lightning-kfold) | A Python library providing stratified K-fold cross-validation with ensemble voting for PyTorch Lightning. It is designed for easy integration into machine learning workflows. |
29
+ | [kgdk](https://github.com/urmzd/kgdk) | A Go SDK for building and querying knowledge graphs, featuring a SurrealDB backend, entity extraction pipeline, vector search, and a pluggable Graph interface. |
29
30
 
30
31
  ### Applications
31
32
 
32
33
  | Project | Description |
33
34
  |---------|-------------|
34
35
  | [urmzd.com](https://github.com/urmzd/urmzd.com) | A personal website and blog built with Astro, TypeScript, and MDX, featuring fast static site generation and interactive components for content and portfolio. |
35
- | [resume-generator-app](https://github.com/urmzd/resume-generator-app) | A native desktop application built with Wails, React, and Tailwind CSS for building resumes with live PDF preview, template gallery, and inline editing. |
36
- | [zoro](https://github.com/urmzd/zoro) | A privacy-first AI research agent built with TypeScript, Go, and Python, featuring a persistent knowledge graph and local inference for connecting ideas securely. |
37
- | [homai](https://github.com/urmzd/homai) | A local-first, privacy-focused smart home control system written in Go, managing Zigbee devices through a REST API without cloud dependencies. |
38
- | [urmzd](https://github.com/urmzd/urmzd) | A GitHub profile README repository. |
36
+ | [resume-generator-app](https://github.com/urmzd/resume-generator-app) | A native desktop application for building resumes with live PDF preview, template gallery, and inline editing. Built with Wails, React, and Tailwind CSS, it supports multiple file formats. |
37
+ | [zoro](https://github.com/urmzd/zoro) | A privacy-first AI research agent with a persistent knowledge graph, enabling local inference and idea management. Built with TypeScript, Go, Python, and other technologies. |
38
+ | [zigbee-rest](https://github.com/urmzd/zigbee-rest) | A local-first, privacy-focused smart home control system written in Go, allowing management of Zigbee devices through a REST API without cloud dependencies. |
39
39
 
40
40
  ### Research & Experiments
41
41
 
42
42
  | Project | Description |
43
43
  |---------|-------------|
44
- | [lepus-classifier](https://github.com/urmzd/lepus-classifier) | A CNN research project using Jupyter Notebook and Python to explore optimal image classification architectures for small datasets, focusing on data quantity as a bottleneck for deep learning. |
45
- | [linear-gp](https://github.com/urmzd/linear-gp) | A Rust framework for Linear Genetic Programming research, offering modular architecture, Q-Learning integration, automated hyperparameter optimization, and support for reinforcement learning and classification tasks. |
46
- | [md-classifier](https://github.com/urmzd/md-classifier) | A deep learning system combining transformers and CNNs in Jupyter Notebook and Python to classify diseases from patient-described symptoms, achieving high recall through semantic embeddings and feature extraction. |
47
- | [flappy-bird](https://github.com/urmzd/flappy-bird) | A Flappy Bird clone built with JavaFX and Java 21, showcasing data-oriented design patterns and automated native builds for Linux, macOS, and Windows. |
48
- | [chess-cli](https://github.com/urmzd/chess-cli) | A fully playable chess game in Python with object-oriented design and a command-line interface, suitable for learning game logic and exploring chess AI algorithms. |
44
+ | [linear-gp](https://github.com/urmzd/linear-gp) | A Rust framework for Linear Genetic Programming research, featuring modular architecture, Q-Learning integration, automated hyperparameter optimization, and support for reinforcement learning and classification tasks. |
45
+ | [flappy-bird](https://github.com/urmzd/flappy-bird) | A Flappy Bird clone built with JavaFX and Java 21, showcasing data-oriented design patterns and cross-platform desktop development. It includes automated native builds for Linux, macOS, and Windows. |
46
+ | [chess-cli](https://github.com/urmzd/chess-cli) | A fully playable chess game implemented in Python with object-oriented design and a command-line interface. It is suitable for learning game logic, exploring chess AI algorithms, or playing from the terminal. |
47
+ | [lessons](https://github.com/urmzd/lessons) | A repository of archived projects with retrospectives detailing successes, failures, and lessons learned. It uses TypeScript, JavaScript, CSS, and HTML. |
49
48
 
50
49
  ## GitHub Stats
51
50
 
@@ -56,4 +55,4 @@ I build robust, multi-language systems—from AI-powered CLI tools and resume ge
56
55
 
57
56
  ![Expertise](./metrics-expertise.svg)
58
57
 
59
- <sub>Last generated on 2026-03-16 using [@urmzd/github-insights](https://github.com/urmzd/github-insights)</sub>
58
+ <sub>Last generated on 2026-03-17 using [@urmzd/github-insights](https://github.com/urmzd/github-insights)</sub>