Thank you for your interest in contributing to SDC Agents! This document provides guidelines for contributing to the project.
- Code of Conduct
- How Can I Contribute?
- Getting Started
- Contribution Workflow
- Development Guidelines
- Quality Standards
- Review Process
This project adheres to a Code of Conduct that all contributors are expected to follow. Please read CODE_OF_CONDUCT.md before contributing.
- Agent improvements: Enhance existing agent tools with better type inference, error handling, or performance
- New datasource connectors: Add support for additional datasource types in the Introspect Agent (e.g., Parquet, Avro, MongoDB)
- New distribution connectors: Add destination types to the Distribution Agent (e.g., Elasticsearch, S3, MQTT)
- Documentation: Clarify agent specifications, fix typos, add usage examples
- Bug reports: Report issues with agent behavior, tool output, or configuration handling
- Security improvements: Strengthen agent isolation, audit logging, or credential handling
- Tests: Expand test coverage, add integration tests, improve security tests
- New agents: Adding agents beyond the defined six requires architectural discussion
- Breaking changes: Modifications to ADK tool signatures, configuration format, or file conventions
- Credential handling: Any changes to how agents access or store credentials
- Network access changes: Modifying which agents can make network calls
For these contributions, please open an issue first to discuss your proposal.
- Python 3.11+
- Git
- A running SDCStudio instance (for integration tests)
- Familiarity with the Google Agent Development Kit (ADK)
-
Fork the Repository
# Visit https://github.com/SemanticDataCharter/SDC_Agents # Click "Fork" to create your own copy
-
Clone Your Fork
git clone git@github.com:YOUR_USERNAME/SDC_Agents.git cd SDC_Agents -
Create a Virtual Environment
python -m venv .venv source .venv/bin/activate # Linux/macOS
-
Install in Development Mode
pip install -e ".[dev]" -
Add Upstream Remote
git remote add upstream git@github.com:SemanticDataCharter/SDC_Agents.git
-
Stay Updated
git fetch upstream git checkout main git merge upstream/main
For significant changes, create an issue first:
- Describe the problem or enhancement
- Identify which agent(s) are affected
- Explain your proposed solution
- Wait for maintainer feedback
git checkout main
git pull upstream main
git checkout -b feature/your-feature-nameBranch naming conventions:
feature/description- New functionality or agent enhancementsfix/description- Bug fixesdocs/description- Documentation updatessecurity/description- Security improvements
- Follow the Development Guidelines below
- Run tests locally before pushing
- Keep commits focused and atomic
git add .
git commit -m "Brief description of changes"git push origin feature/your-feature-nameThen create a pull request on GitHub.
sdc_agents/
├── agents/
│ ├── catalog/ # Catalog Agent (schema discovery)
│ ├── introspect/ # Introspect Agent (datasource structure)
│ ├── mapping/ # Mapping Agent (column-to-component)
│ ├── generator/ # Generator Agent (XML instance production)
│ ├── validation/ # Validation Agent (VaaS API)
│ └── distribution/ # Distribution Agent (artifact routing)
├── common/
│ ├── audit.py # Shared audit log library
│ ├── config.py # YAML configuration loader
│ └── cache.py # .sdc-cache management
└── tests/
- Follow PEP 8 for all Python code
- Use Google style docstrings
- Type hints are required for all public functions
- Maximum line length: 88 characters (Black formatter)
When contributing agent code, respect these invariants:
- No agent imports another agent's code — each agent has its own
BaseToolset - Tool inputs come from function signatures only — never accept raw file paths or connection strings as tool input; use named references from configuration
- Network access is explicit — only the Catalog Agent and Validation Agent may make HTTP calls
- File writes are scoped — each agent writes only to its designated directory
- Credentials come from config — never hardcode or accept credentials in tool parameters
Each tool is a Python async def function wrapped in FunctionTool. It must have:
- A clear, descriptive name following the
{agent}_{action}convention - Type-hinted parameters with Google-style docstring descriptions (ADK derives schemas from these)
- Return type annotation and documented return structure
- Side effects documented in the docstring (file writes, API calls)
# Run all tests
pytest
# Run tests for a specific agent
pytest tests/agents/catalog/
# Run security tests (verify isolation)
pytest tests/security/
# Run with coverage
coverage run -m pytest
coverage reportRequired test categories:
- Unit tests: Every tool function
- Security tests: Verify agents cannot access out-of-scope resources
- Integration tests: Against a running SDCStudio instance (marked with
@pytest.mark.integration)
All tool invocations must write to the structured audit log. Use the shared audit.log_tool_call() function — do not implement custom logging.
- All tests pass
- Security tests pass (no isolation violations)
- New tools have complete type hints and docstrings (ADK derives schemas from these)
- New functionality has tests
- Documentation updated if behavior changes
- No new credentials exposed in tool parameters
- Use imperative mood: "Add CSV introspection" not "Added CSV introspection"
- Reference issues where applicable: "Fix #42: Handle nullable columns in SQL introspection"
- Security: Does it maintain agent isolation boundaries?
- Correctness: Do tools produce valid outputs matching their documented return types?
- Tests: Are unit and security tests comprehensive?
- Documentation: Are tool schemas and side effects documented?
- Initial Review: Within 5 business days
- Follow-up Reviews: Within 3 business days
SDC Agents is copyright 2025-2026 Axius SDC, Inc. and licensed under the Apache License 2.0. The SemanticDataCharter GitHub organization hosts the open-source SDC4 ecosystem on behalf of Axius SDC, Inc.
By contributing to SDC Agents, you agree that your contributions will be licensed under the Apache License 2.0.
- Open a GitHub Discussion
- Review the SDC Agents PRD for architecture details
Thank you for contributing to SDC Agents!