# andrew-shwetzer/career-ops-plugin architecture

> Architecture diagram of the GitHub repository andrew-shwetzer/career-ops-plugin, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-06-20). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/andrew-shwetzer/career-ops-plugin
- Repository: https://github.com/andrew-shwetzer/career-ops-plugin

## Overview

1. **What this repo is**
   - `career-ops` is a **Claude Cowork plugin** made almost entirely of prompt assets and reference docs, not a traditional application with runtime code.
   - Its architecture is a **workflow system for job search**: user-facing commands and skills guide Claude to evaluate roles, tailor resumes, scan job boards, track applications, and generate outreach.

2. **Top-level integration boundary**
   - `.claude-plugin/plugin.json` is the plugin entrypoint and packaging boundary.
   - It tells Claude Cowork how to discover the plugin’s commands, skills, and supporting assets.
   - This repo is therefore organized around **content modules** that Claude loads and executes conversationally, rather than services that run independently.

3. **User-facing command layer**
   - `commands/` contains the main conversational entry points:
     - `setup.md` for onboarding/profile setup
     - `quick-eval.md` for fast posting review
   - These are the “short verbs” users invoke in chat, and they likely route into the deeper skill system.
   - This layer is the primary **UX boundary**: it translates a user’s intent into a structured workflow.

4. **Skill modules as the functional core**
   - `skills/` contains one folder per major capability:
     - `apply`, `compare`, `evaluate`, `help`, `outreach`, `research`, `scan`, `tailor-resume`, `track`, `triage`
   - Each skill has a `SKILL.md`, which acts like a domain-specific operating manual for Claude.
   - Architecturally, these skills are the **core business logic**, but expressed as promptable procedures instead of executable code.

5. **Workflow decomposition**
   - The repo’s capabilities form a pipeline:
     - **setup** establishes the user profile and baseline resume data
     - **evaluate** scores a role and maps fit
     - **tailor-resume** converts that evaluation into an ATS-targeted resume
     - **scan** finds openings
     - **triage** ranks discovered roles
     - **track** manages applications over time
     - **apply** helps complete forms
     - **research**, **outreach**, and **compare** support decision-making and follow-up
   - This is the clearest diagrammatic flow: **profile → opportunity discovery → evaluation → tailoring → application tracking/outreach**.

6. **Shared domain knowledge and schemas**
   - `references/` centralizes reusable domain assets:
     - `profile-schema.md`
     - `resume-template.html`
     - `scoring-rubric.md`
     - `archetypes.md`
     - `states.md`
     - `ats-rules.md`
     - `ats-endpoints.md`
   - These files are the **shared knowledge layer** that keeps evaluation, tailoring, and tracking consistent.
   - In architecture terms, this directory acts like a **reference data service**, but static and local.

7. **Industry-specific scoring model**
   - `references/archetypes.md` and `references/scoring-rubric.md` define the job-family model used by evaluation.
   - The README says there are **15 archetypes**, and scoring adapts by industry or role type.
   - This is important because the system does not use one generic resume lens; it adjusts evaluation weights and language by archetype, which affects both scoring and output tone.

8. **ATS and job-scan integration boundary**
   - `references/ats-endpoints.md` and `references/ats-rules.md` imply a boundary to external career portals or ATS systems.
   - The `scan` skill likely relies on these definitions to search company openings, while `apply` likely uses them to help with form-filling.
   - This is the main place where the plugin touches **external systems**, beyond Claude itself and web search.

9. **Specialized orchestration via agents**
   - `agents/batch-scanner.md` suggests a higher-level agent role for bulk scanning or batch processing.
   - Compared with skills, agents usually represent **longer-running or multi-step orchestration patterns**.
   - In a diagram, this would sit above the `scan`/`triage` path as a coordinator for processing many openings at once.

10. **Help and discoverability**
   - `skills/help/SKILL.md` exists as a fallback and navigation layer.
   - This is useful in architecture because the system is intended to be **menu-like and self-describing**: users can ask what is available, then move into a specific workflow.
   - It reduces coupling by letting users discover capabilities without knowing internal file names.

