Ways to Contribute
Fix or Clarify Docs
Spot an unclear explanation, a broken example, or a missing concept page? Documentation PRs are always appreciated.
Report Bugs
Open an issue with a minimal, reproducible example. Include your Python version, provider, and the full traceback.
Propose Features
Start with a concise problem statement in a GitHub Discussion before writing code, so we can align on the design early.
Add Providers, Tools, or Skills
Extend the framework’s built-in capabilities by following the structured guides below.
Contribution Workflow
Fork and branch
Fork the repository on GitHub, then create a descriptive branch:Keep one logical change per branch to simplify review.
Set up the development environment
Install the package in editable mode together with all development dependencies:The
dev extra installs pytest, pytest-asyncio, build, and twine.Run the docs site locally (docs changes only)
If you are editing documentation, start the Mintlify dev server:The site is served at
http://localhost:3000. Changes to .mdx files hot-reload automatically.Make focused changes
Keep changes small and scoped to a single concern. Avoid bundling unrelated fixes or refactors in the same PR.
Run the tests
Run the full test suite before pushing:For async tests,
pytest-asyncio is already configured. Add new tests for any new behaviour you introduce.Project Structure
Coding Standards
- Type hints are required on all public functions and methods. Logicore is fully typed (
py.typedmarker is present). - Docstrings are required on every function that will be callable as an LLM tool. The framework parses them to generate JSON schemas.
- Use
**kwargsin tool function signatures to absorb hallucinated parameters from local models. - Follow
async/awaitconventions throughout — all agent interactions are asynchronous. - Do not introduce new mandatory dependencies without discussion. Optional capabilities belong behind extras in
pyproject.toml. - All tests live in
tests/and usepytestwithpytest-asynciofor async cases.
How to Add a New Provider
Create the provider module
Add a new file under
logicore/providers/, for example cohere_provider.py.Subclass LLMProvider
Implement the abstract base class defined in At minimum, implement
logicore/providers/base.py:chat(). If the provider supports streaming, handle the stream=True path and invoke the on_token callback from kwargs.get("callbacks", {}).Add an optional dependency
Add the provider’s client library as an optional extra in Update the
pyproject.toml:all extra to include it as well.Register the provider string alias
Update
logicore/providers/gateway.py so that Agent(llm="cohere") resolves to your new class.Export from the top-level package
Add the new provider to
logicore/__init__.py and the __all__ list.How to Add a New Built-in Tool
Choose or create a module
Built-in tools live in
logicore/tools/. Add your function to an existing module if it fits a current category, or create a new file (e.g., logicore/tools/calendar.py).Write the function with full docstring and type hints
**kwargs to handle hallucinated parameters gracefully.Register in the default registry
Import and add the function to the registry in
logicore/tools/registry.py so it is available when an agent calls agent.load_default_tools().Add optional dependencies if needed
If the tool requires third-party packages, add them to the
tools extra in pyproject.toml.How to Add a New Skill
Skills are directory-based packages discovered bySkillLoader. No Python changes to the framework are needed — just a correctly structured directory.
Write SKILL.md
Use YAML frontmatter followed by natural-language instructions the agent will use:Supported metadata fields:
name, description, version, author, tags, requires.Add callable tools in scripts/*.py
SkillLoader imports functions from scripts/ and exposes those with docstrings as callable tools:For substantial changes — new agent types, new memory backends, or new architectural features — please open a GitHub Discussion first. This lets maintainers give early design feedback and avoids duplicated effort.