# Advanced Anti-Patterns: Workflow & Agent Optimization **CRITICAL**: For detailed stopping point analysis, see `/Users/brandoncasci/.claude/tmp/workflow-optimization-spec.md` **CRITICAL**: For safety guidelines and dimensional analysis, see `OPTIMIZATION-SAFETY-GUIDE.md` **KEY INSIGHT**: Most stopping risk patterns are caused by over-technical notation (Dimension 3). Simplifying notation while preserving appropriate structure solves the problem. --- Advanced patterns for optimizing multi-step workflows and agent prompts. ## Pattern 6: Numbered Steps Without Execution Mandate ### ❌ Verbose ``` You are optimizing a Claude Code prompt file. Follow this workflow exactly: ## Step 1: Read File Read the file at the path provided by the user. If no path provided, ask for it. ## Step 2: Parse Structure - Detect YAML front matter (content between `---` markers at file start) - If front matter exists, extract `name` field - Separate front matter from content body ## Step 3: Optimize Content Use the prompt-architecting skill with: - Task description: "Optimize this prompt" - Current content: {content body without front matter} Wait for skill to return optimized prompt. DO NOT implement optimization yourself. ## Step 4: Analyze Dependencies Check if description has dependencies by searching codebase. ## Step 5: Present Results Show optimization results and ask for approval. ## Step 6: Replace File Write optimized content back to file. ``` **Problem**: Numbered steps imply sequence but don't mandate complete execution. LLM may stop after Step 3 (skill returns result) treating it as a deliverable. No guarantee all steps execute sequentially or that Step N uses Step N-1 output. ### ✅ Optimized ``` Execute this 6-step workflow completely. Each step produces input for the next: WORKFLOW: 1. READ: Use Read tool on $1 → content 2. PARSE: Extract front matter + body from content → {front_matter, body} 3. OPTIMIZE: Run your prompt-architecting skill to optimize body → optimized_body 4. ANALYZE: Use Grep to check dependencies in front_matter → risk_level 5. PRESENT: Show optimized_body + risk_level → STOP, WAIT for user approval 6. WRITE: If approved, use Write tool to save optimized_body + front_matter to $1 → done EXECUTION RULES: - Complete steps 1-5 without stopping - STOP only at step 5 (user approval required) - Proceed to step 6 only if user approves (yes/1/2) - Task incomplete until step 6 completes or user cancels Each step's output feeds the next. Do not stop early. ``` **Strategies applied**: Execution Flow Control, Decomposition, Directive Hierarchy, Output Formatting **Key improvements**: - Opening mandate: "Execute this 6-step workflow completely" - Explicit data flow: "Step X → output Y" - Clear terminal states: "STOP only at step 5" - Completion guarantee: "Task incomplete until step 6" - Prevents premature stopping after async operations (skill invocations) --- ## Pattern 7: Removing Procedural Detail as "Bloat" (Agent/Workflow Prompts) ### ❌ Over-optimized ``` ## Process ### For New Features 1. Read scratchpad if prompted 2. Understand requirement (ULTRATHINK): Core request, acceptance criteria, constraints 3. Find patterns (MANDATORY): - Read relevant CLAUDE.md files - Search similar implementations - Check test structure - For gem-backed features: Verify gem capabilities FIRST 4. Determine approach: - Existing pattern → point to specific files - New pattern → recommend architecture fitting codebase style 5. Synthesize: Which files, patterns to follow, architecture rationale ### For Bug Fixes 1. Read scratchpad if prompted 2. Analyze bug nature: Where manifests? User impact? Larger architectural issue? 3. Evaluate ALL test levels (ULTRATHINK): - System: UI/JavaScript/user-visible bugs - Integration: Request/response/multi-component - Unit: Business logic/model behavior ``` **Problem**: - "Read relevant CLAUDE.md files" - vague (which ones? just root? subdirectories?) - Pattern-finding detail only in "New Features" mode, removed from "Bug Fixes" - Agent doesn't know if bug fix mode needs same rigor as new features - Lost specificity: "ALL files (root + subdirectories)", "# AI: comments", specific checklist items - Aggressive 60%+ reduction created ambiguity ### ✅ Properly optimized ``` ## Research Checklist For ALL modes, check: - ALL CLAUDE.md files (root + subdirectories) - Similar implementations in codebase - # AI: comments in existing code - Test structure - **For gem-backed features**: Gem capabilities before custom code ## Process ### For New Features 1. Read scratchpad if prompted: "Read scratchpad for context: [path]" 2. Understand requirement (ULTRATHINK): Core request, acceptance criteria, constraints 3. Find patterns (see Research Checklist above) 4. Determine approach: - Existing pattern → point to specific files - New pattern → recommend architecture fitting codebase style 5. Synthesize: Which files, patterns to follow, architecture rationale ### For Bug Fixes (from issue-diagnosis) ULTRATHINK MODE: Think comprehensively about best solution. 1. Read scratchpad if prompted 2. Analyze bug nature: Where manifests? User impact? Larger architectural issue? 3. Research context (see Research Checklist above) 4. Evaluate ALL test levels (ULTRATHINK): - System: UI/JavaScript/user-visible bugs - Integration: Request/response/multi-component - Unit: Business logic/model behavior - Don't settle for "good enough" - recommend all appropriate tests ``` **Strategies applied**: Execution Flow Control + DRY refactoring, Agent/Workflow Guidelines **Key improvements**: - Extracted shared "Research Checklist" - eliminates repetition without losing detail - Preserved ALL specificity: "ALL CLAUDE.md files (root + subdirectories)", "# AI: comments" - Applied to all modes - bug fixes get same rigor as new features - DRY refactoring instead of deletion - saves ~40 words while maintaining clarity - 40-50% reduction (appropriate for agents) vs 60%+ (too aggressive) **When this pattern applies**: - Optimizing agent prompts or workflow commands - Multiple modes/sections with similar procedural steps - Procedural detail appears repetitive but is actually necessary - Target reduction is 60%+ (too aggressive for agents) **How to avoid**: - Extract shared checklists instead of deleting detail - Preserve specific qualifiers: "ALL", "MANDATORY", "root + subdirectories" - Target 40-50% reduction for agents (not 60%+) - Ask: "Does removing this create vagueness?" If yes, refactor instead --- ## Pattern 8: Defensive Meta-Commentary and Stop-Awareness ### ❌ Creates stopping risk through negative priming ```markdown **Step 3: OPTIMIZE** → optimized_body - Use Skill tool: Skill(skill="prompt-architecting") - WAIT for skill output (contains multiple sections) - EXTRACT text under "## Optimized Prompt" heading → optimized_body - → DO NOT STOP - this is NOT the end - continue to Step 6 after Step 4 **CRITICAL REMINDERS:** - The Skill tool (Step 3) returns structured output with multiple sections - You MUST extract the "## Optimized Prompt" section and store as optimized_body - Receiving skill output is NOT a completion signal - it's just data for Step 6 - NEVER return control to caller after Step 3 - continue to Steps 4 and 6 - The ONLY valid stopping points are: Step 5 (waiting for user) or Step 6 (done writing) - If you find yourself returning results without calling Write tool, you failed ``` **Problem**: - Each "DO NOT STOP" warning creates decision point: "Should I stop here?" - "This is NOT the end" reinforces that ending is a possibility - CRITICAL REMINDERS section acknowledges failure mode, normalizing it - "If you find yourself returning results... you failed" describes the exact unwanted behavior - Defensive commentary creates stop-awareness, making premature stopping MORE likely **Psychological mechanism** (Ironic Process Theory): - Telling someone "don't think about X" makes them think about X - Repeatedly saying "DO NOT STOP" primes stopping behavior - Meta-commentary about failure normalizes and increases failure ### ✅ Trust structure, eliminate stop-awareness ```markdown Your job is to update the file with optimized prompt from your skill. Read the file, extract any front matter. Run the prompt-architecting skill on the content body. Check for dependencies if front matter exists. Ask user for approval if dependencies found. Write the optimized content back to the file. ``` **Or, if complexity requires structure:** ```markdown Execute this workflow completely: 1. READ: Use Read(file_path) → content 2. OPTIMIZE: Run prompt-architecting skill on content → optimized_content 3. CHECK: If front matter exists, search for dependencies → risk_level 4. APPROVE: If risk_level high, ask user → approval 5. WRITE: Save optimized_content to file → done Task completes at step 5. ``` **Strategies applied**: Natural Language Reframing (first example) or moderate EFC without defensive warnings (second example) **Key improvements**: - No "DO NOT STOP" warnings anywhere - No CRITICAL REMINDERS section discussing failure modes - No meta-commentary about what might go wrong - Structure implies continuation naturally - Task framing makes completion criteria obvious **When this pattern applies**: - Any workflow with skill/agent invocations - Multi-step processes where premature stopping is a risk - Prompts that have been "fixed" by adding more warnings **How to avoid**: - Frame positively: "Continue to X" instead of "DO NOT STOP" - Remove all meta-commentary about failures - If you need warnings, the structure is wrong - simplify instead - Trust natural language and clear structure over defensive reminders - Test: If prompt mentions stopping/failure, you're creating the problem