Skip to content

tgfjt/snippet

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

6 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

snipl

コマンドや手順を保存・検索・実行する CLI。 「作ったけど存在を忘れる」問題を解決する。

Install

cargo install --path .

バイナリ名は snippet

Usage

エントリを追加する

snippet add

対話的に name, description, command, tags, body を入力する。

検索する

snippet search           # 全件表示
snippet search ffmpeg    # キーワードで絞り込み(name, description, tags, command, body を部分一致)
snippet search --full    # command / body も表示

実行する

snippet run loudnorm -- input=voice.wav output=out.wav

command フィールドの {{placeholder}} を引数で置換して実行する。 デフォルト値つき ({{quality:80}}) は引数省略可。未指定のプレースホルダは対話的に聞く。 command がないエントリは body を表示するだけ。

その他

snippet get <name>       # YAML 形式で出力(MCP やスクリプト連携用)
snippet tags             # タグ一覧と使用数
snippet edit <name>      # $EDITOR で編集

Data file

~/.snippets.yml に YAML で管理。手書き編集 OK。

- name: loudnorm
  description: 音量をノーマライズする(EBU R128)
  command: "ffmpeg -i {{input}} -af loudnorm=I=-14:TP=-1:LRA=11 {{output}}"
  tags: [ffmpeg, audio]

- name: git-worktree-agent
  description: エージェント用にworktreeを切る手順
  tags: [git, agent]
  body: |
    1. git worktree add ../project-agent feature/xxx
    2. cd ../project-agent
    3. claude -p "..."
    4. 終わったら git worktree remove ../project-agent

環境変数 SNIPPET_FILE でファイルパスを上書きできる。

Design decisions

  • append 方式の書き込みadd はファイル末尾に生テキストで追記する。serde_yaml で全体を再シリアライズしないので、手書きのコメントが消えない
  • edit だけ全体再シリアライズ — エントリの差し替えが必要なため、コメントは失われる
  • regex 非依存 — プレースホルダのパースは手動。依存を減らすため

About

「作ったけど存在を忘れる」問題を解決できるといいなぁ

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages