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.
Files changed (140) hide show
  1. atk_cli-0.2.1/.github/ISSUE_TEMPLATE/bug_report.md +20 -0
  2. atk_cli-0.2.1/.github/ISSUE_TEMPLATE/feature_request.md +12 -0
  3. atk_cli-0.2.1/.github/pull_request_template.md +14 -0
  4. atk_cli-0.2.1/.github/workflows/ci.yml +47 -0
  5. atk_cli-0.2.1/CODE_OF_CONDUCT.md +36 -0
  6. atk_cli-0.2.1/CONTRIBUTING.md +51 -0
  7. atk_cli-0.2.1/PKG-INFO +416 -0
  8. atk_cli-0.2.1/README.md +385 -0
  9. atk_cli-0.2.1/SECURITY.md +22 -0
  10. atk_cli-0.2.1/assets/demo-hero.gif +0 -0
  11. atk_cli-0.2.1/assets/demo-search.gif +0 -0
  12. atk_cli-0.2.1/assets/demo-status.gif +0 -0
  13. atk_cli-0.2.1/assets/tapes/demo-hero.tape +41 -0
  14. atk_cli-0.2.1/assets/tapes/demo-search.tape +29 -0
  15. atk_cli-0.2.1/assets/tapes/demo-status.tape +29 -0
  16. {atk_cli-0.1.2 → atk_cli-0.2.1}/docs/README.md +1 -0
  17. {atk_cli-0.1.2 → atk_cli-0.2.1}/docs/ROADMAP.md +15 -5
  18. {atk_cli-0.1.2 → atk_cli-0.2.1}/docs/backlog.md +5 -7
  19. atk_cli-0.2.1/docs/phases/phase-11-git-sync.md +88 -0
  20. {atk_cli-0.1.2 → atk_cli-0.2.1}/docs/specs/atk-spec.md +3 -1
  21. {atk_cli-0.1.2 → atk_cli-0.2.1}/docs/specs/commands-spec.md +120 -18
  22. atk_cli-0.2.1/docs/specs/git-sync-spec.md +156 -0
  23. {atk_cli-0.1.2 → atk_cli-0.2.1}/docs/specs/home-spec.md +3 -0
  24. {atk_cli-0.1.2 → atk_cli-0.2.1}/docs/specs/mcp-agent-configure-spec.md +40 -22
  25. {atk_cli-0.1.2 → atk_cli-0.2.1}/skills/create-atk-plugin/SKILL.md +146 -85
  26. {atk_cli-0.1.2 → atk_cli-0.2.1}/src/atk/add.py +25 -7
  27. {atk_cli-0.1.2 → atk_cli-0.2.1}/src/atk/cli.py +76 -190
  28. atk_cli-0.2.1/src/atk/commands/plug.py +248 -0
  29. {atk_cli-0.1.2 → atk_cli-0.2.1}/src/atk/commands/status.py +55 -0
  30. {atk_cli-0.1.2 → atk_cli-0.2.1}/src/atk/git.py +218 -0
  31. {atk_cli-0.1.2 → atk_cli-0.2.1}/src/atk/init.py +1 -1
  32. {atk_cli-0.1.2 → atk_cli-0.2.1}/src/atk/manifest_schema.py +4 -0
  33. {atk_cli-0.1.2 → atk_cli-0.2.1}/src/atk/plugin_schema.py +42 -3
  34. {atk_cli-0.1.2 → atk_cli-0.2.1}/src/atk/remove.py +5 -2
  35. {atk_cli-0.1.2 → atk_cli-0.2.1}/src/atk/setup.py +3 -1
  36. {atk_cli-0.1.2 → atk_cli-0.2.1}/src/atk/upgrade.py +21 -1
  37. {atk_cli-0.1.2 → atk_cli-0.2.1}/tests/commands/test_cli.py +19 -19
  38. atk_cli-0.2.1/tests/fixtures/plugins/full-plugin/SKILL.md +3 -0
  39. atk_cli-0.2.1/tests/fixtures/plugins/skill-only-plugin/SKILL.md +3 -0
  40. atk_cli-0.2.1/tests/fixtures/plugins/skill-only-plugin/plugin.yaml +3 -0
  41. {atk_cli-0.1.2 → atk_cli-0.2.1}/tests/test_add.py +52 -4
  42. {atk_cli-0.1.2 → atk_cli-0.2.1}/tests/test_env.py +1 -1
  43. {atk_cli-0.1.2 → atk_cli-0.2.1}/tests/test_git.py +303 -0
  44. atk_cli-0.2.1/tests/test_git_proxy.py +72 -0
  45. {atk_cli-0.1.2 → atk_cli-0.2.1}/tests/test_manifest_schema.py +19 -0
  46. {atk_cli-0.1.2 → atk_cli-0.2.1}/tests/test_mcp.py +12 -61
  47. atk_cli-0.2.1/tests/test_plug.py +283 -0
  48. {atk_cli-0.1.2 → atk_cli-0.2.1}/tests/test_plugin_schema.py +180 -0
  49. {atk_cli-0.1.2 → atk_cli-0.2.1}/tests/test_remove.py +47 -0
  50. atk_cli-0.2.1/tests/test_repo_status.py +109 -0
  51. {atk_cli-0.1.2 → atk_cli-0.2.1}/tests/test_setup.py +49 -2
  52. {atk_cli-0.1.2 → atk_cli-0.2.1}/tests/test_upgrade.py +179 -0
  53. atk_cli-0.1.2/.github/workflows/ci.yml +0 -29
  54. atk_cli-0.1.2/PKG-INFO +0 -331
  55. atk_cli-0.1.2/README.md +0 -300
  56. {atk_cli-0.1.2 → atk_cli-0.2.1}/.github/workflows/publish.yml +0 -0
  57. {atk_cli-0.1.2 → atk_cli-0.2.1}/.gitignore +0 -0
  58. {atk_cli-0.1.2 → atk_cli-0.2.1}/LICENSE +0 -0
  59. {atk_cli-0.1.2 → atk_cli-0.2.1}/Makefile +0 -0
  60. {atk_cli-0.1.2 → atk_cli-0.2.1}/assets/logo.png +0 -0
  61. {atk_cli-0.1.2 → atk_cli-0.2.1}/docs/legacy/backup-feature-spec.md +0 -0
  62. {atk_cli-0.1.2 → atk_cli-0.2.1}/docs/legacy/cli-architecture.md +0 -0
  63. {atk_cli-0.1.2 → atk_cli-0.2.1}/docs/legacy/service-yaml-spec.md +0 -0
  64. {atk_cli-0.1.2 → atk_cli-0.2.1}/docs/phases/phase-1-core-cli.md +0 -0
  65. {atk_cli-0.1.2 → atk_cli-0.2.1}/docs/phases/phase-2-lifecycle.md +0 -0
  66. {atk_cli-0.1.2 → atk_cli-0.2.1}/docs/phases/phase-3-configuration.md +0 -0
  67. {atk_cli-0.1.2 → atk_cli-0.2.1}/docs/phases/phase-4-plugin-sources.md +0 -0
  68. {atk_cli-0.1.2 → atk_cli-0.2.1}/docs/specs/plugin-schema.md +0 -0
  69. {atk_cli-0.1.2 → atk_cli-0.2.1}/docs/specs/registry-spec.md +0 -0
  70. {atk_cli-0.1.2 → atk_cli-0.2.1}/pyproject.toml +0 -0
  71. {atk_cli-0.1.2 → atk_cli-0.2.1}/src/atk/__init__.py +0 -0
  72. {atk_cli-0.1.2 → atk_cli-0.2.1}/src/atk/agents/__init__.py +0 -0
  73. {atk_cli-0.1.2 → atk_cli-0.2.1}/src/atk/agents/auggie_skill.py +0 -0
  74. {atk_cli-0.1.2 → atk_cli-0.2.1}/src/atk/agents/claude_skill.py +0 -0
  75. {atk_cli-0.1.2 → atk_cli-0.2.1}/src/atk/agents/codex_skill.py +0 -0
  76. {atk_cli-0.1.2 → atk_cli-0.2.1}/src/atk/agents/gemini_skill.py +0 -0
  77. {atk_cli-0.1.2 → atk_cli-0.2.1}/src/atk/agents/managed_section.py +0 -0
  78. {atk_cli-0.1.2 → atk_cli-0.2.1}/src/atk/agents/opencode_skill.py +0 -0
  79. {atk_cli-0.1.2 → atk_cli-0.2.1}/src/atk/agents/symlink_skill.py +0 -0
  80. {atk_cli-0.1.2 → atk_cli-0.2.1}/src/atk/banner.py +0 -0
  81. {atk_cli-0.1.2 → atk_cli-0.2.1}/src/atk/bootstrap.py +0 -0
  82. {atk_cli-0.1.2 → atk_cli-0.2.1}/src/atk/cli_logger.py +0 -0
  83. {atk_cli-0.1.2 → atk_cli-0.2.1}/src/atk/commands/__init__.py +0 -0
  84. {atk_cli-0.1.2 → atk_cli-0.2.1}/src/atk/commands/lifecycle.py +0 -0
  85. {atk_cli-0.1.2 → atk_cli-0.2.1}/src/atk/commands/mcp.py +0 -0
  86. {atk_cli-0.1.2 → atk_cli-0.2.1}/src/atk/commands/preconditions.py +0 -0
  87. {atk_cli-0.1.2 → atk_cli-0.2.1}/src/atk/commands/run.py +0 -0
  88. {atk_cli-0.1.2 → atk_cli-0.2.1}/src/atk/commands/search.py +0 -0
  89. {atk_cli-0.1.2 → atk_cli-0.2.1}/src/atk/commands/upgrade.py +0 -0
  90. {atk_cli-0.1.2 → atk_cli-0.2.1}/src/atk/env.py +0 -0
  91. {atk_cli-0.1.2 → atk_cli-0.2.1}/src/atk/errors.py +0 -0
  92. {atk_cli-0.1.2 → atk_cli-0.2.1}/src/atk/exit_codes.py +0 -0
  93. {atk_cli-0.1.2 → atk_cli-0.2.1}/src/atk/fetch.py +0 -0
  94. {atk_cli-0.1.2 → atk_cli-0.2.1}/src/atk/git_source.py +0 -0
  95. {atk_cli-0.1.2 → atk_cli-0.2.1}/src/atk/home.py +0 -0
  96. {atk_cli-0.1.2 → atk_cli-0.2.1}/src/atk/lifecycle.py +0 -0
  97. {atk_cli-0.1.2 → atk_cli-0.2.1}/src/atk/mcp.py +0 -0
  98. {atk_cli-0.1.2 → atk_cli-0.2.1}/src/atk/mcp_agents.py +0 -0
  99. {atk_cli-0.1.2 → atk_cli-0.2.1}/src/atk/mcp_configure.py +0 -0
  100. {atk_cli-0.1.2 → atk_cli-0.2.1}/src/atk/plugin.py +0 -0
  101. {atk_cli-0.1.2 → atk_cli-0.2.1}/src/atk/registry.py +0 -0
  102. {atk_cli-0.1.2 → atk_cli-0.2.1}/src/atk/registry_schema.py +0 -0
  103. {atk_cli-0.1.2 → atk_cli-0.2.1}/src/atk/sanitize.py +0 -0
  104. {atk_cli-0.1.2 → atk_cli-0.2.1}/src/atk/source.py +0 -0
  105. {atk_cli-0.1.2 → atk_cli-0.2.1}/src/atk/update_check.py +0 -0
  106. {atk_cli-0.1.2 → atk_cli-0.2.1}/src/atk/validation.py +0 -0
  107. {atk_cli-0.1.2 → atk_cli-0.2.1}/tests/__init__.py +0 -0
  108. {atk_cli-0.1.2 → atk_cli-0.2.1}/tests/agents/__init__.py +0 -0
  109. {atk_cli-0.1.2 → atk_cli-0.2.1}/tests/agents/test_auggie_skill.py +0 -0
  110. {atk_cli-0.1.2 → atk_cli-0.2.1}/tests/agents/test_claude_skill.py +0 -0
  111. {atk_cli-0.1.2 → atk_cli-0.2.1}/tests/agents/test_codex_skill.py +0 -0
  112. {atk_cli-0.1.2 → atk_cli-0.2.1}/tests/agents/test_gemini_skill.py +0 -0
  113. {atk_cli-0.1.2 → atk_cli-0.2.1}/tests/agents/test_opencode_skill.py +0 -0
  114. {atk_cli-0.1.2 → atk_cli-0.2.1}/tests/agents/test_symlink_skill.py +0 -0
  115. {atk_cli-0.1.2 → atk_cli-0.2.1}/tests/commands/__init__.py +0 -0
  116. {atk_cli-0.1.2 → atk_cli-0.2.1}/tests/commands/test_search.py +0 -0
  117. {atk_cli-0.1.2 → atk_cli-0.2.1}/tests/commands/test_status.py +0 -0
  118. {atk_cli-0.1.2 → atk_cli-0.2.1}/tests/conftest.py +0 -0
  119. {atk_cli-0.1.2 → atk_cli-0.2.1}/tests/fixtures/plugins/full-plugin/README.md +0 -0
  120. {atk_cli-0.1.2 → atk_cli-0.2.1}/tests/fixtures/plugins/full-plugin/install.sh +0 -0
  121. {atk_cli-0.1.2 → atk_cli-0.2.1}/tests/fixtures/plugins/full-plugin/mcp-server.sh +0 -0
  122. {atk_cli-0.1.2 → atk_cli-0.2.1}/tests/fixtures/plugins/full-plugin/plugin.yaml +0 -0
  123. {atk_cli-0.1.2 → atk_cli-0.2.1}/tests/fixtures/plugins/full-plugin/start.sh +0 -0
  124. {atk_cli-0.1.2 → atk_cli-0.2.1}/tests/fixtures/plugins/full-plugin/status.sh +0 -0
  125. {atk_cli-0.1.2 → atk_cli-0.2.1}/tests/fixtures/plugins/full-plugin/stop.sh +0 -0
  126. {atk_cli-0.1.2 → atk_cli-0.2.1}/tests/fixtures/plugins/invalid-plugin/plugin.yaml +0 -0
  127. {atk_cli-0.1.2 → atk_cli-0.2.1}/tests/fixtures/plugins/minimal-plugin/plugin.yaml +0 -0
  128. {atk_cli-0.1.2 → atk_cli-0.2.1}/tests/test_errors.py +0 -0
  129. {atk_cli-0.1.2 → atk_cli-0.2.1}/tests/test_git_source.py +0 -0
  130. {atk_cli-0.1.2 → atk_cli-0.2.1}/tests/test_home.py +0 -0
  131. {atk_cli-0.1.2 → atk_cli-0.2.1}/tests/test_init.py +0 -0
  132. {atk_cli-0.1.2 → atk_cli-0.2.1}/tests/test_lifecycle.py +0 -0
  133. {atk_cli-0.1.2 → atk_cli-0.2.1}/tests/test_plugin.py +0 -0
  134. {atk_cli-0.1.2 → atk_cli-0.2.1}/tests/test_registry.py +0 -0
  135. {atk_cli-0.1.2 → atk_cli-0.2.1}/tests/test_run.py +0 -0
  136. {atk_cli-0.1.2 → atk_cli-0.2.1}/tests/test_sanitize.py +0 -0
  137. {atk_cli-0.1.2 → atk_cli-0.2.1}/tests/test_source.py +0 -0
  138. {atk_cli-0.1.2 → atk_cli-0.2.1}/tests/test_update_check.py +0 -0
  139. {atk_cli-0.1.2 → atk_cli-0.2.1}/tests/test_version.py +0 -0
  140. {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,12 @@
1
+ ---
2
+ name: Feature request
3
+ about: Suggest an improvement or new capability
4
+ labels: enhancement
5
+ ---
6
+
7
+ **What problem does this solve?**
8
+
9
+ **Proposed solution:**
10
+
11
+ **Alternatives considered:**
12
+
@@ -0,0 +1,14 @@
1
+ ## What
2
+
3
+ <!-- What does this PR change? -->
4
+
5
+ ## Why
6
+
7
+ <!-- Why is this change needed? -->
8
+
9
+ ## Tests
10
+
11
+ - [ ] Automated tests added or updated
12
+ - [ ] `make check` passes
13
+ - [ ] Manually tested (describe what you ran)
14
+
@@ -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.