Scan the user's project directory, evaluate projects, and update the portfolio website with new or modified project entries, skills, experiences, and architecture diagrams. Use when: - Adding new projects to portfolio - Syncing portfolio with latest development progress - Reviewing which projects should be showcased - Updating skills, experiences, or education info - Generating architecture diagrams for new projects Triggers: "update portfolio", "sync portfolio", "add project to portfolio", "refresh portfolio", "portfolio update", "更新作品集", "同步作品集"
Automated portfolio synchronization with the user's project directory.
/Users/niuyp/Documents/github.com/portfolio//Users/niuyp/Documents/github.com/DISSIDIA-986gh-pages| File | Purpose | Key fields |
|---|---|---|
src/data/projects.js | Project entries | id, title, description, technologies, imageUrl, demoUrl, repoUrl, featured, category |
src/data/experiences.js | Work & education | company, position, period, responsibilities, technologies |
src/data/skills.js | Skill categories | categoryKey → { title, skills: [{ name, level }] } |
src/data/certifications.js | Certificates | title, issuer, date, category, featured |
src/components/sections/Projects.jsx | Filter categories | filterCategories array and emoji map |
Current categories (update filterCategories in Projects.jsx if adding new ones):
src/data/projects.js to get existing project listREADME.md — project overview and featuresCLAUDE.md — AI-generated project context (often has architecture details)AGENT.md, GEMINI.md, QWEN.md — additional AI docspackage.json, requirements.txt, Cargo.toml, build.gradle — tech stackdocker-compose.yml, Dockerfile — deployment infogit -C <dir> remote -v to find GitHub repo URLsDISSIDIA-986) or is a fork/team projectScore each candidate project (0-10) on these criteria:
| Criterion | Weight | Scoring Guide |
|---|---|---|
| Technical complexity | 30% | Simple script=2, CRUD app=4, multi-service=6, enterprise=8, research-grade=10 |
| Uniqueness/novelty | 20% | Common tutorial=2, standard app=5, novel approach=8, cutting-edge=10 |
| Completeness | 20% | Skeleton=2, MVP=5, production-ready=8, deployed=10 |
| Portfolio diversity | 15% | Duplicates existing category=3, new subcategory=6, new category=9 |
| Relevance to career | 15% | Tangential=3, related=6, directly relevant to AI/SE role=9 |
Thresholds:
Auto-skip rules (don't even score):
Privacy/IP considerations:
repoUrl: nullFor each project to add:
{
id: <next_sequential_id>,
title: "<ProjectName> - <Short Tagline>",
description: "<2-3 sentences: what it does, key features, notable metrics>",
technologies: ["<6-8 key techs>"],
imageUrl: `${IMG_BASE}/images/projects/<kebab-name>.svg`,
demoUrl: "<url_or_null>",
repoUrl: "<github_url_or_null>", // only if user's own public repo
videoUrl: "",
featured: <true if top-tier project>,
category: "<one of the defined categories>"
}
Featured rules: Max 6 featured projects. Pick the most impressive across different categories.
Ordering: Featured projects first, then by category grouping, then by complexity descending.
For each new project, create an SVG at public/images/projects/<kebab-name>.svg:
Design spec:
0 0 800 500Inter, system-ui, sans-serifSkills (src/data/skills.js):
Experiences (src/data/experiences.js):
Categories (Projects.jsx):
filterCategories array and emoji fallback mapnpx react-scripts build to verify no build errorsAfter execution, present:
## Portfolio Update Summary
### New Projects Added (N)
| Project | Category | Featured | Score |
|---------|----------|----------|-------|
| ... | ... | ... | ... |
### Skipped Projects (M)
| Project | Reason |
|---------|--------|
| ... | ... |
### Flagged for Review (K)
| Project | Score | Notes |
|---------|-------|-------|
| ... | ... | ... |
### Other Updates
- Skills: [added/unchanged]
- Experiences: [updated/unchanged]
- Categories: [added/unchanged]
- SVGs created: [list]
### Current Portfolio Stats
- Total projects: X (Y featured)
- Categories: [list with counts]
--full-scan: Rescan ALL projects including already-listed ones (for description/tech updates)--dry-run: Evaluate and report without making changes--add <project-name>: Add a specific project by directory name--remove <project-id>: Remove a project by ID--refresh-svgs: Regenerate all SVG diagrams--update-skills: Only update skills section--update-experiences: Only update experiences section