@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.
- package/.githooks/.sr-hooks-hash +1 -0
- package/.githooks/commit-msg +3 -0
- package/.githooks/pre-commit +3 -0
- package/AGENTS.md +32 -19
- package/CHANGELOG.md +62 -0
- package/CONTRIBUTING.md +18 -19
- package/README.md +21 -24
- package/action.yml +1 -1
- package/assets/insights/index.svg +45 -4
- package/assets/insights/metrics-constellation.svg +55 -0
- package/assets/insights/metrics-growth.svg +55 -0
- package/assets/insights/metrics-heatmap.svg +55 -0
- package/assets/insights/metrics-impact.svg +55 -0
- package/assets/insights/metrics-rhythm.svg +55 -0
- package/assets/insights/metrics-velocity.svg +55 -0
- package/examples/classic/README.md +36 -2
- package/examples/classic/index.svg +45 -4
- package/examples/classic/metrics-constellation.svg +55 -0
- package/examples/classic/metrics-growth.svg +55 -0
- package/examples/classic/metrics-heatmap.svg +55 -0
- package/examples/classic/metrics-impact.svg +55 -0
- package/examples/classic/metrics-rhythm.svg +55 -0
- package/examples/classic/metrics-velocity.svg +55 -0
- package/examples/ecosystem/README.md +39 -28
- package/examples/ecosystem/index.svg +45 -4
- package/examples/ecosystem/metrics-constellation.svg +55 -0
- package/examples/ecosystem/metrics-growth.svg +55 -0
- package/examples/ecosystem/metrics-heatmap.svg +55 -0
- package/examples/ecosystem/metrics-impact.svg +55 -0
- package/examples/ecosystem/metrics-rhythm.svg +55 -0
- package/examples/ecosystem/metrics-velocity.svg +55 -0
- package/examples/minimal/README.md +36 -2
- package/examples/minimal/index.svg +45 -4
- package/examples/minimal/metrics-constellation.svg +55 -0
- package/examples/minimal/metrics-growth.svg +55 -0
- package/examples/minimal/metrics-heatmap.svg +55 -0
- package/examples/minimal/metrics-impact.svg +55 -0
- package/examples/minimal/metrics-rhythm.svg +55 -0
- package/examples/minimal/metrics-velocity.svg +55 -0
- package/examples/modern/README.md +62 -50
- package/examples/modern/index.svg +45 -4
- package/examples/modern/metrics-constellation.svg +55 -0
- package/examples/modern/metrics-growth.svg +55 -0
- package/examples/modern/metrics-heatmap.svg +55 -0
- package/examples/modern/metrics-impact.svg +55 -0
- package/examples/modern/metrics-rhythm.svg +55 -0
- package/examples/modern/metrics-velocity.svg +55 -0
- package/llms.txt +4 -4
- package/package.json +1 -1
- package/skills/github-insights/SKILL.md +35 -81
- package/sr.yaml +9 -0
- package/src/api.ts +2 -140
- package/src/components/contribution-heatmap.tsx +43 -0
- package/src/components/contribution-rhythm.tsx +152 -0
- package/src/components/full-svg.test.tsx +4 -1
- package/src/components/full-svg.tsx +14 -7
- package/src/components/growth-arc.tsx +119 -0
- package/src/components/impact-trail.tsx +90 -0
- package/src/components/language-velocity.tsx +181 -0
- package/src/components/project-constellation.tsx +97 -0
- package/src/components/section.test.tsx +5 -3
- package/src/components/section.tsx +5 -13
- package/src/components/style-defs.tsx +44 -3
- package/src/index.ts +28 -47
- package/src/metrics.test.ts +50 -57
- package/src/metrics.ts +277 -95
- package/src/readme.test.ts +2 -4
- package/src/templates.test.ts +19 -16
- package/src/templates.ts +30 -16
- package/src/theme.ts +11 -1
- package/src/types.ts +34 -7
- package/assets/insights/metrics-calendar.svg +0 -14
- package/assets/insights/metrics-complexity.svg +0 -14
- package/assets/insights/metrics-contributions.svg +0 -14
- package/assets/insights/metrics-expertise.svg +0 -14
- package/assets/insights/metrics-languages.svg +0 -14
- package/assets/insights/metrics-pulse.svg +0 -14
- package/examples/classic/metrics-calendar.svg +0 -14
- package/examples/classic/metrics-complexity.svg +0 -14
- package/examples/classic/metrics-contributions.svg +0 -14
- package/examples/classic/metrics-expertise.svg +0 -14
- package/examples/classic/metrics-languages.svg +0 -14
- package/examples/classic/metrics-pulse.svg +0 -14
- package/examples/ecosystem/metrics-calendar.svg +0 -14
- package/examples/ecosystem/metrics-complexity.svg +0 -14
- package/examples/ecosystem/metrics-contributions.svg +0 -14
- package/examples/ecosystem/metrics-expertise.svg +0 -14
- package/examples/ecosystem/metrics-languages.svg +0 -14
- package/examples/ecosystem/metrics-pulse.svg +0 -14
- package/examples/minimal/metrics-calendar.svg +0 -14
- package/examples/minimal/metrics-complexity.svg +0 -14
- package/examples/minimal/metrics-contributions.svg +0 -14
- package/examples/minimal/metrics-expertise.svg +0 -14
- package/examples/minimal/metrics-languages.svg +0 -14
- package/examples/minimal/metrics-pulse.svg +0 -14
- package/examples/modern/metrics-calendar.svg +0 -14
- package/examples/modern/metrics-complexity.svg +0 -14
- package/examples/modern/metrics-contributions.svg +0 -14
- package/examples/modern/metrics-expertise.svg +0 -14
- package/examples/modern/metrics-languages.svg +0 -14
- package/examples/modern/metrics-pulse.svg +0 -14
- package/src/components/bar-chart.test.tsx +0 -38
- package/src/components/bar-chart.tsx +0 -54
- package/src/components/contribution-calendar.test.tsx +0 -44
- package/src/components/contribution-calendar.tsx +0 -94
- package/src/components/contribution-cards.test.tsx +0 -36
- package/src/components/contribution-cards.tsx +0 -58
- package/src/components/donut-chart.test.tsx +0 -36
- package/src/components/donut-chart.tsx +0 -102
- package/src/components/project-cards.test.tsx +0 -46
- package/src/components/project-cards.tsx +0 -66
- package/src/components/stat-cards.test.tsx +0 -32
- package/src/components/stat-cards.tsx +0 -57
- package/src/components/tech-highlights.test.tsx +0 -63
- package/src/components/tech-highlights.tsx +0 -109
- package/teasr.toml +0 -14
|
@@ -0,0 +1 @@
|
|
|
1
|
+
12a4e345c52d1fc0
|
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
|
|
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
|
|
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
|
|
16
|
-
| `src/templates.ts` |
|
|
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/
|
|
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
|
|
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-
|
|
58
|
-
| `assets/insights/metrics-
|
|
59
|
-
| `assets/insights/metrics-
|
|
60
|
-
| `assets/insights/metrics-
|
|
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
|
|
66
|
-
2.
|
|
67
|
-
3. Add a corresponding `*.test.
|
|
68
|
-
4. Wire it into `src/
|
|
69
|
-
5. Update `
|
|
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
|
|
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 (
|
|
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
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
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
|
|
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.
|
|
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
|
|
50
|
+
Package parsers extract dependency names from manifest files.
|
|
52
51
|
|
|
53
|
-
1. Create a `PackageParser` implementation (`src/types.ts
|
|
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
|
|
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`
|
|
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
|
|
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
|
|
79
|
+
- Use `.test.tsx` for tests that exercise JSX components
|
|
81
80
|
- Run tests: `npm test`
|
|
82
|
-
- Tests live alongside source files
|
|
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
|
|
28
|
-
- **
|
|
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
|
-
- **
|
|
32
|
-
- **
|
|
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
|
|
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
|
|
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
|
|
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,
|
|
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,
|
|
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@
|
|
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-
|
|
166
|
-
| `assets/insights/metrics-
|
|
167
|
-
| `assets/insights/metrics-
|
|
168
|
-
| `assets/insights/metrics-
|
|
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.
|
|
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"
|