@urmzd/github-insights 2.1.0 → 2.3.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 (116) hide show
  1. package/.githooks/.sr-hooks-hash +1 -0
  2. package/.githooks/commit-msg +3 -0
  3. package/.githooks/pre-commit +3 -0
  4. package/AGENTS.md +32 -19
  5. package/CHANGELOG.md +62 -0
  6. package/CONTRIBUTING.md +18 -19
  7. package/README.md +21 -24
  8. package/action.yml +1 -1
  9. package/assets/insights/index.svg +45 -4
  10. package/assets/insights/metrics-constellation.svg +55 -0
  11. package/assets/insights/metrics-growth.svg +55 -0
  12. package/assets/insights/metrics-heatmap.svg +55 -0
  13. package/assets/insights/metrics-impact.svg +55 -0
  14. package/assets/insights/metrics-rhythm.svg +55 -0
  15. package/assets/insights/metrics-velocity.svg +55 -0
  16. package/examples/classic/README.md +36 -2
  17. package/examples/classic/index.svg +45 -4
  18. package/examples/classic/metrics-constellation.svg +55 -0
  19. package/examples/classic/metrics-growth.svg +55 -0
  20. package/examples/classic/metrics-heatmap.svg +55 -0
  21. package/examples/classic/metrics-impact.svg +55 -0
  22. package/examples/classic/metrics-rhythm.svg +55 -0
  23. package/examples/classic/metrics-velocity.svg +55 -0
  24. package/examples/ecosystem/README.md +39 -28
  25. package/examples/ecosystem/index.svg +45 -4
  26. package/examples/ecosystem/metrics-constellation.svg +55 -0
  27. package/examples/ecosystem/metrics-growth.svg +55 -0
  28. package/examples/ecosystem/metrics-heatmap.svg +55 -0
  29. package/examples/ecosystem/metrics-impact.svg +55 -0
  30. package/examples/ecosystem/metrics-rhythm.svg +55 -0
  31. package/examples/ecosystem/metrics-velocity.svg +55 -0
  32. package/examples/minimal/README.md +36 -2
  33. package/examples/minimal/index.svg +45 -4
  34. package/examples/minimal/metrics-constellation.svg +55 -0
  35. package/examples/minimal/metrics-growth.svg +55 -0
  36. package/examples/minimal/metrics-heatmap.svg +55 -0
  37. package/examples/minimal/metrics-impact.svg +55 -0
  38. package/examples/minimal/metrics-rhythm.svg +55 -0
  39. package/examples/minimal/metrics-velocity.svg +55 -0
  40. package/examples/modern/README.md +62 -50
  41. package/examples/modern/index.svg +45 -4
  42. package/examples/modern/metrics-constellation.svg +55 -0
  43. package/examples/modern/metrics-growth.svg +55 -0
  44. package/examples/modern/metrics-heatmap.svg +55 -0
  45. package/examples/modern/metrics-impact.svg +55 -0
  46. package/examples/modern/metrics-rhythm.svg +55 -0
  47. package/examples/modern/metrics-velocity.svg +55 -0
  48. package/llms.txt +4 -4
  49. package/package.json +1 -1
  50. package/skills/github-insights/SKILL.md +35 -81
  51. package/sr.yaml +9 -0
  52. package/src/api.ts +2 -140
  53. package/src/components/contribution-heatmap.tsx +43 -0
  54. package/src/components/contribution-rhythm.tsx +152 -0
  55. package/src/components/full-svg.test.tsx +4 -1
  56. package/src/components/full-svg.tsx +14 -7
  57. package/src/components/growth-arc.tsx +119 -0
  58. package/src/components/impact-trail.tsx +90 -0
  59. package/src/components/language-velocity.tsx +181 -0
  60. package/src/components/project-constellation.tsx +97 -0
  61. package/src/components/section.test.tsx +5 -3
  62. package/src/components/section.tsx +5 -13
  63. package/src/components/style-defs.tsx +44 -3
  64. package/src/index.ts +28 -47
  65. package/src/metrics.test.ts +50 -57
  66. package/src/metrics.ts +277 -95
  67. package/src/readme.test.ts +2 -4
  68. package/src/templates.test.ts +19 -16
  69. package/src/templates.ts +30 -16
  70. package/src/theme.ts +11 -1
  71. package/src/types.ts +34 -7
  72. package/assets/insights/metrics-calendar.svg +0 -14
  73. package/assets/insights/metrics-complexity.svg +0 -14
  74. package/assets/insights/metrics-contributions.svg +0 -14
  75. package/assets/insights/metrics-expertise.svg +0 -14
  76. package/assets/insights/metrics-languages.svg +0 -14
  77. package/assets/insights/metrics-pulse.svg +0 -14
  78. package/examples/classic/metrics-calendar.svg +0 -14
  79. package/examples/classic/metrics-complexity.svg +0 -14
  80. package/examples/classic/metrics-contributions.svg +0 -14
  81. package/examples/classic/metrics-expertise.svg +0 -14
  82. package/examples/classic/metrics-languages.svg +0 -14
  83. package/examples/classic/metrics-pulse.svg +0 -14
  84. package/examples/ecosystem/metrics-calendar.svg +0 -14
  85. package/examples/ecosystem/metrics-complexity.svg +0 -14
  86. package/examples/ecosystem/metrics-contributions.svg +0 -14
  87. package/examples/ecosystem/metrics-expertise.svg +0 -14
  88. package/examples/ecosystem/metrics-languages.svg +0 -14
  89. package/examples/ecosystem/metrics-pulse.svg +0 -14
  90. package/examples/minimal/metrics-calendar.svg +0 -14
  91. package/examples/minimal/metrics-complexity.svg +0 -14
  92. package/examples/minimal/metrics-contributions.svg +0 -14
  93. package/examples/minimal/metrics-expertise.svg +0 -14
  94. package/examples/minimal/metrics-languages.svg +0 -14
  95. package/examples/minimal/metrics-pulse.svg +0 -14
  96. package/examples/modern/metrics-calendar.svg +0 -14
  97. package/examples/modern/metrics-complexity.svg +0 -14
  98. package/examples/modern/metrics-contributions.svg +0 -14
  99. package/examples/modern/metrics-expertise.svg +0 -14
  100. package/examples/modern/metrics-languages.svg +0 -14
  101. package/examples/modern/metrics-pulse.svg +0 -14
  102. package/src/components/bar-chart.test.tsx +0 -38
  103. package/src/components/bar-chart.tsx +0 -54
  104. package/src/components/contribution-calendar.test.tsx +0 -44
  105. package/src/components/contribution-calendar.tsx +0 -94
  106. package/src/components/contribution-cards.test.tsx +0 -36
  107. package/src/components/contribution-cards.tsx +0 -58
  108. package/src/components/donut-chart.test.tsx +0 -36
  109. package/src/components/donut-chart.tsx +0 -102
  110. package/src/components/project-cards.test.tsx +0 -46
  111. package/src/components/project-cards.tsx +0 -66
  112. package/src/components/stat-cards.test.tsx +0 -32
  113. package/src/components/stat-cards.tsx +0 -57
  114. package/src/components/tech-highlights.test.tsx +0 -63
  115. package/src/components/tech-highlights.tsx +0 -109
  116. package/teasr.toml +0 -14
