secrets-with-git-crypt
Skill27 starsChanged 48 days agoMITView on GitHub
Manages encryption and decryption of repository secrets (such as .env or *.tfvars) using git-crypt, keeping credentials secure with parallel encrypted files. Use when managing secrets, setting up git-crypt, or encrypting/decrypting environment files.
- Reads credentials
- Installs packages
In this repository8 other files it gives its agents.
The file
Show its rules and text
We split this skill into the rules it gives an agent
15 rules. About 0 are common, 3 are distinctive, and 12 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈3
Distinctive · estimate
This author's own choices. Worth a look.
12
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Very specific: line 40
If missing, the helper script can attempt installation via sudo apt-get install git-crypt on Debian/Ubuntu systems.
- Very specific: line 41
Helper Script: Make sure the helper script at skills/secrets-with-git-crypt/scripts/git-crypt-helper.sh is executable (chmod +x).
- Distinctive: line 58
Before attempting any encryption, decryption, or secret sync operations:
- Very specific: line 64
Ensure the helper script at skills/secrets-with-git-crypt/scripts/git-crypt-helper.sh is executable (chmod +x).
- Very specific: line 65
CRITICAL PRE-EDIT RULE: Before modifying any local plaintext secret file (e.g.
- Very specific: line 70
If git-crypt is missing, offer to install it via:
- Very specific: line 77
CRITICAL KEY REUSE RULE: Always check whether the user already has a shared git-crypt symmetric key (e.g.
- Very specific: line 79
If a shared key exists (or if unlock is run without arguments when ../git-crypt-key or ~/localdev/git-crypt-key is present), run:
- Very specific: line 93
Verify that .gitattributes in the root of the project contains the filter declaration:
- Very specific: line 97
All unencrypted files (e.g.
- Distinctive: line 141
Before concluding the secrets setup or modifications, the agent MUST execute the following verification steps:
- Distinctive: line 144
Run the helper status command:
- Very specific: line 148
Ensure all parallel secret files report [OK].
- Very specific: line 158
Verify that .gitattributes has:
- Very specific: line 165
Verify that git-crypt matches the filter correctly on staged/committed .enc files:
≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
Secrets Management with Git-Crypt
This skill provides a secure, structured workflow for managing repository secrets (e.g. .env, *.tfvars, sec.json, settings.json) using git-crypt. It guides the agent to ensure sensitive credentials are never checked in as plaintext, instead maintaining parallel encrypted .enc versions checked into Git.
Table of Contents
- Triggers
- Prerequisites
- Secrets Setup and Sync Workflow
- Command Reference
- Verification Loop
Triggers
This skill MUST trigger whenever:
- The user mentions
git-crypt,encryption,decryption, orsecrets management. - The user requests to store sensitive files (like
.env,*.tfvars,settings.json, keyfiles) in the repository. - The user attempts to commit or push files that should be encrypted (e.g.
.env,*.tfvars,sec.json) to the repository. - Cloning an existing repository that contains
.encfiles (e.g..env.enc,terraform.tfvars.enc,settings.json.enc), indicating it was previously protected by git-crypt. - Initializing a new repository and setting up local/remote secret configurations.
- Changing or adding secrets credentials that need to be committed securely.
Prerequisites
- Host Environment: Unix-like operating system (e.g., Linux, WSL, macOS).
- Git: A git repository must be initialized in the current project.
- git-crypt: The
git-cryptcommand-line utility must be installed.- If missing, the helper script can attempt installation via
sudo apt-get install git-crypton Debian/Ubuntu systems.
- If missing, the helper script can attempt installation via
- Helper Script: Make sure the helper script at
skills/secrets-with-git-crypt/scripts/git-crypt-helper.shis executable (chmod +x).
Secrets Setup and Sync Workflow
Copy this checklist and track your progress:
Secrets Management Progress:
- [ ] Step 1: Verify git-crypt installation
- [ ] Step 2: Initialize or unlock the repository
- [ ] Step 3: Configure tracking and gitignore rules
- [ ] Step 4: Perform file synchronization
- [ ] Step 5: Verify environment securityStep 1: Pre-implementation safety & binary verification
Before attempting any encryption, decryption, or secret sync operations:
- Verify Git Work Tree:
- Confirm working directory is inside a Git repository (
git rev-parse --is-inside-work-tree). If not in a Git repository, halt execution and prompt the user to rungit initfirst.
- Confirm working directory is inside a Git repository (
- Verify git-crypt Binary, Helper Script & Pre-Edit Sync State (MANDATORY BEFORE EDITING):
- Ensure the helper script at
skills/secrets-with-git-crypt/scripts/git-crypt-helper.shis executable (chmod +x). - CRITICAL PRE-EDIT RULE: Before modifying any local plaintext secret file (e.g.
.env,mcp_config.json,*.tfvars), you MUST runstatus(andsync-from-encif.encis newer) first:
Why this matters: If./skills/secrets-with-git-crypt/scripts/git-crypt-helper.sh status<file>.encwas updated upstream (e.g. viagit pull) while the local git-ignored<file>is still an older copy, editing the stale<file>first updates itsmtimeto "now" and causessync-to-encto reintroduce deleted lines back into<file>.enc. Always reconcile<file>from<file>.enc(sync-from-enc) before applying edits. - If
git-cryptis missing, offer to install it via:./skills/secrets-with-git-crypt/scripts/git-crypt-helper.sh install
- Ensure the helper script at
Step 2: Unlock with an existing shared key (preferred) or initialize a new key
- CRITICAL KEY REUSE RULE: Always check whether the user already has a shared
git-cryptsymmetric key (e.g.~/localdev/git-crypt-key,../git-crypt-key, or$GIT_CRYPT_KEY_PATH) before ever runninginit, even on a brand-new repository!git-crypt unlock <key_path>works on both cloned repositories and brand-new repositories (once.gitattributesis committed on a clean working tree) to bind the repository to your existing shared key without generating a new key.- If a shared key exists (or if
unlockis run without arguments when../git-crypt-keyor~/localdev/git-crypt-keyis present), run:./skills/secrets-with-git-crypt/scripts/git-crypt-helper.sh unlock ~/localdev/git-crypt-key
- Only if no shared key exists AND the user explicitly wants to mint a brand-new key:
Decide where the secure key will be stored outside of the repository (e.g.,
~/secure-keys/my-project.key) and run:
(Note:./skills/secrets-with-git-crypt/scripts/git-crypt-helper.sh init ~/secure-keys/my-project.keyinitwill refuse to generate a new key if an existing shared key is detected at../git-crypt-keyor~/localdev/git-crypt-keyunless--forceis passed.) Ensure the key is NEVER committed to git.
Step 3: Configure tracking and gitignore rules
Verify that .gitattributes in the root of the project contains the filter declaration:
*.enc filter=git-crypt diff=git-cryptAll unencrypted files (e.g. .env, settings.json, variables.tfvars) MUST be explicitly added to .gitignore. Running the helper script sync commands automatically appends them, but you must double-check that they are not tracked as plaintext in Git.
Step 4: Perform file synchronization
- Sync to encrypted versions (before committing changes):
Copy unencrypted local files to their parallel
.encversions:- For a specific file:
./skills/secrets-with-git-crypt/scripts/git-crypt-helper.sh sync-to-enc .env - For all known
.encfiles in the repository:./skills/secrets-with-git-crypt/scripts/git-crypt-helper.sh sync-to-enc
- For a specific file:
- Sync from encrypted versions (after unlocking a cloned repository):
Restore all unencrypted plaintext files from the unlocked
.encversions:./skills/secrets-with-git-crypt/scripts/git-crypt-helper.sh sync-from-enc
Step 5: Verify environment security
Perform the steps in the Verification Loop before concluding your turn to make sure no plaintext secrets have been staged or committed.
Command Reference
The helper script supports the following commands:
| Command | Arguments | Description |
install | None | Installs git-crypt on Debian/Ubuntu/WSL platforms. |
init | [--force] <key_path> | Runs git-crypt init, sets up .gitattributes, and exports key (blocks if a shared key already exists unless --force). |
unlock | [key_path] | Unlocks the repository (new or cloned) using the specified key file or auto-detected shared key (../git-crypt-key / ~/localdev/git-crypt-key). |
sync-to-enc | [--force] [file] | Syncs unencrypted file(s) to their .enc copies (refuses if .enc is newer unless --force); prints git diff --stat HEAD and ensures .gitignore inclusion. |
sync-from-enc | [--force] [file] | Syncs/restores .enc copies back to unencrypted files (refuses if plaintext is newer unless --force). |
status | None | Evaluates installation, git-crypt initialization, and file sync states. |
Verification Loop
Before concluding the secrets setup or modifications, the agent MUST execute the following verification steps:
1. Execute Status Check
Run the helper status command:
./skills/secrets-with-git-crypt/scripts/git-crypt-helper.sh statusEnsure all parallel secret files report [OK]. If any say DO NOT MATCH, run the appropriate sync-to-enc or sync-from-enc command.
2. Verify gitignore Integrity
Confirm the unencrypted plain files are NOT tracked by Git. Run:
git ls-files --error-unmatch .env 2>/dev/null- If the command returns output (file is tracked): IMMEDIATELY run
git rm --cached <file>to remove it from staging while keeping it locally on disk.
3. Verify .gitattributes Structure
Verify that .gitattributes has:
*.enc filter=git-crypt diff=git-cryptThis ensures git-crypt transparently manages all .enc files under Git.
4. Git Crypt Status Check
Verify that git-crypt matches the filter correctly on staged/committed .enc files:
git-crypt statusThe output must show that the .enc files are encrypted.
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

