tack-agents 0.1.0__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 (60) hide show
  1. tack_agents-0.1.0/.gitignore +7 -0
  2. tack_agents-0.1.0/LICENSE +21 -0
  3. tack_agents-0.1.0/PKG-INFO +80 -0
  4. tack_agents-0.1.0/README.md +59 -0
  5. tack_agents-0.1.0/docs/design.md +724 -0
  6. tack_agents-0.1.0/docs/logo-dark.svg +20 -0
  7. tack_agents-0.1.0/docs/logo-light.svg +20 -0
  8. tack_agents-0.1.0/pyproject.toml +62 -0
  9. tack_agents-0.1.0/src/tack/__init__.py +4 -0
  10. tack_agents-0.1.0/src/tack/__main__.py +5 -0
  11. tack_agents-0.1.0/src/tack/cli.py +479 -0
  12. tack_agents-0.1.0/src/tack/commit.py +173 -0
  13. tack_agents-0.1.0/src/tack/config.py +494 -0
  14. tack_agents-0.1.0/src/tack/deploy.py +183 -0
  15. tack_agents-0.1.0/src/tack/doctor/__init__.py +75 -0
  16. tack_agents-0.1.0/src/tack/doctor/findings.py +19 -0
  17. tack_agents-0.1.0/src/tack/doctor/hooks.py +245 -0
  18. tack_agents-0.1.0/src/tack/doctor/instructions.py +183 -0
  19. tack_agents-0.1.0/src/tack/doctor/project_skills.py +81 -0
  20. tack_agents-0.1.0/src/tack/doctor/projects.py +75 -0
  21. tack_agents-0.1.0/src/tack/doctor/skills.py +176 -0
  22. tack_agents-0.1.0/src/tack/edit.py +321 -0
  23. tack_agents-0.1.0/src/tack/git.py +45 -0
  24. tack_agents-0.1.0/src/tack/outdated.py +136 -0
  25. tack_agents-0.1.0/src/tack/scaffold/__init__.py +56 -0
  26. tack_agents-0.1.0/src/tack/scaffold/hooks.py +225 -0
  27. tack_agents-0.1.0/src/tack/scaffold/instructions.py +97 -0
  28. tack_agents-0.1.0/src/tack/scaffold/skills.py +108 -0
  29. tack_agents-0.1.0/src/tack/scaffold/writer.py +163 -0
  30. tack_agents-0.1.0/src/tack/sources.py +249 -0
  31. tack_agents-0.1.0/src/tack/status.py +114 -0
  32. tack_agents-0.1.0/src/tack/sync.py +289 -0
  33. tack_agents-0.1.0/src/tack/text.py +78 -0
  34. tack_agents-0.1.0/src/tack/tui/__init__.py +17 -0
  35. tack_agents-0.1.0/src/tack/tui/app.py +362 -0
  36. tack_agents-0.1.0/src/tack/tui/dialogs.py +205 -0
  37. tack_agents-0.1.0/src/tack/tui/render.py +187 -0
  38. tack_agents-0.1.0/src/tack/update.py +54 -0
  39. tack_agents-0.1.0/tests/__init__.py +0 -0
  40. tack_agents-0.1.0/tests/conftest.py +38 -0
  41. tack_agents-0.1.0/tests/helpers.py +95 -0
  42. tack_agents-0.1.0/tests/test_cli.py +398 -0
  43. tack_agents-0.1.0/tests/test_commit.py +239 -0
  44. tack_agents-0.1.0/tests/test_config.py +179 -0
  45. tack_agents-0.1.0/tests/test_deploy.py +158 -0
  46. tack_agents-0.1.0/tests/test_doctor_hooks.py +221 -0
  47. tack_agents-0.1.0/tests/test_doctor_instructions.py +148 -0
  48. tack_agents-0.1.0/tests/test_doctor_project_skills.py +81 -0
  49. tack_agents-0.1.0/tests/test_doctor_skills.py +215 -0
  50. tack_agents-0.1.0/tests/test_edit.py +345 -0
  51. tack_agents-0.1.0/tests/test_formula.py +50 -0
  52. tack_agents-0.1.0/tests/test_lock.py +76 -0
  53. tack_agents-0.1.0/tests/test_outdated.py +142 -0
  54. tack_agents-0.1.0/tests/test_projects.py +70 -0
  55. tack_agents-0.1.0/tests/test_scaffold.py +372 -0
  56. tack_agents-0.1.0/tests/test_sources.py +125 -0
  57. tack_agents-0.1.0/tests/test_status.py +83 -0
  58. tack_agents-0.1.0/tests/test_sync.py +244 -0
  59. tack_agents-0.1.0/tests/test_tui.py +257 -0
  60. tack_agents-0.1.0/tests/test_update.py +112 -0
