Skill
AI 비서에게 Longbridge Skill로 실시간 HK·US 주식 데이터와 거래 기능을 직접 제공
연결 강도로 박사 지도교수를 매칭해주는 서비스, 연결·출판·경험·GPA를 4.0 점수로 평가
Connection-first PhD advisor matcher — find the right advisor by network strength, not h-index. Quantitative 4.0 scoring across Connection, Publication, Experience, GPA.
스킬Python · TypeScriptGitHub @powerofjinbo직접 설치운영자 미확인
써 보셨어요? 한 번만 눌러 주세요. 로그인은 필요 없어요.
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
설치형 프로젝트는 배포 도메인 없이도 확인할 수 있습니다. 개인 저장소는 GitHub 로그인으로, 조직 저장소는 위의 저장소 확인 파일로 직접 확인해 주세요.
README 전체를 불러오는 중입니다. 아래는 저장된 발췌입니다.
Find the right PhD advisor by network strength and cited evidence — not h-index. A connection-first, evidence-first advisor matcher and application-triage assistant. 🌐 Open the web app · Use as an agent skill · 中文 1. The web app — no install, no signup, no server Everything runs in your browser. Your API key and data never leave your device.README 전문 보기 ↗
→ https://powerofjinbo.github.io/phdtaketaketake/
Everything runs in your browser. Your API key and data never leave your device.
phd_matcher engine from this repo scores them, all client-side (Python
via Pyodide).Which model?
| Provider | Cost | Web search | Notes |
|---|---|---|---|
Gemini (gemini-2.5-pro) | Free | ✅ | Recommended free choice. Switch to gemini-2.5-flash if you hit rate limits. |
| Claude / OpenAI | Paid API | ✅ | Strongest evidence-cited results. |
| DeepSeek / GLM / MiniMax / custom | Cheap / varies | ❌ | No web search → suggestion-only candidates with wide confidence bands. |
Web search is what lets the agent cite evidence. Without it, rankings are honest guesses with maximally wide confidence bands rather than fabricated facts. Free models without web search (Groq, OpenRouter, etc.) work but produce thin evidence — for cited results use Gemini (free), Claude, or OpenAI.
The web app lives in app/frontend; a self-hosted FastAPI
twin is in app/backend (optional, not needed for the site).
Packaged as a Claude Code skill — also works on QClaw, Codex CLI, Cursor,
and any agent that reads SKILL.md. See Install below.
⚠️ Product boundary. This is a 4.0-scale relative application-strength index, not an admission probability. Missing or blocked sources widen the confidence band instead of being guessed. It is an expert-designed heuristic decision-support system, not an empirically calibrated predictor — all thresholds are defaults meant to be recalibrated against real portfolios. See
docs/DESIGN.md§11.
# Claude Code
npx @powerofjinbo/phdtaketaketake install --claude
# OpenAI Codex (user-level)
npx @powerofjinbo/phdtaketaketake install --codex
# Cursor (project rule)
npx @powerofjinbo/phdtaketaketake install --cursor --project .
# Or all detected hosts in one shot (run from a project root —
# Cursor is skipped if you don't pass --project)
npx @powerofjinbo/phdtaketaketake install --all --project .
The npx installer is a thin shim: it does NOT modify your shell, does
NOT add a postinstall hook, and does NOT run pip for you. For each
host:
--claude prefers claude plugin marketplace add + claude plugin install if the claude CLI is on $PATH; otherwise prints the canonical slash-commands you can run inside Claude Code (or use --manual-copy to drop the package directly into ~/.claude/plugins/local/phdtaketaketake/).--codex copies the package into $HOME/.agents/skills/phdtaketaketake/ (user-level) or <project>/.agents/skills/phdtaketaketake/ (with --project).--cursor --project <path> writes <path>/.cursor/rules/phdtaketaketake.mdc (a Project Rule pointer to SKILL.md, not a copy).After the host install, enable the Python CLIs in the Python environment of your choice:
python -m pip install -e <path-printed-by-installer>
This is intentionally explicit — the installer never picks a Python environment for you (conda / venv / system / pipx all coexist on real boxes; the user knows their setup).
Verify the install with the bundled health check:
npx @powerofjinbo/phdtaketaketake doctor
# Checks Node, Python, claude CLI, manifests, and version sync.
If you want to clone the repo (e.g. to contribute, or to run from a checkout without npm/npx):
git clone https://github.com/powerofjinbo/phdtaketaketake.git \
~/.claude/skills/phdtaketaketake
cd ~/.claude/skills/phdtaketaketake
pip install -e .
$PATH after pip install -e .# Workflow A — advisor matching / triage
phdtaketaketake-discovery-plan # per-field PI-search recipe
phdtaketaketake-collect-evidence # auto-fill evidence from OpenAlex / PubMed / DBLP / Semantic Scholar
phdtaketaketake-audit # report evidence repair queue
phdtaketaketake-match # rank candidates given profile + JSON
phdtaketaketake-export-schemas # write Pydantic models out to JSON Schema (Draft 2020-12)
# Workflow C — admission probability (docs/admission_probability.md)
phdtaketaketake-admission # P(offer) + 80% interval per target school / professor
# Workflow B — CV optimization
phdtaketaketake-cv-template # print the bundled LaTeX CV template (path or contents)
phdtaketaketake-cv-compile # compile a CV .tex to PDF via latexmk / pdflatex
You can also invoke the Workflow A matching CLIs via python scripts/<name>.py … from a checkout (no install needed). The Workflow B CV tools live in the installed package; from a checkout, invoke them via python -m phd_matcher.cv.cli.template … and python -m phd_matcher.cv.cli.compile ….
Claude Code auto-discovers the skill on next session. For other agents, see Use with non-Claude agents below.
Don't have Claude Code? Install at claude.com/code.
In any Claude Code / QClaw / Codex session, describe what you want in plain English (or Chinese) — you do not need to write JSON yourself:
"I'm applying for Physics PhDs this fall — ATLAS Higgs / detector ML, UCI undergrad GPA 3.85/4.0, two ATLAS big-collab papers, advisor Prof. X. Find me top 10–30 matching PIs and rank them by phdtaketaketake's evidence-first rules."
"我是 SJTU 材料系本科,研究方向 2D 材料 photodetector,GPA 88/100,导师是 Prof. Y,求美国 top-30 PhD 申请定位。"
The agent will:
scripts/match.py for deterministic 4.0-scale scoringRequired for a useful run (the agent will ask if you don't volunteer them):
physics / HEP, cs / NLP, bio / immunology, …4.0 / 4.3 / 4.5 / 100 / UK honours)top_10 / top_11_30 / top_31_60 / top_60_plus, or specific schoolsOptional but improves output quality: papers (title / venue / status / author position / total authors), prior research experiences, specific candidate PIs you already have in mind, theory ↔ experiment crossover preferences, international friendliness needs.
The matcher is evidence-first: missing optional fields widen the confidence band — they don't crash and they don't get filled with guesses.
Once the matcher has surfaced your top candidates, the same skill can help you produce a LaTeX-formatted PhD-application CV, optionally tailored for the top targets:
"Now help me make a CV for these top 3 PIs." "用上面的 match.json 帮我做一份针对 Hartman 的 tailored CV。"
Two CLIs back this:
phdtaketaketake-cv-template --print > cv.tex # bundled LaTeX template
phdtaketaketake-cv-compile cv.tex # → cv.pdf via latexmk / pdflatex
The template ships with all sections present by default (Education, Research Experience, Publications & Presentations, Technical Skills, Teaching, Leadership, Honors); the agent fills it from your conversational input and, given a match.json, reorders the existing content + prunes weakly-relevant entries (with your confirmation before any deletion). Tailoring is reordering and user-approved pruning — never invention (no fabricated experiences, papers, or skills). PDF compile requires a TeX install (MacTeX / TeX Live / MiKTeX); minimal installs may need tlmgr install titlesec enumitem. Falls back cleanly to "paste into Overleaf" when local TeX is unavailable. Full agent contract in SKILL.md §"CV optimization (parallel workflow)" and references/cv_optimization.md.
match_score (0–4.0) — CAPEG compositeapplication_strength (0–4.0, not a probability) — match + opportunity_adjrisk_adjusted_strength = application_strength − band/2difficulty_adjusted_strength = max(0, risk_adjusted − program_penalty) — primary sort key (post-#5)lower_bound = application_strength − band — conservative readingdifficulty_adjusted_strength): Far Reach · Reach · Target · Match · Safec_score / a_score / p_score / e_score / g_scoreo_score (opportunity) · program_difficulty_penalty + difficulty_reasons · research_fit_score + axestotal_signals / verified / missing / unsourced (with names of which signals fall in each)apply_bucket (priority / target / reach / only_if_space / drop) + recommended_action (apply / contact_first / investigate_evidence / deprioritize / skip) + outreach_angle (only if sourced material exists) + evidence_to_fix queueTop-level CLI output also includes a strategy_summary rolling up the full portfolio (priority/target/reach/only_if_space/drop candidate IDs + evidence_fix_queue + portfolio_notes).
There is no bundled cache of advisors. PhD-advisor data is too dynamic and too vast for static datasets to be useful. Instead:
| Component | Role |
|---|---|
| The agent (Claude / Codex / Cursor / …) | Deep research: find candidates, verify connections, estimate signals — all from real web sources, never fabricated |
scripts/match.py | Pure-Python deterministic scoring — takes the agent's findings and applies the 4.0-scale formulas |
data/journals/<field>.yaml, references/*.md, docs/scoring.md | Authoritative project opinions on tiers / formulas / schema |
Every connection edge, every candidate fact must trace back to a real source the agent actually fetched (Google Scholar / OpenAlex / INSPIRE-HEP / PubMed / Math Genealogy / faculty pages / etc.). Fabrication is strictly forbidden — students use these rankings for real decisions, and made-up data is worse than no data. Missing signals are honest; the matcher widens its confidence band accordingly.
Allowed sources + forbidden behaviors are enumerated in references/data_integrity.md.
The full design goals — what this skill is for, what it explicitly is not,
and the roadmap — live in docs/DESIGN.md. One-line
mission:
Generate auditable, discipline-calibrated, connection-first US PhD advisor / program rankings for STEM applicants — to support school and advisor selection, without pretending to be an admission-probability predictor.
The scoring engine itself is field-agnostic, but the calibration is best-supported for fields the project was designed against.
| Coverage | |
|---|---|
| 🟢 Best-supported | physics / HEP, materials science (MSE) — bundled data/journals/<field>.yaml tier files; the scoring system was originally calibrated against these subcultures |
| 🟡 Extensible | chemistry, biology, CS, math, EE, chemical engineering, earth science — the agent uses references/journal_tiers.md cross-field guidance + its training knowledge; the confidence band is wider |
| ⚠️ Field-specific caveats | CS is conference-first (different venue hierarchy); biology has co-first authorship conventions; math has a slower publication pace; clinical fields use multi-center RCT-driven prestige |
Quality of agent retrieval scales the result quality — and data is always fresh, since nothing is cached.
Adding a tier YAML for a new field: see CONTRIBUTING.md. PRs welcome.
| CSrankings | h-index ranking | phdtaketaketake | |
|---|---|---|---|
| Data freshness | static | static | ✅ real-time agent retrieval |
| Personalized | ❌ | ❌ | ✅ student profile → candidate matching |
| Connection-first | ❌ | ❌ | ✅ #1 ranking signal |
| Big-collab paper aware | ❌ | ❌ | ✅ ATLAS/CMS-style 5+ author rule |
| Multi-STEM | ❌ CS only | partial | ✅ universal (any field) |
The matcher uses a 5-layered scoring pipeline — each layer is deterministic Python, every score traceable back to cited evidence:
match_score = w_C·C + w_A·A + w_P·P + w_E·E + w_G·G # CAPEG, tier-adaptive weights
application_strength = clip(match_score + opportunity_adj, 0, 4.0) # adds admit-cycle availability
risk_adjusted = application_strength − band/2 # widens band → lower rank
difficulty_adjusted = max(0, risk_adjusted − program_penalty) # ← primary sort key
strategy = bucket(difficulty_adjusted, evidence, …) # → priority/target/reach/only_if_space/drop
Five CAPEG pillars on a 4.0 scale, tier-adaptively weighted by school competitiveness:
strongest + 0.10·second_strongest, capped at 1.0, scaled by recency.0.20·lab_prestige + 0.30·duration + 0.50·output, strongest single experience.Three non-CAPEG dimensions:
opportunity_adj (replaces v1 pi_adj); not_recruiting forces application_strength=0.difficulty_adjusted_strength (the primary sort key).0.30·topic + 0.20·method + 0.15·system + 0.15·temporal + 0.10·grant + 0.10·background. Never a 6th pillar; a bounded ±0.15 adjustment to application_strength (upside requires a sourced fit) plus tie-breaker.5-tier label (applied to difficulty_adjusted_strength): Far Reach · Reach · Target · Match · Safe.
Full formulas: docs/scoring.md · Pipeline diagram: docs/scoring_pipeline.md · Skill instructions: SKILL.md · Profile + CandidateAdvisor schema: references/profile_schema.md.
The skill is Claude-Code-native by default, but the matcher is plain
Python and SKILL.md is framework-agnostic. The recommended paths
all flow through the npm installer:
OpenAI Codex / OpenCode / QClaw / OpenClaw-style AgentSkills hosts —
these expect skills under .agents/skills/<name>/ (project-local) or
$HOME/.agents/skills/<name>/ (user-level). Run:
npx @powerofjinbo/phdtaketaketake install --codex # user-level
npx @powerofjinbo/phdtaketaketake install --codex --project . # project-local
AGENTS.md ships at the package root as a short pointer to
SKILL.md so hosts that auto-read AGENTS.md (Codex, several
AgentSkills hosts) pick up the same canonical contract.
Cursor — modern Cursor uses Project Rules at
.cursor/rules/*.mdc, not the legacy .cursorrules file. Run:
npx @powerofjinbo/phdtaketaketake install --cursor --project .
This writes .cursor/rules/phdtaketaketake.mdc (a short pointer to
SKILL.md, not a copy).
--all and Cursor — npx … install --all installs Claude +
Codex + Cursor when possible. Cursor needs --project <path> (its
rule is scoped to a project tree); when you run --all without
--project, Cursor is skipped with a notice rather than
failing the whole command. To get all three in one shot from inside
a project root:
npx @powerofjinbo/phdtaketaketake install --all --project .
Other agents — point them at the installed SKILL.md. Most
modern coding agents read it and execute the workflow correctly.
See docs/example_session.md for a walk-through.
MIT — see LICENSE.