Skip to content

anthony-maio/synthesis

Synthesis

Synthesis is a skill-first self-extension system for coding agents.

Status Python License Website Registry

Search first. Compose second. Synthesize last.

Instead of defaulting to generated code for every new task, Synthesis pushes a stricter loop:

  1. Search existing skills.
  2. Compose a small bundle of skills if one skill is not enough.
  3. Synthesize a new skill package only as a fallback.
  4. Prepare that skill for curation in a canonical GitHub skill repository.

The current codebase is an alpha Python package centered on a SynthesisClient that can acquire, install, compose, and synthesize agent skills. The long-term project direction is a federated capability ecosystem where skills earn trust through review, validation, and repeated use.

Website: synthesis.making-minds.ai
Canonical registry: anthony-maio/synthesis-skills

At a Glance

  • Skill-first acquisition flow for coding agents
  • Canonical GitHub skill registry with curated provenance
  • Composition before synthesis
  • Draft skills stay local and untrusted until review
  • Lifecycle-aware flow for draft, challenger, and canonical skills
  • Miner-produced challenger bundles can be inspected and submitted directly
  • Static website source lives in website/ and is synced to synthesis-web

Status

This project is in active rewrite.

  • The primary path is now skill-first.
  • Legacy capability, sandbox, and exchange code still exists in the repo as compatibility infrastructure.
  • The canonical distribution model is GitHub-based curation rather than a REST marketplace.

Why Synthesis Exists

Most agent frameworks still treat self-extension as “write more code.” That is expensive, slow, and often unnecessary.

Synthesis is built around a different default:

  • reuse verified skill packages first
  • keep skill packages compatible with existing agent ecosystems
  • synthesize only when search and composition fail
  • move new skills into a reviewable, open GitHub workflow

That makes self-extension more observable, more composable, and easier to govern in the open.

Core Ideas

Search Before Synthesis

Synthesis looks for installed skills first, then a canonical curated repo. New generation is a fallback, not the first move.

Composition Over Reinvention

If one skill does not fully cover an intent, Synthesis tries to assemble a small skill bundle before creating anything new.

Skill Packages, Not Raw Functions

The artifact is a real skill package centered on SKILL.md, with optional scripts/, assets/, references/, and agents/ directories when the task requires them.

Governance Through GitHub

Draft skills are local and untrusted. Promotion happens through pull requests, automated checks, and human review in the canonical repo.

Project Layout

synthesis/
├── synthesis/          # Python package
├── tests/              # Test suite
├── exchange_server/    # Legacy marketplace prototype
└── website/            # Static project website

Installation

pip install -e ".[dev]"

Quick Start

import asyncio

from synthesis import SynthesisClient


async def main() -> None:
    client = SynthesisClient(
        provider_type="mock",
        host_root="./installed-skills",
    )
    result = await client.acquire_skill("parse csv files")
    print(result.to_dict())


asyncio.run(main())

By default, Synthesis targets the canonical public registry at anthony-maio/synthesis-skills and bootstraps a local checkout under ~/.synthesis/canonical/synthesis-skills when git is available. Use SYNTHESIS_CANONICAL_REPO_PATH or --canonical-repo to override that checkout path.

CLI

synthesis acquire-skill "parse csv files"
synthesis list-installed-skills
synthesis inspect-candidate-bundle ./candidate-bundle
synthesis inspect-candidate-bundle-detail ./candidate-bundle
synthesis inspect-candidate-bundle-review ./candidate-bundle
synthesis inspect-candidate-bundle-directory ./extracted_skills
synthesis inspect-candidate-bundle-blockers ./extracted_skills
synthesis inspect-candidate-bundle-directory ./extracted_skills --action refresh_against_live_canon
synthesis inspect-candidate-bundle-blockers ./extracted_skills --action fix_validation_errors
synthesis review-candidate-bundle-directory ./extracted_skills
synthesis review-candidate-bundle-directory ./extracted_skills --include-ready
synthesis write-candidate-bundle-review-report ./extracted_skills ./candidate-review-report.md
synthesis write-candidate-bundle-review-report ./extracted_skills ./candidate-review-report.md --include-ready
synthesis write-candidate-bundle-handoff ./extracted_skills ./candidate-handoff
synthesis publish-candidate-bundle-handoff ./extracted_skills ./candidate-handoff --use-temp-worktree --worktree-root ./tmp-worktrees
synthesis prepare-candidate-bundle-submission ./candidate-bundle
synthesis publish-candidate-bundle-directory ./extracted_skills --action ready_to_publish
synthesis publish-candidate-bundle-submission ./candidate-bundle --open-pull-request --draft-pull-request --label challenger --reviewer anthony-maio
synthesis publish-candidate-bundle-submission ./candidate-bundle --use-temp-worktree --worktree-root ./tmp-worktrees
synthesis validate-candidate-bundle ./candidate-bundle
synthesis submit-candidate-bundle ./candidate-bundle
synthesis install-candidate-bundle ./candidate-bundle --allow-challengers

Candidate bundle detail and review outputs include both publishability and a deterministic recommended_next_action, the directory/blocker queue views expose action_counts plus optional action filtering, the reviewer report produces a compact grouped worklist with markdown output for non-publishable actions by default, write-candidate-bundle-review-report persists that worklist as a markdown artifact, write-candidate-bundle-handoff writes the curator report, a paste-ready curator comment body, and a ready-to-publish summary, publish-candidate-bundle-handoff chains that handoff generation with ready-subset publication, and the directory publish flow can batch only the candidates that are already ready_to_publish.

Development

Run tests:

pytest -q

Run focused lint checks on the active skill-first path:

ruff check synthesis/__init__.py synthesis/client.py synthesis/mcp/server.py synthesis/skill_runtime.py tests/test_client.py

Preview the website locally:

cd website
python -m http.server 8000

Website

The static project site lives in website/. It follows the same no-build deployment model used by sibling projects like mnemos-web and slipstream-web, so it can be published directly to GitHub Pages, Cloudflare Pages, or any static host.

Open Source

Near-Term Cleanup

  • remove or isolate more of the legacy capability-first path
  • harden the GitHub-backed canonical skill registry flow
  • improve validation for synthesized skill packages
  • publish the project website and documentation

About

No description, website, or topics provided.

Resources

License

Code of conduct

Contributing

Security policy

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors