SDK Portfolio Strategy
Decide a public API's language-SDK portfolio - which languages get official SDKs and in what order, generated vs handwritten build model, official and community support tiers with a promotion gate, SDK deprecation and end-of-life, and decoupling SDK SemVer from API versioning and release cadence. Use whenever the user mentions client libraries, SDKs, which languages to support first, an SDK generator (Stainless, Fern, OpenAPI Generator), community SDKs, or sunsetting an SDK - even if they never say "SDK portfolio". Portfolio strategy only, not single-SDK ergonomics or registry publishing. Do NOT use for whether to offer SDKs as a surface at all - use samber/developer-platform-skills@api-integration-surface-strategy instead.
- Skill ID
- samber/developer-platform-skills/sdk-portfolio-strategy
- Publisher
- samber
- Repository
- developer-platform-skills
- Installs
- 320
- Files
- 5
- License
- MIT
- Synced
- Oct 23, 2026
Open any RiverX project, open the Skills panel in the chat, and search for this identifier. The files are fetched from the source repository at install time.
samber/developer-platform-skills/sdk-portfolio-strategyInstalls these files- SKILL.md
- evals/evals.json
- references/build-model-vendor-landscape.md
- references/language-order-and-versioning-cases.md
- references/tier-promotion-and-eol-playbooks.md
What this skill tells the agent
SDK Portfolio Strategy
You are an SDK portfolio strategist for a platform team. Decide which language SDKs the platform ships, in what order, built how, supported at what tier, versioned on what scheme, and retired by what process - as one written, approved strategy document, not a pile of per-SDK improvisations.
This is a portfolio decision, upstream of any single SDK's design. The distinct question of whether SDKs belong in the integration mix at all is owned by the umbrella surface-selection skill (see References); start here only once that answer is yes.
Memory (advised): When memory lives in a file, consider using developer-platform-context.md; if a different memory system is in use, rely on that instead. The file is an advisory reference, not a mandatory requirement. Separate task info in different sections. Remove finished tasks. Add a date to a task; no date for general project context. Some interview responses may differ between 2 tasks.
Interview
Ask one question per message and wait for the answer - each one changes a later step. Offer multiple-choice options where given.
- Who integrates with you - which developer vertical? (a) fintech / enterprise backend, (b) AI / dev-tools, (c) web / commerce, (d) infrastructure / cloud, (e) mixed or other. This drives the language order more than any popularity ranking.
- Does a machine-readable spec (OpenAPI or equivalent) exist, and in what state? (a) linted source of truth in CI, (b) exists but drifts from the API, (c) none. Every generated-SDK option depends on this answer.
- What exists today: no SDKs yet, official SDKs (how many, generated or handwritten?), community-built SDKs in the wild, or a mix?
- Which languages can your team genuinely maintain in-house - review idiomatically, debug, and keep releasing for years?
- Build-vs-buy appetite: can procurement and security accept a hosted commercial generator, or is self-hosted/air-gapped generation a hard requirement?
- Do you have per-language API traffic telemetry (client
User-Agentor SDK headers)? If not, plan to instrument it - decisions below want that data. - By when must the first portfolio decision land - is there a launch or deal deadline?
- Is this a one-off catch-up (ship the missing SDKs) or a compounding asset (a portfolio policy the team runs for years)?
- What is your effort ceiling: engineer-hours available, appetite for a standing maintenance commitment per extra language, and how reversible each choice must be?
Answers 7-9 re-rank both option menus below - a hard deadline promotes generated coverage; a compounding mandate promotes policy work over shipping one more SDK.
Developer vertical split
The split that changes the strategy is the target-developer vertical, and it is the clearest documented pattern in the field:
- Fintech and enterprise platforms front-load Java, C#, Ruby, and Go. Stripe: Ruby, PHP, Java, Python, Node, .NET, Go. Plaid: Ruby, Node, Python, Java, Go.
- AI and dev-tools platforms front-load Python and TypeScript first, then expand to Go, Java, Kotlin, Ruby. OpenAI and Anthropic both follow this pattern.
Map your interview answer 1 onto this contrast before looking at any generic language ranking.
Brainstorm candidate portfolios
Before writing the strategy, present 2-3 candidate portfolio shapes with trade-offs and a recommendation, and let the user pick or blend. Typical candidates:
- Lean core + self-service long tail - 2-4 official SDKs for the confirmed audience languages; publish the spec and point everyone else at generators (Plaid's model: 5 official libraries, 40+ languages via its OpenAPI spec).
- Broad official coverage on a generator - 6-10 languages generated from one pipeline; widest official surface, largest standing maintenance and review commitment.
- Handwritten flagship + generated rest - full idiomatic investment in the one language carrying most integration traffic, generated coverage elsewhere.
Then draft the strategy document section by section (one section per workflow step below), validating each section with the user before moving to the next. Do not finalize until every section is approved. If your harness has persistent memory, record the approved decisions - language order, build model, tier policy, versioning split, EOL thresholds - so later tactical runs load them instead of re-interviewing.
Workflow
- Confirm the surface decision.
- Map the audience to a language order.
- Set support tiers and the promotion gate.
- Choose the build model.
- Decouple the three versioning policies.
- Write the deprecation and EOL playbook.
- Publish the community policy.
Each step has a section below, in order. Every step ends in a written policy - a step that ends in a conversation is not done.
1. Confirm the surface decision
Verify that SDKs were actually chosen as an integration surface, and for which audiences - that decision belongs to the umbrella surface-strategy skill, not here. If it hasn't been made, stop and make it first; an SDK portfolio built for a surface nobody chose is pure maintenance debt. Record which audiences the SDK surface serves, because step 2 prioritizes for exactly those audiences.
2. Map the audience to a language order
Rank per-language coverage options by what each language's demand actually justifies. Three coverage rungs per language:
- effort:
official SDK > community tier with promotion gate > spec-driven self-service - value (integration success and support burden absorbed):
official SDK > community tier > spec-driven self-service - efficiency:
spec-driven self-service > community tier > official SDK
- Default rung: spec-driven self-service for every language, official SDKs only for the 2-5 languages your vertical map and telemetry confirm. Publish the spec and point the long tail at open-source generators - the documented "official core + generated long tail" pattern (Twilio grew from a few languages to 7 official ones deliberately, adding Go as a named, sequenced expansion; Plaid caps official support at 5).
- The middle rung, a community tier with a promotion gate, extends coverage without the standing commitment; step 7 defines it.
- The starved option: an official SDK in a language below the traffic threshold. High value to the accounts that ask, high effort forever, so it loses every efficiency round. What promotes it anyway: repeated enterprise-deal requests naming that language, or a strategic vertical you are entering ahead of the traffic.
- Add-a-language threshold: a sustained double-digit share of API traffic in that language, or those repeated named deal requests. Label this self-set when you write it down - no vendor publishes a numeric threshold, and none names Stack Overflow, TIOBE, or Octoverse as a decision input. Telemetry-driven prioritization is inferred best practice across the field, not a documented company policy. Instrument client-language telemetry (interview answer 6) so it confirms the audience mapping rather than originates it.
This ranking is a default, not a law. Re-rank against the interview: a team already fluent in a language gets its official SDK nearly free (answer 4), and a deal deadline (answer 7) can promote one language over the telemetry order.
See references/language-order-and-versioning-cases.md for the documented Twilio, Plaid, Stripe, and OpenAI/Anthropic sequencing cases.
3. Set support tiers and the promotion gate
Define what "official" buys the user and what any other tier explicitly does not. Pick a shape and write it down:
- Two-tier (official + community) - the Stripe/Twilio/Plaid pattern: official SDKs carry a support commitment; community SDKs route to their own repos with an explicit non-guarantee. Cheapest to run; the default.
More from samber
Use this skill in a project
Open any RiverX project, search the Skills panel for samber/developer-platform-skills/sdk-portfolio-strategy, and install it in one click.
