Thank you for your interest in contributing to DevFoundry!
- .NET 8 SDK
- Node.js 20+ and npm
- Clone the repository
- Install backend dependencies:
cd backend && dotnet restore - Install frontend dependencies:
cd frontend/devfoundry-ui && npm install
devfoundry/
backend/ - .NET backend
src/ - Source projects
tests/ - Test projects
frontend/ - Vue frontend
devfoundry-ui/ - Vue 3 SPA
- Create a new class in
DevFoundry.Tools.Basicthat implementsITool - Define the
ToolDescriptorwith metadata and parameters - Implement the
Executemethod - Register the tool in CLI and API
Program.cs - Add unit tests in
DevFoundry.Tools.Basic.Tests
Example:
public sealed class MyTool : ITool
{
public ToolDescriptor Descriptor { get; } = new()
{
Id = "category.mytool",
DisplayName = "My Tool",
Description = "Does something useful",
Category = ToolCategory.Other,
Parameters = new[] { /* ... */ }
};
public ToolResult Execute(ToolInput input)
{
// Implementation
}
}- Create a new panel component in
src/components/tools/ - Add it to the mapping in
ToolPanelContainer.vue - Use the shared styles from
tool-panel-styles.css
- Use PascalCase for classes and public members
- Use camelCase for local variables and private fields
- Enable nullable reference types
- Follow .NET coding conventions
- Use TypeScript for all new code
- Use
<script setup lang="ts">style - Type all props and emits
- Use Composition API
cd backend
dotnet testcd frontend/devfoundry-ui
npm run type-check- Create a feature branch from
main - Make your changes with clear commit messages
- Add tests for new functionality
- Ensure all tests pass
- Update documentation as needed
- Submit a pull request
By contributing, you agree that your contributions will be licensed under the MIT License.