agent-def-translator 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 (40) hide show
  1. agent_def_translator-0.1.0/.github/workflows/gitignore-in.yml +11 -0
  2. agent_def_translator-0.1.0/.github/workflows/happy.yml +10 -0
  3. agent_def_translator-0.1.0/.github/workflows/octocov.yml +50 -0
  4. agent_def_translator-0.1.0/.github/workflows/pypi-publish.yml +49 -0
  5. agent_def_translator-0.1.0/.github/workflows/python-test.yml +54 -0
  6. agent_def_translator-0.1.0/.github/workflows/spellcheck.yml +8 -0
  7. agent_def_translator-0.1.0/.gitignore +261 -0
  8. agent_def_translator-0.1.0/.gitignore.in +15 -0
  9. agent_def_translator-0.1.0/.octocov.yml +21 -0
  10. agent_def_translator-0.1.0/LICENSE +21 -0
  11. agent_def_translator-0.1.0/MANIFEST.in +5 -0
  12. agent_def_translator-0.1.0/PKG-INFO +158 -0
  13. agent_def_translator-0.1.0/README.md +133 -0
  14. agent_def_translator-0.1.0/examples/agents/repo-explorer.toml +20 -0
  15. agent_def_translator-0.1.0/examples/prompts/repo-explorer.claude.md +1 -0
  16. agent_def_translator-0.1.0/examples/skills/hello/SKILL.md +8 -0
  17. agent_def_translator-0.1.0/pyproject.toml +130 -0
  18. agent_def_translator-0.1.0/scripts/e2e-smoke.sh +131 -0
  19. agent_def_translator-0.1.0/setup.cfg +4 -0
  20. agent_def_translator-0.1.0/src/agent_def_translator/__init__.py +25 -0
  21. agent_def_translator-0.1.0/src/agent_def_translator/_version.py +24 -0
  22. agent_def_translator-0.1.0/src/agent_def_translator/cli.py +103 -0
  23. agent_def_translator-0.1.0/src/agent_def_translator/core.py +443 -0
  24. agent_def_translator-0.1.0/src/agent_def_translator/py.typed +1 -0
  25. agent_def_translator-0.1.0/src/agent_def_translator.egg-info/PKG-INFO +158 -0
  26. agent_def_translator-0.1.0/src/agent_def_translator.egg-info/SOURCES.txt +38 -0
  27. agent_def_translator-0.1.0/src/agent_def_translator.egg-info/dependency_links.txt +1 -0
  28. agent_def_translator-0.1.0/src/agent_def_translator.egg-info/entry_points.txt +2 -0
  29. agent_def_translator-0.1.0/src/agent_def_translator.egg-info/requires.txt +3 -0
  30. agent_def_translator-0.1.0/src/agent_def_translator.egg-info/top_level.txt +1 -0
  31. agent_def_translator-0.1.0/tests/fixtures/agents/repo-explorer.toml +22 -0
  32. agent_def_translator-0.1.0/tests/fixtures/golden/repo-explorer.claude.md +14 -0
  33. agent_def_translator-0.1.0/tests/fixtures/golden/repo-explorer.codex.toml +7 -0
  34. agent_def_translator-0.1.0/tests/fixtures/golden/repo-explorer.copilot.agent.md +14 -0
  35. agent_def_translator-0.1.0/tests/fixtures/prompts/repo-explorer.claude.md +1 -0
  36. agent_def_translator-0.1.0/tests/test_cli.py +75 -0
  37. agent_def_translator-0.1.0/tests/test_core.py +265 -0
  38. agent_def_translator-0.1.0/tests/test_examples.py +31 -0
  39. agent_def_translator-0.1.0/tests/test_golden.py +25 -0
  40. agent_def_translator-0.1.0/uv.lock +623 -0
