Communitygithub.com

mitchelljrpalmer/portfolio-website

Mitchell 的 Next.js 作品集網站約定與架構指南。用於維護此儲存庫時,處理專案、照片、自傳、導覽、樣式等任務。

portfolio-website 是什麼?

這是一份針對 Mitchell Palmer 個人作品集網站(mitchelljrpalmer.com)的維護技能說明,該網站使用 Next.js 16(App Router)從 Webflow 重建而成。其核心心智模型是將內容、頁面路由與 UI 組件徹底分離:內容檔案集中存放於 `src/content/` 目錄下(以 TypeScript、JSON 或 MDX 格式存在),頁面結構定義於 `src/app/`,而可複用 UI 組件則置於 `src/components/`。此設計讓無須修改路由或元件就能新增或編輯專案、經歷、照片等內容。該說明詳細列出了每種內容檔案的對應控制項(例如 `site.ts` 控制名稱與導覽連結、`projects/*.mdx` 控制專案細節),並明確定義了 MDX 前置資料的格式,包括 `skills`、`tools` 與 `techGroups` 的使用規則。此外,也提示了兩項重要限制:字型依賴 Google Fonts 在構建時需要網路連線,且 `AGENTS.md` 和 `CLAUDE.md` 為自動生成檔案,不應手動編輯。

相容平台✓Claude Code~Codex CLI~Cursor
npx skills add mitchelljrpalmer/portfolio-website

在你喜歡的 AI 中提問

開啟一個已預先載入此 Agent Skill 的新對話。

說明文件

作品集網站 — 維護技能

這是 Mitchell Palmer 的個人作品集:以 Next.js 16(App Router)重建的前 Webflow 網站。所有內容以純 TypeScript/JSON/MDX 檔案形式存在於 src/content/ 目錄下,而非使用 CMS。在進行任何變更前,請先閱讀此說明,以遵循現有約定,避免引入新的模式。

心智模型

src/content/    → 資料(要說什麼——幾乎所有編輯都在這裡)
src/app/        → 頁面(路由——一個資料夾對應一個 URL,遵循 App Router 慣例)
src/components/ → UI 元件(可複用——Header、Footer、ProjectCard、PhotoGallery、MDX 嵌入元件)
public/images/  → 靜態資源,按類別組織(site/、projects/、projects/hero/、photography/、icons/)

如果任務是「新增/編輯內容」(專案、工作經歷、自傳內容、照片),幾乎一定只會動到 src/content/。純內容變更時請勿觸碰 src/app/ 或 src/components/。

內容檔案參考

檔案控制項目
src/content/site.ts姓名、標語、電子郵件、導覽連結、社交連結
src/content/about.ts自傳段落、「旅程」故事、使命宣言、狀態
src/content/experience.ts工作經歷(experience[])、學歷、技能列表、服務卡片
src/content/photography.json{ src, season, location, type } 陣列——/photography 頁面的篩選按鈕會根據此處出現的值自動生成
src/content/projects.ts僅邏輯(讀取 projects/ 下的 .mdx 檔案)——除非要變更載入/排序方式,否則勿編輯
src/content/projects/*.mdx每個專案一個檔案。前置資料 + Markdown/MDX 主體。檔名即為 URL 的 slug。

專案 MDX 前置資料格式

---
title: "專案標題"
description: "1-2 句話,顯示於卡片與詳細頁頂部。"
image: "/images/projects/thumbnail.jpg"
heroImage: "/images/projects/hero/banner.jpg"   # 可選,若無則使用 `image`
featured: true                                    # 顯示於首頁
link: { label: "GitHub 儲存庫", href: "https://..." }
skills: ["技能一", "技能二"]
tools: ["Python", "PostgreSQL"]
# 或者,對於使用多種技術的專案,可使用 techGroups 取代 skills/tools:
techGroups:
  Languages & Libraries: ["Python", "pandas"]
  Statistical Methods: ["CUSUM", "Z-Score Analysis"]
---

注意:ProjectCard.tsx 顯示 project.tools ?? project.skills(如果兩者都存在,優先使用 tools)。在顯示上,techGroups 與 skills/tools 互斥——詳細頁面的側邊欄只會顯示其中一組,不會同時顯示。

在專案主體內可使用兩個自訂 MDX 元件:

<DashboardEmbed src="https://your-app.streamlit.app/" title="我的儀表板" />
<PdfEmbed src="/path/to/summary.pdf" />

樣式約定

  • Tailwind v4,CSS 變數定義在 src/app/globals.css 的 :root 中(例如 --color-brand: #486161)。請在此處修改調色盤,不要在元件中硬編碼 hex 值。
  • 兩種字型:--font-serif(Merriweather,標題)和 --font-sans(Inter Tight,內文)——兩者均透過 next/font/google 在 layout.tsx 中載入。在建構時需要網路連線——在離線或沙盒環境中會失敗。
  • .container-page 工具類別用於在各頁面中維持一致的最大寬度與內距。

請勿觸碰

  • node_modules/——已被 gitignore,透過 npm install 重新產生。永遠不要重新加入 git。
  • 儲存庫根目錄下的 AGENTS.md——由 next dev 自動重新產生,向 AI 代理說明此 Next.js 版本的特定慣例。請勿手動編輯;它會被覆寫。
  • 儲存庫根目錄下的 CLAUDE.md——目前僅包含 @AGENTS.md(一個匯入)。若要新增持久性自訂指令,請建立新檔案並單獨參照它,不要覆寫 AGENTS.md 的匯入。
  • next-env.d.ts——自動產生,已被 gitignore。

常見任務快速參考

新增專案 → 縮圖放入 public/images/projects/(可選的英雄橫幅)→ 在 src/content/projects/ 中建立新的 .mdx 檔案 → 完成,無需路由程式碼。

新增照片 → 檔案放入 public/images/photography/ → 在 photography.json 中加入對應項目。

編輯自傳/使命 → src/content/about.ts,純字串編輯。

新增工作經歷 → src/content/experience.ts,將新項目附加到 experience[] 陣列開頭(依陣列順序渲染,因此最新的項目在前)。

變更導覽/社交連結 → src/content/site.ts。

建構與驗證

npm install       # 拉取更動 package.json 的異動後執行
npm run dev        # 本機開發伺服器,熱重載
npm run build       # 生產建構——在推送結構性變更前請執行此命令
npm run lint        # eslint 檢查

npm run build 在沒有網路連線時會失敗(Google Fonts 獲取)——這在完全離線環境中是預期行為,並非程式碼錯誤。

相關技能