feat(skill): add Miller (mlr) as recognized tool#14
Conversation
There was a problem hiding this comment.
Code Review
This pull request integrates Miller (mlr) into the data-tools skill, updating the version to 1.4.0 and adding a comprehensive mlr-cookbook.md reference. Review feedback identified several technical inaccuracies in the new documentation, such as the use of non-standard shorthand flags, incorrect jq logic for retrieving record keys, and misleading descriptions for header-suppression commands. Suggestions were also provided to ensure anti-pattern examples fully replicate the logic of the tools they are intended to replace.
Dependency Review✅ No vulnerabilities or license issues or OpenSSF Scorecard issues found.Scanned FilesNone |
|
You are seeing this message because GitHub Code Scanning has recently been set up for this repository, or this pull request contains the workflow file for the Code Scanning tool. What Enabling Code Scanning Means:
For more information about GitHub Code Scanning, check out the documentation. |
There was a problem hiding this comment.
Pull request overview
Adds Miller (mlr) to the data-tools skill so agents can handle JSONL/NDJSON streams and perform cross-format, DSL-based transformations (stats/joins/in-place edits) alongside existing jq/yq/dasel/qsv guidance.
Changes:
- Extends
SKILL.mdtool-selection guidance and anti-patterns to includemlr, and bumps the skill version to1.4.0. - Adds a new
mlrcookbook reference with common recipes (conversion, DSL transforms, stats/group-by, joins, in-place edits). - Updates repo-level metadata/docs (
README.md,AGENTS.md,.claude-plugin/plugin.json,composer.json) to reference the new tool and version.
Reviewed changes
Copilot reviewed 6 out of 6 changed files in this pull request and generated 4 comments.
Show a summary per file
| File | Description |
|---|---|
| skills/data-tools/SKILL.md | Adds mlr to compatibility/allowed-tools and expands selection/patterns/anti-patterns + version bump. |
| skills/data-tools/references/mlr-cookbook.md | New cookbook documenting Miller usage patterns for JSONL and multi-format workflows. |
| README.md | Lists mlr among supported tools and adds the new cookbook to the structure overview. |
| AGENTS.md | Updates repo structure and tool-selection rules to include JSONL/mlr. |
| .claude-plugin/plugin.json | Bumps plugin version and description to include mlr/JSONL. |
| composer.json | Updates package description to mention mlr. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
Miller fills two gaps in the data-tools skill: - JSONL / NDJSON streams: jq's single-document orientation makes line-delimited record processing awkward; mlr handles JSONL natively. - CSV/TSV with cross-format pipelines and DSL transforms: qsv remains the pick for big-file speed and indexed joins, but mlr's verb chains (filter, put, stats1, join, in-place -I) and format interchange (--c2j, --j2c, --c2t, ...) cover workflows qsv doesn't. Changes: - SKILL.md: add JSONL row + mlr alternative for CSV/TSV in the Tool Selection table; add Key Patterns block; add one Anti-Pattern entry (grep/awk on JSONL -> mlr); add References row; add docs link. - references/mlr-cookbook.md: new cookbook (basic usage, format conversions, DSL filter/put, stats1 + group-by, joins, in-place editing, multi-file flows, anti-patterns, idioms table). - compatibility + allowed-tools: list mlr as optional. - AGENTS.md, README.md: mirror the new tool in repo-level docs. - Bump SKILL.md and plugin.json to 1.4.0 (minor: additive tool). Signed-off-by: Sebastian Mendel <github@sebastianmendel.de>
Versioning belongs to release work, not feature PRs. Restore SKILL.md and plugin.json to 1.3.1 (matching main). The substantive mlr content (cookbook, anti-pattern guidance, references) remains. Reviewer-driven fixes: SKILL.md - Replace placeholder `mlr --i<x> --o<y> cat` with concrete `mlr --icsv --ojson cat` (Copilot: --i<from>/--o<to> are not literal valid flags). - Move `-I` global option before the `put` verb chain: `mlr -I --csv put '...'` (Copilot: `-I` after the verb may be parsed as a filename). - Drop `--c2l` shorthand from the comment list (not a standard Miller shorthand per Gemini review). references/mlr-cookbook.md - "List column names" examples corrected: `head -n 1 data.csv` for plain CSV headers, and `mlr --c2j ... | jq '.[0] | keys'` for JSON conversion (Miller emits an array, so `jq 'keys'` returned indices; targeting `.[0]` returns field names). - Replace `mlr --c2l` with explicit `mlr --icsv --ojsonl`. - Cross-format join example now actually demonstrates a cross-format join (left JSONL stream against a CSV lookup with `-i csv`), matching the prose. - Idioms table label "Header-only output" -> "Data-only output (no headers)" -- `--headerless-csv-output` suppresses the header rather than emitting it. SKILL.md remains <=500 words (validator cap). Signed-off-by: Sebastian Mendel <github@sebastianmendel.de>
Summary
Adds Miller (
mlr) to the data-tools skill. Two clear gaps motivated this:-s/--stream.mlrhandles JSONL natively with the same verb chains as CSV.qsvremains the right pick for big-file speed and indexed joins, butmlr's verbs (filter,put,stats1,join, in-place-I) and format interchange (--c2j,--j2c,--c2t, ...) cover workflowsqsvdoesn't.Changes
skills/data-tools/SKILL.mdmlr).mlrlisted as alternative for CSV/TSV alongsideqsvwith a one-sentence guide on when to prefer which.mlr(format conversion, DSL, stats, joins, in-place edit, group-by).grep/awkon JSONL ->mlr --jsonl filter ....compatibility:andallowed-tools:extended withmlr.skills/data-tools/references/mlr-cookbook.md(new, ~135 lines) — mirrors the style ofjq-cookbook.md/yq-cookbook.md. Sections: basic usage, format conversion, DSL filter/put, stats + group-by, joins, in-place editing, multi-file flows, anti-patterns, common idioms table.AGENTS.md,README.md— keep repo-level docs in sync with the new tool and cookbook.SKILL.md+.claude-plugin/plugin.json(additive tool = minor).composer.json— description updated to mentionmlr.Test plan
bash scripts/verify-harness.sh --format=text --status— Level 2 complete (unchanged).bash Build/Scripts/check-plugin-version.sh— versions in sync at 1.4.0.markdownlint-cli2 'skills/data-tools/**/*.md' 'AGENTS.md' 'README.md'— 0 errors.jq . .claude-plugin/plugin.json composer.json— valid JSON.git log --show-signatureshowsGood "git" signature).