npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

oh-my-resume

v0.2.0

Published

AI-Powered Interview Preparation Agent System for OpenCode

Readme

Oh My Resume

AI-Powered Interview Preparation Agent System

License

Oh My Resume는 이력서 분석 및 면접 준비를 위한 AI 에이전트 시스템입니다.


🚀 Quick Start

Installation

# npm/bunx로 설치 (자동으로 설정 파일 생성)
bunx oh-my-resume install
# or
npx oh-my-resume install

이 명령어는 ~/.config/opencode/oh-my-resume.json 파일을 자동으로 생성합니다.

OpenCode Plugin으로 사용

~/.config/opencode/opencode.json에 플러그인 등록:

{
  "plugin": [
    "oh-my-resume"
  ]
}

개발 환경 설정 (소스에서 빌드)

# Clone the repository
git clone https://github.com/goalSetter09/oh-my-resume.git
cd oh-my-resume

# Install dependencies
bun install

# Build
bun run build

로컬 개발 시 플러그인 등록:

{
  "plugin": [
    "/path/to/oh-my-resume"
  ]
}

📦 Features

Interview Prep Agent

이력서를 분석하고 맞춤형 면접 질문을 생성하는 AI 코치입니다.

주요 기능:

  • 이력서 분석: 핵심 기술, 성과, 레드플래그 식별
  • 질문 생성: Validation, Deep Dive, Behavioral 3가지 유형
  • STAR 가이드: 각 질문에 대한 모범 답안 구조 제시

사용 예시:

@interview-prep 내 이력서를 분석하고 면접 질문 5개를 생성해줘

🔧 Project Structure

oh-my-resume/
├── src/
│   ├── agents/                 # 에이전트 정의
│   │   ├── index.ts            # 에이전트 레지스트리
│   │   ├── types.ts            # 타입 정의
│   │   └── interview-prep.ts   # Interview Prep 에이전트
│   ├── shared/
│   │   └── permission-compat.ts # 도구 권한 유틸리티
│   └── features/
│       └── builtin-skills/     # 스킬 정의 (선택적)
├── AGENT_DEVELOPMENT_GUIDE.md  # 에이전트 개발 가이드
├── package.json
└── README.md

🤖 Adding New Agents

Step 1: 에이전트 파일 생성

src/agents/my-agent.ts 파일을 생성합니다:

import type { AgentConfig, AgentPromptMetadata } from "./types"
import { createAgentToolRestrictions } from "../shared/permission-compat"

const DEFAULT_MODEL = "anthropic/claude-sonnet-4-5"

// 메타데이터 정의 (오케스트레이터가 위임 결정 시 참조)
export const MY_AGENT_METADATA: AgentPromptMetadata = {
  category: "specialist",    // exploration | specialist | advisor | utility
  cost: "CHEAP",             // FREE | CHEAP | EXPENSIVE
  promptAlias: "My Agent",
  triggers: [
    { domain: "My Domain", trigger: "When to use this agent" },
  ],
  useWhen: ["Scenario 1", "Scenario 2"],
  avoidWhen: ["When NOT to use"],
}

// 팩토리 함수
export function createMyAgent(model: string = DEFAULT_MODEL): AgentConfig {
  // 도구 제한 설정
  // 빈 배열 = 모든 도구 허용 (Executor)
  // ["write", "edit"] = 해당 도구 차단 (Read-only)
  const restrictions = createAgentToolRestrictions([
    "task",
    "sisyphus_task",
  ])

  return {
    description: "에이전트 설명",
    mode: "subagent" as const,
    model,
    temperature: 0.2,
    ...restrictions,
    prompt: `# Role
[페르소나와 미션]

# Principles
1. **원칙 1** — 설명
2. **원칙 2** — 설명

# Process
[작업 프로세스]

# Anti-Patterns (NEVER)
- 하지 말 것 1
- 하지 말 것 2
`,
  }
}

export const myAgent = createMyAgent()

Step 2: 타입 등록

src/agents/types.ts에 에이전트 이름 추가:

export type BuiltinAgentName =
  | "interview-prep"
  | "my-agent"  // 추가

Step 3: 레지스트리 등록

src/agents/index.ts에 에이전트 등록:

import { myAgent } from "./my-agent"

export const builtinAgents: Record<string, AgentConfig> = {
  "interview-prep": interviewPrepAgent,
  "my-agent": myAgent,  // 추가
}

export * from "./my-agent"  // export 추가

🎨 Agent Archetypes

| 유형 | 파일 수정 | 모델 비용 | Thinking | 주요 용도 | |------|----------|----------|----------|----------| | Searcher | ❌ | FREE | ❌ | 코드베이스 탐색, 패턴 찾기 | | Consultant | ❌ | EXPENSIVE | ✅ | 아키텍처, 디버깅, 코드 리뷰 | | Executor | ✅ | CHEAP | ❌ | 코드 작성, 파일 수정 |

도구 제한 치트시트

// Executor: 모든 도구 허용
createAgentToolRestrictions([])

// Consultant: 읽기 전용
createAgentToolRestrictions(["write", "edit"])

// Searcher: 읽기 전용 + 위임 불가
createAgentToolRestrictions([
  "write", "edit", "task", "sisyphus_task", "call_omo_agent"
])

📝 Prompt Engineering Tips

1. 페르소나 설정

You are a 15-year veteran interviewer at top tech companies...

2. 번호 매긴 원칙

# Principles
1. **Be Tough but Fair** — Ask real questions
2. **Specificity is King** — Demand specifics

3. 안티패턴 명시

