kazuki nakai 00706f0ea9
feat: comprehensive framework improvements (#447)
* refactor(docs): move core docs into framework/business/research (move-only)

- framework/: principles, rules, flags (思想・行動規範)
- business/: symbols, examples (ビジネス領域)
- research/: config (調査設定)
- All files renamed to lowercase for consistency

* docs: update references to new directory structure

- Update ~/.claude/CLAUDE.md with new paths
- Add migration notice in core/MOVED.md
- Remove pm.md.backup
- All @superclaude/ references now point to framework/business/research/

* fix(setup): update framework_docs to use new directory structure

- Add validate_prerequisites() override for multi-directory validation
- Add _get_source_dirs() for framework/business/research directories
- Override _discover_component_files() for multi-directory discovery
- Override get_files_to_install() for relative path handling
- Fix get_size_estimate() to use get_files_to_install()
- Fix uninstall/update/validate to use install_component_subdir

Fixes installation validation errors for new directory structure.

Tested: make dev installs successfully with new structure
  - framework/: flags.md, principles.md, rules.md
  - business/: examples.md, symbols.md
  - research/: config.md

* refactor(modes): update component references for docs restructure

* chore: remove redundant docs after PLANNING.md migration

Cleanup after Self-Improvement Loop implementation:

**Deleted (21 files, ~210KB)**:
- docs/Development/ - All content migrated to PLANNING.md & TASK.md
  * ARCHITECTURE.md (15KB) → PLANNING.md
  * TASKS.md (3.7KB) → TASK.md
  * ROADMAP.md (11KB) → TASK.md
  * PROJECT_STATUS.md (4.2KB) → outdated
  * 13 PM Agent research files → archived in KNOWLEDGE.md
- docs/PM_AGENT.md - Old implementation status
- docs/pm-agent-implementation-status.md - Duplicate
- docs/templates/ - Empty directory

**Retained (valuable documentation)**:
- docs/memory/ - Active session metrics & context
- docs/patterns/ - Reusable patterns
- docs/research/ - Research reports
- docs/user-guide*/ - User documentation (4 languages)
- docs/reference/ - Reference materials
- docs/getting-started/ - Quick start guides
- docs/agents/ - Agent-specific guides
- docs/testing/ - Test procedures

**Result**:
- Eliminated redundancy after Root Documents consolidation
- Preserved all valuable content in PLANNING.md, TASK.md, KNOWLEDGE.md
- Maintained user-facing documentation structure

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

Co-Authored-By: Claude <noreply@anthropic.com>

* refactor: relocate PM modules to commands/modules

- Move modules to superclaude/commands/modules/
- Organize command-specific modules under commands/

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

Co-Authored-By: Claude <noreply@anthropic.com>

* feat: add self-improvement loop with 4 root documents

Implements Self-Improvement Loop based on Cursor's proven patterns:

**New Root Documents**:
- PLANNING.md: Architecture, design principles, 10 absolute rules
- TASK.md: Current tasks with priority (🔴🟡🟢)
- KNOWLEDGE.md: Accumulated insights, best practices, failures
- README.md: Updated with developer documentation links

**Key Features**:
- Session Start Protocol: Read docs → Git status → Token budget → Ready
- Evidence-Based Development: No guessing, always verify
- Parallel Execution Default: Wave → Checkpoint → Wave pattern
- Mac Environment Protection: Docker-first, no host pollution
- Failure Pattern Learning: Past mistakes become prevention rules

**Cleanup**:
- Removed: docs/memory/checkpoint.json, current_plan.json (migrated to TASK.md)
- Enhanced: setup/components/commands.py (module discovery)

**Benefits**:
- LLM reads rules at session start → consistent quality
- Past failures documented → no repeats
- Progressive knowledge accumulation → continuous improvement
- 3.5x faster execution with parallel patterns

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

Co-Authored-By: Claude <noreply@anthropic.com>

* test: validate Self-Improvement Loop workflow

Tested complete cycle: Read docs → Extract rules → Execute task → Update docs

Test Results:
- Session Start Protocol:  All 6 steps successful
- Rule Extraction:  10/10 absolute rules identified from PLANNING.md
- Task Identification:  Next tasks identified from TASK.md
- Knowledge Application:  Failure patterns accessed from KNOWLEDGE.md
- Documentation Update:  TASK.md and KNOWLEDGE.md updated with completed work
- Confidence Score: 95% (exceeds 70% threshold)

Proved Self-Improvement Loop closes: Execute → Learn → Update → Improve

* refactor: responsibility-driven component architecture

Rename components to reflect their responsibilities:
- framework_docs.py → knowledge_base.py (KnowledgeBaseComponent)
- modes.py → behavior_modes.py (BehaviorModesComponent)
- agents.py → agent_personas.py (AgentPersonasComponent)
- commands.py → slash_commands.py (SlashCommandsComponent)
- mcp.py → mcp_integration.py (MCPIntegrationComponent)

Each component now clearly documents its responsibility:
- knowledge_base: Framework knowledge initialization
- behavior_modes: Execution mode definitions
- agent_personas: AI agent personality definitions
- slash_commands: CLI command registration
- mcp_integration: External tool integration

Benefits:
- Self-documenting architecture
- Clear responsibility boundaries
- Easy to navigate and extend
- Scalable for future hierarchical organization

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

Co-Authored-By: Claude <noreply@anthropic.com>

* docs: add project-specific CLAUDE.md with UV rules

- Document UV as required Python package manager
- Add common operations and integration examples
- Document project structure and component architecture
- Provide development workflow guidelines

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

Co-Authored-By: Claude <noreply@anthropic.com>

* fix: resolve installation failures after framework_docs rename

## Problems Fixed
1. **Syntax errors**: Duplicate docstrings in all component files (line 1)
2. **Dependency mismatch**: Stale framework_docs references after rename to knowledge_base

## Changes
- Fix docstring format in all component files (behavior_modes, agent_personas, slash_commands, mcp_integration)
- Update all dependency references: framework_docs → knowledge_base
- Update component registration calls in knowledge_base.py (5 locations)
- Update install.py files in both setup/ and superclaude/ (5 locations total)
- Fix documentation links in README-ja.md and README-zh.md

## Verification
 All components load successfully without syntax errors
 Dependency resolution works correctly
 Installation completes in 0.5s with all validations passing
 make dev succeeds

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

Co-Authored-By: Claude <noreply@anthropic.com>

* feat: add automated README translation workflow

## New Features
- **Auto-translation workflow** using GPT-Translate
- Automatically translates README.md to Chinese (ZH) and Japanese (JA)
- Triggers on README.md changes to master/main branches
- Cost-effective: ~¥90/month for typical usage

## Implementation Details
- Uses OpenAI GPT-4 for high-quality translations
- GitHub Actions integration with gpt-translate@v1.1.11
- Secure API key management via GitHub Secrets
- Automatic commit and PR creation on translation updates

## Files Added
- `.github/workflows/translation-sync.yml` - Auto-translation workflow
- `docs/Development/translation-workflow.md` - Setup guide and documentation

## Setup Required
Add `OPENAI_API_KEY` to GitHub repository secrets to enable auto-translation.

## Benefits
- 🤖 Automated translation on every README update
- 💰 Low cost (~$0.06 per translation)
- 🛡️ Secure API key storage
- 🔄 Consistent translation quality across languages

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

Co-Authored-By: Claude <noreply@anthropic.com>

* fix(mcp): update airis-mcp-gateway URL to correct organization

Fixes #440

## Problem
Code referenced non-existent `oraios/airis-mcp-gateway` repository,
causing MCP installation to fail completely.

## Root Cause
- Repository was moved to organization: `agiletec-inc/airis-mcp-gateway`
- Old reference `oraios/airis-mcp-gateway` no longer exists
- Users reported "not a python/uv module" error

## Changes
- Update install_command URL: oraios → agiletec-inc
- Update run_command URL: oraios → agiletec-inc
- Location: setup/components/mcp_integration.py lines 37-38

## Verification
 Correct URL now references active repository
 MCP installation will succeed with proper organization
 No other code references oraios/airis-mcp-gateway

## Related Issues
- Fixes #440 (Airis-mcp-gateway url has changed)
- Related to #442 (MCP update issues)

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

Co-Authored-By: Claude <noreply@anthropic.com>

* feat: replace cloud translation with local Neural CLI

## Changes

### Removed (OpenAI-dependent)
-  `.github/workflows/translation-sync.yml` - GPT-Translate workflow
-  `docs/Development/translation-workflow.md` - OpenAI setup docs

### Added (Local Ollama-based)
-  `Makefile`: New `make translate` target using Neural CLI
-  `docs/Development/translation-guide.md` - Neural CLI guide

## Benefits

**Before (GPT-Translate)**:
- 💰 Monthly cost: ~¥90 (OpenAI API)
- 🔑 Requires API key setup
- 🌐 Data sent to external API
- ⏱️ Network latency

**After (Neural CLI)**:
-  **$0 cost** - Fully local execution
-  **No API keys** - Zero setup friction
-  **Privacy** - No external data transfer
-  **Fast** - ~1-2 min per README
-  **Offline capable** - Works without internet

## Technical Details

**Neural CLI**:
- Built in Rust with Tauri
- Uses Ollama + qwen2.5:3b model
- Binary size: 4.0MB
- Auto-installs to ~/.local/bin/

**Usage**:
```bash
make translate  # Translates README.md → README-zh.md, README-ja.md
```

## Requirements

- Ollama installed: `curl -fsSL https://ollama.com/install.sh | sh`
- Model downloaded: `ollama pull qwen2.5:3b`
- Neural CLI built: `cd ~/github/neural/src-tauri && cargo build --bin neural-cli --release`

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

Co-Authored-By: Claude <noreply@anthropic.com>

---------

Co-authored-by: kazuki <kazuki@kazukinoMacBook-Air.local>
Co-authored-by: Claude <noreply@anthropic.com>
2025-10-18 20:28:10 +05:30

262 lines
8.0 KiB
Python

"""
SuperClaude install command - Modern interactive installation with rich UI
"""
import typer
from typing import Optional, List
from pathlib import Path
from rich.panel import Panel
from rich.prompt import Confirm
from rich.progress import Progress, SpinnerColumn, TextColumn
from superclaude.cli._console import console
from setup import DEFAULT_INSTALL_DIR
# Create install command group
app = typer.Typer(
name="install",
help="Install SuperClaude framework components",
no_args_is_help=False, # Allow running without subcommand
)
@app.callback(invoke_without_command=True)
def install_callback(
ctx: typer.Context,
non_interactive: bool = typer.Option(
False,
"--non-interactive",
"-y",
help="Non-interactive installation with default configuration",
),
profile: Optional[str] = typer.Option(
None,
"--profile",
help="Installation profile: api (with API keys), noapi (without), or custom",
),
install_dir: Path = typer.Option(
DEFAULT_INSTALL_DIR,
"--install-dir",
help="Installation directory",
),
force: bool = typer.Option(
False,
"--force",
help="Force reinstallation of existing components",
),
dry_run: bool = typer.Option(
False,
"--dry-run",
help="Simulate installation without making changes",
),
verbose: bool = typer.Option(
False,
"--verbose",
"-v",
help="Verbose output with detailed logging",
),
):
"""
Install SuperClaude with all recommended components (default behavior)
Running `superclaude install` without a subcommand installs all components.
Use `superclaude install components` for selective installation.
"""
# If a subcommand was invoked, don't run this
if ctx.invoked_subcommand is not None:
return
# Otherwise, run the full installation
_run_installation(non_interactive, profile, install_dir, force, dry_run, verbose)
@app.command("all")
def install_all(
non_interactive: bool = typer.Option(
False,
"--non-interactive",
"-y",
help="Non-interactive installation with default configuration",
),
profile: Optional[str] = typer.Option(
None,
"--profile",
help="Installation profile: api (with API keys), noapi (without), or custom",
),
install_dir: Path = typer.Option(
DEFAULT_INSTALL_DIR,
"--install-dir",
help="Installation directory",
),
force: bool = typer.Option(
False,
"--force",
help="Force reinstallation of existing components",
),
dry_run: bool = typer.Option(
False,
"--dry-run",
help="Simulate installation without making changes",
),
verbose: bool = typer.Option(
False,
"--verbose",
"-v",
help="Verbose output with detailed logging",
),
):
"""
Install SuperClaude with all recommended components (explicit command)
This command installs the complete SuperClaude framework including:
- Core framework files and documentation
- Behavioral modes (7 modes)
- Slash commands (26 commands)
- Specialized agents (17 agents)
- MCP server integrations (optional)
"""
_run_installation(non_interactive, profile, install_dir, force, dry_run, verbose)
def _run_installation(
non_interactive: bool,
profile: Optional[str],
install_dir: Path,
force: bool,
dry_run: bool,
verbose: bool,
):
"""Shared installation logic"""
# Display installation header
console.print(
Panel.fit(
"[bold cyan]SuperClaude Framework Installer[/bold cyan]\n"
"[dim]Modern AI-enhanced development framework for Claude Code[/dim]",
border_style="cyan",
)
)
# Import and run existing installer logic
# This bridges to the existing setup/cli/commands/install.py implementation
try:
from setup.cli.commands.install import run
import argparse
# Create argparse namespace for backward compatibility
args = argparse.Namespace(
install_dir=install_dir,
force=force,
dry_run=dry_run,
verbose=verbose,
quiet=False,
yes=True, # Always non-interactive
components=["knowledge_base", "modes", "commands", "agents"], # Full install (mcp integrated into airis-mcp-gateway)
no_backup=False,
list_components=False,
diagnose=False,
)
# Show progress with rich spinner
with Progress(
SpinnerColumn(),
TextColumn("[progress.description]{task.description}"),
console=console,
transient=False,
) as progress:
task = progress.add_task("Installing SuperClaude...", total=None)
# Run existing installer
exit_code = run(args)
if exit_code == 0:
progress.update(task, description="[green]Installation complete![/green]")
console.print("\n[bold green]✓ SuperClaude installed successfully![/bold green]")
console.print("\n[cyan]Next steps:[/cyan]")
console.print(" 1. Restart your Claude Code session")
console.print(f" 2. Framework files are now available in {install_dir}")
console.print(" 3. Use SuperClaude commands and features in Claude Code")
else:
progress.update(task, description="[red]Installation failed[/red]")
console.print("\n[bold red]✗ Installation failed[/bold red]")
console.print("[yellow]Check logs for details[/yellow]")
raise typer.Exit(1)
except ImportError as e:
console.print(f"[bold red]Error:[/bold red] Could not import installer: {e}")
console.print("[yellow]Ensure SuperClaude is properly installed[/yellow]")
raise typer.Exit(1)
except Exception as e:
console.print(f"[bold red]Unexpected error:[/bold red] {e}")
if verbose:
console.print_exception()
raise typer.Exit(1)
@app.command("components")
def install_components(
components: List[str] = typer.Argument(
...,
help="Component names to install (e.g., core modes commands agents)",
),
install_dir: Path = typer.Option(
DEFAULT_INSTALL_DIR,
"--install-dir",
help="Installation directory",
),
force: bool = typer.Option(
False,
"--force",
help="Force reinstallation",
),
dry_run: bool = typer.Option(
False,
"--dry-run",
help="Simulate installation",
),
):
"""
Install specific SuperClaude components
Available components:
- core: Core framework files and documentation
- modes: Behavioral modes (7 modes)
- commands: Slash commands (26 commands)
- agents: Specialized agents (17 agents)
- mcp: MCP server integrations
- mcp: MCP server configurations (airis-mcp-gateway)
"""
console.print(
Panel.fit(
f"[bold]Installing components:[/bold] {', '.join(components)}",
border_style="cyan",
)
)
try:
from setup.cli.commands.install import run
import argparse
args = argparse.Namespace(
install_dir=install_dir,
force=force,
dry_run=dry_run,
verbose=False,
quiet=False,
yes=True, # Non-interactive for component installation
components=components,
no_backup=False,
list_components=False,
diagnose=False,
)
exit_code = run(args)
if exit_code == 0:
console.print(f"\n[bold green]✓ Components installed: {', '.join(components)}[/bold green]")
else:
console.print("\n[bold red]✗ Component installation failed[/bold red]")
raise typer.Exit(1)
except Exception as e:
console.print(f"[bold red]Error:[/bold red] {e}")
raise typer.Exit(1)