agentskill-toolkit 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 (50) hide show
  1. agentskill_toolkit-0.1.0/LICENSE +21 -0
  2. agentskill_toolkit-0.1.0/PKG-INFO +314 -0
  3. agentskill_toolkit-0.1.0/README.md +260 -0
  4. agentskill_toolkit-0.1.0/pyproject.toml +56 -0
  5. agentskill_toolkit-0.1.0/setup.cfg +4 -0
  6. agentskill_toolkit-0.1.0/src/agentskill_kit/__init__.py +5 -0
  7. agentskill_toolkit-0.1.0/src/agentskill_kit/__main__.py +6 -0
  8. agentskill_toolkit-0.1.0/src/agentskill_kit/cli.py +795 -0
  9. agentskill_toolkit-0.1.0/src/agentskill_kit/config.py +104 -0
  10. agentskill_toolkit-0.1.0/src/agentskill_kit/evalrun.py +95 -0
  11. agentskill_toolkit-0.1.0/src/agentskill_kit/export.py +188 -0
  12. agentskill_toolkit-0.1.0/src/agentskill_kit/forge.py +346 -0
  13. agentskill_toolkit-0.1.0/src/agentskill_kit/i18n.py +107 -0
  14. agentskill_toolkit-0.1.0/src/agentskill_kit/install.py +212 -0
  15. agentskill_toolkit-0.1.0/src/agentskill_kit/lint.py +201 -0
  16. agentskill_toolkit-0.1.0/src/agentskill_kit/mine.py +291 -0
  17. agentskill_toolkit-0.1.0/src/agentskill_kit/mockmodel.py +124 -0
  18. agentskill_toolkit-0.1.0/src/agentskill_kit/providers.py +344 -0
  19. agentskill_toolkit-0.1.0/src/agentskill_kit/publish.py +96 -0
  20. agentskill_toolkit-0.1.0/src/agentskill_kit/registry.py +175 -0
  21. agentskill_toolkit-0.1.0/src/agentskill_kit/runner.py +214 -0
  22. agentskill_toolkit-0.1.0/src/agentskill_kit/sandbox.py +118 -0
  23. agentskill_toolkit-0.1.0/src/agentskill_kit/scaffold.py +90 -0
  24. agentskill_toolkit-0.1.0/src/agentskill_kit/scan.py +303 -0
  25. agentskill_toolkit-0.1.0/src/agentskill_kit/scoring.py +93 -0
  26. agentskill_toolkit-0.1.0/src/agentskill_kit/server.py +69 -0
  27. agentskill_toolkit-0.1.0/src/agentskill_kit/site.py +24 -0
  28. agentskill_toolkit-0.1.0/src/agentskill_kit/skillfile.py +378 -0
  29. agentskill_toolkit-0.1.0/src/agentskill_kit/templates/site.html +275 -0
  30. agentskill_toolkit-0.1.0/src/agentskill_kit/ui.py +111 -0
  31. agentskill_toolkit-0.1.0/src/agentskill_toolkit.egg-info/PKG-INFO +314 -0
  32. agentskill_toolkit-0.1.0/src/agentskill_toolkit.egg-info/SOURCES.txt +48 -0
  33. agentskill_toolkit-0.1.0/src/agentskill_toolkit.egg-info/dependency_links.txt +1 -0
  34. agentskill_toolkit-0.1.0/src/agentskill_toolkit.egg-info/entry_points.txt +3 -0
  35. agentskill_toolkit-0.1.0/src/agentskill_toolkit.egg-info/requires.txt +3 -0
  36. agentskill_toolkit-0.1.0/src/agentskill_toolkit.egg-info/top_level.txt +1 -0
  37. agentskill_toolkit-0.1.0/tests/test_cli.py +213 -0
  38. agentskill_toolkit-0.1.0/tests/test_evalrun.py +49 -0
  39. agentskill_toolkit-0.1.0/tests/test_export.py +88 -0
  40. agentskill_toolkit-0.1.0/tests/test_forge.py +140 -0
  41. agentskill_toolkit-0.1.0/tests/test_hermes_env.py +80 -0
  42. agentskill_toolkit-0.1.0/tests/test_lint.py +82 -0
  43. agentskill_toolkit-0.1.0/tests/test_mine.py +94 -0
  44. agentskill_toolkit-0.1.0/tests/test_misc.py +126 -0
  45. agentskill_toolkit-0.1.0/tests/test_providers.py +207 -0
  46. agentskill_toolkit-0.1.0/tests/test_registry.py +172 -0
  47. agentskill_toolkit-0.1.0/tests/test_runner.py +168 -0
  48. agentskill_toolkit-0.1.0/tests/test_scan.py +107 -0
  49. agentskill_toolkit-0.1.0/tests/test_skillfile.py +87 -0
  50. agentskill_toolkit-0.1.0/tests/test_starter_skills.py +61 -0
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 Lethe044
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,314 @@
1
+ Metadata-Version: 2.4
2
+ Name: agentskill-toolkit
3
+ Version: 0.1.0
4
+ Summary: Create, lint, security scan, test, share and export agent skills (SKILL.md) for Claude Code, Cursor, Codex, Hermes and more.
5
+ Author: Lethe044
6
+ License: MIT License
7
+
8
+ Copyright (c) 2026 Lethe044
9
+
10
+ Permission is hereby granted, free of charge, to any person obtaining a copy
11
+ of this software and associated documentation files (the "Software"), to deal
12
+ in the Software without restriction, including without limitation the rights
13
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
14
+ copies of the Software, and to permit persons to whom the Software is
15
+ furnished to do so, subject to the following conditions:
16
+
17
+ The above copyright notice and this permission notice shall be included in all
18
+ copies or substantial portions of the Software.
19
+
20
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
21
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
22
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
23
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
24
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
25
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
26
+ SOFTWARE.
27
+
28
+ Project-URL: Homepage, https://github.com/Lethe044/agentskill-kit
29
+ Project-URL: Documentation, https://github.com/Lethe044/agentskill-kit/tree/main/docs
30
+ Project-URL: Issues, https://github.com/Lethe044/agentskill-kit/issues
31
+ Project-URL: Changelog, https://github.com/Lethe044/agentskill-kit/blob/main/CHANGELOG.md
32
+ Project-URL: Registry, https://lethe044.github.io/agentskill-kit/
33
+ Keywords: agent-skills,skill-md,ai-agents,claude-code,cursor,codex,llm,linter,security-scanner,prompt-injection,developer-tools,cli,ollama,groq
34
+ Classifier: Development Status :: 4 - Beta
35
+ Classifier: Environment :: Console
36
+ Classifier: Intended Audience :: Developers
37
+ Classifier: License :: OSI Approved :: MIT License
38
+ Classifier: Operating System :: OS Independent
39
+ Classifier: Programming Language :: Python :: 3
40
+ Classifier: Programming Language :: Python :: 3.9
41
+ Classifier: Programming Language :: Python :: 3.10
42
+ Classifier: Programming Language :: Python :: 3.11
43
+ Classifier: Programming Language :: Python :: 3.12
44
+ Classifier: Programming Language :: Python :: 3.13
45
+ Classifier: Topic :: Software Development :: Quality Assurance
46
+ Classifier: Topic :: Software Development :: Libraries :: Python Modules
47
+ Classifier: Topic :: Security
48
+ Requires-Python: >=3.9
49
+ Description-Content-Type: text/markdown
50
+ License-File: LICENSE
51
+ Provides-Extra: dev
52
+ Requires-Dist: pytest>=7; extra == "dev"
53
+ Dynamic: license-file
54
+
55
+ <p align="center">
56
+ <img src="docs/assets/banner.svg" alt="agentskill-kit" width="100%">
57
+ </p>
58
+
59
+ <p align="center">
60
+ <a href="https://github.com/Lethe044/agentskill-kit/actions/workflows/ci.yml"><img src="https://github.com/Lethe044/agentskill-kit/actions/workflows/ci.yml/badge.svg" alt="CI"></a>
61
+ <a href="https://pypi.org/project/agentskill-toolkit/"><img src="https://img.shields.io/pypi/v/agentskill-toolkit" alt="PyPI"></a>
62
+ <a href="https://pypi.org/project/agentskill-toolkit/"><img src="https://img.shields.io/pypi/pyversions/agentskill-toolkit" alt="Python versions"></a>
63
+ <a href="LICENSE"><img src="https://img.shields.io/github/license/Lethe044/agentskill-kit" alt="License"></a>
64
+ </p>
65
+
66
+ **agentskill-kit** is a command line toolkit for agent skills, the `SKILL.md` folders that coding agents such as
67
+ Claude Code, Cursor, Codex, Gemini CLI and Hermes load when a task matches. It checks a skill before you trust it,
68
+ generates new ones, and installs the same skill into every agent you use.
69
+
70
+ - **Lint** a skill: name, description, structure. Works offline.
71
+ - **Scan** it for prompt injection, hidden unicode, secrets and dangerous commands.
72
+ - **Test** it: run the tests that ship with the skill in an isolated folder.
73
+ - **Forge** a new skill from a task description with any model, including free and local ones.
74
+ - **Mine** your shell history for routines that should be skills.
75
+ - **Export** one skill to Claude Code, Cursor, Windsurf, Copilot, Codex and Gemini CLI.
76
+ - **Share** skills through a static registry with checksums and a searchable website.
77
+
78
+ No runtime dependencies. No paid service required. Python 3.9 or newer on Linux, macOS and Windows.
79
+
80
+ <p align="center">
81
+ <img src="docs/assets/demo.svg" alt="Terminal session: lint, scan, test and forge" width="100%">
82
+ </p>
83
+
84
+ ## Install
85
+
86
+ ```bash
87
+ pip install agentskill-toolkit
88
+ ```
89
+
90
+ The PyPI package is named `agentskill-toolkit` (the shorter name was not available). It installs the `askit` command and the longer alias `agentskill`. The repository, the Python module (`agentskill_kit`) and the commands keep the `agentskill-kit` name.
91
+
92
+ ## Quick start
93
+
94
+ Check a skill without any API key:
95
+
96
+ ```bash
97
+ askit lint skills/my-skill
98
+ askit scan skills/my-skill
99
+ askit test skills/my-skill
100
+ askit score skills/my-skill
101
+ ```
102
+
103
+ Create one with a free model (a local Ollama model, or a Groq or Gemini key on the free tier):
104
+
105
+ ```bash
106
+ askit forge --task "turn meeting notes into action items with owners and due dates"
107
+ ```
108
+
109
+ Use it in your agents:
110
+
111
+ ```bash
112
+ askit export skills/meeting-notes-to-actions --target claude
113
+ askit export skills/meeting-notes-to-actions --target cursor
114
+ askit export skills/meeting-notes-to-actions --target all
115
+ ```
116
+
117
+ Install something from the community registry:
118
+
119
+ ```bash
120
+ askit search docker
121
+ askit install dockerfile-linter
122
+ ```
123
+
124
+ Try everything offline with the built-in demo model: `askit forge --task "anything" --provider mock`.
125
+
126
+ ## Why this exists
127
+
128
+ Skills are plain text that an agent obeys, so they deserve the same care as code you run: a review, a linter, a
129
+ test and a look at what they do. At the same time every agent wants a slightly different file layout, and writing
130
+ good skills by hand is slow. agentskill-kit covers both: quality gates for skills, and tools that do the tedious
131
+ parts.
132
+
133
+ ## Commands
134
+
135
+ | Command | What it does |
136
+ | --- | --- |
137
+ | `askit init NAME` | Create a skill from a template, optionally with a script and tests |
138
+ | `askit lint [PATH]` | Check SKILL.md structure (`--strict`, `--format json\|github`) |
139
+ | `askit scan [PATH]` | Security scan (`--fail-on high\|medium\|low\|never`) |
140
+ | `askit test [PATH]` | Run `tests/cases.json` and `tests/test_*.py` of each skill |
141
+ | `askit score [PATH]` | Combine lint, scan and tests into one score and a pass or fail gate |
142
+ | `askit forge` | Generate a skill with a model, verify it and refine it until it passes |
143
+ | `askit eval PATH` | Check how well a model follows a skill, with an optional baseline run |
144
+ | `askit mine` | Find repeated workflows in shell history and draft skills |
145
+ | `askit export PATH` | Convert and install a skill for another agent |
146
+ | `askit search`, `install`, `uninstall`, `list` | Work with the registry, GitHub folders and local folders |
147
+ | `askit pack`, `publish` | Bundle a skill, run the quality gate, prepare a pull request |
148
+ | `askit registry build\|site` | Build a registry index or a static website |
149
+ | `askit serve` | Browse the skills on your machine in a local web page |
150
+ | `askit providers`, `config`, `doctor` | Models, settings and environment checks |
151
+
152
+ Every command has `--help`. Add `--lang tr` for a Turkish interface.
153
+
154
+ ## Free first, paid optional
155
+
156
+ | Provider | Cost | How |
157
+ | --- | --- | --- |
158
+ | Ollama, LM Studio | free, local | run a local model, no key |
159
+ | Groq | free tier | `GROQ_API_KEY` |
160
+ | Google Gemini | free tier | `GEMINI_API_KEY` |
161
+ | OpenRouter | free models | `OPENROUTER_API_KEY`, pick a `:free` model |
162
+ | Any OpenAI compatible server | yours | `ASKIT_BASE_URL`, `ASKIT_MODEL` |
163
+ | OpenAI, Anthropic | paid, optional | `OPENAI_API_KEY`, `ANTHROPIC_API_KEY` |
164
+
165
+ `askit providers` shows what is ready. Details in [docs/providers.md](docs/providers.md).
166
+
167
+ `forge` does not rely on tool calling. The loop is controlled by code, so small local models work. The model only
168
+ writes files; lint, scan and tests decide whether they are good enough.
169
+
170
+ ## How forge decides
171
+
172
+ ```
173
+ task or notes
174
+ |
175
+ v
176
+ model drafts SKILL.md, scripts and tests/cases.json
177
+ |
178
+ v
179
+ lint + scan + run tests in a clean folder -> score
180
+ | |
181
+ | below threshold: failures go back | at or above threshold,
182
+ | to the model (up to 3 rounds) | no high findings
183
+ v v
184
+ best attempt kept written to skills/<name>/
185
+ ```
186
+
187
+ The score is not the model's opinion. It comes from [real checks](docs/skill-format.md#quality-score).
188
+ Nothing is written when the best attempt misses the threshold, unless you pass `--force`.
189
+
190
+ ## Mine your history
191
+
192
+ ```bash
193
+ $ askit mine --file examples/shell-history-sample.txt
194
+ -- read 20 commands
195
+ Found 1 repeated workflow(s)
196
+
197
+ #1 git-status-add-commit (4x)
198
+ git status
199
+ git add -A
200
+ git commit -m <str>
201
+ git push origin main
202
+
203
+ $ askit mine --file examples/shell-history-sample.txt --draft 1
204
+ ```
205
+
206
+ Secrets are masked before anything is shown. See [docs/mining.md](docs/mining.md).
207
+
208
+ ## Export targets
209
+
210
+ | Target | Result |
211
+ | --- | --- |
212
+ | `claude` | `.claude/skills/<name>/` or `~/.claude/skills/` with `--global` |
213
+ | `hermes` | `.hermes/skills/<name>/` or `~/.hermes/skills/` |
214
+ | `cursor` | `.cursor/rules/<name>.mdc` |
215
+ | `windsurf` | `.windsurf/rules/<name>.md` |
216
+ | `copilot` | `.github/instructions/<name>.instructions.md` |
217
+ | `codex` | managed block in `AGENTS.md` |
218
+ | `gemini` | managed block in `GEMINI.md` |
219
+
220
+ Exports are repeatable: managed blocks are replaced, not duplicated. More in [docs/export-targets.md](docs/export-targets.md).
221
+
222
+ ## Starter skills
223
+
224
+ The registry ships 16 skills that pass every check. Nine of them include scripts with tests, so you can read how a
225
+ tested skill is built.
226
+
227
+ | Skill | What it does |
228
+ | --- | --- |
229
+ | `log-analyzer` | severity counts, time range and frequent errors of a log |
230
+ | `python-code-smells` | bare except, mutable defaults, missing docstrings and long functions |
231
+ | `csv-profiler` | column types, missing values and ranges for a CSV |
232
+ | `json-diff` | structural diff of two JSON files |
233
+ | `dockerfile-linter` | unpinned images, root user, ADD vs COPY, secrets in ENV |
234
+ | `env-file-auditor` | `.env` against `.env.example`, without printing values |
235
+ | `todo-extractor` | TODO, FIXME and HACK inventory of a source tree |
236
+ | `changelog-generator` | conventional commits to grouped release notes |
237
+ | `api-endpoint-tester` | smoke test an API from a JSON file |
238
+ | `commit-message-writer` | clear conventional commit messages |
239
+ | `pr-description-writer` | pull request descriptions reviewers can use |
240
+ | `sql-query-reviewer` | safety, correctness and performance review of SQL |
241
+ | `meeting-notes-to-actions` | decisions, owners and open questions from notes |
242
+ | `readme-doctor` | what to fix in a README to get people to try a project |
243
+ | `secure-code-review` | a security checklist with a report format |
244
+ | `skill-author` | how to write a skill that triggers and works |
245
+
246
+ Browse them on the registry website, or run `askit search` and `askit install NAME`.
247
+
248
+ ## Use it in CI
249
+
250
+ ```yaml
251
+ - uses: Lethe044/agentskill-kit@main
252
+ with:
253
+ path: skills
254
+ strict: "true"
255
+ scan-fail-on: medium
256
+ ```
257
+
258
+ Also available as a pre-commit hook. See [docs/github-action.md](docs/github-action.md).
259
+
260
+ ## Use it from Python
261
+
262
+ ```python
263
+ from agentskill_kit.lint import lint_skill
264
+ from agentskill_kit.scan import scan_skill
265
+ from agentskill_kit.scoring import evaluate_skill
266
+
267
+ quality = evaluate_skill("skills/log-analyzer")
268
+ print(quality.score, quality.grade, quality.passes_gate)
269
+
270
+ for issue in lint_skill("skills/log-analyzer").issues:
271
+ print(issue.code, issue.message)
272
+
273
+ print(scan_skill("skills/log-analyzer").verdict)
274
+ ```
275
+
276
+ ## Security notes
277
+
278
+ - The scanner is a heuristic filter, not a guarantee. Read skills from sources you do not trust.
279
+ - `askit test` isolates the working directory and environment and limits time and memory, but it is not a sandbox.
280
+ Use a container for untrusted skills.
281
+ - Registry downloads are verified against checksums, linted and scanned before installation.
282
+
283
+ Details in [docs/security.md](docs/security.md) and [SECURITY.md](SECURITY.md).
284
+
285
+ ## Hermes Agent
286
+
287
+ This project began as a Hermes Agent hackathon prototype. Hermes remains a first class target
288
+ (`askit export --target hermes`) and `integrations/hermes/` holds the skill-forge playbook and an Atropos
289
+ training environment whose reward can use verified scores. See [integrations/hermes](integrations/hermes/README.md).
290
+
291
+ ## Documentation
292
+
293
+ - [Getting started](docs/getting-started.md)
294
+ - [Skill format, tests and scoring](docs/skill-format.md)
295
+ - [Providers](docs/providers.md)
296
+ - [Security model](docs/security.md)
297
+ - [Export targets](docs/export-targets.md)
298
+ - [Registry and publishing](docs/registry.md)
299
+ - [Mining shell history](docs/mining.md)
300
+ - [GitHub Action and pre-commit](docs/github-action.md)
301
+
302
+ ## Roadmap
303
+
304
+ - More scanner rules and a community rule pack.
305
+ - Translated rule messages (the interface is already available in Turkish and English).
306
+ - `askit eval` with a judge model for open ended checks.
307
+ - Skill dependencies and version constraints in the registry.
308
+ - Export targets for more agents.
309
+
310
+ Ideas and pull requests are welcome. See [CONTRIBUTING.md](CONTRIBUTING.md) for how to add a skill in a few minutes.
311
+
312
+ ## License
313
+
314
+ [MIT](LICENSE)
@@ -0,0 +1,260 @@
1
+ <p align="center">
2
+ <img src="docs/assets/banner.svg" alt="agentskill-kit" width="100%">
3
+ </p>
4
+
5
+ <p align="center">
6
+ <a href="https://github.com/Lethe044/agentskill-kit/actions/workflows/ci.yml"><img src="https://github.com/Lethe044/agentskill-kit/actions/workflows/ci.yml/badge.svg" alt="CI"></a>
7
+ <a href="https://pypi.org/project/agentskill-toolkit/"><img src="https://img.shields.io/pypi/v/agentskill-toolkit" alt="PyPI"></a>
8
+ <a href="https://pypi.org/project/agentskill-toolkit/"><img src="https://img.shields.io/pypi/pyversions/agentskill-toolkit" alt="Python versions"></a>
9
+ <a href="LICENSE"><img src="https://img.shields.io/github/license/Lethe044/agentskill-kit" alt="License"></a>
10
+ </p>
11
+
12
+ **agentskill-kit** is a command line toolkit for agent skills, the `SKILL.md` folders that coding agents such as
13
+ Claude Code, Cursor, Codex, Gemini CLI and Hermes load when a task matches. It checks a skill before you trust it,
14
+ generates new ones, and installs the same skill into every agent you use.
15
+
16
+ - **Lint** a skill: name, description, structure. Works offline.
17
+ - **Scan** it for prompt injection, hidden unicode, secrets and dangerous commands.
18
+ - **Test** it: run the tests that ship with the skill in an isolated folder.
19
+ - **Forge** a new skill from a task description with any model, including free and local ones.
20
+ - **Mine** your shell history for routines that should be skills.
21
+ - **Export** one skill to Claude Code, Cursor, Windsurf, Copilot, Codex and Gemini CLI.
22
+ - **Share** skills through a static registry with checksums and a searchable website.
23
+
24
+ No runtime dependencies. No paid service required. Python 3.9 or newer on Linux, macOS and Windows.
25
+
26
+ <p align="center">
27
+ <img src="docs/assets/demo.svg" alt="Terminal session: lint, scan, test and forge" width="100%">
28
+ </p>
29
+
30
+ ## Install
31
+
32
+ ```bash
33
+ pip install agentskill-toolkit
34
+ ```
35
+
36
+ The PyPI package is named `agentskill-toolkit` (the shorter name was not available). It installs the `askit` command and the longer alias `agentskill`. The repository, the Python module (`agentskill_kit`) and the commands keep the `agentskill-kit` name.
37
+
38
+ ## Quick start
39
+
40
+ Check a skill without any API key:
41
+
42
+ ```bash
43
+ askit lint skills/my-skill
44
+ askit scan skills/my-skill
45
+ askit test skills/my-skill
46
+ askit score skills/my-skill
47
+ ```
48
+
49
+ Create one with a free model (a local Ollama model, or a Groq or Gemini key on the free tier):
50
+
51
+ ```bash
52
+ askit forge --task "turn meeting notes into action items with owners and due dates"
53
+ ```
54
+
55
+ Use it in your agents:
56
+
57
+ ```bash
58
+ askit export skills/meeting-notes-to-actions --target claude
59
+ askit export skills/meeting-notes-to-actions --target cursor
60
+ askit export skills/meeting-notes-to-actions --target all
61
+ ```
62
+
63
+ Install something from the community registry:
64
+
65
+ ```bash
66
+ askit search docker
67
+ askit install dockerfile-linter
68
+ ```
69
+
70
+ Try everything offline with the built-in demo model: `askit forge --task "anything" --provider mock`.
71
+
72
+ ## Why this exists
73
+
74
+ Skills are plain text that an agent obeys, so they deserve the same care as code you run: a review, a linter, a
75
+ test and a look at what they do. At the same time every agent wants a slightly different file layout, and writing
76
+ good skills by hand is slow. agentskill-kit covers both: quality gates for skills, and tools that do the tedious
77
+ parts.
78
+
79
+ ## Commands
80
+
81
+ | Command | What it does |
82
+ | --- | --- |
83
+ | `askit init NAME` | Create a skill from a template, optionally with a script and tests |
84
+ | `askit lint [PATH]` | Check SKILL.md structure (`--strict`, `--format json\|github`) |
85
+ | `askit scan [PATH]` | Security scan (`--fail-on high\|medium\|low\|never`) |
86
+ | `askit test [PATH]` | Run `tests/cases.json` and `tests/test_*.py` of each skill |
87
+ | `askit score [PATH]` | Combine lint, scan and tests into one score and a pass or fail gate |
88
+ | `askit forge` | Generate a skill with a model, verify it and refine it until it passes |
89
+ | `askit eval PATH` | Check how well a model follows a skill, with an optional baseline run |
90
+ | `askit mine` | Find repeated workflows in shell history and draft skills |
91
+ | `askit export PATH` | Convert and install a skill for another agent |
92
+ | `askit search`, `install`, `uninstall`, `list` | Work with the registry, GitHub folders and local folders |
93
+ | `askit pack`, `publish` | Bundle a skill, run the quality gate, prepare a pull request |
94
+ | `askit registry build\|site` | Build a registry index or a static website |
95
+ | `askit serve` | Browse the skills on your machine in a local web page |
96
+ | `askit providers`, `config`, `doctor` | Models, settings and environment checks |
97
+
98
+ Every command has `--help`. Add `--lang tr` for a Turkish interface.
99
+
100
+ ## Free first, paid optional
101
+
102
+ | Provider | Cost | How |
103
+ | --- | --- | --- |
104
+ | Ollama, LM Studio | free, local | run a local model, no key |
105
+ | Groq | free tier | `GROQ_API_KEY` |
106
+ | Google Gemini | free tier | `GEMINI_API_KEY` |
107
+ | OpenRouter | free models | `OPENROUTER_API_KEY`, pick a `:free` model |
108
+ | Any OpenAI compatible server | yours | `ASKIT_BASE_URL`, `ASKIT_MODEL` |
109
+ | OpenAI, Anthropic | paid, optional | `OPENAI_API_KEY`, `ANTHROPIC_API_KEY` |
110
+
111
+ `askit providers` shows what is ready. Details in [docs/providers.md](docs/providers.md).
112
+
113
+ `forge` does not rely on tool calling. The loop is controlled by code, so small local models work. The model only
114
+ writes files; lint, scan and tests decide whether they are good enough.
115
+
116
+ ## How forge decides
117
+
118
+ ```
119
+ task or notes
120
+ |
121
+ v
122
+ model drafts SKILL.md, scripts and tests/cases.json
123
+ |
124
+ v
125
+ lint + scan + run tests in a clean folder -> score
126
+ | |
127
+ | below threshold: failures go back | at or above threshold,
128
+ | to the model (up to 3 rounds) | no high findings
129
+ v v
130
+ best attempt kept written to skills/<name>/
131
+ ```
132
+
133
+ The score is not the model's opinion. It comes from [real checks](docs/skill-format.md#quality-score).
134
+ Nothing is written when the best attempt misses the threshold, unless you pass `--force`.
135
+
136
+ ## Mine your history
137
+
138
+ ```bash
139
+ $ askit mine --file examples/shell-history-sample.txt
140
+ -- read 20 commands
141
+ Found 1 repeated workflow(s)
142
+
143
+ #1 git-status-add-commit (4x)
144
+ git status
145
+ git add -A
146
+ git commit -m <str>
147
+ git push origin main
148
+
149
+ $ askit mine --file examples/shell-history-sample.txt --draft 1
150
+ ```
151
+
152
+ Secrets are masked before anything is shown. See [docs/mining.md](docs/mining.md).
153
+
154
+ ## Export targets
155
+
156
+ | Target | Result |
157
+ | --- | --- |
158
+ | `claude` | `.claude/skills/<name>/` or `~/.claude/skills/` with `--global` |
159
+ | `hermes` | `.hermes/skills/<name>/` or `~/.hermes/skills/` |
160
+ | `cursor` | `.cursor/rules/<name>.mdc` |
161
+ | `windsurf` | `.windsurf/rules/<name>.md` |
162
+ | `copilot` | `.github/instructions/<name>.instructions.md` |
163
+ | `codex` | managed block in `AGENTS.md` |
164
+ | `gemini` | managed block in `GEMINI.md` |
165
+
166
+ Exports are repeatable: managed blocks are replaced, not duplicated. More in [docs/export-targets.md](docs/export-targets.md).
167
+
168
+ ## Starter skills
169
+
170
+ The registry ships 16 skills that pass every check. Nine of them include scripts with tests, so you can read how a
171
+ tested skill is built.
172
+
173
+ | Skill | What it does |
174
+ | --- | --- |
175
+ | `log-analyzer` | severity counts, time range and frequent errors of a log |
176
+ | `python-code-smells` | bare except, mutable defaults, missing docstrings and long functions |
177
+ | `csv-profiler` | column types, missing values and ranges for a CSV |
178
+ | `json-diff` | structural diff of two JSON files |
179
+ | `dockerfile-linter` | unpinned images, root user, ADD vs COPY, secrets in ENV |
180
+ | `env-file-auditor` | `.env` against `.env.example`, without printing values |
181
+ | `todo-extractor` | TODO, FIXME and HACK inventory of a source tree |
182
+ | `changelog-generator` | conventional commits to grouped release notes |
183
+ | `api-endpoint-tester` | smoke test an API from a JSON file |
184
+ | `commit-message-writer` | clear conventional commit messages |
185
+ | `pr-description-writer` | pull request descriptions reviewers can use |
186
+ | `sql-query-reviewer` | safety, correctness and performance review of SQL |
187
+ | `meeting-notes-to-actions` | decisions, owners and open questions from notes |
188
+ | `readme-doctor` | what to fix in a README to get people to try a project |
189
+ | `secure-code-review` | a security checklist with a report format |
190
+ | `skill-author` | how to write a skill that triggers and works |
191
+
192
+ Browse them on the registry website, or run `askit search` and `askit install NAME`.
193
+
194
+ ## Use it in CI
195
+
196
+ ```yaml
197
+ - uses: Lethe044/agentskill-kit@main
198
+ with:
199
+ path: skills
200
+ strict: "true"
201
+ scan-fail-on: medium
202
+ ```
203
+
204
+ Also available as a pre-commit hook. See [docs/github-action.md](docs/github-action.md).
205
+
206
+ ## Use it from Python
207
+
208
+ ```python
209
+ from agentskill_kit.lint import lint_skill
210
+ from agentskill_kit.scan import scan_skill
211
+ from agentskill_kit.scoring import evaluate_skill
212
+
213
+ quality = evaluate_skill("skills/log-analyzer")
214
+ print(quality.score, quality.grade, quality.passes_gate)
215
+
216
+ for issue in lint_skill("skills/log-analyzer").issues:
217
+ print(issue.code, issue.message)
218
+
219
+ print(scan_skill("skills/log-analyzer").verdict)
220
+ ```
221
+
222
+ ## Security notes
223
+
224
+ - The scanner is a heuristic filter, not a guarantee. Read skills from sources you do not trust.
225
+ - `askit test` isolates the working directory and environment and limits time and memory, but it is not a sandbox.
226
+ Use a container for untrusted skills.
227
+ - Registry downloads are verified against checksums, linted and scanned before installation.
228
+
229
+ Details in [docs/security.md](docs/security.md) and [SECURITY.md](SECURITY.md).
230
+
231
+ ## Hermes Agent
232
+
233
+ This project began as a Hermes Agent hackathon prototype. Hermes remains a first class target
234
+ (`askit export --target hermes`) and `integrations/hermes/` holds the skill-forge playbook and an Atropos
235
+ training environment whose reward can use verified scores. See [integrations/hermes](integrations/hermes/README.md).
236
+
237
+ ## Documentation
238
+
239
+ - [Getting started](docs/getting-started.md)
240
+ - [Skill format, tests and scoring](docs/skill-format.md)
241
+ - [Providers](docs/providers.md)
242
+ - [Security model](docs/security.md)
243
+ - [Export targets](docs/export-targets.md)
244
+ - [Registry and publishing](docs/registry.md)
245
+ - [Mining shell history](docs/mining.md)
246
+ - [GitHub Action and pre-commit](docs/github-action.md)
247
+
248
+ ## Roadmap
249
+
250
+ - More scanner rules and a community rule pack.
251
+ - Translated rule messages (the interface is already available in Turkish and English).
252
+ - `askit eval` with a judge model for open ended checks.
253
+ - Skill dependencies and version constraints in the registry.
254
+ - Export targets for more agents.
255
+
256
+ Ideas and pull requests are welcome. See [CONTRIBUTING.md](CONTRIBUTING.md) for how to add a skill in a few minutes.
257
+
258
+ ## License
259
+
260
+ [MIT](LICENSE)
@@ -0,0 +1,56 @@
1
+ [build-system]
2
+ requires = ["setuptools>=68"]
3
+ build-backend = "setuptools.build_meta"
4
+
5
+ [project]
6
+ name = "agentskill-toolkit"
7
+ version = "0.1.0"
8
+ description = "Create, lint, security scan, test, share and export agent skills (SKILL.md) for Claude Code, Cursor, Codex, Hermes and more."
9
+ readme = "README.md"
10
+ requires-python = ">=3.9"
11
+ license = { file = "LICENSE" }
12
+ authors = [{ name = "Lethe044" }]
13
+ keywords = [
14
+ "agent-skills", "skill-md", "ai-agents", "claude-code", "cursor", "codex", "llm",
15
+ "linter", "security-scanner", "prompt-injection", "developer-tools", "cli", "ollama", "groq",
16
+ ]
17
+ classifiers = [
18
+ "Development Status :: 4 - Beta",
19
+ "Environment :: Console",
20
+ "Intended Audience :: Developers",
21
+ "License :: OSI Approved :: MIT License",
22
+ "Operating System :: OS Independent",
23
+ "Programming Language :: Python :: 3",
24
+ "Programming Language :: Python :: 3.9",
25
+ "Programming Language :: Python :: 3.10",
26
+ "Programming Language :: Python :: 3.11",
27
+ "Programming Language :: Python :: 3.12",
28
+ "Programming Language :: Python :: 3.13",
29
+ "Topic :: Software Development :: Quality Assurance",
30
+ "Topic :: Software Development :: Libraries :: Python Modules",
31
+ "Topic :: Security",
32
+ ]
33
+ dependencies = []
34
+
35
+ [project.optional-dependencies]
36
+ dev = ["pytest>=7"]
37
+
38
+ [project.urls]
39
+ Homepage = "https://github.com/Lethe044/agentskill-kit"
40
+ Documentation = "https://github.com/Lethe044/agentskill-kit/tree/main/docs"
41
+ Issues = "https://github.com/Lethe044/agentskill-kit/issues"
42
+ Changelog = "https://github.com/Lethe044/agentskill-kit/blob/main/CHANGELOG.md"
43
+ Registry = "https://lethe044.github.io/agentskill-kit/"
44
+
45
+ [project.scripts]
46
+ askit = "agentskill_kit.cli:main"
47
+ agentskill = "agentskill_kit.cli:main"
48
+
49
+ [tool.setuptools.packages.find]
50
+ where = ["src"]
51
+
52
+ [tool.setuptools.package-data]
53
+ agentskill_kit = ["templates/*.html"]
54
+
55
+ [tool.pytest.ini_options]
56
+ testpaths = ["tests"]
@@ -0,0 +1,4 @@
1
+ [egg_info]
2
+ tag_build =
3
+ tag_date = 0
4
+
@@ -0,0 +1,5 @@
1
+ """agentskill-kit: create, lint, scan, test, share and export agent skills."""
2
+
3
+ __version__ = "0.1.0"
4
+
5
+ __all__ = ["__version__"]
@@ -0,0 +1,6 @@
1
+ import sys
2
+
3
+ from .cli import main
4
+
5
+ if __name__ == "__main__":
6
+ sys.exit(main())