Turn a single sentence into a designer's complete portfolio website.
PortfolioFlow is aimed at5 major design fields(Landscape / Graphic / Interior / Industrial / UX) portfolio site-building Skill. Users describe their needs in a single Chinese or English sentence, and this Skill automatically generates:
- Complete portfolio front-end site (Hero + work grid + detail page + About + AI assistant chat box)
- Designer management backend (login + work CRUD + AI-generated intros + statistics dashboard)
- Custom theme colors (5 preset themes + free combination with user-provided hex)
- Edge Functions / KV / Middleware / JWT authentication full-stack capabilities
Finally, through edgeone-pages-deploy , deploy to EdgeOne Pages with one click.
Execution flow after triggering (decision tree)
After receiving a user request that meets this Skill's trigger conditions, execute in the following order:
Step 1 — Collect required information
If the user's descriptionis missingany of the following fields, ask the userall at once(do not ask repeatedly):
| Field | Required | Example | Default value |
|---|---|---|---|
| Designer name | ✅ | "Li Bo" / "Alex Chen" | Username |
| Design field | ✅ | Landscape / Graphic / Interior / Industrial / UX | Ask them to choose one |
| Website title | ❌ | "Lee · Landscape Design Portfolio" | "{Name} Portfolio" |
| One-sentence positioning | ❌ | "Bring design back to the land and human dwelling" | Default by field |
| Theme scheme | ❌ | "Dark Night Forest" / hex color | "Dark Night Forest" |
| Number of prefilled works | ❌ | 3-6 | 3 example works by default |
Follow-up example:
I need to confirm a few key pieces of information:
- What is your design field? (Landscape/Graphic/Interior/Industrial/UX)
- Designer name?
- Theme scheme? (Dark Night Forest / Dawn Beige / Deep Sea Blues / Warm Sun Orange-Red / Pure White Minimal, or just give a hex color)
Step 2 — Decide the project structure
view one of the following reference files, and load the corresponding content patterns based on the user's field:
- Landscape / Interior / Industrial →
references/portfolio-knowledge.mdthe corresponding section in - Graphic / UX → same as above
Step 3 — Generate the project skeleton
Under /tmp/portfolio-{slug}/ create the following files (do not use cd to enter directories whose paths contain special characters, all
paths should use absolute paths or ~/Desktop/ clean paths under):
portfolio-{slug}/
├── index.html # 前台首页(用 templates/index.html 模板)
├── portfolio-detail.html # 作品详情
├── admin.html # 管理后台
├── login.html # 登录页
├── assets/ # 图片素材(用户上传或占位图)
├── functions/
│ ├── api/
│ │ ├── auth.js # 登录鉴权 + JWT 签发(参考 references/auth-jwt.md)
│ │ ├── portfolios.js # 作品 CRUD(参考 references/portfolio-crud.md)
│ │ ├── generate.js # AI 生成介绍(参考 references/ai-generate.md)
│ │ └── stats.js # 访问统计(参考 references/stats-kv.md)
│ └── _middleware.js # JWT 校验 + CORS
└── README.md
Step 4 — Theme color injection
The theme scheme selected by the user needs to besimultaneouslyinjected into:
index.htmlthe CSS variables in the<style>ofadmin.htmlthe same location inlogin.htmlthe same location in
For the specific CSS variable values of the 5 preset themes, see references/design-system.md。
If the user provides a hex color (such as #FF6B6B), follow the algorithm for "hex
to complete theme" in references/design-system.md to generate the matching color scale.
Step 5 — Call the deployment Skill
After all files are generated, call edgeone-pages-deploy Skill to perform deployment:
触发短语:deploy this portfolio to EdgeOne Pages
项目目录:~/Desktop/portfolio-{slug}/
After successful deployment,must:
- guide the user in the EdgeOne Pages console to bind the following KV namespaces (a one-time manual operation):
- Variable name
PORTFOLIO_USERS← User account database - Variable name
PORTFOLIO_WORKS← Works database - Variable name
PORTFOLIO_STATS← Visit statistics - Important: variable names must match strictly; after KV binding, in the Edge Function access them asglobal variables
, not
env.PORTFOLIO_WORKS(this is a special convention of EdgeOne Pages).
- Variable name
- Redeploy once to make the KV binding take effect.
- Return the access URL + default admin account and password (automatically written to KV on first deployment).
Routing table (references/ loaded on demand)
The table below helps the AI decide when to open which reference:
| User scenario keywords | Reference to load |
|---|---|
| "theme color / color scheme / visual style / hex / custom colors" | references/design-system.md |
| "login / authentication / JWT / password / token" | references/auth-jwt.md |
| "works / CRUD / add / edit / delete / create, read, update, delete" | references/portfolio-crud.md |
| "AI generation / work description / description generation / smart fill" | references/ai-generate.md |
| "statistics / page views / PV / popular works / dashboard" | references/stats-kv.md |
| "deployment / go live / EdgeOne / domain / KV binding" | references/deploy-workflow.md |
| "landscape / graphic / interior / industrial / UX industry phrasing" | references/portfolio-knowledge.md |
Core constraints (must be followed)
-
Never rely on external API Keys—in default mode all features (including AI generation) must run with zero configuration.
references/ai-generate.mddescribes an optional DeepSeek enhancement mode, butis not the default behavior。 -
Never write to a user path directory containing special characters—prefer using
~/Desktop/a clean path under this that does not contain× ' " /. -
Image fields do not use
startsWith('http')fallback checks—directly trust the passed-inimgfield, use local/assets/xxx.jpgand remotehttps://...exactly as they are. -
JWT secret is not hardcoded in the code—read from the EdgeOne Pages environment variable
JWT_SECRET, and after deployment guide the user to set it manually in the console. -
After the first deployment is complete, must return:
- public access URL
- console link
- default admin account (prompt to change the password immediately after first login)
Optional enhancements (enable only when the user explicitly requests them)
| When the user says | enable |
|---|---|
| "connect to real AI" / "use DeepSeek" / "make the AI capability a bit stronger" | references/ai-generate.md Plan B in: DeepSeek dual engine |
| "support Chinese-English switching" / "bilingual" | In index.html add an i18n dictionary + toggle button |
| "add RSS / subscription functionality" | Add functions/api/rss.js |
| "support work comments" | Add functions/api/comments.js + comments KV namespace |
Counterexamples: Requests that should not trigger this Skill
- "Make a landscape project showcase site" (refers to a specific project site, not a designer portfolio) → use
landscapeflowPrompt - "Make a landing page / SaaS / e-commerce website" → does not belong to the portfolio scenario
- "Turn my existing resume into a web page" → it is a resume, not a portfolio
- Simply "AI generates a project introduction" (without building a site) → does not require the site-building Skill
Output Contract
After execution is complete, output the following structured result to the user:
✅ PortfolioFlow 作品集已就绪
🌐 访问 URL: https://portfolio-{slug}.edgeone.cool
🔐 管理后台: https://portfolio-{slug}.edgeone.cool/admin
- 默认账号: admin@portfolio.local
- 默认密码: PortfolioFlow_{随机6位}
- ⚠️ 首次登录后请立即修改密码
📊 已部署能力:
✅ 前台作品集首页({N} 个示例作品)
✅ 作品详情页
✅ 管理后台(登录 / CRUD / AI 生成)
✅ Edge Functions × 4
✅ KV Storage × 3
✅ JWT 鉴权 + CORS Middleware
🎨 当前主题: {主题名称}
📁 项目目录: {本地路径}
下一步建议:
1. 登录后台添加你的真实作品
2. 上传头像和封面图到 /assets/
3. 修改 footer 中的版权和联系方式