Skip to content
Back to skills

Pair Capability Assess Security

ASecurity

Assess security posture using resolution cascade (Argument > Adoption > Assessment). Reads security guidelines and package-level .pair.security.md files, identifies gaps, proposes controls, writes adoption file, composes /pair-capability-record-decision. Idempotent.

  • 2 stars
  • 0 votes
  • 0 copies
  • 0 views
  • Added November 7, 2026
securityrustgoapisecurity

Works with

  • api

Security analysis

A100/100

Scanned November 7, 2026

npx -y skills add learnn-com/designn --skill pair-capability-assess-security --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Pair Capability Assess Security?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Pair Capability Assess Security
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/learnn-com-pair-capability-assess-security/badge)](https://www.skillsdirectory.com/skills/learnn-com-pair-capability-assess-security)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: pair-capability-assess-security
description: "Assess security posture using resolution cascade (Argument > Adoption > Assessment). Reads security guidelines and package-level .pair.security.md files, identifies gaps, proposes controls, writes adoption file, composes /pair-capability-record-decision. Idempotent."
version: 0.1.0
author: Learnn
---

# /pair-capability-assess-security — Security Assessment

Evaluate and document the project security posture. Follows the resolution cascade: explicit argument wins, then existing adoption, then full assessment from guidelines. Reads package-level `.pair.security.md` files to avoid duplicating rules already defined in submodules.

## Arguments

| Argument  | Required | Description                                                                                        |
| --------- | -------- | -------------------------------------------------------------------------------------------------- |
| `$scope`  | No       | Limit assessment to one package: `web`, `mobile`, `services`. Omit for full project assessment.    |
| `$choice` | No       | Override: skip assessment and adopt a specific security control set directly (e.g. `owasp-top10`). |

## Composed Skills

| Skill                              | Type       | Required                               |
| ---------------------------------- | ---------- | -------------------------------------- |
| `/pair-capability-record-decision` | Capability | Yes — records security strategy as ADL |

## Adoption Files

- **Primary target**: [adoption/tech/security.md](../../../.pair/adoption/tech/security.md) — global security principles and WordPress-specific rules
- **Package targets** (read + write): `.pair.security.md` files in `apps/web/.pair/`, `apps/mobile/.pair/`, `services/.pair/`
- **Ownership**: Global principles section (shared file — package-specific rules live in submodule files)

## Algorithm

### Step 1: Resolution Cascade

#### Path A — Argument Override

1. **Check**: Is `$choice` provided?
2. **Skip**: If not provided, go to Path B.
3. **Act**: Confirm with developer:

   > Security control override: **$choice**.
   > This will be adopted without full assessment.
   > Confirm?

4. **Check**: Does [adoption/tech/security.md](../../../.pair/adoption/tech/security.md) already exist with different controls?
   - If yes, warn: "Current security adoption exists. Override to **$choice**?"
5. **Verify**: Developer confirms. Proceed to Step 4.

#### Path B — Adoption Exists

1. **Check**: Does [adoption/tech/security.md](../../../.pair/adoption/tech/security.md) exist and is it populated (not template)?
2. **Skip**: If missing or empty, go to Path C.
3. **Act**: Read current adoption. Read all package `.pair.security.md` files present. Present:

   > Security adoption already exists.
   > Global principles: **[list]**
   > Package files found: **[web | mobile | services]**
   > Open vulnerabilities tracked: **[count from package files]**

4. **Check**: Does a corresponding decision record exist? (Scan [adoption/decision-log/](../../../.pair/adoption/decision-log) for `*security*` files.)
5. **Act**: If decision record missing, compose `/pair-capability-record-decision` to backfill.
6. **Verify**: Adoption and decision record consistent. Done — exit skill.

#### Path C — Full Assessment

1. **Act**: Proceed to Step 2 (full assessment mode).

### Step 2: Read Guidelines

1. **Act**: Read security guidelines:
   - [Security README](../../../.pair/knowledge/guidelines/quality-assurance/security/README.md) — framework overview, tool matrix, severity classification
   - [Security Guidelines](../../../.pair/knowledge/guidelines/quality-assurance/security/security-guidelines.md) — OWASP-based standards
   - [Security by Design](../../../.pair/knowledge/guidelines/quality-assurance/security/security-by-design.md) — design principles
   - [Authentication & Authorization](../../../.pair/knowledge/guidelines/quality-assurance/security/authentication-authorization.md) — identity controls
   - [Vulnerability Prevention](../../../.pair/knowledge/guidelines/quality-assurance/security/vulnerability-prevention.md) — proactive controls
   - [Sensitive Data](../../../.pair/knowledge/guidelines/quality-assurance/security/sensitive-data.md) — data handling rules
   - [API Security](../../../.pair/knowledge/guidelines/quality-assurance/security/api-security.md) — API-specific controls
2. **Act**: Read project context:
   - [adoption/product/PRD.md](../../../.pair/adoption/product/PRD.md) — project type, scale, compliance requirements (if available)
   - [adoption/tech/tech-stack.md](../../../.pair/adoption/tech/tech-stack.md) — platforms and languages (determines which controls apply)
   - All existing `.pair.security.md` files — rules already documented per package
3. **Verify**: Guidelines and project context loaded.

### Step 3: Assess Security Posture

1. **Act**: If `$scope` is provided, assess only that package. Otherwise assess all packages present.

2. **Act**: For each package in scope, evaluate against OWASP Top 10 categories:
   - A01 Broken Access Control
   - A02 Cryptographic Failures
   - A03 Injection
   - A04 Insecure Design
   - A05 Security Misconfiguration
   - A06 Vulnerable and Outdated Components
   - A07 Identification and Authentication Failures
   - A08 Software and Data Integrity Failures
   - A09 Security Logging and Monitoring Failures
   - A10 Server-Side Request Forgery

3. **Act**: Assign severity to each gap found (P0 Critical / P1 High / P2 Medium / P3 Low) using the classification in the security README.

4. **Act**: Check which package `.pair.security.md` files already exist:
   - If a file exists, read it and treat documented rules as already addressed — do NOT duplicate them in the global adoption file.
   - If a file is missing for a package with code, flag it as a gap.

5. **Act**: Present findings summary to developer:

   > **Security Assessment Summary — [scope]**
   >
   > OWASP Coverage:
   >
   > - A01 Access Control: [OK | gaps found]
   > - A02 Cryptographic Failures: [OK | gaps found]
   > - ... (all 10 categories)
   >
   > Open vulnerabilities by severity:
   >
   > - P0 Critical: N
   > - P1 High: N
   > - P2 Medium: N
   >
   > Missing package security files: [list]
   >
   > Recommendation: [summary of controls to adopt]

6. **Verify**: Developer approves the assessment and proposed controls.

### Step 4: Write Adoption Files

1. **Act**: Update [adoption/tech/security.md](../../../.pair/adoption/tech/security.md):
   - Write or update **Security Principles** section with approved global controls.
   - Write or update **WordPress-Specific** section if WordPress is in scope.
   - Do NOT write package-specific rules — those belong in `.pair.security.md` submodule files.
   - Preserve existing content in sections not touched by this assessment.

2. **Act**: For each package missing a `.pair.security.md` file:
   - Create the file at `apps/<package>/.pair/.pair.security.md` (or `services/.pair/.pair.security.md`).
   - Follow the structure of existing package files (open vulnerabilities + security rules + exceptions + what's done correctly + references).
   - Add the new file reference to the **Security Review Process** section of `adoption/tech/security.md`.

3. **Verify**: All adoption files written and consistent. No rule is duplicated between global and package files.

### Step 5: Record Decision

1. **Act**: Compose `/pair-capability-record-decision`:
   - `$type`: `non-architectural`
   - `$topic`: `security-strategy`
   - `$summary`: "Security posture assessed for [scope]: [N] controls adopted, [N] open vulnerabilities tracked"
2. **Verify**: ADL created at `adoption/decision-log/YYYY-MM-DD-security-strategy.md`. Adoption file consistent with ADL.

## Output Format

```text
ASSESSMENT COMPLETE:
├── Domain:     Security
├── Scope:      [full | web | mobile | services]
├── Path:       [Argument Override | Adoption Exists | Full Assessment]
├── OWASP:      [N/10 categories covered]
├── Open vulns: [P0: N | P1: N | P2: N | P3: N]
├── Adoption:   [adoption/tech/security.md — written | confirmed | updated]
├── Pkg files:  [list of .pair.security.md files created or confirmed]
├── Record:     [ADL path — created | exists | backfilled]
└── Status:     [Complete | Confirmed existing]
```

## Composition Interface

When composed by `/pair-process-review`:

- **Input**: `/pair-process-review` invokes `/pair-capability-assess-security` during the adoption compliance phase. May pass `$scope` to limit assessment to the package touched by the PR.
- **Output**: Returns security findings relevant to the PR — open vulnerabilities, missing controls, OWASP gaps. `/pair-process-review` includes these findings in the review report.
- ADL is NOT written during review — adoption changes require explicit developer approval outside the review flow.

When invoked **independently**:

- Full interactive flow. Developer commits changes when satisfied.

## Edge Cases

- **Package `.pair.security.md` exists but is outdated** (references fixed vulnerabilities): Prompt developer to confirm which items are resolved before updating.
- **Argument conflicts with adoption**: Warn developer, ask for confirmation. If confirmed, update adoption and create new decision record.
- **No PRD available**: Proceed with assessment. Warn: "No PRD found — compliance requirements (GDPR, PCI-DSS) must be confirmed manually."
- **Package code exists but no `.pair.security.md`**: Create the file. Warn: "No security file found for [package] — creating from assessment findings."
- **Decision record already exists for same scope+decision**: Skip writing (no duplicates).
- **All packages already have `.pair.security.md` and global adoption exists**: Path B (adoption exists) — confirm and exit.

## Graceful Degradation

- If security guidelines are not found, use OWASP Top 10 as minimal framework and ask developer to confirm which categories are in scope.
- If `/pair-capability-record-decision` is not installed, warn and skip decision recording: "Decision not recorded — /pair-capability-record-decision not installed."
- If adoption directory doesn't exist, create it on first write.
- If a package `.pair.security.md` exists but is empty/template, treat as missing (Path C).

## Notes

- **Global vs package rules**: Global `adoption/tech/security.md` owns cross-cutting principles. Package `.pair.security.md` files own implementation-specific rules and open vulnerabilities. Never duplicate a rule in both.
- **Security decisions are non-architectural** → produce ADL (not ADR), unless the security choice structurally affects the system (e.g. adopting a zero-trust mesh that changes service boundaries).
- **Idempotency**: the resolution cascade IS the idempotency mechanism. If adoption exists and is consistent with package files, assessment is already done.
- **Open vulnerabilities**: tracked in package `.pair.security.md` files under `## Open Vulnerabilities`. Once a vulnerability is fixed and a PBI closed, remove it from the file.
- Educational content (OWASP descriptions, threat models, WHY) stays in guidelines. This skill references guidelines for assessment criteria and control recommendations.

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.