AgentSkillsCN

add-provider

为Spaceduck搭建全新的LLM提供商封装包。

SKILL.md
--- frontmatter
name: add-provider
description: Scaffold a new LLM provider package for spaceduck

Add Provider

Scaffolds a new LLM provider adapter under packages/providers/<name>/.

Steps

  1. Ask for the provider name (e.g., "openai", "ollama", "anthropic")
  2. Create the directory structure:
code
packages/providers/<name>/
  package.json          # @spaceduck/provider-<name>, depends on @spaceduck/core
  src/
    <name>.ts           # <Name>Provider implements Provider interface
    index.ts            # barrel export
    __tests__/
      <name>.test.ts    # unit tests with mocked SDK
  1. The provider must implement the Provider interface from @spaceduck/core:
typescript
import type { Provider, Message, ProviderOptions } from "@spaceduck/core";

export class <Name>Provider implements Provider {
  readonly name = "<name>";

  async *chat(messages: Message[], options?: ProviderOptions): AsyncIterable<string> {
    // Implementation here
    // Must respect options.signal (AbortSignal) for cancellation
  }
}
  1. Add the provider to @spaceduck/gateway by importing and wiring it in the registry
  2. Map provider-specific exceptions to ProviderErrorCode values
  3. Write unit tests using spyOn to mock the SDK client