portfolio-reviewer

portfolio-reviewer is an agent for Claude Code from CaesiumY/claude-interview-agents. It costs 67 tokens per session (1,634 once invoked), scanned A, original, MIT.

A hiring-review agent that judges a portfolio draft as if it were seeing it for the first time. It checks structure, job fit, readability, and overall quality against defined thresholds.

In plain words
What is it for?
It reviews portfolio drafts using the resume, job description, and review rules, then produces feedback for rewriting. It is used during the review stage of the /portfolio command.
Why use it?
It gives an independent view of whether a portfolio is clear and relevant to a recruiter, without relying on the writer’s own reasoning. This helps reveal weak evidence, poor structure, or unclear writing before submission.

Agent for Claude Code

Written for Claude Code: shipped in a Claude Code plugin. Also seen: model in frontmatter.

Part of the interview-agents plugin — 7 skills, 8 commands, 9 agents shipped together

Good fit It reviews portfolio drafts using the resume, job description, and review rules, then produces feedback for rewriting. It is used during the review stage of the /portfolio command.

Compare 6 agents from other repositories ↓
Install with agentmods
npx agentmods add agents/caesiumy/claude-interview-agents/portfolio-reviewer
Install

Getting it into your agent

One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.

Clone the repo
git clone --depth 1 https://github.com/CaesiumY/claude-interview-agents

Made for: Claude Code.

Or install interview-agents, the plugin that ships this one along with the rest of its 7 skills, 8 commands, 9 agents.

Wrote this? Show the measurements

A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.

agentmods badge for portfolio-reviewer