@@ -0,0 +1,7 @@
1
+ .DS_Store
2
+ __pycache__/
3
+ *.pyc
4
+ .venv/
5
+ dist/
6
+ .pytest_cache/
7
+ .ruff_cache/
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 John Foland
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
@@ -0,0 +1,80 @@
1
+ Metadata-Version: 2.5
2
+ Name: tack-agents
3
+ Version: 0.1.0
4
+ Summary: Keep your agent skills deployed identically to Claude Code and Codex from one manifest, and audit projects so either agent sees the same instructions, skills and hooks.
5
+ Project-URL: Homepage, https://github.com/chocs-cat/tack
6
+ Project-URL: Issues, https://github.com/chocs-cat/tack/issues
7
+ Author-email: John Foland <john@johnfoland.net>
8
+ License-Expression: MIT
9
+ License-File: LICENSE
10
+ Keywords: agents,claude,cli,codex,skills
11
+ Classifier: Development Status :: 3 - Alpha
12
+ Classifier: Environment :: Console
13
+ Classifier: Intended Audience :: Developers
14
+ Classifier: Operating System :: MacOS
15
+ Classifier: Operating System :: POSIX :: Linux
16
+ Classifier: Programming Language :: Python :: 3
17
+ Classifier: Topic :: Software Development
18
+ Requires-Python: >=3.11
19
+ Requires-Dist: textual>=8.2.8
20
+ Description-Content-Type: text/markdown
21
+
22
+ <picture>
23
+ <source media="(prefers-color-scheme: dark)" srcset="https://raw.githubusercontent.com/chocs-cat/tack/master/docs/logo-dark.svg">
24
+ <img alt="tack" src="https://raw.githubusercontent.com/chocs-cat/tack/master/docs/logo-light.svg" height="64">
25
+ </picture>
26
+
27
+ Keep your coding agents' skills deployed identically to Claude Code and Codex
28
+ from one manifest of sources — your own skill repos and pinned third-party
29
+ ones — and audit your projects so either agent sees the same instructions,
30
+ skills, and hooks.
31
+
32
+ `tack sync` deploys skills from the manifest's sources, `tack status` shows
33
+ what is where, `tack outdated` and `tack update` track upstream, `tack add`
34
+ and `tack remove` edit the manifest, `tack doctor` audits, and
35
+ `tack scaffold` applies the fixes it suggests. A `path` source with
36
+ `autocommit = true` (and `autopush`) has its skill edits committed, and
37
+ pushed, whenever a command that changes things runs. A bare `tack` opens a
38
+ TUI over all of it: Skills, Sources and Doctor tabs, with every action
39
+ previewed before it runs. [The design](docs/design.md) has the details.
40
+
41
+ ## Install
42
+
43
+ ```sh
44
+ brew install chocs-cat/tap/tack
45
+ # or
46
+ uv tool install tack-agents # or: pipx install tack-agents
47
+ ```
48
+
49
+ macOS and Linux, Python 3.11 or later, and git.
50
+
51
+ ## Use
52
+
53
+ ```sh
54
+ tack # the TUI
55
+ tack add https://github.com/cloudflare/skills.git --skill wrangler
56
+ tack sync --dry-run # what would change
57
+ tack sync # fetch pinned sources, link skills into every harness
58
+ tack status # sources, pins, and which skills are linked where
59
+ tack outdated --diff # what upstream changed in the skills you deploy
60
+ tack update cloudflare # take it: move the pin, then sync
61
+ tack remove cloudflare # its table, pin, links and checkout
62
+ tack doctor # audit the harnesses and the projects under projects.roots
63
+ tack doctor --json # for scripts; exit 1 when there is an error or warning
64
+ tack scaffold hooks ~/Code/app --dry-run # the diff a doctor fix would make
65
+ ```
66
+
67
+ ## Development
68
+
69
+ ```sh
70
+ uv sync
71
+ uv run tack … # the checkout, not an installed copy
72
+ uv run pytest && uv run ruff check . && uv run ruff format --check . && uv run ty check
73
+ ```
74
+
75
+ [CONTRIBUTING.md](CONTRIBUTING.md) has the commit convention and how releases
76
+ are cut.
77
+
78
+ ## License
79
+
80
+ MIT; see [LICENSE](LICENSE).
@@ -0,0 +1,59 @@
1
+ <picture>
2
+ <source media="(prefers-color-scheme: dark)" srcset="https://raw.githubusercontent.com/chocs-cat/tack/master/docs/logo-dark.svg">
3
+ <img alt="tack" src="https://raw.githubusercontent.com/chocs-cat/tack/master/docs/logo-light.svg" height="64">
4
+ </picture>
5
+
6
+ Keep your coding agents' skills deployed identically to Claude Code and Codex
7
+ from one manifest of sources — your own skill repos and pinned third-party
8
+ ones — and audit your projects so either agent sees the same instructions,
9
+ skills, and hooks.
10
+
11
+ `tack sync` deploys skills from the manifest's sources, `tack status` shows
12
+ what is where, `tack outdated` and `tack update` track upstream, `tack add`
13
+ and `tack remove` edit the manifest, `tack doctor` audits, and
14
+ `tack scaffold` applies the fixes it suggests. A `path` source with
15
+ `autocommit = true` (and `autopush`) has its skill edits committed, and
16
+ pushed, whenever a command that changes things runs. A bare `tack` opens a
17
+ TUI over all of it: Skills, Sources and Doctor tabs, with every action
18
+ previewed before it runs. [The design](docs/design.md) has the details.
19
+
20
+ ## Install
21
+
22
+ ```sh
23
+ brew install chocs-cat/tap/tack
24
+ # or
25
+ uv tool install tack-agents # or: pipx install tack-agents
26
+ ```
27
+
28
+ macOS and Linux, Python 3.11 or later, and git.
29
+
30
+ ## Use
31
+
32
+ ```sh
33
+ tack # the TUI
34
+ tack add https://github.com/cloudflare/skills.git --skill wrangler
35
+ tack sync --dry-run # what would change
36
+ tack sync # fetch pinned sources, link skills into every harness
37
+ tack status # sources, pins, and which skills are linked where
38
+ tack outdated --diff # what upstream changed in the skills you deploy
39
+ tack update cloudflare # take it: move the pin, then sync
40
+ tack remove cloudflare # its table, pin, links and checkout
41
+ tack doctor # audit the harnesses and the projects under projects.roots
42
+ tack doctor --json # for scripts; exit 1 when there is an error or warning
43
+ tack scaffold hooks ~/Code/app --dry-run # the diff a doctor fix would make
44
+ ```
45
+
46
+ ## Development
47
+
48
+ ```sh
49
+ uv sync
50
+ uv run tack … # the checkout, not an installed copy
51
+ uv run pytest && uv run ruff check . && uv run ruff format --check . && uv run ty check
52
+ ```
53
+
54
+ [CONTRIBUTING.md](CONTRIBUTING.md) has the commit convention and how releases
55
+ are cut.
56
+
57
+ ## License
58
+
59
+ MIT; see [LICENSE](LICENSE).