sops-secret-access
Use when a repo stores tool config, API keys, registry URLs, environment variables, or component registry settings in SOPS-encrypted files such as components.sops.json or secrets/*.sops.json.
SKILL.mdskills/sops-secret-access/SKILL.md
GitHubSOPS Secret Access
Use the repo's encrypted source of truth when a task depends on secrets or private tool configuration. Do not infer from public fallback files if a matching *.sops.* file exists.
New SOPS payloads are JSON (*.sops.json). See ADR-0011. Decrypt existing non-JSON files if that is what the repo already has; do not add new ones.
When to Use
- A project has
components.sops.json,secrets/*.sops.json, or another SOPS-encrypted config. - A public config looks incomplete and a private registry, API, MCP server, deployment credential, or provider profile may be hidden behind SOPS.
- The task mentions shadcnblocks, private shadcn registries, registry auth, SOPS, secrets, env loading, or encrypted project config.
- A tool only shows public/default config but the repo has a likely encrypted companion file.
Core Rules
- Decrypt only the file needed for the task.
- Do not paste decrypted contents into chat, logs, commits, or generated docs.
- Prefer commands that consume decrypted data directly or print only non-secret derived facts.
- If a decrypted file is written to disk temporarily, put it in a gitignored path and remove it before finishing.
- Treat plain files like
components.jsonas fallbacks when a matchingcomponents.sops.jsonexists.
Shadcn And Shadcnblocks
For Darkmatter UI projects, private shadcn registry access may live in components.sops.json.
Use this before querying shadcn registries when the user expects shadcnblocks/private blocks:
sops -d components.sops.json
Safer inspection examples:
sops -d components.sops.json | jq -r '.registries | keys[]'
sops -d components.sops.json > /tmp/components.private.json
If a tool needs components.json, do not overwrite the checked-in public file unless the user explicitly asks. Use a temp file, a subshell, or the tool's config override if available. If no override exists and a local replacement is unavoidable, back up the public file, restore it before finishing, and verify git diff does not include decrypted values.
Common Mistakes
- Querying shadcn MCP before decrypting
components.sops.json, then concluding only public registries exist. - Printing full decrypted JSON to the user.
- Committing generated plaintext config.
- Adding secrets to
AGENTS.md, README files, examples, or tests. - Creating a new
*.sops.yaml,*.sops.yml, or.env.sops. New payloads are*.sops.json.