feat: Change installation directory to ~/.claude/commands/sc/

- Updated default installation path from ~/.claude/commands/ to ~/.claude/commands/sc/
- This maintains the /sc: namespace through directory organization
- Updated install_commands() default path in install_commands.py
- Updated CLI --target default in main.py to ~/.claude/commands/sc
- Updated list_installed_commands() to look in sc subdirectory
- All tests passing (70 passed, 1 skipped)
- Verified real installation: commands now install to ~/.claude/commands/sc/

Commands retain their /sc: prefix through name field in frontmatter:
- /sc:research - Deep web research
- /sc:index-repo - Repository indexing
- /sc:agent - Specialized AI agents
- /sc:recommend - Command recommendations
- /sc - Main help/dispatcher

Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
mithun50
2025-11-11 18:37:03 +01:00
parent 8c0559ca9a
commit ad80f57f63
8 changed files with 325 additions and 14 deletions

View File

@@ -125,10 +125,11 @@ superclaude doctor
```
After installation, restart Claude Code to use the commands:
- `/research` - Deep web research with parallel search
- `/index-repo` - Repository indexing for context optimization
- `/agent` - Specialized AI agents
- `/recommend` - Command recommendations
- `/sc:research` - Deep web research with parallel search
- `/sc:index-repo` - Repository indexing for context optimization
- `/sc:agent` - Specialized AI agents
- `/sc:recommend` - Command recommendations
- `/sc` - Show all available SuperClaude commands
**Option 2: Direct Installation from Git**
```bash

View File

