facundomartinezvidal/developer
Software developer agent and skills for any language: implementing and reviewing code, framework practices for ASP.NET Core and Spring Boot, implementing architecture designs, clean code, refactoring, testing, debugging, secure coding, APIs, production readiness, user interfaces, design patterns, algorithms, relational databases and pragmatic practices.
Designs, implements and reviews web and library APIs in any language, including REST and HTTP endpoints, RPC, GraphQL, webhooks, events and public functions other code depends on. Use whenever someone adds or changes an endpoint, request or response shape, error format, pagination, versioning or a public library interface, or asks whether a change breaks clients, even if they don't say "API design". Covers idempotency and "cómo diseño este endpoint", "qué status devuelvo", "esto rompe a los clientes" and "cómo versiono esto". For internal module interfaces and information hiding use the architect's software-design; for choosing an API style across a system use the architect's architecture-decisions.
Writes and reviews readable, idiomatic code in any language at the level of names, functions, comments, classes, error handling and async or concurrent code, using Clean Code, A Philosophy of Software Design and The Pragmatic Programmer. Use whenever code is hard to follow, a function does too much, a name misleads, errors are handled badly, async code misbehaves, or someone asks whether code is clean or idiomatic, even if they don't say "clean code". Covers "cómo nombro esto", "esta función es muy larga", "cómo manejo este error", "cuándo comento" and translating advice between languages. For finding and fixing smells step by step use refactoring; to review a full PR use reviewing-code; for module interfaces across callers use the architect's software-design. Not for what a formatter already enforces.
Chooses data structures and algorithms and reasons about cost and performance in any language. Use whenever someone decides between a list, set, map, heap or tree, code gets slow on large inputs, needs profiling or caching, wants Big-O analysis, or faces a sorting, searching, graph, greedy, recursion or dynamic programming problem, even if they only say "esto tarda mucho". Covers "qué estructura uso", "cuál es la complejidad", "camino más corto" and "es O(n²)". For schema and query problems use relational-databases. Not needed when the input is small and the plain version is clearly fast enough.
Finds the root cause of failures in any language with a reproduce, hypothesize and prove method, using The Pragmatic Programmer. Use whenever behavior is wrong and the cause is unknown: a stack trace, a bug report, a crash or hang, an intermittent or flaky failure, something broken only in production, a fix that didn't hold, or someone stuck on an error, even if they only paste the message. Covers "por qué falla", "no entiendo este error", "falla a veces", "arreglá este bug" and "en mi máquina anda". Not needed when the cause is already evident from the error; for writing regular tests use testing; to add logging or retries use production-readiness.
Recognizes, chooses, applies and removes design patterns and anti-patterns in any language, using Head First Design Patterns, Applying UML and Patterns (GRASP) and Agile Principles, Patterns, and Practices. Use whenever someone asks which pattern fits, whether one is overkill, which class should own a responsibility, or how to explain one, or when growing conditionals, object creation or notification logic might call for one, even if they never name a pattern. Covers Strategy, Factory, Observer, Decorator, Adapter, Command, State, Repository, functional equivalents, and "qué patrón uso", "explicame Observer", "quién debería hacer esto" and "es sobreingeniería este patrón". For system-level structure use the architect agent. Not a reason to add a pattern if plain code is enough.
Software developer for any programming language that implements features, fixes bugs, refactors and writes tests, and also advises on code. Use for building or changing code, code review, diagnosing failures, testing strategy, secure coding, APIs, production behavior, choosing a pattern or data structure, schemas and SQL. Also covers "implementá esto", "arreglá este bug", "refactorizá esta función", "revisá este código", "por qué falla", "cómo testeo esto" and "qué patrón uso". Applies current framework practices, with deep guidance for ASP.NET Core and Spring Boot, and implements designs and ADRs from the architect agent. A question gets analysis; a request to build or change gets the working, verified change. New structural decisions belong to the architect agent.
Applies current best practices of web and application frameworks, with deep guidance for ASP.NET Core and Spring Boot, and looks up the official documentation for the version installed. Use whenever code touches controllers, endpoints, dependency injection, configuration, EF Core, JPA or Hibernate, framework security, framework tests or startup, or someone asks how something should be done in a framework, even if they just say "cómo se hace esto en Spring" or "esto está bien en .NET". Also use for upgrades and for any other framework such as Django, Rails, Laravel, NestJS or Next.js. Covers "cuál es la forma correcta en ASP.NET", "por qué esto rompe en Spring Boot" and "cómo configuro esto". To turn an architect's design into framework code use implementing-designs; for general API contracts use api-design.
Turns architecture plans into working code without losing what was decided, including ADRs, C4 views, Clean Architecture layers, DDD models, threat models and proposals from the architect agent. Use whenever someone asks to implement, apply, or follow a design, ADR, architecture decision, plan or threat model, or asks how a design should look in code such as ASP.NET Core or Spring Boot, even if they just say "implementá lo que dijo el arquitecto" or "cómo llevo esto a código". Covers mapping layers, ports, aggregates, domain events and security mitigations to framework code, and making the design enforceable. If the decision itself is still open or needs changing, use the architect agent.
Advises on how to approach development work, using The Pragmatic Programmer and common practice. Use whenever requirements are unclear, a task needs slicing, the choice is between a prototype and a real implementation, someone needs an estimate, faces a merge conflict, a dependency upgrade or an unfamiliar code base, needs documentation or a README, or asks about version control, automation or working with a team. Covers "cómo encaro esto", "cuánto puede llevar", "prototipo o directo", "qué automatizo", "cómo actualizo esta librería" and "alcanza con esto". For testing or debugging method use those skills; for technology decisions use the architect agent. Not needed for a clearly specified small task.
Makes code behave well in production, in any language, through logging, metrics, tracing, timeouts, retries, graceful failure and safe releases. Use whenever code calls a network or another service, runs as a job or a queue consumer, needs logs or alerts, can fail partially, or is about to ship, even if the user only says "agregá logs" or "esto se cae a veces". Covers circuit breakers, health checks, feature flags, rollbacks and "qué logueo", "cómo reintento", "está listo para producción" and "cómo lo despliego sin romper". For finding the cause of a specific failure use debugging; for designing deployment topology use the architect agent.
Improves existing code in any language without changing its behavior, using Fowler's Refactoring (code smells and the catalog of moves) plus Clean Code, The Pragmatic Programmer and A Philosophy of Software Design. Use whenever code resists a change, someone wants to clean up before adding a feature, asks what smells code has or whether a refactor is worth it, or must make a large change in small safe steps, even if they just say "esto se puede mejorar". Covers Extract Function, Move Function, Replace Conditional with Polymorphism and "refactorizá esto", "qué code smells tiene", "está duplicado" and "vale la pena refactorizar". For restructuring layers or modules use the architect agent. Not for style preferences with no change cost.
Designs relational schemas, normalizes tables, writes and reviews SQL, chooses indexes, and handles transactions and migrations on any SQL engine. Use whenever someone models tables, adds a column or migration, writes a non-trivial query, uses an ORM, has a slow query, or handles balances, stock or uniqueness under concurrency, even if they only say "necesito guardar esto". Covers "cómo modelo estas tablas", "qué clave uso", "está normalizado", "armame esta consulta", "falta un índice" and "cómo hago esta migración sin romper". For whether the database should be hidden behind a port use the architect's clean-architecture. Not for operating a server, replication or NoSQL selection.
Reviews diffs and pull requests for correctness, safety and maintainability, and gives feedback people can act on, in any language. Use whenever someone asks to look over a PR, a diff, a commit or a branch before merging, or to check their own change, even if they just say "le das una mirada". Covers "revisá este PR", "está bien este cambio", "qué le dirías a este PR" and how to respond to review comments. For a deep review of one aspect, combine with secure-coding or testing. Reviews existing work; to review a whole package's structure use the architect agent.
Writes and reviews application code so it resists common vulnerabilities, in any language, following the OWASP Top 10:2025 and CWE guidance. Use whenever code handles user input, SQL or shell commands, files, uploads, URLs, HTML, logins, sessions, permissions, tokens, secrets, encryption, payments or personal data, and whenever someone asks if code is safe, even if they never say "security". Covers injection, XSS, CSRF, SSRF, broken access control, password storage, dependency risks and "esto es seguro", "revisá la seguridad de este código", "cómo guardo contraseñas", "cómo manejo este token". For design-level threat modeling use the architect's threat-modeling. For defensive work on code the user owns or is authorized to test.
Writes and reviews automated tests in any language and makes code testable, using Clean Code, The Pragmatic Programmer, Refactoring and Clean Architecture plus common practice on test doubles and legacy code. Use whenever someone adds behavior that needs tests, asks what to test, works with mocks or integration tests, has code without tests, a brittle, slow or flaky suite, or asks about TDD or coverage, even if they only say "probá que esto ande". Covers "escribí tests para esto", "qué debería testear", "este test es frágil", "cómo testeo esto" and "conviene TDD". For a failure with an unknown cause use debugging. Not for load testing or test infrastructure setup.
Builds and reviews screens and components on any front-end stack, including web, mobile and desktop. Use whenever someone creates or changes a page, component, form, table, modal or client-side state, or a UI bug appears, even if they only say "armame esta pantalla" or "el formulario no anda". Covers loading, empty and error states, accessibility, responsive layout, forms, front-end performance and checking the result in a real browser or simulator. For endpoints behind the UI use api-design; for visual brand design and mockups use a design tool.