A CLI tool to fetch and analyze GitHub repository content, optimized for providing context to Large Language Models (LLMs).
- 📂 Fetch repository content based on configurable patterns
- 🎯 Smart filtering of relevant files and directories
- 📝 Customizable output formatting
- 🔢 Token counting for LLM context optimization
- ⚙️ Flexible configuration system
- 🤫 Silent mode for streamlined operations
- 🚀 Built with Bun for high performance
bun install -g github-context
npm install -g github-context
# Fetch repository content
bunx github-context fetch https://github.com/oxalica/async-lsp
npx github-context fetch https://github.com/oxalica/async-lsp
# Use custom config file
bunx github-context fetch https://github.com/oxalica/async-lsp -c ./my-config.yaml
npx github-context fetch https://github.com/oxalica/async-lsp -c ./my-config.yaml
# Specify custom output file
bunx github-context fetch https://github.com/oxalica/async-lsp -o output.md
npx github-context fetch https://github.com/oxalica/async-lsp -o output.md
# Silent fetch without any output
bunx github-context fetch https://github.com/oxalica/async-lsp -s
npx github-context fetch https://github.com/oxalica/async-lsp -s
Create a default configuration file in your current directory:
bunx github-context init-config
npx github-context init-config
The tool uses a YAML configuration file to customize its behavior. You can create a default configuration file using the init-config
command or specify a custom one using the -c
flag.
include_patterns:
readme:
- "README.md"
- "README.txt"
documentation:
- "docs/**/*.md"
- "documentation/**/*"
# ... more patterns
exclude_patterns:
- "node_modules/**/*"
- "dist/**/*"
# ... more patterns
max_file_size: 500
max_files_per_category: 50
output:
format: "markdown"
file_name: "repo_content.md"
include_line_numbers: true
group_by_category: true
Option | Description |
---|---|
-c, --config <path> |
Path to custom configuration file |
-o, --output <filename> |
Output file name (overrides config setting) |
-s, --silent |
Silent fetch without any output |
-h, --help |
Display help information |
-V, --version |
Display version number |
The tool generates a formatted Markdown file containing:
- Repository content organized by categories
- File content with optional line numbers
- Token count summary for LLM context sizing
# Run locally
bun start
# Build for distribution
bun run build
- commander - Command line interface
- chalk - Terminal styling
- ora - Elegant terminal spinners
- gpt-tokenizer - Token counting
- yaml - YAML parsing
MIT
14m4r ([email protected])
Contributions are welcome! Please feel free to submit a Pull Request.
- Fork the repository
- Create your feature branch (
git checkout -b feature/amazing-feature
) - Commit your changes (
git commit -m 'Add some amazing feature'
) - Push to the branch (
git push origin feature/amazing-feature
) - Open a Pull Request