building-github-index-v2 · v2.0.2 · 2026-07-29 · sha256 be020db5dd862fc5
building-github-index-v2 v2.0.2A
Immutable. This exact content is served forever at /api/v1/blob/be020db5dd862fc5.
---
name: building-github-index-v2
description: DEPRECATED - Use building-github-index instead. Superseded per-file GitHub API implementation of progressive disclosure repository indexes.
metadata:
version: 2.0.2
deprecated: true
superseded_by: building-github-index
---
# Building GitHub Index (v2 — DEPRECATED)
**⚠️ DEPRECATED: Use the `building-github-index` skill instead.**
Despite the "-v2" directory name, this is the *older* implementation. It fetches
the repo tree and then every file individually through `api.github.com`, which is
slow and burns per-file rate limit. `building-github-index` supersedes it with a
single-request tarball download that processes files locally.
This directory is retained only so existing references resolve. It receives no
further updates.
---
## Legacy Documentation
Create markdown indexes of GitHub repositories optimized for Claude project knowledge. Indexes enable retrieval via GitHub API with semantic descriptions for effective matching.
## Quick Start
```bash
# Documentation repos (markdown/notebooks)
python scripts/github_index.py owner/repo -o index.md
# Code repos (extract symbols via tree-sitter)
python scripts/github_index.py owner/repo --code-symbols -o index.md
# Multiple repos combined
python scripts/github_index.py owner/repo1 owner/repo2 -o combined.md
```
## Script Options
| Flag | Description |
|------|-------------|
| `-o, --output` | Output file (default: `github_index.md`) |
| `--token` | GitHub PAT; also reads `GITHUB_TOKEN` env |
| `--include-patterns` | Only index matching globs: `"docs/**" "src/**"` |
| `--exclude-patterns` | Skip matching globs: `"test/**"` |
| `--max-files` | Cap files per repo (default: 200) |
| `--skip-fetch` | Tree only, no content fetch (fast, filename-only descriptions) |
| `--code-symbols` | Include code files, extract function/class names via tree-sitter |
## Description Extraction Priority
1. **YAML frontmatter** - `title:` and `description:` fields
2. **Markdown headings** - First h1/h2 as title, subsequent as topics
3. **Notebook cells** - First markdown cell heading
4. **Code symbols** - Public function/class names (with `--code-symbols`)
5. **Path-derived** - Convert filename to words (fallback)
## When Descriptions Fail
Some repos have stub files (links to external docs, empty readmes). In these cases:
**Manual curation recommended.** Use the tree output and domain knowledge:
```bash
# Get tree structure only (fast)
python scripts/github_index.py owner/repo --skip-fetch -o skeleton.md
# Then manually enhance descriptions based on domain knowledge
```
For code-heavy repos with embedded apps:
- Directory names encode purpose: `acc_wav_gen` → "ACC waveform generation"
- Peripheral acronyms map to functions: AFEC=ADC, MCAN=CAN, TWIHS=I2C
- Operation modes: blocking, interrupt, dma, polled
## Output Format
```markdown
# {Repo} - Content Index
**Repository:** {url}
**Branch:** `{branch}`
## Retrieval Method
{API curl commands}
---
## {Category}
| Description | Path |
|-------------|------|
| {What this covers} | `{path/file.md}` |
```
Description column leads (relevance matching), path follows (retrieval key).
## API Access
Enumerate files:
```bash
curl -sL "https://api.github.com/repos/OWNER/REPO/git/trees/BRANCH?recursive=1"
```
Fetch content:
```bash
curl -s "https://api.github.com/repos/OWNER/REPO/contents/PATH?ref=BRANCH" \
-H "Accept: application/vnd.github+json" | \
python3 -c "import sys,json,base64; print(base64.b64decode(json.load(sys.stdin)['content']).decode())"
```
## Network
Allowlist: `api.github.com`, `raw.githubusercontent.com`
## Related Skills
- `accessing-github-repos` - Private repos, PAT setup, tarball download
- `tree-sitting` - Detailed code structure (methods, imports, line numbers)
## Condensed Format (pk_index.py)
For token-constrained project knowledge, use the condensed script:
```bash
python scripts/pk_index.py owner/repo -o repo_pk.md
```
Produces ~80% smaller output:
- Single line per file: `path` — description
- Symbols only (no signatures)
- 15 files max per category
- No retrieval instructions section
Ideal when adding multiple repo indexes to project knowledge.