Skill-first local delegation workflow for Codex and Claude Code.
Project description
Ariadne
Your AI coding agent delegates mechanical tasks to a cheap local worker — Aider + DeepSeek — on a separate branch. The agent reviews the patch before anything merges. You never touch the CLI.
How it works
- Tell the agent once: "use Ariadne for this session"
- The agent runs preflight, creates a worker branch, invokes Aider, and shows you the patch
- You decide whether to merge
The agent reads the skill file and handles everything. No CLI knowledge required.
Requirements
- Python 3.10+
- git
- Aider:
pip install aider-chat - A DeepSeek API key — most tasks cost under $0.01
Supported platforms: Linux and macOS.
Setup
1. Install Ariadne
pip install ariadne-skill
2. Install Aider
pip install aider-chat
3. Get a DeepSeek API key
Sign up at platform.deepseek.com and create an API key. Top up a small amount — most tasks cost under $0.01.
Export the key in your shell:
export DEEPSEEK_API_KEY="sk-..."
Add that line to ~/.zshrc or ~/.bashrc to persist across sessions.
4. Install the skill into your agent
ariadne install-skill
Detects which agents you have installed (Claude Code, Codex) and asks where to install — globally for all projects, or locally for the current repo. Follow the prompts.
Trigger with /ariadne in Claude Code, or say "use Ariadne".
That's it.
Quick test
At the start of a conversation, tell the agent once:
"Use Ariadne for delegation tasks in this session."
Then just describe your work:
"Write unit tests for
src/foo.py."
The agent recognises suitable tasks and triggers Ariadne automatically. You can also trigger explicitly at any time with /ariadne.
What Ariadne handles well
These patterns cover the majority of mechanical coding work in a typical project. If a task has a clear scope and a defined target file, Ariadne is the right tool.
Testing
- Write unit tests for an existing module
- Add parametrised or property-based test cases
- Generate test fixtures and mock factories
Documentation and types
- Add or improve docstrings
- Add type annotations to an existing module
- Translate inline comments to English
Refactoring
- Rename symbols consistently within a file
- Extract constants from magic numbers or repeated strings
- Convert imperative loops to comprehensions or functional style
- Add input validation or error handling to existing functions
Implementation
- Fill in a stub or scaffold that is already defined
- Implement a small interface or abstract base class
- Add logging to an existing module
- Convert synchronous functions to async (or vice versa)
Not suited for: architectural decisions, bug diagnosis requiring cross-system tracing, changes spanning many unrelated files, or tasks requiring external context the worker has not been given.
Works especially well with TDD
TDD's red-green-refactor loop maps directly onto Ariadne's delegation model. Each slice is bounded, has a clear success criterion, and touches one file at a time — exactly the conditions under which the worker performs best.
A typical TDD loop with Ariadne:
- Red — delegate test writing:
--editable tests/test_foo.py --readonly src/foo.py - Green — delegate the implementation:
--editable src/foo.py --readonly tests/test_foo.py - Refactor — delegate cleanup under the now-passing tests
The worker never makes architectural decisions. The test suite keeps it honest. Each patch is small enough to review in seconds. That's the loop.
If you are not already using TDD with your agent, the /tdd skill from Matt Pocock's skills collection is a practical starting point. It codifies a red-green-refactor loop and works well alongside Ariadne.
Environment variables
Only needed if you want to change default behaviour:
| Variable | Default | When to change |
|---|---|---|
ARIADNE_AIDER_MODEL |
deepseek/deepseek-chat |
If DeepSeek renames the model |
ARIADNE_AIDER_IDLE_TIMEOUT |
90 |
Slow API responses |
ARIADNE_AIDER_MAX_RUNTIME |
600 |
Very large tasks |
ARIADNE_CHECK_TIMEOUT |
120 |
Slow test suites used as a quality gate |
Security
Ariadne never writes your API key to any file. DEEPSEEK_API_KEY must come from your shell environment only.
Run artifacts (patches, logs, metadata) are written to .ariadne/ inside the target repository. That directory is git-ignored and never committed. What you build stays local.
Development
Run the test suite — no API key or Aider required:
PYTHONPATH=src python3 -m unittest discover -s tests
Architecture decisions live in docs/adr/. Skill files live in .claude/skills/ariadne/ and .codex/skills/ariadne/.
License
Apache-2.0. See LICENSE.
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file ariadne_skill-0.1.0.tar.gz.
File metadata
- Download URL: ariadne_skill-0.1.0.tar.gz
- Upload date:
- Size: 87.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
6f001dd9a64a94bd99a3fc572233a67aa3f4a2f380da1c743fda6c4ad541d548
|
|
| MD5 |
5cf702b407ad05b8a14013e32a3eb86f
|
|
| BLAKE2b-256 |
dd1d63c788742d6be3f817697fc862675ab066841014fd6b42ee8322c9dc8313
|
Provenance
The following attestation bundles were made for ariadne_skill-0.1.0.tar.gz:
Publisher:
publish.yml on albertc9/Ariadne
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
ariadne_skill-0.1.0.tar.gz -
Subject digest:
6f001dd9a64a94bd99a3fc572233a67aa3f4a2f380da1c743fda6c4ad541d548 - Sigstore transparency entry: 1677666562
- Sigstore integration time:
-
Permalink:
albertc9/Ariadne@a5ff7f71d41cc292e44442334d059bdc70472c46 -
Branch / Tag:
refs/tags/v0.1.0 - Owner: https://github.com/albertc9
-
Access:
private
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@a5ff7f71d41cc292e44442334d059bdc70472c46 -
Trigger Event:
release
-
Statement type:
File details
Details for the file ariadne_skill-0.1.0-py3-none-any.whl.
File metadata
- Download URL: ariadne_skill-0.1.0-py3-none-any.whl
- Upload date:
- Size: 34.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a95f7f248322c4831eb703aa48814b18865df99318efbe9dae0a2f55199e0092
|
|
| MD5 |
f4829c2d3a6891c7237053ce8dcf81de
|
|
| BLAKE2b-256 |
706f9fcd75d6d2255ab3a0039017ca6de65287f07c2b3db47e6ca4c3ec16224c
|
Provenance
The following attestation bundles were made for ariadne_skill-0.1.0-py3-none-any.whl:
Publisher:
publish.yml on albertc9/Ariadne
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
ariadne_skill-0.1.0-py3-none-any.whl -
Subject digest:
a95f7f248322c4831eb703aa48814b18865df99318efbe9dae0a2f55199e0092 - Sigstore transparency entry: 1677666592
- Sigstore integration time:
-
Permalink:
albertc9/Ariadne@a5ff7f71d41cc292e44442334d059bdc70472c46 -
Branch / Tag:
refs/tags/v0.1.0 - Owner: https://github.com/albertc9
-
Access:
private
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@a5ff7f71d41cc292e44442334d059bdc70472c46 -
Trigger Event:
release
-
Statement type: