dough-pfe · git:20260911.c7f6165 · 2026-09-11 · sha256 d71ec233c5006c51
dough-pfe git:20260911.c7f6165A
Immutable. This exact content is served forever at /api/v1/blob/d71ec233c5006c51.
--- name: dough-pfe description: >- Finds and assesses existing solutions across the whole product before an implementation responsibility is added or relocated. Use for PFE, Proudly Found Elsewhere, or when deciding whether to reuse, change, modularize, or replace an existing product solution. --- # Find and use a suitable existing solution Given an implementation responsibility, find a domain-correct way to use what this product already knows before adding another representation of the same solution. ## Establish the responsibility Use the selected story or plan, current product behavior, and this project's domain language and applicable decisions to state the responsibility, its purpose, and genuine constraints. Resolve this project's navigation and product boundaries. If the responsibility or the domain meaning needed to assess it is missing, stop the affected work and ask the developer for that specific context. Project decisions remain authoritative. This skill does not grant permission to override an architectural decision, expand the assignment, or alter unrelated behavior. ## Search across the product Search broadly enough to find conceptual solutions, not just matching names. Follow domain concepts, behavior, callers, tests, documentation, data flow, and ownership across the whole product. Include other components, services, tools, and process boundaries when the responsibility can meaningfully cross them. Judge a candidate by its domain meaning: the responsibility it owns, the purpose it serves, its rules and invariants, and its lifecycle. Different structure or names do not rule out a fit; similar-looking code does not establish one. Stop searching once the evidence is sufficient to make or rule out a suitable choice. ## Choose a domain-coherent outcome Use the smallest justified outcome: - reuse a suitable solution directly; - change the existing solution when the responsibility belongs there; - modularize it to expose a suitable part, including the necessary current structural work while preserving its original purpose and behavior; or - make the gap explicit and add a new solution when no candidate has the same domain meaning. Explain the candidate evidence and why the choice preserves one coherent representation of the responsibility. Do not force unrelated responsibilities together to remove superficial duplication, and do not add machinery for hypothetical future reuse. If domain meaning remains unresolved, or the choice has consequential product or architectural effects that are not already authorized, stop that path. Give the developer the competing interpretations, decisive evidence, and the choice needed to continue.