@@ -0,0 +1,11 @@
1
+ name: Update gitignore file
2
+ on:
3
+ schedule:
4
+ # daily at 00:00
5
+ - cron: '0 0 * * *'
6
+ permissions:
7
+ contents: write
8
+ pull-requests: write
9
+ jobs:
10
+ update-gitignore:
11
+ uses: kitsuyui/gh-actions-workflows/.github/workflows/gitignore-in.yml@main
@@ -0,0 +1,10 @@
1
+ name: happy-commit
2
+ on:
3
+ - pull_request
4
+ permissions:
5
+ contents: read
6
+ pull-requests: write
7
+ issues: write
8
+ jobs:
9
+ happy:
10
+ uses: kitsuyui/gh-actions-workflows/.github/workflows/happy-commit.yml@main
@@ -0,0 +1,50 @@
1
+ name: octocov
2
+ on:
3
+ pull_request:
4
+ push:
5
+ branches:
6
+ - main
7
+
8
+ permissions:
9
+ contents: read
10
+ pull-requests: write
11
+ checks: write
12
+
13
+ jobs:
14
+ octocov:
15
+ runs-on: ubuntu-latest
16
+ strategy:
17
+ fail-fast: false
18
+ matrix:
19
+ python: ["3.14"]
20
+
21
+ steps:
22
+ - name: Checkout
23
+ uses: actions/checkout@v6
24
+
25
+ - name: Set up Python
26
+ id: setup-python
27
+ uses: actions/setup-python@v6
28
+ with:
29
+ python-version: "${{ matrix.python }}"
30
+
31
+ - name: Set up uv
32
+ uses: astral-sh/setup-uv@v7
33
+
34
+ - name: Install dependencies
35
+ run: |
36
+ uv python pin ${{ matrix.python }}
37
+ uv sync
38
+
39
+ - name: Test
40
+ run: uv run poe test
41
+
42
+ - name: Coverage
43
+ run: uv run poe coverage-xml
44
+
45
+ # See also: https://github.com/k1LoW/octocov-action
46
+ - name: Report coverage with octocov
47
+ uses: k1LoW/octocov-action@v1
48
+ with:
49
+ github-token: ${{ secrets.GITHUB_TOKEN }}
50
+ config: .octocov.yml
@@ -0,0 +1,49 @@
1
+ name: Packaging
2
+
3
+ on:
4
+ pull_request:
5
+ types: [opened, synchronize, reopened]
6
+ release:
7
+ # "released" events are emitted either when directly be released or be edited from pre-released.
8
+ types: [prereleased, released]
9
+
10
+ permissions:
11
+ contents: read
12
+
13
+ jobs:
14
+ deploy:
15
+ runs-on: ubuntu-latest
16
+ permissions:
17
+ contents: read
18
+ steps:
19
+ - uses: actions/checkout@v6
20
+
21
+ - name: Set up Python
22
+ id: setup-python
23
+ uses: actions/setup-python@v6
24
+ with:
25
+ python-version: "3.14"
26
+
27
+ - name: Set up uv
28
+ uses: astral-sh/setup-uv@v7
29
+
30
+ - name: Install dependencies
31
+ run: uv sync
32
+
33
+ - name: Build
34
+ run: uv build
35
+
36
+ - name: Publish distribution to Test PyPI
37
+ uses: pypa/gh-action-pypi-publish@release/v1
38
+ if: github.event_name == 'release' && github.event.release.prerelease
39
+ with:
40
+ user: __token__
41
+ password: ${{ secrets.TEST_PYPI_API_TOKEN }}
42
+ repository-url: https://test.pypi.org/legacy/
43
+
44
+ - name: Publish distribution to PyPI
45
+ if: github.event_name == 'release' && !github.event.release.prerelease
46
+ uses: pypa/gh-action-pypi-publish@release/v1
47
+ with:
48
+ user: __token__
49
+ password: ${{ secrets.PYPI_API_TOKEN }}
@@ -0,0 +1,54 @@
1
+ name: Test
2
+ on:
3
+ # pull-request events are not triggered when a PR is merged
4
+ # push events are not triggered when a PR created from a fork repository
5
+ # So we need both to run tests on every PR and after merging
6
+ pull_request:
7
+ push:
8
+ branches:
9
+ - main
10
+
11
+ jobs:
12
+ actionlint:
13
+ uses: kitsuyui/gh-actions-workflows/.github/workflows/actionlint.yml@main
14
+ test:
15
+ runs-on: ubuntu-latest
16
+ strategy:
17
+ fail-fast: false
18
+ matrix:
19
+ python: ["3.10", "3.11", "3.12", "3.13", "3.14"]
20
+ steps:
21
+ - name: Checkout
22
+ uses: actions/checkout@v6
23
+
24
+ - name: Set up Python
25
+ id: setup-python
26
+ uses: actions/setup-python@v6
27
+ with:
28
+ python-version: "${{ matrix.python }}"
29
+
30
+ - name: Set up uv
31
+ uses: astral-sh/setup-uv@v7
32
+
33
+ - name: Install dependencies
34
+ run: |
35
+ uv python pin ${{ matrix.python }}
36
+ uv sync
37
+
38
+ - name: Lint
39
+ run: uv run poe check
40
+
41
+ - name: Check Python version
42
+ run: |
43
+ actual_version=$(uv run python --version)
44
+ expected_version="Python ${{ matrix.python }}"
45
+ if [[ "$actual_version" != *"$expected_version"* ]]; then
46
+ echo "Expected $expected_version, but got $actual_version"
47
+ exit 1
48
+ fi
49
+
50
+ - name: Test
51
+ run: uv run poe test
52
+
53
+ - name: Coverage
54
+ run: uv run poe coverage-xml
@@ -0,0 +1,8 @@
1
+ name: Spellcheck
2
+ on:
3
+ - pull_request
4
+ permissions:
5
+ contents: read
6
+ jobs:
7
+ check:
8
+ uses: kitsuyui/gh-actions-workflows/.github/workflows/spellcheck.yml@main
@@ -0,0 +1,261 @@
1
+ # DO NOT EDIT THIS FILE
2
+ # Generated by gitignore.in
3
+ # Edit .gitignore.in instead of this file
4
+ # Run `gitignore.in` to build .gitignore
5
+ # #!/usr/bin/env bash
6
+ # # `gibo list' and `gi list'
7
+ # -----------------------------------------------------------------------------
8
+ # gibo dump Linux
9
+ ### Generated by gibo (https://github.com/simonwhitaker/gibo)
10
+ ### https://raw.github.com/github/gitignore/4488915eec0b3a45b5c63ead28f286819c0917de/Global/Linux.gitignore
11
+
12
+ *~
13
+
14
+ # temporary files which can be created if a process still has a handle open of a deleted file
15
+ .fuse_hidden*
16
+
17
+ # KDE directory preferences
18
+ .directory
19
+
20
+ # Linux trash folder which might appear on any partition or disk
21
+ .Trash-*
22
+
23
+ # .nfs files are created when an open file is removed but is still being accessed
24
+ .nfs*
25
+ # -----------------------------------------------------------------------------
26
+ # gibo dump Windows
27
+ ### Generated by gibo (https://github.com/simonwhitaker/gibo)
28
+ ### https://raw.github.com/github/gitignore/4488915eec0b3a45b5c63ead28f286819c0917de/Global/Windows.gitignore
29
+
30
+ # Windows thumbnail cache files
31
+ Thumbs.db
32
+ Thumbs.db:encryptable
33
+ ehthumbs.db
34
+ ehthumbs_vista.db
35
+
36
+ # Dump file
37
+ *.stackdump
38
+
39
+ # Folder config file
40
+ [Dd]esktop.ini
41
+
42
+ # Recycle Bin used on file shares
43
+ $RECYCLE.BIN/
44
+
45
+ # Windows Installer files
46
+ *.cab
47
+ *.msi
48
+ *.msix
49
+ *.msm
50
+ *.msp
51
+
52
+ # Windows shortcuts
53
+ *.lnk
54
+ # -----------------------------------------------------------------------------
55
+ # gibo dump macOS
56
+ ### Generated by gibo (https://github.com/simonwhitaker/gibo)
57
+ ### https://raw.github.com/github/gitignore/4488915eec0b3a45b5c63ead28f286819c0917de/Global/macOS.gitignore
58
+
59
+ # General
60
+ .DS_Store
61
+ .AppleDouble
62
+ .LSOverride
63
+
64
+ # Icon must end with two \r
65
+ Icon
66
+
67
+ # Thumbnails
68
+ ._*
69
+
70
+ # Files that might appear in the root of a volume
71
+ .DocumentRevisions-V100
72
+ .fseventsd
73
+ .Spotlight-V100
74
+ .TemporaryItems
75
+ .Trashes
76
+ .VolumeIcon.icns
77
+ .com.apple.timemachine.donotpresent
78
+
79
+ # Directories potentially created on remote AFP share
80
+ .AppleDB
81
+ .AppleDesktop
82
+ Network Trash Folder
83
+ Temporary Items
84
+ .apdisk
85
+ # -----------------------------------------------------------------------------
86
+ # gibo dump Python
87
+ ### Generated by gibo (https://github.com/simonwhitaker/gibo)
88
+ ### https://raw.github.com/github/gitignore/4488915eec0b3a45b5c63ead28f286819c0917de/Python.gitignore
89
+
90
+ # Byte-compiled / optimized / DLL files
91
+ __pycache__/
92
+ *.py[cod]
93
+ *$py.class
94
+
95
+ # C extensions
96
+ *.so
97
+
98
+ # Distribution / packaging
99
+ .Python
100
+ build/
101
+ develop-eggs/
102
+ dist/
103
+ downloads/
104
+ eggs/
105
+ .eggs/
106
+ lib/
107
+ lib64/
108
+ parts/
109
+ sdist/
110
+ var/
111
+ wheels/
112
+ share/python-wheels/
113
+ *.egg-info/
114
+ .installed.cfg
115
+ *.egg
116
+ MANIFEST
117
+
118
+ # PyInstaller
119
+ # Usually these files are written by a python script from a template
120
+ # before PyInstaller builds the exe, so as to inject date/other infos into it.
121
+ *.manifest
122
+ *.spec
123
+
124
+ # Installer logs
125
+ pip-log.txt
126
+ pip-delete-this-directory.txt
127
+
128
+ # Unit test / coverage reports
129
+ htmlcov/
130
+ .tox/
131
+ .nox/
132
+ .coverage
133
+ .coverage.*
134
+ .cache
135
+ nosetests.xml
136
+ coverage.xml
137
+ *.cover
138
+ *.py,cover
139
+ .hypothesis/
140
+ .pytest_cache/
141
+ cover/
142
+
143
+ # Translations
144
+ *.mo
145
+ *.pot
146
+
147
+ # Django stuff:
148
+ *.log
149
+ local_settings.py
150
+ db.sqlite3
151
+ db.sqlite3-journal
152
+
153
+ # Flask stuff:
154
+ instance/
155
+ .webassets-cache
156
+
157
+ # Scrapy stuff:
158
+ .scrapy
159
+
160
+ # Sphinx documentation
161
+ docs/_build/
162
+
163
+ # PyBuilder
164
+ .pybuilder/
165
+ target/
166
+
167
+ # Jupyter Notebook
168
+ .ipynb_checkpoints
169
+
170
+ # IPython
171
+ profile_default/
172
+ ipython_config.py
173
+
174
+ # pyenv
175
+ # For a library or package, you might want to ignore these files since the code is
176
+ # intended to run in multiple environments; otherwise, check them in:
177
+ # .python-version
178
+
179
+ # pipenv
180
+ # According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control.
181
+ # However, in case of collaboration, if having platform-specific dependencies or dependencies
182
+ # having no cross-platform support, pipenv may install dependencies that don't work, or not
183
+ # install all needed dependencies.
184
+ #Pipfile.lock
185
+
186
+ # poetry
187
+ # Similar to Pipfile.lock, it is generally recommended to include poetry.lock in version control.
188
+ # This is especially recommended for binary packages to ensure reproducibility, and is more
189
+ # commonly ignored for libraries.
190
+ # https://python-poetry.org/docs/basic-usage/#commit-your-poetrylock-file-to-version-control
191
+ #poetry.lock
192
+
193
+ # pdm
194
+ # Similar to Pipfile.lock, it is generally recommended to include pdm.lock in version control.
195
+ #pdm.lock
196
+ # pdm stores project-wide configurations in .pdm.toml, but it is recommended to not include it
197
+ # in version control.
198
+ # https://pdm.fming.dev/#use-with-ide
199
+ .pdm.toml
200
+
201
+ # PEP 582; used by e.g. github.com/David-OConnor/pyflow and github.com/pdm-project/pdm
202
+ __pypackages__/
203
+
204
+ # Celery stuff
205
+ celerybeat-schedule
206
+ celerybeat.pid
207
+
208
+ # SageMath parsed files
209
+ *.sage.py
210
+
211
+ # Environments
212
+ .env
213
+ .venv
214
+ env/
215
+ venv/
216
+ ENV/
217
+ env.bak/
218
+ venv.bak/
219
+
220
+ # Spyder project settings
221
+ .spyderproject
222
+ .spyproject
223
+
224
+ # Rope project settings
225
+ .ropeproject
226
+
227
+ # mkdocs documentation
228
+ /site
229
+
230
+ # mypy
231
+ .mypy_cache/
232
+ .dmypy.json
233
+ dmypy.json
234
+
235
+ # Pyre type checker
236
+ .pyre/
237
+
238
+ # pytype static type analyzer
239
+ .pytype/
240
+
241
+ # Cython debug symbols
242
+ cython_debug/
243
+
244
+ # PyCharm
245
+ # JetBrains specific template is maintained in a separate JetBrains.gitignore that can
246
+ # be found at https://github.com/github/gitignore/blob/main/Global/JetBrains.gitignore
247
+ # and can be added to the global gitignore or merged into this file. For a more nuclear
248
+ # option (not recommended) you can uncomment the following to ignore the entire idea folder.
249
+ #.idea/
250
+ # -----------------------------------------------------------------------------
251
+ .venv/
252
+ # -----------------------------------------------------------------------------
253
+ .mypy_cache/
254
+ # -----------------------------------------------------------------------------
255
+ .ruff_cache/
256
+ # -----------------------------------------------------------------------------
257
+ src/agent_def_translator/_version.py
258
+ # -----------------------------------------------------------------------------
259
+ generated/
260
+ # -----------------------------------------------------------------------------
261
+ .tmp/
@@ -0,0 +1,15 @@
1
+ #!/usr/bin/env bash
2
+ set -euo pipefail
3
+ cd "${0%/*}" && exec > .gitignore
4
+ gi() { curl -L -s https://www.gitignore.io/api/"$*"; }
5
+ # `gibo list' and `gi list'
6
+ gibo dump Linux
7
+ gibo dump Windows
8
+ gibo dump macOS
9
+ gibo dump Python
10
+ echo '.venv/'
11
+ echo '.mypy_cache/'
12
+ echo '.ruff_cache/'
13
+ echo 'src/agent_def_translator/_version.py'
14
+ echo 'generated/'
15
+ echo '.tmp/'
@@ -0,0 +1,21 @@
1
+ # https://github.com/k1LoW/octocov?tab=readme-ov-file#configuration
2
+ coverage:
3
+ paths:
4
+ - coverage.xml
5
+ codeToTestRatio:
6
+ code:
7
+ - "**/*.py"
8
+ test:
9
+ - "tests/**/*.py"
10
+ testExecutionTime:
11
+ if: true
12
+ diff:
13
+ datastores:
14
+ - artifact://${GITHUB_REPOSITORY}
15
+ comment:
16
+ if: is_pull_request
17
+ updatePrevious: true
18
+ report:
19
+ if: is_default_branch
20
+ datastores:
21
+ - artifact://${GITHUB_REPOSITORY}
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 kitsuyui
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,5 @@
1
+ include LICENSE
2
+ include README.md
3
+ recursive-include examples *.md *.toml
4
+ recursive-include tests *.md *.py *.toml
5
+ global-exclude __pycache__ *.py[cod]
@@ -0,0 +1,158 @@
1
+ Metadata-Version: 2.4
2
+ Name: agent-def-translator
3
+ Version: 0.1.0
4
+ Summary: Translate canonical coding-agent definitions into platform-native agent artifacts.
5
+ Author-email: Yui KITSU <kitsuyui+github@kitsuyui.com>
6
+ License-Expression: MIT
7
+ Project-URL: Homepage, https://github.com/kitsuyui/agent-def-translator
8
+ Project-URL: Repository, https://github.com/kitsuyui/agent-def-translator
9
+ Project-URL: Issues, https://github.com/kitsuyui/agent-def-translator/issues
10
+ Keywords: agents,codex,claude,copilot,code-assistant
11
+ Classifier: Development Status :: 3 - Alpha
12
+ Classifier: Intended Audience :: Developers
13
+ Classifier: Programming Language :: Python :: 3.10
14
+ Classifier: Programming Language :: Python :: 3.11
15
+ Classifier: Programming Language :: Python :: 3.12
16
+ Classifier: Programming Language :: Python :: 3.13
17
+ Classifier: Programming Language :: Python :: 3.14
18
+ Classifier: Programming Language :: Python :: 3
19
+ Classifier: Topic :: Software Development :: Code Generators
20
+ Requires-Python: >=3.10
21
+ Description-Content-Type: text/markdown
22
+ License-File: LICENSE
23
+ Requires-Dist: tomli; python_version < "3.11"
24
+ Dynamic: license-file
25
+
26
+ # agent-def-translator
27
+
28
+ Maintain coding-agent role definitions once, then generate platform-native
29
+ agent files for Claude Code, OpenAI Codex, and GitHub Copilot.
30
+
31
+ ## Status
32
+
33
+ This project is currently alpha software. The core translation model is usable,
34
+ but the canonical definition shape and target-specific output formats may change
35
+ before a stable release.
36
+
37
+ This project intentionally does not run agents, manage sessions, resume tasks,
38
+ or provide an orchestration runtime. It only translates definition files into
39
+ deterministic platform artifacts.
40
+
41
+ ## Install
42
+
43
+ ```bash
44
+ uv sync
45
+ ```
46
+
47
+ ## Agent Spec
48
+
49
+ Write canonical role definitions as TOML:
50
+
51
+ ```toml
52
+ name = "repo-explorer"
53
+ description = "Read repository context and summarize relevant files."
54
+ instructions = """
55
+ Inspect the repository rules, locate the relevant files, and report concise
56
+ findings with file paths. Do not edit files.
57
+ """
58
+
59
+ [targets.claude]
60
+ tools = ["Read", "Grep", "Glob"]
61
+ permission_mode = "plan"
62
+ model = "haiku"
63
+
64
+ [targets.codex]
65
+ model = "gpt-5.4-mini"
66
+ sandbox_mode = "read-only"
67
+
68
+ [targets.copilot]
69
+ tools = ["search", "fetch"]
70
+ target = "vscode"
71
+ ```
72
+
73
+ Target-specific prompt overrides are supported:
74
+
75
+ ```toml
76
+ [targets.claude]
77
+ prompt_append_file = "prompts/repo-explorer.claude.md"
78
+ ```
79
+
80
+ ## Skill Examples
81
+
82
+ This repository does not vendor real workflow skills from any private or
83
+ project-specific skill set. Skill examples are intentionally limited to tiny
84
+ fixtures such as `examples/skills/hello/SKILL.md`, so the public package stays
85
+ focused on definition translation rather than distributing an opinionated skill
86
+ library.
87
+
88
+ ## CLI
89
+
90
+ Validate definitions:
91
+
92
+ ```bash
93
+ uv run agent-def-translator validate --definitions-dir examples/agents
94
+ ```
95
+
96
+ Validate only one platform projection:
97
+
98
+ ```bash
99
+ uv run agent-def-translator validate --definitions-dir examples/agents --target codex
100
+ ```
101
+
102
+ Generate all supported targets:
103
+
104
+ ```bash
105
+ uv run agent-def-translator translate \
106
+ --definitions-dir examples/agents \
107
+ --output-dir generated
108
+ ```
109
+
110
+ Check generated files without updating them:
111
+
112
+ ```bash
113
+ uv run agent-def-translator diff \
114
+ --definitions-dir examples/agents \
115
+ --output-dir generated
116
+ ```
117
+
118
+ Optional E2E smoke is available, but it is not part of the default check/test
119
+ workflow:
120
+
121
+ ```bash
122
+ uv run poe e2e
123
+ ```
124
+
125
+ To also inspect installed external CLI help surfaces when available:
126
+
127
+ ```bash
128
+ uv run poe e2e-live
129
+ ```
130
+
131
+ ## Python API
132
+
133
+ ```python
134
+ from pathlib import Path
135
+
136
+ from agent_def_translator import Target, generate
137
+
138
+ generated = generate(
139
+ definitions_dir=Path("examples/agents"),
140
+ output_dir=Path("generated"),
141
+ targets=(Target.CLAUDE, Target.CODEX, Target.COPILOT),
142
+ )
143
+ ```
144
+
145
+ ## Design
146
+
147
+ - `name`, `description`, and `instructions` are canonical.
148
+ - Platform differences stay in `[targets.<target>]`.
149
+ - Generated files are disposable and should not become the source of truth.
150
+ - Output is deterministic so drift can be detected in CI.
151
+ - Validation renders each selected target, so missing prompt append files and
152
+ unsupported target-specific metadata types fail before generation.
153
+ - Concrete workflow skills are out of scope; examples use only minimal
154
+ demonstration skills.
155
+
156
+ ## License
157
+
158
+ MIT License. See `LICENSE`.