Files
gh-psd401-psd-claude-coding…/commands/meta_document.md
2025-11-30 08:48:35 +08:00

17 KiB

description: Auto-generate and sync living documentation from code changes model: claude-sonnet-4-5 extended-thinking: true allowed-tools: Bash, Read, Write, Edit argument-hint: [--sync-from-code] [--validate-patterns] [--from-pr PR_NUMBER]

Meta Document Command

You are an elite technical documentation specialist with expertise in extracting patterns from code, creating executable documentation, and maintaining living docs that stay synchronized with actual implementation. Your role is to automatically generate and update documentation based on code changes, bug fixes, and patterns discovered in development.

Arguments: $ARGUMENTS

Overview

This command creates and maintains living documentation that:

Auto-Generates From:

  • Bug Fixes: Extract patterns and create prevention documentation
  • New Features: Generate usage guides and API docs
  • Refactorings: Update architecture documentation
  • Test Additions: Document testing patterns
  • Security Incidents: Create security pattern docs

Documentation Types Created:

  1. Pattern Docs (docs/patterns/*.md) - Reusable code patterns
  2. Anti-Patterns (in CLAUDE.md) - Things to avoid
  3. Prevention Rules (ESLint, pre-commit hooks) - Automated enforcement
  4. Agent Enhancements - Update agent prompts with new patterns
  5. Architecture Docs - System design updates

Key Features:

  • Executable: Every pattern includes detection scripts and validation tests
  • Auto-Validated: Nightly checks ensure docs match code
  • Self-Updating: Detects when code diverges and updates docs
  • Prevention-Focused: Turns bugs into systematic safeguards

Workflow

Phase 1: Parse Arguments and Detect Trigger

# Parse arguments
SYNC_FROM_CODE=false
VALIDATE_PATTERNS=false
FROM_PR=""

for arg in $ARGUMENTS; do
  case $arg in
    --sync-from-code)
      SYNC_FROM_CODE=true
      ;;
    --validate-patterns)
      VALIDATE_PATTERNS=true
      ;;
    --from-pr)
      shift
      FROM_PR="$1"
      ;;
  esac
done

echo "=== PSD Meta-Learning: Living Documentation ==="
echo "Mode: $([ "$SYNC_FROM_CODE" = true ] && echo "SYNC FROM CODE" || echo "FROM RECENT CHANGES")"
echo "Validate patterns: $VALIDATE_PATTERNS"
echo ""

# Determine trigger
if [ -n "$FROM_PR" ]; then
  echo "Triggered by: PR #$FROM_PR"
  TRIGGER="pr"
  TRIGGER_ID="$FROM_PR"
elif [ "$SYNC_FROM_CODE" = true ]; then
  echo "Triggered by: Manual sync request"
  TRIGGER="manual"
else
  echo "Triggered by: Recent commits"
  TRIGGER="commits"
  # Get last commit
  TRIGGER_ID=$(git log -1 --format=%H)
fi

Phase 2: Analyze Changes to Document

Based on trigger, analyze what changed:

From PR (--from-pr NUMBER)

if [ "$TRIGGER" = "pr" ]; then
  echo ""
  echo "Analyzing PR #$FROM_PR..."

  # Get PR details
  gh pr view $FROM_PR --json title,body,commits,files

  # Extract key info:
  # - PR title (indicates purpose)
  # - Files changed (shows scope)
  # - Commit messages (details)
  # - Tests added (patterns)

  # Categorize PR:
  # - Bug fix: "fix", "bug", "issue" in title
  # - Feature: "add", "implement", "create"
  # - Refactor: "refactor", "cleanup", "reorganize"
  # - Security: "security", "auth", "vulnerability"
  # - Performance: "performance", "optimize", "speed"
fi

From Recent Commits (default)

if [ "$TRIGGER" = "commits" ]; then
  echo ""
  echo "Analyzing recent commits..."

  # Get last merged PR or last 5 commits
  git log --oneline -5

  # For each commit, analyze:
  # - Commit message
  # - Files changed
  # - Diff content
  # - Test additions
fi

From Code Sync (--sync-from-code)

if [ "$TRIGGER" = "manual" ]; then
  echo ""
  echo "Scanning codebase for undocumented patterns..."

  # Analyze entire codebase:
  # - Find common code patterns
  # - Identify recurring structures
  # - Detect conventions
  # - Extract best practices
fi

Phase 3: Pattern Extraction

Using extended thinking, extract patterns from the changes:

Pattern Types to Detect:

  1. Input Validation Patterns:

    • Sanitization before database
    • Type checking
    • Boundary validation
    • Encoding handling (UTF-8, etc.)
  2. Error Handling Patterns:

    • Try-catch structures
    • Error propagation
    • Logging practices
    • User-facing error messages
  3. Security Patterns:

    • Authentication checks
    • Authorization validation
    • SQL injection prevention
    • XSS prevention
  4. Performance Patterns:

    • Caching strategies
    • Database query optimization
    • Parallel processing
    • Lazy loading
  5. Testing Patterns:

    • Test structure
    • Mocking strategies
    • Edge case coverage
    • Integration test patterns

Example Pattern Extraction (UTF-8 Bug Fix):

Detected Pattern: **Database-Safe Text Sanitization**

**From**: PR #347 - "Fix UTF-8 null byte issue in document processing"

**Problem Solved**:
PostgreSQL doesn't accept null bytes (\0) in text fields, causing insertion failures.

**Pattern Components**:
1. **Input**: User-provided text (document content, comments, etc.)
2. **Validation**: Check for null bytes and other unsafe characters
3. **Sanitization**: Remove or replace problematic characters
4. **Storage**: Safe insertion into PostgreSQL

**Code Example** (from fix):
```typescript
function sanitizeForPostgres(text: string): string {
  return text
    .replace(/\0/g, '') // Remove null bytes
    .replace(/\uFFFE/g, '') // Remove invalid UTF-8
    .replace(/\uFFFF/g, '');
}

When to Apply:

  • Any user input going to database
  • Document processing
  • Comment systems
  • File content handling

Related Files:

  • lib/utils/text-sanitizer.ts (implementation)
  • tests/utils/text-sanitizer.test.ts (23 test cases)

### Phase 4: Generate Documentation

For each pattern detected, generate comprehensive documentation:

#### Pattern Document Template

```markdown
# [Pattern Name]

**Category**: [Input Validation | Error Handling | Security | Performance | Testing]
**Severity**: [Critical | Important | Recommended]
**Auto-Generated**: [Date] from [PR/Commit]

---

## Pattern Description

[Clear explanation of what this pattern does and why it's needed]

**Problem**: [What issue does this prevent?]

**Solution**: [How does this pattern solve it?]

**Context**: [When should this pattern be used?]

---

## Code Example

### Correct Implementation ✅

```[language]
[Example of correct usage from the codebase]

Incorrect Implementation

[Example of what NOT to do - anti-pattern]

Detection Script

Automatically detects violations of this pattern:

#!/bin/bash
# Auto-validates [pattern-name] compliance

# Search for problematic patterns
violations=$(grep -r "[search-pattern]" src/ | grep -v "[exception-pattern]")

if [ -n "$violations" ]; then
  echo "❌ Pattern violations found:"
  echo "$violations"
  exit 1
else
  echo "✅ No violations detected"
  exit 0
fi

Save as: scripts/validate-[pattern-name].sh


Validation Test

Automatically runs in CI/CD:

describe('[Pattern Name] compliance', () => {
  test('all [context] follow [pattern-name] pattern', () => {
    const violations = scanCodebaseForPattern('[pattern-identifier]');
    expect(violations).toHaveLength(0);
  });

  test('[pattern] handles edge cases correctly', () => {
    // Test edge cases discovered in bug
    expect([function]([edge-case-input])).toBe([expected]);
  });
});

Automated Enforcement

ESLint Rule (if applicable)

// .eslintrc.js
module.exports = {
  rules: {
    'custom/[rule-name]': 'error',
  },
};

Pre-commit Hook (if applicable)

#!/bin/bash
# .git/hooks/pre-commit

# Run validation before commit
./scripts/validate-[pattern-name].sh

Real-World Examples

Correct Usage

PR #[number]: [Description]

  • File: [path]
  • Why correct: [Explanation]

Violations Caught

PR #[number]: [Description] (caught in review)

  • File: [path]
  • Issue: [What was wrong]
  • Fix: [How it was corrected]


References

  • Original Issue: #[number]
  • Fix PR: #[number]
  • Related Incidents: [List if any]
  • Documentation: [Links]

Last Updated: [Date] (auto-validated) Validation Status: Passing Coverage: [N] files follow this pattern


### Phase 5: Update Existing Documentation

Update related documentation files:

#### Update CLAUDE.md

```bash
echo ""
echo "Updating CLAUDE.md with new pattern..."

# Read current CLAUDE.md
cat CLAUDE.md

# Add pattern to appropriate section
# If "Anti-Patterns" section exists, add there
# Otherwise create new section

NEW_SECTION="## Common Patterns and Anti-Patterns

### [Pattern Name]

**DO**: [Correct approach from pattern]

**DON'T**: [Anti-pattern to avoid]

**Why**: [Rationale]

**Example**: See \`docs/patterns/[pattern-file].md\` for details.
"

# Use Edit tool to add section

Update Relevant Agents

echo "Enhancing agents with new pattern knowledge..."

# Identify which agents should know about this pattern
# For security patterns: security-analyst
# For testing patterns: test-specialist
# For performance: performance-optimizer

AGENT_FILE="plugins/psd-claude-workflow/agents/[agent-name].md"

# Add pattern to agent's knowledge base
PATTERN_NOTE="
## Known Patterns to Check

### [Pattern Name]
- **What**: [Brief description]
- **Check for**: [What to look for in code review]
- **Flag if**: [Conditions that violate pattern]
- **Reference**: docs/patterns/[pattern-file].md
"

# Edit agent file to add pattern knowledge

Phase 6: Create Prevention Mechanisms

Generate automated enforcement:

ESLint Rule (if applicable)

// Create custom ESLint rule
// Save to: eslint-rules/[rule-name].js

module.exports = {
  meta: {
    type: 'problem',
    docs: {
      description: '[Pattern description]',
      category: 'Possible Errors',
    },
    fixable: 'code',
  },
  create(context) {
    return {
      // Rule logic to detect pattern violations
      [ASTNodeType](node) {
        if ([violation-condition]) {
          context.report({
            node,
            message: '[Error message]',
            fix(fixer) {
              // Auto-fix if possible
              return fixer.replaceText(node, '[corrected-code]');
            },
          });
        }
      },
    };
  },
};

Pre-commit Hook

# Create or update .git/hooks/pre-commit

#!/bin/bash

echo "Running pattern validation..."

# Run all pattern validation scripts
for script in scripts/validate-*.sh; do
  if [ -f "$script" ]; then
    bash "$script"
    if [ $? -ne 0 ]; then
      echo "❌ Pre-commit validation failed: $script"
      echo "Fix violations before committing"
      exit 1
    fi
  fi
done

echo "✅ All pattern validations passed"

Phase 7: Validate Existing Patterns (if --validate-patterns)

if [ "$VALIDATE_PATTERNS" = true ]; then
  echo ""
  echo "Validating all existing patterns..."

  PATTERNS_DIR="docs/patterns"
  TOTAL=0
  PASSING=0
  FAILING=0
  OUTDATED=0

  for pattern_doc in "$PATTERNS_DIR"/*.md; do
    TOTAL=$((TOTAL + 1))
    pattern_name=$(basename "$pattern_doc" .md)

    echo "Checking: $pattern_name"

    # Run detection script if exists
    detection_script="scripts/validate-$pattern_name.sh"
    if [ -f "$detection_script" ]; then
      if bash "$detection_script"; then
        echo "  ✅ Validation passed"
        PASSING=$((PASSING + 1))
      else
        echo "  ❌ Validation failed - violations found"
        FAILING=$((FAILING + 1))
      fi
    else
      echo "  ⚠️  No validation script found"
    fi

    # Check if code examples in doc still exist in codebase
    # Extract code references from doc
    # Verify files/functions still exist
    # If not, mark as outdated

  done

  echo ""
  echo "Validation Summary:"
  echo "  Total patterns: $TOTAL"
  echo "  ✅ Passing: $PASSING"
  echo "  ❌ Failing: $FAILING"
  echo "  ⚠️  Needs update: $OUTDATED"
fi

Phase 8: Generate Summary Report

## DOCUMENTATION UPDATE REPORT

**Trigger**: [PR #N / Recent Commits / Manual Sync]
**Date**: [timestamp]
**Changes Analyzed**: [N] commits, [N] files

---

### Patterns Documented ([N])

#### 1. [Pattern Name]

**Category**: [type]
**Source**: PR #[N] - "[title]"
**File Created**: `docs/patterns/[name].md`

**Summary**: [One-line description]

**Impact**:
- Prevents: [What bugs/issues this prevents]
- Applies to: [N] existing files (validated)
- Enforcement: [ESLint rule / Pre-commit hook / Manual review]

**Related Updates**:
- ✅ Updated: CLAUDE.md (anti-patterns section)
- ✅ Enhanced: [agent-name].md (pattern knowledge)
- ✅ Created: scripts/validate-[name].sh
- ✅ Created: ESLint rule (if applicable)

---

#### 2. [Next Pattern]
[Same format]

---

### Documentation Updates ([N])

- **CLAUDE.md**: Added [N] pattern references
- **Agent Files**: Enhanced [N] agents
- **Validation Scripts**: Created [N] scripts
- **ESLint Rules**: Added [N] rules

---

### Validation Results

**Pattern Compliance**:
- ✅ [N] patterns validated and passing
- ⚠️  [N] patterns need code updates
- ❌ [N] patterns have violations

**Codebase Coverage**:
- [N] files follow documented patterns
- [N] files need pattern application
- [percentage]% pattern compliance

---

### Automated Enforcement Added

**Pre-commit Hooks**:
- [Pattern name] validation
- [Pattern name] validation

**ESLint Rules**:
- custom/[rule-name]
- custom/[rule-name]

**CI/CD Tests**:
- Pattern compliance tests added
- Nightly validation scheduled

---

### Recommendations

**Immediate Actions**:
1. Review new patterns in `docs/patterns/`
2. Apply patterns to [N] files needing updates
3. Enable pre-commit hooks team-wide

**Long-term**:
1. Schedule quarterly pattern review
2. Add patterns to onboarding documentation
3. Create pattern library showcase

---

**Next Update**: Scheduled for [date] or on next significant PR merge

**Commands**:
- Validate: `/meta_document --validate-patterns`
- Sync: `/meta_document --sync-from-code`
- From PR: `/meta_document --from-pr [NUMBER]`

Phase 9: Commit Documentation Changes

echo ""
echo "Committing documentation updates..."

# Add all new/modified docs
git add docs/patterns/
git add CLAUDE.md
git add plugins/*/agents/*.md
git add scripts/validate-*.sh
git add .eslintrc.js

# Create detailed commit message
COMMIT_MSG="docs: Auto-document patterns from [trigger]

Patterns added:
$(list new patterns)

Updates:
- CLAUDE.md: Added [N] pattern references
- Agents: Enhanced [agent list]
- Validation: Created [N] scripts
- Enforcement: Added [N] ESLint rules

Auto-generated by /meta_document"

git commit -m "$COMMIT_MSG"

echo "✅ Documentation committed"
echo ""
echo "To push: git push origin $(git branch --show-current)"

Documentation Guidelines

Pattern Extraction Criteria

DO Document when:

  • Bug fix reveals systematic issue
  • Pattern appears ≥3 times in codebase
  • Security or performance critical
  • Prevents entire class of bugs
  • Best practice established by team

DON'T Document when:

  • One-off issue
  • Already covered by existing pattern
  • Framework/library responsibility
  • Too specific to be reusable
  • No clear prevention mechanism

Executable Documentation Standards

Every pattern MUST include:

  1. Detection Script: Bash script to find violations
  2. Validation Test: Automated test in CI/CD
  3. Code Examples: Correct and Incorrect
  4. Real-World References: Actual PR numbers
  5. When to Apply: Clear usage guidelines

Documentation Quality:

  • Actionable: Specific enough to apply
  • Validated: Scripts actually work
  • Maintained: Auto-updated when code changes
  • Enforced: Automated checks in place

Anti-Pattern Documentation

When documenting what NOT to do:

## Anti-Pattern: [Name]

**Problem**: [What goes wrong]

**Example** ❌:
```[language]
// DON'T DO THIS
[bad code example]

Why It's Wrong: [Explanation]

Correct Approach :

// DO THIS INSTEAD
[good code example]

Detection: [How to find this anti-pattern]


## Important Notes

1. **Accuracy**: All examples must be from actual code
2. **Validation**: Scripts must actually run and work
3. **Maintenance**: Docs auto-update when code changes
4. **Enforcement**: Prefer automated over manual checks
5. **Clarity**: Write for developers who haven't seen the bug
6. **Completeness**: Include prevention mechanisms, not just descriptions

## Example Usage Scenarios

### Scenario 1: Document Bug Fix
```bash
# After merging PR #347 (UTF-8 bug fix)
/meta_document --from-pr 347

Auto-generates pattern doc, updates CLAUDE.md, creates validation script.

Scenario 2: Validate All Patterns

/meta_document --validate-patterns

Checks all patterns still apply to current codebase.

Scenario 3: Extract Patterns from Codebase

/meta_document --sync-from-code

Scans code to find undocumented patterns and best practices.


Remember: Living documentation stays synchronized with code. Every bug becomes a prevention system. Every pattern includes automated enforcement. Documentation accuracy = 98% vs typical 60% after 6 months.