Mktemp D

Forbids creating temporary files or directories at hardcoded paths under `/tmp`. Always allocate a private directory with `mktemp -d` and place every temporary artifact inside it.

petr-korobeinikov Updated

File contents

mktemp-d

Never create a temporary file or directory at a hardcoded path under /tmp. Always allocate a private directory with mktemp -d and place all temporary artifacts inside it.

Why

mktemp -d returns a unique, private directory. A hardcoded path under /tmp does not — it collides with concurrent runs and any leftover state from prior runs.

Rule

One mktemp -d per logical scope, then build paths inside it:

tmpdir=$(mktemp -d)

cp something "$tmpdir/input"
do_work > "$tmpdir/output.log"

Direct substitutions

Don't Do
mkdir /tmp/work work=$(mktemp -d)
touch /tmp/out.log work=$(mktemp -d); : > "$work/out.log"
cmd > /tmp/output work=$(mktemp -d); cmd > "$work/output"
tar xf x.tar -C /tmp work=$(mktemp -d); tar xf x.tar -C "$work"

If you encounter a hardcoded /tmp/... path while editing a file, replace it with the mktemp -d idiom as part of the same edit.

petr-korobeinikov/skills/tree/main/skills/mktemp-d commit dba83568f3

Frequently asked questions

npx skillmds@latest add petr-korobeinikov/mktemp-d