From argos
REST/GraphQL/gRPC/AsyncAPI/WebSocket/SSE paradigma seçim disipline. Public vs internal, consumer profile (browser/mobile/partner/service), hybrid mimari (BFF GraphQL + gRPC backend; Apollo Federation; grpc-gateway; Connect), versioning + tooling karşılaştırma. api-contract-review'dan farkı: review değil paradigma karar.
How this skill is triggered — by the user, by Claude, or both
Slash command
/argos:api-paradigm-selectionThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
`agents/shared/severity-rubric.md` ve `agents/shared/escalation-matrix.md`
agents/shared/severity-rubric.md ve agents/shared/escalation-matrix.md
default-load sayılır (agents/coordination.md §11). Bu skill'in çıktısı
Critical / High / Medium / Low + kanıt formatında olmak zorunda — spekülatif
Critical yasak. Sahiplik dışı bulgu ilgili agent'a delege; karar yetkisi eşiği
aşılırsa kullanıcı onayı zorunlu.
| Soru | Cevap |
|---|---|
| Consumer? | browser / mobile / partner / internal service |
| Volume? | RPS, concurrent connection |
| Latency budget? | p50, p99 |
| Bandwidth constraint? | mobile cellular, IoT |
| Streaming? | hayır / server→client / client→server / bidirectional |
| Caching? | edge CDN OK / personalized only |
| Schema evolution sıklığı? | weekly / monthly / quarterly |
| Public surface? | partner SDK / 3rd-party |
| Tooling maturity gerek? | full ecosystem / niche OK |
→ REST + OpenAPI 3 default
/v1/, /v2/)GraphQL public alternative:
→ gRPC + Protobuf default
REST internal alternative:
→ GraphQL (over-fetch eliminate) veya REST (basitlik)
Hybrid:
→ AsyncAPI + Kafka/NATS/RabbitMQ/SQS
/data-contracts skill bağıWebHook fallback:
→ WebSocket
/websocket-debug skill→ SSE veya WebSocket
BFF:
[mobile] [web] → [GraphQL BFF] → [gRPC service mesh]
[partner] → [REST API] → [gRPC service mesh]
Apollo Federation:
[GraphQL gateway] ── compose ──┬─ Users subgraph (Go gRPC backend)
├─ Orders subgraph (Python REST backend)
└─ Inventory subgraph (Node gRPC)
grpc-gateway (proto annotation → REST mirror):
service OrderService {
rpc GetOrder(GetOrderRequest) returns (Order) {
option (google.api.http) = { get: "/v1/orders/{order_id}" };
}
}
Connect (Buf): tek handler — gRPC + Connect + browser; bundle ~10KB.
/architecture-decision-writer delege.
# ADR-00X: Adopt GraphQL BFF + gRPC internal
## Context
Mobile + web 4 platform; ortalama 8 downstream service aggregate. Mobile
over-fetch p95 1.8MB; mobile bandwidth maliyet yüksek; client-side stitching
karışık.
## Decision
- BFF: GraphQL (Apollo Server)
- Internal: gRPC (existing)
- Public partner API: REST mevcut kalır
## Alternatives
- A. Tek REST BFF: over-fetch devam (mobile +30% data)
- B. Tek gRPC: browser native değil; grpc-web bundle +20KB; flexible
query yok
- C. Apollo Federation: ≤ 5 subgraph (henüz 2); premature
## Consequences
- (+) Mobile data -%40
- (+) Frontend velocity (single query)
- (-) GraphQL N+1 problem; DataLoader gerek
- (-) Caching kompleks; persisted queries gerek
- (-) Rate limit query-complexity-based
Yeni paradigma adoption:
Phase 1 (1 ay): Pilot 1 endpoint paralel (REST + yeni)
Phase 2 (2 ay): Top 5 endpoint migrate (shadow read)
Phase 3 (3 ay): Consumer migrate (deprecation header)
Phase 4 (3 ay): Eski paradigma sunset
Big-bang yasak.
| Paradigma | Tooling |
|---|---|
| REST | OpenAPI Generator, Swagger UI, Postman, Pact, schemathesis |
| GraphQL | Apollo Server/Studio, Hasura, urql, graphql-codegen |
| gRPC | buf, grpcurl, otelgrpc, Connect |
| AsyncAPI | AsyncAPI Studio, Schema Registry, schemathesis |
| WebSocket | k6 ws, Postman, wscat |
Her paradigma için:
| Paradigma | Versioning |
|---|---|
| REST | URL /v1/... + RFC 9745 Deprecation header |
| gRPC | proto package v1, v2; field number reserved |
| GraphQL | @deprecated directive; schema versioning yok |
| AsyncAPI | topic events.X.v1; Schema Registry compat |
/semantic-versioning bağı.
User: /api-paradigm new-svc (mobile + web + partner consumer; çoklu downstream)
Agent (system-design-architect + api-contract-guardian):
1. Use case inventory:
- Consumer: iOS, Android, web SPA, 3 partner SDK
- Volume: 800 RPS sustained
- Latency: p99 < 300ms client; p99 < 100ms internal
- Streaming: server-stream notifications (Phase 2)
- Cache: 60% read product catalog; CDN gerek
2. Decision matrix:
- Internal: gRPC (existing mesh, mTLS, polyglot, perf)
- Mobile + web: GraphQL BFF (over-fetch -%40 mobile)
- Partner: REST (existing SDK, ekosistem)
- Notifications: SSE (tek yön, HTTP-friendly, reconnect)
- Events: AsyncAPI Kafka (existing pipeline)
3. ADR-0099 yazıldı (alternatif: tek REST BFF, tek gRPC, Federation).
4. Migration plan:
- Phase 1 (1 ay): GraphQL BFF pilot 5 endpoint
- Phase 2 (2 ay): Apollo persisted queries + DataLoader
- Phase 3 (3 ay): SSE notifications
- REST partner API as-is (sustaining)
5. Tooling: Apollo Server v4, graphql-codegen TS types, persisted query DB,
query complexity rate-limiter.
6. Versioning:
- GraphQL: `@deprecated` directive
- REST partner: URL /v1, /v2 (`/semantic-versioning`)
- gRPC internal: proto package v1 (`/data-contracts`)
# API Paradigm Selection: <service-or-system>
## Use case inventory
- Consumer profile + volume + latency + streaming + cache
## Decision per use case
- Public partner: REST
- Internal: gRPC
- BFF: GraphQL veya REST
- Async: AsyncAPI
- Real-time: WebSocket / SSE
## Hybrid pattern
- BFF / Federation / gateway / Connect
## ADR
- Decision + alternatives + consequences
## Migration plan (varsa)
- Phase 1-N
## Tooling
## Versioning per paradigma
## Action Items
| P | Aksiyon | Sahip | Bitiş |
npx claudepluginhub resultakak/argos --plugin argosGuides creation, editing, and verification of skills for AI coding agents using test-driven development with subagent scenarios. Use when authoring or debugging skills.