Source profileQuality 92/100

vasilyu1983/AI-Agents-public/frameworks/shared-skills/skills/software-security-appsec/SKILL.md

software-security-appsec

Provides application security guidance for design and implementation. Use when reviewing auth, data handling, supply-chain controls, or AppSec architecture.

Source repository stars
80
Declared platforms
2
Static risk flags
0
Last source update
2026-08-21
Source checked
2026-08-25

Decision brief

What it does: where it fits

Use this skill for application-layer security: authentication, authorization, input and output handling, cryptography, supply-chain controls, API security, threat modeling, and security reviews. It is the AppSec decision layer, not general backend or infrastructure hardening.

Best for

  • Review or design auth, session, token, or authorization flows.
  • Validate input handling, uploads, rendering, and untrusted-data boundaries.
  • Secure APIs, webhooks, browser apps, and admin surfaces.

Not for

  • Treating standards status as evergreen without checking.
  • Using auth mechanisms that are more complex than the app needs.

Compatibility matrix

Platform support, with evidence labels

PlatformStatusEvidenceWhat to check
CodexDeclaredSource recordInstall path and trigger
Claude CodeDeclaredSource recordInstall path and trigger
CursorNot declaredNo explicit evidencePortability before use
Gemini CLINot declaredNo explicit evidencePortability before use
Open the compatibility checker

Installation

Inspect first. Install second.

The source command is displayed only when detected. A safe inspection prompt is always available so your agent can explain every action before execution.

Source-detected install commandSource
npx skills add https://github.com/vasilyu1983/AI-Agents-public --skill "frameworks/shared-skills/skills/software-security-appsec"
Safe inspection promptEditorial

Inspect the Agent Skill "software-security-appsec" from https://github.com/vasilyu1983/AI-Agents-public/blob/53f6cb73ea53a2646e3e7d4665062ad66f3683ac/frameworks/shared-skills/skills/software-security-appsec/SKILL.md at commit 53f6cb73ea53a2646e3e7d4665062ad66f3683ac. List every install step, command, network request, credential, file read/write, external action, and rollback step. Explain whether it fits my task. Do not install or execute anything until I approve.

Workflow

What the source asks the agent to do

  1. 01

    Workflow

    1. Identify the asset, trust boundary, attacker capability, and failure consequence. 2. Classify the problem: auth, authZ, untrusted input, API, supply chain, agentic flow, or secure-design issue. 3. Choose the control family from the relevant reference. 4. Apply the concrete sa…

    Identify the asset, trust boundary, attacker capability, and failure consequence.Classify the problem: auth, authZ, untrusted input, API, supply chain, agentic flow, or secure-design issue.Choose the control family from the relevant reference.
  2. 02

    Verification Checklist

    Before finalizing any AppSec design or review output:

    [ ] Trust boundary drawn explicitly — every input crossing it is validated or rejected[ ] Authentication model chosen from Defaults (passkeys → server session → OIDC/PKCE → short-lived token)[ ] Authorization checked server-side; deny-by-default enforced at every privileged endpoint
  3. 03

    Quick Reference

    Review the “Quick Reference” section in the pinned source before continuing.

    Review and apply the “Quick Reference” source section.
  4. 04

    Secret-Storage Selection

    Every major cloud provider has two surface-similar storage classes: one encrypted-at-rest with no readback, one plaintext-visible in the dashboard. Picking the wrong one is silent — the app still works — and the audit log for who-read-what exists only on the encrypted form. Plai…

    If the provider distinguishes "Secret" from "Variable" (or "Sensitive" from "Standard"), always use the encrypted form for: API keys, OAuth client secrets, JWT signing keys, database passwords, webhook secrets, push cer…Identifiers that already appear in client builds (bundle IDs, Team IDs, KV namespace IDs, project IDs) are not secrets and belong in the plaintext config — putting them in the secret store both clutters and signals fals…Verify after storing. wrangler secret list returns type: secrettext when encrypted. If you see plaintext or the value appears under [vars], the credential is plaintext — treat as compromised and rotate.
  5. 05

    When to Use

    Review or design auth, session, token, or authorization flows.

    Review or design auth, session, token, or authorization flows.Validate input handling, uploads, rendering, and untrusted-data boundaries.Secure APIs, webhooks, browser apps, and admin surfaces.

