devskills-cli 0.1.1__tar.gz → 0.1.2__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.
- devskills_cli-0.1.2/.github/workflows/docs.yml +24 -0
- devskills_cli-0.1.2/PKG-INFO +144 -0
- devskills_cli-0.1.2/README.md +120 -0
- devskills_cli-0.1.2/docs/CONTRIBUTING.md +242 -0
- devskills_cli-0.1.2/docs/commands/skills.md +65 -0
- devskills_cli-0.1.2/docs/commands/start.md +114 -0
- devskills_cli-0.1.2/docs/getting-started/installation.md +50 -0
- devskills_cli-0.1.2/docs/getting-started/quickstart.md +70 -0
- devskills_cli-0.1.2/docs/index.md +72 -0
- devskills_cli-0.1.2/mkdocs.yml +72 -0
- devskills_cli-0.1.2/pyproject.toml +40 -0
- devskills_cli-0.1.2/site/404.html +727 -0
- devskills_cli-0.1.2/site/CONTRIBUTING/index.html +1408 -0
- devskills_cli-0.1.2/site/assets/images/favicon.png +0 -0
- devskills_cli-0.1.2/site/assets/javascripts/bundle.79ae519e.min.js +16 -0
- devskills_cli-0.1.2/site/assets/javascripts/bundle.79ae519e.min.js.map +7 -0
- devskills_cli-0.1.2/site/assets/javascripts/lunr/min/lunr.ar.min.js +1 -0
- devskills_cli-0.1.2/site/assets/javascripts/lunr/min/lunr.da.min.js +18 -0
- devskills_cli-0.1.2/site/assets/javascripts/lunr/min/lunr.de.min.js +18 -0
- devskills_cli-0.1.2/site/assets/javascripts/lunr/min/lunr.du.min.js +18 -0
- devskills_cli-0.1.2/site/assets/javascripts/lunr/min/lunr.el.min.js +1 -0
- devskills_cli-0.1.2/site/assets/javascripts/lunr/min/lunr.es.min.js +18 -0
- devskills_cli-0.1.2/site/assets/javascripts/lunr/min/lunr.fi.min.js +18 -0
- devskills_cli-0.1.2/site/assets/javascripts/lunr/min/lunr.fr.min.js +18 -0
- devskills_cli-0.1.2/site/assets/javascripts/lunr/min/lunr.he.min.js +1 -0
- devskills_cli-0.1.2/site/assets/javascripts/lunr/min/lunr.hi.min.js +1 -0
- devskills_cli-0.1.2/site/assets/javascripts/lunr/min/lunr.hu.min.js +18 -0
- devskills_cli-0.1.2/site/assets/javascripts/lunr/min/lunr.hy.min.js +1 -0
- devskills_cli-0.1.2/site/assets/javascripts/lunr/min/lunr.it.min.js +18 -0
- devskills_cli-0.1.2/site/assets/javascripts/lunr/min/lunr.ja.min.js +1 -0
- devskills_cli-0.1.2/site/assets/javascripts/lunr/min/lunr.jp.min.js +1 -0
- devskills_cli-0.1.2/site/assets/javascripts/lunr/min/lunr.kn.min.js +1 -0
- devskills_cli-0.1.2/site/assets/javascripts/lunr/min/lunr.ko.min.js +1 -0
- devskills_cli-0.1.2/site/assets/javascripts/lunr/min/lunr.multi.min.js +1 -0
- devskills_cli-0.1.2/site/assets/javascripts/lunr/min/lunr.nl.min.js +18 -0
- devskills_cli-0.1.2/site/assets/javascripts/lunr/min/lunr.no.min.js +18 -0
- devskills_cli-0.1.2/site/assets/javascripts/lunr/min/lunr.pt.min.js +18 -0
- devskills_cli-0.1.2/site/assets/javascripts/lunr/min/lunr.ro.min.js +18 -0
- devskills_cli-0.1.2/site/assets/javascripts/lunr/min/lunr.ru.min.js +18 -0
- devskills_cli-0.1.2/site/assets/javascripts/lunr/min/lunr.sa.min.js +1 -0
- devskills_cli-0.1.2/site/assets/javascripts/lunr/min/lunr.stemmer.support.min.js +1 -0
- devskills_cli-0.1.2/site/assets/javascripts/lunr/min/lunr.sv.min.js +18 -0
- devskills_cli-0.1.2/site/assets/javascripts/lunr/min/lunr.ta.min.js +1 -0
- devskills_cli-0.1.2/site/assets/javascripts/lunr/min/lunr.te.min.js +1 -0
- devskills_cli-0.1.2/site/assets/javascripts/lunr/min/lunr.th.min.js +1 -0
- devskills_cli-0.1.2/site/assets/javascripts/lunr/min/lunr.tr.min.js +18 -0
- devskills_cli-0.1.2/site/assets/javascripts/lunr/min/lunr.vi.min.js +1 -0
- devskills_cli-0.1.2/site/assets/javascripts/lunr/min/lunr.zh.min.js +1 -0
- devskills_cli-0.1.2/site/assets/javascripts/lunr/tinyseg.js +206 -0
- devskills_cli-0.1.2/site/assets/javascripts/lunr/wordcut.js +6708 -0
- devskills_cli-0.1.2/site/assets/javascripts/workers/search.2c215733.min.js +42 -0
- devskills_cli-0.1.2/site/assets/javascripts/workers/search.2c215733.min.js.map +7 -0
- devskills_cli-0.1.2/site/assets/stylesheets/main.484c7ddc.min.css +1 -0
- devskills_cli-0.1.2/site/assets/stylesheets/main.484c7ddc.min.css.map +1 -0
- devskills_cli-0.1.2/site/assets/stylesheets/palette.ab4e12ef.min.css +1 -0
- devskills_cli-0.1.2/site/assets/stylesheets/palette.ab4e12ef.min.css.map +1 -0
- devskills_cli-0.1.2/site/commands/skills/index.html +984 -0
- devskills_cli-0.1.2/site/commands/start/index.html +1125 -0
- devskills_cli-0.1.2/site/getting-started/installation/index.html +980 -0
- devskills_cli-0.1.2/site/getting-started/quickstart/index.html +1012 -0
- devskills_cli-0.1.2/site/index.html +1024 -0
- devskills_cli-0.1.2/site/search/search_index.json +1 -0
- devskills_cli-0.1.2/site/sitemap.xml +27 -0
- devskills_cli-0.1.2/site/sitemap.xml.gz +0 -0
- devskills_cli-0.1.1/PKG-INFO +0 -9
- devskills_cli-0.1.1/README.md +0 -0
- devskills_cli-0.1.1/pyproject.toml +0 -21
- {devskills_cli-0.1.1 → devskills_cli-0.1.2}/.env +0 -0
- {devskills_cli-0.1.1 → devskills_cli-0.1.2}/.gitignore +0 -0
- {devskills_cli-0.1.1 → devskills_cli-0.1.2}/devskills/__init__.py +0 -0
- {devskills_cli-0.1.1 → devskills_cli-0.1.2}/devskills/core/__init__.py +0 -0
- {devskills_cli-0.1.1 → devskills_cli-0.1.2}/devskills/core/base.py +0 -0
- {devskills_cli-0.1.1 → devskills_cli-0.1.2}/devskills/core/generator.py +0 -0
- {devskills_cli-0.1.1 → devskills_cli-0.1.2}/devskills/core/prompts.py +0 -0
- {devskills_cli-0.1.1 → devskills_cli-0.1.2}/devskills/core/scaffold.py +0 -0
- {devskills_cli-0.1.1 → devskills_cli-0.1.2}/devskills/core/skills.py +0 -0
- {devskills_cli-0.1.1 → devskills_cli-0.1.2}/devskills/main.py +0 -0
- {devskills_cli-0.1.1 → devskills_cli-0.1.2}/devskills/templates/__init__.py +0 -0
- {devskills_cli-0.1.1 → devskills_cli-0.1.2}/devskills/templates/agents.py +0 -0
- {devskills_cli-0.1.1 → devskills_cli-0.1.2}/devskills/templates/base.py +0 -0
- {devskills_cli-0.1.1 → devskills_cli-0.1.2}/devskills/templates/claude.py +0 -0
- {devskills_cli-0.1.1 → devskills_cli-0.1.2}/devskills/templates/docker.py +0 -0
- {devskills_cli-0.1.1 → devskills_cli-0.1.2}/devskills/templates/features.py +0 -0
- {devskills_cli-0.1.1 → devskills_cli-0.1.2}/devskills/templates/helpers.py +0 -0
- {devskills_cli-0.1.1 → devskills_cli-0.1.2}/requirements.txt +0 -0
- {devskills_cli-0.1.1 → devskills_cli-0.1.2}/uv.lock +0 -0
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
name: Deploy Docs
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
branches: [main]
|
|
6
|
+
|
|
7
|
+
permissions:
|
|
8
|
+
contents: write
|
|
9
|
+
|
|
10
|
+
jobs:
|
|
11
|
+
deploy:
|
|
12
|
+
runs-on: ubuntu-latest
|
|
13
|
+
steps:
|
|
14
|
+
- uses: actions/checkout@v4
|
|
15
|
+
|
|
16
|
+
- uses: actions/setup-python@v5
|
|
17
|
+
with:
|
|
18
|
+
python-version: "3.11"
|
|
19
|
+
|
|
20
|
+
- name: Install MkDocs
|
|
21
|
+
run: pip install mkdocs-material
|
|
22
|
+
|
|
23
|
+
- name: Deploy to GitHub Pages
|
|
24
|
+
run: mkdocs gh-deploy --force
|
|
@@ -0,0 +1,144 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: devskills-cli
|
|
3
|
+
Version: 0.1.2
|
|
4
|
+
Summary: Interactive CLI to scaffold AI production projects using uv
|
|
5
|
+
Project-URL: Homepage, https://github.com/Iam-Divyesh/devcli
|
|
6
|
+
Project-URL: Documentation, https://iam-divyesh.github.io/devcli
|
|
7
|
+
Project-URL: Repository, https://github.com/Iam-Divyesh/devcli
|
|
8
|
+
Project-URL: Issues, https://github.com/Iam-Divyesh/devcli/issues
|
|
9
|
+
License: MIT
|
|
10
|
+
Keywords: ai,claude,cli,genai,ml,scaffold,uv
|
|
11
|
+
Classifier: Environment :: Console
|
|
12
|
+
Classifier: License :: OSI Approved :: MIT License
|
|
13
|
+
Classifier: Operating System :: OS Independent
|
|
14
|
+
Classifier: Programming Language :: Python :: 3
|
|
15
|
+
Classifier: Topic :: Software Development :: Code Generators
|
|
16
|
+
Requires-Python: >=3.10
|
|
17
|
+
Requires-Dist: httpx>=0.27.0
|
|
18
|
+
Requires-Dist: questionary>=2.0.0
|
|
19
|
+
Requires-Dist: rich>=13.0.0
|
|
20
|
+
Requires-Dist: typer>=0.12.0
|
|
21
|
+
Provides-Extra: docs
|
|
22
|
+
Requires-Dist: mkdocs-material>=9.0.0; extra == 'docs'
|
|
23
|
+
Description-Content-Type: text/markdown
|
|
24
|
+
|
|
25
|
+
# devskills-cli
|
|
26
|
+
|
|
27
|
+
An interactive CLI to scaffold AI/ML production projects using the `uv` package manager. No flags — just prompts.
|
|
28
|
+
|
|
29
|
+
## Installation
|
|
30
|
+
|
|
31
|
+
```bash
|
|
32
|
+
pip install devskills-cli
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
Requires Python 3.10+ and [`uv`](https://docs.astral.sh/uv/getting-started/installation/).
|
|
36
|
+
|
|
37
|
+
---
|
|
38
|
+
|
|
39
|
+
## Commands
|
|
40
|
+
|
|
41
|
+
### `dev start` — Scaffold a new project
|
|
42
|
+
|
|
43
|
+
Run this inside any directory:
|
|
44
|
+
|
|
45
|
+
```bash
|
|
46
|
+
dev start
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
It will ask you four questions:
|
|
50
|
+
|
|
51
|
+
1. **Project name** — type a name to create a new folder, or `.` to scaffold in the current directory
|
|
52
|
+
2. **Project structure** — choose one:
|
|
53
|
+
- `AI / ML` — includes `app/`, `src/inference/`, `src/services/`, `src/database/`, `models/`, `tests/`, `docs/`, `config/`, `.github/`
|
|
54
|
+
- `API` — includes `app/`, `src/services/`, `src/database/`, `tests/`, `docs/`, `config/`
|
|
55
|
+
- `Minimal` — includes `app/`, `tests/`, `config/`
|
|
56
|
+
- `None` — empty project (just `pyproject.toml` + `.gitignore`)
|
|
57
|
+
3. **Optional features** — space to toggle, enter to confirm:
|
|
58
|
+
- `Docker` — adds `Dockerfile` and `.dockerignore`
|
|
59
|
+
- `Claude` — adds `.claude/` folder for [Claude Code](https://claude.ai/code) integration
|
|
60
|
+
4. **Create `.venv` now?** — runs `uv venv` immediately if yes
|
|
61
|
+
|
|
62
|
+
After confirming, your project is ready with next steps printed on screen.
|
|
63
|
+
|
|
64
|
+
---
|
|
65
|
+
|
|
66
|
+
### `dev skills` — Manage Claude Code skills
|
|
67
|
+
|
|
68
|
+
These commands require a `.claude/` folder in your current directory (created by `dev start` when you select the Claude feature).
|
|
69
|
+
|
|
70
|
+
#### Search and install a skill
|
|
71
|
+
|
|
72
|
+
```bash
|
|
73
|
+
dev skills find <keyword>
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
Searches [skills.sh](https://skills.sh) for matching skills, lets you pick one, and installs it into `.claude/skills/`.
|
|
77
|
+
|
|
78
|
+
Example:
|
|
79
|
+
|
|
80
|
+
```bash
|
|
81
|
+
dev skills find debugging
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
#### Install a specific skill directly
|
|
85
|
+
|
|
86
|
+
```bash
|
|
87
|
+
dev skills install <owner/repo>
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
Install one or more skills by their reference without searching:
|
|
91
|
+
|
|
92
|
+
```bash
|
|
93
|
+
dev skills install anthropics/skills
|
|
94
|
+
dev skills install anthropics/skills some-other/skill
|
|
95
|
+
```
|
|
96
|
+
|
|
97
|
+
#### Browse top skills
|
|
98
|
+
|
|
99
|
+
```bash
|
|
100
|
+
dev skills list
|
|
101
|
+
```
|
|
102
|
+
|
|
103
|
+
Shows the top skills from the [skills.sh](https://skills.sh) leaderboard in a table.
|
|
104
|
+
|
|
105
|
+
---
|
|
106
|
+
|
|
107
|
+
## Example Workflow
|
|
108
|
+
|
|
109
|
+
```bash
|
|
110
|
+
# Install the CLI
|
|
111
|
+
pip install devskills-cli
|
|
112
|
+
|
|
113
|
+
# Scaffold a new AI project
|
|
114
|
+
dev start
|
|
115
|
+
# > Project name: my-agent
|
|
116
|
+
# > Structure: AI / ML
|
|
117
|
+
# > Features: [x] Claude [ ] Docker
|
|
118
|
+
# > Create .venv? Yes
|
|
119
|
+
|
|
120
|
+
cd my-agent
|
|
121
|
+
uv sync
|
|
122
|
+
cp .env.example .env
|
|
123
|
+
|
|
124
|
+
# Browse and install Claude Code skills
|
|
125
|
+
dev skills list
|
|
126
|
+
dev skills find pdf
|
|
127
|
+
```
|
|
128
|
+
|
|
129
|
+
---
|
|
130
|
+
|
|
131
|
+
## Requirements
|
|
132
|
+
|
|
133
|
+
| Tool | Purpose |
|
|
134
|
+
|---|---|
|
|
135
|
+
| Python 3.10+ | Runtime |
|
|
136
|
+
| [`uv`](https://docs.astral.sh/uv/getting-started/installation/) | Project init and virtualenv |
|
|
137
|
+
| [Node.js / npx](https://nodejs.org) | Only needed for `dev skills` commands |
|
|
138
|
+
|
|
139
|
+
---
|
|
140
|
+
|
|
141
|
+
## Links
|
|
142
|
+
|
|
143
|
+
- PyPI: [pypi.org/project/devskills-cli](https://pypi.org/project/devskills-cli/)
|
|
144
|
+
- Skills marketplace: [skills.sh](https://skills.sh)
|
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
# devskills-cli
|
|
2
|
+
|
|
3
|
+
An interactive CLI to scaffold AI/ML production projects using the `uv` package manager. No flags — just prompts.
|
|
4
|
+
|
|
5
|
+
## Installation
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
pip install devskills-cli
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
Requires Python 3.10+ and [`uv`](https://docs.astral.sh/uv/getting-started/installation/).
|
|
12
|
+
|
|
13
|
+
---
|
|
14
|
+
|
|
15
|
+
## Commands
|
|
16
|
+
|
|
17
|
+
### `dev start` — Scaffold a new project
|
|
18
|
+
|
|
19
|
+
Run this inside any directory:
|
|
20
|
+
|
|
21
|
+
```bash
|
|
22
|
+
dev start
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
It will ask you four questions:
|
|
26
|
+
|
|
27
|
+
1. **Project name** — type a name to create a new folder, or `.` to scaffold in the current directory
|
|
28
|
+
2. **Project structure** — choose one:
|
|
29
|
+
- `AI / ML` — includes `app/`, `src/inference/`, `src/services/`, `src/database/`, `models/`, `tests/`, `docs/`, `config/`, `.github/`
|
|
30
|
+
- `API` — includes `app/`, `src/services/`, `src/database/`, `tests/`, `docs/`, `config/`
|
|
31
|
+
- `Minimal` — includes `app/`, `tests/`, `config/`
|
|
32
|
+
- `None` — empty project (just `pyproject.toml` + `.gitignore`)
|
|
33
|
+
3. **Optional features** — space to toggle, enter to confirm:
|
|
34
|
+
- `Docker` — adds `Dockerfile` and `.dockerignore`
|
|
35
|
+
- `Claude` — adds `.claude/` folder for [Claude Code](https://claude.ai/code) integration
|
|
36
|
+
4. **Create `.venv` now?** — runs `uv venv` immediately if yes
|
|
37
|
+
|
|
38
|
+
After confirming, your project is ready with next steps printed on screen.
|
|
39
|
+
|
|
40
|
+
---
|
|
41
|
+
|
|
42
|
+
### `dev skills` — Manage Claude Code skills
|
|
43
|
+
|
|
44
|
+
These commands require a `.claude/` folder in your current directory (created by `dev start` when you select the Claude feature).
|
|
45
|
+
|
|
46
|
+
#### Search and install a skill
|
|
47
|
+
|
|
48
|
+
```bash
|
|
49
|
+
dev skills find <keyword>
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
Searches [skills.sh](https://skills.sh) for matching skills, lets you pick one, and installs it into `.claude/skills/`.
|
|
53
|
+
|
|
54
|
+
Example:
|
|
55
|
+
|
|
56
|
+
```bash
|
|
57
|
+
dev skills find debugging
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
#### Install a specific skill directly
|
|
61
|
+
|
|
62
|
+
```bash
|
|
63
|
+
dev skills install <owner/repo>
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
Install one or more skills by their reference without searching:
|
|
67
|
+
|
|
68
|
+
```bash
|
|
69
|
+
dev skills install anthropics/skills
|
|
70
|
+
dev skills install anthropics/skills some-other/skill
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
#### Browse top skills
|
|
74
|
+
|
|
75
|
+
```bash
|
|
76
|
+
dev skills list
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
Shows the top skills from the [skills.sh](https://skills.sh) leaderboard in a table.
|
|
80
|
+
|
|
81
|
+
---
|
|
82
|
+
|
|
83
|
+
## Example Workflow
|
|
84
|
+
|
|
85
|
+
```bash
|
|
86
|
+
# Install the CLI
|
|
87
|
+
pip install devskills-cli
|
|
88
|
+
|
|
89
|
+
# Scaffold a new AI project
|
|
90
|
+
dev start
|
|
91
|
+
# > Project name: my-agent
|
|
92
|
+
# > Structure: AI / ML
|
|
93
|
+
# > Features: [x] Claude [ ] Docker
|
|
94
|
+
# > Create .venv? Yes
|
|
95
|
+
|
|
96
|
+
cd my-agent
|
|
97
|
+
uv sync
|
|
98
|
+
cp .env.example .env
|
|
99
|
+
|
|
100
|
+
# Browse and install Claude Code skills
|
|
101
|
+
dev skills list
|
|
102
|
+
dev skills find pdf
|
|
103
|
+
```
|
|
104
|
+
|
|
105
|
+
---
|
|
106
|
+
|
|
107
|
+
## Requirements
|
|
108
|
+
|
|
109
|
+
| Tool | Purpose |
|
|
110
|
+
|---|---|
|
|
111
|
+
| Python 3.10+ | Runtime |
|
|
112
|
+
| [`uv`](https://docs.astral.sh/uv/getting-started/installation/) | Project init and virtualenv |
|
|
113
|
+
| [Node.js / npx](https://nodejs.org) | Only needed for `dev skills` commands |
|
|
114
|
+
|
|
115
|
+
---
|
|
116
|
+
|
|
117
|
+
## Links
|
|
118
|
+
|
|
119
|
+
- PyPI: [pypi.org/project/devskills-cli](https://pypi.org/project/devskills-cli/)
|
|
120
|
+
- Skills marketplace: [skills.sh](https://skills.sh)
|
|
@@ -0,0 +1,242 @@
|
|
|
1
|
+
# Contributing to devskills-cli
|
|
2
|
+
|
|
3
|
+
This guide explains how the codebase is structured and how to make changes.
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## Project Structure
|
|
8
|
+
|
|
9
|
+
```
|
|
10
|
+
devskills/
|
|
11
|
+
├── main.py # CLI entry point — all commands defined here
|
|
12
|
+
├── core/
|
|
13
|
+
│ ├── prompts.py # All interactive user prompts (questionary)
|
|
14
|
+
│ ├── scaffold.py # Creates base dirs/files + runs uv init/venv
|
|
15
|
+
│ ├── generator.py # Orchestrates the full project generation flow
|
|
16
|
+
│ └── skills.py # Interfaces with skills.sh API and npx CLI
|
|
17
|
+
└── templates/
|
|
18
|
+
├── helpers.py # make_dir() and make_file() utilities
|
|
19
|
+
├── docker.py # Dockerfile + .dockerignore template
|
|
20
|
+
├── claude.py # .claude/ folder template
|
|
21
|
+
├── agents.py # agents/, prompts/, tools/, memory/ (unused in prompts)
|
|
22
|
+
└── features.py # features/example_feature/ (unused in prompts)
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
---
|
|
26
|
+
|
|
27
|
+
## Local Setup
|
|
28
|
+
|
|
29
|
+
```bash
|
|
30
|
+
git clone <repo>
|
|
31
|
+
cd "Project Commands"
|
|
32
|
+
|
|
33
|
+
# Create virtualenv and install in editable mode
|
|
34
|
+
python -m venv .venv
|
|
35
|
+
.venv\Scripts\activate # Windows
|
|
36
|
+
# source .venv/bin/activate # Mac/Linux
|
|
37
|
+
|
|
38
|
+
pip install -e .
|
|
39
|
+
|
|
40
|
+
# Test it
|
|
41
|
+
dev --help
|
|
42
|
+
dev start
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
---
|
|
46
|
+
|
|
47
|
+
## How to Make Changes
|
|
48
|
+
|
|
49
|
+
### Modify a CLI command
|
|
50
|
+
|
|
51
|
+
All commands live in `devskills/main.py`.
|
|
52
|
+
|
|
53
|
+
- `dev start` → `start()` function
|
|
54
|
+
- `dev skills find` → `skills_find()` function
|
|
55
|
+
- `dev skills install` → `skills_install()` function
|
|
56
|
+
- `dev skills list` → `skills_list()` function
|
|
57
|
+
|
|
58
|
+
Add a new top-level command with `@app.command("name")`, or add to the skills subgroup with `@skills_app.command("name")`.
|
|
59
|
+
|
|
60
|
+
---
|
|
61
|
+
|
|
62
|
+
### Change what gets asked during `dev start`
|
|
63
|
+
|
|
64
|
+
All interactive prompts are in `devskills/core/prompts.py`.
|
|
65
|
+
|
|
66
|
+
Each function uses `questionary` and returns a value passed to `generator.generate()`:
|
|
67
|
+
|
|
68
|
+
| Function | Returns | Used for |
|
|
69
|
+
|---|---|---|
|
|
70
|
+
| `ask_location()` | `str` | Project name or `.` |
|
|
71
|
+
| `ask_structure()` | `str` | `aiml`, `api`, `minimal`, `none` |
|
|
72
|
+
| `ask_features()` | `list[str]` | Selected feature keys |
|
|
73
|
+
| `ask_venv()` | `bool` | Whether to run `uv venv` |
|
|
74
|
+
| `ask_confirm()` | `bool` | Final yes/no confirmation |
|
|
75
|
+
|
|
76
|
+
To add a new prompt, define the function here and call it from `start()` in `main.py`.
|
|
77
|
+
|
|
78
|
+
---
|
|
79
|
+
|
|
80
|
+
### Change the base directory structure
|
|
81
|
+
|
|
82
|
+
`devskills/core/scaffold.py` controls what folders and files are created for each structure type.
|
|
83
|
+
|
|
84
|
+
Edit `_STRUCTURE_DIRS` to add or remove directories:
|
|
85
|
+
|
|
86
|
+
```python
|
|
87
|
+
_STRUCTURE_DIRS = {
|
|
88
|
+
"aiml": [
|
|
89
|
+
"app",
|
|
90
|
+
"src/inference",
|
|
91
|
+
# add more dirs here
|
|
92
|
+
],
|
|
93
|
+
...
|
|
94
|
+
}
|
|
95
|
+
```
|
|
96
|
+
|
|
97
|
+
Edit `create_base()` to add or change boilerplate files (e.g. `.gitignore`, `app/main.py`).
|
|
98
|
+
|
|
99
|
+
---
|
|
100
|
+
|
|
101
|
+
### Modify an existing template
|
|
102
|
+
|
|
103
|
+
Templates live in `devskills/templates/`. Each one has a `create(project_path: Path)` function.
|
|
104
|
+
|
|
105
|
+
- **Docker** → `devskills/templates/docker.py` — edit `Dockerfile` or `.dockerignore` content
|
|
106
|
+
- **Claude** → `devskills/templates/claude.py` — edit `.claude/CLAUDE.md` or `.claude/AGENTS.md` content
|
|
107
|
+
|
|
108
|
+
Use the helper utilities (always idempotent — safe to re-run):
|
|
109
|
+
|
|
110
|
+
```python
|
|
111
|
+
from devskills.templates.helpers import make_dir, make_file
|
|
112
|
+
|
|
113
|
+
make_dir(project_path / "some/new/folder")
|
|
114
|
+
make_file(project_path / "some/file.txt", "file content here")
|
|
115
|
+
```
|
|
116
|
+
|
|
117
|
+
`make_file()` will not overwrite an existing file.
|
|
118
|
+
|
|
119
|
+
---
|
|
120
|
+
|
|
121
|
+
### Add a new optional feature template
|
|
122
|
+
|
|
123
|
+
Three steps:
|
|
124
|
+
|
|
125
|
+
**1. Create the template module** in `devskills/templates/<feature>.py`:
|
|
126
|
+
|
|
127
|
+
```python
|
|
128
|
+
from pathlib import Path
|
|
129
|
+
from devskills.templates.helpers import make_dir, make_file
|
|
130
|
+
|
|
131
|
+
def create(project_path: Path) -> None:
|
|
132
|
+
make_dir(project_path / "my_new_folder")
|
|
133
|
+
make_file(project_path / "my_new_folder" / "example.py", "# example\n")
|
|
134
|
+
```
|
|
135
|
+
|
|
136
|
+
**2. Register it in `devskills/core/generator.py`**:
|
|
137
|
+
|
|
138
|
+
```python
|
|
139
|
+
from devskills.templates import docker, claude, my_feature # add import
|
|
140
|
+
|
|
141
|
+
_TEMPLATE_MAP = {
|
|
142
|
+
"docker": docker.create,
|
|
143
|
+
"claude": claude.create,
|
|
144
|
+
"my_feature": my_feature.create, # add entry
|
|
145
|
+
}
|
|
146
|
+
```
|
|
147
|
+
|
|
148
|
+
**3. Expose it in `devskills/core/prompts.py`** inside `ask_features()`:
|
|
149
|
+
|
|
150
|
+
```python
|
|
151
|
+
choices=[
|
|
152
|
+
questionary.Choice(title="[Docker] Dockerfile + .dockerignore", value="docker"),
|
|
153
|
+
questionary.Choice(title="[Claude] .claude/ folder for Claude Code", value="claude"),
|
|
154
|
+
questionary.Choice(title="[MyFeature] Description of your feature", value="my_feature"), # add
|
|
155
|
+
],
|
|
156
|
+
```
|
|
157
|
+
|
|
158
|
+
The `value` string must match the key in `_TEMPLATE_MAP`.
|
|
159
|
+
|
|
160
|
+
---
|
|
161
|
+
|
|
162
|
+
### Change the skills.sh integration
|
|
163
|
+
|
|
164
|
+
`devskills/core/skills.py` handles all communication with skills.sh:
|
|
165
|
+
|
|
166
|
+
- `search_skills_sh(query)` — runs `npx skills find <query>`, parses output with regex
|
|
167
|
+
- `list_top_skills()` — calls `https://skills.sh/api/top` via `httpx`
|
|
168
|
+
- `install_skill(ref, target)` — runs `npx skills add <repo> -a claude-code -y`
|
|
169
|
+
- `assert_claude_dir(cwd)` — validates `.claude/` folder exists before installing
|
|
170
|
+
|
|
171
|
+
The API base URL is `_SKILLS_SH_API = "https://skills.sh/api"` — change this if the endpoint changes.
|
|
172
|
+
|
|
173
|
+
---
|
|
174
|
+
|
|
175
|
+
## Build & Publish
|
|
176
|
+
|
|
177
|
+
### Bump the version
|
|
178
|
+
|
|
179
|
+
Edit `pyproject.toml`:
|
|
180
|
+
|
|
181
|
+
```toml
|
|
182
|
+
[project]
|
|
183
|
+
version = "0.1.2" # increment this
|
|
184
|
+
```
|
|
185
|
+
|
|
186
|
+
Follow [semver](https://semver.org): `MAJOR.MINOR.PATCH`
|
|
187
|
+
- Patch: bug fixes
|
|
188
|
+
- Minor: new features, backwards compatible
|
|
189
|
+
- Major: breaking changes
|
|
190
|
+
|
|
191
|
+
### Build
|
|
192
|
+
|
|
193
|
+
```bash
|
|
194
|
+
pip install build
|
|
195
|
+
python -m build
|
|
196
|
+
```
|
|
197
|
+
|
|
198
|
+
This creates:
|
|
199
|
+
```
|
|
200
|
+
dist/
|
|
201
|
+
devskills_cli-0.1.2-py3-none-any.whl
|
|
202
|
+
devskills_cli-0.1.2.tar.gz
|
|
203
|
+
```
|
|
204
|
+
|
|
205
|
+
### Test the build locally
|
|
206
|
+
|
|
207
|
+
```bash
|
|
208
|
+
pip install dist/devskills_cli-0.1.2-py3-none-any.whl
|
|
209
|
+
dev start
|
|
210
|
+
```
|
|
211
|
+
|
|
212
|
+
### Publish to PyPI
|
|
213
|
+
|
|
214
|
+
```bash
|
|
215
|
+
pip install twine
|
|
216
|
+
twine upload dist/*
|
|
217
|
+
# username: __token__
|
|
218
|
+
# password: your PyPI API token (store it in .env, never commit it)
|
|
219
|
+
```
|
|
220
|
+
|
|
221
|
+
Or with token from env:
|
|
222
|
+
|
|
223
|
+
```bash
|
|
224
|
+
source .env
|
|
225
|
+
twine upload dist/* -u __token__ -p "$PYPI_API_TOKEN"
|
|
226
|
+
```
|
|
227
|
+
|
|
228
|
+
---
|
|
229
|
+
|
|
230
|
+
## Dependencies
|
|
231
|
+
|
|
232
|
+
Defined in `pyproject.toml`. To add a dependency:
|
|
233
|
+
|
|
234
|
+
1. Add it under `[project] dependencies`
|
|
235
|
+
2. Run `pip install -e .` to update your local environment
|
|
236
|
+
|
|
237
|
+
| Package | Purpose |
|
|
238
|
+
|---|---|
|
|
239
|
+
| `typer` | CLI framework (commands, args, help text) |
|
|
240
|
+
| `questionary` | Interactive prompts (select, checkbox, text) |
|
|
241
|
+
| `rich` | Terminal colors, tables, spinners, panels |
|
|
242
|
+
| `httpx` | HTTP client for skills.sh API |
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
# dev skills
|
|
2
|
+
|
|
3
|
+
Manage Claude Code skills from [skills.sh](https://skills.sh).
|
|
4
|
+
|
|
5
|
+
!!! note "Requirement"
|
|
6
|
+
These commands require a `.claude/` folder in your current directory.
|
|
7
|
+
Create one by running `dev start` and selecting the **Claude** feature.
|
|
8
|
+
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
## dev skills find
|
|
12
|
+
|
|
13
|
+
Search for a skill by keyword and install it interactively.
|
|
14
|
+
|
|
15
|
+
```bash
|
|
16
|
+
dev skills find <keyword>
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
**Example:**
|
|
20
|
+
|
|
21
|
+
```bash
|
|
22
|
+
dev skills find debugging
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
This searches skills.sh, presents a list of matches, and installs your selection into `.claude/skills/`.
|
|
26
|
+
|
|
27
|
+
---
|
|
28
|
+
|
|
29
|
+
## dev skills install
|
|
30
|
+
|
|
31
|
+
Install one or more skills directly by their `owner/repo` reference.
|
|
32
|
+
|
|
33
|
+
```bash
|
|
34
|
+
dev skills install <owner/repo> [<owner/repo> ...]
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
**Examples:**
|
|
38
|
+
|
|
39
|
+
```bash
|
|
40
|
+
# Install a single skill
|
|
41
|
+
dev skills install anthropics/skills
|
|
42
|
+
|
|
43
|
+
# Install multiple skills at once
|
|
44
|
+
dev skills install anthropics/skills some-other/skill
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
---
|
|
48
|
+
|
|
49
|
+
## dev skills list
|
|
50
|
+
|
|
51
|
+
Browse the top skills from the skills.sh leaderboard.
|
|
52
|
+
|
|
53
|
+
```bash
|
|
54
|
+
dev skills list
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
Displays a table of top-ranked skills with their names and descriptions. Use this to discover what's available before running `dev skills find` or `dev skills install`.
|
|
58
|
+
|
|
59
|
+
---
|
|
60
|
+
|
|
61
|
+
## How skills work
|
|
62
|
+
|
|
63
|
+
Skills are installed into `.claude/skills/` in your project. Claude Code automatically reads them and uses them as reusable instructions for tasks like testing, deploying, or debugging.
|
|
64
|
+
|
|
65
|
+
Learn more at [skills.sh](https://skills.sh).
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
# dev start
|
|
2
|
+
|
|
3
|
+
Scaffold a new AI/ML production project interactively.
|
|
4
|
+
|
|
5
|
+
```bash
|
|
6
|
+
dev start
|
|
7
|
+
```
|
|
8
|
+
|
|
9
|
+
No flags. All configuration is done through interactive prompts.
|
|
10
|
+
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
## Prompts
|
|
14
|
+
|
|
15
|
+
### 1. Project name
|
|
16
|
+
|
|
17
|
+
```
|
|
18
|
+
Project name (or . to scaffold in current folder):
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
- Type a name to create a new subdirectory (e.g. `my-agent`)
|
|
22
|
+
- Type `.` to scaffold directly in the current directory
|
|
23
|
+
|
|
24
|
+
---
|
|
25
|
+
|
|
26
|
+
### 2. Project structure
|
|
27
|
+
|
|
28
|
+
Choose the folder layout that matches your project type:
|
|
29
|
+
|
|
30
|
+
| Option | Directories created |
|
|
31
|
+
|--------|-------------------|
|
|
32
|
+
| **AI / ML** | `app/` `src/inference/` `src/services/` `src/database/` `models/` `tests/` `docs/` `config/` `.github/workflows/` |
|
|
33
|
+
| **API** | `app/` `src/services/` `src/database/` `tests/` `docs/` `config/` |
|
|
34
|
+
| **Minimal** | `app/` `tests/` `config/` |
|
|
35
|
+
| **None** | Empty project — just `pyproject.toml` + `.gitignore` |
|
|
36
|
+
|
|
37
|
+
All structures include:
|
|
38
|
+
|
|
39
|
+
- `pyproject.toml` (via `uv init`)
|
|
40
|
+
- `.gitignore` (pre-configured for Python + ML artifacts)
|
|
41
|
+
- `.python-version` (set to `3.11`)
|
|
42
|
+
- `app/main.py`
|
|
43
|
+
- `.env` + `.env.example`
|
|
44
|
+
|
|
45
|
+
---
|
|
46
|
+
|
|
47
|
+
### 3. Optional features
|
|
48
|
+
|
|
49
|
+
Toggle with `space`, confirm with `enter`:
|
|
50
|
+
|
|
51
|
+
**Docker**
|
|
52
|
+
|
|
53
|
+
Adds:
|
|
54
|
+
```
|
|
55
|
+
Dockerfile
|
|
56
|
+
.dockerignore
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
**Claude**
|
|
60
|
+
|
|
61
|
+
Adds:
|
|
62
|
+
```
|
|
63
|
+
.claude/
|
|
64
|
+
├── CLAUDE.md # Project context for Claude Code
|
|
65
|
+
└── AGENTS.md # Agent instructions
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
---
|
|
69
|
+
|
|
70
|
+
### 4. Virtual environment
|
|
71
|
+
|
|
72
|
+
```
|
|
73
|
+
❯ Yes — create .venv now (runs uv venv)
|
|
74
|
+
No — I'll do it manually
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
Choosing **Yes** runs `uv venv` in the project directory immediately.
|
|
78
|
+
|
|
79
|
+
---
|
|
80
|
+
|
|
81
|
+
## What gets created (AI/ML example)
|
|
82
|
+
|
|
83
|
+
```
|
|
84
|
+
my-ai-api/
|
|
85
|
+
├── app/
|
|
86
|
+
│ └── main.py
|
|
87
|
+
├── src/
|
|
88
|
+
│ ├── inference/
|
|
89
|
+
│ ├── services/
|
|
90
|
+
│ └── database/
|
|
91
|
+
├── models/
|
|
92
|
+
├── tests/
|
|
93
|
+
├── docs/
|
|
94
|
+
├── config/
|
|
95
|
+
│ └── settings.py
|
|
96
|
+
├── .github/
|
|
97
|
+
│ └── workflows/
|
|
98
|
+
├── .claude/ # if Claude selected
|
|
99
|
+
│ ├── CLAUDE.md
|
|
100
|
+
│ └── AGENTS.md
|
|
101
|
+
├── Dockerfile # if Docker selected
|
|
102
|
+
├── .dockerignore # if Docker selected
|
|
103
|
+
├── .env
|
|
104
|
+
├── .env.example
|
|
105
|
+
├── .gitignore
|
|
106
|
+
├── .python-version
|
|
107
|
+
└── pyproject.toml
|
|
108
|
+
```
|
|
109
|
+
|
|
110
|
+
---
|
|
111
|
+
|
|
112
|
+
## Idempotent
|
|
113
|
+
|
|
114
|
+
Running `dev start` on an existing directory is safe — it will not overwrite files that already exist.
|