@@ -0,0 +1 @@
1
+ 12a4e345c52d1fc0
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env sh
2
+ # Generated by sr — edit the hooks section in sr.yaml to modify.
3
+ exec sr hook run commit-msg -- "$@"
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env sh
2
+ # Generated by sr — edit the hooks section in sr.yaml to modify.
3
+ exec sr hook run pre-commit -- "$@"
package/AGENTS.md CHANGED
@@ -2,24 +2,37 @@
2
2
 
3
3
  ## Identity
4
4
 
5
- You are an agent working on **github-insights** — a GitHub Action that generates beautiful SVG metrics visualizations for GitHub profile READMEs. It produces language breakdowns, AI expertise analysis, contribution pulse, social badges, and signature projects.
5
+ You are an agent working on **github-insights** — a GitHub Action that generates beautiful SVG metrics visualizations for GitHub profile READMEs. It produces language velocity streamgraphs, contribution rhythm radar charts, project constellation maps, and open source impact trails.
6
6
 
7
7
  ## Architecture
8
8
 
9
- TypeScript/Node.js GitHub Action using React JSX for SVG rendering.
9
+ TypeScript/Node.js GitHub Action using JSX for SVG string rendering (no React — custom `h()` factory).
10
10
 
11
11
  | File | Role |
12
12
  |------|------|
