Skip to main content

gmai-member

Add, update, remove, or move team members on the GMAI Lab Jekyll website. Handles _data/team.yml, EN/ZH profile pages, team photos, and Past Members. Use when adding a new lab member, updating someone's info, or archiving a departed member.

Datos de origen

Repositorio
uni-medical/gmai-web
Última actividad en el origen
11 de abril de 2026 a las 12:19
Idioma detectado de SKILL.md
inglés
Estrellas
1
Forks
0

Opciones de instalación

De forma predeterminada está seleccionado el prompt que primero revisa el origen. Puedes cambiar a un comando directo o descargar una copia local.

Revisa los archivos de origen

Lee SKILL.md y los archivos complementarios que muestra SkillsMP antes de decidir si quieres instalarlo.

Mostrando SKILL.md

SKILL.md
Instrucciones de origen · Vista previa de solo lectura
name
gmai-member
description
Add, update, remove, or move team members on the GMAI Lab Jekyll website. Handles _data/team.yml, EN/ZH profile pages, team photos, and Past Members. Use when adding a new lab member, updating someone's info, or archiving a departed member.
allowed-tools
["Read","Write","Edit","Bash","Glob","Grep"]
# GMAI Lab — Team Member Management Skill ## When to Use Trigger phrases: - "Add a new member" / "添加新成员" - "Update member X" / "更新成员信息" - "Remove member X" / "删除成员" - "Move X to past members" / "把X移到过往成员" - "Add photo for X" / "添加头像" --- ## Repository Quick Reference ``` _data/team.yml Master team data (pi, co_pis, members, alumni) pages/team/{slug}.md EN profile page pages/zh/team/{slug}.md ZH profile page assets/images/team/ Team photos (firstname_lastname.jpg) _layouts/profile.html Profile page layout (reads from team.yml) pages/team.md EN team listing (shows Scholar/GitHub/Website only) pages/zh/team.md ZH team listing ``` ### Data Structure Hierarchy ```yaml pi: # Single PI (Junjun He) — displayed as main card co_pis: # Array — displayed side-by-side with PI in .team-pis flex container members: # Array — displayed in .team-grid (4 per row) alumni: # Array — displayed in Past Members table (sorted newest-first) ``` **Profile lookup order** (`_layouts/profile.html`): `pi.slug` → `co_pis[].slug` → `members[].slug` (alumni use member slug too) ```bash # Local dev export GEM_HOME="$HOME/.local/share/gem/ruby/3.2.0" export PATH="$GEM_HOME/bin:$PATH" bundle exec jekyll serve --baseurl "" --port 4000 # Deploy: git push origin main ``` --- ## Operations ### Operation: ADD #### Step 1 — Collect Information (Interactive) Ask the user for each field. Mark required fields with *. ``` 1. * Full name (English)? e.g. "Wentao Li" 2. * Chinese name? e.g. "李文涛" 3. * Role? [Researcher / Research Intern] 4. If Research Intern: University/institution? 5. * Research focus (English)? e.g. "Computational pathology, agent systems" 6. Research focus (Chinese)? (auto-translate if user skips) 7. Photo file path? Full path or "none" for initials placeholder 8. Initials? 2 chars, auto-derived from name if not given 9. Links — provide any you have: - Google Scholar URL? - GitHub URL? - Personal website URL? - OpenReview URL? - Semantic Scholar URL? - DBLP URL? - HuggingFace URL? - LinkedIn URL? - ResearchGate URL? 10. Brief bio (Chinese, 1-2 sentences)? For ZH profile page 11. Position in list? "after [name]" or "at end" ``` #### Step 1b — CRITICAL: Identity & Name Verification **Same-name collision warning:** Before proceeding, verify the person's identity: - If a Google Scholar or other link is provided, CONFIRM it belongs to the correct person - Search the link and check: university, co-authors, research topics — do they match? - **NEVER assume a Scholar link is correct just because the name matches** — there are many researchers with identical names (e.g. "Yirong Chen" at SCUT vs Stanford) - If uncertain, ask the user to confirm before using any links **Chinese name verification:** - Double-check Chinese characters with the user — similar-sounding characters are easily confused - Examples of past mistakes: 翊 vs 毅, 隆 vs 龙 - If the user provides a Chinese name verbally/phonetically, confirm the exact characters #### Step 2 — Generate Slug ``` slug = lowercase(firstname-lastname) # e.g. "wentao-li" ``` Verify slug is unique: `grep "slug.*{slug}" _data/team.yml` #### Step 3 — Process Photo If photo provided: ```bash # Copy to standard location cp {user_path} assets/images/team/{firstname}_{lastname}.{ext} # Check dimensions — crop to square if needed python3 -c " from PIL import Image img = Image.open('assets/images/team/{file}') w, h = img.size if w != h: s = min(w, h) left = (w - s) // 2 top = (h - s) // 2 img.crop((left, top, left+s, top+s)).save('assets/images/team/{file}', quality=90) print(f'Cropped {w}x{h} → {s}x{s}') " ``` #### Step 4 — Add to `_data/team.yml` Insert at specified position in `members:` array: ```yaml - name: "FirstName LastName (中文名)" slug: "firstname-lastname" role: "Research Intern, University Name" role_zh: "科研实习生,大学名称" focus: "Research focus English" focus_zh: "研究方向中文" photo: "assets/images/team/firstname_lastname.jpg" initials: "FL" links: scholar: "" github: "" website: "" ``` Only include link fields that have values. Add extended links (openreview, semantic_scholar, etc.) only if provided. **Ordering rules:** - Researchers go before `# ── Research Interns` comment - Research Interns go after it - Grid is 4 per row — position affects visual layout #### Step 5 — Create EN Profile Page Write `pages/team/{slug}.md`: ```markdown --- layout: profile title: "FirstName LastName" permalink: /team/{slug}/ lang: "en" member_slug: "{slug}" --- ``` #### Step 6 — Create ZH Profile Page Write `pages/zh/team/{slug}.md`: ```markdown --- layout: profile title: "中文名 — GMAI Lab" permalink: /zh/team/{slug}/ lang: "zh" member_slug: "{slug}" --- 中文名来自XX大学,是 GMAI 实验室科研实习生。研究方向包括... ``` #### Step 7 — Verify ```bash bundle exec jekyll build --baseurl "" curl -s -o /dev/null -w "%{http_code}" http://localhost:4000/team/{slug}/ curl -s -o /dev/null -w "%{http_code}" http://localhost:4000/zh/team/{slug}/ ``` --- ### Operation: UPDATE #### Step 1 — Identify Member Ask: "Which member? (name or slug)" Find in team.yml: `grep -n "slug.*{input}" _data/team.yml` #### Step 2 — Ask What to Update ``` What to update? [photo / focus / role / links / bio / all] ``` #### Step 3 — Apply Changes Use Edit tool to modify the specific fields in `_data/team.yml`. If updating photo: copy new file to `assets/images/team/`, crop if needed, update `photo:` field. If updating bio: edit the ZH profile page markdown content. --- ### Operation: REMOVE 1. Remove member entry from `members:` in `_data/team.yml` 2. Ask: "Delete profile pages too? [y/n]" - If yes: delete `pages/team/{slug}.md` and `pages/zh/team/{slug}.md` 3. Ask: "Delete photo? [y/n]" - If yes: delete from `assets/images/team/` --- ### Operation: MOVE_TO_PAST #### Step 1 — Collect Info ``` 1. When did they join? e.g. "2024.06" 2. When did they leave? e.g. "2025.12" 3. Current position/affiliation? e.g. "PhD Student, The Hong Kong Polytechnic University" 4. Research focus (short)? e.g. "AI for Science, Proteomics" ``` **Period format rules:** - Use `YYYY.MM` format (e.g. "2024.06"), NOT "2024.01" unless truly January - Verify dates with user — don't guess start dates - Past mistake: "2024.01 – 2025.12" was incorrect, actual was "2025.06 – 2025.12" #### Step 2 — Execute 1. Remove from `members:` array in `_data/team.yml` 2. Add to `alumni:` section with correct schema: ```yaml alumni: - name: "Name (中文名)" slug: "firstname-lastname" period: "2024.06 – 2025.12" position: "PhD Student, University Name" focus: "Research focus keywords" ``` **Critical: Alumni sorting** — alumni must be sorted by **end date, newest first**. Insert the new entry at the correct position (not just appended to the end). 3. Profile pages are kept (still accessible via direct URL) 4. The Past Members table in `pages/team.md` / `pages/zh/team.md` auto-renders from alumni data 5. Name display uses `{{ a.name | replace: " (", "<br>(" }}` for EN/CN line break ### Operation: ADD CO-PI For leadership-level members displayed alongside the main PI: 1. Add to `co_pis:` array in `_data/team.yml` (between `pi:` and `members:`) 2. Same field structure as `pi:` (name, slug, role, title, bio, photo, links) 3. Displayed side-by-side with PI in `.team-pis` flex container 4. Profile lookup in `_layouts/profile.html` checks `co_pis` after `pi` 5. Create profile pages same as regular members --- ### Operation: FILL PROFILE CONTENT Fill rich Markdown content for a member's profile subpage. Profile pages support `{{ content }}` rendering — anything written below the front matter in `pages/team/{slug}.md` becomes the profile body. #### When to Use Trigger phrases: - "Fill profile for X" / "写X的简介" - "Add bio content for X" / "填充X的个人页面" - After creating a member's profile pages (ADD operation Steps 5-6) #### Step 1 — Collect Information (Interactive) Ask the user for or derive from context: ``` 1. * Current position + institution? e.g. "PhD Student, Monash University" 2. Supervisor(s)? e.g. "Prof. Jianfei Cai" 3. Previous positions (chronological)? e.g. "Senior R&D Engineer at Baidu → Researcher at Shanghai AI Lab" 4. Role in GMAI team? e.g. "Core member, principal architect of SA-Med2D-20M" 5. * Top 3-5 research areas? With key project names 6. * Selected publications (4-8 items)? Title, venue, year, author role, one-line description 7. * Career path summary? For Career Trajectory section 8. Brief bio in Chinese? Auto-translate from EN if not provided ``` #### Step 2 — Determine Template **Regular Members** use the **4-section template**: | Section (EN) | Section (ZH) | Content | |--------------|--------------|---------| | `## About` | `## 关于` | 1-2 paragraphs: position, institution, supervisor, previous roles, GMAI contribution | | `## Research Interests` | `## 研究方向` | Bullet list of 3-5 areas with key project names in bold | | `## Selected Publications` | `## 代表性论文` | Bullet list: **Paper** (Venue Year) — *Role*. One-line description | | `## Career Trajectory` | `## 职业轨迹` | Single line with arrow notation: **Place A** (Role) → **Place B** (Role) → ... | **PI / Co-PI** use the **6-section template**: | Section (EN) | Section (ZH) | Content | |--------------|--------------|---------| | `## About Me` | `## 关于我` | Background, education, leadership position | | `## Research Interests` | `## 研究方向` | Bullet list of research areas | | `## Highlights` | `## 代表性成果` | Detailed paragraphs on group achievements | | `## Academic Overview` | `## 学术成果概览` | High-level achievements summary | | `## Selected Early Works` | `## 早期代表性工作` | Earlier career publications | | `## Professional Service` | `## 学术服务` | Reviewer roles, committee memberships | #### Step 3 — Write EN Profile Content Edit `pages/team/{slug}.md` — append Markdown below the front matter `---`: **Example (Regular Member — Jin Ye):** ```markdown --- layout: profile title: "Jin Ye" permalink: /team/jin-ye/ lang: "en" member_slug: "jin-ye" --- ## About Jin Ye is a PhD student at **Monash University**... Before starting his PhD, he was a full-time researcher at **Shanghai AI Laboratory**... ## Research Interests - **Large-scale medical segmentation datasets**: SA-Med2D-20M (4.6M images / 19.7M masks) - **SAM adaptation for medicine**: SAM-Med2D, SAM-Med3D, SAM-Med3D-MoE - ... ## Selected Publications - **SA-Med2D-20M** (arXiv 2023) — *First Author*. The largest 2D medical segmentation dataset... - **SAM-Med3D** (ECCV 2024 Workshop Oral; IEEE TNNLS 2025) — Extension of SAM to 3D... - ... ## Career Trajectory **Baidu** (Senior R&D Engineer) → **Shanghai AI Laboratory** (Researcher, GMAI Team) → **Monash University** (PhD Student) ``` #### Step 4 — Write ZH Profile Content Edit `pages/zh/team/{slug}.md` — same structure with Chinese text: ```markdown --- layout: profile title: "叶锦 — GMAI Lab"
Ver en GitHub
Este SKILL.md es muy grande, por eso SkillsMP muestra aqui solo la primera seccion. Ver en GitHub