Files
SuperClaude/PR_DOCUMENTATION.md
kazuki 763417731a docs: add project index and PR documentation
Add comprehensive project documentation:
- PROJECT_INDEX.json: Machine-readable project structure
- PROJECT_INDEX.md: Human-readable project overview
- PR_DOCUMENTATION.md: Pull request preparation documentation
- PARALLEL_INDEXING_PLAN.md: Parallel indexing implementation plan

Provides structured project knowledge base and contribution guidelines.

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-20 03:53:29 +09:00

321 lines
7.8 KiB
Markdown

# PR: PM Mode as Default - Phase 1 Implementation
**Status**: ✅ Ready for Review
**Test Coverage**: 26 tests, all passing
**Breaking Changes**: None
---
## 📋 Summary
This PR implements **Phase 1** of the PM-as-Default architecture: **PM Mode Initialization** and **Validation Infrastructure**.
### What This Enables
-**Automatic Context Contract generation** (project-specific rules)
-**Reflexion Memory system** (learning from mistakes)
-**5 Core Validators** (security, dependencies, runtime, tests, contracts)
-**Foundation for 4-phase workflow** (PLANNING/TASKLIST/DO/ACTION)
---
## 🎯 Problem Solved
### Before
- PM Mode was **optional** and rarely used
- No enforcement of project-specific rules (Kong, Infisical, .env禁止)
- Same mistakes repeated (no learning system)
- No pre-execution validation (implementations broke rules)
### After
- PM Mode **initializes automatically** at session start
- Context Contract **enforces rules** before execution
- Reflexion Memory **prevents recurring mistakes**
- Validators **block problematic code** before execution
---
## 🏗️ Architecture
### 1. PM Mode Init Hook
**Location**: `superclaude/core/pm_init/`
```python
from superclaude.core.pm_init import initialize_pm_mode
# Runs automatically at session start
init_data = initialize_pm_mode()
# Returns: Context Contract + Reflexion Memory + Project Structure
```
**Features**:
- Git repository detection
- Lightweight structure scan (paths only, no content reading)
- Context Contract auto-generation
- Reflexion Memory loading
---
### 2. Context Contract
**Location**: `docs/memory/context-contract.yaml` (auto-generated)
**Purpose**: Enforce project-specific rules
```yaml
version: 1.0.0
principles:
use_infisical_only: true
no_env_files: true
outbound_through: kong
runtime:
node:
manager: pnpm
source: lockfile-defined
validators:
- deps_exist_on_registry
- tests_must_run
- no_env_file_creation
- outbound_through_proxy
```
**Detection Logic**:
- Infisical → `no_env_files: true`
- Kong → `outbound_through: kong`
- Traefik → `outbound_through: traefik`
- pnpm-lock.yaml → `manager: pnpm`
---
### 3. Reflexion Memory
**Location**: `docs/memory/reflexion.jsonl`
**Purpose**: Learn from mistakes, prevent recurrence
```jsonl
{"ts": "2025-10-19T...", "task": "auth", "mistake": "forgot kong routing", "rule": "all services route through kong", "fix": "added kong route", "tests": ["test_kong.py"], "status": "adopted"}
```
**Features**:
- Add entries: `memory.add_entry(ReflexionEntry(...))`
- Search similar: `memory.search_similar_mistakes("kong routing")`
- Get rules: `memory.get_rules()`
---
### 4. Validators
**Location**: `superclaude/validators/`
#### ContextContractValidator
- Enforces project-specific rules
- Checks .env file creation (禁止)
- Detects hardcoded secrets
- Validates Kong/Traefik routing
#### DependencySanityValidator
- Validates package.json/pyproject.toml
- Checks package name format
- Detects version inconsistencies
#### RuntimePolicyValidator
- Validates Node.js/Python versions
- Checks engine specifications
- Ensures lockfile consistency
#### TestRunnerValidator
- Detects test files in changes
- Runs tests automatically
- Fails if tests don't pass
#### SecurityRoughcheckValidator
- Detects hardcoded secrets (Stripe, Supabase, OpenAI, Infisical)
- Blocks .env file creation
- Warns on unsafe patterns (eval, exec, shell=True)
---
## 📊 Test Coverage
**Total**: 26 tests, all passing
### PM Init Tests (11 tests)
- ✅ Git repository detection
- ✅ Structure scanning
- ✅ Context Contract generation (Infisical, Kong, Traefik)
- ✅ Runtime detection (Node, Python, pnpm, uv)
- ✅ Reflexion Memory (load, add, search)
### Validator Tests (15 tests)
- ✅ Context Contract validation
- ✅ Dependency sanity checks
- ✅ Runtime policy validation
- ✅ Security roughcheck (secrets, .env, unsafe patterns)
- ✅ Validator chain (all pass, early stop)
```bash
# Run tests
uv run pytest tests/core/pm_init/ tests/validators/ -v
# Results
============================== 26 passed in 0.08s ==============================
```
---
## 🚀 Usage
### Automatic Initialization
```python
# Session start (automatic)
from superclaude.core.pm_init import initialize_pm_mode
init_data = initialize_pm_mode()
# Returns
{
"status": "initialized",
"git_root": "/path/to/repo",
"structure": {...}, # Docker, Infra, Package managers
"context_contract": {...}, # Project-specific rules
"reflexion_memory": {
"total_entries": 5,
"rules": ["all services route through kong", ...],
"recent_mistakes": [...]
}
}
```
### Manual Validation
```python
from superclaude.validators import (
ContextContractValidator,
SecurityRoughcheckValidator,
ValidationStatus
)
# Create validator
validator = SecurityRoughcheckValidator()
# Validate changes
result = validator.validate({
"changes": {
".env": "SECRET_KEY=abc123"
}
})
# Check result
if result.failed:
print(result.message) # "CRITICAL security issues detected"
print(result.details) # {"critical": ["❌ .env file detected"]}
print(result.suggestions) # ["Remove hardcoded secrets", ...]
```
### Reflexion Memory
```python
from superclaude.core.pm_init import ReflexionMemory, ReflexionEntry
memory = ReflexionMemory(git_root)
# Add entry
entry = ReflexionEntry(
task="auth implementation",
mistake="forgot kong routing",
evidence="direct connection detected",
rule="all services must route through kong",
fix="added kong service in docker-compose.yml",
tests=["test_kong_routing.py"]
)
memory.add_entry(entry)
# Search similar mistakes
similar = memory.search_similar_mistakes("kong routing missing")
# Returns: List[ReflexionEntry] with similar past mistakes
# Get all rules
rules = memory.get_rules()
# Returns: ["all services must route through kong", ...]
```
---
## 📁 Files Added
```
superclaude/
├── core/pm_init/
│ ├── __init__.py # Exports
│ ├── init_hook.py # Main initialization
│ ├── context_contract.py # Contract generation
│ └── reflexion_memory.py # Memory management
├── validators/
│ ├── __init__.py
│ ├── base.py # Base validator classes
│ ├── context_contract.py
│ ├── dep_sanity.py
│ ├── runtime_policy.py
│ ├── test_runner.py
│ └── security_roughcheck.py
tests/
├── core/pm_init/
│ └── test_init_hook.py # 11 tests
└── validators/
└── test_validators.py # 15 tests
docs/memory/ (auto-generated)
├── context-contract.yaml
└── reflexion.jsonl
```
---
## 🔄 What's Next (Phase 2)
**Not included in this PR** (will be in Phase 2):
1. **PLANNING Phase** (`commands/pm/plan.py`)
- Generate 3-5 plans → Self-critique → Prune bad plans
2. **TASKLIST Phase** (`commands/pm/tasklist.py`)
- Break into parallel/sequential tasks
3. **DO Phase** (`commands/pm/do.py`)
- Execute with validator gates
4. **ACTION Phase** (`commands/pm/reflect.py`)
- Post-implementation reflection and learning
---
## ✅ Checklist
- [x] PM Init Hook implemented
- [x] Context Contract auto-generation
- [x] Reflexion Memory system
- [x] 5 Core Validators implemented
- [x] 26 tests written and passing
- [x] Documentation complete
- [ ] Code review
- [ ] Merge to integration branch
---
## 📚 References
1. **Reflexion: Language Agents with Verbal Reinforcement Learning** (2023)
- Self-reflection for 94% error detection rate
2. **Context7 MCP** - Pattern for project-specific configuration
3. **SuperClaude Framework** - Behavioral Rules and Principles
---
**Review Ready**: This PR establishes the foundation for PM-as-Default. All tests pass, no breaking changes.