Files
gh-awudevelop-claude-plugin…/commands/project-maps-generate.md
2025-11-29 17:59:29 +08:00

213 lines
4.9 KiB
Markdown

# Project Maps Generate Command
Generate project context maps for the current project.
## Usage
```
/project-maps-generate [--path <project-path>]
```
## Options
- `--path <path>`: Project path to scan (defaults to current directory)
- No options: Generate maps for current working directory
## Implementation
### Step 1: Determine Project Path
Parse command arguments to determine project path:
```javascript
const args = process.argv.slice(2);
const pathIndex = args.indexOf('--path');
const projectPath = pathIndex >= 0 && args[pathIndex + 1]
? args[pathIndex + 1]
: process.cwd();
```
Default to current working directory if no path specified.
### Step 2: Check if Maps Already Exist
Check if maps have already been generated for this project:
```bash
cd {working_directory}
node ${CLAUDE_PLUGIN_ROOT}/cli/lib/map-loader.js {project_path} --staleness-only 2>&1
```
If maps exist (exit code 0), ask user if they want to regenerate:
```
⚠️ Maps already exist for this project
Existing maps:
Location: {maps_dir}
Last generated: {timestamp}
Staleness: {score}/100
Regenerate maps? This will overwrite existing maps.
• Yes, regenerate (will take ~10-30 seconds)
• No, use refresh instead (faster, preserves existing data)
```
If user chooses "No", suggest using refresh instead:
```
Tip: Use /project-maps-refresh for faster updates
```
### Step 3: Initialize and Scan Project
Show progress and start generation:
```
Generating project context maps...
Project: {project_path}
Project hash: {hash}
```
Run the map generator:
```bash
cd {working_directory}
node ${CLAUDE_PLUGIN_ROOT}/cli/lib/map-generator.js {project_path}
```
The map generator will:
1. Initialize configuration
2. Scan file system
3. Generate 11 map files (Phases 1-3)
4. Apply compression
5. Save to `~/.claude/project-maps/{project-hash}/`
### Step 4: Show Progress
The map generator outputs progress:
```
Scanning project...
Scanned 145 files in 127ms
Generating maps...
✓ summary.json (2.1 KB → 907 B, 56% compression)
✓ tree.json (3.2 KB → 1.4 KB, 56% compression)
✓ metadata.json (12.5 KB → 5.2 KB, 58% compression)
✓ content-summaries.json (1.1 KB → 465 B, 58% compression)
✓ indices.json (11.8 KB → 5.0 KB, 58% compression)
✓ existence-proofs.json (4.0 KB → 1.7 KB, 58% compression)
✓ quick-queries.json (6.4 KB → 2.7 KB, 58% compression)
✓ dependencies-forward.json (1.1 KB → 477 B, 57% compression)
✓ dependencies-reverse.json (1.1 KB → 445 B, 60% compression)
✓ relationships.json (1.5 KB → 630 B, 58% compression)
✓ issues.json (1.3 KB → 557 B, 57% compression)
```
### Step 5: Display Summary
After generation completes, show summary:
```
✓ Maps generated successfully!
Summary:
Files scanned: {file_count}
Maps created: 11
Storage location: {maps_dir}
Total size:
• Original: {original_size} KB
• Compressed: {compressed_size} KB
• Compression: {compression_ratio}%
Maps by tier:
• Tier 1 (Always loaded): summary.json, quick-queries.json
• Tier 2 (On demand): tree.json, existence-proofs.json
• Tier 3 (When needed): metadata.json, content-summaries.json, indices.json
• Tier 4 (Deep analysis): dependencies-*.json, relationships.json, issues.json
Next steps:
• Load maps: /project-maps-load
• Quick queries: /project-maps-query
• Refresh maps: /project-maps-refresh
```
### Step 6: Verify Generation
Verify all expected files were created:
```bash
ls -lh ~/.claude/project-maps/{project_hash}/*.json | wc -l
```
Expected: 11 files
If count != 11, show warning:
```
⚠️ Warning: Expected 11 map files but found {actual_count}
Some maps may have failed to generate.
```
## Error Handling
**Project path doesn't exist:**
```
❌ Error: Project path not found
Path: {project_path}
Please check the path and try again.
```
**Permission denied:**
```
❌ Error: Permission denied
Cannot write to: ~/.claude/project-maps/
Check directory permissions.
```
**Generation failed:**
```
❌ Map generation failed: {error_message}
Possible causes:
1. Insufficient disk space
2. Invalid project structure
3. File access permissions
Try:
• Check disk space
• Verify project directory is accessible
• Run with --verbose for more details
```
**No files found:**
```
⚠️ No files found in project
The project appears to be empty or all files are excluded.
Check your .gitignore or .projectmaprc configuration.
```
## Performance Notes
- Small projects (<100 files): ~5-10 seconds
- Medium projects (100-1000 files): ~10-30 seconds
- Large projects (1000+ files): ~30-60 seconds
- Generation happens once, subsequent updates use incremental refresh (much faster)
## Examples
```bash
# Generate maps for current directory
/project-maps-generate
# Generate maps for specific project
/project-maps-generate --path /path/to/project
# Generate with verbose output
/project-maps-generate --verbose
```