11. **Privacy and local state**
   - The README states user data stays local, and a `data/` directory is excluded from git, even though it is not shown in the tree.
   - That implies a strong boundary between **static repository assets** and **user-specific working state** such as profiles, resumes, and applications.
   - For an architecture diagram, treat `data/` as runtime state outside version control.

12. **Technology profile**
   - This is a **documentation-driven plugin** for Claude Cowork, implemented with Markdown-based commands, skills, agents, and reference files.
   - There is no standalone backend, database, or frontend in the repo; the “runtime” is Claude executing these instructions.
   - The system’s behavior emerges from the combination of plugin manifest, prompt files, and reference templates.

13. **Overall diagram summary**
   - Best represented as:
     - **User chat intents** → **plugin command entrypoints** → **skills/agent workflows** → **shared references/rules/templates** → **Claude-generated outputs**
   - Side boundaries:
     - **local user data** for profile/application state
     - **external web/ATS services** for job discovery and compensation/portal lookup
   - The repo is less about code execution and more about **structured operational knowledge for job search automation**.

Main entry points: [`.claude-plugin/plugin.json`](https://github.com/andrew-shwetzer/career-ops-plugin/blob/main/.claude-plugin/plugin.json) (Plugin manifest), [`skills/evaluate/SKILL.md`](https://github.com/andrew-shwetzer/career-ops-plugin/blob/main/skills/evaluate/SKILL.md) (Evaluate), [`skills/tailor-resume/SKILL.md`](https://github.com/andrew-shwetzer/career-ops-plugin/blob/main/skills/tailor-resume/SKILL.md) (Tailor resume), [`skills/scan/SKILL.md`](https://github.com/andrew-shwetzer/career-ops-plugin/blob/main/skills/scan/SKILL.md) (Scan)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_plugin["Plugin boundary"]
  node_manifest["Plugin manifest<br/>[plugin.json]"]
end

subgraph group_workflows["Workflows"]
  node_setup_cmd["Setup<br/>command<br/>[setup.md]"]
  node_quick_eval_cmd["Quick eval<br/>command<br/>[quick-eval.md]"]
  node_help_skill["Help<br/>skill<br/>[SKILL.md]"]
  node_evaluate_skill["Evaluate<br/>skill<br/>[SKILL.md]"]
  node_tailor_skill["Tailor resume<br/>skill<br/>[SKILL.md]"]
  node_scan_skill["Scan<br/>skill<br/>[SKILL.md]"]
  node_triage_skill["Triage<br/>skill<br/>[SKILL.md]"]
  node_track_skill["Track<br/>skill<br/>[SKILL.md]"]
  node_apply_skill["Apply<br/>skill<br/>[SKILL.md]"]
  node_research_skill["Research<br/>skill<br/>[SKILL.md]"]
  node_outreach_skill["Outreach<br/>skill<br/>[SKILL.md]"]
  node_compare_skill["Compare<br/>skill<br/>[SKILL.md]"]
  node_batch_scanner["Batch scanner<br/>agent<br/>[batch-scanner.md]"]
end

subgraph group_reference["References"]
  node_profile_schema["Profile schema<br/>[profile-schema.md]"]
  node_resume_template["Resume template"]
  node_scoring_rubric["Scoring rubric<br/>[scoring-rubric.md]"]
  node_archetypes["Archetypes<br/>job model<br/>[archetypes.md]"]
  node_states["States<br/>[states.md]"]
end

subgraph group_integration["Integrations"]
  node_ats_rules["ATS rules<br/>[ats-rules.md]"]
  node_ats_endpoints["ATS endpoints<br/>integration map<br/>[ats-endpoints.md]"]
end

node_manifest -->|"loads"| node_setup_cmd
node_manifest -->|"loads"| node_quick_eval_cmd
node_manifest -->|"loads"| node_help_skill
node_manifest -->|"loads"| node_evaluate_skill
node_manifest -->|"loads"| node_tailor_skill
node_manifest -->|"loads"| node_scan_skill
node_manifest -->|"loads"| node_triage_skill
node_manifest -->|"loads"| node_track_skill
node_manifest -->|"loads"| node_apply_skill
node_manifest -->|"loads"| node_research_skill
node_manifest -->|"loads"| node_outreach_skill
node_manifest -->|"loads"| node_compare_skill
node_manifest -->|"loads"| node_batch_scanner
node_setup_cmd -->|"uses"| node_profile_schema
node_quick_eval_cmd -->|"routes to"| node_evaluate_skill
node_help_skill -.->|"navigates"| node_manifest
node_evaluate_skill -->|"uses"| node_scoring_rubric
node_evaluate_skill -->|"uses"| node_archetypes
node_evaluate_skill -->|"reads"| node_profile_schema
node_tailor_skill -->|"uses"| node_resume_template
node_tailor_skill -->|"uses"| node_ats_rules
node_tailor_skill -->|"uses"| node_scoring_rubric
node_scan_skill -->|"consults"| node_ats_endpoints
node_scan_skill -.->|"delegates"| node_batch_scanner
node_triage_skill -->|"uses"| node_scoring_rubric
node_track_skill -->|"uses"| node_states
node_apply_skill -->|"uses"| node_ats_rules
node_apply_skill -.->|"touches"| node_ats_endpoints
node_research_skill -->|"uses"| node_archetypes
node_outreach_skill -->|"uses"| node_profile_schema
node_compare_skill -->|"uses"| node_scoring_rubric
node_batch_scanner -->|"orchestrates"| node_scan_skill
node_batch_scanner -->|"orchestrates"| node_triage_skill
node_track_skill -.->|"leads to"| node_outreach_skill
node_evaluate_skill -->|"feeds"| node_tailor_skill
node_scan_skill -->|"feeds"| node_triage_skill
node_triage_skill -.->|"feeds"| node_compare_skill

click node_manifest "https://github.com/andrew-shwetzer/career-ops-plugin/blob/main/.claude-plugin/plugin.json"
click node_setup_cmd "https://github.com/andrew-shwetzer/career-ops-plugin/blob/main/commands/setup.md"
click node_quick_eval_cmd "https://github.com/andrew-shwetzer/career-ops-plugin/blob/main/commands/quick-eval.md"
click node_help_skill "https://github.com/andrew-shwetzer/career-ops-plugin/blob/main/skills/help/SKILL.md"
click node_evaluate_skill "https://github.com/andrew-shwetzer/career-ops-plugin/blob/main/skills/evaluate/SKILL.md"
click node_tailor_skill "https://github.com/andrew-shwetzer/career-ops-plugin/blob/main/skills/tailor-resume/SKILL.md"
click node_scan_skill "https://github.com/andrew-shwetzer/career-ops-plugin/blob/main/skills/scan/SKILL.md"
click node_triage_skill "https://github.com/andrew-shwetzer/career-ops-plugin/blob/main/skills/triage/SKILL.md"
click node_track_skill "https://github.com/andrew-shwetzer/career-ops-plugin/blob/main/skills/track/SKILL.md"
click node_apply_skill "https://github.com/andrew-shwetzer/career-ops-plugin/blob/main/skills/apply/SKILL.md"
click node_research_skill "https://github.com/andrew-shwetzer/career-ops-plugin/blob/main/skills/research/SKILL.md"
click node_outreach_skill "https://github.com/andrew-shwetzer/career-ops-plugin/blob/main/skills/outreach/SKILL.md"
click node_compare_skill "https://github.com/andrew-shwetzer/career-ops-plugin/blob/main/skills/compare/SKILL.md"
click node_batch_scanner "https://github.com/andrew-shwetzer/career-ops-plugin/blob/main/agents/batch-scanner.md"
click node_profile_schema "https://github.com/andrew-shwetzer/career-ops-plugin/blob/main/references/profile-schema.md"
click node_resume_template "https://github.com/andrew-shwetzer/career-ops-plugin/blob/main/references/resume-template.html"
click node_scoring_rubric "https://github.com/andrew-shwetzer/career-ops-plugin/blob/main/references/scoring-rubric.md"
click node_archetypes "https://github.com/andrew-shwetzer/career-ops-plugin/blob/main/references/archetypes.md"
click node_ats_rules "https://github.com/andrew-shwetzer/career-ops-plugin/blob/main/references/ats-rules.md"
click node_ats_endpoints "https://github.com/andrew-shwetzer/career-ops-plugin/blob/main/references/ats-endpoints.md"
click node_states "https://github.com/andrew-shwetzer/career-ops-plugin/blob/main/references/states.md"

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_manifest toneBlue
class node_setup_cmd,node_quick_eval_cmd,node_help_skill,node_evaluate_skill,node_tailor_skill,node_scan_skill,node_triage_skill,node_track_skill,node_apply_skill,node_research_skill,node_outreach_skill,node_compare_skill,node_batch_scanner toneAmber
class node_profile_schema,node_resume_template,node_scoring_rubric,node_archetypes,node_states toneMint
class node_ats_rules,node_ats_endpoints toneRose
```

## Components

### Plugin boundary

Claude Cowork plugin packaging and entrypoints.

- [Plugin manifest](https://github.com/andrew-shwetzer/career-ops-plugin/blob/main/.claude-plugin/plugin.json): plugin manifest · Claude Cowork entrypoint and asset discovery boundary. · `.claude-plugin/plugin.json`

### Workflows

User-facing commands and skill modules that drive job-search operations.

- [Setup](https://github.com/andrew-shwetzer/career-ops-plugin/blob/main/commands/setup.md): command · Onboarding command for profile and baseline resume setup. · `commands/setup.md`
- [Quick eval](https://github.com/andrew-shwetzer/career-ops-plugin/blob/main/commands/quick-eval.md): command · Fast command for reviewing a posting and judging fit. · `commands/quick-eval.md`
- [Help](https://github.com/andrew-shwetzer/career-ops-plugin/blob/main/skills/help/SKILL.md): skill · Navigation and discoverability skill. · `skills/help/SKILL.md`
- [Evaluate](https://github.com/andrew-shwetzer/career-ops-plugin/blob/main/skills/evaluate/SKILL.md): skill · Scores roles and maps candidate fit. · `skills/evaluate/SKILL.md`
- [Tailor resume](https://github.com/andrew-shwetzer/career-ops-plugin/blob/main/skills/tailor-resume/SKILL.md): skill · Adapts resume content to a target role. · `skills/tailor-resume/SKILL.md`
- [Scan](https://github.com/andrew-shwetzer/career-ops-plugin/blob/main/skills/scan/SKILL.md): skill · Finds openings and job-board leads. · `skills/scan/SKILL.md`
- [Triage](https://github.com/andrew-shwetzer/career-ops-plugin/blob/main/skills/triage/SKILL.md): skill · Ranks discovered roles and prioritizes action. · `skills/triage/SKILL.md`
- [Track](https://github.com/andrew-shwetzer/career-ops-plugin/blob/main/skills/track/SKILL.md): skill · Manages application status over time. · `skills/track/SKILL.md`
- [Apply](https://github.com/andrew-shwetzer/career-ops-plugin/blob/main/skills/apply/SKILL.md): skill · Supports application forms and submission steps. · `skills/apply/SKILL.md`
- [Research](https://github.com/andrew-shwetzer/career-ops-plugin/blob/main/skills/research/SKILL.md): skill · Gathers company and role context. · `skills/research/SKILL.md`
- [Outreach](https://github.com/andrew-shwetzer/career-ops-plugin/blob/main/skills/outreach/SKILL.md): skill · Generates follow-up and networking messages. · `skills/outreach/SKILL.md`
- [Compare](https://github.com/andrew-shwetzer/career-ops-plugin/blob/main/skills/compare/SKILL.md): skill · Compares multiple opportunities or paths. · `skills/compare/SKILL.md`
- [Batch scanner](https://github.com/andrew-shwetzer/career-ops-plugin/blob/main/agents/batch-scanner.md): agent · Higher-level orchestration for bulk scanning and processing. · `agents/batch-scanner.md`

### References

Shared schemas, rules, templates, and domain knowledge.

- [Profile schema](https://github.com/andrew-shwetzer/career-ops-plugin/blob/main/references/profile-schema.md): schema · Shared structure for user profile data. · `references/profile-schema.md`
- [Resume template](https://github.com/andrew-shwetzer/career-ops-plugin/blob/main/references/resume-template.html): template · Shared HTML resume output template. · `references/resume-template.html`
- [Scoring rubric](https://github.com/andrew-shwetzer/career-ops-plugin/blob/main/references/scoring-rubric.md): rubric · Role-fit scoring model used by evaluation. · `references/scoring-rubric.md`
- [Archetypes](https://github.com/andrew-shwetzer/career-ops-plugin/blob/main/references/archetypes.md): job model · Industry and role-family classification used to tune scoring. · `references/archetypes.md`
- [States](https://github.com/andrew-shwetzer/career-ops-plugin/blob/main/references/states.md): workflow states · Application and tracking state definitions. · `references/states.md`

### Integrations

External ATS and job-board touchpoints.

- [ATS rules](https://github.com/andrew-shwetzer/career-ops-plugin/blob/main/references/ats-rules.md): ats rules · Constraints and heuristics for ATS-friendly output. · `references/ats-rules.md`
- [ATS endpoints](https://github.com/andrew-shwetzer/career-ops-plugin/blob/main/references/ats-endpoints.md): integration map · External portal and ATS touchpoints. · `references/ats-endpoints.md`

## Connections

- Plugin manifest → Setup: loads · Manifest exposes the onboarding command.
- Plugin manifest → Quick eval: loads · Manifest exposes the quick evaluation command.
- Plugin manifest → Help: loads · Manifest exposes discoverability support.
- Plugin manifest → Evaluate: loads · Manifest exposes core evaluation workflow.
- Plugin manifest → Tailor resume: loads · Manifest exposes resume tailoring workflow.
- Plugin manifest → Scan: loads · Manifest exposes opportunity discovery workflow.
- Plugin manifest → Triage: loads · Manifest exposes prioritization workflow.
- Plugin manifest → Track: loads · Manifest exposes application tracking workflow.
- Plugin manifest → Apply: loads · Manifest exposes application assistance workflow.
- Plugin manifest → Research: loads · Manifest exposes research workflow.
- Plugin manifest → Outreach: loads · Manifest exposes outreach workflow.
- Plugin manifest → Compare: loads · Manifest exposes comparison workflow.
- Plugin manifest → Batch scanner: loads · Manifest exposes specialized orchestration agent.
- Setup → Profile schema: uses · Setup populates and validates user profile structure.
- Quick eval → Evaluate: routes to · Quick evaluation hands off to role-fit analysis.
- Help → Plugin manifest: navigates · Help points users toward available plugin capabilities.
- Evaluate → Scoring rubric: uses · Evaluation applies the shared scoring model.
- Evaluate → Archetypes: uses · Evaluation adapts to job-family archetypes.
- Evaluate → Profile schema: reads · Evaluation compares role fit against stored profile data.
- Tailor resume → Resume template: uses · Tailoring renders output through the resume template.
- Tailor resume → ATS rules: uses · Tailoring follows ATS-friendly constraints.
- Tailor resume → Scoring rubric: uses · Tailoring reflects the evaluation outcome and priorities.
- Scan → ATS endpoints: consults · Scanning relies on job-board and ATS touchpoints.
- Scan → Batch scanner: delegates · Bulk discovery can be orchestrated by the batch agent.
- Triage → Scoring rubric: uses · Triage prioritizes roles using shared scoring criteria.
- Track → States: uses · Tracking uses the application state model.
- Apply → ATS rules: uses · Application help follows ATS constraints and portal behavior.
- Apply → ATS endpoints: touches · Application steps may interact with external portals.
- Research → Archetypes: uses · Research is informed by role-family context.
- Outreach → Profile schema: uses · Outreach draws on candidate profile details.
- Compare → Scoring rubric: uses · Comparison relies on the same fit criteria.
- Batch scanner → Scan: orchestrates · Agent coordinates repeated scanning work.
- Batch scanner → Triage: orchestrates · Agent funnels discovered roles into prioritization.
- Track → Outreach: leads to · Tracked applications can trigger follow-up outreach.
- Evaluate → Tailor resume: feeds · Role evaluation informs resume tailoring.
- Scan → Triage: feeds · Discovered openings move into prioritization.
- Triage → Compare: feeds · Prioritized roles can be compared side by side.
