atk-cli 0.1.2__tar.gz → 0.2.1__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- atk_cli-0.2.1/.github/ISSUE_TEMPLATE/bug_report.md +20 -0
- atk_cli-0.2.1/.github/ISSUE_TEMPLATE/feature_request.md +12 -0
- atk_cli-0.2.1/.github/pull_request_template.md +14 -0
- atk_cli-0.2.1/.github/workflows/ci.yml +47 -0
- atk_cli-0.2.1/CODE_OF_CONDUCT.md +36 -0
- atk_cli-0.2.1/CONTRIBUTING.md +51 -0
- atk_cli-0.2.1/PKG-INFO +416 -0
- atk_cli-0.2.1/README.md +385 -0
- atk_cli-0.2.1/SECURITY.md +22 -0
- atk_cli-0.2.1/assets/demo-hero.gif +0 -0
- atk_cli-0.2.1/assets/demo-search.gif +0 -0
- atk_cli-0.2.1/assets/demo-status.gif +0 -0
- atk_cli-0.2.1/assets/tapes/demo-hero.tape +41 -0
- atk_cli-0.2.1/assets/tapes/demo-search.tape +29 -0
- atk_cli-0.2.1/assets/tapes/demo-status.tape +29 -0
- {atk_cli-0.1.2 → atk_cli-0.2.1}/docs/README.md +1 -0
- {atk_cli-0.1.2 → atk_cli-0.2.1}/docs/ROADMAP.md +15 -5
- {atk_cli-0.1.2 → atk_cli-0.2.1}/docs/backlog.md +5 -7
- atk_cli-0.2.1/docs/phases/phase-11-git-sync.md +88 -0
- {atk_cli-0.1.2 → atk_cli-0.2.1}/docs/specs/atk-spec.md +3 -1
- {atk_cli-0.1.2 → atk_cli-0.2.1}/docs/specs/commands-spec.md +120 -18
- atk_cli-0.2.1/docs/specs/git-sync-spec.md +156 -0
- {atk_cli-0.1.2 → atk_cli-0.2.1}/docs/specs/home-spec.md +3 -0
- {atk_cli-0.1.2 → atk_cli-0.2.1}/docs/specs/mcp-agent-configure-spec.md +40 -22
- {atk_cli-0.1.2 → atk_cli-0.2.1}/skills/create-atk-plugin/SKILL.md +146 -85
- {atk_cli-0.1.2 → atk_cli-0.2.1}/src/atk/add.py +25 -7
- {atk_cli-0.1.2 → atk_cli-0.2.1}/src/atk/cli.py +76 -190
- atk_cli-0.2.1/src/atk/commands/plug.py +248 -0
- {atk_cli-0.1.2 → atk_cli-0.2.1}/src/atk/commands/status.py +55 -0
- {atk_cli-0.1.2 → atk_cli-0.2.1}/src/atk/git.py +218 -0
- {atk_cli-0.1.2 → atk_cli-0.2.1}/src/atk/init.py +1 -1
- {atk_cli-0.1.2 → atk_cli-0.2.1}/src/atk/manifest_schema.py +4 -0
- {atk_cli-0.1.2 → atk_cli-0.2.1}/src/atk/plugin_schema.py +42 -3
- {atk_cli-0.1.2 → atk_cli-0.2.1}/src/atk/remove.py +5 -2
- {atk_cli-0.1.2 → atk_cli-0.2.1}/src/atk/setup.py +3 -1
- {atk_cli-0.1.2 → atk_cli-0.2.1}/src/atk/upgrade.py +21 -1
- {atk_cli-0.1.2 → atk_cli-0.2.1}/tests/commands/test_cli.py +19 -19
- atk_cli-0.2.1/tests/fixtures/plugins/full-plugin/SKILL.md +3 -0
- atk_cli-0.2.1/tests/fixtures/plugins/skill-only-plugin/SKILL.md +3 -0
- atk_cli-0.2.1/tests/fixtures/plugins/skill-only-plugin/plugin.yaml +3 -0
- {atk_cli-0.1.2 → atk_cli-0.2.1}/tests/test_add.py +52 -4
- {atk_cli-0.1.2 → atk_cli-0.2.1}/tests/test_env.py +1 -1
- {atk_cli-0.1.2 → atk_cli-0.2.1}/tests/test_git.py +303 -0
- atk_cli-0.2.1/tests/test_git_proxy.py +72 -0
- {atk_cli-0.1.2 → atk_cli-0.2.1}/tests/test_manifest_schema.py +19 -0
- {atk_cli-0.1.2 → atk_cli-0.2.1}/tests/test_mcp.py +12 -61
- atk_cli-0.2.1/tests/test_plug.py +283 -0
- {atk_cli-0.1.2 → atk_cli-0.2.1}/tests/test_plugin_schema.py +180 -0
- {atk_cli-0.1.2 → atk_cli-0.2.1}/tests/test_remove.py +47 -0
- atk_cli-0.2.1/tests/test_repo_status.py +109 -0
- {atk_cli-0.1.2 → atk_cli-0.2.1}/tests/test_setup.py +49 -2
- {atk_cli-0.1.2 → atk_cli-0.2.1}/tests/test_upgrade.py +179 -0
- atk_cli-0.1.2/.github/workflows/ci.yml +0 -29
- atk_cli-0.1.2/PKG-INFO +0 -331
- atk_cli-0.1.2/README.md +0 -300
- {atk_cli-0.1.2 → atk_cli-0.2.1}/.github/workflows/publish.yml +0 -0
- {atk_cli-0.1.2 → atk_cli-0.2.1}/.gitignore +0 -0
- {atk_cli-0.1.2 → atk_cli-0.2.1}/LICENSE +0 -0
- {atk_cli-0.1.2 → atk_cli-0.2.1}/Makefile +0 -0
- {atk_cli-0.1.2 → atk_cli-0.2.1}/assets/logo.png +0 -0
- {atk_cli-0.1.2 → atk_cli-0.2.1}/docs/legacy/backup-feature-spec.md +0 -0
- {atk_cli-0.1.2 → atk_cli-0.2.1}/docs/legacy/cli-architecture.md +0 -0
- {atk_cli-0.1.2 → atk_cli-0.2.1}/docs/legacy/service-yaml-spec.md +0 -0
- {atk_cli-0.1.2 → atk_cli-0.2.1}/docs/phases/phase-1-core-cli.md +0 -0
- {atk_cli-0.1.2 → atk_cli-0.2.1}/docs/phases/phase-2-lifecycle.md +0 -0
- {atk_cli-0.1.2 → atk_cli-0.2.1}/docs/phases/phase-3-configuration.md +0 -0
- {atk_cli-0.1.2 → atk_cli-0.2.1}/docs/phases/phase-4-plugin-sources.md +0 -0
- {atk_cli-0.1.2 → atk_cli-0.2.1}/docs/specs/plugin-schema.md +0 -0
- {atk_cli-0.1.2 → atk_cli-0.2.1}/docs/specs/registry-spec.md +0 -0
- {atk_cli-0.1.2 → atk_cli-0.2.1}/pyproject.toml +0 -0
- {atk_cli-0.1.2 → atk_cli-0.2.1}/src/atk/__init__.py +0 -0
- {atk_cli-0.1.2 → atk_cli-0.2.1}/src/atk/agents/__init__.py +0 -0
- {atk_cli-0.1.2 → atk_cli-0.2.1}/src/atk/agents/auggie_skill.py +0 -0
- {atk_cli-0.1.2 → atk_cli-0.2.1}/src/atk/agents/claude_skill.py +0 -0
- {atk_cli-0.1.2 → atk_cli-0.2.1}/src/atk/agents/codex_skill.py +0 -0
- {atk_cli-0.1.2 → atk_cli-0.2.1}/src/atk/agents/gemini_skill.py +0 -0
- {atk_cli-0.1.2 → atk_cli-0.2.1}/src/atk/agents/managed_section.py +0 -0
- {atk_cli-0.1.2 → atk_cli-0.2.1}/src/atk/agents/opencode_skill.py +0 -0
- {atk_cli-0.1.2 → atk_cli-0.2.1}/src/atk/agents/symlink_skill.py +0 -0
- {atk_cli-0.1.2 → atk_cli-0.2.1}/src/atk/banner.py +0 -0
- {atk_cli-0.1.2 → atk_cli-0.2.1}/src/atk/bootstrap.py +0 -0
- {atk_cli-0.1.2 → atk_cli-0.2.1}/src/atk/cli_logger.py +0 -0
- {atk_cli-0.1.2 → atk_cli-0.2.1}/src/atk/commands/__init__.py +0 -0
- {atk_cli-0.1.2 → atk_cli-0.2.1}/src/atk/commands/lifecycle.py +0 -0
- {atk_cli-0.1.2 → atk_cli-0.2.1}/src/atk/commands/mcp.py +0 -0
- {atk_cli-0.1.2 → atk_cli-0.2.1}/src/atk/commands/preconditions.py +0 -0
- {atk_cli-0.1.2 → atk_cli-0.2.1}/src/atk/commands/run.py +0 -0
- {atk_cli-0.1.2 → atk_cli-0.2.1}/src/atk/commands/search.py +0 -0
- {atk_cli-0.1.2 → atk_cli-0.2.1}/src/atk/commands/upgrade.py +0 -0
- {atk_cli-0.1.2 → atk_cli-0.2.1}/src/atk/env.py +0 -0
- {atk_cli-0.1.2 → atk_cli-0.2.1}/src/atk/errors.py +0 -0
- {atk_cli-0.1.2 → atk_cli-0.2.1}/src/atk/exit_codes.py +0 -0
- {atk_cli-0.1.2 → atk_cli-0.2.1}/src/atk/fetch.py +0 -0
- {atk_cli-0.1.2 → atk_cli-0.2.1}/src/atk/git_source.py +0 -0
- {atk_cli-0.1.2 → atk_cli-0.2.1}/src/atk/home.py +0 -0
- {atk_cli-0.1.2 → atk_cli-0.2.1}/src/atk/lifecycle.py +0 -0
- {atk_cli-0.1.2 → atk_cli-0.2.1}/src/atk/mcp.py +0 -0
- {atk_cli-0.1.2 → atk_cli-0.2.1}/src/atk/mcp_agents.py +0 -0
- {atk_cli-0.1.2 → atk_cli-0.2.1}/src/atk/mcp_configure.py +0 -0
- {atk_cli-0.1.2 → atk_cli-0.2.1}/src/atk/plugin.py +0 -0
- {atk_cli-0.1.2 → atk_cli-0.2.1}/src/atk/registry.py +0 -0
- {atk_cli-0.1.2 → atk_cli-0.2.1}/src/atk/registry_schema.py +0 -0
- {atk_cli-0.1.2 → atk_cli-0.2.1}/src/atk/sanitize.py +0 -0
- {atk_cli-0.1.2 → atk_cli-0.2.1}/src/atk/source.py +0 -0
- {atk_cli-0.1.2 → atk_cli-0.2.1}/src/atk/update_check.py +0 -0
- {atk_cli-0.1.2 → atk_cli-0.2.1}/src/atk/validation.py +0 -0
- {atk_cli-0.1.2 → atk_cli-0.2.1}/tests/__init__.py +0 -0
- {atk_cli-0.1.2 → atk_cli-0.2.1}/tests/agents/__init__.py +0 -0
- {atk_cli-0.1.2 → atk_cli-0.2.1}/tests/agents/test_auggie_skill.py +0 -0
- {atk_cli-0.1.2 → atk_cli-0.2.1}/tests/agents/test_claude_skill.py +0 -0
- {atk_cli-0.1.2 → atk_cli-0.2.1}/tests/agents/test_codex_skill.py +0 -0
- {atk_cli-0.1.2 → atk_cli-0.2.1}/tests/agents/test_gemini_skill.py +0 -0
- {atk_cli-0.1.2 → atk_cli-0.2.1}/tests/agents/test_opencode_skill.py +0 -0
- {atk_cli-0.1.2 → atk_cli-0.2.1}/tests/agents/test_symlink_skill.py +0 -0
- {atk_cli-0.1.2 → atk_cli-0.2.1}/tests/commands/__init__.py +0 -0
- {atk_cli-0.1.2 → atk_cli-0.2.1}/tests/commands/test_search.py +0 -0
- {atk_cli-0.1.2 → atk_cli-0.2.1}/tests/commands/test_status.py +0 -0
- {atk_cli-0.1.2 → atk_cli-0.2.1}/tests/conftest.py +0 -0
- {atk_cli-0.1.2 → atk_cli-0.2.1}/tests/fixtures/plugins/full-plugin/README.md +0 -0
- {atk_cli-0.1.2 → atk_cli-0.2.1}/tests/fixtures/plugins/full-plugin/install.sh +0 -0
- {atk_cli-0.1.2 → atk_cli-0.2.1}/tests/fixtures/plugins/full-plugin/mcp-server.sh +0 -0
- {atk_cli-0.1.2 → atk_cli-0.2.1}/tests/fixtures/plugins/full-plugin/plugin.yaml +0 -0
- {atk_cli-0.1.2 → atk_cli-0.2.1}/tests/fixtures/plugins/full-plugin/start.sh +0 -0
- {atk_cli-0.1.2 → atk_cli-0.2.1}/tests/fixtures/plugins/full-plugin/status.sh +0 -0
- {atk_cli-0.1.2 → atk_cli-0.2.1}/tests/fixtures/plugins/full-plugin/stop.sh +0 -0
- {atk_cli-0.1.2 → atk_cli-0.2.1}/tests/fixtures/plugins/invalid-plugin/plugin.yaml +0 -0
- {atk_cli-0.1.2 → atk_cli-0.2.1}/tests/fixtures/plugins/minimal-plugin/plugin.yaml +0 -0
- {atk_cli-0.1.2 → atk_cli-0.2.1}/tests/test_errors.py +0 -0
- {atk_cli-0.1.2 → atk_cli-0.2.1}/tests/test_git_source.py +0 -0
- {atk_cli-0.1.2 → atk_cli-0.2.1}/tests/test_home.py +0 -0
- {atk_cli-0.1.2 → atk_cli-0.2.1}/tests/test_init.py +0 -0
- {atk_cli-0.1.2 → atk_cli-0.2.1}/tests/test_lifecycle.py +0 -0
- {atk_cli-0.1.2 → atk_cli-0.2.1}/tests/test_plugin.py +0 -0
- {atk_cli-0.1.2 → atk_cli-0.2.1}/tests/test_registry.py +0 -0
- {atk_cli-0.1.2 → atk_cli-0.2.1}/tests/test_run.py +0 -0
- {atk_cli-0.1.2 → atk_cli-0.2.1}/tests/test_sanitize.py +0 -0
- {atk_cli-0.1.2 → atk_cli-0.2.1}/tests/test_source.py +0 -0
- {atk_cli-0.1.2 → atk_cli-0.2.1}/tests/test_update_check.py +0 -0
- {atk_cli-0.1.2 → atk_cli-0.2.1}/tests/test_version.py +0 -0
- {atk_cli-0.1.2 → atk_cli-0.2.1}/uv.lock +0 -0
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: Bug report
|
|
3
|
+
about: Something isn't working
|
|
4
|
+
labels: bug
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
**ATK version** (`atk --version`):
|
|
8
|
+
|
|
9
|
+
**What happened:**
|
|
10
|
+
|
|
11
|
+
**What you expected:**
|
|
12
|
+
|
|
13
|
+
**Steps to reproduce:**
|
|
14
|
+
|
|
15
|
+
```bash
|
|
16
|
+
# minimal reproduction
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
**OS:**
|
|
20
|
+
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
name: CI
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
branches: [main]
|
|
6
|
+
pull_request:
|
|
7
|
+
branches: [main]
|
|
8
|
+
|
|
9
|
+
jobs:
|
|
10
|
+
check:
|
|
11
|
+
runs-on: ubuntu-latest
|
|
12
|
+
permissions:
|
|
13
|
+
id-token: write
|
|
14
|
+
strategy:
|
|
15
|
+
matrix:
|
|
16
|
+
python-version: ["3.11", "3.12", "3.13"]
|
|
17
|
+
|
|
18
|
+
steps:
|
|
19
|
+
- uses: actions/checkout@v4
|
|
20
|
+
|
|
21
|
+
- name: Install uv
|
|
22
|
+
uses: astral-sh/setup-uv@v4
|
|
23
|
+
|
|
24
|
+
- name: Set up Python ${{ matrix.python-version }}
|
|
25
|
+
run: uv python install ${{ matrix.python-version }}
|
|
26
|
+
|
|
27
|
+
- name: Install dependencies
|
|
28
|
+
run: uv sync
|
|
29
|
+
|
|
30
|
+
- name: Run checks
|
|
31
|
+
run: make check
|
|
32
|
+
|
|
33
|
+
- name: Run tests with coverage (3.11 only)
|
|
34
|
+
if: matrix.python-version == '3.11'
|
|
35
|
+
run: uv run coverage run -m pytest
|
|
36
|
+
|
|
37
|
+
- name: Generate XML coverage report (3.11 only)
|
|
38
|
+
if: matrix.python-version == '3.11'
|
|
39
|
+
run: uv run coverage xml
|
|
40
|
+
|
|
41
|
+
- name: Upload coverage to Codecov (3.11 only)
|
|
42
|
+
if: matrix.python-version == '3.11'
|
|
43
|
+
uses: codecov/codecov-action@v5
|
|
44
|
+
with:
|
|
45
|
+
files: ./coverage.xml
|
|
46
|
+
use_oidc: true
|
|
47
|
+
fail_ci_if_error: false
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
# Contributor Covenant Code of Conduct
|
|
2
|
+
|
|
3
|
+
## Our Pledge
|
|
4
|
+
|
|
5
|
+
We as members, contributors, and leaders pledge to make participation in our community
|
|
6
|
+
a harassment-free experience for everyone, regardless of age, body size, visible or invisible
|
|
7
|
+
disability, ethnicity, sex characteristics, gender identity and expression, level of experience,
|
|
8
|
+
education, socio-economic status, nationality, personal appearance, race, caste, color,
|
|
9
|
+
religion, or sexual identity and orientation.
|
|
10
|
+
|
|
11
|
+
## Our Standards
|
|
12
|
+
|
|
13
|
+
Examples of behavior that contributes to a positive environment:
|
|
14
|
+
|
|
15
|
+
- Demonstrating empathy and kindness toward other people
|
|
16
|
+
- Being respectful of differing opinions, viewpoints, and experiences
|
|
17
|
+
- Giving and gracefully accepting constructive feedback
|
|
18
|
+
- Accepting responsibility and apologizing to those affected by our mistakes
|
|
19
|
+
|
|
20
|
+
Examples of unacceptable behavior:
|
|
21
|
+
|
|
22
|
+
- Sexualized language or imagery, and unwelcome sexual attention or advances
|
|
23
|
+
- Trolling, insulting or derogatory comments, and personal or political attacks
|
|
24
|
+
- Public or private harassment
|
|
25
|
+
- Publishing others' private information without explicit permission
|
|
26
|
+
|
|
27
|
+
## Enforcement
|
|
28
|
+
|
|
29
|
+
Instances of abusive, harassing, or otherwise unacceptable behavior may be reported
|
|
30
|
+
to the project maintainer at **sasha@svtoo.com**. All complaints will be reviewed
|
|
31
|
+
and investigated promptly and fairly.
|
|
32
|
+
|
|
33
|
+
## Attribution
|
|
34
|
+
|
|
35
|
+
This Code of Conduct is adapted from the [Contributor Covenant](https://www.contributor-covenant.org), version 2.1.
|
|
36
|
+
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
# Contributing to ATK
|
|
2
|
+
|
|
3
|
+
Thanks for your interest. ATK is an early-stage tool — contributions are welcome.
|
|
4
|
+
|
|
5
|
+
## Getting started
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
git clone https://github.com/Svtoo/atk
|
|
9
|
+
cd atk
|
|
10
|
+
uv sync --dev
|
|
11
|
+
```
|
|
12
|
+
|
|
13
|
+
## Making changes
|
|
14
|
+
|
|
15
|
+
- Open an issue first for non-trivial changes.
|
|
16
|
+
- Keep PRs focused — one concern per PR.
|
|
17
|
+
- Match existing code style (ruff + mypy strict).
|
|
18
|
+
|
|
19
|
+
## Tests
|
|
20
|
+
|
|
21
|
+
All code changes must include automated tests.
|
|
22
|
+
|
|
23
|
+
```bash
|
|
24
|
+
# Run the full test suite
|
|
25
|
+
uv run pytest
|
|
26
|
+
|
|
27
|
+
# Lint and type-check
|
|
28
|
+
uv run ruff check src tests
|
|
29
|
+
uv run mypy src
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
If you're adding a command or changing CLI behaviour, also test it manually:
|
|
33
|
+
|
|
34
|
+
```bash
|
|
35
|
+
uv run atk <your command>
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
The CI must pass before a PR is merged.
|
|
39
|
+
|
|
40
|
+
## Submitting a PR
|
|
41
|
+
|
|
42
|
+
1. Fork and create a branch from `main`.
|
|
43
|
+
2. Write or update tests for your change.
|
|
44
|
+
3. Run `make check` — all must pass.
|
|
45
|
+
4. Open a PR with a clear description of what changed and why.
|
|
46
|
+
|
|
47
|
+
## Adding a registry plugin
|
|
48
|
+
|
|
49
|
+
Submit a PR to [atk-registry](https://github.com/Svtoo/atk-registry), not this repo.
|
|
50
|
+
See the registry README for schema requirements.
|
|
51
|
+
|
atk_cli-0.2.1/PKG-INFO
ADDED
|
@@ -0,0 +1,416 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: atk-cli
|
|
3
|
+
Version: 0.2.1
|
|
4
|
+
Summary: AI Toolkit - Manage AI development tools through a git-backed, declarative manifest
|
|
5
|
+
Project-URL: Homepage, https://github.com/Svtoo/atk
|
|
6
|
+
Project-URL: Repository, https://github.com/Svtoo/atk
|
|
7
|
+
Project-URL: Issues, https://github.com/Svtoo/atk/issues
|
|
8
|
+
Author-email: "Oleksandr (Sasha) Antoshchenko" <sasha@svtoo.com>
|
|
9
|
+
License: Apache-2.0
|
|
10
|
+
License-File: LICENSE
|
|
11
|
+
Keywords: agent,ai,cli,devtools,mcp,tools
|
|
12
|
+
Classifier: Development Status :: 3 - Alpha
|
|
13
|
+
Classifier: Environment :: Console
|
|
14
|
+
Classifier: Intended Audience :: Developers
|
|
15
|
+
Classifier: License :: OSI Approved :: Apache Software License
|
|
16
|
+
Classifier: Operating System :: MacOS
|
|
17
|
+
Classifier: Operating System :: POSIX :: Linux
|
|
18
|
+
Classifier: Programming Language :: Python :: 3
|
|
19
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
20
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
21
|
+
Classifier: Programming Language :: Python :: 3.13
|
|
22
|
+
Classifier: Topic :: Software Development :: Build Tools
|
|
23
|
+
Classifier: Topic :: System :: Systems Administration
|
|
24
|
+
Requires-Python: >=3.11
|
|
25
|
+
Requires-Dist: pydantic>=2.0
|
|
26
|
+
Requires-Dist: python-dotenv>=1.2.1
|
|
27
|
+
Requires-Dist: pyyaml>=6.0
|
|
28
|
+
Requires-Dist: rich>=13.0
|
|
29
|
+
Requires-Dist: typer>=0.12
|
|
30
|
+
Description-Content-Type: text/markdown
|
|
31
|
+
|
|
32
|
+
<p align="center">
|
|
33
|
+
<img src="assets/logo.png" alt="ATK Logo" width="280px">
|
|
34
|
+
</p>
|
|
35
|
+
|
|
36
|
+
<p align="center">
|
|
37
|
+
<a href="https://github.com/Svtoo/atk/actions/workflows/ci.yml"><img src="https://github.com/Svtoo/atk/actions/workflows/ci.yml/badge.svg" alt="CI"></a>
|
|
38
|
+
<a href="https://codecov.io/gh/Svtoo/atk"><img src="https://codecov.io/gh/Svtoo/atk/branch/main/graph/badge.svg" alt="Coverage"></a>
|
|
39
|
+
<a href="https://pypi.org/project/atk-cli/"><img src="https://img.shields.io/pypi/v/atk-cli" alt="PyPI version"></a>
|
|
40
|
+
<a href="https://pypi.org/project/atk-cli/"><img src="https://img.shields.io/pypi/dm/atk-cli" alt="PyPI downloads"></a>
|
|
41
|
+
<a href="https://pypi.org/project/atk-cli/"><img src="https://img.shields.io/pypi/pyversions/atk-cli" alt="Python versions"></a>
|
|
42
|
+
<a href="LICENSE"><img src="https://img.shields.io/github/license/Svtoo/atk" alt="License"></a>
|
|
43
|
+
</p>
|
|
44
|
+
|
|
45
|
+
# ATK — AI Tool Kit for Developers
|
|
46
|
+
|
|
47
|
+
ATK is a **CLI plugin manager for AI-assisted development**.
|
|
48
|
+
|
|
49
|
+
Install MCP servers and local AI services with one command. Wire them into every coding agent you use — Claude Code, Codex, Gemini CLI, Augment Code, OpenCode — simultaneously. Keep your entire setup git-backed, reproducible, and upgradeable.
|
|
50
|
+
|
|
51
|
+
> **Install. Wire. Done.**
|
|
52
|
+
> `atk add github` → `atk mcp add github --claude --codex --auggie`
|
|
53
|
+
|
|
54
|
+
<p align="center">
|
|
55
|
+
<img src="assets/demo-hero.gif" alt="ATK: wire one MCP into multiple agents" width="700px">
|
|
56
|
+
</p>
|
|
57
|
+
|
|
58
|
+
---
|
|
59
|
+
|
|
60
|
+
## The problem
|
|
61
|
+
|
|
62
|
+
If you use coding agents seriously, your setup probably looks like this:
|
|
63
|
+
|
|
64
|
+
- MCP servers installed from random Git repos, each with its own README to follow
|
|
65
|
+
- Local services started with long-forgotten `docker run` commands
|
|
66
|
+
- Agent configs hand-edited in JSON files scattered across your machine
|
|
67
|
+
- The same MCP configured differently in Claude, Codex, and Augment because you did it three times manually
|
|
68
|
+
- Secrets in `.env` files with no connection to anything
|
|
69
|
+
|
|
70
|
+
It works. Until you switch machines, break something, want to roll back, or come back after two months and have no idea what’s running or how it got there.
|
|
71
|
+
|
|
72
|
+
ATK exists because this setup is **real, fragile, and universal**.
|
|
73
|
+
|
|
74
|
+
---
|
|
75
|
+
|
|
76
|
+
## What ATK does
|
|
77
|
+
|
|
78
|
+
**Discover and install AI tools from a curated registry**
|
|
79
|
+
|
|
80
|
+
```bash
|
|
81
|
+
atk search # browse vetted plugins
|
|
82
|
+
atk add github # install in one command, prompts for config
|
|
83
|
+
atk status # see what's running, ports, env status
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
**Wire MCPs into all your coding agents at once**
|
|
87
|
+
|
|
88
|
+
```bash
|
|
89
|
+
atk mcp add github --claude --codex --gemini --auggie --opencode
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
One command. ATK calls each agent’s native MCP registration command, or writes the config file directly. No manual JSON editing across multiple apps.
|
|
93
|
+
|
|
94
|
+
**Teach your agents how to use the tools**
|
|
95
|
+
|
|
96
|
+
When a plugin ships a `SKILL.md` — usage instructions for AI agents — ATK injects it into each agent’s context automatically. Claude gets `@`-references in `CLAUDE.md`. Codex gets read-directives in `AGENTS.md`. Gemini and Augment Code gets a symlink in `~/.gemini/skills/`, `~/.augment/rules/` respectively. OpenCode gets an entry in its `instructions` array.
|
|
97
|
+
|
|
98
|
+
Your agent doesn’t just have access to the tool — it knows **how** and **when** to use it.
|
|
99
|
+
|
|
100
|
+
**Manage the full lifecycle of everything**
|
|
101
|
+
|
|
102
|
+
```bash
|
|
103
|
+
atk start openmemory # start a service
|
|
104
|
+
atk stop langfuse # stop it
|
|
105
|
+
atk logs openmemory # tail logs
|
|
106
|
+
atk upgrade --all # pull latest for all plugins
|
|
107
|
+
atk remove github # stop + uninstall + delete
|
|
108
|
+
```
|
|
109
|
+
|
|
110
|
+
Every tool — Docker service, MCP server, CLI binary — gets the same uniform interface.
|
|
111
|
+
|
|
112
|
+
---
|
|
113
|
+
|
|
114
|
+
## Supported agents
|
|
115
|
+
|
|
116
|
+
| Agent | MCP registration | Skill injection |
|
|
117
|
+
|-------|-----------------|-----------------|
|
|
118
|
+
| [Claude Code](https://claude.ai/code) | `claude mcp add` | `~/.claude/CLAUDE.md` |
|
|
119
|
+
| [Codex](https://github.com/openai/codex) | `codex mcp add` | `~/.codex/AGENTS.md` |
|
|
120
|
+
| [Gemini CLI](https://github.com/google-gemini/gemini-cli) | `gemini mcp add` | `~/.gemini/skills/` (dir symlink) |
|
|
121
|
+
| [Augment Code](https://augmentcode.com) | `auggie mcp add-json` | `~/.augment/rules/` |
|
|
122
|
+
| [OpenCode](https://opencode.ai) | writes `opencode.jsonc` | `opencode.jsonc` instructions |
|
|
123
|
+
|
|
124
|
+
You can target one, several, or all at once with agent flags.
|
|
125
|
+
|
|
126
|
+
---
|
|
127
|
+
|
|
128
|
+
## Registry
|
|
129
|
+
|
|
130
|
+
```
|
|
131
|
+
$ atk search
|
|
132
|
+
11 plugins
|
|
133
|
+
|
|
134
|
+
NAME DESCRIPTION
|
|
135
|
+
fetch Web content fetching via MCP
|
|
136
|
+
git-local Safe Git operations on local repos via MCP
|
|
137
|
+
github GitHub: search repos, file issues, open PRs from chat
|
|
138
|
+
gitlab GitLab issues, MRs, file reading via Duo MCP
|
|
139
|
+
google-workspace Gmail, Drive, Calendar, Docs, Sheets from any AI assistant
|
|
140
|
+
langfuse Open-source LLM observability and tracing
|
|
141
|
+
notion Search pages, read/write content, manage databases
|
|
142
|
+
openmemory Persistent memory layer for AI agents with semantic search
|
|
143
|
+
piper Local text-to-speech with neural voices
|
|
144
|
+
playwright Browser automation: screenshots, web interaction, JS execution
|
|
145
|
+
slack List channels, read history, post messages, look up users
|
|
146
|
+
```
|
|
147
|
+
|
|
148
|
+
All registry plugins are reviewed, schema-validated, and versioned. Installed plugins are marked with `✓`. Search by keyword: `atk search memory`, `atk search git`.
|
|
149
|
+
|
|
150
|
+
<p align="center">
|
|
151
|
+
<img src="assets/demo-search.gif" alt="atk search — live registry" width="700px">
|
|
152
|
+
</p>
|
|
153
|
+
|
|
154
|
+
---
|
|
155
|
+
|
|
156
|
+
## Getting started
|
|
157
|
+
|
|
158
|
+
<details>
|
|
159
|
+
<summary><strong>Prerequisite: install uv (recommended Python tool runner)</strong></summary>
|
|
160
|
+
|
|
161
|
+
- **macOS:** `brew install uv`
|
|
162
|
+
- **Other:** [Official Install Guide](https://docs.astral.sh/uv/getting-started/installation/)
|
|
163
|
+
|
|
164
|
+
</details>
|
|
165
|
+
|
|
166
|
+
```bash
|
|
167
|
+
# Install ATK
|
|
168
|
+
uv tool install atk-cli # recommended
|
|
169
|
+
# or: pip install atk-cli
|
|
170
|
+
|
|
171
|
+
# Initialize ATK Home (defaults to ~/.atk — a git repo)
|
|
172
|
+
atk init
|
|
173
|
+
|
|
174
|
+
# Browse available plugins
|
|
175
|
+
atk search
|
|
176
|
+
|
|
177
|
+
# Add a plugin — installs it and prompts for any config it needs
|
|
178
|
+
atk add openmemory
|
|
179
|
+
|
|
180
|
+
# Check what's running
|
|
181
|
+
atk status
|
|
182
|
+
|
|
183
|
+
# Wire the MCP into your coding agents (with skill instructions)
|
|
184
|
+
atk mcp add openmemory --claude --auggie
|
|
185
|
+
|
|
186
|
+
# See the raw MCP config (copy-paste into any tool that reads JSON)
|
|
187
|
+
atk mcp show openmemory
|
|
188
|
+
```
|
|
189
|
+
|
|
190
|
+
Your entire setup lives in `~/.atk/` — a git repository. Push it. Clone it on another machine. Run `atk install --all`. Everything comes back exactly as you left it.
|
|
191
|
+
|
|
192
|
+
<p align="center">
|
|
193
|
+
<img src="assets/demo-status.gif" alt="atk status — live service dashboard" width="700px">
|
|
194
|
+
</p>
|
|
195
|
+
|
|
196
|
+
---
|
|
197
|
+
|
|
198
|
+
## Command reference
|
|
199
|
+
|
|
200
|
+
| Command | What it does |
|
|
201
|
+
|---------|--------------|
|
|
202
|
+
| `atk search [query]` | Browse or filter registry plugins |
|
|
203
|
+
| `atk add <name\|url\|path>` | Install a plugin, prompts for config |
|
|
204
|
+
| `atk setup <plugin>` | Re-configure environment variables |
|
|
205
|
+
| `atk status` | Show all plugins: running state, ports, env |
|
|
206
|
+
| `atk start / stop / restart` | Lifecycle control |
|
|
207
|
+
| `atk logs <plugin>` | Tail service logs |
|
|
208
|
+
| `atk upgrade [--all]` | Pull latest plugin version |
|
|
209
|
+
| `atk remove <plugin>` | Stop + uninstall + delete |
|
|
210
|
+
| `atk mcp show <plugin>` | Print MCP config (plaintext or `--json`) |
|
|
211
|
+
| `atk mcp add <plugin> [--claude] [--codex] [--gemini] [--auggie] [--opencode]` | Register with agents + inject skill |
|
|
212
|
+
| `atk mcp remove <plugin> [agents...]` | Unregister from agents |
|
|
213
|
+
| `atk help <plugin>` | Render plugin README in terminal |
|
|
214
|
+
| `atk run <plugin> <script>` | Run a plugin's custom script |
|
|
215
|
+
|
|
216
|
+
---
|
|
217
|
+
|
|
218
|
+
## ATK plugins and registry
|
|
219
|
+
|
|
220
|
+
ATK is built around **plugins**.
|
|
221
|
+
|
|
222
|
+
A plugin describes how to install, configure, run, update, and integrate a tool or service — including MCPs, local services, CLIs, or agent-facing components.
|
|
223
|
+
|
|
224
|
+
ATK supports **three ways** to work with plugins:
|
|
225
|
+
|
|
226
|
+
### 1. Official ATK Registry (vetted plugins)
|
|
227
|
+
|
|
228
|
+
ATK maintains a growing **registry of vetted plugins** for common tools in AI-assisted development.
|
|
229
|
+
|
|
230
|
+
Install by name:
|
|
231
|
+
|
|
232
|
+
```bash
|
|
233
|
+
atk add openmemory
|
|
234
|
+
atk add langfuse
|
|
235
|
+
```
|
|
236
|
+
|
|
237
|
+
Registry plugins are reviewed, schema-validated, versioned, and pinned. Think of this as the "known good" layer.
|
|
238
|
+
|
|
239
|
+
### 2. Git repository plugins (distribution channel)
|
|
240
|
+
|
|
241
|
+
Any Git repository can become an ATK plugin. Add a `.atk/plugin.yaml` to your repo and users can install it with one line:
|
|
242
|
+
|
|
243
|
+
```bash
|
|
244
|
+
atk add github.com/your-org/your-tool
|
|
245
|
+
```
|
|
246
|
+
|
|
247
|
+
ATK sparse-clones only the `.atk/` directory, validates the plugin, pins it to a commit hash, and manages its lifecycle like any other plugin. This turns ATK into a **distribution channel for AI tooling** — without a centralized gatekeeper.
|
|
248
|
+
|
|
249
|
+
### 3. Local plugins (personal or internal tooling)
|
|
250
|
+
|
|
251
|
+
```bash
|
|
252
|
+
atk add ./my-plugin
|
|
253
|
+
```
|
|
254
|
+
|
|
255
|
+
Lives in `~/.atk`, fully versioned, uses the same schema. Ideal for personal scripts, internal tools, or plugins in development.
|
|
256
|
+
|
|
257
|
+
---
|
|
258
|
+
|
|
259
|
+
## Reproducibility
|
|
260
|
+
|
|
261
|
+
ATK environments are fully reproducible:
|
|
262
|
+
|
|
263
|
+
- Plugins are validated against a **versioned schema**
|
|
264
|
+
- Plugin versions are **pinned** to exact commit hashes in the manifest
|
|
265
|
+
- Secrets live in isolated, gitignored `.env` files
|
|
266
|
+
- Every mutation is a **git commit** — rollback is `git revert`
|
|
267
|
+
- Additive schema changes are backward-compatible
|
|
268
|
+
|
|
269
|
+
Clone the repo on a new machine. Run `atk install --all`. You get the same toolchain.
|
|
270
|
+
|
|
271
|
+
---
|
|
272
|
+
|
|
273
|
+
## Unified lifecycle
|
|
274
|
+
|
|
275
|
+
ATK gives every tool the same lifecycle, regardless of how it is installed.
|
|
276
|
+
|
|
277
|
+
```bash
|
|
278
|
+
atk start openmemory
|
|
279
|
+
atk stop openmemory
|
|
280
|
+
atk restart openmemory
|
|
281
|
+
atk status
|
|
282
|
+
atk logs openmemory
|
|
283
|
+
```
|
|
284
|
+
|
|
285
|
+
This works whether the tool is a Docker service, a Python CLI, a Node binary, or a custom shell-based MCP server.
|
|
286
|
+
|
|
287
|
+
---
|
|
288
|
+
|
|
289
|
+
## Design principles
|
|
290
|
+
|
|
291
|
+
| Principle | Meaning |
|
|
292
|
+
| ----------- | ----------------------------------------------------- |
|
|
293
|
+
| Declarative | The manifest describes desired state; ATK enforces it |
|
|
294
|
+
| Idempotent | Running the same command twice yields the same result |
|
|
295
|
+
| Git-native | Every mutation is a commit; rollback = `git revert` |
|
|
296
|
+
| Transparent | Human-readable YAML; no hidden state |
|
|
297
|
+
| AI-first | CLI-driven, scriptable, agent-friendly |
|
|
298
|
+
| Focused | Manages tools, doesn't build them |
|
|
299
|
+
|
|
300
|
+
---
|
|
301
|
+
|
|
302
|
+
## Who ATK is for
|
|
303
|
+
|
|
304
|
+
ATK is for developers who:
|
|
305
|
+
|
|
306
|
+
- rely on coding agents (Claude Code, Codex, Augment Code, etc.)
|
|
307
|
+
- don't want to be vendor-locked, or work with multiple tools
|
|
308
|
+
- use MCP servers (local and remote)
|
|
309
|
+
- run local services like memory, observability, or vector stores
|
|
310
|
+
- care about owning their data and controlling their setup
|
|
311
|
+
|
|
312
|
+
ATK is not limited to people building AI models. It is for people **building software with AI systems in the loop**.
|
|
313
|
+
|
|
314
|
+
---
|
|
315
|
+
|
|
316
|
+
## What ATK is (and is not)
|
|
317
|
+
|
|
318
|
+
**ATK is:**
|
|
319
|
+
- a toolchain and plugin manager for developers
|
|
320
|
+
- focused on local, long-lived AI tooling
|
|
321
|
+
- git-backed and reproducible
|
|
322
|
+
- CLI-first and automation-friendly
|
|
323
|
+
- designed to be driven by humans *and* coding agents
|
|
324
|
+
|
|
325
|
+
**ATK is not:**
|
|
326
|
+
- an environment manager (Nix, Conda, Devbox)
|
|
327
|
+
- infrastructure-as-code (Terraform, Ansible)
|
|
328
|
+
- a production deployment system
|
|
329
|
+
- project-scoped
|
|
330
|
+
|
|
331
|
+
If you're configuring servers, ATK is the wrong tool.
|
|
332
|
+
If you're keeping your **AI dev setup sane**, it's the right one.
|
|
333
|
+
|
|
334
|
+
---
|
|
335
|
+
|
|
336
|
+
## Installation
|
|
337
|
+
|
|
338
|
+
```bash
|
|
339
|
+
# Recommended
|
|
340
|
+
uv tool install atk-cli
|
|
341
|
+
|
|
342
|
+
# Alternative
|
|
343
|
+
pip install atk-cli
|
|
344
|
+
```
|
|
345
|
+
|
|
346
|
+
ATK is distributed via **PyPI** and installs as a single self-contained CLI. Requires Python 3.11+.
|
|
347
|
+
|
|
348
|
+
---
|
|
349
|
+
|
|
350
|
+
## For MCP authors: ATK as your distribution layer
|
|
351
|
+
|
|
352
|
+
If you’re building an MCP server, ATK is the easiest way to get it into your users’ agents.
|
|
353
|
+
|
|
354
|
+
### What you get
|
|
355
|
+
|
|
356
|
+
**One-command install from your repo**
|
|
357
|
+
|
|
358
|
+
```bash
|
|
359
|
+
atk add github.com/you/your-mcp-server
|
|
360
|
+
```
|
|
361
|
+
|
|
362
|
+
ATK sparse-clones only the `.atk/` directory from your repo, validates it, and pins it to a commit hash. Your users run one command and have a working, managed, upgradeable installation.
|
|
363
|
+
|
|
364
|
+
**Automatic agent wiring — all agents at once**
|
|
365
|
+
|
|
366
|
+
```bash
|
|
367
|
+
atk mcp add your-mcp-server --claude --codex --gemini --auggie --opencode
|
|
368
|
+
```
|
|
369
|
+
|
|
370
|
+
ATK handles the agent-specific plumbing: native CLI commands for Claude and Codex, JSON config writing for OpenCode, everything. Your users don’t need to know which config file to edit or which flags to pass.
|
|
371
|
+
|
|
372
|
+
**You control how agents use your tool**
|
|
373
|
+
|
|
374
|
+
Ship a `SKILL.md` alongside your plugin. When users run `atk mcp add`, ATK injects it into each agent’s context automatically:
|
|
375
|
+
|
|
376
|
+
- **Claude Code**: added to `~/.claude/CLAUDE.md` as an `@`-reference
|
|
377
|
+
- **Codex**: added to `~/.codex/AGENTS.md` as a read-directive
|
|
378
|
+
- **Augment Code**: symlinked into `~/.augment/rules/` (auto-loaded every session)
|
|
379
|
+
- **OpenCode**: added to the `instructions` array in `opencode.jsonc`
|
|
380
|
+
- **Gemini CLI**: symlinked into `~/.gemini/skills/`
|
|
381
|
+
|
|
382
|
+
The agent doesn’t just have access — it has instructions. You decide what the agent knows about your tool, how it should use it, and what it should avoid.
|
|
383
|
+
|
|
384
|
+
### How to add ATK support to your repo
|
|
385
|
+
|
|
386
|
+
You don’t need to write the plugin files by hand. ATK ships a dedicated skill file that tells your coding agent exactly what to build: the schema, lifecycle scripts, `SKILL.md` conventions, testing protocol, and all three distribution patterns.
|
|
387
|
+
|
|
388
|
+
**[ATK Plugin Creation Skill →](skills/create-atk-plugin/SKILL.md)**
|
|
389
|
+
|
|
390
|
+
Feed it to your agent and ask:
|
|
391
|
+
|
|
392
|
+
> *"Create an ATK plugin for [your tool name]. Follow the skill file."*
|
|
393
|
+
|
|
394
|
+
The agent will produce a complete `plugin.yaml`, install and lifecycle scripts, `SKILL.md`, and `README.md` — ready to ship.
|
|
395
|
+
|
|
396
|
+
Once the files are ready, test locally then share via your existing repo:
|
|
397
|
+
|
|
398
|
+
```bash
|
|
399
|
+
atk add ./.atk # install locally to test
|
|
400
|
+
atk add github.com/you/your-repo # users install from your git URL
|
|
401
|
+
```
|
|
402
|
+
|
|
403
|
+
### Getting listed in the registry
|
|
404
|
+
|
|
405
|
+
The [ATK registry](https://github.com/Svtoo/atk-registry) is the curated list of plugins available via `atk search`. Submit a PR to add your plugin. Registry plugins are reviewed and must meet the schema requirements — verified plugins get a `verified` badge in `atk status`.
|
|
406
|
+
|
|
407
|
+
---
|
|
408
|
+
|
|
409
|
+
## Status
|
|
410
|
+
|
|
411
|
+
ATK is under active development.
|
|
412
|
+
Expect fast iteration and opinionated choices.
|
|
413
|
+
|
|
414
|
+
If this problem resonates with you, try it — and break it.
|
|
415
|
+
|
|
416
|
+
If ATK saves you time, a ⭐ on [GitHub](https://github.com/Svtoo/atk) goes a long way.
|