Permission review

Static risk signals and limitations

No configured static risk pattern was detected

This is not proof of safety. Runtime behavior, indirect dependencies, and hidden external systems are outside the static scan.

Evidence record

Why each signal appears

EvidenceSourceComputedTestedEditorial
SignalValueEvidence typeMeaning
Quality score92/100ComputedDocumentation, specificity, maintenance, and trust rules
Repository stars80SourceRepository attention, not individual Skill quality
Compatibility2 platformsSourceDeclared in the catalog source record
Usage guideautomated source guideEditorialGenerated or reviewed according to the visible evidence level

Pinned source

Provenance and original SKILL.md

Repository
vasilyu1983/AI-Agents-public
Skill path
frameworks/shared-skills/skills/software-security-appsec/SKILL.md
Commit
53f6cb73ea53a2646e3e7d4665062ad66f3683ac
License
MIT
Collected
2026-08-25
Default branch
main
View the original SKILL.md

Software Security And AppSec

Use this skill for application-layer security: authentication, authorization, input and output handling, cryptography, supply-chain controls, API security, threat modeling, and security reviews. It is the AppSec decision layer, not general backend or infrastructure hardening.

Quick Reference

TaskUse
Auth and authorization choicesreferences/authentication-authorization.md, assets/web-application/template-authentication.md, assets/web-application/template-authorization.md
Input handling, uploads, rendering, and common bugsreferences/input-validation.md, references/common-vulnerabilities.md
Secure design and threat modelingreferences/secure-design-principles.md, references/threat-modeling-guide.md
API and supply-chain securityreferences/api-security-patterns.md, references/supply-chain-security.md, assets/api/template-secure-api.md
Crypto and transport choicesreferences/cryptography-standards.md
Secret-storage selectionSee "Secret-Storage Selection" below — choosing encrypted vs plaintext at the provider, and how to verify after storing
Incident response and security program framingreferences/incident-response-playbook.md, references/security-business-value.md, references/operational-playbook.md

Secret-Storage Selection

Every major cloud provider has two surface-similar storage classes: one encrypted-at-rest with no readback, one plaintext-visible in the dashboard. Picking the wrong one is silent — the app still works — and the audit log for who-read-what exists only on the encrypted form. Plaintext reads are invisible.

ProviderYes Encrypted, never-readableNo Plaintext, dashboard-visible
Cloudflare Workerswrangler secret put (API type: secret_text)[vars] in wrangler.toml, Workers > Variables tab
VercelEnvironment Variables marked "Sensitive"Standard Environment Variables
GitHub ActionsRepository / Organization Secretsenv: in workflow YAML, repository Variables
AWSSecrets Manager, SSM Parameter Store SecureStringSSM String, plain Lambda env vars
KubernetesSecret + KMS envelope (SOPS, Sealed Secrets)ConfigMap, plain env vars

Rules:

  • If the provider distinguishes "Secret" from "Variable" (or "Sensitive" from "Standard"), always use the encrypted form for: API keys, OAuth client secrets, JWT signing keys, database passwords, webhook secrets, push certificates.
  • Identifiers that already appear in client builds (bundle IDs, Team IDs, KV namespace IDs, project IDs) are not secrets and belong in the plaintext config — putting them in the secret store both clutters and signals false risk.
  • Verify after storing. wrangler secret list returns type: secret_text when encrypted. If you see plain_text or the value appears under [vars], the credential is plaintext — treat as compromised and rotate.
  • PEM and other multi-line secrets must use CLI redirect, never dashboard paste. Dashboards silently mangle newlines: wrangler secret put APNS_AUTH_KEY --name worker < AuthKey_XXX.p8.

If you suspect a secret was stored as plaintext: treat it as compromised. Revoke at the issuer, generate a new credential, store correctly, then verify. Deleting the visible plaintext copy does not invalidate any cached or scraped value. Rotation is a no-regret action; the cost is one credential refresh, the alternative is undetectable use.

When to Use

  • Review or design auth, session, token, or authorization flows.
  • Validate input handling, uploads, rendering, and untrusted-data boundaries.
  • Secure APIs, webhooks, browser apps, and admin surfaces.
  • Threat-model a feature or AppSec architecture choice.
  • Harden dependency, build, artifact, and release paths.
  • Review agentic or MCP-connected applications from an AppSec angle.