@@ -0,0 +1,48 @@
{"test_name": "test_feature", "error_type": "AssertionError", "error_message": "Expected 5, got 3", "traceback": "File test.py, line 10...", "timestamp": "2025-11-11T18:05:14.945830"}
{"test_name": "test_database_connection", "error_type": "ConnectionError", "error_message": "Could not connect to database", "solution": "Ensure database is running and credentials are correct", "timestamp": "2025-11-11T18:05:14.947103"}
{"error_type": "ImportError", "error_message": "No module named 'pytest'", "solution": "Install pytest: pip install pytest", "timestamp": "2025-11-11T18:05:14.948186"}
{"error_type": "TypeError", "error_message": "expected str, got int", "solution": "Convert int to str using str()", "timestamp": "2025-11-11T18:05:14.949488"}
{"error_type": "TypeError", "error_message": "expected int, got str", "solution": "Convert str to int using int()", "timestamp": "2025-11-11T18:05:14.949687"}
{"error_type": "FileNotFoundError", "error_message": "config.json not found", "solution": "Create config.json in project root", "session": "session_1", "timestamp": "2025-11-11T18:05:14.953355"}
{"test_name": "test_reflexion_marker_integration", "error_type": "IntegrationTestError", "error_message": "Testing reflexion integration", "timestamp": "2025-11-11T18:05:14.955135"}
{"test_name": "test_reflexion_with_real_exception", "error_type": "ZeroDivisionError", "error_message": "division by zero", "traceback": "simulated traceback", "solution": "Check denominator is not zero before division", "timestamp": "2025-11-11T18:05:14.956625"}
{"test_name": "test_feature", "error_type": "AssertionError", "error_message": "Expected 5, got 3", "traceback": "File test.py, line 10...", "timestamp": "2025-11-11T18:05:52.563775"}
{"test_name": "test_database_connection", "error_type": "ConnectionError", "error_message": "Could not connect to database", "solution": "Ensure database is running and credentials are correct", "timestamp": "2025-11-11T18:05:52.564932"}
{"error_type": "ImportError", "error_message": "No module named 'pytest'", "solution": "Install pytest: pip install pytest", "timestamp": "2025-11-11T18:05:52.566243"}
{"error_type": "TypeError", "error_message": "expected str, got int", "solution": "Convert int to str using str()", "timestamp": "2025-11-11T18:05:52.567884"}
{"error_type": "TypeError", "error_message": "expected int, got str", "solution": "Convert str to int using int()", "timestamp": "2025-11-11T18:05:52.568207"}
{"error_type": "FileNotFoundError", "error_message": "config.json not found", "solution": "Create config.json in project root", "session": "session_1", "timestamp": "2025-11-11T18:05:52.572514"}
{"test_name": "test_reflexion_marker_integration", "error_type": "IntegrationTestError", "error_message": "Testing reflexion integration", "timestamp": "2025-11-11T18:05:52.574152"}
{"test_name": "test_reflexion_with_real_exception", "error_type": "ZeroDivisionError", "error_message": "division by zero", "traceback": "simulated traceback", "solution": "Check denominator is not zero before division", "timestamp": "2025-11-11T18:05:52.575383"}
{"test_name": "test_feature", "error_type": "AssertionError", "error_message": "Expected 5, got 3", "traceback": "File test.py, line 10...", "timestamp": "2025-11-11T18:07:29.547542"}
{"test_name": "test_database_connection", "error_type": "ConnectionError", "error_message": "Could not connect to database", "solution": "Ensure database is running and credentials are correct", "timestamp": "2025-11-11T18:07:29.548522"}
{"error_type": "ImportError", "error_message": "No module named 'pytest'", "solution": "Install pytest: pip install pytest", "timestamp": "2025-11-11T18:07:29.549669"}
{"error_type": "TypeError", "error_message": "expected str, got int", "solution": "Convert int to str using str()", "timestamp": "2025-11-11T18:07:29.551484"}
{"error_type": "TypeError", "error_message": "expected int, got str", "solution": "Convert str to int using int()", "timestamp": "2025-11-11T18:07:29.551745"}
{"error_type": "FileNotFoundError", "error_message": "config.json not found", "solution": "Create config.json in project root", "session": "session_1", "timestamp": "2025-11-11T18:07:29.555660"}
{"test_name": "test_reflexion_marker_integration", "error_type": "IntegrationTestError", "error_message": "Testing reflexion integration", "timestamp": "2025-11-11T18:07:29.557344"}
{"test_name": "test_reflexion_with_real_exception", "error_type": "ZeroDivisionError", "error_message": "division by zero", "traceback": "simulated traceback", "solution": "Check denominator is not zero before division", "timestamp": "2025-11-11T18:07:29.558510"}
{"test_name": "test_feature", "error_type": "AssertionError", "error_message": "Expected 5, got 3", "traceback": "File test.py, line 10...", "timestamp": "2025-11-11T18:08:46.653324"}
{"test_name": "test_database_connection", "error_type": "ConnectionError", "error_message": "Could not connect to database", "solution": "Ensure database is running and credentials are correct", "timestamp": "2025-11-11T18:08:46.654315"}
{"error_type": "ImportError", "error_message": "No module named 'pytest'", "solution": "Install pytest: pip install pytest", "timestamp": "2025-11-11T18:08:46.655438"}
{"error_type": "TypeError", "error_message": "expected str, got int", "solution": "Convert int to str using str()", "timestamp": "2025-11-11T18:08:46.657037"}
{"error_type": "TypeError", "error_message": "expected int, got str", "solution": "Convert str to int using int()", "timestamp": "2025-11-11T18:08:46.674014"}
{"error_type": "FileNotFoundError", "error_message": "config.json not found", "solution": "Create config.json in project root", "session": "session_1", "timestamp": "2025-11-11T18:08:46.692286"}
{"test_name": "test_reflexion_marker_integration", "error_type": "IntegrationTestError", "error_message": "Testing reflexion integration", "timestamp": "2025-11-11T18:08:46.694160"}
{"test_name": "test_reflexion_with_real_exception", "error_type": "ZeroDivisionError", "error_message": "division by zero", "traceback": "simulated traceback", "solution": "Check denominator is not zero before division", "timestamp": "2025-11-11T18:08:46.697041"}
{"test_name": "test_feature", "error_type": "AssertionError", "error_message": "Expected 5, got 3", "traceback": "File test.py, line 10...", "timestamp": "2025-11-11T18:14:31.164433"}
{"test_name": "test_database_connection", "error_type": "ConnectionError", "error_message": "Could not connect to database", "solution": "Ensure database is running and credentials are correct", "timestamp": "2025-11-11T18:14:31.165513"}
{"error_type": "ImportError", "error_message": "No module named 'pytest'", "solution": "Install pytest: pip install pytest", "timestamp": "2025-11-11T18:14:31.166705"}
{"error_type": "TypeError", "error_message": "expected str, got int", "solution": "Convert int to str using str()", "timestamp": "2025-11-11T18:14:31.168467"}
{"error_type": "TypeError", "error_message": "expected int, got str", "solution": "Convert str to int using int()", "timestamp": "2025-11-11T18:14:31.168682"}
{"error_type": "FileNotFoundError", "error_message": "config.json not found", "solution": "Create config.json in project root", "session": "session_1", "timestamp": "2025-11-11T18:14:31.173189"}
{"test_name": "test_reflexion_marker_integration", "error_type": "IntegrationTestError", "error_message": "Testing reflexion integration", "timestamp": "2025-11-11T18:14:31.175044"}
{"test_name": "test_reflexion_with_real_exception", "error_type": "ZeroDivisionError", "error_message": "division by zero", "traceback": "simulated traceback", "solution": "Check denominator is not zero before division", "timestamp": "2025-11-11T18:14:31.176104"}
{"test_name": "test_feature", "error_type": "AssertionError", "error_message": "Expected 5, got 3", "traceback": "File test.py, line 10...", "timestamp": "2025-11-11T18:36:41.373001"}
{"test_name": "test_database_connection", "error_type": "ConnectionError", "error_message": "Could not connect to database", "solution": "Ensure database is running and credentials are correct", "timestamp": "2025-11-11T18:36:41.374057"}
{"error_type": "ImportError", "error_message": "No module named 'pytest'", "solution": "Install pytest: pip install pytest", "timestamp": "2025-11-11T18:36:41.375577"}
{"error_type": "TypeError", "error_message": "expected str, got int", "solution": "Convert int to str using str()", "timestamp": "2025-11-11T18:36:41.377470"}
{"error_type": "TypeError", "error_message": "expected int, got str", "solution": "Convert str to int using int()", "timestamp": "2025-11-11T18:36:41.377698"}
{"error_type": "FileNotFoundError", "error_message": "config.json not found", "solution": "Create config.json in project root", "session": "session_1", "timestamp": "2025-11-11T18:36:41.381639"}
{"test_name": "test_reflexion_marker_integration", "error_type": "IntegrationTestError", "error_message": "Testing reflexion integration", "timestamp": "2025-11-11T18:36:41.383655"}
{"test_name": "test_reflexion_with_real_exception", "error_type": "ZeroDivisionError", "error_message": "division by zero", "traceback": "simulated traceback", "solution": "Check denominator is not zero before division", "timestamp": "2025-11-11T18:36:41.385124"}

