oss-tools

小さく鋭い CLI ツール集

WindowsmacOSLinux

毎日の開発に効く、ひとつのことだけをきれいにこなす小さな CLI 群。 どれも同じかたち — 純関数のコア、薄い CLI、ほぼ依存なし。 Windows / macOS / Linux で同じように動きます。

GitHub で見る ツール一覧

つくりかたの方針

焦点を絞る

ひとつの仕事をきちんと。寄せ集めのフラグも、設定ファイルも、驚きもなし。

クロスプラットフォーム

Windows を後回しにしない。どの OS でも同じ挙動を最初から狙います。

pure-core + 薄い CLI

ロジックは純関数のコアに、CLI は薄い配線だけ。テストしやすく、読みやすい。

依存は最小

typer + 標準ライブラリ。コンパイル不要、重いインストールもなし。

ローカル完結

ネットワークなし、アカウントなし、テレメトリなし。データは手元のマシンに留まります。

テスト済み

pytest でテストファーストに開発。各ツールが数十のテストを通して出荷されます。

ツール一覧

$ rcmd — 個人コマンド知識ベース

シェル履歴から「残す価値のあるコマンド」をキュレーション。{{プレースホルダー}} 置換・タグ・全文検索で素早く呼び出し、そのまま実行。ローカル TOML 一枚、依存 1 つ。

uv tool install "git+https://github.com/ymatsuza/rcmd.git"

詳しく見る GitHub

$ rcopy — 除外付きクロスプラットフォーム copy

gitignore 風の --exclude / --include が全 OS で同じに効く再帰コピー。--dry-run で実行前プレビュー。Windows の Copy-Item -Recurse -Exclude 破綻・robocopyrsync の隙間を埋めます。

uv tool install "git+https://github.com/ymatsuza/rcopy.git"

GitHub

ツールは順次ふやしていきます。

さわってみる

rcmd — 残す・探す・呼び出す

# プレースホルダー付きで保存
rcmd save "docker run --rm -it -v {{path}}:/work {{image}} bash" -d "作業ディレクトリをマウント" -t docker

# 履歴から fzf で選んで保存 / 検索して呼び出し
rcmd history --unique --reverse | fzf | rcmd save -d "説明" -t imported
rcmd get k3f9 --set path=. --set image=alpine

rcopy — 除外付きで安全にコピー

# gitignore 風の除外。まず --dry-run で確認
rcopy ./project ./backup -e node_modules -e "*.log" -e "build/" --dry-run

# .gitignore をそのまま使う / 既存を上書きしない
rcopy ./project ./backup --exclude-from .gitignore --no-clobber

共通の約束

  • Python 3.11 / uv / Typer / pytest — どのツールも同じスタック
  • pure-core + 薄い CLI — テストで完全検証、実機で実証
  • ローカル完結・依存最小 — ネットワーク不要、典型的に依存は typer のみ
  • MIT ライセンス — それぞれ独立したリポジトリで公開

各ツールは個別リポジトリで配布。必要なものだけ入れられます。

oss-tools

Small, sharp CLI tools

WindowsmacOSLinux

A growing set of focused command-line tools for everyday dev work — each one does a single thing and gets out of your way. Same shape every time: a pure-function core, a thin CLI, almost no dependencies. They run the same on Windows, macOS, and Linux.

View on GitHub The tools

The approach

Focused

One job, done well. No grab-bag flags, no config files, no surprises.

Cross-platform

Windows is a first-class target, not an afterthought. Same behaviour everywhere.

Pure-core + thin CLI

Logic lives in pure functions; the CLI is a thin wrapper. Easy to test, easy to read.

Dependency-light

typer plus the standard library. Nothing compiled, nothing heavy to install.

Local-only

No network, no accounts, no telemetry. Your data stays on your machine.

Tested

Built test-first with pytest. Each tool ships with dozens of passing tests.

The tools

$ rcmd — personal command knowledge base

Curate the commands worth keeping from your shell history. Recall them with {{placeholder}} substitution, tags, and full-text search — or run them directly. Single local TOML file, one dependency.

uv tool install "git+https://github.com/ymatsuza/rcmd.git"

Learn more GitHub

$ rcopy — cross-platform copy with excludes

Recursive copy with gitignore-style --exclude / --include that work the same on every OS, plus a --dry-run preview. Fills the gaps in Windows Copy-Item -Recurse -Exclude, robocopy, and rsync.

uv tool install "git+https://github.com/ymatsuza/rcopy.git"

GitHub

More tools coming.

Try it

rcmd — keep it, find it, recall it

# Save with placeholders
rcmd save "docker run --rm -it -v {{path}}:/work {{image}} bash" -d "mount cwd" -t docker

# Import from history via fzf / recall with values
rcmd history --unique --reverse | fzf | rcmd save -d "desc" -t imported
rcmd get k3f9 --set path=. --set image=alpine

rcopy — copy safely with excludes

# gitignore-style excludes; preview with --dry-run first
rcopy ./project ./backup -e node_modules -e "*.log" -e "build/" --dry-run

# Reuse your .gitignore / never overwrite existing files
rcopy ./project ./backup --exclude-from .gitignore --no-clobber

Shared conventions

  • Python 3.11 / uv / Typer / pytest — the same stack across every tool
  • Pure-core + thin CLI — fully unit-tested, verified on real machines
  • Local-only, dependency-light — no network; typically typer is the only dependency
  • MIT licensed — each in its own repository

Each tool ships in its own repo — install only what you need.