# ctxgen
A Rust CLI tool that generates `AGENTS.md` and `CLAUDE.md` files from a `.context` folder.
## Overview
`ctxgen` reads text files from a `.context` directory (typically at the root of a code repository) and compiles them into markdown files suitable for AI agents. The tool:
- Flattens nested folder structures into a single output file
- Wraps each file's contents in `<file>` tags with path information
- Supports fold tags to hide content that agents should read from the source
## Installation
See [latest release](https://github.com/AndrewHannigan/ctxgen/releases) for installation steps.
## Usage
```bash
# Basic usage (uses .context in current directory)
ctxgen
# Specify a custom context directory
ctxgen --context-dir /path/to/.context
# Specify output directory
ctxgen --output-dir /path/to/output
# Full options
ctxgen -c .context -o .
```
## Context Folder Structure
The `.context` folder can contain text files organized in any folder structure. Here's an example:
```
.context/
├── guidelines.txt
├── architecture/
│ ├── overview.txt
│ └── patterns.txt
└── api/
└── conventions.txt
```
## Output Format
Each file is wrapped in a `<file>` tag:
```xml
<file path="guidelines.txt">
Content of the file...
</file>
<file path="architecture/overview.txt">
Content of nested file...
</file>
```
## Fold Tags
Use `<ctxgen:fold>` tags to hide content in the generated markdown. This is useful for controlling context bloat. Agent can read the folded content using filesystem tools:
```xml
This content is always visible.
<ctxgen:fold>
This detailed content will be replaced with a placeholder.
The agent will be instructed to read the original file to see it.
</ctxgen:fold>
More visible content here.
```
When compiled, the fold is replaced with a placeholder:
```
This content is always visible.
[Folded content: 2 lines (lines 3-4). Read 'filename.txt' for full content.]
More visible content here.
```
Files containing folds will have `has_folds="true"` added to their `<file>` tag:
```xml
<file path="detailed-guide.txt" has_folds="true">
...
</file>
```
## Options
| `--context-dir` | `-c` | `.context` | Path to the context folder |
| `--output-dir` | `-o` | `.` | Output directory for generated files |
## License
MIT