Thank you for your interest in contributing to the AgentOS Extensions ecosystem!
- Fork the repository: https://github.com/framerslab/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
-
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
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 |
- Linting:
pnpm run lint - Type checking:
pnpm run build - Testing:
pnpm run test(maintain >80% coverage) - Documentation: Update README with examples
cd registry/curated/category/my-extension
pnpm testimport { AgentOS } from '@framers/agentos';
import myExtension from '@framers/agentos-ext-my-extension';
const agentos = new AgentOS();
await agentos.initialize({
extensionManifest: {
packs: [{
factory: () => myExtension({ /* options */ })
}]
}
});-
Ensure all checks pass:
pnpm test pnpm run lint pnpm run build -
Add a changeset describing your changes:
pnpm changeset
Select 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
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.
- Never hardcode API keys or secrets
- Use environment variables for sensitive data
- Validate all inputs
- Handle errors gracefully
- Keep bundle size minimal
- Use async/await properly
- Implement timeouts for external calls
- Cache results when appropriate
- Specify minimum AgentOS version in
peerDependencies - Handle missing configuration gracefully
- Provide sensible defaults
- Issues: Report bugs at https://github.com/framerslab/agentos-extensions/issues
- Discussions: Questions at https://github.com/framerslab/agentos-extensions/discussions
- Email: team@frame.dev
By contributing, you agree that your contributions will be licensed under the MIT License.