# prasadkurapati/linkedin-skills architecture

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

- Interactive diagram: https://gitdiagram.com/prasadkurapati/linkedin-skills
- Repository: https://github.com/prasadkurapati/linkedin-skills

## Overview

This repository is a set of LinkedIn marketing skills for Claude Code, Codex, and compatible agents, with optional Python helpers for reading LinkedIn data, generating images, and publishing. The typical user workflow is to request a task, receive a draft or analysis, and explicitly approve publishing. The README documents a broad set of distinct content, engagement, and profile workflows. The sampled source confirms the shared helper and integration layers; skill-level call wiring is not fully sampled, so uncertain links are omitted.

Main entry points: [`lib/backend_selector.py`](https://github.com/prasadkurapati/linkedin-skills/blob/main/lib/backend_selector.py) (Backend selector), [`lib/apify_client.py`](https://github.com/prasadkurapati/linkedin-skills/blob/main/lib/apify_client.py) (Apify client), [`lib/publora_client.py`](https://github.com/prasadkurapati/linkedin-skills/blob/main/lib/publora_client.py) (Publora client), [`lib/pixfaro_client.py`](https://github.com/prasadkurapati/linkedin-skills/blob/main/lib/pixfaro_client.py) (Pixfaro client)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_creation["Content creation"]
  node_writer["Post writer<br/>[SKILL.md]"]
  node_humanizer["Humanizer<br/>[SKILL.md]"]
  node_hook["Hook extractor<br/>[SKILL.md]"]
  node_repurposer["Repurposer<br/>[SKILL.md]"]
end

subgraph group_engagement["Engagement workflows"]
  node_comment["Comment drafter<br/>[SKILL.md]"]
  node_reply["Reply handler<br/>[SKILL.md]"]
  node_monitor["Engagement monitor<br/>[SKILL.md]"]
  node_analytics["Engager analytics<br/>[SKILL.md]"]
end

subgraph group_strategy["Planning and optimization"]
  node_planner["Content planner<br/>[SKILL.md]"]
  node_profile["Profile optimizer<br/>[SKILL.md]"]
  node_advocacy["Employee advocacy<br/>[SKILL.md]"]
  node_interviewer["Interviewer<br/>[SKILL.md]"]
end

subgraph group_runtime["Shared runtime"]
  node_approval["Approval card<br/>[approval.py]"]
  node_backend["Backend selector"]
  node_parser["URL parser<br/>[url_parser.py]"]
  node_apify["Apify client<br/>[apify_client.py]"]
  node_publora["Publora client<br/>[publora_client.py]"]
  node_pixfaro["Pixfaro client<br/>[pixfaro_client.py]"]
end

node_user(("User"))
node_linkedin(("LinkedIn"))
node_apify_service(("Apify"))
node_publora_service(("Publora"))
node_pixfaro_service(("Pixfaro"))

node_user -->|"requests"| node_writer
node_user -->|"requests"| node_humanizer
node_user -->|"requests"| node_hook
node_user -->|"requests"| node_repurposer
node_user -->|"requests"| node_comment
node_user -->|"requests"| node_reply
node_user -->|"requests"| node_monitor
node_user -->|"requests"| node_analytics
node_user -->|"requests"| node_planner
node_user -->|"requests"| node_profile
node_user -->|"requests"| node_advocacy
node_user -->|"requests"| node_interviewer
node_backend -->|"formats draft"| node_approval
node_backend -->|"parses URLs"| node_parser
node_backend -->|"fetches data"| node_apify
node_backend -->|"publishes actions"| node_publora
node_backend -->|"generates images"| node_pixfaro
node_apify -->|"reads posts"| node_apify_service
node_publora -->|"sends actions"| node_publora_service
node_pixfaro -->|"requests images"| node_pixfaro_service
node_publora_service -->|"publishes to"| node_linkedin

click node_writer "https://github.com/prasadkurapati/linkedin-skills/blob/main/skills/linkedin-post-writer/SKILL.md"
click node_humanizer "https://github.com/prasadkurapati/linkedin-skills/blob/main/skills/linkedin-humanizer/SKILL.md"
click node_hook "https://github.com/prasadkurapati/linkedin-skills/blob/main/skills/linkedin-hook-extractor/SKILL.md"
click node_repurposer "https://github.com/prasadkurapati/linkedin-skills/blob/main/skills/linkedin-repurposer/SKILL.md"
click node_comment "https://github.com/prasadkurapati/linkedin-skills/blob/main/skills/linkedin-comment-drafter/SKILL.md"
click node_reply "https://github.com/prasadkurapati/linkedin-skills/blob/main/skills/linkedin-reply-handler/SKILL.md"
click node_monitor "https://github.com/prasadkurapati/linkedin-skills/blob/main/skills/linkedin-thread-monitor/SKILL.md"
click node_analytics "https://github.com/prasadkurapati/linkedin-skills/blob/main/skills/linkedin-engager-analytics/SKILL.md"
click node_planner "https://github.com/prasadkurapati/linkedin-skills/blob/main/skills/linkedin-content-planner/SKILL.md"
click node_profile "https://github.com/prasadkurapati/linkedin-skills/blob/main/skills/linkedin-profile-optimizer/SKILL.md"
click node_advocacy "https://github.com/prasadkurapati/linkedin-skills/blob/main/skills/linkedin-employee-advocacy/SKILL.md"
click node_interviewer "https://github.com/prasadkurapati/linkedin-skills/blob/main/skills/linkedin-interviewer/SKILL.md"
click node_approval "https://github.com/prasadkurapati/linkedin-skills/blob/main/lib/approval.py"
click node_backend "https://github.com/prasadkurapati/linkedin-skills/blob/main/lib/backend_selector.py"
click node_parser "https://github.com/prasadkurapati/linkedin-skills/blob/main/lib/url_parser.py"
click node_apify "https://github.com/prasadkurapati/linkedin-skills/blob/main/lib/apify_client.py"
click node_publora "https://github.com/prasadkurapati/linkedin-skills/blob/main/lib/publora_client.py"
click node_pixfaro "https://github.com/prasadkurapati/linkedin-skills/blob/main/lib/pixfaro_client.py"

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_writer,node_humanizer,node_hook,node_repurposer,node_user toneBlue
class node_comment,node_reply,node_monitor,node_analytics toneAmber
class node_planner,node_profile,node_advocacy,node_interviewer,node_apify_service toneMint
class node_approval,node_backend,node_parser,node_apify,node_publora,node_pixfaro toneRose
class node_linkedin,node_publora_service,node_pixfaro_service toneIndigo
```

## Components

### Content creation

- [Post writer](https://github.com/prasadkurapati/linkedin-skills/blob/main/skills/linkedin-post-writer/SKILL.md): `skills/linkedin-post-writer/SKILL.md`
- [Humanizer](https://github.com/prasadkurapati/linkedin-skills/blob/main/skills/linkedin-humanizer/SKILL.md): `skills/linkedin-humanizer/SKILL.md`
- [Hook extractor](https://github.com/prasadkurapati/linkedin-skills/blob/main/skills/linkedin-hook-extractor/SKILL.md): `skills/linkedin-hook-extractor/SKILL.md`
- [Repurposer](https://github.com/prasadkurapati/linkedin-skills/blob/main/skills/linkedin-repurposer/SKILL.md): `skills/linkedin-repurposer/SKILL.md`

### Engagement workflows

- [Comment drafter](https://github.com/prasadkurapati/linkedin-skills/blob/main/skills/linkedin-comment-drafter/SKILL.md): `skills/linkedin-comment-drafter/SKILL.md`
- [Reply handler](https://github.com/prasadkurapati/linkedin-skills/blob/main/skills/linkedin-reply-handler/SKILL.md): `skills/linkedin-reply-handler/SKILL.md`
- [Engagement monitor](https://github.com/prasadkurapati/linkedin-skills/blob/main/skills/linkedin-thread-monitor/SKILL.md): `skills/linkedin-thread-monitor/SKILL.md`
- [Engager analytics](https://github.com/prasadkurapati/linkedin-skills/blob/main/skills/linkedin-engager-analytics/SKILL.md): `skills/linkedin-engager-analytics/SKILL.md`

### Planning and optimization

- [Content planner](https://github.com/prasadkurapati/linkedin-skills/blob/main/skills/linkedin-content-planner/SKILL.md): `skills/linkedin-content-planner/SKILL.md`
- [Profile optimizer](https://github.com/prasadkurapati/linkedin-skills/blob/main/skills/linkedin-profile-optimizer/SKILL.md): `skills/linkedin-profile-optimizer/SKILL.md`
- [Employee advocacy](https://github.com/prasadkurapati/linkedin-skills/blob/main/skills/linkedin-employee-advocacy/SKILL.md): `skills/linkedin-employee-advocacy/SKILL.md`
- [Interviewer](https://github.com/prasadkurapati/linkedin-skills/blob/main/skills/linkedin-interviewer/SKILL.md): `skills/linkedin-interviewer/SKILL.md`

### Shared runtime

- [Approval card](https://github.com/prasadkurapati/linkedin-skills/blob/main/lib/approval.py): `lib/approval.py`
- [Backend selector](https://github.com/prasadkurapati/linkedin-skills/blob/main/lib/backend_selector.py): `lib/backend_selector.py`
- [URL parser](https://github.com/prasadkurapati/linkedin-skills/blob/main/lib/url_parser.py): `lib/url_parser.py`
- [Apify client](https://github.com/prasadkurapati/linkedin-skills/blob/main/lib/apify_client.py): `lib/apify_client.py`
- [Publora client](https://github.com/prasadkurapati/linkedin-skills/blob/main/lib/publora_client.py): `lib/publora_client.py`
- [Pixfaro client](https://github.com/prasadkurapati/linkedin-skills/blob/main/lib/pixfaro_client.py): `lib/pixfaro_client.py`

### Other components

- **User**
- **LinkedIn**
- **Apify**
- **Publora**
- **Pixfaro**

## Connections

- User → Post writer: requests
- User → Humanizer: requests
- User → Hook extractor: requests
- User → Repurposer: requests
- User → Comment drafter: requests
- User → Reply handler: requests
- User → Engagement monitor: requests
- User → Engager analytics: requests
- User → Content planner: requests
- User → Profile optimizer: requests
- User → Employee advocacy: requests
- User → Interviewer: requests
- Backend selector → Approval card: formats draft
- Backend selector → URL parser: parses URLs
- Backend selector → Apify client: fetches data
- Backend selector → Publora client: publishes actions
- Backend selector → Pixfaro client: generates images
- Apify client → Apify: reads posts
- Publora client → Publora: sends actions
- Pixfaro client → Pixfaro: requests images
- Publora → LinkedIn: publishes to
