architectSoftware architect for planning and designing new systems and changes to existing packages, modules, layers and whole systems, and for consulting on them. Use for architecture consultation, structural reviews, implementation plans, consequential decisions, domain modeling, documentation and design-l
api-designDesigns and reviews APIs other code depends on: HTTP endpoints, RPC, GraphQL, webhooks, events and public library functions. Use for request and response shapes, status codes, errors, pagination, idempotency, versioning and breaking changes (\"qué status devuelvo\", \"esto rompe a los clientes\").
design-patternsChooses, applies and removes design patterns and GRASP responsibilities, in any language. Use when growing conditionals, object creation or notifications might need a pattern, to judge if one is overkill, or to explain one (\"qué patrón uso\", \"quién debería hacer esto\").
production-readinessMakes code behave well in production with logging, metrics, tracing, timeouts, retries, graceful failure and safe releases. Use when code calls other services, runs as a job or consumer, or is about to ship (\"agregá logs\", \"está listo para producción\"). A known failure: debugging.
relational-databasesDesigns relational schemas and migrations, writes and reviews SQL, and handles indexes, transactions and concurrency on any SQL engine or ORM. Use for tables, keys, slow queries, balances, stock or uniqueness (\"cómo modelo estas tablas\", \"falta un índice\"). Not for NoSQL.
secure-codingWrites and reviews code to resist vulnerabilities, following OWASP Top 10 and CWE. Use when code handles input, SQL or shell commands, files, auth, sessions, permissions, tokens, secrets or personal data, or someone asks if code is safe (\"esto es seguro\"). Design threats: threat-modeling.
testingWrites and reviews automated tests and makes code testable, in any language. Use when behavior needs tests, mocks are brittle, a suite is slow or flaky, code has no tests, or for TDD and coverage (\"qué debería testear\", \"cómo testeo esto\"). An unknown failure: debugging.
architecture-decisionsCompares technical options against the project's constraints and recommends one, or records an agreed decision as an ADR. Use for costly choices such as technology, deployment, build vs. buy or migrations, and for writing or superseding ADRs (\"qué conviene usar\"). Not for small reversible choices.
architecture-documentationDocuments an existing architecture for a specific audience with evidence-based C4, flow, deployment or focused class diagrams. Use for overviews, onboarding and stakeholder views (\"diagrama de arquitectura\", \"documentá cómo está armado\"). Not for API reference docs or ER diagrams alone.
clean-architectureReviews and designs code structure with Clean Architecture: layers, the Dependency Rule, ports and adapters, boundaries and packaging. Use when a framework, ORM or database leaks into business logic, or to decide where code lives (\"cómo estructuro el proyecto\", \"dónde va esta lógica\").
domain-driven-designModels complex business domains with ubiquitous language, bounded contexts and aggregates. Use when business terms conflict, a shared model is tangled, or a business invariant needs a consistency boundary (\"cómo modelo este dominio\", \"agregados\"). Layers and folders alone: clean-architecture.
software-designDesigns and reviews module interfaces: information hiding, what callers must know, call ordering, and failure or retry contracts. Use when one change spreads across modules, an API is easy to misuse or a layer adds nothing (\"cómo diseño esta interfaz\", \"lo separo o lo junto\").
threat-modelingThreat-models a design with STRIDE: assets, data flows, trust boundaries, ranked risks and mitigations. Use when designing or reviewing something with users, money, files, tenants, webhooks or AI agents (\"es seguro este diseño\", \"cómo lo podrían atacar\"). Vulnerable code: secure-coding.