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>
This commit is contained in:
kazuki
2025-10-17 16:12:58 +09:00
parent 882a0d8356
commit ea3fe8820c
5 changed files with 1075 additions and 1 deletions

View File

@@ -281,6 +281,66 @@ class CommandsComponent(Component):
project_root = Path(__file__).parent.parent.parent
return project_root / "superclaude" / "commands"
def _discover_component_files(self) -> List[str]:
"""
Discover command files including modules subdirectory
Returns:
List of relative file paths (e.g., ['pm.md', 'modules/token-counter.md'])
"""
source_dir = self._get_source_dir()
if not source_dir or not source_dir.exists():
return []
files = []
# Discover top-level .md files (slash commands)
for file_path in source_dir.iterdir():
if (
file_path.is_file()
and file_path.suffix.lower() == ".md"
and file_path.name not in ["README.md", "CHANGELOG.md", "LICENSE.md"]
):
files.append(file_path.name)
# Discover modules subdirectory files
modules_dir = source_dir / "modules"
if modules_dir.exists() and modules_dir.is_dir():
for file_path in modules_dir.iterdir():
if file_path.is_file() and file_path.suffix.lower() == ".md":
# Store as relative path: modules/token-counter.md
files.append(f"modules/{file_path.name}")
# Sort for consistent ordering
files.sort()
self.logger.debug(
f"Discovered {len(files)} command files (including modules)"
)
if files:
self.logger.debug(f"Files found: {files}")
return files
def get_files_to_install(self) -> List[Tuple[Path, Path]]:
"""
Return list of files to install, including modules subdirectory
Returns:
List of tuples (source_path, target_path)
"""
source_dir = self._get_source_dir()
files = []
if source_dir:
for filename in self.component_files:
source = source_dir / filename
target = self.install_component_subdir / filename
files.append((source, target))
return files
def get_size_estimate(self) -> int:
"""Get estimated installation size"""
total_size = 0