diff --git a/skills/sdlc/sdlc-diagram.md b/skills/sdlc/sdlc-diagram.md
new file mode 100644
index 0000000..c484b90
--- /dev/null
+++ b/skills/sdlc/sdlc-diagram.md
@@ -0,0 +1,159 @@
+# SDLC Pipeline Diagram
+
+## Full Lifecycle
+
+```mermaid
+flowchart TD
+ subgraph Origin["Task Origin"]
+ GH["GitHub Issue"]
+ PP["Paperclip Issue"]
+ end
+
+ subgraph Approval["Board Gate"]
+ BA{"Board Approval
Required?"}
+ REQ["Request Board Approval
→ Issue blocked"]
+ APPROVED["Approved"]
+ end
+
+ subgraph Detection["Pipeline Detection"]
+ DET{"Changed files?"}
+ PA["Pipeline A
Plugin / Feature"]
+ PB["Pipeline B
Infrastructure"]
+ end
+
+ subgraph PipelineA["Pipeline A: Plugin / Feature Changes"]
+ direction TB
+ A_ENG["Engineer writes code
(Gandalf)"]
+ A_PR["Create PR → main
cc @cpfarhood"]
+ A_CI{"CI Passes?"}
+ A_UAT["UAT Review
(Pixel Patty)
E2E browser testing"]
+ A_UAT_PASS{"UAT Approved?"}
+ A_QA["QA Review
(Regression Regina)
Test coverage, regressions"]
+ A_QA_PASS{"QA Approved?"}
+ A_CTO["CTO Review
(Null Pointer Nancy)
Architecture, security"]
+ A_CTO_PASS{"CTO Approved?"}
+ A_CEO["CEO Merge
(Countess)"]
+ end
+
+ subgraph PipelineB["Pipeline B: Infrastructure Changes"]
+ direction TB
+ B_ENG["Engineer writes code
(Gandalf / Hugh)"]
+ B_PR["Create PR → main
cc @cpfarhood"]
+ B_CI{"CI Passes?"}
+ B_QA["QA Review
(Regression Regina)"]
+ B_QA_PASS{"QA Approved?"}
+ B_CTO["CTO Review
(Null Pointer Nancy)"]
+ B_CTO_PASS{"CTO Approved?"}
+ B_CEO["CEO Merge
(Countess)"]
+ end
+
+ subgraph Result["Outcome"]
+ MERGED["Merged to main
✓ Production"]
+ RETURNED["Returned to Engineer
Fix and resubmit"]
+ end
+
+ %% Origin routing
+ GH --> BA
+ PP --> DET
+ BA -->|"originKind: github"| REQ
+ REQ -->|"PAPERCLIP_APPROVAL_STATUS"| APPROVED
+ BA -->|"originKind: other"| DET
+ APPROVED --> DET
+
+ %% Pipeline detection
+ DET -->|"headlamp-*-plugin/ code"| PA
+ DET -->|".github/, infra/, org/"| PB
+
+ %% Pipeline A flow
+ PA --> A_ENG --> A_PR --> A_CI
+ A_CI -->|"Pass"| A_UAT
+ A_CI -->|"Fail"| RETURNED
+ A_UAT --> A_UAT_PASS
+ A_UAT_PASS -->|"Pass"| A_QA
+ A_UAT_PASS -->|"Fail"| RETURNED
+ A_QA --> A_QA_PASS
+ A_QA_PASS -->|"Pass"| A_CTO
+ A_QA_PASS -->|"Fail"| RETURNED
+ A_CTO --> A_CTO_PASS
+ A_CTO_PASS -->|"Pass"| A_CEO
+ A_CTO_PASS -->|"Fail — CEO rejection"| A_CTO
+ A_CTO_PASS -->|"Fail — other"| RETURNED
+ A_CEO --> MERGED
+
+ %% Pipeline B flow
+ PB --> B_ENG --> B_PR --> B_CI
+ B_CI -->|"Pass"| B_QA
+ B_CI -->|"Fail"| RETURNED
+ B_QA --> B_QA_PASS
+ B_QA_PASS -->|"Pass"| B_CTO
+ B_QA_PASS -->|"Fail"| RETURNED
+ B_CTO --> B_CTO_PASS
+ B_CTO_PASS -->|"Pass"| B_CEO
+ B_CTO_PASS -->|"Fail — CEO rejection"| B_CTO
+ B_CTO_PASS -->|"Fail — other"| RETURNED
+ B_CEO --> MERGED
+
+ RETURNED -->|"Fix and resubmit"| A_PR
+ RETURNED -->|"Fix and resubmit"| B_PR
+
+ %% Styling
+ classDef gate fill:#f9e4e4,stroke:#c0392b,color:#000
+ classDef pass fill:#e4f9e4,stroke:#27ae60,color:#000
+ classDef agent fill:#e4e9f9,stroke:#2980b9,color:#000
+ classDef decision fill:#fef9e7,stroke:#f39c12,color:#000
+
+ class BA,A_CI,A_UAT_PASS,A_QA_PASS,A_CTO_PASS,B_CI,B_QA_PASS,B_CTO_PASS,DET decision
+ class A_UAT,A_QA,A_CTO,B_QA,B_CTO gate
+ class MERGED pass
+ class A_ENG,B_ENG,A_CEO,B_CEO agent
+```
+
+## PR Review SLA
+
+```mermaid
+gantt
+ title PR Review SLA Timeline (per stage)
+ dateFormat X
+ axisFormat %d h
+
+ section SLA Windows
+ Normal review window :done, 0, 24
+ CEO escalation at 24h :active, 24, 48
+ SLA violation at 48h :crit, 48, 72
+ Release blocker at 72h :crit, 72, 96
+```
+
+## Handoff Protocol
+
+```mermaid
+sequenceDiagram
+ participant Src as Source Agent
+ participant API as Paperclip API
+ participant Tgt as Target Agent
+
+ Src->>API: PATCH /issues/{id}
assigneeAgentId: target
+ Src->>API: PATCH /issues/{id}
status: "todo"
+ Note over Src,API: Never use "in_review" —
it won't trigger inbox
+ Src->>API: POST /issues/{id}/release
X-Paperclip-Run-Id header
+ API-->>Tgt: Inbox wake
+ Tgt->>API: POST /issues/{id}/checkout
+ Tgt->>Tgt: Begin work
+```
+
+## Issue Status Lifecycle
+
+```mermaid
+stateDiagram-v2
+ [*] --> backlog: Created (unscheduled)
+ [*] --> todo: Created (ready)
+ backlog --> todo: Scheduled
+ todo --> in_progress: Checkout
+ in_progress --> in_review: Awaiting feedback
+ in_progress --> blocked: External blocker
+ in_progress --> done: Work complete
+ in_review --> in_progress: Feedback received
+ blocked --> in_progress: Unblocked
+ in_progress --> cancelled: Abandoned
+ todo --> cancelled: Abandoned
+ backlog --> cancelled: Abandoned
+```