# us/shannon-on-claude-code architecture

> Architecture diagram of the GitHub repository us/shannon-on-claude-code, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-28). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/us/shannon-on-claude-code
- Repository: https://github.com/us/shannon-on-claude-code

## Overview

Shannon is an AI-agent penetration-testing pipeline for a target URL, optionally paired with source code. In Claude Code, the `/pentest` skill coordinates reconnaissance, optional white-box SAST and login validation, six parallel vulnerability analyses, reconciliation, conditional exploitation, and reporting. Agents save validated deliverables through the MCP helper; scans can resume using URL-bound metadata. The README also documents OpenCode support and optional scanning/browser tools. Workflow links follow the README’s phase descriptions; unsampled agent implementations limit claims about their internal calls.

Main entry points: [`.claude/skills/pentest/SKILL.md`](https://github.com/us/shannon-on-claude-code/blob/main/.claude/skills/pentest/SKILL.md) (Pentest skill), [`.claude/agents/pre-recon.md`](https://github.com/us/shannon-on-claude-code/blob/main/.claude/agents/pre-recon.md) (Pre-recon), [`.claude/agents/recon.md`](https://github.com/us/shannon-on-claude-code/blob/main/.claude/agents/recon.md) (Recon), [`.claude/agents/validate-auth.md`](https://github.com/us/shannon-on-claude-code/blob/main/.claude/agents/validate-auth.md) (Auth validation)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_entry["Entry and control"]
  node_claude["Claude Code"]
  node_opencode["OpenCode"]
  node_skill["Pentest skill<br/>[SKILL.md]"]
  node_command["OpenCode command<br/>[pentest.md]"]
end

subgraph group_assessment["Assessment phases"]
  node_pre_recon["Pre-recon<br/>[pre-recon.md]"]
  node_sast["SAST-lite<br/>[sast.md]"]
  node_recon["Recon<br/>[recon.md]"]
  node_auth_validation["Auth validation<br/>[validate-auth.md]"]
end

subgraph group_findings["Findings and validation"]
  node_vuln_injection["Injection analysis<br/>[vuln-injection.md]"]
  node_vuln_xss["XSS analysis<br/>[vuln-xss.md]"]
  node_vuln_auth["Auth analysis<br/>[vuln-auth.md]"]
  node_vuln_authz["Authz analysis<br/>[vuln-authz.md]"]
  node_vuln_ssrf["SSRF analysis<br/>[vuln-ssrf.md]"]
  node_vuln_misc["Misc analysis<br/>[vuln-misc.md]"]
  node_reconcile["Queue reconcile<br/>[reconcile.md]"]
  node_exploit_injection["Injection exploit"]
  node_exploit_xss["XSS exploit<br/>[exploit-xss.md]"]
  node_exploit_auth["Auth exploit<br/>[exploit-auth.md]"]
  node_exploit_authz["Authz exploit<br/>[exploit-authz.md]"]
  node_exploit_ssrf["SSRF exploit<br/>[exploit-ssrf.md]"]
  node_exploit_misc["Misc exploit<br/>[exploit-misc.md]"]
end

subgraph group_delivery["Evidence and reporting"]
  node_report["Report writer<br/>[report.md]"]
  node_helper["Deliverable MCP"]
  node_deliverables["Scan deliverables"]
  node_audit["Audit logger<br/>[audit-logger.sh]"]
end

subgraph group_integrations["Tools and integrations"]
  node_target(("Target application"))
  node_optional_tools["Optional scanners"]
  node_playwright["Playwright browser"]
end

node_user(("Pentester"))

node_user -->|"starts scan"| node_claude
node_user -.->|"starts scan"| node_opencode
node_claude -->|"loads skill"| node_skill
node_opencode -.->|"runs command"| node_command
node_command -.->|"loads skill"| node_skill
node_skill -->|"dispatches"| node_pre_recon
node_skill -->|"dispatches"| node_sast
node_skill -->|"dispatches"| node_recon
node_skill -->|"conditionally dispatches"| node_auth_validation
node_skill -->|"dispatches"| node_vuln_injection
node_skill -->|"dispatches"| node_vuln_xss
node_skill -->|"dispatches"| node_vuln_auth
node_skill -->|"dispatches"| node_vuln_authz
node_skill -->|"dispatches"| node_vuln_ssrf
node_skill -->|"dispatches"| node_vuln_misc
node_skill -->|"dispatches"| node_reconcile
node_skill -->|"conditionally dispatches"| node_exploit_injection
node_skill -->|"conditionally dispatches"| node_exploit_xss
node_skill -->|"conditionally dispatches"| node_exploit_auth
node_skill -->|"conditionally dispatches"| node_exploit_authz
node_skill -->|"conditionally dispatches"| node_exploit_ssrf
node_skill -->|"conditionally dispatches"| node_exploit_misc
node_skill -->|"dispatches"| node_report
node_pre_recon -->|"assesses"| node_target
node_recon -->|"maps surface"| node_target
node_auth_validation -->|"checks credentials"| node_target
node_vuln_injection -->|"tests"| node_target
node_vuln_xss -->|"tests"| node_target
node_vuln_auth -->|"tests"| node_target
node_vuln_authz -->|"tests"| node_target
node_vuln_ssrf -->|"tests"| node_target
node_vuln_misc -->|"tests"| node_target
node_sast -->|"saves findings"| node_deliverables
node_pre_recon -->|"saves findings"| node_deliverables
node_recon -->|"saves findings"| node_deliverables
node_auth_validation -->|"saves results"| node_deliverables
node_vuln_injection -->|"saves analysis and queue"| node_deliverables
node_vuln_xss -->|"saves analysis and queue"| node_deliverables
node_vuln_auth -->|"saves analysis and queue"| node_deliverables
node_vuln_authz -->|"saves analysis and queue"| node_deliverables
node_vuln_ssrf -->|"saves analysis and queue"| node_deliverables
node_vuln_misc -->|"saves analysis and queue"| node_deliverables
node_reconcile -->|"saves merged queue"| node_deliverables
node_exploit_injection -->|"saves evidence"| node_deliverables
node_exploit_xss -->|"saves evidence"| node_deliverables
node_exploit_auth -->|"saves evidence"| node_deliverables
node_exploit_authz -->|"saves evidence"| node_deliverables
node_exploit_ssrf -->|"saves evidence"| node_deliverables

click node_skill "https://github.com/us/shannon-on-claude-code/blob/main/.claude/skills/pentest/SKILL.md"
click node_command "https://github.com/us/shannon-on-claude-code/blob/main/.opencode/commands/pentest.md"
click node_pre_recon "https://github.com/us/shannon-on-claude-code/blob/main/.claude/agents/pre-recon.md"
click node_sast "https://github.com/us/shannon-on-claude-code/blob/main/.claude/agents/sast.md"
click node_recon "https://github.com/us/shannon-on-claude-code/blob/main/.claude/agents/recon.md"
click node_auth_validation "https://github.com/us/shannon-on-claude-code/blob/main/.claude/agents/validate-auth.md"
click node_vuln_injection "https://github.com/us/shannon-on-claude-code/blob/main/.claude/agents/vuln-injection.md"
click node_vuln_xss "https://github.com/us/shannon-on-claude-code/blob/main/.claude/agents/vuln-xss.md"
click node_vuln_auth "https://github.com/us/shannon-on-claude-code/blob/main/.claude/agents/vuln-auth.md"
click node_vuln_authz "https://github.com/us/shannon-on-claude-code/blob/main/.claude/agents/vuln-authz.md"
click node_vuln_ssrf "https://github.com/us/shannon-on-claude-code/blob/main/.claude/agents/vuln-ssrf.md"
click node_vuln_misc "https://github.com/us/shannon-on-claude-code/blob/main/.claude/agents/vuln-misc.md"
click node_reconcile "https://github.com/us/shannon-on-claude-code/blob/main/.claude/agents/reconcile.md"
click node_exploit_injection "https://github.com/us/shannon-on-claude-code/blob/main/.claude/agents/exploit-injection.md"
click node_exploit_xss "https://github.com/us/shannon-on-claude-code/blob/main/.claude/agents/exploit-xss.md"
click node_exploit_auth "https://github.com/us/shannon-on-claude-code/blob/main/.claude/agents/exploit-auth.md"
click node_exploit_authz "https://github.com/us/shannon-on-claude-code/blob/main/.claude/agents/exploit-authz.md"
click node_exploit_ssrf "https://github.com/us/shannon-on-claude-code/blob/main/.claude/agents/exploit-ssrf.md"
click node_exploit_misc "https://github.com/us/shannon-on-claude-code/blob/main/.claude/agents/exploit-misc.md"
click node_report "https://github.com/us/shannon-on-claude-code/blob/main/.claude/agents/report.md"
click node_helper "https://github.com/us/shannon-on-claude-code/blob/main/native/mcp-stdio-wrapper.mjs"
click node_audit "https://github.com/us/shannon-on-claude-code/blob/main/.claude/hooks/audit-logger.sh"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_claude,node_opencode,node_skill,node_command toneBlue
class node_pre_recon,node_sast,node_recon,node_auth_validation toneAmber
class node_vuln_injection,node_vuln_xss,node_vuln_auth,node_vuln_authz,node_vuln_ssrf,node_vuln_misc,node_reconcile,node_exploit_injection,node_exploit_xss,node_exploit_auth,node_exploit_authz,node_exploit_ssrf,node_exploit_misc toneMint
class node_report,node_helper,node_deliverables,node_audit toneRose
class node_target,node_optional_tools,node_playwright,node_user toneIndigo
```

## Components

### Entry and control

- **Claude Code**
- **OpenCode**
- [Pentest skill](https://github.com/us/shannon-on-claude-code/blob/main/.claude/skills/pentest/SKILL.md): `.claude/skills/pentest/SKILL.md`
- [OpenCode command](https://github.com/us/shannon-on-claude-code/blob/main/.opencode/commands/pentest.md): `.opencode/commands/pentest.md`

### Assessment phases

- [Pre-recon](https://github.com/us/shannon-on-claude-code/blob/main/.claude/agents/pre-recon.md): `.claude/agents/pre-recon.md`
- [SAST-lite](https://github.com/us/shannon-on-claude-code/blob/main/.claude/agents/sast.md): `.claude/agents/sast.md`
- [Recon](https://github.com/us/shannon-on-claude-code/blob/main/.claude/agents/recon.md): `.claude/agents/recon.md`
- [Auth validation](https://github.com/us/shannon-on-claude-code/blob/main/.claude/agents/validate-auth.md): `.claude/agents/validate-auth.md`

### Findings and validation

- [Injection analysis](https://github.com/us/shannon-on-claude-code/blob/main/.claude/agents/vuln-injection.md): `.claude/agents/vuln-injection.md`
- [XSS analysis](https://github.com/us/shannon-on-claude-code/blob/main/.claude/agents/vuln-xss.md): `.claude/agents/vuln-xss.md`
- [Auth analysis](https://github.com/us/shannon-on-claude-code/blob/main/.claude/agents/vuln-auth.md): `.claude/agents/vuln-auth.md`
- [Authz analysis](https://github.com/us/shannon-on-claude-code/blob/main/.claude/agents/vuln-authz.md): `.claude/agents/vuln-authz.md`
- [SSRF analysis](https://github.com/us/shannon-on-claude-code/blob/main/.claude/agents/vuln-ssrf.md): `.claude/agents/vuln-ssrf.md`
- [Misc analysis](https://github.com/us/shannon-on-claude-code/blob/main/.claude/agents/vuln-misc.md): `.claude/agents/vuln-misc.md`
- [Queue reconcile](https://github.com/us/shannon-on-claude-code/blob/main/.claude/agents/reconcile.md): `.claude/agents/reconcile.md`
- [Injection exploit](https://github.com/us/shannon-on-claude-code/blob/main/.claude/agents/exploit-injection.md): `.claude/agents/exploit-injection.md`
- [XSS exploit](https://github.com/us/shannon-on-claude-code/blob/main/.claude/agents/exploit-xss.md): `.claude/agents/exploit-xss.md`
- [Auth exploit](https://github.com/us/shannon-on-claude-code/blob/main/.claude/agents/exploit-auth.md): `.claude/agents/exploit-auth.md`
- [Authz exploit](https://github.com/us/shannon-on-claude-code/blob/main/.claude/agents/exploit-authz.md): `.claude/agents/exploit-authz.md`
- [SSRF exploit](https://github.com/us/shannon-on-claude-code/blob/main/.claude/agents/exploit-ssrf.md): `.claude/agents/exploit-ssrf.md`
- [Misc exploit](https://github.com/us/shannon-on-claude-code/blob/main/.claude/agents/exploit-misc.md): `.claude/agents/exploit-misc.md`

### Evidence and reporting

- [Report writer](https://github.com/us/shannon-on-claude-code/blob/main/.claude/agents/report.md): `.claude/agents/report.md`
- [Deliverable MCP](https://github.com/us/shannon-on-claude-code/blob/main/native/mcp-stdio-wrapper.mjs): `native/mcp-stdio-wrapper.mjs`
- **Scan deliverables**
- [Audit logger](https://github.com/us/shannon-on-claude-code/blob/main/.claude/hooks/audit-logger.sh): `.claude/hooks/audit-logger.sh`

### Tools and integrations

- **Target application**
- **Optional scanners**
- **Playwright browser**

### Other components

- **Pentester**

## Connections

- Pentester → Claude Code: starts scan
- Pentester → OpenCode: starts scan
- Claude Code → Pentest skill: loads skill
- OpenCode → OpenCode command: runs command
- OpenCode command → Pentest skill: loads skill
- Pentest skill → Pre-recon: dispatches
- Pentest skill → SAST-lite: dispatches
- Pentest skill → Recon: dispatches
- Pentest skill → Auth validation: conditionally dispatches
- Pentest skill → Injection analysis: dispatches
- Pentest skill → XSS analysis: dispatches
- Pentest skill → Auth analysis: dispatches
- Pentest skill → Authz analysis: dispatches
- Pentest skill → SSRF analysis: dispatches
- Pentest skill → Misc analysis: dispatches
- Pentest skill → Queue reconcile: dispatches
- Pentest skill → Injection exploit: conditionally dispatches
- Pentest skill → XSS exploit: conditionally dispatches
- Pentest skill → Auth exploit: conditionally dispatches
- Pentest skill → Authz exploit: conditionally dispatches
- Pentest skill → SSRF exploit: conditionally dispatches
- Pentest skill → Misc exploit: conditionally dispatches
- Pentest skill → Report writer: dispatches
- Pre-recon → Target application: assesses
- Recon → Target application: maps surface
- Auth validation → Target application: checks credentials
- Injection analysis → Target application: tests
- XSS analysis → Target application: tests
- Auth analysis → Target application: tests
- Authz analysis → Target application: tests
- SSRF analysis → Target application: tests
- Misc analysis → Target application: tests
- SAST-lite → Scan deliverables: saves findings
- Pre-recon → Scan deliverables: saves findings
- Recon → Scan deliverables: saves findings
- Auth validation → Scan deliverables: saves results
- Injection analysis → Scan deliverables: saves analysis and queue
- XSS analysis → Scan deliverables: saves analysis and queue
- Auth analysis → Scan deliverables: saves analysis and queue
- Authz analysis → Scan deliverables: saves analysis and queue
- SSRF analysis → Scan deliverables: saves analysis and queue
- Misc analysis → Scan deliverables: saves analysis and queue
- Queue reconcile → Scan deliverables: saves merged queue
- Injection exploit → Scan deliverables: saves evidence
- XSS exploit → Scan deliverables: saves evidence
- Auth exploit → Scan deliverables: saves evidence
- Authz exploit → Scan deliverables: saves evidence
- SSRF exploit → Scan deliverables: saves evidence
