/engagement-memory
Use when recalling prior techniques at recon/weaponize, or recording a confirmed finding at report — cross-engagement pattern memory ranked by impact
$ npx -y skills add hypnguyen1209/offensive-claude --skill engagement-memory --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
- Fires itselfAuto-invocation. Claude auto-loads it when your prompt matches the work.Auto-invocation is when the right skill fires by itself at the right moment, driven by a FLOW.md router and a hook, instead of you invoking it by name. It is the difference between a skill being installed and a skill actually getting used.Read the full definition →
- You can call itInvoke it directly when you want it.
- Slash command
/engagement-memory
Context preview
The summary Claude sees to decide when to auto-load this skill.
Use when recalling prior techniques at recon/weaponize, or recording a confirmed finding at report — cross-engagement pattern memory ranked by impact
SKILL.md
engagement-memory.SKILL.mdname: engagement-memory
description: Use when recalling prior techniques at recon/weaponize, or recording a confirmed finding at report — cross-engagement pattern memory ranked by impact
metadata:
type: support
phase: all
tools: pattern_db.py, schemas.py, rotation.py
kill_chain:
phase: [recon, weaponize, report]
step: [1, 2, 8]
attck_tactics: []
attck_techniques: []
depends_on: [vulnerability-analysis]
feeds_into: [recon-osint, exploit-development, web-pentest]
inputs: [confirmed_findings, target, tech_stack]
outputs: [prior_intel, ranked_patterns]
references: []
scripts:
- scripts/pattern_db.py
- scripts/schemas.py
- scripts/rotation.py
Engagement Memory (cross-engagement learning)
When to Activate
- At **recon/weaponize**: recall what already worked against this target class / tech stack.
- At **report**: persist each `[CONFIRMED]` finding as a reusable pattern (ranked by impact).
- Periodic housekeeping: compact the pattern DB / rotate the audit log.
Model
Append-only JSONL store (`~/.claude/engagement-memory/patterns.jsonl`, override `$ENGAGEMENT_DB`). Three record types in their own files so they never mix: **patterns** (`patterns.jsonl`), **target profiles** (`profiles.jsonl`), **audit log** (`audit.jsonl`, disposable). A pattern is keyed by `(target, vuln_class, technique)`, ranked by **severity / CVSS / confidence** (real impact, never payout), and carries a **lifecycle status** (`proposed/active/stale/deprecated/...`). Recall is an **explicit top-N query** (anti-context-bloat). Duplicates **merge** (count bumped, most-recent status wins), never blind-discarded; `compact` runs automatically over a size threshold and stays lossless. TTL `stale` patterns and `deprecated/rejected` ones drop out of default recall but are kept.
Commands
# RECALL — relevance-ranked (stdlib BM25 + aliases), active-only by default
python skills/engagement-memory/scripts/pattern_db.py match --vuln-class ssrf --query "imds metadata" --tech-stack aws
# INJECT — budgeted prior-intel card for a phase (top-N, byte-capped; $ENGAGEMENT_MEMORY_MODE=auto|debug|off)
python skills/engagement-memory/scripts/pattern_db.py inject --vuln-class ssrf --query imds --max-bytes 1500
# RECORD a confirmed finding (flags or finding JSON). A key collision needs --resolve update|merge|reject|force.
python skills/engagement-memory/scripts/pattern_db.py record --target acme.com --vuln-class ssrf \
--cwe CWE-918 --attack-id T1190 --severity high --cvss 9.1 --tech-stack nginx,aws --technique "metadata theft"
python skills/engagement-memory/scripts/pattern_db.py record --json '<finding json from validate_findings>'
# LIFECYCLE + cross-client
python skills/engagement-memory/scripts/pattern_db.py promote --target acme.com --vuln-class ssrf --technique "metadata theft" [--global]
python skills/engagement-memory/scripts/pattern_db.py deprecate --target acme.com --vuln-class ssrf --technique "metadata theft"
python skills/engagement-memory/scripts/pattern_db.py match --vuln-class ssrf --include-global # add sanitized cross-client TTPs
# PROFILES + housekeeping + observability
python skills/engagement-memory/scripts/pattern_db.py profile --target acme.com --tech-stack nginx,aws --endpoints /api,/admin
python skills/engagement-memory/scripts/pattern_db.py recall-profile --target acme.com
python skills/engagement-memory/scripts/pattern_db.py compact # manual lossless dedup-merge
python skills/engagement-memory/scripts/pattern_db.py stats # patterns by class + profile count
python skills/engagement-memory/scripts/pattern_db.py audit-stats # action log: by tool/action/outcomeOr use the `/engage.memory` command (recall | inject | record | promote | deprecate | gc | stats).
OPSEC & Detection
| Concern | Note | |---------|------| | Secrets at rest | Stores technique + CWE/CVSS + an evidence *reference*, never loot. A **secret-input guard** rejects `evidence_ref`/`source` that look like inline secrets (private keys, `password=`, AKIA, JWTs, tokens) — store a path; **rotate** the exposed credential, don't just delete. | | Cross-client bleed | Per-client isolation is the default (`$ENGAGEMENT_DB`). The shared global store is opt-in (`promote --global` / `record --global`) and **sanitized** (target + evidence blanked); recall it only with `--include-global`. | | Trust | New auto-captures can be `proposed`; only confirmed/reviewed findings are `active`. A key collision is **review-gated** (`--resolve`), not silently merged. | | Auditability | Every record/match/compact/promote — and every refused line (`denial`) — is written to `audit.jsonl` (rotated by discard, with a retention-gap marker). The append-only patterns journal + audit log ARE the history. | | Integrity | Records carry `schema_version`; malformed/type-poisoned/foreign lines are skipped on read, never trusted. |
Deep Dives
- `scripts/schemas.py` — record types (pattern/audit/target_profile/retention_gap), validation + secret guard, `pattern_key`/`pattern_id`, impact+confidence `rank_score`, recency-resolving `merge`.
- `scripts/pattern_db.py` — typed routing, merge-on-read with TTL staleness, BM25 relevance recall, `inject`, lifecycle verbs, global scope, CLI.
- `scripts/rotation.py` — `compact`/`maybe_gc` (lossless dedup-merge, auto-triggered) vs `rotate_audit` (discard the disposable log + write a retention-gap marker).
Read more
name: engagement-memory description: Use when recalling prior techniques at recon/weaponize, or recording a confirmed finding at report — cross-engagement pattern memory ranked by impact metadata: type: support phase: all tools: pattern_db.py, schemas.py, rotation.py kill_chain: phase: [recon, weaponize, report] step: [1, 2, 8] attck_tactics: [] attck_techniques: [] depends_on: [vulnerability-analysis] feeds_into: [recon-osint, exploit-development, web-pentest] inputs: [confirmed_findings, target, tech_stack] outputs: [prior_intel, ranked_patterns] references: [] scripts: - scripts/pattern_db.py - scripts/schemas.py - scripts/rotation.py
Engagement Memory (cross-engagement learning)
When to Activate
- At **recon/weaponize**: recall what already worked against this target class / tech stack.
- At **report**: persist each `[CONFIRMED]` finding as a reusable pattern (ranked by impact).
- Periodic housekeeping: compact the pattern DB / rotate the audit log.
Model
Append-only JSONL store (`~/.claude/engagement-memory/patterns.jsonl`, override `$ENGAGEMENT_DB`). Three record types in their own files so they never mix: **patterns** (`patterns.jsonl`), **target profiles** (`profiles.jsonl`), **audit log** (`audit.jsonl`, disposable). A pattern is keyed by `(target, vuln_class, technique)`, ranked by **severity / CVSS / confidence** (real impact, never payout), and carries a **lifecycle status** (`proposed/active/stale/deprecated/...`). Recall is an **explicit top-N query** (anti-context-bloat). Duplicates **merge** (count bumped, most-recent status wins), never blind-discarded; `compact` runs automatically over a size threshold and stays lossless. TTL `stale` patterns and `deprecated/rejected` ones drop out of default recall but are kept.
Commands
# RECALL — relevance-ranked (stdlib BM25 + aliases), active-only by default
python skills/engagement-memory/scripts/pattern_db.py match --vuln-class ssrf --query "imds metadata" --tech-stack aws
# INJECT — budgeted prior-intel card for a phase (top-N, byte-capped; $ENGAGEMENT_MEMORY_MODE=auto|debug|off)
python skills/engagement-memory/scripts/pattern_db.py inject --vuln-class ssrf --query imds --max-bytes 1500
# RECORD a confirmed finding (flags or finding JSON). A key collision needs --resolve update|merge|reject|force.
python skills/engagement-memory/scripts/pattern_db.py record --target acme.com --vuln-class ssrf \
--cwe CWE-918 --attack-id T1190 --severity high --cvss 9.1 --tech-stack nginx,aws --technique "metadata theft"
python skills/engagement-memory/scripts/pattern_db.py record --json '<finding json from validate_findings>'
# LIFECYCLE + cross-client
python skills/engagement-memory/scripts/pattern_db.py promote --target acme.com --vuln-class ssrf --technique "metadata theft" [--global]
python skills/engagement-memory/scripts/pattern_db.py deprecate --target acme.com --vuln-class ssrf --technique "metadata theft"
python skills/engagement-memory/scripts/pattern_db.py match --vuln-class ssrf --include-global # add sanitized cross-client TTPs
# PROFILES + housekeeping + observability
python skills/engagement-memory/scripts/pattern_db.py profile --target acme.com --tech-stack nginx,aws --endpoints /api,/admin
python skills/engagement-memory/scripts/pattern_db.py recall-profile --target acme.com
python skills/engagement-memory/scripts/pattern_db.py compact # manual lossless dedup-merge
python skills/engagement-memory/scripts/pattern_db.py stats # patterns by class + profile count
python skills/engagement-memory/scripts/pattern_db.py audit-stats # action log: by tool/action/outcomeOr use the `/engage.memory` command (recall | inject | record | promote | deprecate | gc | stats).
OPSEC & Detection
| Concern | Note | |---------|------| | Secrets at rest | Stores technique + CWE/CVSS + an evidence *reference*, never loot. A **secret-input guard** rejects `evidence_ref`/`source` that look like inline secrets (private keys, `password=`, AKIA, JWTs, tokens) — store a path; **rotate** the exposed credential, don't just delete. | | Cross-client bleed | Per-client isolation is the default (`$ENGAGEMENT_DB`). The shared global store is opt-in (`promote --global` / `record --global`) and **sanitized** (target + evidence blanked); recall it only with `--include-global`. | | Trust | New auto-captures can be `proposed`; only confirmed/reviewed findings are `active`. A key collision is **review-gated** (`--resolve`), not silently merged. | | Auditability | Every record/match/compact/promote — and every refused line (`denial`) — is written to `audit.jsonl` (rotated by discard, with a retention-gap marker). The append-only patterns journal + audit log ARE the history. | | Integrity | Records carry `schema_version`; malformed/type-poisoned/foreign lines are skipped on read, never trusted. |
Deep Dives
- `scripts/schemas.py` — record types (pattern/audit/target_profile/retention_gap), validation + secret guard, `pattern_key`/`pattern_id`, impact+confidence `rank_score`, recency-resolving `merge`.
- `scripts/pattern_db.py` — typed routing, merge-on-read with TTL staleness, BM25 relevance recall, `inject`, lifecycle verbs, global scope, CLI.
- `scripts/rotation.py` — `compact`/`maybe_gc` (lossless dedup-merge, auto-triggered) vs `rotate_audit` (discard the disposable log + write a retention-gap marker).
A spec-driven offensive security framework for Claude Code — structured engagement workflows based on the Cyber Kill Chain, 31 kill-chain skills (multi-file progressive-disclosure) plus a discipline layer (a SessionStart dispatcher + 6 process/discipline
Repo: hypnguyen1209/offensive-claude
Other skills on offensive-claude.
- /active-directory-attack
Use when attacking a Windows Active Directory domain — Kerberos roasting/delegation, coercion + NTLM/Kerberos relay (CVE-2025-33073), ADCS ESC1-16 (EKUwu), ticket forgery & DCSync, dMSA BadSuccessor (CVE-2025-53779), BloodHound attack-path enumeration, domain dominance
Open skill - /advanced-redteam
--- name: advanced-redteam-ops description: Use when designing C2 infrastructure or OPSEC for a long-haul red-team op — redirectors, malleable profiles, tiered/segregated infra, living-off-the-land, data exfiltration metadata: type: offensive phase: operations kill_chain: phase:
Open skill - /ai-agent-redteam
Use when red-teaming an agentic AI / LLM application — indirect & zero-click prompt injection, MCP tool poisoning, persistent memory poisoning, excessive-agency tool abuse, multi-turn jailbreaks, PyRIT/Garak/Promptfoo harnesses
Open skill - /ai-security
Use when attacking an AI/ML system or model — prompt injection & jailbreaks (Crescendo, Skeleton Key, Best-of-N), RAG/vector poisoning, agentic/MCP exploitation (CVE-2025-54136), ML supply-chain RCE (pickle CVE-2025-32434), model extraction / membership inference / adversarial
Open skill - /browser-exploitation
Use when building a client-side browser exploit — V8/JSC JIT type confusion to renderer R/W, V8 heap-sandbox escape, renderer-to-browser sandbox escape (Mojo IPC, GPU/Dawn/ANGLE), Electron/webview IPC abuse, 1-click RCE chains
Open skill - /cicd-supply-chain
Use when attacking or auditing a CI/CD pipeline or software supply chain — pwn requests, poisoned pipeline execution, compromised/mutable-tag actions, dependency confusion, registry worms, runner backdoors, OIDC trust abuse, SLSA/provenance
Open skill

