Contributing Overview
AgentSchema is a collaborative project between Microsoft Copilot Studio and Microsoft Foundry. We welcome contributions to the specification, runtime libraries, and documentation!
Project Architecture
Section titled “Project Architecture”AgentSchema uses a code generation approach where:
- TypeSpec definitions define the schema (source of truth)
- Custom emitter generates runtime code for multiple languages
- Runtime libraries are auto-generated (C#, Python, TypeScript, Go)
flowchart TD
A[TypeSpec Models<br/>agentschema-emitter/lib/model/] --> B[TypeSpec Emitter<br/>agentschema-emitter]
B --> C[C# Runtime<br/>runtime/csharp/]
B --> D[Python Runtime<br/>runtime/python/]
B --> E[TypeScript Runtime<br/>runtime/typescript/]
B --> H[Go Runtime<br/>runtime/go/]
B --> F[JSON Schemas<br/>schemas/]
B --> G[Reference Docs<br/>docs/reference/]
style A fill:#4CAF50,color:#fff
style B fill:#2196F3,color:#fff
style C fill:#9E9E9E,color:#fff
style D fill:#9E9E9E,color:#fff
style E fill:#9E9E9E,color:#fff
style H fill:#9E9E9E,color:#fff
style F fill:#9E9E9E,color:#fff
style G fill:#9E9E9E,color:#fff
Directoryagentschema-emitter/ Self-contained emitter package
Directorylib/model/ Edit these (source of truth)
- main.tsp
- agent.tsp
- tools.tsp
- …
Directorysrc/ Or edit templates here
- …
Directorysrc/
Directorytemplates/
- …
Directoryruntime/ ⚠️ DO NOT edit directly
Directorycsharp/
- …
Directorypython/
- …
Directorytypescript/
- …
Directorygo/
- …
Directoryschemas/ ⚠️ DO NOT edit directly
- …
What Can I Contribute?
Section titled “What Can I Contribute?”| Area | Location | Description |
|---|---|---|
| Schema changes | agentschema-emitter/lib/model/*.tsp | Add/modify agent schema definitions |
| Code generation | agentschema-emitter/src/ | Improve generated code quality |
| Documentation | docs/src/content/ | Improve guides and examples |
| Examples | examples/ | Add new agent examples |
| Bug fixes | Various | Fix issues in emitter or runtime config |
Quick Links
Section titled “Quick Links”- Project Setup - Get your development environment ready
- TypeSpec Guide - How to edit schema definitions
- Emitter Guide - How to modify code generation
- Testing Guide - How to run tests
Important Rules
Section titled “Important Rules”Getting Help
Section titled “Getting Help”- Issues: GitHub Issues
- Discussions: GitHub Discussions