mirror of
https://github.com/SuperClaude-Org/SuperClaude_Framework.git
synced 2025-12-29 16:16:08 +00:00
## Plugin Architecture (Token Efficiency) - Plugin-based PM Agent (97% token reduction vs slash commands) - Lazy loading: 50 tokens at install, 1,632 tokens on /pm invocation - Skills framework: confidence_check skill for hallucination prevention ## Confidence Check Test Suite - 8 test cases (4 categories × 2 cases each) - Real data from agiletec commit history - Precision/Recall evaluation (target: ≥0.9/≥0.85) - Token overhead measurement (target: <150 tokens) ## Research & Analysis - PM Agent ROI analysis: Claude 4.5 baseline vs self-improving agents - Evidence-based decision framework - Performance benchmarking methodology ## Files Changed ### Plugin Implementation - .claude-plugin/plugin.json: Plugin manifest - .claude-plugin/commands/pm.md: PM Agent command - .claude-plugin/skills/confidence_check.py: Confidence assessment - .claude-plugin/marketplace.json: Local marketplace config ### Test Suite - .claude-plugin/tests/confidence_test_cases.json: 8 test cases - .claude-plugin/tests/run_confidence_tests.py: Evaluation script - .claude-plugin/tests/EXECUTION_PLAN.md: Next session guide - .claude-plugin/tests/README.md: Test suite documentation ### Documentation - TEST_PLUGIN.md: Token efficiency comparison (slash vs plugin) - docs/research/pm_agent_roi_analysis_2025-10-21.md: ROI analysis ### Code Changes - src/superclaude/pm_agent/confidence.py: Updated confidence checks - src/superclaude/pm_agent/token_budget.py: Deleted (replaced by /context) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
265 lines
9.1 KiB
Python
265 lines
9.1 KiB
Python
"""
|
|
Pre-implementation Confidence Check
|
|
|
|
Prevents wrong-direction execution by assessing confidence BEFORE starting.
|
|
|
|
Token Budget: 100-200 tokens
|
|
ROI: 25-250x token savings when stopping wrong direction
|
|
|
|
Confidence Levels:
|
|
- High (≥90%): Root cause identified, solution verified, no duplication, architecture-compliant
|
|
- Medium (70-89%): Multiple approaches possible, trade-offs require consideration
|
|
- Low (<70%): Investigation incomplete, unclear root cause, missing official docs
|
|
|
|
Required Checks:
|
|
1. No duplicate implementations (check existing code first)
|
|
2. Architecture compliance (use existing tech stack, e.g., Supabase not custom API)
|
|
3. Official documentation verified
|
|
4. Working OSS implementations referenced
|
|
5. Root cause identified with high certainty
|
|
"""
|
|
|
|
from typing import Dict, Any, Optional
|
|
from pathlib import Path
|
|
|
|
|
|
class ConfidenceChecker:
|
|
"""
|
|
Pre-implementation confidence assessment
|
|
|
|
Usage:
|
|
checker = ConfidenceChecker()
|
|
confidence = checker.assess(context)
|
|
|
|
if confidence >= 0.9:
|
|
# High confidence - proceed immediately
|
|
elif confidence >= 0.7:
|
|
# Medium confidence - present options to user
|
|
else:
|
|
# Low confidence - STOP and request clarification
|
|
"""
|
|
|
|
def assess(self, context: Dict[str, Any]) -> float:
|
|
"""
|
|
Assess confidence level (0.0 - 1.0)
|
|
|
|
Investigation Phase Checks:
|
|
1. No duplicate implementations? (25%)
|
|
2. Architecture compliance? (25%)
|
|
3. Official documentation verified? (20%)
|
|
4. Working OSS implementations referenced? (15%)
|
|
5. Root cause identified? (15%)
|
|
|
|
Args:
|
|
context: Context dict with task details
|
|
|
|
Returns:
|
|
float: Confidence score (0.0 = no confidence, 1.0 = absolute certainty)
|
|
"""
|
|
score = 0.0
|
|
checks = []
|
|
|
|
# Check 1: No duplicate implementations (25%)
|
|
if self._no_duplicates(context):
|
|
score += 0.25
|
|
checks.append("✅ No duplicate implementations found")
|
|
else:
|
|
checks.append("❌ Check for existing implementations first")
|
|
|
|
# Check 2: Architecture compliance (25%)
|
|
if self._architecture_compliant(context):
|
|
score += 0.25
|
|
checks.append("✅ Uses existing tech stack (e.g., Supabase)")
|
|
else:
|
|
checks.append("❌ Verify architecture compliance (avoid reinventing)")
|
|
|
|
# Check 3: Official documentation verified (20%)
|
|
if self._has_official_docs(context):
|
|
score += 0.2
|
|
checks.append("✅ Official documentation verified")
|
|
else:
|
|
checks.append("❌ Read official docs first")
|
|
|
|
# Check 4: Working OSS implementations referenced (15%)
|
|
if self._has_oss_reference(context):
|
|
score += 0.15
|
|
checks.append("✅ Working OSS implementation found")
|
|
else:
|
|
checks.append("❌ Search for OSS implementations")
|
|
|
|
# Check 5: Root cause identified (15%)
|
|
if self._root_cause_identified(context):
|
|
score += 0.15
|
|
checks.append("✅ Root cause identified")
|
|
else:
|
|
checks.append("❌ Continue investigation to identify root cause")
|
|
|
|
# Store check results for reporting
|
|
context["confidence_checks"] = checks
|
|
|
|
return score
|
|
|
|
def _has_official_docs(self, context: Dict[str, Any]) -> bool:
|
|
"""
|
|
Check if official documentation exists
|
|
|
|
Looks for:
|
|
- README.md in project
|
|
- CLAUDE.md with relevant patterns
|
|
- docs/ directory with related content
|
|
"""
|
|
# Check for test file path
|
|
test_file = context.get("test_file")
|
|
if not test_file:
|
|
return False
|
|
|
|
project_root = Path(test_file).parent
|
|
while project_root.parent != project_root:
|
|
# Check for documentation files
|
|
if (project_root / "README.md").exists():
|
|
return True
|
|
if (project_root / "CLAUDE.md").exists():
|
|
return True
|
|
if (project_root / "docs").exists():
|
|
return True
|
|
project_root = project_root.parent
|
|
|
|
return False
|
|
|
|
def _no_duplicates(self, context: Dict[str, Any]) -> bool:
|
|
"""
|
|
Check for duplicate implementations
|
|
|
|
Before implementing, verify:
|
|
- No existing similar functions/modules (Glob/Grep)
|
|
- No helper functions that solve the same problem
|
|
- No libraries that provide this functionality
|
|
|
|
Returns True if no duplicates found (investigation complete)
|
|
"""
|
|
# This is a placeholder - actual implementation should:
|
|
# 1. Search codebase with Glob/Grep for similar patterns
|
|
# 2. Check project dependencies for existing solutions
|
|
# 3. Verify no helper modules provide this functionality
|
|
duplicate_check = context.get("duplicate_check_complete", False)
|
|
return duplicate_check
|
|
|
|
def _architecture_compliant(self, context: Dict[str, Any]) -> bool:
|
|
"""
|
|
Check architecture compliance
|
|
|
|
Verify solution uses existing tech stack:
|
|
- Supabase project → Use Supabase APIs (not custom API)
|
|
- Next.js project → Use Next.js patterns (not custom routing)
|
|
- Turborepo → Use workspace patterns (not manual scripts)
|
|
|
|
Returns True if solution aligns with project architecture
|
|
"""
|
|
# This is a placeholder - actual implementation should:
|
|
# 1. Read CLAUDE.md for project tech stack
|
|
# 2. Verify solution uses existing infrastructure
|
|
# 3. Check not reinventing provided functionality
|
|
architecture_check = context.get("architecture_check_complete", False)
|
|
return architecture_check
|
|
|
|
def _has_oss_reference(self, context: Dict[str, Any]) -> bool:
|
|
"""
|
|
Check if working OSS implementations referenced
|
|
|
|
Search for:
|
|
- Similar open-source solutions
|
|
- Reference implementations in popular projects
|
|
- Community best practices
|
|
|
|
Returns True if OSS reference found and analyzed
|
|
"""
|
|
# This is a placeholder - actual implementation should:
|
|
# 1. Search GitHub for similar implementations
|
|
# 2. Read popular OSS projects solving same problem
|
|
# 3. Verify approach matches community patterns
|
|
oss_check = context.get("oss_reference_complete", False)
|
|
return oss_check
|
|
|
|
def _root_cause_identified(self, context: Dict[str, Any]) -> bool:
|
|
"""
|
|
Check if root cause is identified with high certainty
|
|
|
|
Verify:
|
|
- Problem source pinpointed (not guessing)
|
|
- Solution addresses root cause (not symptoms)
|
|
- Fix verified against official docs/OSS patterns
|
|
|
|
Returns True if root cause clearly identified
|
|
"""
|
|
# This is a placeholder - actual implementation should:
|
|
# 1. Verify problem analysis complete
|
|
# 2. Check solution addresses root cause
|
|
# 3. Confirm fix aligns with best practices
|
|
root_cause_check = context.get("root_cause_identified", False)
|
|
return root_cause_check
|
|
|
|
def _has_existing_patterns(self, context: Dict[str, Any]) -> bool:
|
|
"""
|
|
Check if existing patterns can be followed
|
|
|
|
Looks for:
|
|
- Similar test files
|
|
- Common naming conventions
|
|
- Established directory structure
|
|
"""
|
|
test_file = context.get("test_file")
|
|
if not test_file:
|
|
return False
|
|
|
|
test_path = Path(test_file)
|
|
test_dir = test_path.parent
|
|
|
|
# Check for other test files in same directory
|
|
if test_dir.exists():
|
|
test_files = list(test_dir.glob("test_*.py"))
|
|
return len(test_files) > 1
|
|
|
|
return False
|
|
|
|
def _has_clear_path(self, context: Dict[str, Any]) -> bool:
|
|
"""
|
|
Check if implementation path is clear
|
|
|
|
Considers:
|
|
- Test name suggests clear purpose
|
|
- Markers indicate test type
|
|
- Context has sufficient information
|
|
"""
|
|
# Check test name clarity
|
|
test_name = context.get("test_name", "")
|
|
if not test_name or test_name == "test_example":
|
|
return False
|
|
|
|
# Check for markers indicating test type
|
|
markers = context.get("markers", [])
|
|
known_markers = {
|
|
"unit", "integration", "hallucination",
|
|
"performance", "confidence_check", "self_check"
|
|
}
|
|
|
|
has_markers = bool(set(markers) & known_markers)
|
|
|
|
return has_markers or len(test_name) > 10
|
|
|
|
def get_recommendation(self, confidence: float) -> str:
|
|
"""
|
|
Get recommended action based on confidence level
|
|
|
|
Args:
|
|
confidence: Confidence score (0.0 - 1.0)
|
|
|
|
Returns:
|
|
str: Recommended action
|
|
"""
|
|
if confidence >= 0.9:
|
|
return "✅ High confidence (≥90%) - Proceed with implementation"
|
|
elif confidence >= 0.7:
|
|
return "⚠️ Medium confidence (70-89%) - Continue investigation, DO NOT implement yet"
|
|
else:
|
|
return "❌ Low confidence (<70%) - STOP and continue investigation loop"
|