Skip to content

feat(skill): add Miller (mlr) as recognized tool#14

Merged
CybotTM merged 2 commits into
mainfrom
feat/add-mlr
May 11, 2026
Merged

feat(skill): add Miller (mlr) as recognized tool#14
CybotTM merged 2 commits into
mainfrom
feat/add-mlr

Conversation

@CybotTM
Copy link
Copy Markdown
Member

@CybotTM CybotTM commented May 11, 2026

Summary

Adds Miller (mlr) to the data-tools skill. Two clear gaps motivated this:

  • JSONL / NDJSON — jq is single-document oriented; line-delimited record streams are awkward without -s/--stream. mlr handles JSONL natively with the same verb chains as CSV.
  • CSV/TSV with cross-format pipelines and DSL transformsqsv remains the right pick for big-file speed and indexed joins, but mlr's verbs (filter, put, stats1, join, in-place -I) and format interchange (--c2j, --j2c, --c2t, ...) cover workflows qsv doesn't.

Changes

  • skills/data-tools/SKILL.md
    • New JSONL/NDJSON row in the Tool Selection table (primary tool: mlr).
    • mlr listed as alternative for CSV/TSV alongside qsv with a one-sentence guide on when to prefer which.
    • New Key Patterns block for mlr (format conversion, DSL, stats, joins, in-place edit, group-by).
    • One new Anti-Pattern entry: grep/awk on JSONL -> mlr --jsonl filter ....
    • compatibility: and allowed-tools: extended with mlr.
    • References table + footer links: row pointing at the new cookbook.
  • skills/data-tools/references/mlr-cookbook.md (new, ~135 lines) — mirrors the style of jq-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.
  • Version bump 1.3.0 -> 1.4.0 in SKILL.md + .claude-plugin/plugin.json (additive tool = minor).
  • composer.json — description updated to mention mlr.

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.
  • Commit signed with SSH (git log --show-signature shows Good "git" signature).
  • CI: lint / harness-verify / eval-validate green on the PR.

Copilot AI review requested due to automatic review settings May 11, 2026 06:34
Copy link
Copy Markdown

@gemini-code-assist gemini-code-assist Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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.

Comment thread skills/data-tools/SKILL.md Outdated
Comment thread skills/data-tools/references/mlr-cookbook.md Outdated
Comment thread skills/data-tools/references/mlr-cookbook.md Outdated
Comment thread skills/data-tools/references/mlr-cookbook.md Outdated
Comment thread skills/data-tools/references/mlr-cookbook.md Outdated
@github-actions
Copy link
Copy Markdown

github-actions Bot commented May 11, 2026

Dependency Review

✅ No vulnerabilities or license issues or OpenSSF Scorecard issues found.

Scanned Files

None

@github-advanced-security
Copy link
Copy Markdown

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:

  • The 'Security' tab will display more code scanning analysis results (e.g., for the default branch).
  • Depending on your configuration and choice of analysis tool, future pull requests will be annotated with code scanning analysis results.
  • You will be able to see the analysis results for the pull request's branch on this overview once the scans have completed and the checks have passed.

For more information about GitHub Code Scanning, check out the documentation.

Copy link
Copy Markdown

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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.md tool-selection guidance and anti-patterns to include mlr, and bumps the skill version to 1.4.0.
  • Adds a new mlr cookbook 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.

Comment thread skills/data-tools/SKILL.md Outdated
Comment thread skills/data-tools/SKILL.md Outdated
Comment thread skills/data-tools/references/mlr-cookbook.md Outdated
Comment thread skills/data-tools/references/mlr-cookbook.md Outdated
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>
@CybotTM CybotTM merged commit 1f3a3e9 into main May 11, 2026
12 checks passed
@CybotTM CybotTM deleted the feat/add-mlr branch May 11, 2026 07:24
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants