npm package: @playerplanet/opencode-career-ops
Description: Career-Ops job search automation for OpenCode - AI-powered offer evaluation, CV generation, and application tracking
Author: Konsta Kiirikki
Latest version: 1.0.0

# Career-Ops for OpenCode

> AI-powered job search automation ported from Claude Code to OpenCode

[![npm version](https://badge.fury.io/js/@playerplanet%2Fopencode-career-ops.svg)](https://www.npmjs.com/package/@playerplanet/opencode-career-ops)
[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)

Career-Ops turns OpenCode into a full job search command center with 8 specialized AI skills:

- **🎯 Evaluate** - A-F scoring for job offers with archetype detection
- **📄 PDF** - ATS-optimized CV generation tailored to each role
- **🔍 Scan** - Automated portal scanning for new opportunities
- **📊 Tracker** - Application status and pipeline management
- **🔬 Research** - Deep company research and LinkedIn outreach
- **📝 Apply** - Application form assistance
- **🎓 Training** - Course/certification evaluation
- **💼 Projects** - Portfolio project evaluation

## Installation

### 1. Install the Plugin

```bash
npm install -g @playerplanet/opencode-career-ops
```

### 2. Install Skills into OpenCode

```bash
career-ops-setup
```

Or manually:
```bash
npx @playerplanet/opencode-career-ops setup
```

### 3. Initialize a New Project

```bash
cd ~/your-projects
mkdir my-job-search
cd my-job-search
career-ops-init
```

This creates:
- `config/profile.yml` - Your profile and targets
- `portals.yml` - Job portal configuration
- `modes/_profile.md` - Your archetypes and negotiation scripts
- `data/applications.md` - Application tracker
- `data/pipeline.md` - URL inbox
- `.gitignore` - Proper git exclusions

### 4. Create Your CV

Create `cv.md` in your project root with your CV in markdown format.

## Usage

Once set up, just ask OpenCode naturally:

```
"Evaluate this job: https://company.com/careers/job-123"
→ Full A-F evaluation with score, report, and tracker entry

"Generate a CV for this Senior Backend role"
→ ATS-optimized PDF tailored to the role

"Scan for new opportunities"
→ Scans 45+ pre-configured companies

"Show my application tracker"
→ Displays current pipeline status

"Research Anthropic for my interview"
→ Deep company research with talking points
```

## Skills Reference

### career-ops-evaluate
**Triggers:** `evaluate`, `assess`, `analyze job`, `compare offers`, job URLs  
**What it does:** Reads your CV, evaluates job fit across 6 dimensions (A-F blocks), generates report, updates tracker  
**Outputs:** `reports/{###}-{company}-{date}.md`, tracker entry

### career-ops-pdf
**Triggers:** `generate CV`, `create resume`, `tailor CV`, `ATS optimize`  
**What it does:** Injects job description keywords into your CV, generates PDF  
**Outputs:** `output/tailored-cv.pdf`, optional cover letter

### career-ops-scan
**Triggers:** `scan jobs`, `find opportunities`, `search portals`  
**What it does:** 3-level discovery (Playwright → API → WebSearch) across configured portals  
**Outputs:** New URLs in `data/pipeline.md`

### career-ops-tracker
**Triggers:** `tracker`, `applications`, `pipeline`, `update status`  
**What it does:** Manages application tracker, processes pending URLs  
**Outputs:** Updated `data/applications.md`

### career-ops-research
**Triggers:** `research company`, `LinkedIn outreach`, `deep dive`  
**What it does:** Company research, finds hiring managers, generates outreach messages  
**Outputs:** Research notes, 3-phrase connection messages

### career-ops-apply
**Triggers:** `fill application`, `apply to job`  
**What it does:** Generates personalized form answers based on evaluation  
**Note:** Never submits without your review

### career-ops-training
**Triggers:** `evaluate course`, `certification worth it`  
**What it does:** 6-dimension scoring for learning investments  
**Outputs:** Evaluation report with HACER/NO HACER verdict

### career-ops-project
**Triggers:** `evaluate project`, `portfolio idea`, `build MVP`  
**What it does:** Scores portfolio projects on demoability and STAR potential  
**Outputs:** Evaluation with actionable recommendations

## Configuration

### Profile (`config/profile.yml`)

```yaml
name:
  full: "Your Name"

contact:
  email: "you@example.com"
  linkedin: "linkedin.com/in/you"

target:
  roles:
    - "Senior Backend Engineer"
  compensation:
    target_base: 180000
    currency: "USD"

# ... see templates/profile.example.yml for full structure
```

### Portals (`portals.yml`)

Configure companies to scan:

```yaml
companies:
  - name: "Anthropic"
    careers_url: "https://www.anthropic.com/careers"
    greenhouse_board: "anthropic"

title_filter:
  positive:
    - "Senior"
    - "Staff"
  negative:
    - "Intern"
    - "Junior"
```

### User Archetypes (`modes/_profile.md`)

Customize archetypes, negotiation scripts, and scoring weights to match your career.

## Architecture

```
┌─────────────────────────────────────────────────────────┐
│                    OpenCode Agent                        │
├─────────────────────────────────────────────────────────┤
│  career-ops-evaluate  ←──reads──  cv.md                 │
│       │                          config/profile.yml     │
│       ↓                                                 │
│  career-ops-pdf  ←──generates──  output/*.pdf           │
│       │                                                 │
│       ↓                                                 │
│  career-ops-tracker  ←──updates──  data/applications.md │
│       ↑                                                 │
│  career-ops-scan  ←──discovers──  portals.yml           │
└─────────────────────────────────────────────────────────┘
```

## Data Contract

**User Layer** (NEVER auto-updated):
- `cv.md` - Your CV
- `config/profile.yml` - Your profile
- `modes/_profile.md` - Your customizations
- `data/*` - Your tracking data
- `portals.yml` - Your portal config

**System Layer** (skills read these):
- `modes/_shared.md` - Scoring rules
- `templates/*` - CV templates
- `scripts/*.mjs` - Utilities

## Requirements

- **Node.js** 18+ (for PDF generation)
- **OpenCode** 1.0+
- **Playwright** (bundled with plugin)

## Differences from Claude Code Original

| Feature | Claude Code | OpenCode Plugin |
|---------|-------------|-----------------|
| Entry | `/career-ops` command | Natural language triggers |
| Architecture | Monolithic CLAUDE.md | 8 modular skills |
| Activation | Explicit | Intent detection |
| Distribution | Git clone | `npm install` |
| Setup | Manual | `career-ops-init` CLI |

## Contributing

Issues and PRs welcome! See [CONTRIBUTING.md](CONTRIBUTING.md)

## Credits

- **Original**: [santifer/career-ops](https://github.com/santifer/career-ops)
- **Port**: OpenCode dev-team with parallel builder agents
- **License**: MIT (same as original)

## Roadmap

- [ ] Batch processing with subagent workers
- [ ] Dashboard TUI binary distribution
- [ ] German language modes
- [ ] Integration with job board APIs
- [ ] Auto-application (opt-in)

---

<p align="center">Built with ❤️ using OpenCode dev-team orchestration</p>