Metadata-Version: 2.4
Name: dktcli
Version: 1.0.0
Summary: devkittools: the developer's swiss army knife - 35+ zero-dependency CLI tools (ports, serve, json, git helpers, secrets scan, cron, and more) under one command: dkt
License: MIT
Keywords: cli,developer-tools,devtools,git,changelog,ollama,productivity,utilities,toolbox
Classifier: Development Status :: 4 - Beta
Classifier: Programming Language :: Python :: 3
Classifier: License :: OSI Approved :: MIT License
Classifier: Environment :: Console
Classifier: Intended Audience :: Developers
Classifier: Operating System :: OS Independent
Classifier: Topic :: Software Development :: Build Tools
Classifier: Topic :: Utilities
Requires-Python: >=3.8
Description-Content-Type: text/markdown
License-File: LICENSE
Dynamic: license-file

# dkt - the developer's swiss army knife

**35+ small, sharp CLI tools under one command: `dkt`.**
Pure Python, **zero dependencies**, Windows / macOS / Linux. Colored output, spinners, aligned tables,
typo suggestions ("did you mean..."), tab-completion, and an interactive menu.

```text
  ____  _  _______
 |  _ \| |/ /_   _|   devkittools
 | | | | ' /  | |     the developer's swiss army knife
 | |_| | . \  | |
 |____/|_|\_\ |_|
```

## Install

```bash
pip install dktcli
dkt                # see every tool
```

No PyPI? From this folder: `pip install .` - or on Windows just double-click **`install.bat`**
(it also fixes your PATH). If `dkt` isn't found, `python -m devkittools` always works.

**Update:** `dkt update` (PyPI installs) or double-click **`update.bat`** (does `git pull` if this is a clone).
**Uninstall:** `uninstall.bat` or `pip uninstall dktcli`.

## The tools

Run `dkt` for the list, `dkt <tool> -h` for examples of any tool, or `dkt menu` for an interactive launcher.

### Servers & Network
| Command | Alias | What it does |
|---|---|---|
| `dkt portkiller` | `pk` | what's using port 3000? kill it |
| `dkt serve` | `sv` | static server with CORS, SPA mode, LAN URL, `--open` |
| `dkt http` | `req` | HTTP requests with pretty JSON, timing, headers, downloads |
| `dkt net` | | `ip` (local/public), `dns`, `check host:port` |

### Project & Code
| Command | Alias | What it does |
|---|---|---|
| `dkt repostats` | `rs` | lines per language, biggest files, git activity, health check |
| `dkt tree` | `tr` | pretty tree, respects .gitignore, `--sizes`, `--copy` |
| `dkt find` | `fd` | project-wide search (regex, context lines) + find files + safe find & replace |
| `dkt todo` | `td` | every TODO / FIXME / HACK with file:line |
| `dkt secrets` | `sec` | scan for leaked API keys / tokens / private keys (CI-friendly exit code) |
| `dkt clean` | `cl` | delete node_modules, `__pycache__`, caches with sizes + confirmation |
| `dkt du` | | what's eating my disk, with bars |
| `dkt watch` | `w` | re-run any command when files change |
| `dkt bench` | `bn` | benchmark / compare commands |
| `dkt env` | | env vars (secrets masked), PATH doctor, `.env` vs `.env.example` |
| `dkt ignore` | `gi` | .gitignore generator (python, node, unity, minecraft, godot...) |
| `dkt license` | `lic` | LICENSE file (MIT, ISC, BSD, Unlicense) |
| `dkt init` | `new` | scaffold python / node / web projects with git + license |

### Git
| Command | What it does |
|---|---|
| `dkt gx log` | compact colored graph |
| `dkt gx branches [--prune]` | branch overview, delete merged branches |
| `dkt gx undo` / `wip` / `amend` / `sync` / `who` | everyday shortcuts |
| `dkt changeloggen` (`clg`) | CHANGELOG.md from conventional commits |

### AI helpers
| Command | What it does |
|---|---|
| `dkt projectcontextpacker` (`pcp`) | pack a project into one AI-prompt file, with token counts |
| `dkt commitwriter` (`cw`) | commit messages from your diff using local Ollama |

### Generate & Convert
| Command | Alias | What it does |
|---|---|---|
| `dkt gen` | `g` | `uuid` (v4/v7), `ulid`, `password`, `token`, `id`, `lorem`, `slug` |
| `dkt enc` | `e` | base64 / url / hex / html encode & decode |
| `dkt jwt` | | decode a JWT, shows expiry |
| `dkt hash` | `h` | md5/sha*/blake2, files, `--verify`, `--hmac` |
| `dkt time` | `tm` | epoch <-> date, date math, differences |
| `dkt color` | `col` | hex/rgb/hsl, live swatches, contrast ratio, palettes |

### Data & Text
| Command | Alias | What it does |
|---|---|---|
| `dkt json` | `js` | `fmt`, `min`, `get a.b[0]`, `keys`, `flat`, `csv`, `validate` (forgives comments / trailing commas) |
| `dkt regex` | `rx` | highlighted matches, named groups, `--replace` |
| `dkt cron` | | explain a cron expression + next runs |
| `dkt snip` | | personal snippet notebook (`add` / `get --copy` / `ls` / `rm`) |

### System & dkt itself
`dkt doctor` (system info + which dev tools you have), `dkt update`, `dkt config`, `dkt completion`, `dkt menu`, `dkt about`.

## Handy patterns
```bash
dkt js fmt --paste --copy          # clean up JSON from your clipboard
cat resp.json | dkt js get data.items[0].id
dkt sv --open --spa                # serve the folder, SPA fallback, open browser
dkt w -c "pytest -q" --clear       # tests on every save
dkt sec --json || echo "secrets found"   # CI gate
dkt tr --copy                      # paste a project tree into docs / AI chats
dkt new python mytool              # new project, ready to go
```

## Tab completion
```powershell
dkt completion powershell | Out-String | Add-Content $PROFILE   # PowerShell
```
```bash
eval "$(dkt completion bash)"      # add to ~/.bashrc (zsh: dkt completion zsh)
```

## Settings
`dkt config set author "Your Name"` (used by `license` / `init`), `dkt config set model qwen2.5-coder:7b` (commit writer).
Env vars `DKT_<KEY>` override the file. `NO_COLOR=1` disables colors, `DKT_ASCII=1` disables unicode symbols.

## Publishing to PyPI (maintainers)
1. The PyPI package is called **`dktcli`** (set in `pyproject.toml`); the command you type is still `dkt`.
2. Run **`publish.bat`** (builds, checks, uploads with your API token) - or use the included GitHub Action
   (`.github/workflows/publish.yml`, trusted publishing) and just create a Release.
3. Bump `__version__` in `src/devkittools/__init__.py` for every release.

## Development
```bash
pip install -e .
python -m unittest discover -s tests
```
Adding a tool = one file in `src/devkittools/tools/` with a `META` tuple and a `register()` function, then add it to `MODULES` in `cli.py`.

## License
MIT
