Use when reviewing UI for accessibility — WCAG 2.2 AA, keyboard nav, focus, ARIA, contrast, screen-reader semantics — even on 'is this a11y-OK?' or 'mach das barrierefrei'.
The English summary is being prepared. Showing the original description.
When picking a secrets store, designing rotation, or wiring scanning gates — multi-cloud (Vault, AWS, Azure, GCP), CI and Kubernetes — decision framework, provider deep-dives externalized.
The English summary is being prepared. Showing the original description.
See how to installReview the instructions the agent will receive before you install.
Decision framework for storing, rotating, and scanning secrets across cloud, CI, and Kubernetes. Provider deep-dives live upstream (links in § Provenance) — this skill is the predicate, not the per-vendor cookbook. Sunset-policy compliant.
Do NOT use when:
aws-infrastructure already covers the placement — route there.security-audit or threat-modeling.Ephemeral, dev-only, never leaves the laptop → .env (gitignored). Stop.
Single-cloud, single-app → that cloud's native store
(AWS Secrets Manager / Azure Key Vault /
GCP Secret Manager).
Multi-cloud OR on-prem hybrid → HashiCorp Vault (or cloud-agnostic equivalent).
CI-only (deploy keys, signing tokens) → GitHub/GitLab repo+environment secrets;
scope to environment (production/staging).
Kubernetes workload secrets → External Secrets Operator pulling from
the canonical store above; never hand-rolled
k8s `Secret` objects committed to git.
Cross-tenant / cross-org shared secret → don't. Re-architect; shared secrets are an
outage and a breach class on their own.
AI-agent / MCP-server credential → env-var indirection in the agent/MCP config
(`.mcp.json`, agent-config, CI YAML) — the
value lives in the store above; the config
holds only `${ENV_VAR}`. Never a raw key
inline, and the config path is gitignored if
it can hold one.
Application reads at boot → fetch once, hold in memory; re-fetch on rotation event.
Application reads per-request → cache with TTL ≤ rotation period / 2.
Short-lived workload (Lambda, Job) → fetch per-invocation; rely on platform IAM.
Long-lived workload → leased / dynamic credentials (Vault DB engine,
AWS IAM role) — never static creds.
Human access → no shared logins; per-user identity + audit.
Every secret MUST have:
Static secrets without a rotation mechanism are a deferred incident — refuse to merge.
Three layers, all required:
Pre-commit → gitleaks / TruffleHog / detect-secrets pre-commit hook.
CI → server-side scan on every PR; block merge on high-confidence finding.
Org policy → push-protection at the SCM (GitHub Advanced Security secret scanning,
GitLab Secret Detection); rotate any leaked secret immediately.
A leaked secret is rotated, not deleted. Git history retention defeats deletion.
Logs → mask before write; CI runners must mark secrets as masked.
Stack traces → never include secret values; sanitize at the boundary.
Error responses → never echo the secret back, even on failure.
Telemetry / APM → strip from request/response captures; allowlist headers.
The scanning gates (Step 4) are the CI/pre-commit nets. The earliest gate is
the agent itself: before it writes a credential into a tracked file or stages a
commit, the secret-vcs-guard rule runs the
secret_detector library and, on a hit,
STOPS → shows the match (file:line · kind · masked · why) → asks via numbered
options → offers the tiered alternative below. It never silently commits and
never silently strips. VCS-agnostic: the same detector runs against the diff for
git, SVN, and Mercurial (SVN/hg native hooks are server-side, a stronger but
later net). The deterministic CI backstop is check_secret_leak — the agent
gate is one layer, not the whole defense.
False positives — audited allowlist, never a global mute. Suppress a
confirmed non-secret with an inline # secret-allow marker on the line, or a
narrow entry (path or path:line) in a repo-root .secret-allow file. Each
.secret-allow entry SHOULD carry a one-line justification comment (# …) so it
is reviewable in the diff; the entry is line-scoped, so it cannot mute a new
secret elsewhere in the same file.
Tiered alternative to suggest when a secret is caught (refines Step 1 for the in-the-moment fix; cite OWASP Secrets Management Cheat Sheet + CWE-798 + 12-factor):
Solo / local, dev-only → gitignored .env + committed .env.example (keys, no values).
Team / production app → cloud secret manager (AWS/GCP/Azure) or Vault / Doppler.
Kubernetes / GitOps → SOPS (encrypt values in the committed file) or Sealed Secrets.
CI / deploy → OIDC federation to the cloud — no long-lived stored credential.
Order matters; a history rewrite does not un-leak an already-pushed secret:
git rm / a deletion commit is insufficient — the secret stays in history
(git log, blame, prior commits, clones, forks, CI logs).git filter-repo (preferred) or BFG Repo-Cleaner.Secret; that Secret is base64, not encrypted. Threat-model node access accordingly.pull_request events from forks — designs that rely on them silently break for external contributors..mcp.json, an agent-config file, or a CI workflow YAML is a committed secret — the scanning gates (Step 4) must cover those paths too, and the config should reference ${ENV_VAR}, never the literal. An MCP server that ingests untrusted content and holds a live key is the egress leg of the lethal trifecta — see lethal-trifecta-guard.ps exposes them) — use env or stdin.Secret objects committed to git — use External Secrets Operator.aws-infrastructure, security-audit, threat-modeling, security.agents/settings/contexts/skills-provenance.yml (entry: secrets-management).verify-before-complete, skill-quality, non-destructive-by-default.No reviews yet. Tell others what you thought.
No login needed. Share how it worked for you, ask a question, or note where it did not run.
No comments yet. Be the first to write one.
Use when reviewing UI for accessibility — WCAG 2.2 AA, keyboard nav, focus, ARIA, contrast, screen-reader semantics — even on 'is this a11y-OK?' or 'mach das barrierefrei'.
The English summary is being prepared. Showing the original description.
Use when defining or auditing the activation event — aha-moment selection, retention correlation, falsifiable definition. Triggers on 'what is our aha moment', 'redefine activation'.
The English summary is being prepared. Showing the original description.
Use when capturing an architectural decision — file naming, next ADR number, Status / Context / Decision / Consequences, index regen; fires even without saying 'ADR'.
The English summary is being prepared. Showing the original description.
Adversarial critique — devil's advocate, stress-test, honest teardown ('poke holes', 'be brutal', 'was hältst du davon'); explicit request only. Routine code or design review → code-review.
The English summary is being prepared. Showing the original description.
Use when reading, creating, or updating agent documentation, module docs, roadmaps, or AGENTS.md. Understands the full .augment/, agents/, and copilot-instructions structure.
The English summary is being prepared. Showing the original description.
Use for an adversarial red-team / blue-team / auditor review of an AI agent's CONFIG + behaviour (rules, skills, MCP, hooks, permissions) — attack-chain → defensive-gap list, not a code audit.
The English summary is being prepared. Showing the original description.