@chappibunny/repolens 1.9.1 → 1.9.3
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/CHANGELOG.md +50 -0
- package/README.md +18 -18
- package/docs/AI.md +329 -0
- package/docs/ARCHITECTURE.md +145 -0
- package/docs/CONFIGURATION.md +121 -0
- package/docs/DEVELOPMENT.md +79 -0
- package/docs/ENVIRONMENT.md +57 -0
- package/docs/INSTALLATION.md +45 -0
- package/docs/KNOWN_ISSUES.md +309 -0
- package/docs/MIGRATION.md +311 -0
- package/docs/ONBOARDING.md +382 -0
- package/docs/PRODUCTION_CHECKLIST.md +470 -0
- package/docs/ROADMAP.md +151 -0
- package/docs/STABILITY.md +265 -0
- package/docs/TELEMETRY.md +166 -0
- package/docs/TROUBLESHOOTING.md +377 -0
- package/package.json +3 -3
- package/src/ai/generate-sections.js +1224 -276
- package/src/cli.js +99 -41
- package/src/docs/generate-doc-set.js +15 -2
- package/src/publishers/confluence.js +37 -6
- package/src/publishers/notion.js +48 -0
- package/src/publishers/publish.js +36 -12
- /package/{RELEASE.md → docs/RELEASE.md} +0 -0
|
@@ -0,0 +1,311 @@
|
|
|
1
|
+
# Migration Guide
|
|
2
|
+
|
|
3
|
+
This guide helps you upgrade RepoLens across breaking changes and major versions.
|
|
4
|
+
|
|
5
|
+
**Current Version:** 1.5.0
|
|
6
|
+
**Last Updated:** March 2026
|
|
7
|
+
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
## Migrating to v0.6.x
|
|
11
|
+
|
|
12
|
+
### Package Rename
|
|
13
|
+
|
|
14
|
+
The npm package was renamed from `@rabitai/repolens` to `@chappibunny/repolens` in v0.6.1.
|
|
15
|
+
|
|
16
|
+
**Update your workflows:**
|
|
17
|
+
```yaml
|
|
18
|
+
# Old
|
|
19
|
+
run: npx @rabitai/repolens@latest publish
|
|
20
|
+
|
|
21
|
+
# New
|
|
22
|
+
run: npx @chappibunny/repolens@latest publish
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
**Update global installs:**
|
|
26
|
+
```bash
|
|
27
|
+
npm uninstall -g @rabitai/repolens
|
|
28
|
+
npm install -g @chappibunny/repolens
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
Or run `npx @chappibunny/repolens migrate` to auto-update workflow files.
|
|
32
|
+
|
|
33
|
+
### Confluence Publisher (New in v0.6.0+)
|
|
34
|
+
|
|
35
|
+
Add Confluence to your publishers if you want to publish to Atlassian Confluence:
|
|
36
|
+
|
|
37
|
+
```yaml
|
|
38
|
+
# .repolens.yml
|
|
39
|
+
publishers:
|
|
40
|
+
- markdown
|
|
41
|
+
- notion
|
|
42
|
+
- confluence
|
|
43
|
+
|
|
44
|
+
confluence:
|
|
45
|
+
branches:
|
|
46
|
+
- main
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
**Required environment variables:**
|
|
50
|
+
```bash
|
|
51
|
+
CONFLUENCE_URL=https://your-company.atlassian.net/wiki
|
|
52
|
+
CONFLUENCE_EMAIL=trades@rabitaitrades.com
|
|
53
|
+
CONFLUENCE_API_TOKEN=your-api-token
|
|
54
|
+
CONFLUENCE_SPACE_KEY=DOCS
|
|
55
|
+
CONFLUENCE_PARENT_PAGE_ID=123456789
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
### Dashboard Removed (v0.6.2)
|
|
59
|
+
|
|
60
|
+
The interactive HTML dashboard (`renderDashboard.js`) and GitHub Pages deployment workflow (`deploy-dashboard.yml`) have been removed. If you had dashboard configuration in `.repolens.yml`, you can safely remove it:
|
|
61
|
+
|
|
62
|
+
```yaml
|
|
63
|
+
# Remove these if present (no longer used)
|
|
64
|
+
# dashboard:
|
|
65
|
+
# enabled: true
|
|
66
|
+
# githubPages: true
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
---
|
|
70
|
+
|
|
71
|
+
## Migrating from v0.3.x to v0.4.0+
|
|
72
|
+
|
|
73
|
+
### Critical: Update GitHub Actions Workflow
|
|
74
|
+
|
|
75
|
+
**If you see this error:**
|
|
76
|
+
```
|
|
77
|
+
Run cd tools/repolens
|
|
78
|
+
cd: tools/repolens: No such file or directory
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
**Your workflow has an outdated format.** Run `npx @chappibunny/repolens migrate` or update manually:
|
|
82
|
+
|
|
83
|
+
**Old format (v0.3.0 and earlier):**
|
|
84
|
+
```yaml
|
|
85
|
+
- name: Generate documentation
|
|
86
|
+
run: |
|
|
87
|
+
cd tools/repolens
|
|
88
|
+
npm install
|
|
89
|
+
npx @chappibunny/repolens publish
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
**New format (v0.4.0+):**
|
|
93
|
+
```yaml
|
|
94
|
+
- name: Setup Node.js
|
|
95
|
+
uses: actions/setup-node@v4
|
|
96
|
+
with:
|
|
97
|
+
node-version: 20
|
|
98
|
+
|
|
99
|
+
- name: Generate and publish documentation
|
|
100
|
+
env:
|
|
101
|
+
NOTION_TOKEN: ${{ secrets.NOTION_TOKEN }}
|
|
102
|
+
NOTION_PARENT_PAGE_ID: ${{ secrets.NOTION_PARENT_PAGE_ID }}
|
|
103
|
+
REPOLENS_AI_API_KEY: ${{ secrets.REPOLENS_AI_API_KEY }}
|
|
104
|
+
run: npx @chappibunny/repolens@latest publish
|
|
105
|
+
```
|
|
106
|
+
|
|
107
|
+
### AI Features (Optional, added in v0.4.0)
|
|
108
|
+
|
|
109
|
+
AI features are opt-in. Add to `.repolens.yml`:
|
|
110
|
+
|
|
111
|
+
```yaml
|
|
112
|
+
ai:
|
|
113
|
+
enabled: true
|
|
114
|
+
mode: hybrid
|
|
115
|
+
max_tokens: 2500
|
|
116
|
+
|
|
117
|
+
features:
|
|
118
|
+
executive_summary: true
|
|
119
|
+
business_domains: true
|
|
120
|
+
architecture_overview: true
|
|
121
|
+
data_flows: true
|
|
122
|
+
developer_onboarding: true
|
|
123
|
+
change_impact: true
|
|
124
|
+
```
|
|
125
|
+
|
|
126
|
+
Add a GitHub secret for your AI provider:
|
|
127
|
+
```bash
|
|
128
|
+
# Settings → Secrets → Actions
|
|
129
|
+
REPOLENS_AI_API_KEY=sk-...
|
|
130
|
+
```
|
|
131
|
+
|
|
132
|
+
**Available AI document types:**
|
|
133
|
+
- `executive_summary` — Non-technical project overview for leadership
|
|
134
|
+
- `business_domains` — Functional area descriptions
|
|
135
|
+
- `architecture_overview` — Layered technical analysis
|
|
136
|
+
- `data_flows` — How information moves through the system
|
|
137
|
+
- `developer_onboarding` — Getting started guide for new contributors
|
|
138
|
+
- `change_impact` — Architecture diff with natural language context
|
|
139
|
+
|
|
140
|
+
**Cost:** ~$0.10-$0.40 per run with gpt-5-mini
|
|
141
|
+
|
|
142
|
+
### Backward Compatibility
|
|
143
|
+
|
|
144
|
+
v0.4.0 is 100% backward compatible:
|
|
145
|
+
- Existing `.repolens.yml` configs work without modification
|
|
146
|
+
- AI features are opt-in (deterministic mode is default)
|
|
147
|
+
- All 6 original document types unchanged
|
|
148
|
+
- No new required dependencies
|
|
149
|
+
|
|
150
|
+
---
|
|
151
|
+
|
|
152
|
+
## Using the Migration Tool
|
|
153
|
+
|
|
154
|
+
```bash
|
|
155
|
+
# Preview changes without applying
|
|
156
|
+
npx @chappibunny/repolens migrate --dry-run
|
|
157
|
+
|
|
158
|
+
# Apply migration with confirmation
|
|
159
|
+
npx @chappibunny/repolens migrate
|
|
160
|
+
|
|
161
|
+
# Apply without confirmation
|
|
162
|
+
npx @chappibunny/repolens migrate --force
|
|
163
|
+
```
|
|
164
|
+
|
|
165
|
+
The migration tool:
|
|
166
|
+
- Auto-detects legacy patterns (`cd tools/repolens`, missing `@latest`, etc.)
|
|
167
|
+
- Updates package references to `@chappibunny/repolens@latest`
|
|
168
|
+
- Adds missing Node.js setup steps
|
|
169
|
+
- Adds missing environment variables
|
|
170
|
+
- Creates `.backup` files before modifying
|
|
171
|
+
- Shows diff preview before applying
|
|
172
|
+
|
|
173
|
+
---
|
|
174
|
+
|
|
175
|
+
## How Updates Work
|
|
176
|
+
|
|
177
|
+
### Automatic Notifications
|
|
178
|
+
|
|
179
|
+
RepoLens checks for updates automatically:
|
|
180
|
+
|
|
181
|
+
```
|
|
182
|
+
┌────────────────────────────────────────────────────────────┐
|
|
183
|
+
│ 📦 Update Available │
|
|
184
|
+
├────────────────────────────────────────────────────────────┤
|
|
185
|
+
│ Current: 0.5.0 → Latest: 1.5.0 │
|
|
186
|
+
│ │
|
|
187
|
+
│ Run one of these commands to update: │
|
|
188
|
+
│ │
|
|
189
|
+
│ • npm install -g @chappibunny/repolens@latest (global) │
|
|
190
|
+
│ • npm install @chappibunny/repolens@latest (local) │
|
|
191
|
+
│ • npx @chappibunny/repolens@latest <command> (latest) │
|
|
192
|
+
└────────────────────────────────────────────────────────────┘
|
|
193
|
+
```
|
|
194
|
+
|
|
195
|
+
### Manual Version Check
|
|
196
|
+
|
|
197
|
+
```bash
|
|
198
|
+
npx @chappibunny/repolens doctor
|
|
199
|
+
```
|
|
200
|
+
|
|
201
|
+
### Installation Methods
|
|
202
|
+
|
|
203
|
+
**GitHub Actions (recommended):**
|
|
204
|
+
```yaml
|
|
205
|
+
run: npx @chappibunny/repolens@latest publish
|
|
206
|
+
```
|
|
207
|
+
|
|
208
|
+
**Global:**
|
|
209
|
+
```bash
|
|
210
|
+
npm install -g @chappibunny/repolens@latest
|
|
211
|
+
```
|
|
212
|
+
|
|
213
|
+
**Local:**
|
|
214
|
+
```bash
|
|
215
|
+
npm install @chappibunny/repolens@latest
|
|
216
|
+
```
|
|
217
|
+
|
|
218
|
+
---
|
|
219
|
+
|
|
220
|
+
## Version History
|
|
221
|
+
|
|
222
|
+
### v1.2.0 (March 2026)
|
|
223
|
+
- `repolens migrate` now also patches `.repolens.yml` (adds `configVersion: 1` if missing)
|
|
224
|
+
- Documentation version references updated across all files
|
|
225
|
+
|
|
226
|
+
### v1.1.0 (March 2026)
|
|
227
|
+
- GitHub Wiki publisher with audience-grouped Home, sidebar, and page metadata
|
|
228
|
+
- Temperature bug fix for GPT-5 compatibility
|
|
229
|
+
|
|
230
|
+
### v1.0.1 (March 2026)
|
|
231
|
+
- GPT-5 API compatibility (`max_completion_tokens`, temperature handling)
|
|
232
|
+
|
|
233
|
+
### v1.0.0 (March 2026)
|
|
234
|
+
- Stable release with frozen CLI, config schema, and plugin interface
|
|
235
|
+
- 185 tests across 15 files
|
|
236
|
+
- Semver guarantees (see STABILITY.md)
|
|
237
|
+
|
|
238
|
+
### v0.9.0
|
|
239
|
+
- Plugin system for custom renderers, publishers, and lifecycle hooks
|
|
240
|
+
- Plugin loader, manager, and config validation
|
|
241
|
+
|
|
242
|
+
### v0.8.0
|
|
243
|
+
- Extended analysis: GraphQL, TypeScript type graph, dependency graph, architecture drift
|
|
244
|
+
- 15 document types (4 new extended-analysis)
|
|
245
|
+
|
|
246
|
+
### v0.7.0
|
|
247
|
+
- Structured context builder (three-layer architecture: scan → artifacts → AI)
|
|
248
|
+
- Zero-hallucination AI pipeline
|
|
249
|
+
|
|
250
|
+
### v0.6.x (July 2025)
|
|
251
|
+
- Confluence publisher, Discord notifications, metrics system
|
|
252
|
+
- Package renamed to `@chappibunny/repolens`
|
|
253
|
+
- Dashboard removed
|
|
254
|
+
- CI/CD fixes for cross-platform dependency resolution
|
|
255
|
+
|
|
256
|
+
### v0.5.0
|
|
257
|
+
- Security hardening: secret detection, input validation, rate limiting
|
|
258
|
+
- 43 security tests added (90 total)
|
|
259
|
+
- GitHub Actions pinned to commit SHAs
|
|
260
|
+
|
|
261
|
+
### v0.4.0
|
|
262
|
+
- AI-assisted documentation (11 document types)
|
|
263
|
+
- Business domain inference, data flow analysis
|
|
264
|
+
- Migration tool (`repolens migrate`)
|
|
265
|
+
|
|
266
|
+
### v0.3.0
|
|
267
|
+
- Unicode architecture diagrams (replaced Mermaid)
|
|
268
|
+
- Automatic update notifications
|
|
269
|
+
- Interactive credential collection
|
|
270
|
+
|
|
271
|
+
### v0.2.0
|
|
272
|
+
- Branch-aware publishing, package.json metadata extraction
|
|
273
|
+
- Interactive onboarding
|
|
274
|
+
|
|
275
|
+
### v0.1.1
|
|
276
|
+
- Initial release: `init`, `doctor`, `publish` commands
|
|
277
|
+
- Notion and Markdown publishers
|
|
278
|
+
|
|
279
|
+
---
|
|
280
|
+
|
|
281
|
+
## Troubleshooting
|
|
282
|
+
|
|
283
|
+
### Update notification not showing
|
|
284
|
+
|
|
285
|
+
**Cause:** Checks are cached for 24 hours.
|
|
286
|
+
**Fix:** Run `npx @chappibunny/repolens doctor` to force a check.
|
|
287
|
+
|
|
288
|
+
### "Command not found: repolens"
|
|
289
|
+
|
|
290
|
+
```bash
|
|
291
|
+
# Use npx (no install needed)
|
|
292
|
+
npx @chappibunny/repolens@latest publish
|
|
293
|
+
|
|
294
|
+
# Or install globally
|
|
295
|
+
npm install -g @chappibunny/repolens@latest
|
|
296
|
+
```
|
|
297
|
+
|
|
298
|
+
### Old version still running after update
|
|
299
|
+
|
|
300
|
+
```bash
|
|
301
|
+
npm cache clean --force
|
|
302
|
+
npm uninstall -g repolens
|
|
303
|
+
npm install -g @chappibunny/repolens@latest
|
|
304
|
+
```
|
|
305
|
+
|
|
306
|
+
### GitHub Actions using old version
|
|
307
|
+
|
|
308
|
+
Update workflow to use `@latest`:
|
|
309
|
+
```yaml
|
|
310
|
+
run: npx @chappibunny/repolens@latest publish
|
|
311
|
+
```
|
|
@@ -0,0 +1,382 @@
|
|
|
1
|
+
# RepoLens — Onboarding Guide
|
|
2
|
+
|
|
3
|
+
Complete step-by-step setup for RepoLens: publishers, AI enhancement, Notion, Confluence, GitHub Wiki, Discord notifications, and CI/CD automation.
|
|
4
|
+
|
|
5
|
+
> **Quick start:** For a 60-second setup, see the [Quick Start](README.md#-quick-start-60-seconds) in the README.
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## Step 1: Initialize RepoLens
|
|
10
|
+
|
|
11
|
+
Run this in your project root:
|
|
12
|
+
|
|
13
|
+
```bash
|
|
14
|
+
npx @chappibunny/repolens init
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
**What it creates:**
|
|
18
|
+
- `.repolens.yml` — Configuration file
|
|
19
|
+
- `.github/workflows/repolens.yml` — Auto-publishing workflow
|
|
20
|
+
- `.env.example` — Environment variable template
|
|
21
|
+
- `README.repolens.md` — Quick reference guide
|
|
22
|
+
|
|
23
|
+
**Default configuration works for:**
|
|
24
|
+
- Next.js projects
|
|
25
|
+
- React applications
|
|
26
|
+
- Node.js backends
|
|
27
|
+
- Monorepos with common structure
|
|
28
|
+
|
|
29
|
+
---
|
|
30
|
+
|
|
31
|
+
## Step 2: Configure Publishers
|
|
32
|
+
|
|
33
|
+
Open `.repolens.yml` and verify the `publishers` section:
|
|
34
|
+
|
|
35
|
+
```yaml
|
|
36
|
+
publishers:
|
|
37
|
+
- markdown # Always works, no setup needed
|
|
38
|
+
- notion # Requires NOTION_TOKEN and NOTION_PARENT_PAGE_ID
|
|
39
|
+
- confluence # Requires CONFLUENCE_URL, CONFLUENCE_EMAIL, CONFLUENCE_API_TOKEN, CONFLUENCE_SPACE_KEY
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
**Markdown Only** (simplest):
|
|
43
|
+
```yaml
|
|
44
|
+
publishers:
|
|
45
|
+
- markdown
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
**Notion Only**:
|
|
49
|
+
```yaml
|
|
50
|
+
publishers:
|
|
51
|
+
- notion
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
**Confluence Only**:
|
|
55
|
+
```yaml
|
|
56
|
+
publishers:
|
|
57
|
+
- confluence
|
|
58
|
+
```
|
|
59
|
+
Documentation lands in `.repolens/` directory. Commit these files or ignore them.
|
|
60
|
+
|
|
61
|
+
**Notion + Markdown** (recommended):
|
|
62
|
+
```yaml
|
|
63
|
+
publishers:
|
|
64
|
+
- notion
|
|
65
|
+
- markdown
|
|
66
|
+
```
|
|
67
|
+
Docs published to Notion for team visibility, plus local Markdown backups.
|
|
68
|
+
|
|
69
|
+
**Confluence + Markdown**:
|
|
70
|
+
```yaml
|
|
71
|
+
publishers:
|
|
72
|
+
- confluence
|
|
73
|
+
- markdown
|
|
74
|
+
```
|
|
75
|
+
Docs published to Confluence for enterprise teams, plus local Markdown backups.
|
|
76
|
+
|
|
77
|
+
**All Publishers**:
|
|
78
|
+
```yaml
|
|
79
|
+
publishers:
|
|
80
|
+
- notion
|
|
81
|
+
- confluence
|
|
82
|
+
- markdown
|
|
83
|
+
```
|
|
84
|
+
Maximum visibility: Notion for async collaboration, Confluence for enterprise docs, Markdown for local backups.
|
|
85
|
+
|
|
86
|
+
**GitHub Wiki** (ideal for open source):
|
|
87
|
+
```yaml
|
|
88
|
+
publishers:
|
|
89
|
+
- github_wiki
|
|
90
|
+
- markdown
|
|
91
|
+
```
|
|
92
|
+
Docs live alongside your code — accessible from the repo's Wiki tab. Requires `GITHUB_TOKEN`.
|
|
93
|
+
|
|
94
|
+
---
|
|
95
|
+
|
|
96
|
+
## Step 3: Enable AI Features (Optional)
|
|
97
|
+
|
|
98
|
+
AI-enhanced documentation adds natural language explanations for non-technical audiences.
|
|
99
|
+
|
|
100
|
+
### Choose an AI Provider
|
|
101
|
+
|
|
102
|
+
RepoLens works with multiple AI providers:
|
|
103
|
+
- **GitHub Models** (free tier — recommended for GitHub Actions, uses `GITHUB_TOKEN`)
|
|
104
|
+
- **OpenAI** (gpt-5-mini, gpt-5.4, gpt-5-nano)
|
|
105
|
+
- **Anthropic Claude** (native adapter)
|
|
106
|
+
- **Google Gemini** (native adapter)
|
|
107
|
+
- **Azure OpenAI** (enterprise deployments)
|
|
108
|
+
- **Local Models** (Ollama, LM Studio, etc.)
|
|
109
|
+
|
|
110
|
+
### Option A: GitHub Models (Free — Recommended)
|
|
111
|
+
|
|
112
|
+
Every GitHub repo gets free access to AI models. No API key signup needed.
|
|
113
|
+
|
|
114
|
+
In your GitHub Actions workflow:
|
|
115
|
+
```yaml
|
|
116
|
+
env:
|
|
117
|
+
REPOLENS_AI_ENABLED: true
|
|
118
|
+
REPOLENS_AI_PROVIDER: github
|
|
119
|
+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
120
|
+
```
|
|
121
|
+
|
|
122
|
+
For local development, create a [personal access token](https://github.com/settings/tokens) and add to `.env`:
|
|
123
|
+
```bash
|
|
124
|
+
REPOLENS_AI_ENABLED=true
|
|
125
|
+
REPOLENS_AI_PROVIDER=github
|
|
126
|
+
GITHUB_TOKEN=ghp_xxxxxxxxxxxxx
|
|
127
|
+
```
|
|
128
|
+
|
|
129
|
+
### Option B: OpenAI / Other Providers
|
|
130
|
+
|
|
131
|
+
Create `.env` in your project root:
|
|
132
|
+
```bash
|
|
133
|
+
# Enable AI features
|
|
134
|
+
REPOLENS_AI_ENABLED=true
|
|
135
|
+
REPOLENS_AI_API_KEY=sk-xxxxxxxxxxxxx
|
|
136
|
+
|
|
137
|
+
# Optional: Customize provider
|
|
138
|
+
REPOLENS_AI_BASE_URL=https://api.openai.com/v1
|
|
139
|
+
REPOLENS_AI_MODEL=gpt-5-mini
|
|
140
|
+
REPOLENS_AI_MAX_TOKENS=2000
|
|
141
|
+
```
|
|
142
|
+
|
|
143
|
+
### Configure AI in .repolens.yml
|
|
144
|
+
|
|
145
|
+
```yaml
|
|
146
|
+
ai:
|
|
147
|
+
enabled: true # Enable AI features
|
|
148
|
+
mode: hybrid # hybrid, full, or off
|
|
149
|
+
max_tokens: 2000 # Token limit per request
|
|
150
|
+
|
|
151
|
+
features:
|
|
152
|
+
executive_summary: true # Non-technical overview
|
|
153
|
+
business_domains: true # Functional area descriptions
|
|
154
|
+
architecture_overview: true # Layered technical analysis
|
|
155
|
+
data_flows: true # System data flow explanations
|
|
156
|
+
developer_onboarding: true # Getting started guide
|
|
157
|
+
change_impact: true # Architecture diff with context
|
|
158
|
+
```
|
|
159
|
+
|
|
160
|
+
**Cost Estimates** (with gpt-5-mini):
|
|
161
|
+
- Small repo (<50 files): $0.10–$0.30 per run
|
|
162
|
+
- Medium repo (50–200 files): $0.30–$0.80 per run
|
|
163
|
+
- Large repo (200+ files): $0.80–$2.00 per run
|
|
164
|
+
- **Free** with GitHub Models (gpt-4o-mini, rate-limited)
|
|
165
|
+
|
|
166
|
+
**For GitHub Actions**, add as repository secrets:
|
|
167
|
+
- For GitHub Models: no extra secrets needed — `GITHUB_TOKEN` is automatic
|
|
168
|
+
- For OpenAI/other: Name: `AI_KEY`, Value: your API key
|
|
169
|
+
|
|
170
|
+
See [AI.md](AI.md) for complete AI documentation and provider setup.
|
|
171
|
+
|
|
172
|
+
---
|
|
173
|
+
|
|
174
|
+
## Step 4: Set Up Notion Integration (Optional)
|
|
175
|
+
|
|
176
|
+
### Create Notion Integration
|
|
177
|
+
1. Go to [notion.so/my-integrations](https://www.notion.so/my-integrations)
|
|
178
|
+
2. Click **"+ New Integration"**
|
|
179
|
+
3. Name it **"RepoLens"**
|
|
180
|
+
4. Select your workspace
|
|
181
|
+
5. Copy the **Internal Integration Token** (starts with `secret_`)
|
|
182
|
+
|
|
183
|
+
### Create Parent Page
|
|
184
|
+
1. Create a new page in Notion (e.g., "📚 Architecture Docs")
|
|
185
|
+
2. Click **"..."** menu → **"Add connections"** → Select **"RepoLens"**
|
|
186
|
+
3. Copy the page URL: `https://notion.so/workspace/PAGE_ID?xxx`
|
|
187
|
+
4. Extract the `PAGE_ID` (32-character hex string)
|
|
188
|
+
|
|
189
|
+
### Add Environment Variables
|
|
190
|
+
|
|
191
|
+
**For Local Development:**
|
|
192
|
+
```bash
|
|
193
|
+
NOTION_TOKEN=secret_xxxxxxxxxxxxx
|
|
194
|
+
NOTION_PARENT_PAGE_ID=xxxxxxxxxxxxx
|
|
195
|
+
NOTION_VERSION=2022-06-28
|
|
196
|
+
```
|
|
197
|
+
|
|
198
|
+
**For GitHub Actions:**
|
|
199
|
+
1. Go to your repo → **Settings** → **Secrets and variables** → **Actions**
|
|
200
|
+
2. Add secrets: `NOTION_TOKEN` and `NOTION_PARENT_PAGE_ID`
|
|
201
|
+
|
|
202
|
+
---
|
|
203
|
+
|
|
204
|
+
## Step 5: Set Up Confluence Integration (Optional)
|
|
205
|
+
|
|
206
|
+
### Generate API Token
|
|
207
|
+
1. Go to [id.atlassian.com/manage-profile/security/api-tokens](https://id.atlassian.com/manage-profile/security/api-tokens)
|
|
208
|
+
2. Click **"Create API token"**
|
|
209
|
+
3. Name it **"RepoLens"** and copy the token
|
|
210
|
+
|
|
211
|
+
### Find Your Space Key
|
|
212
|
+
1. Navigate to your Confluence space
|
|
213
|
+
2. Go to **Space Settings** → **Space details**
|
|
214
|
+
3. Note the **Space Key** (e.g., `DOCS`, `ENG`, `TECH`)
|
|
215
|
+
|
|
216
|
+
### Get Parent Page ID (Optional)
|
|
217
|
+
1. Navigate to the page where you want docs nested
|
|
218
|
+
2. Click **"..."** menu → **"Page information"**
|
|
219
|
+
3. Copy the page ID from the URL: `pageId=123456789`
|
|
220
|
+
|
|
221
|
+
### Add Environment Variables
|
|
222
|
+
|
|
223
|
+
**For Local Development:**
|
|
224
|
+
```bash
|
|
225
|
+
CONFLUENCE_URL=https://your-company.atlassian.net/wiki
|
|
226
|
+
CONFLUENCE_EMAIL=your-email@example.com
|
|
227
|
+
CONFLUENCE_API_TOKEN=your-api-token-here
|
|
228
|
+
CONFLUENCE_SPACE_KEY=DOCS
|
|
229
|
+
CONFLUENCE_PARENT_PAGE_ID=123456789 # Optional
|
|
230
|
+
```
|
|
231
|
+
|
|
232
|
+
**For Confluence Server/Data Center** (self-hosted):
|
|
233
|
+
```bash
|
|
234
|
+
CONFLUENCE_URL=https://confluence.yourcompany.com
|
|
235
|
+
CONFLUENCE_EMAIL=your-username
|
|
236
|
+
CONFLUENCE_API_TOKEN=your-personal-access-token
|
|
237
|
+
CONFLUENCE_SPACE_KEY=DOCS
|
|
238
|
+
CONFLUENCE_PARENT_PAGE_ID=123456789 # Optional
|
|
239
|
+
```
|
|
240
|
+
|
|
241
|
+
**For GitHub Actions:**
|
|
242
|
+
Add secrets: `CONFLUENCE_URL`, `CONFLUENCE_EMAIL`, `CONFLUENCE_API_TOKEN`, `CONFLUENCE_SPACE_KEY`, and optionally `CONFLUENCE_PARENT_PAGE_ID`.
|
|
243
|
+
|
|
244
|
+
---
|
|
245
|
+
|
|
246
|
+
## Step 6: Configure Branch Publishing (Recommended)
|
|
247
|
+
|
|
248
|
+
Prevent documentation conflicts by limiting which branches publish:
|
|
249
|
+
|
|
250
|
+
```yaml
|
|
251
|
+
notion:
|
|
252
|
+
branches:
|
|
253
|
+
- main
|
|
254
|
+
includeBranchInTitle: false
|
|
255
|
+
|
|
256
|
+
confluence:
|
|
257
|
+
branches:
|
|
258
|
+
- main
|
|
259
|
+
```
|
|
260
|
+
|
|
261
|
+
**Options:**
|
|
262
|
+
- `branches: [main]` — Only main publishes (recommended)
|
|
263
|
+
- `branches: [main, staging, release/*]` — Multiple branches with glob support
|
|
264
|
+
- Omit `branches` entirely — All branches publish (may cause conflicts)
|
|
265
|
+
|
|
266
|
+
Markdown publisher always runs on all branches (local files don't conflict).
|
|
267
|
+
|
|
268
|
+
---
|
|
269
|
+
|
|
270
|
+
## Step 7: Customize Scan Patterns (Optional)
|
|
271
|
+
|
|
272
|
+
```yaml
|
|
273
|
+
scan:
|
|
274
|
+
include:
|
|
275
|
+
- "src/**/*.{ts,tsx,js,jsx}"
|
|
276
|
+
- "app/**/*.{ts,tsx,js,jsx}"
|
|
277
|
+
- "lib/**/*.{ts,tsx,js,jsx}"
|
|
278
|
+
ignore:
|
|
279
|
+
- "node_modules/**"
|
|
280
|
+
- ".next/**"
|
|
281
|
+
- "dist/**"
|
|
282
|
+
- "build/**"
|
|
283
|
+
|
|
284
|
+
module_roots:
|
|
285
|
+
- "src"
|
|
286
|
+
- "app"
|
|
287
|
+
- "lib"
|
|
288
|
+
```
|
|
289
|
+
|
|
290
|
+
**Performance Note:** RepoLens warns at 10k files and limits at 50k files.
|
|
291
|
+
|
|
292
|
+
---
|
|
293
|
+
|
|
294
|
+
## Step 8: Generate and Verify
|
|
295
|
+
|
|
296
|
+
Run locally:
|
|
297
|
+
```bash
|
|
298
|
+
npx @chappibunny/repolens publish
|
|
299
|
+
```
|
|
300
|
+
|
|
301
|
+
**Expected output:**
|
|
302
|
+
```
|
|
303
|
+
RepoLens 🔍
|
|
304
|
+
────────────────────────────────────────────────────
|
|
305
|
+
[RepoLens] Scanning repository...
|
|
306
|
+
[RepoLens] Detected 42 modules
|
|
307
|
+
[RepoLens] Publishing documentation...
|
|
308
|
+
[RepoLens] ✓ System Overview published
|
|
309
|
+
[RepoLens] ✓ Module Catalog published
|
|
310
|
+
[RepoLens] ✓ API Surface published
|
|
311
|
+
[RepoLens] ✓ Route Map published
|
|
312
|
+
[RepoLens] ✓ System Map published
|
|
313
|
+
```
|
|
314
|
+
|
|
315
|
+
**Verify Markdown output:**
|
|
316
|
+
```bash
|
|
317
|
+
ls .repolens/
|
|
318
|
+
# system_overview.md module_catalog.md api_surface.md route_map.md system_map.md
|
|
319
|
+
```
|
|
320
|
+
|
|
321
|
+
**Verify Notion output:**
|
|
322
|
+
Open your Notion parent page and confirm child pages were created (System Overview, Module Catalog, API Surface, Route Map, System Map — plus AI documents if enabled).
|
|
323
|
+
|
|
324
|
+
---
|
|
325
|
+
|
|
326
|
+
## Step 9: Enable GitHub Actions
|
|
327
|
+
|
|
328
|
+
Commit the workflow for automatic updates:
|
|
329
|
+
```bash
|
|
330
|
+
git add .github/workflows/repolens.yml .repolens.yml
|
|
331
|
+
git commit -m "Add RepoLens documentation automation"
|
|
332
|
+
git push
|
|
333
|
+
```
|
|
334
|
+
|
|
335
|
+
**What happens next:**
|
|
336
|
+
- Every push to `main` regenerates docs
|
|
337
|
+
- Pull requests get architecture diff comments
|
|
338
|
+
- Documentation stays evergreen automatically
|
|
339
|
+
|
|
340
|
+
**Pro Tip:** Add `.repolens/` to `.gitignore` if you don't want to commit local Markdown files.
|
|
341
|
+
|
|
342
|
+
---
|
|
343
|
+
|
|
344
|
+
## Step 10: Discord Notifications (Optional)
|
|
345
|
+
|
|
346
|
+
Get notified when documentation changes significantly — rich embeds with coverage, health score, and change percentage.
|
|
347
|
+
|
|
348
|
+
### Setup
|
|
349
|
+
|
|
350
|
+
1. **Create a webhook** in your Discord server:
|
|
351
|
+
- Server Settings → Integrations → Webhooks → New Webhook
|
|
352
|
+
- Copy the webhook URL
|
|
353
|
+
|
|
354
|
+
2. **Add to environment**:
|
|
355
|
+
```bash
|
|
356
|
+
DISCORD_WEBHOOK_URL=https://discord.com/api/webhooks/xxx/xxx
|
|
357
|
+
```
|
|
358
|
+
|
|
359
|
+
3. **Configure in `.repolens.yml`** (optional):
|
|
360
|
+
```yaml
|
|
361
|
+
discord:
|
|
362
|
+
enabled: true
|
|
363
|
+
notifyOn: significant # Options: always, significant, never
|
|
364
|
+
significantThreshold: 10 # Notify if change >10%
|
|
365
|
+
branches:
|
|
366
|
+
- main
|
|
367
|
+
- develop
|
|
368
|
+
```
|
|
369
|
+
|
|
370
|
+
4. **Add GitHub Actions secret**: `DISCORD_WEBHOOK_URL`
|
|
371
|
+
|
|
372
|
+
**Notification includes:** branch info, files scanned, coverage %, health score, change %, and direct links to published docs.
|
|
373
|
+
|
|
374
|
+
---
|
|
375
|
+
|
|
376
|
+
## Next Steps
|
|
377
|
+
|
|
378
|
+
- [Configuration Reference](CONFIGURATION.md) — Full `.repolens.yml` schema
|
|
379
|
+
- [Environment Variables](ENVIRONMENT.md) — All env vars by feature
|
|
380
|
+
- [Architecture](ARCHITECTURE.md) — Pipeline and project structure
|
|
381
|
+
- [Security](../SECURITY.md) — Threat model and hardening details
|
|
382
|
+
- [Troubleshooting](TROUBLESHOOTING.md) — Common issues and fixes
|