View File

@@ -0,0 +1,44 @@
# Mistake Record: test_database_connection
**Date**: 2025-11-11
**Error Type**: ConnectionError
---
## ❌ What Happened
Could not connect to database
```
No traceback
```
---
## 🔍 Root Cause
Not analyzed
---
## 🤔 Why Missed
Not analyzed
---
## ✅ Fix Applied
Ensure database is running and credentials are correct
---
## 🛡️ Prevention Checklist
Not documented
---
## 💡 Lesson Learned
Not documented

View File

@@ -0,0 +1,44 @@
# Mistake Record: test_reflexion_with_real_exception
**Date**: 2025-11-11
**Error Type**: ZeroDivisionError
---
## ❌ What Happened
division by zero
```
simulated traceback
```
---
## 🔍 Root Cause
Not analyzed
---
## 🤔 Why Missed
Not analyzed
---
## ✅ Fix Applied
Check denominator is not zero before division
---
## 🛡️ Prevention Checklist
Not documented
---
## 💡 Lesson Learned
Not documented

View File

@@ -0,0 +1,44 @@
# Mistake Record: unknown
**Date**: 2025-11-11
**Error Type**: FileNotFoundError
---
## ❌ What Happened
config.json not found
```
No traceback
```
---
## 🔍 Root Cause
Not analyzed
---
## 🤔 Why Missed
Not analyzed
---
## ✅ Fix Applied
Create config.json in project root
---
## 🛡️ Prevention Checklist
Not documented
---
## 💡 Lesson Learned
Not documented

View File

