Prerequisites
- TypeScript knowledge
- Understanding of the service you’re integrating
- API documentation for the service
Step 1: Create Integration Folder
Create a new folder inpackages/integration-platform/src/manifests/:
Step 2: Define Types
Createtypes.ts for the integration’s data structures:
Step 3: Create the Manifest
Createindex.ts:
Step 4: Write a Check
Createchecks/your-check.ts:
Step 5: Add Variables (Optional)
If your check needs user configuration:Step 6: Register the Manifest
Add topackages/integration-platform/src/registry/index.ts:
Step 7: Test It
-
Start dev servers:
-
Configure OAuth (if using OAuth):
- Go to
/admin/integrations - Find your integration → Configure OAuth
- Add Client ID/Secret
- Go to
-
Connect the integration:
- Go to
/integrations - Find your integration
- Click “Connect”
- Authorize (if OAuth) or enter credentials
- Go to
-
Run checks:
- Go to
/cloud-tests(if it’s a cloud provider) - Or go to a task page and run the integration check
- Verify findings appear correctly
- Go to
-
Check logs:
- Look at API terminal for check execution logs
- Verify no errors
Common Patterns
Pagination
Error Handling
Multiple Checks
Best Practices
Do’s
- Use descriptive IDs:
branch-protection, notcheck1 - Map to tasks: Use
taskMappingto auto-complete tasks - Friendly errors: Convert API errors to user-friendly messages
- Log liberally: Use
ctx.log()for debugging - Handle missing data: Not all orgs have all resources
- Paginate when needed: Don’t assume small datasets
- Type everything: Use TypeScript types for API responses
Don’ts
- Don’t expose raw API errors to users in descriptions
- Don’t assume variables exist: Check for undefined
- Don’t use
console.log: Usectx.log()instead - Don’t create findings for missing resources: Just log it
- Don’t hardcode URLs: Use
baseUrlin manifest - Don’t skip error handling: Wrap API calls in try/catch
Examples to Reference
| Integration | Type | Good for learning |
|---|---|---|
| GitHub | OAuth | Dynamic variables, pagination, multiple checks |
| Google Workspace | OAuth | User iteration, domain-scoped checks |
| AWS | Custom | Complex credentials, error handling |
| Azure | Custom | Multi-field credentials, API error mapping |
| Linear | OAuth | Simple OAuth, GraphQL |
| Vercel | OAuth | Project scoping, deployment checks |
packages/integration-platform/src/manifests/.
Need Help?
- Check existing integration manifests for patterns
- Review type definitions in
src/types.ts - See the Contributing Guide for PR requirements

