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.
Files changed (86) hide show
  1. devskills_cli-0.1.2/.github/workflows/docs.yml +24 -0
  2. devskills_cli-0.1.2/PKG-INFO +144 -0
  3. devskills_cli-0.1.2/README.md +120 -0
  4. devskills_cli-0.1.2/docs/CONTRIBUTING.md +242 -0
  5. devskills_cli-0.1.2/docs/commands/skills.md +65 -0
  6. devskills_cli-0.1.2/docs/commands/start.md +114 -0
  7. devskills_cli-0.1.2/docs/getting-started/installation.md +50 -0
  8. devskills_cli-0.1.2/docs/getting-started/quickstart.md +70 -0
  9. devskills_cli-0.1.2/docs/index.md +72 -0
  10. devskills_cli-0.1.2/mkdocs.yml +72 -0
  11. devskills_cli-0.1.2/pyproject.toml +40 -0
  12. devskills_cli-0.1.2/site/404.html +727 -0
  13. devskills_cli-0.1.2/site/CONTRIBUTING/index.html +1408 -0
  14. devskills_cli-0.1.2/site/assets/images/favicon.png +0 -0
  15. devskills_cli-0.1.2/site/assets/javascripts/bundle.79ae519e.min.js +16 -0
  16. devskills_cli-0.1.2/site/assets/javascripts/bundle.79ae519e.min.js.map +7 -0
  17. devskills_cli-0.1.2/site/assets/javascripts/lunr/min/lunr.ar.min.js +1 -0
  18. devskills_cli-0.1.2/site/assets/javascripts/lunr/min/lunr.da.min.js +18 -0
  19. devskills_cli-0.1.2/site/assets/javascripts/lunr/min/lunr.de.min.js +18 -0
  20. devskills_cli-0.1.2/site/assets/javascripts/lunr/min/lunr.du.min.js +18 -0
  21. devskills_cli-0.1.2/site/assets/javascripts/lunr/min/lunr.el.min.js +1 -0
  22. devskills_cli-0.1.2/site/assets/javascripts/lunr/min/lunr.es.min.js +18 -0
  23. devskills_cli-0.1.2/site/assets/javascripts/lunr/min/lunr.fi.min.js +18 -0
  24. devskills_cli-0.1.2/site/assets/javascripts/lunr/min/lunr.fr.min.js +18 -0
  25. devskills_cli-0.1.2/site/assets/javascripts/lunr/min/lunr.he.min.js +1 -0
  26. devskills_cli-0.1.2/site/assets/javascripts/lunr/min/lunr.hi.min.js +1 -0
  27. devskills_cli-0.1.2/site/assets/javascripts/lunr/min/lunr.hu.min.js +18 -0
  28. devskills_cli-0.1.2/site/assets/javascripts/lunr/min/lunr.hy.min.js +1 -0
  29. devskills_cli-0.1.2/site/assets/javascripts/lunr/min/lunr.it.min.js +18 -0
  30. devskills_cli-0.1.2/site/assets/javascripts/lunr/min/lunr.ja.min.js +1 -0
  31. devskills_cli-0.1.2/site/assets/javascripts/lunr/min/lunr.jp.min.js +1 -0
  32. devskills_cli-0.1.2/site/assets/javascripts/lunr/min/lunr.kn.min.js +1 -0
  33. devskills_cli-0.1.2/site/assets/javascripts/lunr/min/lunr.ko.min.js +1 -0
  34. devskills_cli-0.1.2/site/assets/javascripts/lunr/min/lunr.multi.min.js +1 -0
  35. devskills_cli-0.1.2/site/assets/javascripts/lunr/min/lunr.nl.min.js +18 -0
  36. devskills_cli-0.1.2/site/assets/javascripts/lunr/min/lunr.no.min.js +18 -0
  37. devskills_cli-0.1.2/site/assets/javascripts/lunr/min/lunr.pt.min.js +18 -0
  38. devskills_cli-0.1.2/site/assets/javascripts/lunr/min/lunr.ro.min.js +18 -0
  39. devskills_cli-0.1.2/site/assets/javascripts/lunr/min/lunr.ru.min.js +18 -0
  40. devskills_cli-0.1.2/site/assets/javascripts/lunr/min/lunr.sa.min.js +1 -0
  41. devskills_cli-0.1.2/site/assets/javascripts/lunr/min/lunr.stemmer.support.min.js +1 -0
  42. devskills_cli-0.1.2/site/assets/javascripts/lunr/min/lunr.sv.min.js +18 -0
  43. devskills_cli-0.1.2/site/assets/javascripts/lunr/min/lunr.ta.min.js +1 -0
  44. devskills_cli-0.1.2/site/assets/javascripts/lunr/min/lunr.te.min.js +1 -0
  45. devskills_cli-0.1.2/site/assets/javascripts/lunr/min/lunr.th.min.js +1 -0
  46. devskills_cli-0.1.2/site/assets/javascripts/lunr/min/lunr.tr.min.js +18 -0
  47. devskills_cli-0.1.2/site/assets/javascripts/lunr/min/lunr.vi.min.js +1 -0
  48. devskills_cli-0.1.2/site/assets/javascripts/lunr/min/lunr.zh.min.js +1 -0
  49. devskills_cli-0.1.2/site/assets/javascripts/lunr/tinyseg.js +206 -0
  50. devskills_cli-0.1.2/site/assets/javascripts/lunr/wordcut.js +6708 -0
  51. devskills_cli-0.1.2/site/assets/javascripts/workers/search.2c215733.min.js +42 -0
  52. devskills_cli-0.1.2/site/assets/javascripts/workers/search.2c215733.min.js.map +7 -0
  53. devskills_cli-0.1.2/site/assets/stylesheets/main.484c7ddc.min.css +1 -0
  54. devskills_cli-0.1.2/site/assets/stylesheets/main.484c7ddc.min.css.map +1 -0
  55. devskills_cli-0.1.2/site/assets/stylesheets/palette.ab4e12ef.min.css +1 -0
  56. devskills_cli-0.1.2/site/assets/stylesheets/palette.ab4e12ef.min.css.map +1 -0
  57. devskills_cli-0.1.2/site/commands/skills/index.html +984 -0
  58. devskills_cli-0.1.2/site/commands/start/index.html +1125 -0
  59. devskills_cli-0.1.2/site/getting-started/installation/index.html +980 -0
  60. devskills_cli-0.1.2/site/getting-started/quickstart/index.html +1012 -0
  61. devskills_cli-0.1.2/site/index.html +1024 -0
  62. devskills_cli-0.1.2/site/search/search_index.json +1 -0
  63. devskills_cli-0.1.2/site/sitemap.xml +27 -0
  64. devskills_cli-0.1.2/site/sitemap.xml.gz +0 -0
  65. devskills_cli-0.1.1/PKG-INFO +0 -9
  66. devskills_cli-0.1.1/README.md +0 -0
  67. devskills_cli-0.1.1/pyproject.toml +0 -21
  68. {devskills_cli-0.1.1 → devskills_cli-0.1.2}/.env +0 -0
  69. {devskills_cli-0.1.1 → devskills_cli-0.1.2}/.gitignore +0 -0
  70. {devskills_cli-0.1.1 → devskills_cli-0.1.2}/devskills/__init__.py +0 -0
  71. {devskills_cli-0.1.1 → devskills_cli-0.1.2}/devskills/core/__init__.py +0 -0
  72. {devskills_cli-0.1.1 → devskills_cli-0.1.2}/devskills/core/base.py +0 -0
  73. {devskills_cli-0.1.1 → devskills_cli-0.1.2}/devskills/core/generator.py +0 -0
  74. {devskills_cli-0.1.1 → devskills_cli-0.1.2}/devskills/core/prompts.py +0 -0
  75. {devskills_cli-0.1.1 → devskills_cli-0.1.2}/devskills/core/scaffold.py +0 -0
  76. {devskills_cli-0.1.1 → devskills_cli-0.1.2}/devskills/core/skills.py +0 -0
  77. {devskills_cli-0.1.1 → devskills_cli-0.1.2}/devskills/main.py +0 -0
  78. {devskills_cli-0.1.1 → devskills_cli-0.1.2}/devskills/templates/__init__.py +0 -0
  79. {devskills_cli-0.1.1 → devskills_cli-0.1.2}/devskills/templates/agents.py +0 -0
  80. {devskills_cli-0.1.1 → devskills_cli-0.1.2}/devskills/templates/base.py +0 -0
  81. {devskills_cli-0.1.1 → devskills_cli-0.1.2}/devskills/templates/claude.py +0 -0
  82. {devskills_cli-0.1.1 → devskills_cli-0.1.2}/devskills/templates/docker.py +0 -0
  83. {devskills_cli-0.1.1 → devskills_cli-0.1.2}/devskills/templates/features.py +0 -0
  84. {devskills_cli-0.1.1 → devskills_cli-0.1.2}/devskills/templates/helpers.py +0 -0
  85. {devskills_cli-0.1.1 → devskills_cli-0.1.2}/requirements.txt +0 -0
  86. {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.