SD-006 — Hardcoded Secret
SD-006 flags a credential written into the skill's own files: an AWS access key, a GitHub or Slack token, an sk- API key, or a long value assigned to a secret-shaped name.
What it matches
Credential-shaped literals committed into the skill: AWS access keys, GitHub and Slack tokens, sk- API keys, and long values assigned to a secret-shaped name.
Why it matters
A key committed into a skill is a key in every copy of that skill — every clone, every fork, every cache, and the git history of all of them. In a public repository it is readable by anyone, including the crawlers that harvest exactly these formats continuously; in a private one it is readable by everyone with repository access, which is a far wider set than the people meant to hold the credential. Deleting the line afterwards does not help, because the value stays in history.
Example
yaml
# In the skill's committed config: api_key: "sk-EXAMPLEEXAMPLEEXAMPLEEXAMPLEEXAMPLE" aws_access_key_id: AKIAEXAMPLEEXAMPLE12
Placeholders here; in a real skill this is the credential itself, committed.
How to fix it
Read the value from the environment or a secrets manager at run time and keep only the variable name in the file. If a real key has already been committed, rotate it first and remove it second — it survives in the repository's history and in every clone taken before the removal.
Known false positives
Placeholder and example keys. We do not verify a secret is live, because verifying would mean using it.
Standards mapping
Prevalence
Pattern SD-006 was detected in 59 of 16475 public skills scanned as of 11 September 2026.
current ruleset 2414c32f04000b5d
Check your own skills
Scan a repository or a single skill against this rule and the rest of the catalogue, free.