Skip to main content

envops

Safely view, modify, and copy .env files (local or remote over SSH) with secrets masked by default. Use this skill for ANY operation involving .env files or environment-variable files — reading, listing, diffing, copying, setting values, checking a key, syncing env between machines — even if the user just says "look at the .env" or "copy the env to the server". Never read a .env file with cat, Read, grep, or any other tool; always go through envops.

소스 정보

저장소
reorx/envops
최근 소스 활동
2026년 7월 26일 16:15
감지된 SKILL.md 언어
영어
스타
44
포크
3

설치 방법

기본적으로 소스를 먼저 확인하는 Prompt가 선택됩니다. 직접 명령으로 전환하거나 로컬 사본을 다운로드할 수도 있습니다.

소스 파일 검토

설치 여부를 결정하기 전에 SKILL.md와 SkillsMP에 표시된 보조 파일을 읽어 보세요.

SKILL.md 표시 중

SKILL.md
소스 지침 · 읽기 전용 미리보기
name
envops
description
Safely view, modify, and copy .env files (local or remote over SSH) with secrets masked by default. Use this skill for ANY operation involving .env files or environment-variable files — reading, listing, diffing, copying, setting values, checking a key, syncing env between machines — even if the user just says "look at the .env" or "copy the env to the server". Never read a .env file with cat, Read, grep, or any other tool; always go through envops.
# envops — safe .env operations `envops` masks secret-looking values in all output, so you can inspect env files without leaking credentials into the conversation, logs, or context. ## Install (if `envops` is not on PATH) ```sh uv tool install envops # preferred (published on PyPI); or: pipx/pip install envops # no uv/pip: it's a stdlib-only single file (python3 shebang, needs 3.10+) curl -fsSL https://raw.githubusercontent.com/reorx/envops/master/envops.py -o ~/.local/bin/envops && chmod +x ~/.local/bin/envops ``` ## Hard rules 1. **Never read a .env file directly** — no `cat`, `head`, `grep`, `sed`, and no Read tool. Every leaked value stays in the transcript forever. Use `envops show` (masked) instead. 2. **Never write a .env file directly** — no `echo >>`, no Edit/Write tool. Use `envops set` or `envops copy`; they preserve comments, formatting, and unrelated lines. 3. **`--unsafe` is a last resort.** Before using it, think twice: can `show` (masked), `list-keys`, or `copy` solve the task without exposing the value? Only use `--unsafe` when the raw value is genuinely required (e.g. the user explicitly asks for it, or a value must be passed to another program) and no other way exists. Prefer piping (`envops read-value ... --unsafe | some-command`) over printing to the terminal. 4. **Pass secrets in via stdin**, never as command-line arguments: `pbpaste | envops set ...`, not `echo 'secret' | ...` typed literally. ## Commands ```sh # view (secrets masked, safe by default) envops show ./app.env # all pairs, masked envops show ./app.env -k FOO BAR # only these keys envops list-keys ./app.env # key names only # copy between files (prints masked diff: + added, ~ updated) envops copy ./src.env ./dest.env -k FOO BAR # selected keys envops copy ./src.env ./dest.env --full # everything # write a value (stdin only; updates in place or appends) pbpaste | envops set ./app.env -k API_SECRET printf 'true' | envops set ./app.env -k DEBUG # delete key(s) — fails without touching the file if any key is missing envops delete ./app.env -k OLD_KEY # remote files over SSH — any file arg can be [user@]host:/path envops show deploy@web1:/app/.env envops copy ./local.env deploy@web1:/app/.env --full envops copy deploy@web1:/app/.env ./local.env -k DATABASE_URL # --unsafe: LAST RESORT, only when masked output cannot solve the task envops show ./app.env -k FOO --unsafe # expose specific keys envops read-value ./app.env -K FOO --unsafe # raw value (fails without --unsafe) ``` ## Notes - Duplicate keys: last occurrence wins (dotenv semantics). Writes quote values containing spaces/special chars. - Remote writes are atomic and keep file permissions; remote content never touches the local disk in plaintext. - A masked value like `sk******ij` keeps first/last 2 chars — usually enough to verify which credential it is without exposing it.
GitHub에서 보기