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

7.8 KiB

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/

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

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

{"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)
# Run tests
uv run pytest tests/core/pm_init/ tests/validators/ -v

# Results
============================== 26 passed in 0.08s ==============================

🚀 Usage

Automatic Initialization

# 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

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

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

  • PM Init Hook implemented
  • Context Contract auto-generation
  • Reflexion Memory system
  • 5 Core Validators implemented
  • 26 tests written and passing
  • 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.