--- name: Selecting Agents description: Decision guide for choosing the right specialized agent for each task type when_to_use: before dispatching work to specialized agents, when multiple agents could apply version: 1.0.0 --- # Selecting Agents ## Overview Use the right agent for the job. Each agent is optimized for specific scenarios and follows a focused workflow. **This skill helps you choose** which specialized agent to use based on the task at hand. **For automatic agent selection:** When executing implementation plans, use the `/cipherpowers:execute` command which applies this skill's logic automatically with hybrid keyword/LLM analysis. Manual selection using this skill is for ad-hoc agent dispatch outside of plan execution. ## Agent Selection Logic When selecting agents (manually or automatically), you must analyze the **task requirements and context**, not just match keywords naively. **DO NOT use naive keyword matching:** - ❌ Task contains "ultrathink" → select ultrathink-debugger - ❌ Task contains "rust" → select rust-agent - ❌ Task mentions agent name → select that agent **DO use semantic understanding:** - ✅ Analyze what the task is asking for (debugging? implementation? review?) - ✅ Consider task complexity and characteristics - ✅ Match agent capabilities to task requirements - ✅ Ignore mentions of agent names that are not prescriptive **Examples of INCORRECT selection:** - Task: "Fix simple bug (don't use ultrathink-debugger, it's overkill)" → ❌ Selecting ultrathink-debugger because "ultrathink" appears - Task: "Implement feature X in Python (not Rust)" → ❌ Selecting rust-agent because "rust" appears - Task: "Add tests like the code-review-agent suggested" → ❌ Selecting code-review-agent because it's mentioned **Examples of CORRECT selection:** - Task: "Fix simple bug in auth.py" → ✅ general-purpose (simple bug, not complex) - Task: "Investigate random CI failures with timing issues" → ✅ ultrathink-debugger (complex, timing, environment-specific) - Task: "Add new endpoint to user service (Rust)" → ✅ rust-agent (Rust implementation work) - Task: "Don't use ultrathink for this simple validation fix" → ✅ general-purpose (task explicitly says it's simple) **Selection criteria:** 1. **What is the task type?** (implementation, debugging, review, documentation) 2. **What is the complexity?** (simple fix vs multi-component investigation) 3. **What technology?** (Rust code vs other languages) 4. **What is explicitly requested?** (user prescribing specific agent vs mentioning in passing) **Red flags that indicate you're selecting incorrectly:** - Selected agent based on keyword appearance alone - Ignored explicit guidance in task description (e.g., "don't use X") - Selected debugging agent for simple implementation task - Selected specialized agent when general-purpose is more appropriate ## Documentation Agents ### technical-writer **When to use:** After code changes that affect documentation **Scenarios:** - Updated API endpoints, added new features - Changed configuration options or environment variables - Modified architecture or system design - Refactored code that impacts user-facing docs - Added new commands, tools, or workflows **Skill used:** `maintaining-docs-after-changes` **Command:** `/cipherpowers:verify docs` **Key characteristic:** Reactive to code changes - syncs docs with current code state ## Debugging Agents ### ultrathink-debugger **When to use:** Complex, multi-layered debugging requiring deep investigation **Scenarios:** - Production failures with complex symptoms - Environment-specific issues (works locally, fails in production/CI/Azure) - Multi-component system failures (API → service → database) - Integration problems (external APIs, third-party services) - Timing and concurrency issues (race conditions, intermittent failures) - Mysterious behavior resisting standard debugging **Skills used:** `systematic-debugging`, `root-cause-tracing`, `defense-in-depth`, `verification-before-completion` **Key characteristic:** Opus-level investigation for complex scenarios, not simple bugs ## Development Agents ### rust-agent **When to use:** Rust development tasks requiring TDD and code review discipline **Scenarios:** - Implementing new Rust features - Refactoring Rust code - Performance optimization - Systems programming tasks - Any Rust development work **Skills used:** `test-driven-development`, `testing-anti-patterns`, `code-review-reception` **Key characteristic:** Enforces TDD, mandatory code review, project task usage ## Review Agents ### code-review-agent **When to use:** Reviewing code changes before merging **Scenarios:** - Before completing feature implementation - After addressing initial feedback - When ready to merge to main branch **Skill used:** `conducting-code-review` **Command:** `/cipherpowers:code-review` **Key characteristic:** Structured review process with severity levels (BLOCKING/NON-BLOCKING) ### plan-review-agent **When to use:** Evaluating implementation plans before execution **Scenarios:** - After writing a plan with `/cipherpowers:plan` - Before executing a plan with `/cipherpowers:execute` - When plan quality needs validation - When plan scope or approach is uncertain **Skill used:** `verifying-plans` **Command:** `/cipherpowers:verify plan` **Key characteristic:** Evaluates plan against 35 quality criteria across 6 categories (Security, Testing, Architecture, Error Handling, Code Quality, Process) ## Common Confusions | Confusion | Correct Choice | Why | |-----------|----------------|-----| | "Just finished feature, need docs" | **technical-writer + /summarise** | technical-writer syncs API/feature docs, /summarise captures learning | | "Quick docs update" | **technical-writer** | All doc maintenance uses systematic process | | "Fixed bug, should document" | **/summarise command** | Capturing what you learned, not updating technical docs | | "Changed README" | **Depends** | Updated feature docs = technical-writer. Captured work summary = /summarise | | "Production debugging done" | **/summarise command** | Document the investigation insights and lessons learned | ## Selection Examples **Scenario 1: Added new API endpoint** → **technical-writer** - Code changed, docs need sync **Scenario 2: Spent 3 hours debugging Azure timeout** → **/summarise command** - Capture the investigation, decisions, solution **Scenario 3: Both apply - finished user authentication feature** → **technical-writer first** - Update API docs, configuration guide → **/summarise second** - Capture why you chose OAuth2, what issues you hit **Scenario 4: Random test failures in CI** → **ultrathink-debugger** - Complex timing/environment issue needs deep investigation **Scenario 5: Simple bug fix in Rust** → **rust-agent** - Standard development workflow with TDD **Scenario 6: Just finished writing implementation plan** → **plan-review-agent** - Validate plan before execution **Scenario 7: About to execute plan, want quality check** → **plan-review-agent** - Ensure plan is comprehensive and executable ## Remember - Most completed work needs **both** documentation types (technical-writer agent for code sync, /summarise for learning) - Use **technical-writer** when code changes - Use **/summarise command** when work completes - Use **ultrathink-debugger** for complex debugging (not simple bugs) - Use **rust-agent** for all Rust development - Use **code-review-agent** before merging code - Use **plan-review-agent** before executing plans