From f7d05de4edf926e042e5af4821049277959ef262 Mon Sep 17 00:00:00 2001 From: Claude Date: Mon, 13 Jul 2026 10:10:29 +0000 Subject: [PATCH 1/2] Add terminal demo GIF to README Record a short asciinema demo of kq against the bundled example queries (version, list, show, dry-run run) and render it to docs/demo.gif with agg. Embed it near the top of the README so the tool's output is visible at a glance. Also keep the source cast (docs/demo.cast) for future re-renders. Co-Authored-By: Claude Opus 4.8 Claude-Session: https://claude.ai/code/session_01B777V3WPGhuCdFuZiHYds4 --- README.md | 2 + docs/demo.cast | 98 +++++++++++++++++++++++++++++++++++++++++++++++++ docs/demo.gif | Bin 0 -> 70389 bytes 3 files changed, 100 insertions(+) create mode 100644 docs/demo.cast create mode 100644 docs/demo.gif diff --git a/README.md b/README.md index c964542..358ca14 100644 --- a/README.md +++ b/README.md @@ -10,6 +10,8 @@ KQL CLI — query Azure Data Explorer (Kusto) from the command line. Like `jq` for JSON, but for Kusto/KQL. Run raw KQL, keep a git-versioned library of parameterized queries, and pipe results straight into your shell. +![kq demo](docs/demo.gif) + ## Installation ```bash diff --git a/docs/demo.cast b/docs/demo.cast new file mode 100644 index 0000000..36a6a04 --- /dev/null +++ b/docs/demo.cast @@ -0,0 +1,98 @@ +{"version": 2, "width": 94, "height": 34, "env": {"TERM": "xterm-256color", "SHELL": "/bin/bash"}, "title": "kq \u2014 jq for Kusto/KQL"} +[0.6, "o", "\u001b[36m~/kq\u001b[0m \u001b[32m$\u001b[0m "] +[0.645, "o", "k"] +[0.69, "o", "q"] +[0.735, "o", " "] +[0.78, "o", "-"] +[0.825, "o", "-"] +[0.87, "o", "v"] +[0.915, "o", "e"] +[0.96, "o", "r"] +[1.005, "o", "s"] +[1.05, "o", "i"] +[1.095, "o", "o"] +[1.14, "o", "n"] +[1.49, "o", "\r\n"] +[1.64, "o", "kq 1.0.0\r\n"] +[3.44, "o", "\u001b[36m~/kq\u001b[0m \u001b[32m$\u001b[0m "] +[3.485, "o", "k"] +[3.53, "o", "q"] +[3.575, "o", " "] +[3.62, "o", "l"] +[3.665, "o", "i"] +[3.71, "o", "s"] +[3.755, "o", "t"] +[4.105, "o", "\r\n"] +[4.255, "o", "\u001b[3m \u001b[0m\u001b[1;3mexamples\u001b[0m\u001b[3m \u001b[0m\r\n\u250f\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2533\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2533\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2513\r\n\u2503\u001b[1m \u001b[0m\u001b[1mQuery \u001b[0m\u001b[1m \u001b[0m\u2503\u001b[1m \u001b[0m\u001b[1mDescription \u001b[0m\u001b[1m \u001b[0m\u2503\u001b[1m \u001b[0m\u001b[1mParams \u001b[0m\u001b[1m \u001b[0m\u2503\r\n\u2521\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2547\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2547\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2529\r\n\u2502\u001b[36m \u001b[0m\u001b[36mcolumns\u001b[0m\u001b[36m \u001b[0m\u2502 List distinct values in a column \u2502\u001b[2m \u001b[0m\u001b[2mtable, column, hours\u001b[0m\u001b[2m \u001b[0m\u2502\r\n\u2502\u001b[36m \u001b[0m\u001b[36mcount \u001b[0m\u001b[36m \u001b[0m\u2502 Count rows in a table (with optional time filter) \u2502\u001b[2m \u001b[0m\u001b[2mtable, hours \u001b[0m\u001b[2m \u001b[0m\u2502\r\n\u2502\u001b[36m \u001b[0m\u001b[36msample \u001b[0m\u001b[36m \u001b[0m\u2502 Get sample rows from a table \u2502\u001b[2m \u001b[0m\u001b[2mtable, count \u001b[0m\u001b[2m \u001b[0m\u2502\r\n\u2502\u001b[36m \u001b[0m\u001b[36mschema \u001b[0m\u001b[36m \u001b[0m\u2502 Show schema for a table \u2502\u001b[2m \u001b[0m\u001b[2mtable \u001b[0m\u001b[2m \u001b[0m\u2502\r\n\u2502\u001b[36m \u001b[0m\u001b[36mtables \u001b[0m\u001b[36m \u001b[0m\u2502 List all tables in the database \u2502\u001b[2m \u001b[0m\u001b[2m- \u001b[0m\u001b[2m \u001b[0m\u2502\r\n\u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518\r\n\r\n"] +[6.055, "o", "\u001b[36m~/kq\u001b[0m \u001b[32m$\u001b[0m "] +[6.1, "o", "k"] +[6.145, "o", "q"] +[6.19, "o", " "] +[6.235, "o", "s"] +[6.28, "o", "h"] +[6.325, "o", "o"] +[6.37, "o", "w"] +[6.415, "o", " "] +[6.46, "o", "e"] +[6.505, "o", "x"] +[6.55, "o", "a"] +[6.595, "o", "m"] +[6.64, "o", "p"] +[6.685, "o", "l"] +[6.73, "o", "e"] +[6.775, "o", "s"] +[6.82, "o", "."] +[6.865, "o", "s"] +[6.91, "o", "a"] +[6.955, "o", "m"] +[7.0, "o", "p"] +[7.045, "o", "l"] +[7.09, "o", "e"] +[7.44, "o", "\r\n"] +[7.59, "o", "\u256d\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u256e\r\n\u2502 \u001b[1mexamples.sample\u001b[0m \u2502\r\n\u2570\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 safe \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u256f\r\n\u001b[2mDescription:\u001b[0m Get sample rows from a table\r\n\u001b[2mSource:\u001b[0m \u001b[35m/home/user/kq/src/kq/queries/\u001b[0m\u001b[95mexamples.yaml\u001b[0m\r\n\r\n\u001b[2mParameters:\u001b[0m\r\n \u001b[31m*\u001b[0mtable: Table name\r\n count: Number of rows \u001b[1m(\u001b[0mdefault: \u001b[1;36m10\u001b[0m\u001b[1m)\u001b[0m\r\n\r\n\u001b[2mQuery:\u001b[0m\r\n\u001b[38;5;198;48;5;16m{\u001b[0m\u001b[38;5;81;48;5;235mtable\u001b[0m\u001b[38;5;198;48;5;16m}\u001b[0m\u001b[48;5;235m \u001b[0m\r\n\u001b[38;5;204;48;5;235m|\u001b[0m\u001b[38;5;231;48;5;235m \u001b[0m\u001b[38;5;231;48;5;235mtake\u001b[0m\u001b[38;5;231;48;5;235m \u001b[0m\u001b[38;5;198;48;5;16m{\u001b[0m\u001b[38;5;81;48;5;235mcount\u001b[0m\u001b[38;5;198;48;5;16m}\u001b[0m\u001b[48;5;235m \u001b[0m\r\n\u001b[48;5;235m \u001b[0m\r\n\r\n\u001b[2mExample:\u001b[0m kq run examples.sample MyTable \u001b[1;36m5\u001b[0m\r\n"] +[9.39, "o", "\u001b[36m~/kq\u001b[0m \u001b[32m$\u001b[0m "] +[9.435, "o", "k"] +[9.48, "o", "q"] +[9.525, "o", " "] +[9.57, "o", "r"] +[9.615, "o", "u"] +[9.66, "o", "n"] +[9.705, "o", " "] +[9.75, "o", "e"] +[9.795, "o", "x"] +[9.84, "o", "a"] +[9.885, "o", "m"] +[9.93, "o", "p"] +[9.975, "o", "l"] +[10.02, "o", "e"] +[10.065, "o", "s"] +[10.11, "o", "."] +[10.155, "o", "s"] +[10.2, "o", "a"] +[10.245, "o", "m"] +[10.29, "o", "p"] +[10.335, "o", "l"] +[10.38, "o", "e"] +[10.425, "o", " "] +[10.47, "o", "M"] +[10.515, "o", "y"] +[10.56, "o", "T"] +[10.605, "o", "a"] +[10.65, "o", "b"] +[10.695, "o", "l"] +[10.74, "o", "e"] +[10.785, "o", " "] +[10.83, "o", "5"] +[10.875, "o", " "] +[10.92, "o", "-"] +[10.965, "o", "-"] +[11.01, "o", "d"] +[11.055, "o", "r"] +[11.1, "o", "y"] +[11.145, "o", "-"] +[11.19, "o", "r"] +[11.235, "o", "u"] +[11.28, "o", "n"] +[11.63, "o", "\r\n"] +[11.78, "o", "\u001b[2mQuery \u001b[0m\u001b[1;2m(\u001b[0m\u001b[2mdry run\u001b[0m\u001b[1;2m)\u001b[0m\u001b[2m:\u001b[0m\r\n\u001b[38;5;231;48;5;235mMyTable\u001b[0m\u001b[48;5;235m \u001b[0m\r\n\u001b[38;5;204;48;5;235m|\u001b[0m\u001b[38;5;231;48;5;235m \u001b[0m\u001b[38;5;231;48;5;235mtake\u001b[0m\u001b[38;5;231;48;5;235m \u001b[0m\u001b[38;5;141;48;5;235m5\u001b[0m\u001b[48;5;235m \u001b[0m\r\n"] +[14.28, "o", "\u001b[36m~/kq\u001b[0m \u001b[32m$\u001b[0m "] diff --git a/docs/demo.gif b/docs/demo.gif new file mode 100644 index 0000000000000000000000000000000000000000..5eb8fb81d3524d8e5b660b825af9b351bbdf3210 GIT binary patch literal 70389 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%0Dq3kW0=@*B3MBnx6oj@bnU%Gg9TCX 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 z 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 z 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 literal 0 HcmV?d00001 From 4404136a68e76194793c1b498670971fb763720c Mon Sep 17 00:00:00 2001 From: Claude Date: Sat, 26 Sep 2026 21:43:10 +0000 Subject: [PATCH 2/2] Add release notes and launch post drafts to docs/ Keep the v1.0.0 GitHub Release body and the launch post drafts in the repo alongside the demo recording, so they are versioned with the project instead of living only in a scratch directory. Co-Authored-By: Claude Opus 5 Claude-Session: https://claude.ai/code/session_01B777V3WPGhuCdFuZiHYds4 --- docs/LAUNCH_POST.md | 118 +++++++++++++++++++++++++++++++++++ docs/RELEASE_NOTES_v1.0.0.md | 56 +++++++++++++++++ 2 files changed, 174 insertions(+) create mode 100644 docs/LAUNCH_POST.md create mode 100644 docs/RELEASE_NOTES_v1.0.0.md diff --git a/docs/LAUNCH_POST.md b/docs/LAUNCH_POST.md new file mode 100644 index 0000000..4492ad5 --- /dev/null +++ b/docs/LAUNCH_POST.md @@ -0,0 +1,118 @@ +# Launch post drafts + +Three formats below: a blog/dev.to post, short Reddit/forum variants, and a +one-line social post. Pick per venue; they say the same thing at different +lengths. + +--- + +## A) Blog / dev.to — "I built jq for Kusto" + +**Title:** I built `jq` for Kusto — a tiny CLI for querying Azure Data Explorer + +I run a lot of KQL against Azure Data Explorer, and I kept hitting the same +friction: the web UI is great for exploring but terrible for automation, and +`az kusto` isn't built for quick, pipeable, everyday queries. I wanted the thing +`jq` is for JSON — small, fast, lives in the terminal, composes with pipes. + +So I built **`kq`**. + +```bash +pip install kql-cli # the command is `kq` + +kq config set default_cluster https://mycluster.kusto.windows.net +kq config set default_database mydb +kq auth login + +kq "MyTable | take 5" +kq "MyTable | summarize count() by bin(Timestamp, 1h)" -f json | jq . +``` + +The part I actually care about most is **saved, git-versioned queries**. You +write parameterized queries in YAML and run them by name: + +```yaml +# ~/.config/kq/queries/ops.yaml +queries: + - name: errors + description: Recent errors for a service + parameters: + - {name: service, required: true} + - {name: hours, default: "24"} + query: | + Traces + | where Timestamp > ago({hours}h) + | where Service == '{service}' + | where Level == 'Error' + | order by Timestamp desc +``` + +```bash +kq run ops.errors checkout 6 +``` + +Queries resolve from a project-local `./.kq/`, then your user queries, then +bundled examples — so a repo can ship its own query library, and your personal +queries never get clobbered by an update. + +A few other things it does: + +- **Auth that just works** — service principal → Azure CLI → cached device code, + with ~90-day silent refresh (handy on WSL/headless). +- **`table` / `json` / `csv`** output — the JSON pipes straight into `jq`. +- **Query safety levels** (`safe` / `caution` / `dangerous`) to keep expensive + full-table scans honest. +- **Plays nicely with LLM coding agents** — clean, deterministic output. + +It's MIT-licensed, tested on Python 3.9–3.13, and on PyPI as `kql-cli`. + +Repo: https://github.com/cptfinch/kq + +If you work with Kusto/ADX, I'd love feedback — especially on what saved-query +patterns you'd want built in. + +--- + +## B) Reddit / Hacker News "Show" variants + +**Title options** +- Show: kq — jq for Kusto/KQL (query Azure Data Explorer from the CLI) +- I built a small CLI for querying Azure Data Explorer (like jq, but for KQL) + +**Body (r/AZURE, r/dataengineering, r/kusto):** + +I kept wanting a `jq`-style tool for KQL — something small and pipeable for +querying Azure Data Explorer from the terminal, instead of the web UI or +`az kusto`. So I made `kq`. + +- `kq "MyTable | take 5"` for raw KQL, `-f json|csv` for output +- Saved, parameterized queries in YAML that you can git-version per project +- Auth chain: service principal → Azure CLI → cached device code (~90-day refresh) +- Query safety levels to flag expensive scans + +`pip install kql-cli` (the command is `kq`). MIT, tested on 3.9–3.13. + +https://github.com/cptfinch/kq + +Curious what saved-query patterns people would find useful — and how others are +scripting against ADX today. + +--- + +## C) One-liner (X / Mastodon / LinkedIn) + +`kq` — jq, but for Kusto/KQL. Query Azure Data Explorer from the terminal: raw +KQL, git-versioned saved queries, json/csv output, sane auth. + +`pip install kql-cli` · MIT · https://github.com/cptfinch/kq + +--- + +## Posting notes + +- Best-fit communities: r/AZURE, r/dataengineering, r/kusto, the Azure Data + Explorer community, and Show HN. +- Post *after* PyPI is live so `pip install kql-cli` works from the first click. +- The README demo GIF (`docs/demo.gif`) is worth embedding in the dev.to post + too — a moving demo roughly doubles conversion. +- Lead with the `jq` analogy every time; it's the fastest way people "get it." diff --git a/docs/RELEASE_NOTES_v1.0.0.md b/docs/RELEASE_NOTES_v1.0.0.md new file mode 100644 index 0000000..05ae02f --- /dev/null +++ b/docs/RELEASE_NOTES_v1.0.0.md @@ -0,0 +1,56 @@ +# kq v1.0.0 — first public release + +Paste this into the GitHub Release body when tagging `v1.0.0`. + +--- + +`kq` is a KQL CLI for Azure Data Explorer (Kusto). Like `jq` for JSON, but for +KQL — run raw queries, keep a git-versioned library of parameterized queries, +and pipe results straight into your shell. + +## Install + +```bash +pip install kql-cli +``` + +The command is `kq`. (The PyPI package is `kql-cli` because `kq` was already +taken on PyPI by an unrelated project.) + +## Quick start + +```bash +kq config set default_cluster https://mycluster.westeurope.kusto.windows.net +kq config set default_database mydb +kq auth login + +kq "MyTable | take 5" # raw KQL +kq "MyTable | take 5" -f json # or -f csv +kq list # saved queries +kq run examples.sample MyTable 10 # run a saved query +``` + +## Highlights + +- **Raw KQL and saved queries** — run KQL directly, or curate reusable, + parameterized queries in YAML and run them by name. +- **Git-versionable query libraries** — queries resolve from `./.kq/` (project), + `~/.config/kq/queries/` (user), then bundled examples. Your queries are never + overwritten by updates. +- **Multi-cluster config** — named clusters, XDG-compliant config in + `~/.config/kq/config.yaml`. +- **Flexible auth** — service principal → Azure CLI → cached device code, with + ~90-day silent token refresh (great for WSL/headless). +- **Output formats** — `table`, `json`, `csv`. +- **Query safety levels** — mark queries `safe` / `caution` / `dangerous` to + keep expensive full-table scans honest. +- **LLM-native & Unix-friendly** — clean, pipeable output that works well with + Claude Code, Copilot, scripts, and automation. + +## Quality + +- Test suite + `ruff` linting. +- GitHub Actions CI across Python 3.9–3.13. +- Published via PyPI Trusted Publishing (OIDC — no stored tokens). + +**Full changelog:** see [CHANGELOG.md](../CHANGELOG.md).