Route Elsewhere

  • General backend engineering without a security focus: use software-backend.
  • Infrastructure hardening, IAM, cluster policy, or cloud posture: use ops-devops-platform.
  • Smart-contract-specific audits: use software-crypto-web3.
  • ML pipeline or model-ops governance: use ai-mlops.
  • Compliance-only interpretation with no implementation choice: route to legal or compliance stakeholders.

Defaults

  • Use OWASP Top 10:2025 for risk framing (released January 2026, replaces 2021 edition), ASVS for requirements depth, and SSDF for SDLC baselines.
  • Treat standards, browser behavior, and current exploit trends as volatile until rechecked.
  • Prefer passkeys where feasible and sessions for browser-first apps.
  • Model trust boundaries before choosing controls.
  • Treat tool calls, retrieved content, and long-term memory as untrusted input in agentic systems.

Workflow

  1. Identify the asset, trust boundary, attacker capability, and failure consequence.
  2. Classify the problem: auth, authZ, untrusted input, API, supply chain, agentic flow, or secure-design issue.
  3. Choose the control family from the relevant reference.
  4. Apply the concrete safeguards and define verification depth.
  5. Recheck volatile standards and provider behavior before final recommendations.

ASCII Flow

AppSec task
  -> Identify asset, trust boundary, attacker, and consequence
  -> Classify auth, authZ, input, API, supply chain, agentic, or design risk
  -> Choose control family and verification depth
  -> Implement concrete safeguards at the boundary
  -> Test exploit paths, regression cases, and logging
  -> Recheck volatile standards and document residual risk

Auth Model Selection

SituationChooseAvoid
Product with browser users, session state acceptableServer sessions (cookie + server-side store)JWTs for sessions — revocation is hard
Mobile/desktop app with device-native biometricsPasskeys (WebAuthn)SMS OTP — SIM-swap risk
Third-party sign-in or delegated accessOIDC / OAuth 2.1 + PKCEImplicit flow (deprecated in OAuth 2.1)
API-to-API, no user contextmTLS or short-lived signed tokensLong-lived API keys
Intra-service auth in a trusted clusterService accounts + mTLSShared secrets or user tokens

Input Control Selection

Sink / operationRequired control
SQL query constructionParameterized query or ORM binding; never string concatenation
Shell / process executionAllowlist args; avoid shell=True / exec with user input
HTML renderingContext-aware output encoding; CSP header
File upload destination pathCanonicalize; reject path traversal sequences; store outside webroot
Redirect targetAllowlist known origins; reject open redirect patterns
LDAP / XPath / XMLLibrary-level escaping or schema validation before query construction
LLM / agent tool call inputTreat as untrusted; validate schema before execution; log intent + scope

Core Decisions

Authentication and Sessions

Default choices:

  • passkeys when product and recovery flows support them
  • server sessions for browser apps
  • OIDC or OAuth 2.1 plus PKCE for delegated or third-party sign-in
  • short-lived tokens only when true statelessness is required

Choose the simplest safe model that matches the app shape.

Authorization and Input Boundaries

Minimum rules:

  • deny by default
  • check authorization on the server
  • validate at boundaries
  • parameterize dangerous sinks
  • treat rich content and file uploads as active content until proven otherwise

Secure Design and Threat Modeling

Threat-model before implementing:

  • storage of sensitive data
  • privileged actions
  • external callbacks
  • file uploads
  • rich rendering
  • agent or tool flows

Retroactive hardening is slower and weaker than secure-by-default design.

Agentic and MCP Security

Model explicitly:

  • prompt injection
  • tool misuse
  • memory poisoning
  • cross-tenant leakage
  • over-broad server capabilities
  • unsafe approval flows

Keep read-only and mutating capabilities separate and log intent, scope, and result.

Metered or costly actions (medium confidence, single-source pattern — see Fact-Checking): for any agent action that consumes a bounded quota, spends money, or is otherwise costly/irreversible, re-check current authorization and quota state immediately before that specific call, not from an earlier cached check. The original task assignment ("do X") is not standing consent to spend a metered resource — treat each metered call as needing its own fresh confirmation. On failure mid-run, resume from saved state rather than restarting, since restarting re-incurs the metered cost.