13
13
  | `src/index.ts` | Main action entry point |
14
- | `src/api.ts` | GitHub API interactions |
15
- | `src/metrics.ts` | Metric calculation logic |
16
- | `src/templates.ts` | SVG template generation |
14
+ | `src/api.ts` | GitHub API interactions + AI (preamble, project classification) |
15
+ | `src/metrics.ts` | Metric calculation (velocity, rhythm, constellation, sections) |
16
+ | `src/templates.ts` | README template generation (classic, modern, minimal, ecosystem) |
17
17
  | `src/config.ts` | Configuration parsing (`github-insights.yml`) |
18
18
  | `src/readme.ts` | README generation |
19
- | `src/types.ts` | Type definitions (`UserConfig`, etc.) |
20
- | `src/components/` | 22+ component subdirectories for different metric types |
19
+ | `src/types.ts` | Type definitions (`UserConfig`, `TemplateContext`, etc.) |
20
+ | `src/theme.ts` | Theme colors (dark + light), layout constants |
21
+ | `src/components/` | SVG rendering components |
21
22
  | `action.yml` | GitHub Action definition |
22
23
 
24
+ ### SVG Components
25
+
26
+ | Component | File | Output |
27
+ |-----------|------|--------|
28
+ | Language Velocity | `language-velocity.tsx` | Stacked area streamgraph of language usage over 12 months |
29
+ | Contribution Rhythm | `contribution-rhythm.tsx` | 7-spoke radar chart + summary stats |
30
+ | Project Constellation | `project-constellation.tsx` | Node-link map by language ecosystem and complexity |
31
+ | Impact Trail | `impact-trail.tsx` | External contributions with logarithmic star bars |
32
+ | Section Header | `section.tsx` | Reusable section headers and dividers |
33
+ | Style Defs | `style-defs.tsx` | CSS styles, animations, light/dark theme media query |
34
+ | Full SVG | `full-svg.tsx` | Combines sections into index.svg |
35
+
23
36
  ## Key Dependencies
24
37
 
25
38
  - `@actions/core`, `@actions/exec`, `@actions/github` — GitHub Action SDK
@@ -46,24 +59,24 @@ TypeScript/Node.js GitHub Action using React JSX for SVG rendering.
46
59
  - TypeScript with strict mode, ES modules (`"type": "module"`)
47
60
  - Biome for formatting and linting (not ESLint/Prettier)
48
61
  - Node.js 22+ (`.nvmrc`)
49
- - Tests colocated as `*.test.ts` alongside source files
50
- - Components are React JSX returning SVG elements
62
+ - Tests colocated as `*.test.ts` / `*.test.tsx` alongside source files
63
+ - Components use JSX that compiles to SVG strings via custom `h()` factory
51
64
 
52
65
  ## Output Files
53
66
 
54
67
  | File | Description |
55
68
  |------|-------------|
56
69
  | `assets/insights/index.svg` | Combined visualization |
57
- | `assets/insights/metrics-pulse.svg` | Contribution activity |
58
- | `assets/insights/metrics-languages.svg` | Language donut chart |
59
- | `assets/insights/metrics-expertise.svg` | AI expertise bars |
60
- | `assets/insights/metrics-complexity.svg` | Top projects by stars |
61
- | `assets/insights/metrics-contributions.svg` | External contributions |
70
+ | `assets/insights/metrics-velocity.svg` | Language Velocity streamgraph |
71
+ | `assets/insights/metrics-rhythm.svg` | Contribution Rhythm radar + stats |
72
+ | `assets/insights/metrics-constellation.svg` | Project Constellation map |
73
+ | `assets/insights/metrics-impact.svg` | Open Source Impact trail |
62
74
 