@@ -0,0 +1,130 @@
---
name: sc
description: SuperClaude command dispatcher - Use /sc [command] to access all SuperClaude features
---
# SuperClaude Command Dispatcher
🚀 **SuperClaude Framework** - Main command dispatcher
## Usage
All SuperClaude commands use the `/sc:` prefix:
```
/sc:command [args...]
```
## Available Commands
### Research & Analysis
```
/sc:research [query] - Deep web research with parallel search
```
### Repository Management
```
/sc:index-repo - Index repository for context optimization
```
### AI Agents
```
/sc:agent [type] - Launch specialized AI agents
```
### Recommendations
```
/sc:recommend [context] - Get command recommendations
```
### Help
```
/sc - Show this help (all available commands)
```
## Command Namespace
All commands are namespaced under `sc:` to keep them organized:
-`/sc:research query`
-`/sc:index-repo`
-`/sc:agent type`
-`/sc:recommend`
-`/sc` (help)
## Examples
### Research
```
/sc:research React 18 new features
/sc:research LLM agent architectures 2024
/sc:research Python async best practices
```
### Index Repository
```
/sc:index-repo
```
### Agent
```
/sc:agent deep-research
/sc:agent self-review
/sc:agent repo-index
```
### Recommendations
```
/sc:recommend
```
## Quick Reference
| Command | Description | Example |
|---------|-------------|---------|
| `/sc:research` | Deep web research | `/sc:research topic` |
| `/sc:index-repo` | Repository indexing | `/sc:index-repo` |
| `/sc:agent` | Specialized AI agents | `/sc:agent type` |
| `/sc:recommend` | Command suggestions | `/sc:recommend` |
| `/sc` | Show help | `/sc` |
## Features
- **Parallel Execution**: Research runs multiple searches in parallel
- **Evidence-Based**: All findings backed by sources
- **Context-Aware**: Uses repository context when available
- **Token Efficient**: Optimized for minimal token usage
## Help
For help on specific commands:
```
/sc:research --help
/sc:agent --help
```
Or use the main help command:
```
/sc
```
Check the documentation:
- PLANNING.md - Architecture and design
- TASK.md - Current tasks and priorities
- KNOWLEDGE.md - Tips and best practices
## Version
SuperClaude v4.1.6
- Python package: 0.4.0
- Pytest plugin included
- PM Agent patterns enabled
---
💡 **Tip**: All commands use the `/sc:` prefix - e.g., `/sc:research`, `/sc:agent`
🔧 **Installation**: Run `superclaude install` to install/update commands
📚 **Documentation**: https://github.com/SuperClaude-Org/SuperClaude_Framework
⚠️ **Important**: Restart Claude Code after installing commands to use them!

View File

@@ -1,7 +1,7 @@
"""
Command Installation
Installs SuperClaude slash commands to ~/.claude/commands/ directory.
Installs SuperClaude slash commands to ~/.claude/commands/sc/ directory.
"""
from pathlib import Path
@@ -17,15 +17,15 @@ def install_commands(
Install all SuperClaude commands to Claude Code
Args:
target_path: Target installation directory (default: ~/.claude/commands)
target_path: Target installation directory (default: ~/.claude/commands/sc)
force: Force reinstall if commands exist
Returns:
Tuple of (success: bool, message: str)
"""
# Default to ~/.claude/commands
# Default to ~/.claude/commands/sc to maintain /sc: namespace
if target_path is None:
target_path = Path.home() / ".claude" / "commands"
target_path = Path.home() / ".claude" / "commands" / "sc"
# Get command source directory
command_source = _get_commands_source()
@@ -145,12 +145,12 @@ def list_available_commands() -> List[str]:
def list_installed_commands() -> List[str]:
"""
List installed commands in ~/.claude/commands/
List installed commands in ~/.claude/commands/sc/
Returns:
List of installed command names
"""
commands_dir = Path.home() / ".claude" / "commands"
commands_dir = Path.home() / ".claude" / "commands" / "sc"
if not commands_dir.exists():
return []

View File

@@ -28,8 +28,8 @@ def main():
@main.command()
@click.option(
"--target",
default="~/.claude/commands",
help="Installation directory (default: ~/.claude/commands)",
default="~/.claude/commands/sc",
help="Installation directory (default: ~/.claude/commands/sc)",
)
@click.option(
"--force",
@@ -46,8 +46,8 @@ def install(target: str, force: bool, list_only: bool):
"""
Install SuperClaude commands to Claude Code
Installs all slash commands (/research, /index-repo, etc.) to your
~/.claude/commands directory so you can use them in Claude Code.
Installs all slash commands (/sc:research, /sc:index-repo, etc.) to your
~/.claude/commands/sc directory so you can use them in Claude Code.
Examples:
superclaude install