Context System Architecture

How Bootspring generates and manages project context.

Overview#

The context system generates CLAUDE.md files that help AI assistants understand your project. It analyzes your codebase and produces structured documentation.

Context Generation Pipeline#

┌─────────────┐ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ │ Discovery │───▶│ Analysis │───▶│ Aggregation │───▶│ Rendering │ └─────────────┘ └─────────────┘ └─────────────┘ └─────────────┘ │ │ │ │ ▼ ▼ ▼ ▼ Find files Run analyzers Combine data Apply template

Discovery Phase#

File Scanner#

Loading code block...

Default Patterns#

Loading code block...

Analysis Phase#

Analyzer Interface#

Loading code block...

Built-in Analyzers#

Package Analyzer#

Loading code block...

Framework Analyzer#

Loading code block...

Structure Analyzer#

Loading code block...

Database Analyzer#

Loading code block...

Aggregation Phase#

Result Aggregator#

Loading code block...

Rendering Phase#

Template System#

Loading code block...

Template Structure#

Loading code block...

{{structure.tree}}

## Key Files {{#each keyFiles}} ### {{path}} {{description}} {{/each}} ## Database Schema {{#if database.models}} {{#each database.models}} ### {{name}} {{#each fields}} - {{name}}: {{type}} {{/each}} {{/each}} {{/if}} ## API Routes {{#each api.routes}} - `{{method}}` {{path}} - {{description}} {{/each}} ## Development ```bash {{commands.dev}}
## Incremental Updates ### Change Detection ```typescript // core/context/incremental.ts export class IncrementalUpdater { private hashStore: HashStore; async shouldRegenerate(project: Project): Promise<boolean> { const currentHashes = await this.computeHashes(project); const storedHashes = await this.hashStore.get(project.path); if (!storedHashes) return true; // Check for significant changes const changed = this.findChanges(storedHashes, currentHashes); return changed.some(c => this.isSignificant(c)); } private isSignificant(change: FileChange): boolean { // Config changes are always significant if (CONFIG_FILES.includes(change.path)) return true; // Schema changes are significant if (change.path.includes('schema')) return true; // Many file changes are significant return change.type === 'added' || change.type === 'deleted'; } }

Partial Regeneration#

Loading code block...

Caching#

Analysis Cache#

Loading code block...

Configuration#

Context Config#

Loading code block...

Performance#

Parallel Analysis#

Loading code block...

Large Project Handling#

For large codebases:

Loading code block...