From team-of-agents
Use when designing APIs, working with databases, building microservices, handling authentication and authorisation, optimising server performance, designing data models, or any task involving server-side logic, infrastructure, or system architecture.
npx claudepluginhub pranav8494/team-of-agentsThis skill uses the workspace's default tool permissions.
```
Searches, retrieves, and installs Agent Skills from prompts.chat registry using MCP tools like search_skills and get_skill. Activates for finding skills, browsing catalogs, or extending Claude.
Checks Next.js compilation errors using a running Turbopack dev server after code edits. Fixes actionable issues before reporting complete. Replaces `next build`.
Guides code writing, review, and refactoring with Karpathy-inspired rules to avoid overcomplication, ensure simplicity, surgical changes, and verifiable success criteria.
Share bugs, ideas, or general feedback.
No new behaviour without a test that fails first. Data outlives code — schema design deserves more care than any single feature.
Use this table to determine what to produce for each task type:
| User asks for | What to produce |
|---|---|
| API design | Resource URL structure, HTTP verb mapping, status code table, error response shape (RFC 9457 Problem Details), pagination strategy, versioning decision, and OpenAPI spec outline |
| Data model / schema design | Normalised ER diagram or table definitions, surrogate key choice with rationale, index plan for every query path, migration strategy (forward-only, zero-downtime), and EXPLAIN ANALYZE output for non-trivial queries |
| New feature / endpoint implementation | Confirm paradigm (OOP/FP/hybrid), propose API contract and data model first, list reuse candidates found in codebase, then implement with domain logic separated from infrastructure, validation at boundaries, and explicit error handling |
| Code review | Per-concern feedback using severity labels (blocker / major / minor / nit / question / nice); check input validation, credential handling, query indexing, error surfacing, test coverage |
| Authentication / authorisation design | OAuth 2.0 flow selection with rationale, JWT claim validation checklist, token lifetime recommendation, secret storage approach, rate-limit plan for auth endpoints |
| Performance optimisation | Measurement-first: identify bottleneck with profiling data or query plan; propose targeted fix with expected before/after impact; no speculative optimisation |
| Microservice / system design | Service boundary rationale, communication pattern (REST vs gRPC vs events) with trade-offs, data ownership model, failure mode analysis, observability plan |
| Event-driven / messaging design | Delivery guarantee choice (at-least-once / exactly-once) with consumer idempotency requirement, schema evolution strategy (Avro/Protobuf + Schema Registry), dead-letter queue policy |
| Security review | Parameterised queries check, auth boundary audit, secret exposure scan, PII-in-logs check, threat model update |
| Signal | Paradigm | Principles that apply |
|---|---|---|
| Repository/Service/Mapper classes, inheritance hierarchies | OOP | SOLID, GoF design patterns |
val/const everywhere, no mutation, pipeline operators | FP | Immutability, pure functions, Railway-Oriented Programming |
Effect types (Option, Either, Result) in signatures | FP | Algebraic design, typeclass constraints |
| Multi-paradigm language (TS, Python, Kotlin) | Hybrid | SOLID at module boundaries; FP discipline inside function bodies |
| Principle | Apply when | Do NOT apply when |
|---|---|---|
| SRP | A class changes for two different reasons (different teams, different rates) | Splitting a small, cohesive class — produces shotgun surgery (Fowler, Refactoring) |
| OCP | Stable behaviour with variant implementations (payment processors, notification channels). Abstract on the third repetition, not the first | Early in the system's life before variation axes are clear |
| LSP | Always, when using inheritance or interface implementation — violations must be fixed | N/A |
| ISP | Fat interfaces force clients to depend on methods they don't use | Micro-interfaces (one method each) in languages without structural typing — navigation overhead |
| DIP | Every boundary you want to test or swap: DB access, external APIs, clock | Value objects, utilities, pure functions — injecting StringFormatter is over-engineering |
| Pattern | Use case | Watch out for |
|---|---|---|
| Strategy | Multiple algorithms at runtime: payment processors, pricing rules, discount strategies | Using if/switch on a fixed enum where Strategy adds no value |
| Factory Method | Creating objects from runtime context: event deserialisation, DB connection from config | — |
| Observer / Domain Events | Notify downstream systems after a write without direct coupling | In-process observer for durable events — use a message broker (Kafka, RabbitMQ) for durability |
| Decorator | Cross-cutting concerns layered on a core behaviour: caching, retry, metrics, circuit breaker | — |
| Adapter | Wrap third-party SDK behind a domain interface; map errors to domain types | Coupling domain code directly to Stripe/Twilio types |
| Template Method | Fixed workflow, variant steps: import pipelines, batch jobs | — |
| Repository (DDD) | Abstract data access so domain logic doesn't depend on SQL/ORM specifics | — |
REST:
/resources/{id}, /resources/{id}/sub-resourcesnext_cursor) for large, frequently-updated datasets; offset only for small stable datasets/v1/) for breaking changes only — backward-compatible changes don't need a new versiontype, title, status, detail; map all domain exceptions to HTTP status codes in a single global handlergRPC:
Event-driven:
event_id)OpenAPI: document all REST endpoints as a first-class deliverable; treat it as living documentation.
created_at and updated_at on every tableWHERE clause on a large table has a covering index; use EXPLAIN ANALYZE before shipping any non-trivial queryversion column + reject writes where version ≠ expected) prevents lost updates without DB-level lockssql.ErrNoRows becomes UserNotFoundError before crossing into the service layerResult<T, E> / Either<E, A> for expected failures (validation, not-found); Railway-Oriented Programming (Wlaschin, Domain Modeling Made Functional) chains them without nested conditionalsalg, iss, aud, exp, iat, sub; short-lived access tokens (15 min) + long-lived refresh tokens (HttpOnly cookie or secure storage)git-secrets or Gitleaks in CI@Transactional rollback or table truncate; never share mutable state across tests/health, /ready) on every serviceEnd every response with a confidence signal on its own line:
CONFIDENCE: [High|Medium|Low] — [one-line reason]
If the task is outside this skill's scope or you lack the information needed to proceed, return this instead of a confidence signal:
BLOCKED: [reason] — [what information would unblock this]
Do not guess or produce low-quality output to avoid returning BLOCKED. A precise BLOCKED is more useful than a low-confidence guess.