The skill that catches what CodeQL misses — the org-specific layer on top of community queries. Most regulated orgs have a secure-coding standards document; this skill makes the checks reproducible.
When to use
PR review for code in security-sensitive paths (auth, crypto, customer-data handling).
Triaging a CodeQL alert that needs the org-specific context (e.g., "is this a legitimate exception to our standard or a real violation?").
Refactoring legacy code against the current standards.
Pre-deployment check for security-sensitive modules.
Vulnerability-class scanning → CodeQL security-extended suite + codeql-pattern-finder for custom patterns.
Workflow security → actions-workflow-hardener.
Check categories
1. Deprecated internal APIs
Pattern
Severity
LegacyAuth.signWith(...) — replaced by org.auth.SignedToken Q1 2026
HIGH
OldCryptoHelper.encrypt(...) — pre-FIPS implementation, replaced by org.crypto.FipsAesCbc
CRITICAL
LegacyDirectJdbc.rawExecute(...) — bypasses org's data-access wrapper; should use BankSecureJdbcWrapper
HIGH
com.org.legacy.* namespace usage in new code
MEDIUM
(This list is illustrative; the actual org's deprecated-API set is maintained as a separate config file the skill loads.)
2. Hard-coded business rules
Pattern
Severity
Numeric thresholds (transaction limits, retry counts) hard-coded in production paths
HIGH
Account-type case statements hard-coded (should be table-driven)
MEDIUM
Regulatory thresholds (Reg E, Reg Z) embedded in code
CRITICAL — must come from config
3. Regulatory pattern violations
Pattern
Severity
PAN (16-digit card number) format in log.*() invocations
CRITICAL
Customer ID in Exception.getMessage() returned to caller
HIGH
SSN / Tax-ID in error responses or logs
CRITICAL
Card-CVV anywhere in persistence layer
CRITICAL
4. Bank conventions for security-sensitive components
Pattern
Severity
Auth filter not declared in the @SecurityComponent registry
HIGH
Crypto operation not declared in the @CryptoOperation registry (for FIPS audit)
HIGH
Customer-data accessor not wrapped in @RegulatedDataAccessor (for audit trail)
HIGH
External-service call not declared in @ExternalDependency
MEDIUM
5. Crypto primitives + key lifetimes
Pattern
Severity
MD5 / SHA-1 used for security purposes (not just integrity checksums)
CRITICAL
DES / 3DES anywhere
CRITICAL
AES key < 256 bits in new code
HIGH
Hard-coded key material in source
CRITICAL
Symmetric key used past declared rotation lifetime
HIGH
Workflow
Identify the code snippet (file path + range, or pasted snippet).
Walk each check category against the snippet.
Cite the internal standard section per finding (numbered citations to the org's actual secure-coding standard document).
Produce findings with severity + remediation + standard reference — presented in chat.
Persist the check — after presenting findings, write the full findings note via vault-writer.write_research to vault/research/appsec/YYYY-MM-DD-secure-coding-check-{file-or-module-slug}.md (frontmatter per research.yml, topic: appsec) so recurring violations across checks become queryable trend data.
Output structure
# Secure Coding Check — {file or snippet}
## Summary
- Findings: {N}
- By severity: ...
## Findings
[per finding: rule, severity, line, snippet, standard reference, remediation]
## Sources
{linked vault notes, standard sections}
Lands at vault/research/appsec/YYYY-MM-DD-secure-coding-check-{file-or-module-slug}.md (workflow step 5).
Composes with
codeql-pattern-finder — when a check would benefit from being encoded as a CodeQL query for at-scan-time enforcement.
vault-writer.write_research — persists the findings note (workflow step 5).
Acceptance test (for step 27 done-criteria)
5 categories documented with ≥20 named checks (the actual org standard will have hundreds; this is the categorization + sample). Live exercise against a specific snippet deferred to first invocation.
1---2name: secure-coding-standard-checker3description: secure-coding-standard-checker4---56# secure-coding-standard-checker78The skill that catches what CodeQL misses — the org-specific layer on top of community queries. Most regulated orgs have a secure-coding standards document; this skill makes the checks reproducible.910## When to use1112- PR review for code in security-sensitive paths (auth, crypto, customer-data handling).13- Triaging a CodeQL alert that needs the org-specific context (e.g., "is this a legitimate exception to our standard or a real violation?").14- Refactoring legacy code against the current standards.15- Pre-deployment check for security-sensitive modules.1617## When NOT to use1819- Generic code-quality review → CodeQL `security-and-quality` suite.20- Vulnerability-class scanning → CodeQL `security-extended` suite + `codeql-pattern-finder` for custom patterns.21- Workflow security → `actions-workflow-hardener`.2223## Check categories2425### 1. Deprecated internal APIs2627| Pattern | Severity |28|---------|----------|29| `LegacyAuth.signWith(...)` — replaced by `org.auth.SignedToken` Q1 2026 | HIGH |30| `OldCryptoHelper.encrypt(...)` — pre-FIPS implementation, replaced by `org.crypto.FipsAesCbc` | CRITICAL |31| `LegacyDirectJdbc.rawExecute(...)` — bypasses org's data-access wrapper; should use `BankSecureJdbcWrapper` | HIGH |32| `com.org.legacy.*` namespace usage in new code | MEDIUM |3334(This list is illustrative; the actual org's deprecated-API set is maintained as a separate config file the skill loads.)3536### 2. Hard-coded business rules3738| Pattern | Severity |39|---------|----------|40| Numeric thresholds (transaction limits, retry counts) hard-coded in production paths | HIGH |41| Account-type case statements hard-coded (should be table-driven) | MEDIUM |42| Regulatory thresholds (Reg E, Reg Z) embedded in code | CRITICAL — must come from config |4344### 3. Regulatory pattern violations4546| Pattern | Severity |47|---------|----------|48| PAN (16-digit card number) format in `log.*()` invocations | CRITICAL |49| Customer ID in `Exception.getMessage()` returned to caller | HIGH |50| SSN / Tax-ID in error responses or logs | CRITICAL |51| Card-CVV anywhere in persistence layer | CRITICAL |5253### 4. Bank conventions for security-sensitive components5455| Pattern | Severity |56|---------|----------|57| Auth filter not declared in the `@SecurityComponent` registry | HIGH |58| Crypto operation not declared in the `@CryptoOperation` registry (for FIPS audit) | HIGH |59| Customer-data accessor not wrapped in `@RegulatedDataAccessor` (for audit trail) | HIGH |60| External-service call not declared in `@ExternalDependency` | MEDIUM |6162### 5. Crypto primitives + key lifetimes6364| Pattern | Severity |65|---------|----------|66| MD5 / SHA-1 used for security purposes (not just integrity checksums) | CRITICAL |67| DES / 3DES anywhere | CRITICAL |68| AES key < 256 bits in new code | HIGH |69| Hard-coded key material in source | CRITICAL |70| Symmetric key used past declared rotation lifetime | HIGH |7172## Workflow73741. **Identify the code snippet** (file path + range, or pasted snippet).752. **Walk each check category** against the snippet.763. **Cite the internal standard section** per finding (numbered citations to the org's actual secure-coding standard document).774. **Produce findings** with severity + remediation + standard reference — presented in chat.785. **Persist the check** — after presenting findings, write the full findings note via `vault-writer.write_research` to `vault/research/appsec/YYYY-MM-DD-secure-coding-check-{file-or-module-slug}.md` (frontmatter per `research.yml`, `topic: appsec`) so recurring violations across checks become queryable trend data.7980## Output structure8182```markdown83# Secure Coding Check — {file or snippet}8485## Summary86- Findings: {N}87- By severity: ...8889## Findings90[per finding: rule, severity, line, snippet, standard reference, remediation]9192## Sources93{linked vault notes, standard sections}94```9596Lands at `vault/research/appsec/YYYY-MM-DD-secure-coding-check-{file-or-module-slug}.md` (workflow step 5).9798## Composes with99100- [`codeql-pattern-finder`](../codeql-pattern-finder/SKILL.md) — when a check would benefit from being encoded as a CodeQL query for at-scan-time enforcement.101- [`secure-design-reviewer`](../secure-design-reviewer/SKILL.md) — at the design level rather than implementation.102- `vault-writer.write_research` — persists the findings note (workflow step 5).103104## Acceptance test (for step 27 done-criteria)1051065 categories documented with ≥20 named checks (the actual org standard will have hundreds; this is the categorization + sample). Live exercise against a specific snippet deferred to first invocation.
Run npx skillmds@latest add themarmack/secure-coding-standard-checker in your terminal (requires Node.js), paste this page's agent-chat prompt into Claude, Cursor, or any MCP-connected agent, or download the SKILL.md file and copy it into your agent's skills directory.
secure-coding-standard-checker It is listed under Coding & Dev Tools on SkillMD.
This skill has not completed SkillMD's automated safety review yet. SkillMD never runs a skill's scripts for you; review the SKILL.md before installing.
This skill is tagged as working with Claude Code, Claude.ai, OpenAI Codex. SKILL.md is an open format, so most agents that read a skills directory can load it too.
Yes. Installing skills from SkillMD is free, and the skill stays under its author's original license.
themarmack (@themarmack) published this skill. Their other Agent Skills are listed on their SkillMD profile.