Skip to content
Back to skills

Developer Surface Strategist

ASecurity

Chooses and designs developer surfaces for an agentic product: SDK, CLI, MCP, GUI, API, webhooks, and pd tube-style listener/sender workflows. Use when deciding why a user belongs in an SDK versus CLI/MCP/GUI, planning Python SDK parity, or making agent invocation easy across languages. NOT for implementing the full SDK, generic API docs, or UI visual design.

  • 2 stars
  • 0 votes
  • 0 copies
  • 0 views
  • Added September 24, 2026
toolstypescriptpythongobashapi

Works with

  • terminal
  • cli
  • api
  • mcp

Security analysis

A100/100

Pro scans all 10 files and shows the line behind each finding

Scanned September 24, 2026

npx -y skills add curiositech/port-daddy --skill developer-surface-strategist --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Developer Surface Strategist?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Developer Surface Strategist
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/curiositech-developer-surface-strategist/badge)](https://www.skillsdirectory.com/skills/curiositech-developer-surface-strategist)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: developer-surface-strategist
description: >-
  Chooses and designs developer surfaces for an agentic product: SDK, CLI, MCP, GUI, API, webhooks, and pd tube-style
  listener/sender workflows. Use when deciding why a user belongs in an SDK versus CLI/MCP/GUI, planning Python SDK
  parity, or making agent invocation easy across languages. NOT for implementing the full SDK, generic API docs, or UI
  visual design.
license: Apache-2.0
allowed-tools: Read,Write,Edit,Bash,Grep,Glob
metadata:
  category: Developer Experience
  tags:
    - sdk
    - cli
    - mcp
    - gui
    - pd-tube
    - developer-experience
    - agent-workflows
  provenance:
    kind: first-party
    owners:
      - port-daddy
  pairs-with:
    - skill: vibe-project-master-plan
      reason: Consumes project requirements and turns them into surface choices.
    - skill: product-reality-reviewer
      reason: Converts product-review gaps into onboarding and surface requirements.
    - skill: port-daddy-agent-skill
      reason: Keeps Port Daddy coordination and tube semantics grounded.
  io-contract:
    kind: deliverable
    consumes:
      - kind: workflow-requirements
        format: json
      - kind: developer-surface-question
        format: markdown
    produces:
      - kind: surface-decision-matrix
        format: json
      - kind: sdk-cli-mcp-gui-plan
        format: markdown
      - kind: tube-workflow-codegen-brief
        format: markdown
---

# Developer Surface Strategist

Decide which developer surface should exist, why it exists, and what minimum contract makes it useful instead of just
another way to call the same endpoint.

## Use This For

- Choosing between SDK, CLI, MCP, GUI, REST/API, webhooks, and background agents.
- Explaining why someone would use an SDK instead of a CLI, MCP tool, or GUI.
- Planning Python SDK parity for a product that already has CLI or TypeScript affordances.
- Designing `pd tube`-style listener/sender workflows and code-generation briefs across languages.
- Making agent invocation easy enough that a user can create listeners and senders without memorizing infrastructure.

## Do Not Use This For

- Implementing a full SDK or server runtime.
- Writing exhaustive API docs after the surface has already been chosen.
- Visual design, layout, or component polish.

## Decision Process

```mermaid
flowchart TD
  A[Describe workflow] --> B{Who drives it?}
  B -->|Human repeats routine action| GUI[GUI or dashboard]
  B -->|Developer automates local action| CLI[CLI]
  B -->|Application embeds behavior| SDK[SDK]
  B -->|Model agent needs tool access| MCP[MCP tool]
  B -->|Service-to-service event| API[API or webhook]
  GUI & CLI & SDK & MCP & API --> C[Define shared contract]
  C --> D[Add language and onboarding parity]
  D --> E[Design receipts, examples, and tests]
```

1. Name the workflow and its actor: end user, developer, model agent, background worker, or external service.
2. Choose the primary surface by intent:
   - GUI for routine human operations and status.
   - CLI for local automation, scripts, and agent/operator emergency paths.
   - SDK for embedding Port Daddy behavior in an app, service, or library.
   - MCP for model clients that need safe tool calls.
   - API/webhooks for service integration and external systems.
3. Define the shared contract once: message schema, auth, idempotency, receipts, errors, and telemetry.
4. Add parity expectations by language. If Python developers are a target audience, require a Python SDK plan.
5. For `pd tube` workflows, specify listener, sender, channel naming, message schema, auth, retry, receipt, and codegen targets.
6. Use `scripts/surface_matrix.mjs` to generate a deterministic surface recommendation and gap list.

## Output Contract

Return:

- `surfaceMatrix`: workflows with primary and secondary surfaces.
- `rationale`: why each surface exists and what it must not do.
- `tubeWorkflow`: listener/sender contract, schema, receipt, and codegen targets.
- `sdkParity`: language list, Python SDK requirement, examples, tests, and release criteria.
- `onboarding`: how a new user discovers the right surface without reading the source.

## Anti-Patterns

### Everything Is A CLI

**Novice**: "Power users can run commands."
**Expert**: Routine operator tasks need GUI affordances. CLI is for agents, scripts, and emergencies.
**Timeline**: By 2026, agentic products must distinguish human control surfaces from automation surfaces.
**Detection**: Signup, credentials, restart, status, or feedback require terminal commands.

### SDK As Fancy API Wrapper

**Novice**: "An SDK is just generated REST calls."
**Expert**: An SDK should encode workflows: auth setup, typed messages, retries, idempotency, receipts, local fixtures, and examples.
**Timeline**: Agentic SDKs need safety defaults and workflow helpers, not only endpoint coverage.
**Detection**: SDK plan has method names but no examples, no retry/receipt semantics, and no local test fixture.

### MCP For Everything

**Novice**: "If a model might use it, make it MCP-only."
**Expert**: MCP is excellent for model tool access, but applications still need SDK/API surfaces and humans still need GUI/CLI.
**Timeline**: Modern agent systems work best when MCP is one adapter over a shared contract, not the source of truth.
**Detection**: No non-MCP path for services, scripts, or humans.

## References

| File | Load When |
| --- | --- |
| `references/surface-decision-guide.md` | Need SDK vs CLI vs MCP vs GUI decision rules. |
| `references/tube-workflow-patterns.md` | Need listener/sender workflow and multi-language codegen requirements. |
| `examples/expected-output.md` | Need the shape of a finished surface matrix. |
| `templates/output-template.md` | Need a reusable surface strategy template. |
| `schemas/surface-strategy.schema.json` | Need the JSON input contract for the surface matrix. |
| `scripts/surface_matrix.mjs` | Need deterministic surface recommendations and gap checks. |
| `agents/openai.yaml` | Need a subagent descriptor for delegated developer-surface strategy. |

<!-- BEGIN BUNDLE INDEX (manual) -->

## Skill Bundle Index

**root**
- [`CHANGELOG.md`](CHANGELOG.md) - Changelog for this skill.
- [`README.md`](README.md) - Quick start and purpose.

**`agents/`**
- [`agents/openai.yaml`](agents/openai.yaml) - OpenAI/Codex-style agent descriptor for surface strategy.

**`examples/`**
- [`examples/expected-output.md`](examples/expected-output.md) - Example surface matrix and tube workflow brief.

**`references/`**
- [`references/surface-decision-guide.md`](references/surface-decision-guide.md) - Decision rules for SDK, CLI, MCP, GUI, API, and webhooks.
- [`references/tube-workflow-patterns.md`](references/tube-workflow-patterns.md) - Listener/sender workflow patterns and codegen requirements.

**`schemas/`**
- [`schemas/surface-strategy.schema.json`](schemas/surface-strategy.schema.json) - JSON contract for `surface_matrix.mjs`.

**`scripts/`**
- [`scripts/surface_matrix.mjs`](scripts/surface_matrix.mjs) - Builds surface recommendations and gap lists.

**`templates/`**
- [`templates/output-template.md`](templates/output-template.md) - Copyable surface strategy template.

<!-- END BUNDLE INDEX -->

Files in this skill

  • CHANGELOG.md205 B
  • README.md338 B
  • SKILL.md7.1 KB
  • agents/openai.yaml661 B
  • examples/expected-output.md1.1 KB
  • references/surface-decision-guide.md2 KB
  • references/tube-workflow-patterns.md1.5 KB
  • schemas/surface-strategy.schema.json1.7 KB
  • scripts/surface_matrix.mjs5.6 KB
  • templates/output-template.md721 B

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…