Communitygithub.com

wjlgatech/agentic-portfolio-public

為任何 GitHub 使用者建立一個具備 AI Agent 的個人作品集 — 使用 Next.js + CopilotKit 構建,頁面上的 AI Agent 能根據使用者倉庫內容回答問題,並採用免費 LLM 生存鏈(NVIDIA NIM → Groq → Gemini → OpenAI),因此完全零成本。

agentic-portfolio-public 是什麼?

這項技能會自動為任何 GitHub 使用者建立一個「具備 AI Agent 的個人作品集」網站,使用 Next.js 15 App Router 與 CopilotKit,並整合免費 LLM 生存鏈(NVIDIA NIM → Groq → Gemini → OpenAI),讓整個專案執行成本為零。它會擷取目標使用者過去 12 個月內活躍的公開與私人倉庫(針對私人倉庫僅提供不洩露機密的重點摘要),並自動生成使命、價值觀與 12X 未來實踐等內容。作品集還包含一個自我更新的 LinkedIn 文章區塊,使用者可透過與 Agent 對話來新增文章。此技能支援的觸發詞包括「portfolio」、「personal site」、「agentic portfolio」、「free-llm portfolio」。開發人員只需提供 GitHub 登入名稱,技能便會拉取倉庫資料、整理成結構化的 content/ 目錄,並複製可重複使用的應用程式碼範本,最後進行建置與部署。它內建多項防護機制:確保私人 IP 永不外洩、API 金鑰僅保留在伺服器端、優先使用免費層級,且要求建置通過後才能推送程式碼。

相容平台~Claude Code✓Codex CLI~Cursor✓Antigravity✓Gemini CLI
npx skills add https://github.com/wjlgatech/agentic-portfolio-public/tree/HEAD/skill

在你喜歡的 AI 中提問

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

說明文件

/agentic-portfolio — 為任何 GitHub 使用者建立具備 AI Agent 且使用免費 LLM 的個人作品集

這項技能會建立 agentic-portfolio 應用程式(Next.js 15 App Router + CopilotKit + /free-llm 生存鏈)。參考實作位於 github.com/wjlgatech/agentic-portfolio — 將其作為範本複製,然後為目標使用者重新填寫 content/ 資料。所有個人資料皆為資料;應用程式程式碼可直接重複使用。

0. 輸入與先決條件

  • GitHub 登入名稱(例如 wjlgatech)。若要使用私人倉庫與重點摘要,請執行 gh auth status — 使用者必須已通過驗證且具備 repo 範圍。僅使用公開倉庫則無需驗證。
  • node >= 18、npm、gh、python3。

1. 擷取活躍倉庫(過去 12 個月)

SINCE=$(python3 -c "import datetime as d;print((d.date.today()-d.timedelta(days=365)).isoformat())")
gh api -X GET 'user/repos?per_page=100&sort=pushed&affiliation=owner' --paginate \
  --jq ".[] | select(.pushed_at >= \"$SINCE\") | {name,private,fork,lang:.language,desc:.description,pushed:.pushed_at[0:10],stars:.stargazers_count,url:.html_url}" \
  > repos.ndjson
# 若要擷取其他使用者的公開倉庫:gh api "users/<login>/repos?per_page=100&sort=pushed" ...

排除分叉(fork: true)與元倉庫(dotfiles、既有的 portfolio)。

2. 整理至 content/projects.json

針對每個保留的倉庫,輸出 {name, category, highlight, featured, private, language, stars, pushed, url}:

  • Category — 歸納為少數幾個類別(例如 Agentic OS · Frameworks & Tooling · AI Products · Faith/Family · Open Knowledge);選擇符合使用者實際工作的名稱。
  • highlight — 一行不洩露機密的重點摘要。對於 私人 倉庫:僅提供高階描述,並將 url: null(絕不連結或暴露內部細節)。
  • featured — 標記約 15–18 個最強的專案作為預設視圖。

3. 填寫 content/profile.ts 與 content/portfolio.yaml

  • profile.ts:姓名、標語、使命、價值觀、熱愛的事物,以及 12X 未來實踐(十二項複利紀律)。根據使用者的個人簡介與倉庫主題進行草擬;並清楚標示這是供使用者自行編輯的。
  • portfolio.yaml:控制面板 — 區塊順序、可見性、標籤、主題,以及 文章 列表(初始為空)。擁有者透過與 Agent 對話(「新增我的 LinkedIn 文章...」)或手動方式來填寫文章。LinkedIn 需驗證才能存取 — 請使用者貼上他們的貼文,或接受公開文章 URL 並使用 WebFetch 擷取每個文章。
  • 在部署時設定 PORTFOLIO_OWNER_TOKEN,以便只有擁有者能套用 Agent 的編輯(訪客僅能檢視)。若未設定,則在本機開發環境中不受限制。

4. 應用程式程式碼 — 從範本複製,無需重寫

可重複使用的部分(對每位使用者皆相同):

  • app/page.tsx、app/layout.tsx、app/globals.css
  • app/api/copilotkit/route.ts + lib/llm.ts(免費 LLM 鏈 — 金鑰僅保留在伺服器端)
  • components/Copilot.tsx、components/Projects.tsx、components/Articles.tsx
  • 設定檔:package.json(將 Next 鎖定在修補過的 15.x 版本)、tailwind.config.ts、tsconfig.json、postcss.config.mjs、.env.example

5. 驗證,然後部署

npm install && npm run build      # 推送前必須為 GREEN
gh repo create <login>/<repo-name> --public --source=. --remote=origin --push

然後部署至 Vercel(匯入倉庫 → 新增一個免費金鑰,例如 NVIDIA_API_KEY → 部署)。

防護機制

  • 絕不洩露私人 IP。 私人倉庫:僅提供重點摘要,url: null。
  • 金鑰保留在伺服器端。 只有 app/api/copilotkit/route.ts 會讀取 LLM 金鑰。
  • 優先使用免費層級。 維持 lib/llm.ts 的順序為 NIM → Groq → Gemini → 付費。
  • 推送前建置必須為綠色。 誠實回報建置狀態。
  • 倉庫推送需經過人類批准,除非使用者已明確表示「建立並推送」。

相關技能