Contributing
Thank you for your interest in contributing to the AgentOS Extensions ecosystem!
Getting Started
- Fork the repository: https://github.com/framersai/agentos-extensions
- Clone your fork:
git clone https://github.com/yourusername/agentos-extensions
cd agentos-extensions
pnpm install - Create a feature branch:
git checkout -b feat/my-extension
Creating a New Extension
-
Use the scaffolding script or copy a template:
pnpm run create-extension
# or
cp -r templates/basic-tool registry/curated/category/my-extension -
Configure your extension:
- Update
package.json:- Set
"name"to@framers/agentos-ext-{name} - Set
"private": false - Add
"publishConfig": { "access": "public" }
- Set
- Update
manifest.jsonwith proper metadata - Implement tools in
src/tools/
- Update
-
Add to the workspace:
- Add your package path to
pnpm-workspace.yaml
- Add your package path to
-
Follow the standards:
- Use TypeScript with strict mode
- Implement the ITool interface correctly
- Include comprehensive tests (>80% coverage)
- MIT license
Package Naming
All extensions use the @framers/agentos-ext-{name} pattern:
| Package | Name |
|---|---|
| Auth | @framers/agentos-ext-auth |
| Web Search | @framers/agentos-ext-web-search |
| Web Browser | @framers/agentos-ext-web-browser |
| Telegram | @framers/agentos-ext-telegram |
| CLI Executor | @framers/agentos-ext-cli-executor |
Development
Code Quality
- Linting:
pnpm run lint - Type checking:
pnpm run build - Testing:
pnpm run test(maintain >80% coverage) - Documentation: Update README with examples
Testing Locally
cd registry/curated/category/my-extension
pnpm test
Integration with AgentOS
import { AgentOS } from '@framers/agentos';
import myExtension from '@framers/agentos-ext-my-extension';
const agentos = new AgentOS();
await agentos.initialize({
extensionManifest: {
packs: [{
factory: () => myExtension({ /* options */ })
}]
}
});
Pull Request Process
-
Ensure all checks pass:
pnpm test
pnpm run lint
pnpm run build -
Add a changeset describing your changes:
pnpm changesetSelect your package, choose the bump type (patch/minor/major), and describe the change.
-
Create pull request with:
- Title:
feat: add [extension-name] extension - What the extension does
- Configuration required
- Example usage
- Title:
-
Automated CI checks will:
- Validate extension structure
- Run linting and tests on Node 18 & 20
- Check test coverage
- Build the extension
- Security scanning
After Your PR is Merged
Once merged to master:
- The Release workflow detects pending changesets
- A "chore: version packages" PR is auto-created with version bumps
- When that PR is merged, packages are published to npm
- GitHub releases are created with changelogs
- registry.json is updated
See RELEASING.md for the full publishing workflow.
Extension Guidelines
Security
- Never hardcode API keys or secrets
- Use environment variables for sensitive data
- Validate all inputs
- Handle errors gracefully
Performance
- Keep bundle size minimal
- Use async/await properly
- Implement timeouts for external calls
- Cache results when appropriate
Compatibility
- Specify minimum AgentOS version in
peerDependencies - Handle missing configuration gracefully
- Provide sensible defaults
Getting Help
- Issues: Report bugs at https://github.com/framersai/agentos-extensions/issues
- Discussions: Questions at https://github.com/framersai/agentos-extensions/discussions
- Email: team@frame.dev
License
By contributing, you agree that your contributions will be licensed under the MIT License.