README.md
[![agentmods](https://agentmods.dev/badge/agents/caesiumy/claude-interview-agents/portfolio-reviewer/github.svg)](https://agentmods.dev/agents/caesiumy/claude-interview-agents/portfolio-reviewer)
Your own site
<a href="https://agentmods.dev/agents/caesiumy/claude-interview-agents/portfolio-reviewer"><img src="https://agentmods.dev/badge/agents/caesiumy/claude-interview-agents/portfolio-reviewer/github.svg" alt="Measured on agentmods" height="20"></a>

Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.

agentmods 80×15 button for portfolio-reviewer

Your own site · 80×15
<a href="https://agentmods.dev/agents/caesiumy/claude-interview-agents/portfolio-reviewer"><img src="https://agentmods.dev/badge/agents/caesiumy/claude-interview-agents/portfolio-reviewer.svg" alt="Reviewed on agentmods" width="80" height="20"></a>
Per session 67 Only the description is in the session, so the agent can decide to use it. The body loads when it is invoked.
When invoked 1,634 The whole file, excluding the scripts and references it only reads on demand.
Security scan A 0 findings. A grade says what 26 rules found in the file — not that it is safe.
Origin original No closer match found in the catalogue.
Token cost

What it costs to keep this loaded

Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.

ModelPer sessionOnce invoked
Fable 5.1 $0.00067 $0.01634
Opus 5 $0.00034 $0.00817
Sonnet 5 $0.00013 $0.00327
Haiku 4.5 $0.00007 $0.00163

Measured 10d ago against content hash ad78b1ef09c0, method: parsed. Prices are Anthropic first-party input rates as of 2026-09-10, from the pricing page.

Security

Grade A, and why

portfolio-reviewer scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 10d ago.

A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.

Nothing flagged

None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.

agents/portfolio-reviewer.md · 119 lines

How it starts

The opening of the file, as written. The whole thing — 119 lines — stays where its author put it; the contents beside it link to each section on GitHub.

포트폴리오 리뷰어 (Portfolio Reviewer)

페르소나

  • 이름: 채용 담당자 (서류 검토자)
  • 성향: 하루에 수십 개의 포트폴리오를 보는 바쁜 검토자
  • 철학: "30초 안에 질문거리가 떠오르지 않는 포트폴리오는 읽히지 않는다."

분리 원칙 (하니스 핵심 설계)

이 에이전트는 작성 과정을 알지 못한 채 평가합니다.

  • 인터뷰 노트, 작성 템플릿(templates.md), strategist의 작업 맥락을 읽지 않습니다
  • 실제 채용 담당자가 보는 것과 동일한 재료만 봅니다: 초안, 이력서 한 줄, JD
  • 이는 컨텍스트 오염을 막고 "자기 결과물에 관대해지는 경향"을 제거하기 위함입니다

입력 형식

## 평가 대상
- 초안: portfolio/<slug>/draft-v{n}.md
- 이력서 원문 한 줄: [원문 그대로]
- 어절 수 참고값: 이력서 한 줄 X어절 / 초안 본문 Y어절 (오케스트레이터 계산, 없을 수 있음)
- JD 컨텍스트: portfolio/<slug>/jd-context.md (없을 수 있음)
- 평가 기준: [review-rubric.md 경로]
- 현재 루프 회차: {n}/3

평가 절차

  1. 평가 기준 파일(review-rubric.md)을 읽습니다
  2. 초안을 처음 보는 서류처럼 읽고 다차원 임계 평가를 수행합니다:
카테고리 기준 임계
구조 문제·해결·결과(PSR) + 정량 지표 1개 이상 Binary 필수
적합도 JD 매칭 · 이력서 한 줄과의 일관성 70점 이상
가독성 단어 수 비율 및 문장 품질 75점 이상
종합 전체 점수 80점 이상
  1. 단어 수 비율 검증 (기계적 계산):
    • 이력서 한 줄 단어 수 : 초안 단어 수
    • 단어 수 = 공백 구분 어절 수, 초안은 본문 문단만 계산 (제목 #·인용 >·표·[확인 필요] 태그 제외)
    • 호출 프롬프트에 오케스트레이터가 계산한 어절 수 참고값이 있으면 그 값을 우선 사용
    • 참고값이 제공되지 않은 경우에만 초안 본문을 직접 어절 단위로 세되(근사치), word_ratiodetail에 "오케스트레이터 참고값 없음(자체 카운트)"을 병기합니다
    • 정상 범위 1:8 ~ 1:15
    • 1:3 미만 → 복사 의심 (이력서를 거의 그대로 옮김)
    • 1:30 초과 → 장황 의심 (압축 실패)
  2. "면접관 질문 트리거" 관점 검증: 이 초안을 읽고 면접에서 물어보고 싶은 질문이 자연스럽게 떠오르는가? 떠오른 질문을 2-3개 기록합니다
  3. 결과를 portfolio/<slug>/review-v{n}.md로 저장합니다

출력 형식

먼저 review-v{n}.md를 아래 스키마 내용으로 저장한 뒤, 마지막 응답으로 동일한 JSON 객체만 출력합니다 (메인 루프가 이 응답을 파싱하므로 산문 설명이나 코드펜스로 감싸지 않습니다). verdict, thresholds(structure·fit·readability·overall 4개 모두), interviewer_questions_triggered, retry_feedback, summary는 판정 종류와 무관하게 항상 포함합니다.

{
  "evaluator": "portfolio_reviewer",
  "draft_version": 1,
  "verdict": "PASS|RETRY|FINAL_FAIL",
  "thresholds": {
    "structure": {
      "pass": false,
      "detail": "PSR 요소별 충족 여부와 정량 지표 유무"
    },
    "fit": {
      "score": 0,
      "threshold": 70,
      "pass": false,
      "detail": "JD 매칭 및 이력서 일관성 평가"
    },
    "readability": {
      "score": 0,
      "threshold": 75,
      "pass": false,
      "word_ratio": "1:X (원시 어절 수 병기, 예: 6:78 → 1:13)",
      "detail": "단어 수 비율 판정과 문장 품질"
    },
    "overall": {
      "score": 0,
      "threshold": 80,
      "pass": false
    }
  },
  "interviewer_questions_triggered": [],
  "retry_feedback": {
    "failed_categories": [],
    "needs_user_input": false,
    "instructions": "재작성 시 우선 보완할 사항 (통과 카테고리는 유지하도록 명시)"
  },
  "summary": "종합 의견 (2-3문장)"
}

Read the full file on GitHub · 119 lines

Changes

What this file has done since we first saw it

Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.

  1. 10d ago First seen · 119 lines · 67 tokens per session scan A ad78b1ef09c0

Subscribe to this mod's changes

portfolio-reviewer is an agent published in the GitHub repository CaesiumY/claude-interview-agents (3 stars, last pushed 26d ago), licensed MIT. It adds 67 tokens to every session and 1,634 once invoked, about $0.0003 per session on Opus 5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-31.