Skip to content

Contributing

Amplify is open source and welcomes contributions. This guide covers how to contribute providers, models, templates, skills, and MCP servers.

Getting started

To contribute to Amplify:

  1. Fork the repository on GitHub
  2. Clone your fork locally
  3. Create a branch for your contribution
  4. Make your changes and write tests
  5. Submit a pull request with a clear description
sh
git clone https://github.com/your-username/amplify.git
cd amplify
git checkout -b my-contribution
npm install
npm run dev
Code style

Amplify uses TypeScript throughout, ESLint for linting, and Prettier for formatting. Run npm run lint before submitting a PR.

Contributing providers

To add a new LLM provider:

  1. Create a provider adapter in src/providers/your-provider.ts
  2. Implement the ProviderAdapter interface
  3. Add configuration schema in src/providers/your-provider.schema.ts
  4. Register the provider in src/providers/index.ts
  5. Add tests in tests/providers/your-provider.test.ts
typescript
import { ProviderAdapter, ChatRequest, ChatResponse } from '@amplify/core';

export class MyProvider extends ProviderAdapter {
  name = 'my-provider';
  
  async chat(request: ChatRequest): AsyncGenerator<string> {
    const response = await fetch('https://api.my-provider.com/v1/chat', {
      method: 'POST',
      headers: { 'Authorization': `Bearer ${this.apiKey}` },
      body: JSON.stringify(this.formatRequest(request)),
    });
    
    for await (const chunk of response.body) {
      yield this.parseChunk(chunk);
    }
  }
}

See existing provider implementations

Contributing templates

To add a new project template:

  1. Create template files in templates/your-template/
  2. Add a template manifest templates/your-template/manifest.json
  3. Include README with usage instructions
  4. Register the template in the templates index
json
{
  "name": "my-framework",
  "description": "A template for my framework",
  "files": {
    "package.json": "templates/my-framework/package.json",
    "src/index.ts": "templates/my-framework/src/index.ts"
  },
  "commands": ["npm install"],
  "devCommand": "npm run dev"
}

Contributing skills and MCP servers

To add a new skill:

  1. Create skill definition in skills/your-skill.yaml
  2. Add skill templates in skills/your-skill/templates/
  3. Add skill documentation in skills/your-skill/docs/
  4. Register the skill in the skills index

To add a new MCP server:

  1. Create server in mcp-servers/your-server/
  2. Implement the MCP specification (tools, resources, prompts)
  3. Add configuration schema
  4. Register in MCP servers index
Review process

All contributions go through a review process. Provider and MCP server contributions require additional security review since they handle API keys and external communications.

Learn about MCP server development