Welcome Contributors
Thank you for your interest in contributing to PentAGI! This guide will help you get started with the development workflow, code standards, and contribution process.Getting Started
Prerequisites
Before contributing, ensure you have:- Go 1.24.1+ for backend development
- Node.js 23+ and npm for frontend development
- Docker & Docker Compose for testing
- Git for version control
- IDE with Go and TypeScript support (VS Code recommended)
Fork and Clone
Fork the Repository
Click the “Fork” button on the PentAGI GitHub repository
Development Workflow
Setting Up Your Environment
Making Changes
- Write Tests First - Follow TDD principles
- Implement Your Feature - Keep changes focused
- Run Tests - Ensure all tests pass
- Update Documentation - Document new features
- Commit Changes - Use conventional commits
Code Style Guidelines
Backend (Go)
PentAGI follows standard Go conventions and best practices.Formatting
Naming Conventions
- Packages: Short, lowercase, no underscores (
provider,docker,config) - Files: Lowercase with underscores (
provider_controller.go) - Types: PascalCase (
ProviderController,AgentType) - Functions: PascalCase for exported, camelCase for private (
NewProvider,initClient) - Variables: camelCase (
providerConfig,maxRetries) - Constants: PascalCase or ALL_CAPS (
DefaultTimeout,MAX_WORKERS)
Code Structure
Comments
Frontend (TypeScript/React)
The frontend follows React and TypeScript best practices.Formatting
Naming Conventions
- Files: PascalCase for components (
Terminal.tsx), camelCase for utilities (api.ts) - Components: PascalCase (
TerminalView,AgentCard) - Functions: camelCase (
handleSubmit,fetchFlows) - Variables: camelCase (
isLoading,flowData) - Constants: UPPER_SNAKE_CASE (
API_URL,MAX_RETRIES) - Types/Interfaces: PascalCase with descriptive names (
FlowData,AgentProps)
Component Structure
GraphQL Integration
Commit Message Convention
PentAGI uses Conventional Commits for clear and automated changelogs.Format
Types
feat: New featurefix: Bug fixdocs: Documentation changesstyle: Code style changes (formatting, no logic change)refactor: Code refactoringperf: Performance improvementstest: Adding or updating testschore: Maintenance tasks (dependencies, build, etc.)ci: CI/CD changes
Examples
Commit Best Practices
Atomic Commits
Each commit should represent a single logical change
Clear Messages
Write descriptive messages explaining what and why
Reference Issues
Include issue numbers when applicable (#123)
Sign Commits
Use GPG signatures for verified commits
Pull Request Process
Before Submitting
Creating a PR
-
Push Your Branch
-
Open Pull Request
- Go to your fork on GitHub
- Click “Compare & pull request”
- Fill in the PR template
-
PR Title Format
-
PR Description Template
PR Review Process
-
Automated Checks
- CI/CD pipeline runs tests
- Code coverage reports generated
- Linting and formatting checks
-
Code Review
- Maintainers review your code
- Address feedback and comments
- Push updates to your branch
-
Approval & Merge
- PR approved by maintainers
- Squash and merge to master
- Automatic deployment (if applicable)
Development Tips
Use Testing Tools
Leverage ctester, etester, and ftester for comprehensive testing
Check Examples
Review
examples/ directory for configuration and usage patternsRead Architecture
Understand the system design before making changes
Ask Questions
Join Discord/Telegram for discussions and support
Project Structure
Common Development Tasks
Adding a New LLM Provider
Adding a Frontend Component
Database Schema Changes
Resources
GitHub Repository
Source code and issue tracker
Discord Community
Join discussions and get help
Telegram Group
Connect with other developers
Documentation
Complete documentation
Code of Conduct
PentAGI follows a code of conduct to ensure a welcoming environment:- Be Respectful: Treat all contributors with respect
- Be Constructive: Provide helpful feedback in reviews
- Be Patient: Help newcomers learn and grow
- Be Professional: Keep discussions focused and appropriate
- Be Ethical: Only use PentAGI for authorized security testing
License
By contributing to PentAGI, you agree that your contributions will be licensed under the MIT License.Questions?
If you have questions about contributing:- Open a GitHub Discussion
- Ask in Discord or Telegram
- Email the maintainers