302 lines
6.1 KiB
Markdown
302 lines
6.1 KiB
Markdown
# Project Maps Load Command
|
|
|
|
Load and display project context maps with tiered loading.
|
|
|
|
## Usage
|
|
|
|
```
|
|
/project-maps-load [--tier <1|2|3|4>] [--map <map-name>]
|
|
```
|
|
|
|
## Options
|
|
|
|
- `--tier <N>`: Load all maps from specific tier (1, 2, 3, or 4)
|
|
- `--map <name>`: Load specific map by name
|
|
- No options: Load Tier 1 (summary + quick-queries)
|
|
|
|
## Tier Levels
|
|
|
|
**Tier 1** (Always loaded, ~3KB):
|
|
- `summary.json` - Project overview and statistics
|
|
- `quick-queries.json` - Pre-computed answers to common questions
|
|
|
|
**Tier 2** (On demand, ~10KB):
|
|
- `tree.json` - Directory structure
|
|
- `existence-proofs.json` - File manifests and negative space
|
|
|
|
**Tier 3** (When needed, ~60KB):
|
|
- `metadata.json` - Comprehensive file metadata
|
|
- `content-summaries.json` - Exports, imports, entities
|
|
- `indices.json` - Navigation indices by type/role/size/recency
|
|
|
|
**Tier 4** (Deep analysis, ~10KB):
|
|
- `dependencies-forward.json` - Import graphs
|
|
- `dependencies-reverse.json` - Who imports what
|
|
- `relationships.json` - Dependency chains
|
|
- `issues.json` - Broken imports, circular deps, unused files
|
|
|
|
## Implementation
|
|
|
|
### Step 1: Check if Maps Exist
|
|
|
|
First, verify maps exist for current project:
|
|
|
|
```bash
|
|
cd {working_directory}
|
|
node ${CLAUDE_PLUGIN_ROOT}/cli/lib/map-loader.js . --staleness-only
|
|
```
|
|
|
|
If no maps exist (exit code 1), show error:
|
|
```
|
|
❌ No project maps found
|
|
|
|
Generate maps first:
|
|
/project-maps-generate
|
|
```
|
|
|
|
### Step 2: Parse Arguments and Determine Load Mode
|
|
|
|
Parse command arguments:
|
|
|
|
```javascript
|
|
const args = process.argv.slice(2);
|
|
let loadMode = 'tier';
|
|
let tierLevel = 1;
|
|
let mapName = null;
|
|
|
|
if (args.includes('--tier')) {
|
|
const tierIndex = args.indexOf('--tier');
|
|
tierLevel = parseInt(args[tierIndex + 1]) || 1;
|
|
loadMode = 'tier';
|
|
}
|
|
|
|
if (args.includes('--map')) {
|
|
const mapIndex = args.indexOf('--map');
|
|
mapName = args[mapIndex + 1];
|
|
loadMode = 'single';
|
|
}
|
|
```
|
|
|
|
### Step 3: Load Maps
|
|
|
|
**For Tier Loading:**
|
|
|
|
```bash
|
|
node ${CLAUDE_PLUGIN_ROOT}/cli/lib/map-loader.js . --tier {tier_level}
|
|
```
|
|
|
|
**For Single Map Loading:**
|
|
|
|
```bash
|
|
node ${CLAUDE_PLUGIN_ROOT}/cli/lib/map-loader.js . {map_name}
|
|
```
|
|
|
|
The loader will:
|
|
1. Decompress maps automatically
|
|
2. Check staleness and show warnings
|
|
3. Return the map data
|
|
|
|
### Step 4: Display Results
|
|
|
|
**Tier 1 Display (Summary):**
|
|
|
|
```
|
|
✓ Tier 1 maps loaded
|
|
|
|
Project Overview:
|
|
Name: {project_name}
|
|
Path: {project_path}
|
|
Files: {total_files}
|
|
Size: {total_size}
|
|
Primary languages: {languages}
|
|
|
|
Framework: {framework_name} ({framework_type})
|
|
|
|
Quick Answers:
|
|
• Entry points: {entry_points}
|
|
• Test location: {test_location}
|
|
• Largest files: {largest_files}
|
|
• Recently modified: {recent_files}
|
|
|
|
Staleness: {staleness_score}/100 ({staleness_level})
|
|
|
|
Next steps:
|
|
• Load more detail: /project-maps-load --tier 2
|
|
• Query specific info: /project-maps-query
|
|
• Refresh maps: /project-maps-refresh
|
|
```
|
|
|
|
**Tier 2 Display (Structure):**
|
|
|
|
```
|
|
✓ Tier 2 maps loaded
|
|
|
|
Directory Structure:
|
|
{tree_visualization}
|
|
|
|
Top-level directories:
|
|
• src/ ({file_count} files)
|
|
• tests/ ({file_count} files)
|
|
• config/ ({file_count} files)
|
|
|
|
File Existence:
|
|
✓ package.json
|
|
✓ tsconfig.json
|
|
✓ .gitignore
|
|
✗ jest.config.js (missing)
|
|
✗ .env.example (missing)
|
|
```
|
|
|
|
**Tier 3 Display (Detailed Metadata):**
|
|
|
|
```
|
|
✓ Tier 3 maps loaded
|
|
|
|
Detailed File Metadata: {total_files} files
|
|
|
|
By Type:
|
|
• TypeScript: {ts_count} files ({ts_size})
|
|
• JavaScript: {js_count} files ({js_size})
|
|
• JSON: {json_count} files ({json_size})
|
|
|
|
By Role:
|
|
• Source: {source_count} files
|
|
• Tests: {test_count} files
|
|
• Config: {config_count} files
|
|
|
|
Content Summaries:
|
|
Top exports:
|
|
• {file}: {exports}
|
|
• {file}: {exports}
|
|
|
|
Indices loaded:
|
|
• By type: {type_count} types
|
|
• By role: {role_count} roles
|
|
• By size: {size_buckets} buckets
|
|
• By recency: Last {recent_days} days
|
|
```
|
|
|
|
**Tier 4 Display (Dependencies):**
|
|
|
|
```
|
|
✓ Tier 4 maps loaded
|
|
|
|
Dependency Analysis:
|
|
|
|
Forward Dependencies:
|
|
• {file} imports from {import_count} sources
|
|
• {file} imports from {import_count} sources
|
|
|
|
Reverse Dependencies (Most imported):
|
|
1. {file} - imported by {count} files
|
|
2. {file} - imported by {count} files
|
|
3. {file} - imported by {count} files
|
|
|
|
Issues Detected:
|
|
⚠️ Circular dependencies: {circular_count}
|
|
⚠️ Broken imports: {broken_count}
|
|
⚠️ Unused files: {unused_count}
|
|
|
|
Relationship Metrics:
|
|
• Max dependency depth: {max_depth}
|
|
• Average dependencies per file: {avg_deps}
|
|
• Tightly coupled modules: {coupled_count}
|
|
```
|
|
|
|
**Single Map Display:**
|
|
|
|
Show the specific map data in formatted JSON:
|
|
|
|
```
|
|
✓ Map loaded: {map_name}
|
|
|
|
{formatted_json_output}
|
|
|
|
Staleness: {score}/100
|
|
Size: {compressed_size} compressed ({original_size} original, {ratio}% compression)
|
|
```
|
|
|
|
### Step 5: Staleness Warning
|
|
|
|
If staleness score >= 30, show warning (automatically done by loader):
|
|
|
|
```
|
|
⚠️ Maps may be outdated
|
|
Staleness: {score}/100 - {recommendation}
|
|
Consider running: /project-maps-refresh --incremental
|
|
```
|
|
|
|
## Error Handling
|
|
|
|
**Maps not found:**
|
|
```
|
|
❌ No project maps found
|
|
|
|
Generate maps first:
|
|
/project-maps-generate
|
|
```
|
|
|
|
**Invalid tier:**
|
|
```
|
|
❌ Invalid tier level: {tier}
|
|
|
|
Valid tiers: 1, 2, 3, or 4
|
|
```
|
|
|
|
**Map not found:**
|
|
```
|
|
❌ Map not found: {map_name}
|
|
|
|
Available maps:
|
|
• summary
|
|
• tree
|
|
• metadata
|
|
• content-summaries
|
|
• indices
|
|
• existence-proofs
|
|
• quick-queries
|
|
• dependencies-forward
|
|
• dependencies-reverse
|
|
• relationships
|
|
• issues
|
|
```
|
|
|
|
**Load failed:**
|
|
```
|
|
❌ Failed to load maps: {error_message}
|
|
|
|
Try:
|
|
1. Regenerate maps: /project-maps-generate
|
|
2. Check file permissions
|
|
3. Verify maps directory exists
|
|
```
|
|
|
|
## Performance Notes
|
|
|
|
- Tier 1: Instant load (~3KB)
|
|
- Tier 2: Very fast (~10KB)
|
|
- Tier 3: Fast (~60KB)
|
|
- Tier 4: Fast (~10KB)
|
|
- Single map: Depends on map size
|
|
- All decompression happens automatically
|
|
|
|
## Examples
|
|
|
|
```bash
|
|
# Load Tier 1 (default)
|
|
/project-maps-load
|
|
|
|
# Load Tier 2 (directory structure)
|
|
/project-maps-load --tier 2
|
|
|
|
# Load Tier 3 (detailed metadata)
|
|
/project-maps-load --tier 3
|
|
|
|
# Load Tier 4 (dependencies)
|
|
/project-maps-load --tier 4
|
|
|
|
# Load specific map
|
|
/project-maps-load --map summary
|
|
/project-maps-load --map dependencies-forward
|
|
```
|