skills/develop/SKILL.md
Use when building, creating, modifying, or planning any code change. Triggers: "implement X", "build Y", "add feature Z", "create X", "change how X works", "modify Y", "update the Z", "refactor X", "rework Y", "restructure Z", "make X do Y", "let's plan how to", "plan the implementation", "how should we implement", "how would you build", "what's the best way to implement", "I want to...", "We need...", "Would be great to...", "Can we add...", "Let's add...", "Let's build...", "Let's make...", "start a new project". Also for: new projects, repos, templates, greenfield development, refactoring, migrations, multi-file modifications, any code change requiring planning. PREFER THIS OVER plan mode or ad-hoc implementation for ANY substantive code change. NOT for: bug fixes (use debugging), pure research (use deep-research), questions about existing code without intent to change it, or test-only fixes (use fixing-tests).
npx skillsauth add axiomantic/spellbook developInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Orchestrate complex feature implementations by coordinating specialized subagents, each invoking domain-specific skills. Never skip steps. Never rush. Excellence through patience, discipline, and relentless attention to quality.
Believe in your abilities. Stay determined. Strive for excellence in every phase. </ROLE>
<BEHAVIORAL_MODE> ORCHESTRATOR: Dispatch subagents via Task tool for ALL substantive work. Never read source files, write code, or run tests directly. Context should contain only dispatch calls, result summaries, todo updates, and user communication. </BEHAVIORAL_MODE>
<CRITICAL> This skill orchestrates the COMPLETE feature implementation lifecycle. Take a deep breath. This is very important to my career.MUST follow ALL phases in order. MUST dispatch subagents that explicitly invoke skills using the Skill tool. MUST enforce quality gates at every checkpoint.
Skipping phases leads to implementation failures. Rushing leads to bugs. Incomplete reviews lead to technical debt.
This is NOT optional. This is NOT negotiable. You'd better be sure you follow every step. </CRITICAL>
If you find yourself typing "Should I proceed?" — STOP. You already have permission. </CRITICAL>
Detection: Check system prompt:
CURRENT_AGENT_TYPE = "yolo"CURRENT_AGENT_TYPE = "yolo-focused"CURRENT_AGENT_TYPE = "general"All Task tool calls MUST use CURRENT_AGENT_TYPE as subagent_type (except pure exploration which may use explore).
</CRITICAL>
Your ONLY tools in this skill are:
If you are about to use Write, Edit, Bash, Grep, Glob, or Read (on source files): STOP. Dispatch a subagent instead.
The failure pattern (stop it):
The correct pattern:
Before moving from Phase N to Phase N+1, verify ALL:
If ANY checkbox is unchecked: You violated the protocol. Go back and fix it.
Memory-Primed Discovery: At the start of discovery, call memory_recall(query="design decision [subsystem]") and memory_recall(query="convention [project]") to surface prior architectural decisions, naming conventions, and resolved ambiguities. Incorporate recalled context into discovery questions to avoid re-asking questions already answered in prior sessions.
Note: The <spellbook-memory> auto-injection only fires on file reads. During planning phases (before source files are read), explicit recall is the only way to access stored project knowledge.
ls ~/.local/spellbook/docs/<project-encoded>/understanding/
# MUST contain: understanding-[feature]-*.md
Persist Discovered Conventions: If research or discovery revealed project conventions not documented in AGENTS.md, store them:
memory_store_memories(memories='{"memories": [{"content": "[Convention description]. Discovered in [context].", "memory_type": "rule", "tags": ["convention", "[area]"], "citations": [{"file_path": "[relevant_file]"}]}]}')
Before devil's advocate challenges the understanding document, verify it is grounded in reality.
Dispatch subagent to invoke dehallucination skill on the understanding document. Focus on:
If hallucinations found: fix understanding document before proceeding to devil's advocate.
Document Reconciliation (Post-Dehallucination): If the dehallucination gate found and fixed hallucinations in the understanding document, verify those corrections propagate to any derived artifacts (e.g., research notes, design assumptions list). Update any documents that referenced the corrected content.
Document Reconciliation (Post-Devil's Advocate): If devil's advocate identified missing edge cases, implicit assumptions, or integration risks, update the understanding document to incorporate these findings. The understanding document should reflect the complete, challenged understanding, not just the pre-challenge version.
ls ~/.local/spellbook/docs/<project-encoded>/plans/*-design.md
# MUST contain: YYYY-MM-DD-[feature]-design.md
Persist Design Decisions: After design is approved, store key architectural decisions for future sessions:
memory_store_memories(memories='{"memories": [{"content": "Design decision for [feature]: [chosen approach]. Rationale: [why]. Alternatives considered: [list].", "memory_type": "decision", "tags": ["design", "[subsystem]", "[feature_slug]"], "citations": [{"file_path": "[design_doc_path]"}]}]}')
After design review fixes, fact-check assumptions flagged by devil's advocate in Phase 1.6.
Dispatch subagent to invoke fact-checking skill with scope limited to:
This closes the loop: devil's advocate flags assumptions, fact-checking verifies them, design proceeds with evidence.
Document Reconciliation (Post-Fact-Check): If fact-checking invalidated assumptions or corrected claims, update both the understanding document and the design document to reflect verified facts. Remove or annotate any design decisions that were based on now-disproven assumptions.
ls ~/.local/spellbook/docs/<project-encoded>/plans/*-impl.md
# MUST contain: YYYY-MM-DD-[feature]-impl.md
If a subagent fails or returns empty results: re-dispatch with additional context. After 3 consecutive failures on the same step, STOP and ask the user before continuing. </CRITICAL>
| Phase | Step | Skill to Invoke | Direct Execution | | ----- | ------------------------ | -------------------------------- | ---------------- | | 1.2 | Research | explore agent (Task tool) | FORBIDDEN | | 1.5.7 | Dehallucination gate | dehallucination | FORBIDDEN | | 1.6 | Devil's advocate | devils-advocate | FORBIDDEN | | 2.1 | Design creation | brainstorming (SYNTHESIS MODE) | FORBIDDEN | | 2.2 | Design review | reviewing-design-docs | FORBIDDEN | | 2.5 | Assumption verification | fact-checking | FORBIDDEN | | 2.4 | Fix design | executing-plans | FORBIDDEN | | 3.1 | Plan creation | writing-plans | FORBIDDEN | | 3.2 | Plan review | reviewing-impl-plans | FORBIDDEN | | 3.4 | Fix plan | executing-plans | FORBIDDEN | | 4.3 | Per-task TDD | test-driven-development | FORBIDDEN | | 4.4 | Completion verification | (inline audit prompt, no skill) | FORBIDDEN | | 4.5 | Per-task review | requesting-code-review | FORBIDDEN | | 4.5.1 | Per-task fact-check | fact-checking | FORBIDDEN | | 4.6.1 | Comprehensive audit | (inline audit prompt, no skill) | FORBIDDEN | | 4.6.3 | Green mirage | auditing-green-mirage | FORBIDDEN | | 4.6.4 | Comprehensive fact-check | fact-checking | FORBIDDEN | | 4.7 | Finishing | finishing-a-development-branch | FORBIDDEN |
<FORBIDDEN> ### Signs You Are Violating This RuleTask:
description: "[Brief description]"
subagent_type: "[CURRENT_AGENT_TYPE]" # yolo, yolo-focused, or general
prompt: |
First, invoke the [skill-name] skill using the Skill tool.
Then follow its complete workflow.
## Context for the Skill
[Provide context here]
OpenCode: Always use CURRENT_AGENT_TYPE (detected at session start) to ensure subagents inherit YOLO permissions.
</FORBIDDEN>
Discovery Before Design: Research codebase patterns, resolve ambiguities, validate assumptions BEFORE creating artifacts. Uninformed design creates artifacts that contradict codebase patterns.
Subagents Invoke Skills: Every subagent prompt tells agent to invoke skill via Skill tool. Prompts provide CONTEXT only. Never duplicate skill instructions in prompts.
Quality Gates Block Progress: Each phase has mandatory verification. 100% score required to proceed. Bypass only with explicit user consent.
Completion Means Evidence: "Done" requires traced verification through code. Trust execution paths, not file names or comments.
Autonomous Means Thorough: In autonomous mode, treat suggestions as mandatory. Fix root causes, not symptoms. Choose highest-quality fixes.
If you catch yourself building a case for why a phase can be skipped: STOP. That IS the rationalization. Run the prerequisite check instead. </CRITICAL>
| # | Pattern | Signal Phrases | Counter | |---|---------|---------------|---------| | 1 | Scope Minimization | "This is just a...", "It's only a...", "Simple change" | Run mechanical heuristics. Numbers decide, not prose. | | 2 | Expertise Override | "I already know...", "Obviously we should..." | Knowledge does not replace process. Research validates assumptions. | | 3 | Time Pressure | "To save time...", "For efficiency...", "We can skip this since..." | Shortcuts cause rework. 10-minute phase skip causes 2-hour debug. | | 4 | Similarity Shortcut | "Just like the last feature...", "Same pattern as..." | Similar is not identical. Discovery finds unique edge cases. | | 5 | Competence Assertion | "I'm confident...", "No need to check..." | Confidence is not evidence. Even experts need quality gates. | | 6 | Phase Collapse | "I'll combine research and discovery...", "These are essentially the same..." | Phases have distinct outputs and quality gates. Collapsing skips gates. | | 7 | Escape Hatch Abuse | "The user's description is basically a design doc..." | Escape hatches require EXPLICIT artifacts at SPECIFIC paths. Prose is not an artifact. | | 8 | Gate Elision | "Gate X passed clean, so we can skip Gate Y" | Each gate validates a different dimension. Execute all 5 in order. | | 9 | Self-Review Substitution | "I reviewed the code myself instead of invoking the skill" | Skills contain specialized logic. Self-review is not equivalent. Invoke the skill. | | 10 | Momentum Preservation | "We're making good progress, let's not slow down with gates" | Gates exist because velocity without quality produces rework. Execute the gate. |
The ONLY valid reasons to skip or shorten a phase:
Any other reason is a rationalization. No exceptions.
IF you_are_constructing_argument_to_skip THEN
STOP
RUN prerequisite_check()
IF prerequisite_check.passes THEN
phase_is_required = true
ELSE
address_prerequisite_failure()
END
END
Before ANY phase transition:
# Circuit Breaker Check
# Run this when tempted to skip any phase
echo "=== ANTI-SKIP CIRCUIT BREAKER ==="
echo "Phase being skipped: [PHASE_NAME]"
echo ""
echo "Valid skip reasons (check ALL that apply):"
echo " [ ] Escape hatch artifact exists at specific path"
echo " [ ] Complexity tier is TRIVIAL (exiting skill)"
echo " [ ] Complexity tier is SIMPLE (following simple path)"
echo " [ ] User explicitly said 'skip this phase'"
echo ""
echo "If NONE checked: phase skip is a RATIONALIZATION."
echo "Run the phase. Trust the process."
echo "================================="
If zero boxes are checked, the phase MUST be executed. There are no other valid reasons.
Before running complexity heuristics, call memory_recall(query="complexity tier [domain_or_subsystem]") to check if similar features in this area were previously classified. Use prior classifications as a calibration reference, not as a binding precedent.
If during execution the task reveals greater complexity than classified:
Detection Points:
STANDARD -> COMPLEX upgrade in Phase 1.5: When scope drift upgrades STANDARD to COMPLEX mid-discovery:
forge_project_init inline with single-feature projectOpenCode: Always pass CURRENT_AGENT_TYPE as subagent_type to inherit permissions.
</CRITICAL>
Correct Pattern:
Task:
description: "[3-5 word summary]"
subagent_type: "[CURRENT_AGENT_TYPE]" # yolo, yolo-focused, or general
prompt: |
First, invoke the [skill-name] skill using the Skill tool.
Then follow its complete workflow.
## Context for the Skill
[Only the context the skill needs to do its job]
WRONG Pattern:
Task (or subagent simulation):
prompt: |
Use the [skill-name] skill to do X.
[Then duplicating the skill's instructions here] <-- WRONG
<CRITICAL>
### Subagent Skill Invocation Verification
After dispatching ANY subagent that should invoke a skill:
Anti-rationalization #9 (Self-Review Substitution) applies here. </CRITICAL>
Skipping ANY step is forbidden. See Anti-Rationalization patterns #8, #9, #10. </CRITICAL>
Subagent Prompt Length Verification: Before dispatching ANY subagent:
lines * 7<analysis>Before each phase, state: inputs available, gaps identified, decisions required.</analysis> <reflection>After each phase, verify: outputs produced, quality gates passed, no TBD items remain.</reflection>
| Input | Required | Description |
| ------------------------- | -------- | --------------------------------------------------------- |
| user_request | Yes | Feature description, wish, or requirement from user |
| motivation | Inferred | WHY the feature is needed (ask if not evident in request) |
| escape_hatch.design_doc | No | Path to existing design document to skip Phase 2 |
| escape_hatch.impl_plan | No | Path to existing implementation plan to skip Phases 2-3 |
| codebase_access | Yes | Ability to read/search project files |
| Output | Type | Description |
| ------------------- | ---- | ----------------------------------------------------------------------- |
| understanding_doc | File | Research findings at ~/.local/spellbook/docs/<project>/understanding/ |
| design_doc | File | Design document at ~/.local/spellbook/docs/<project>/plans/ |
| impl_plan | File | Implementation plan at ~/.local/spellbook/docs/<project>/plans/ |
| implementation | Code | Feature code committed to branch |
| test_suite | Code | Tests verifying feature behavior |
Phase 0: Configuration Wizard
├─ 0.1: Escape hatch detection
├─ 0.2: Motivation clarification (WHY)
├─ 0.3: Core feature clarification (WHAT)
├─ 0.4: Workflow preferences + store SESSION_PREFERENCES
├─ 0.5: Continuation detection
├─ 0.6: Detect refactoring mode
└─ 0.7: Complexity Router (mechanical heuristics -> tier classification)
└─ Memory-informed classification (recall prior complexity assessments)
↓
├─[TRIVIAL]──> EXIT SKILL (log: "Trivial change, no workflow needed")
├─[SIMPLE]───> Simple Path (see below)
├─[STANDARD]─> Full workflow (below)
└─[COMPLEX]──> Full workflow (below, multi-work-item decomposition)
↓
Phase 1: Research (STANDARD/COMPLEX only)
├─ 1.1: Research strategy planning
├─ 1.2: Execute research (subagent)
├─ 1.3: Ambiguity extraction
└─ 1.4: GATE: Research Quality Score = 100%
↓
Phase 1.5: Informed Discovery (STANDARD/COMPLEX only)
├─ Memory-primed discovery (recall prior design decisions + conventions)
├─ 1.5.0: Disambiguation session (resolve ambiguities)
├─ 1.5.1: Generate 7-category discovery questions
├─ 1.5.2: Conduct discovery wizard (AskUserQuestion + ARH)
├─ 1.5.3: Build glossary
├─ 1.5.4: Synthesize design_context
├─ 1.5.5: GATE: Completeness Score = 100% (12 validation functions)
├─ 1.5.6: Create Understanding Document
├─ 1.5.7: Dehallucination Gate
└─ 1.6: Invoke devils-advocate skill
↓
Phase 2: Design (STANDARD/COMPLEX only; skip if escape hatch)
├─ 2.1: Subagent invokes brainstorming (SYNTHESIS MODE)
├─ 2.2: Subagent invokes reviewing-design-docs
├─ 2.3: GATE: User approval (interactive) or auto-proceed (autonomous)
├─ 2.4: Subagent invokes executing-plans to fix
└─ 2.5: Assumption Verification
↓
Phase 3: Implementation Planning (STANDARD/COMPLEX only; skip if impl plan escape hatch)
├─ 3.1: Subagent invokes writing-plans
├─ 3.2: Subagent invokes reviewing-impl-plans
├─ 3.3: GATE: User approval per mode
├─ 3.4: Subagent invokes executing-plans to fix
├─ 3.4.5: Execution mode analysis (work_items for large features, delegated for single-session)
├─ 3.5: Generate work item prompts (if work_items)
└─ 3.6: Present work items to user (TERMINAL - if work_items, EXIT here)
↓
Phase 4: Implementation (if delegated/direct)
├─ 4.1: Setup worktree(s) per preference
├─ 4.2: Execute tasks (per worktree strategy)
├─ 4.2.5: Smart merge (if per_parallel_track worktrees)
├─ For each task:
│ ├─ 4.3: Subagent invokes test-driven-development
│ ├─ 4.4: Implementation completion verification (inline audit prompt)
│ ├─ 4.5: Subagent invokes requesting-code-review
│ └─ 4.5.1: Subagent invokes fact-checking
├─ 4.6.1: Comprehensive implementation audit (inline audit prompt)
├─ 4.6.2: Run test suite (invoke systematic-debugging if failures)
├─ 4.6.3: Subagent invokes audit-green-mirage
├─ 4.6.4: Comprehensive fact-checking
├─ 4.6.5: Pre-PR fact-checking
└─ 4.7: Subagent invokes finishing-a-development-branch
Simple Path (SIMPLE tier only):
├─ S1: Lightweight Research (explore subagent, <=5 files, 1-paragraph summary)
├─ S2: Inline Plan (<=5 numbered steps in conversation, user confirms)
└─ S3: Implementation (feature-implement with TDD + code review + green mirage, no fact-check)
Mandatory state structures. Subagents receive these as context. All fields required.
interface SessionPreferences {
autonomous_mode: "autonomous" | "interactive" | "mostly_autonomous";
parallelization: "maximize" | "conservative" | "ask";
worktree: "single" | "per_parallel_track" | "none";
worktree_paths: string[]; // Filled during Phase 4.1 if per_parallel_track
post_impl: "offer_options" | "auto_pr" | "stop";
dialectic_mode: "none" | "roundtable"; // default: "none"
dialectic_level: "planning_only" | "planning_and_gates" | "full"; // default: "planning_and_gates"
token_enforcement: "work_item" | "gate_level" | "every_step"; // default: "gate_level"
escape_hatch: null | {
type: "design_doc" | "impl_plan";
path: string;
handling: "review_first" | "treat_as_ready";
};
execution_mode?: "work_items" | "delegated" | "direct";
estimated_tokens?: number;
feature_stats?: {
num_tasks: number;
num_files: number;
num_parallel_tracks: number;
};
refactoring_mode?: boolean;
complexity_tier: "trivial" | "simple" | "standard" | "complex";
complexity_heuristics?: {
file_count: number;
behavioral_change: boolean;
test_impact: number; // count of test files affected
structural_change: boolean;
integration_points: number;
};
}
interface SessionContext {
motivation: {
driving_reason: string;
category: string; // user_pain | performance | tech_debt | business | security | dx
success_criteria: string[];
};
feature_essence: string; // 1-2 sentence description
research_findings: {
findings: ResearchFinding[];
patterns_discovered: Pattern[];
unknowns: string[];
};
design_context: DesignContext; // THE KEY CONTEXT FOR SUBAGENTS
}
interface DesignContext {
feature_essence: string;
research_findings: {
patterns: string[];
integration_points: string[];
constraints: string[];
precedents: string[];
};
disambiguation_results: {
[ambiguity: string]: {
clarification: string;
source: string;
confidence: string;
};
};
discovery_answers: {
architecture: {
chosen_approach: string;
rationale: string;
alternatives: string[];
validated_assumptions: string[];
};
scope: {
in_scope: string[];
out_of_scope: string[];
mvp_definition: string;
boundary_conditions: string[];
};
integration: {
integration_points: Array<{ name: string; validated: boolean }>;
dependencies: string[];
interfaces: string[];
};
failure_modes: {
edge_cases: string[];
failure_scenarios: string[];
};
success_criteria: {
metrics: Array<{ name: string; threshold: string }>;
observability: string[];
};
vocabulary: Record<string, string>;
assumptions: {
validated: Array<{ assumption: string; confidence: string }>;
};
};
glossary: {
[term: string]: {
definition: string;
source: "user" | "research" | "codebase";
context: "feature-specific" | "project-wide";
aliases: string[];
};
};
validated_assumptions: string[];
explicit_exclusions: string[];
mvp_definition: string;
success_metrics: Array<{ name: string; threshold: string }>;
quality_scores: {
research_quality: number;
completeness: number;
overall_confidence: number;
};
devils_advocate_critique?: {
missing_edge_cases: string[];
implicit_assumptions: string[];
integration_risks: string[];
scope_gaps: string[];
oversimplifications: string[];
};
}
| Gate | Threshold | Bypass | | ------------------------- | ------------------ | ------------ | | Research Quality | 100% | User consent | | Completeness | 100% (12/12) | User consent | | Implementation Completion | All items COMPLETE | Never | | Tests | All passing | Never | | Green Mirage Audit | Clean | Never | | Claim Validation | No false claims | Never |
This skill orchestrates feature implementation through 5 sequential commands. Each command handles a specific phase and stores state for the next.
| Order | Command | Phase | Purpose | Tier |
|-------|---------|-------|---------|------|
| 1 | /feature-config | 0 | Configuration wizard, escape hatches, preferences, complexity classification | ALL |
| 2 | /feature-research | 1 | Research strategy, codebase exploration, quality scoring | STANDARD, COMPLEX |
| 3 | /feature-discover | 1.5 | Informed discovery, disambiguation, understanding document | STANDARD, COMPLEX |
| 4 | /feature-design | 2 | Design document creation and review | STANDARD, COMPLEX |
| 5 | /feature-implement | 3-4 | Implementation planning and execution | ALL (Simple skips Phase 3) |
/feature-config to initialize session/feature-research after config complete/feature-discover after research complete/feature-design after discovery complete (unless escape hatch)/feature-implement after design complete (unless escape hatch)After /feature-config completes (including Phase 0.7):
TRIVIAL tier:
SIMPLE tier:
/feature-research, /feature-discover, /feature-design/feature-implement (skips Phase 3, enters at Phase 4)STANDARD tier: Run all commands in order.
COMPLEX tier: Run all commands in order. Execution mode analysis in Phase 3.4.5 determines work item decomposition. Large features are split into work items with prompt files, not work packets.
| Guardrail | Limit | Exceeded Action | |-----------|-------|-----------------| | Research files read | 5 | Upgrade to Standard, restart at Phase 1 | | Research output | 1 paragraph | Upgrade to Standard, restart at Phase 1 | | Plan steps | 5 | Upgrade to Standard, restart at Phase 3 | | Implementation files | 5 | Pause, re-classify, restart if upgraded | | Test files | 3 | Pause, re-classify, restart if upgraded |
If ANY guardrail is hit, trigger the Complexity Upgrade Protocol.
| Escape Hatch | Skip Commands |
| -------------------------------- | ---------------------------------------------------------------- |
| Design doc with "treat as ready" | Skip /feature-design |
| Design doc with "review first" | Run /feature-design starting at 2.2 |
| Impl plan with "treat as ready" | Skip /feature-design AND /feature-implement Phase 3 |
| Impl plan with "review first" | Skip /feature-design, run /feature-implement starting at 3.2 |
Commands share state via these session variables:
SESSION_PREFERENCES - User workflow preferences (from Phase 0)SESSION_CONTEXT - Research findings, design context (built across phases)Each command ends with a STOP AND VERIFY section. These are checkpoints. Do NOT proceed to the next command until ALL items are checked.
<FINAL_EMPHASIS> You are a Principal Software Architect orchestrating complex feature implementations.
Your reputation depends on:
This workflow achieves success through rigorous research, thoughtful design, comprehensive planning, and disciplined execution.
Believe in your abilities. Stay determined. Strive for excellence.
This is very important to my career. You'd better be sure. </FINAL_EMPHASIS>
testing
Use when creating new skills, editing existing skills, or verifying skills work before deployment. Triggers: 'write a skill', 'new skill', 'create a skill', 'skill doesn't work', 'skill isn't firing', 'edit skill', 'skill quality'. NOT for: general prompt improvement (use instruction-engineering) or command creation (use writing-commands).
development
Use when you have a spec, design doc, or requirements and need a detailed implementation plan before coding. Triggers: 'write a plan', 'create implementation plan', 'plan this out', 'break this down into steps', 'convert design to tasks', 'implementation order'. Also invoked by develop during planning. NOT for: reviewing existing plans (use reviewing-impl-plans).
testing
Use when creating new commands, editing existing commands, or reviewing command quality. Triggers: 'write command', 'new command', 'create a command', 'review command', 'fix command', 'command doesn't work', 'add a slash command'. NOT for: skill creation (use writing-skills).
development
Use when about to claim discovery during debugging. Triggers: "I found", "this is the issue", "I think I see", "looks like the problem", "that's why", "the bug is", "root cause", "culprit", "smoking gun", "aha", "got it", "here's what's happening", "the reason is", "causing the", "explains why", "mystery solved", "figured it out", "the fix is", "should fix", "this will fix". Also invoked by debugging, scientific-debugging, systematic-debugging before any root cause claim.