# Anti-Patterns (NEVER)
- Generic questions
- Softball questions without follow-ups

4. 출력 형식 정의

# Output Format
### Q[N]. [Question]
**Intent**: What is the interviewer looking for?
**STAR Guide**: ...

🔌 Configuration

oh-my-resume.json (선택적)

기본 설정을 변경하고 싶을 때만 이 파일을 생성하세요. 파일이 없어도 기본값으로 정상 작동합니다.

설정 파일 위치 (우선순위 순):

  1. 프로젝트 루트: ./oh-my-resume.json
  2. 글로벌: ~/.config/opencode/oh-my-resume.json
{
  "agents": {
    "interview-prep": {
      "model": "anthropic/claude-opus-4-5"
    }
  }
}

에이전트 모델 커스터마이징

각 에이전트에 할당된 모델을 변경할 수 있습니다.

방법 1: 설정 파일 사용 (권장)

oh-my-resume.json 파일에서 에이전트별 모델을 오버라이드합니다:

{
  "agents": {
    "interview-prep": {
      "model": "openai/gpt-4o",           // 모델 변경
      "temperature": 0.3                   // 온도 조정 (선택)
    },
    "my-custom-agent": {
      "model": "google/gemini-2.5-pro"
    }
  }
}

방법 2: 코드에서 직접 변경

src/agents/interview-prep.ts에서 DEFAULT_MODEL 상수를 수정합니다:

// Before
const DEFAULT_MODEL = "anthropic/claude-sonnet-4-5"

// After
const DEFAULT_MODEL = "openai/gpt-4o"

또는 팩토리 함수를 사용하여 동적으로 모델을 지정합니다:

import { createInterviewPrepAgent } from "./agents"

// 다른 모델로 에이전트 생성
const customAgent = createInterviewPrepAgent("google/gemini-2.5-pro")

사용 가능한 모델 예시

| Provider | Model ID | 특징 | |----------|----------|------| | Anthropic | anthropic/claude-sonnet-4-5 | 균형 잡힌 성능 (기본값) | | Anthropic | anthropic/claude-opus-4-5 | 최고 품질, 높은 비용 | | OpenAI | openai/gpt-4o | 빠른 응답 | | OpenAI | openai/gpt-5.2 | 고급 추론 | | Google | google/gemini-2.5-pro | 긴 컨텍스트 | | Google | google/gemini-2.5-flash | 빠른 응답, 저렴 |

Note: 사용 가능한 모델은 OpenCode 설정 및 인증된 프로바이더에 따라 다릅니다.


📚 Documentation


🤝 Contributing

  1. Fork the repository
  2. Create your feature branch (git checkout -b feature/amazing-agent)
  3. Commit your changes (git commit -m 'feat(agent): add amazing agent')
  4. Push to the branch (git push origin feature/amazing-agent)
  5. Open a Pull Request

📄 License

MIT License - see LICENSE for details.


🚢 Publishing to npm

npx oh-my-resume install 명령어가 작동하려면 npm에 패키지를 퍼블리시해야 합니다.

사전 준비

  1. npmjs.com 계정 생성
  2. 터미널에서 npm 로그인:
    npm login

퍼블리시 단계

# 1. 빌드
bun run build

# 2. package.json의 name이 고유한지 확인
#    (npm에서 "oh-my-resume"이 이미 사용 중이면 다른 이름 사용)

# 3. 퍼블리시
npm publish

# 또는 scoped package로 퍼블리시 (권장)
npm publish --access public

Scoped Package 사용 시

package.jsonname을 변경합니다:

{
  "name": "@goalSetter09/oh-my-resume"
}

그러면 설치 명령어는:

npx @goalSetter09/oh-my-resume install

로컬 테스트 (npm 퍼블리시 전)

npm에 퍼블리시하지 않고 로컬에서 테스트하려면:

# 방법 1: 직접 실행
bun run build
node dist/cli.js install

# 방법 2: npm link 사용
bun run build
npm link
oh-my-resume install  # 이제 글로벌 명령어로 사용 가능

# link 해제
npm unlink -g oh-my-resume

🔗 GitHub Push 후 설정

GitHub에 레포지토리를 푸시한 후 다음 단계를 완료하세요.

Step 1: package.json 업데이트

package.jsonrepository.url을 실제 GitHub URL로 변경:

{
  "repository": {
    "type": "git",
    "url": "https://github.com/goalSetter09/oh-my-resume"
  }
}

Step 2: src/cli.ts의 스키마 URL 활성화 (선택적)

VS Code 자동완성을 지원하려면 src/cli.ts에서 $schema를 추가합니다:

const DEFAULT_CONFIG = {
  $schema: "https://raw.githubusercontent.com/goalSetter09/oh-my-resume/main/assets/oh-my-resume.schema.json",
  agents: {
    "interview-prep": {
      model: "anthropic/claude-sonnet-4-5",
    },
  },
}

Step 3: 다시 빌드 및 퍼블리시

bun run build
npm publish --access public

Step 4: 기존 설정 파일 업데이트 (선택적)

이미 oh-my-resume install을 실행한 사용자는 ~/.config/opencode/oh-my-resume.json$schema를 수동으로 추가할 수 있습니다:

{
  "$schema": "https://raw.githubusercontent.com/goalSetter09/oh-my-resume/main/assets/oh-my-resume.schema.json",
  "agents": {
    "interview-prep": {
      "model": "anthropic/claude-sonnet-4-5"
    }
  }
}

Note: $schema는 선택적입니다. 없어도 정상 작동하며, VS Code 자동완성만 지원하지 않습니다.