mirror of
https://github.com/catlog22/Claude-Code-Workflow.git
synced 2026-02-05 01:50:27 +08:00
- Implemented commands routes for listing, enabling, and disabling commands. - Created commands manager view with accordion groups for better organization. - Added loading states and confirmation dialogs for enabling/disabling commands. - Enhanced error handling and user feedback for command operations. - Introduced CSS styles for commands manager UI components. - Updated navigation to include commands manager link. - Refactored existing code for better maintainability and clarity.
442 lines
12 KiB
Markdown
442 lines
12 KiB
Markdown
---
|
|
name: cli-init
|
|
description: Generate .gemini/ and .qwen/ config directories with settings.json and ignore files based on workspace technology detection
|
|
argument-hint: "[--tool gemini|qwen|all] [--output path] [--preview]"
|
|
allowed-tools: Bash(*), Read(*), Write(*), Glob(*)
|
|
group: cli
|
|
---
|
|
|
|
# CLI Initialization Command (/cli:cli-init)
|
|
|
|
## Overview
|
|
Initializes CLI tool configurations for the workspace by:
|
|
1. Analyzing current workspace using `get_modules_by_depth.sh` to identify technology stacks
|
|
2. Generating ignore files (`.geminiignore` and `.qwenignore`) with filtering rules optimized for detected technologies
|
|
3. Creating configuration directories (`.gemini/` and `.qwen/`) with settings.json files
|
|
|
|
**Supported Tools**: gemini, qwen, all (default: all)
|
|
|
|
## Core Functionality
|
|
|
|
### Configuration Generation
|
|
1. **Workspace Analysis**: Runs `get_modules_by_depth.sh` to analyze project structure
|
|
2. **Technology Stack Detection**: Identifies tech stacks based on file extensions, directories, and configuration files
|
|
3. **Config Creation**: Generates tool-specific configuration directories and settings files
|
|
4. **Ignore Rules Generation**: Creates ignore files with filtering patterns for detected technologies
|
|
|
|
### Generated Files
|
|
|
|
#### Configuration Directories
|
|
Creates tool-specific configuration directories:
|
|
|
|
**For Gemini** (`.gemini/`):
|
|
- `.gemini/settings.json`:
|
|
```json
|
|
{
|
|
"contextfilename": ["CLAUDE.md","GEMINI.md"]
|
|
}
|
|
```
|
|
|
|
**For Qwen** (`.qwen/`):
|
|
- `.qwen/settings.json`:
|
|
```json
|
|
{
|
|
"contextfilename": ["CLAUDE.md","QWEN.md"]
|
|
}
|
|
```
|
|
|
|
#### Ignore Files
|
|
Uses gitignore syntax to filter files from CLI tool analysis:
|
|
- `.geminiignore` - For Gemini CLI
|
|
- `.qwenignore` - For Qwen CLI
|
|
|
|
Both files have identical content based on detected technologies.
|
|
|
|
### Supported Technology Stacks
|
|
|
|
#### Frontend Technologies
|
|
- **React/Next.js**: Ignores build artifacts, .next/, node_modules
|
|
- **Vue/Nuxt**: Ignores .nuxt/, dist/, .cache/
|
|
- **Angular**: Ignores dist/, .angular/, node_modules
|
|
- **Webpack/Vite**: Ignores build outputs, cache directories
|
|
|
|
#### Backend Technologies
|
|
- **Node.js**: Ignores node_modules, package-lock.json, npm-debug.log
|
|
- **Python**: Ignores __pycache__, .venv, *.pyc, .pytest_cache
|
|
- **Java**: Ignores target/, .gradle/, *.class, .mvn/
|
|
- **Go**: Ignores vendor/, *.exe, go.sum (when appropriate)
|
|
- **C#/.NET**: Ignores bin/, obj/, *.dll, *.pdb
|
|
|
|
#### Database & Infrastructure
|
|
- **Docker**: Ignores .dockerignore, docker-compose.override.yml
|
|
- **Kubernetes**: Ignores *.secret.yaml, helm charts temp files
|
|
- **Database**: Ignores *.db, *.sqlite, database dumps
|
|
|
|
### Generated Rules Structure
|
|
|
|
#### Base Rules (Always Included)
|
|
```
|
|
# Version Control
|
|
.git/
|
|
.svn/
|
|
.hg/
|
|
|
|
# OS Files
|
|
.DS_Store
|
|
Thumbs.db
|
|
*.tmp
|
|
*.swp
|
|
|
|
# IDE Files
|
|
.vscode/
|
|
.idea/
|
|
.vs/
|
|
|
|
# Logs
|
|
*.log
|
|
logs/
|
|
```
|
|
|
|
#### Technology-Specific Rules
|
|
Rules are added based on detected technologies:
|
|
|
|
**Node.js Projects** (package.json detected):
|
|
```
|
|
# Node.js
|
|
node_modules/
|
|
npm-debug.log*
|
|
.npm/
|
|
.yarn/
|
|
package-lock.json
|
|
yarn.lock
|
|
.pnpm-store/
|
|
```
|
|
|
|
**Python Projects** (requirements.txt, setup.py, pyproject.toml detected):
|
|
```
|
|
# Python
|
|
__pycache__/
|
|
*.py[cod]
|
|
.venv/
|
|
venv/
|
|
.pytest_cache/
|
|
.coverage
|
|
htmlcov/
|
|
```
|
|
|
|
**Java Projects** (pom.xml, build.gradle detected):
|
|
```
|
|
# Java
|
|
target/
|
|
.gradle/
|
|
*.class
|
|
*.jar
|
|
*.war
|
|
.mvn/
|
|
```
|
|
|
|
## Command Options
|
|
|
|
### Tool Selection
|
|
|
|
**Initialize All Tools (default)**:
|
|
```bash
|
|
/cli:cli-init
|
|
```
|
|
- Creates `.gemini/`, `.qwen/` directories with settings.json
|
|
- Creates `.geminiignore` and `.qwenignore` files
|
|
- Sets contextfilename to "CLAUDE.md" for both
|
|
|
|
**Initialize Gemini Only**:
|
|
```bash
|
|
/cli:cli-init --tool gemini
|
|
```
|
|
- Creates only `.gemini/` directory and `.geminiignore` file
|
|
|
|
**Initialize Qwen Only**:
|
|
```bash
|
|
/cli:cli-init --tool qwen
|
|
```
|
|
- Creates only `.qwen/` directory and `.qwenignore` file
|
|
|
|
### Preview Mode
|
|
```bash
|
|
/cli:cli-init --preview
|
|
```
|
|
- Shows what would be generated without creating files
|
|
- Displays detected technologies, configuration, and ignore rules
|
|
|
|
### Custom Output Path
|
|
```bash
|
|
/cli:cli-init --output=.config/
|
|
```
|
|
- Generates files in specified directory
|
|
- Creates directories if they don't exist
|
|
|
|
### Combined Options
|
|
```bash
|
|
/cli:cli-init --tool qwen --preview
|
|
/cli:cli-init --tool all --output=.config/
|
|
```
|
|
|
|
## EXECUTION INSTRUCTIONS - START HERE
|
|
|
|
**When this command is triggered, follow these exact steps:**
|
|
|
|
### Step 1: Parse Tool Selection
|
|
```bash
|
|
# Extract --tool flag (default: all)
|
|
# Options: gemini, qwen, all
|
|
```
|
|
|
|
### Step 2: Workspace Analysis (MANDATORY FIRST)
|
|
```bash
|
|
# Analyze workspace structure
|
|
bash(ccw tool exec get_modules_by_depth '{"format":"json"}')
|
|
```
|
|
|
|
### Step 3: Technology Detection
|
|
```bash
|
|
# Check for common tech stack indicators
|
|
bash(find . -name "package.json" -not -path "*/node_modules/*" | head -1)
|
|
bash(find . -name "requirements.txt" -o -name "setup.py" -o -name "pyproject.toml" | head -1)
|
|
bash(find . -name "pom.xml" -o -name "build.gradle" | head -1)
|
|
bash(find . -name "Dockerfile" | head -1)
|
|
```
|
|
|
|
### Step 4: Generate Configuration Files
|
|
|
|
**For Gemini** (if --tool is gemini or all):
|
|
```bash
|
|
# Create .gemini/ directory and settings.json
|
|
mkdir -p .gemini
|
|
Write({file_path: '.gemini/settings.json', content: '{"contextfilename": "CLAUDE.md"}'})
|
|
|
|
# Create .geminiignore file with detected technology rules
|
|
# Backup existing files if present
|
|
```
|
|
|
|
**For Qwen** (if --tool is qwen or all):
|
|
```bash
|
|
# Create .qwen/ directory and settings.json
|
|
mkdir -p .qwen
|
|
Write({file_path: '.qwen/settings.json', content: '{"contextfilename": "CLAUDE.md"}'})
|
|
|
|
# Create .qwenignore file with detected technology rules
|
|
# Backup existing files if present
|
|
```
|
|
|
|
### Step 5: Validation
|
|
```bash
|
|
# Verify generated files are valid
|
|
bash(ls -la .gemini* .qwen* 2>/dev/null || echo "Configuration files created")
|
|
```
|
|
|
|
## Implementation Process (Technical Details)
|
|
|
|
### Phase 1: Tool Selection
|
|
1. Parse `--tool` flag from command arguments
|
|
2. Determine which configurations to generate:
|
|
- `gemini`: Generate .gemini/ and .geminiignore only
|
|
- `qwen`: Generate .qwen/ and .qwenignore only
|
|
- `all` (default): Generate both sets of files
|
|
|
|
### Phase 2: Workspace Analysis
|
|
1. Execute `get_modules_by_depth.sh json` to get structured project data
|
|
2. Parse JSON output to identify directories and files
|
|
3. Scan for technology indicators:
|
|
- Configuration files (package.json, requirements.txt, etc.)
|
|
- Directory patterns (src/, tests/, etc.)
|
|
- File extensions (.js, .py, .java, etc.)
|
|
4. Detect project name from directory name or package.json
|
|
|
|
### Phase 3: Technology Detection
|
|
```bash
|
|
# Technology detection logic
|
|
detect_nodejs() {
|
|
[ -f "package.json" ] || find . -name "package.json" -not -path "*/node_modules/*" | head -1
|
|
}
|
|
|
|
detect_python() {
|
|
[ -f "requirements.txt" ] || [ -f "setup.py" ] || [ -f "pyproject.toml" ] || \
|
|
find . -name "*.py" -not -path "*/__pycache__/*" | head -1
|
|
}
|
|
|
|
detect_java() {
|
|
[ -f "pom.xml" ] || [ -f "build.gradle" ] || \
|
|
find . -name "*.java" | head -1
|
|
}
|
|
```
|
|
|
|
### Phase 4: Configuration Generation
|
|
**For each selected tool**, create:
|
|
|
|
1. **Config Directory**:
|
|
- Create `.gemini/` or `.qwen/` directory if it doesn't exist
|
|
- Generate `settings.json` with contextfilename setting
|
|
- Set contextfilename to "CLAUDE.md" by default
|
|
|
|
2. **Settings.json Format** (identical for both tools):
|
|
```json
|
|
{
|
|
"contextfilename": "CLAUDE.md"
|
|
}
|
|
```
|
|
|
|
### Phase 5: Ignore Rules Generation
|
|
1. Start with base rules (always included)
|
|
2. Add technology-specific rules based on detection
|
|
3. Add workspace-specific patterns if found
|
|
4. Sort and deduplicate rules
|
|
5. Generate identical content for both `.geminiignore` and `.qwenignore`
|
|
|
|
### Phase 6: File Creation
|
|
1. **Generate config directories**: Create `.gemini/` and/or `.qwen/` directories with settings.json
|
|
2. **Generate ignore files**: Create organized ignore files with sections
|
|
3. **Create backups**: Backup existing files if present
|
|
4. **Validate**: Check generated files are valid
|
|
|
|
## Generated File Format
|
|
|
|
### Configuration Files
|
|
```json
|
|
// .gemini/settings.json or .qwen/settings.json
|
|
{
|
|
"contextfilename": "CLAUDE.md"
|
|
}
|
|
```
|
|
|
|
### Ignore Files
|
|
```
|
|
# .geminiignore / .qwenignore
|
|
# Generated by Claude Code /cli:cli-init command
|
|
# Creation date: 2024-01-15 10:30:00
|
|
# Detected technologies: Node.js, Python, Docker
|
|
#
|
|
# This file uses gitignore syntax to filter files for CLI tool analysis
|
|
# Edit this file to customize filtering rules for your project
|
|
|
|
# ============================================================================
|
|
# Base Rules (Always Applied)
|
|
# ============================================================================
|
|
|
|
# Version Control
|
|
.git/
|
|
.svn/
|
|
.hg/
|
|
|
|
# ============================================================================
|
|
# Node.js (Detected: package.json found)
|
|
# ============================================================================
|
|
|
|
node_modules/
|
|
npm-debug.log*
|
|
.npm/
|
|
yarn-error.log
|
|
package-lock.json
|
|
|
|
# ============================================================================
|
|
# Python (Detected: requirements.txt, *.py files found)
|
|
# ============================================================================
|
|
|
|
__pycache__/
|
|
*.py[cod]
|
|
.venv/
|
|
.pytest_cache/
|
|
.coverage
|
|
|
|
# ============================================================================
|
|
# Docker (Detected: Dockerfile found)
|
|
# ============================================================================
|
|
|
|
.dockerignore
|
|
docker-compose.override.yml
|
|
|
|
# ============================================================================
|
|
# Custom Rules (Add your project-specific rules below)
|
|
# ============================================================================
|
|
|
|
```
|
|
|
|
## Error Handling
|
|
|
|
### Missing Dependencies
|
|
- If `get_modules_by_depth.sh` not found, show error with path to script
|
|
- Gracefully handle cases where script fails
|
|
|
|
### Write Permissions
|
|
- Check write permissions before attempting file creation
|
|
- Show clear error message if cannot write to target location
|
|
|
|
### Backup Existing Files
|
|
- If `.gemini/` directory exists, create backup as `.gemini.backup/`
|
|
- If `.qwen/` directory exists, create backup as `.qwen.backup/`
|
|
- If `.geminiignore` exists, create backup as `.geminiignore.backup`
|
|
- If `.qwenignore` exists, create backup as `.qwenignore.backup`
|
|
- Include timestamp in backup filename
|
|
|
|
## Integration Points
|
|
|
|
### Workflow Commands
|
|
- **After `/cli:plan`**: Suggest running cli-init for better analysis
|
|
- **Before analysis**: Recommend updating ignore patterns for cleaner results
|
|
|
|
### CLI Tool Integration
|
|
- Automatically update when new technologies detected
|
|
- Integrate with `intelligent-tools-strategy.md` recommendations
|
|
|
|
## Usage Examples
|
|
|
|
### Basic Project Setup
|
|
```bash
|
|
# Initialize all CLI tools (Gemini + Qwen)
|
|
/cli:cli-init
|
|
|
|
# Initialize only Gemini
|
|
/cli:cli-init --tool gemini
|
|
|
|
# Initialize only Qwen
|
|
/cli:cli-init --tool qwen
|
|
|
|
# Preview what would be generated
|
|
/cli:cli-init --preview
|
|
|
|
# Generate in subdirectory
|
|
/cli:cli-init --output=.config/
|
|
```
|
|
|
|
### Technology Migration
|
|
```bash
|
|
# After adding new tech stack (e.g., Docker)
|
|
/cli:cli-init # Regenerates all config and ignore files with new rules
|
|
|
|
# Check what changed
|
|
/cli:cli-init --preview # Compare with existing configuration
|
|
|
|
# Update only Qwen configuration
|
|
/cli:cli-init --tool qwen
|
|
```
|
|
|
|
### Tool-Specific Initialization
|
|
```bash
|
|
# Setup for Gemini-only workflow
|
|
/cli:cli-init --tool gemini
|
|
|
|
# Setup for Qwen-only workflow
|
|
/cli:cli-init --tool qwen
|
|
|
|
# Setup both with preview
|
|
/cli:cli-init --tool all --preview
|
|
```
|
|
|
|
|
|
## Tool Selection Guide
|
|
|
|
| Scenario | Command | Result |
|
|
|----------|---------|--------|
|
|
| **New project, using both tools** | `/cli:cli-init` | Creates .gemini/, .qwen/, .geminiignore, .qwenignore |
|
|
| **Gemini-only workflow** | `/cli:cli-init --tool gemini` | Creates .gemini/ and .geminiignore only |
|
|
| **Qwen-only workflow** | `/cli:cli-init --tool qwen` | Creates .qwen/ and .qwenignore only |
|
|
| **Preview before commit** | `/cli:cli-init --preview` | Shows what would be generated |
|
|
| **Update configurations** | `/cli:cli-init` | Regenerates all files with backups |
|