Supply-Chain and Release Integrity

Use:

  • lockfiles
  • trusted publishing or provenance
  • artifact integrity checks
  • SBOM where relevant
  • explicit review of transitive risk

Verification Checklist

Before finalizing any AppSec design or review output:

  • Trust boundary drawn explicitly — every input crossing it is validated or rejected
  • Authentication model chosen from Defaults (passkeys → server session → OIDC/PKCE → short-lived token)
  • Authorization checked server-side; deny-by-default enforced at every privileged endpoint
  • All sinks parameterized: SQL, shell, LDAP, XPath, XML, HTML rendering, redirect targets
  • File uploads and rich content treated as active content: type validation, size limit, storage isolation
  • Secrets stored in encrypted provider form (see Secret-Storage Selection table); verify with provider CLI
  • Supply-chain controls in place: lockfile, dependency scanning, artifact integrity, SBOM if required
  • Agentic flows threat-modeled for prompt injection, tool misuse, cross-tenant leakage, and over-broad scopes
  • Residual risks documented with mitigating controls and owner
  • Standards and browser-behavior claims verified against current sources before final output

Output Modes

Default to one of these:

  • Security design brief: threats, control choices, and verification scope.
  • Security review: findings, risks, and implementation priorities.
  • Auth or API hardening plan: recommended model, pitfalls, and validation steps.
  • Agentic AppSec review: threat model, capability boundaries, and approval controls.

Known Traps

  • Starting security review after architecture and product flows are already fixed, which turns foundational design issues into expensive compensating controls.
  • Conflating authentication with authorization and assuming a valid identity token answers the permission question.
  • Treating file uploads, rich text, markdown, or retrieved tool content as passive data instead of active attacker-controlled input.
  • Reusing one permission surface for both read-only and mutating tool or MCP actions.
  • Assuming infrastructure posture or a managed platform compensates for weak application-level control design.

Anti-Patterns

  • Treating standards status as evergreen without checking.
  • Using auth mechanisms that are more complex than the app needs.
  • Trusting unvalidated input deep in the system.
  • Leaving tool or MCP permissions broad by default.
  • Bolting security onto a feature after implementation choices are locked.
  • Conflating infrastructure posture with application security design.

Navigation

Fact-Checking

  • Known bugs, regressions, framework/compiler/runtime footguns, and version-specific crash or workaround guidance must be verified against current primary web sources before being treated as current fact.
  • Use data/sources.json as the primary source map.
  • Standards revisions, vendor defaults, and active agentic or MCP security guidance are time-sensitive and should be verified before being presented as current fact.
  • Mark anything inferred or not rechecked as provisional.
  • Attribution: the metered/costly-action re-consent pattern under Agentic and MCP Security is adapted from regulatory-threat-model by Ansvar Systems AB, in davila7/claude-code-templates at commit 22d8efa9e9afcf31b98b7e3952ec557694e72c13, licensed CC-BY-4.0. Extracted 2026-08-09. This is a single-source pattern (medium confidence) extracted from one vendor-specific, proprietary-tool-bound skill — treat it as a named pattern to consider, not a widely-corroborated convention.

Learnings Loop

Before applying this skill on a non-trivial task, read learnings.consolidated.md in this directory (and learnings.md if present).

After applying it, if you encountered a pattern worth remembering, a mistake worth preventing, or a domain fact that surprised you, append one dated bullet to learnings.md via agents-skills-feedback-loop/scripts/append_learning.py. Do not modify SKILL.md itself.

Frequently asked questions

What to verify before installation and use

What does the software-security-appsec source document cover?

Use this skill for application-layer security: authentication, authorization, input and output handling, cryptography, supply-chain controls, API security, threat modeling, and security reviews. It is the AppSec decision layer, not general backend or infrastructure hardening.

How do I install software-security-appsec?

The source record exposes this install command: npx skills add https://github.com/vasilyu1983/AI-Agents-public --skill "frameworks/shared-skills/skills/software-security-appsec". Inspect the command and pinned source before running it.

Which Agent platforms does the source record declare?

The pinned source record declares support for: codex, claude code.

Alternatives

Compare before choosing