63
75
  ## Adding a New Component
64
76
 
65
- 1. Create `src/components/<name>/` directory
66
- 2. Add the component as a React JSX function returning SVG elements
67
- 3. Add a corresponding `*.test.ts` file
68
- 4. Wire it into `src/templates.ts` and `src/metrics.ts`
69
- 5. Update `action.yml` if new inputs are needed
77
+ 1. Create `src/components/<name>.tsx`
78
+ 2. Export a render function: `(data, y) => RenderResult`
79
+ 3. Add a corresponding `*.test.tsx` file
80
+ 4. Wire it into `src/metrics.ts` (add to `buildSections()`)
81
+ 5. Update `SECTION_KEYS` in `metrics.ts`
82
+ 6. Update templates in `src/templates.ts` if it needs template-specific placement
package/CHANGELOG.md CHANGED
@@ -1,5 +1,67 @@
1
1
  # Changelog
2
2
 
3
+ ## 2.3.0 (2026-03-23)
4
+
5
+ ### Features
6
+
7
+ - add visualization components and centralized types ([b770442](https://github.com/urmzd/github-insights/commit/b77044202eb1e366f4d0b84902de8bfa3854a135))
8
+
9
+ ### Documentation
10
+
11
+ - add example visualization assets for metrics documentation ([9870e5c](https://github.com/urmzd/github-insights/commit/9870e5c76894511e73a0c2984185436f8f09555b))
12
+
13
+ ### Miscellaneous
14
+
15
+ - **ci**: update githooks configuration ([683e0e2](https://github.com/urmzd/github-insights/commit/683e0e208f15b6431fc51d35781fb0694ae1f405))
16
+
17
+ [Full Changelog](https://github.com/urmzd/github-insights/compare/v2.2.0...v2.3.0)
18
+
19
+
20
+ ## 2.2.0 (2026-03-22)
21
+
22
+ ### Features
23
+
24
+ - **components**: add new metrics visualization components ([ffd507f](https://github.com/urmzd/github-insights/commit/ffd507f323026bc7221f87be717dc25512e7a0b7))
25
+ - **theme**: add light mode support and update layout metrics ([6f3d029](https://github.com/urmzd/github-insights/commit/6f3d0291e21596268e3cb99e206838b17cd7f0b4))
26
+
27
+ ### Documentation
28
+
29
+ - **skill**: update GitHub Insights branding and section definitions ([e4d16aa](https://github.com/urmzd/github-insights/commit/e4d16aab59906e8a49d1ba2cf11a90dbf9d4528b))
30
+ - **contributing**: clarify file descriptions and remove brittle line references ([acf814b](https://github.com/urmzd/github-insights/commit/acf814b8a3b1fa9e9755037bc67c67e43be9e7e1))
31
+ - update documentation for new metrics visualization system ([ae4bd64](https://github.com/urmzd/github-insights/commit/ae4bd6470ce53105a857da612b891d14026e0f2f))
32
+ - **examples**: update example outputs with new metrics visualizations ([e20b83e](https://github.com/urmzd/github-insights/commit/e20b83eed00cc828fda4ca39dff68103df8bdf53))
33
+
34
+ ### Refactoring
35
+
36
+ - **components**: remove language group labels from constellation ([fdc10e5](https://github.com/urmzd/github-insights/commit/fdc10e507cf4be3576eb76e45c542a58b59172c3))
37
+ - **components**: remove unused parameter from map function in language-velocity ([7c0e10f](https://github.com/urmzd/github-insights/commit/7c0e10f0931499c9416e785d25a5c99b252ab1df))
38
+ - **metrics**: remove unused projects parameter from buildSections ([c377064](https://github.com/urmzd/github-insights/commit/c377064e830e6daf0d6975f6860f74f6cb6b4f79))
39
+ - **contribution-rhythm**: remove most active day display ([bca985a](https://github.com/urmzd/github-insights/commit/bca985ab0281646f1c2451eda7417888cad42935))
40
+ - **core**: migrate to new metrics and visualization pipeline ([dd8e668](https://github.com/urmzd/github-insights/commit/dd8e668c4e42477bd655dd17eeeacdbf80d59003))
41
+ - **templates**: update readme generation for new metrics ([4dbc556](https://github.com/urmzd/github-insights/commit/4dbc5562f385fe9626796b04926400a796763265))
42
+ - **rendering**: simplify section rendering with new component system ([719e884](https://github.com/urmzd/github-insights/commit/719e884f26fb13b29f8202a9065b06271c409259))
43
+ - **api**: remove deprecated expertise analysis fetching ([9d98640](https://github.com/urmzd/github-insights/commit/9d98640d72877284ded5c9d9498f1c9ac8f824c3))
44
+ - **metrics**: implement new metric computation functions ([5026fa8](https://github.com/urmzd/github-insights/commit/5026fa8c19ca8b08dc1b6f35cc0749843d68086a))
45
+ - **types**: update types for new metrics visualization system ([6f195bb](https://github.com/urmzd/github-insights/commit/6f195bbf5aa165b4c26b07fb732beab4bb98a87c))
46
+
47
+ ### Miscellaneous
48
+
49
+ - regenerate compiled artifacts ([c3222b2](https://github.com/urmzd/github-insights/commit/c3222b2433ba2122517ac2696eb37c7187759abe))
50
+ - **contribution-rhythm**: remove trailing whitespace ([c8c53f9](https://github.com/urmzd/github-insights/commit/c8c53f9c9b4f5de360e7e7186152281f692ebf7f))
51
+ - **hooks**: configure git hooks for code validation ([ed97a29](https://github.com/urmzd/github-insights/commit/ed97a29c56e9f7f0d8018c66e804cc70ab5e266d))
52
+ - rebuild distribution with calendar-weighted monthly distributions ([2334ed1](https://github.com/urmzd/github-insights/commit/2334ed1fb9f58c8bfaf2222ed1c8e8e80f623df7))
53
+ - **test**: consolidate test assertion to single line ([75b18a5](https://github.com/urmzd/github-insights/commit/75b18a5e1e7199e3692963e448fa7f537673f39c))
54
+ - **metrics**: reformat totalWeight calculation for readability ([13547a3](https://github.com/urmzd/github-insights/commit/13547a3447ea1589859390d001751be2f310963f))
55
+ - remove outdated metrics example files ([f5bf142](https://github.com/urmzd/github-insights/commit/f5bf14238372750eb712bcc9144c0a20cdfbef42))
56
+ - **full-svg**: update test expectations for new rendering pattern ([a692e6c](https://github.com/urmzd/github-insights/commit/a692e6c33c3a68ef6d8491d87ba9a070455a355e))
57
+ - remove teasr demo configuration ([6c64e56](https://github.com/urmzd/github-insights/commit/6c64e56cada6ca59e98a1963e6c799ebdaa600c3))
58
+ - rebuild distribution for new visualization system ([a543b8f](https://github.com/urmzd/github-insights/commit/a543b8f7386c49552f840d1b5d4129a87ffdced4))
59
+ - update test expectations for new metrics system ([b421284](https://github.com/urmzd/github-insights/commit/b4212845cce3e2e3f8791c43c22af9f5e212ec41))
60
+ - **components**: remove deprecated visualization components ([1a8c9b4](https://github.com/urmzd/github-insights/commit/1a8c9b46c275cc96552efdf818e69657bc6c6c0d))
61
+
62
+ [Full Changelog](https://github.com/urmzd/github-insights/compare/v2.1.0...v2.2.0)
63
+
64
+
3
65
  ## 2.1.0 (2026-03-18)
4
66
 
5
67
  ### Features
package/CONTRIBUTING.md CHANGED
@@ -6,34 +6,32 @@
6
6
  src/
7
7
  index.ts # Entry point — orchestrates fetch, transform, render, write
8
8
  api.ts # GitHub GraphQL/REST API calls + AI model calls
9
- metrics.ts # Data aggregation and section definitions
10
- config.ts # TOML config parsing (UserConfig)
9
+ metrics.ts # Data aggregation, velocity/rhythm/constellation, section definitions
10
+ config.ts # YAML/TOML config parsing (UserConfig)
11
11
  readme.ts # Profile README generation
12
12
  parsers.ts # Dependency manifest parsers
13
13
  types.ts # Shared type definitions
14
14
  jsx-factory.ts # Custom JSX factory for SVG rendering
15
15
  jsx.d.ts # JSX type declarations
16
- theme.ts # Theme constants (colors, fonts, spacing)
16
+ theme.ts # Theme constants (dark + light), fonts, spacing
17
17
  svg-utils.ts # SVG utility functions
18
18
  __fixtures__/
19
19
  repos.ts # Test fixture data
20
20
  components/ # SVG rendering components
21
21
  full-svg.tsx # Combines sections into a single SVG
22
22
  section.tsx # Individual section renderer
23
- donut-chart.tsx # Language donut chart
24
- bar-chart.tsx # Horizontal bar chart
25
- tech-highlights.tsx # Expertise bars
26
- stat-cards.tsx # Contribution stat cards
27
- project-cards.tsx # Project cards
28
- contribution-cards.tsx # External contribution cards
29
- style-defs.tsx # Shared SVG style definitions
23
+ language-velocity.tsx # Streamgraph of language usage over time
24
+ contribution-rhythm.tsx # Radar chart + contribution stats
25
+ project-constellation.tsx # Node-link project map
26
+ impact-trail.tsx # External contribution impact bars
27
+ style-defs.tsx # Shared SVG style definitions + light/dark theme + animations
30
28
  ```
31
29
 
32
30
  ## Adding a New Metric Section
33
31
 
34
32
  1. If your section needs a new render component, create it in `src/components/`. It should export a function that takes data + a `y` offset and returns `{ svg: string, height: number }`.
35
33
 
36
- 2. Add your section to `buildSections` in `src/metrics.ts` (line ~91). Each section is a `SectionDef` (`src/types.ts:54`):
34
+ 2. Add your section to `buildSections` in `src/metrics.ts`. Each section is a `SectionDef` (`src/types.ts`):
37
35
 
38
36
  ```typescript
39
37
  sections.push({
@@ -44,13 +42,14 @@ sections.push({
44
42
  });
45
43
  ```
46
44
 
47
- 3. The section is automatically included in the combined `index.svg` and written as a standalone SVG.
45
+ 3. Add the section key to `SECTION_KEYS` in `src/metrics.ts`.
46
+ 4. The section is automatically included in the combined `index.svg` and written as a standalone SVG.
48
47
 
49
48
  ## Adding a Package Parser
50
49
 
51
- Package parsers extract dependency names from manifest files so the AI expertise analysis can see what libraries you use.
50
+ Package parsers extract dependency names from manifest files.
52
51
 
53
- 1. Create a `PackageParser` implementation (`src/types.ts:113`):
52
+ 1. Create a `PackageParser` implementation (`src/types.ts`):
54
53
 
55
54
  ```typescript
56
55
  export const MyParser: PackageParser = {
@@ -62,13 +61,13 @@ export const MyParser: PackageParser = {
62
61
  };
63
62
  ```
64
63
 
65
- 2. Add it to the `PARSERS` array in `src/parsers.ts` (line ~129).
64
+ 2. Add it to the `PARSERS` array in `src/parsers.ts`.
66
65
 
67
- 3. Add the manifest filename to `MANIFEST_FILES` in `src/api.ts` (line ~13) so the API fetches it from repos.
66
+ 3. Add the manifest filename to `MANIFEST_FILES` in `src/api.ts` so the API fetches it from repos.
68
67
 
69
68
  ## Adding Config Fields
70
69
 
71
- 1. Add the field to the `UserConfig` interface in `src/types.ts` (line ~126).
70
+ 1. Add the field to the `UserConfig` interface in `src/types.ts`.
72
71
 
73
72
  2. Add parsing logic in `parseUserConfig` in `src/config.ts` — follow the existing pattern of type-checking and trimming.
74
73
 
@@ -77,9 +76,9 @@ export const MyParser: PackageParser = {
77
76
  ## Testing
78
77
 
79
78
  - Tests use [Vitest](https://vitest.dev/) with `*.test.ts` and `*.test.tsx` naming conventions
80
- - Use `.test.tsx` for tests that exercise JSX components (e.g., `src/components/section.test.tsx`)
79
+ - Use `.test.tsx` for tests that exercise JSX components
81
80
  - Run tests: `npm test`
82
- - Tests live alongside source files (e.g., `src/config.test.ts`, `src/components/donut-chart.test.tsx`)
81
+ - Tests live alongside source files
83
82
 
84
83
  ## Code Style
85
84
 
package/README.md CHANGED
@@ -24,13 +24,15 @@
24
24
 
25
25
  ## Features
26
26
 
27
- - **Language breakdown** — donut chart of languages by bytes across all public repos
28
- - **AI expertise analysis** — categorized skill bars with proficiency scores, powered by GitHub Models
27
+ - **Language Velocity** — streamgraph showing how your language usage has evolved over the past year
28
+ - **Contribution Rhythm** — radar chart revealing day-of-week commit patterns, plus stats (commits, PRs, reviews, streak)
29
+ - **Project Constellation** — visual map of projects positioned by language ecosystem and complexity, with connections between related repos
30
+ - **Open Source Impact** — external contributions sorted by repo star count with logarithmic impact bars
29
31
  - **AI preamble generation** — auto-generated profile introduction (or supply your own `PREAMBLE.md`)
32
+ - **AI project classification** — repos classified by status (active/maintained/inactive) and purpose (Developer Tools/SDKs/Applications/Research)
30
33
  - **Social badges** — auto-detected from your GitHub profile (website, Twitter, LinkedIn, etc.)
31
- - **Contribution pulse** — commits, PRs, reviews, and active repos at a glance
32
- - **Signature projects** — top repos by stars with descriptions
33
- - **Open source contributions** — external repos you've contributed to
34
+ - **Dual theme** — SVGs automatically adapt to GitHub's light and dark mode via `prefers-color-scheme`
35
+ - **CSS animations** — subtle fade-in and scale animations on load
34
36
  - **Configuration** — customize name, title, bio, and more via `github-insights.yml`
35
37
 
36
38
  ## Quick Start
@@ -73,7 +75,7 @@ The action commits updated SVGs and a generated `README.md` to your repo automat
73
75
  | `commit-email` | Git user email for commits | `41898282+github-actions[bot]@users.noreply.github.com` |
74
76
  | `config-file` | Path to config file | `github-insights.yml` |
75
77
  | `readme-path` | Output path for the generated profile README (set to `none` to skip) | `README.md` (CI) / `_README.md` (local) |
76
- | `index-only` | When `true`, embeds only the combined `index.svg` in the generated README; when `false`, embeds each section SVG as a separate image (e.g., `metrics-languages.svg`, `metrics-expertise.svg`, etc.) | `true` |
78
+ | `index-only` | When `true`, embeds only the combined `index.svg` in the generated README; when `false`, embeds each section SVG as a separate image | `true` |
77
79
 
78
80
  ## Configuration
79
81
 
@@ -92,18 +94,16 @@ All fields are optional. The `UserConfig` type in `src/types.ts` defines the ful
92
94
 
93
95
  ## AI Features
94
96
 
95
- ### Expertise Analysis
96
-
97
- The action uses GitHub Models to analyze your languages, dependencies, topics, and repo READMEs, then produces categorized skill bars with proficiency scores. Requires the `models:read` permission on your token.
98
-
99
97
  ### Preamble Generation
100
98
 
101
- When no custom preamble is provided, the action uses AI to generate a profile introduction. The generated preamble consists of 2-4 short paragraphs drawn from your profile bio, title, expertise areas, top languages, and notable projects. It uses a professional but friendly tone and does not include a heading.
102
-
103
- The preamble ends with a row of shields.io social badges for any detected links — website, Twitter/X, LinkedIn, and other social accounts from your GitHub profile. A GitHub badge is not included since the README is already on GitHub.
99
+ When no custom preamble is provided, the action uses AI to generate a profile introduction. The generated preamble consists of 1-2 sentences drawn from your profile bio, title, top languages, and notable projects. It uses a professional but friendly tone.
104
100
 
105
101
  To use your own text instead, create a `PREAMBLE.md` file in the repo root, or point to a custom file via the `preamble` field in `github-insights.yml`.
106
102
 
103
+ ### Project Classification
104
+
105
+ The action uses GitHub Models to classify repositories by maintenance status (active/maintained/inactive) and purpose category (Developer Tools, SDKs, Applications, Research & Experiments), with AI-generated summaries for each project.
106
+
107
107
  ### Token Permissions
108
108
 
109
109
  For AI features, your workflow needs:
@@ -111,7 +111,7 @@ For AI features, your workflow needs:
111
111
  ```yaml
112
112
  permissions:
113
113
  contents: write # to commit generated files
114
- models: read # for AI expertise analysis and preamble generation
114
+ models: read # for AI project classification and preamble generation
115
115
  ```
116
116
 
117
117
  ## Templates
@@ -121,20 +121,18 @@ Four built-in templates control the generated README layout:
121
121
  | Template | Description |
122
122
  |----------|-------------|
123
123
  | `classic` | Name heading, title blockquote, preamble, SVG metrics, bio footer |
124
- | `modern` | Wave greeting, social badges, projects by activity (Active/Maintained/Inactive), GitHub Stats, expertise |
124
+ | `modern` | Wave greeting, projects by activity (Active/Maintained/Inactive), Project Map, GitHub Stats, Impact |
125
125
  | `minimal` | First name heading, preamble, social badges, SVG metrics |
126
- | `ecosystem` | Wave greeting, social badges, projects by purpose (Developer Tools/SDKs/Applications/Research), GitHub Stats, expertise |
126
+ | `ecosystem` | Wave greeting, projects by purpose (Developer Tools/SDKs/Applications/Research), Project Map, GitHub Stats, Impact |
127
127
 
128
128
  Set via the `template` input (default: `classic`) or `github-insights.yml`:
129
129
 
130
130
  ```yaml
131
- - uses: urmzd/github-insights@v1
131
+ - uses: urmzd/github-insights@main
132
132
  with:
133
133
  template: ecosystem
134
134
  ```
135
135
 
136
- The **ecosystem** template groups projects into purpose-based tables using AI classification, matching the layout used by [urmzd's profile README](https://github.com/urmzd).
137
-
138
136
  ## Local Development
139
137
 
140
138
  ### Prerequisites
@@ -162,11 +160,10 @@ npm run fmt:fix # format fix
162
160
  | File | Description |
163
161
  |------|-------------|
164
162
  | `assets/insights/index.svg` | Combined visualization with all sections |
165
- | `assets/insights/metrics-pulse.svg` | Contribution activity stats |
166
- | `assets/insights/metrics-languages.svg` | Language breakdown donut chart |
167
- | `assets/insights/metrics-expertise.svg` | AI-generated expertise bars |
168
- | `assets/insights/metrics-complexity.svg` | Top projects by stars |
169
- | `assets/insights/metrics-contributions.svg` | External open source contributions |
163
+ | `assets/insights/metrics-velocity.svg` | Language Velocity streamgraph |
164
+ | `assets/insights/metrics-rhythm.svg` | Contribution Rhythm radar + stats |
165
+ | `assets/insights/metrics-constellation.svg` | Project Constellation map |
166
+ | `assets/insights/metrics-impact.svg` | Open Source Impact trail |
170
167
  | `README.md` | Generated profile README (CI); `_README.md` locally |
171
168
 
172
169
  ## Agent Skill
package/action.yml CHANGED
@@ -38,7 +38,7 @@ inputs:
38
38
  description: "README template to use: classic, modern, minimal, or ecosystem"
39
39
  default: "classic"
40
40
  sections:
41
- description: "Comma-separated list of sections to generate (e.g. pulse,languages,expertise,projects,contributions,calendar). Empty = all."
41
+ description: "Comma-separated list of sections to generate (e.g. velocity,rhythm,constellation,impact). Empty = all."
42
42
  default: ""
43
43
  runs:
44
44
  using: "node24"