From nix-tasuke
Nix writer functions (writeShellApplication, writeText, etc.) for generating scripts, text files, and data. Use when creating derivations that produce scripts or configuration files.
How this skill is triggered — by the user, by Claude, or both
Slash command
/nix-tasuke:writer-functionThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
ファイルやスクリプトを生成するderivationを作るための関数群です。
ファイルやスクリプトを生成するderivationを作るための関数群です。
Binサフィックスの違い多くのwriter関数には無印版とBinサフィックス版があります。
writeShellScript等)$outがファイルそのもの。
${myScript}でバイナリパスを直接参照できる。
Bin(writeShellScriptBin等):$out/bin/<name>にファイルを出力しmeta.mainProgramを設定する。
lib.getExe myPkgや${myPkg}/bin/<name>でパスを得る。
lib.getExeの使用を推奨します。
ファイルそのものではないので、
environment.systemPackagesやruntimeInputsに入れて$PATHに載せられます。
writeShellApplicationは名前にBinが付いていませんが$out/bin/<name>に出力するためBin系と同じ構造です。
pkgs.*)nixpkgs/pkgs/build-support/trivial-builders/default.nix に定義されています。
writeTextFile: 全テキスト系writerの基盤関数writeText name text: テキストファイルを生成writeTextDir path text: ディレクトリ構造付きでテキストファイルを生成writeScript name text / writeScriptBin name text: 実行可能スクリプト、シバンは手動で記述するwriteShellScript name text / writeShellScriptBin name text: シバン自動付与、構文チェックありwriteShellApplication: シェルスクリプト用の最高機能writerwriteCBin pname code: Cソースをコンパイルしてバイナリを生成concatTextFile: 複数ファイルを連結concatText name files: concatTextFileのラッパーconcatScript name files: 実行可能な連結ファイルを生成writeClosure paths: ランタイム依存クロージャのパス一覧を書き出すwriteDirectReferencesToFile path: 直接参照のパス一覧を書き出すwriteStringReferencesToFile string: 文字列コンテキストの依存パスを書き出すpkgs.writers.*)nixpkgs/pkgs/build-support/writers/scripts.nix
配下に定義されています。
各関数にBinサフィックス版があり、
$out/bin/に配置します。
makeScriptWriter: インタープリタ言語用スクリプトの基盤makeBinWriter: コンパイル言語用バイナリの基盤writeBash / writeBashBinwriteDash / writeDashBinwriteFish / writeFishBinwriteNu / writeNuBinwriteBabashka / writeBabashkaBinwriteGuile / writeGuileBinwriteJS / writeJSBinwriteLua / writeLuaBinwritePerl / writePerlBinwritePyPy2 / writePyPy2BinwritePyPy3 / writePyPy3BinwritePython3 / writePython3BinwriteRuby / writeRubyBinwriteFSharp / writeFSharpBinwriteHaskell / writeHaskellBinwriteNim / writeNimBinwriteRust / writeRustBinnixpkgs/pkgs/build-support/writers/data.nix に定義されています。
writeJSON name data: Nixの値をJSONファイルとして書き出すwriteTOML name data: Nixの値をTOMLファイルとして書き出すwriteYAML name data: Nixの値をYAMLファイルとして書き出すwriteShellApplicationを優先する理由シェルスクリプトを書く場合はwriteShellApplicationを優先的に使用します。
writeShellApplication {
name = "my-script";
runtimeInputs = with pkgs; [ curl jq ];
text = ''
response=$(curl -s "https://api.example.com/data")
echo "$response" | jq '.items[]'
'';
}
writeShellScript/writeShellScriptBinと比較した利点:
set -o errexit, set -o nounset, set -o pipefailが自動適用されること。
いわゆるset -euo pipefailがデフォルトで有効になります。
bashOptionsで制御可能です。runtimeInputsでPATH管理ができ、実行時依存が明示的になるruntimeEnvで環境変数を設定できるProvides behavioral guidelines to reduce common LLM coding mistakes, focusing on simplicity, surgical changes, assumption surfacing, and verifiable success criteria.
Searches, retrieves, and installs Agent Skills from prompts.chat registry using MCP tools like search_skills and get_skill. Activates for finding skills, browsing catalogs, or extending Claude.
Creates, edits, and optimizes skills for Claude Code, including drafting, evaluating with test prompts, iterating on performance, and improving skill descriptions for better triggering accuracy.
npx claudepluginhub ncaq/konoka --plugin nix-tasuke