portfolio-kup 是做什麼的?
根據實際證據建立使用者的個人檔案,並製作成雙語(泰文/英文)單頁式網頁。 以泰文回應使用者,技術詞彙保留英文。
步驟
請依序執行 · 所有需要使用者決定的問題都使用 AskUserQuestion · 對於資料量龐大的主題,先在聊天中摘要,再放入頁面中
1. 收集資料
- 詢問是否有其他使用 Claude Code 的機器(ssh
user@host) · 若使用者在要求中已提供則無需詢問 - 在每台機器上執行腳本(只輸出數字,不含提示文字或金鑰):
S=~/.claude/skills/portfolio-kup/scripts; D=<scratchpad>/pk; mkdir -p $D python3 $S/collect.py > $D/local.json ssh -o BatchMode=yes user@host python3 - < $S/collect.py > $D/host1.json python3 $S/merge.py $D/*.json > $D/metrics.json # 摘要表格輸出至 stderr - 自行閱讀提示內容以進行質化評估(
~/.claude/history.jsonl中的display、project欄位) · 均勻抽樣分散至每個專案與月份 · 切勿將發現的金鑰/令牌/密碼複製到回答或網頁中,僅記錄出現次數
必須告知使用者的限制:
history.jsonl僅計算使用者自行輸入的內容 · 長時間讓 agent 自動執行的期間不計入- 對話記錄(
~/.claude/projects/**/*.jsonl)在超過cleanupPeriodDays(預設 30 天)後會被刪除 · 因此 token 與 AI 工作時間僅包含近期 - 當月提示少於 100 筆(
enough_data: false)時,數據波動劇烈,禁止用於比較 - 行為計數是透過關鍵詞比對,僅供趨勢參考,非精確測量
2. 評估(在聊天中回應)
- 可能的職業 · 職級(Junior / Mid / Senior) · 優點與缺點,並附上證據
- 直接了當,不誇大 · 區分「因為擅長控制 AI 而能交付成果」與「本身就理解基礎知識」
- 若在記錄中發現金鑰/機密 → 立即警告需更換(告知類型,不透露實際值)
3. 測驗(若使用者想確認自己是否真的不熟悉)
- 兩個回合,每回合 4 題,透過
AskUserQuestion進行 · 題目為使用者實際工作(使用其所用技術堆疊)中的情境 - 混合兩種題型:看到症狀 → 指出原因 與 解釋底層機制 · 選項長度相近,不暗示答案
- 告知規則:不可詢問 AI · 不知道請回答「不知道」
- 每題附簡短解析,最後總結類型表現(例如 症狀題 4/4,機制題 0/4)
4. 薪資與職涯方向
- 使用
extended模式的WebSearch同時進行多個關鍵字搜索(泰文 + 英文,今年度) · 每次皆附上來源 - 區分 AI/ML Engineer(建立模型)與 AI Application Engineer(將 AI 應用於應用程式) · 兩者薪資差異很大
- 先廣泛思考:列出 8–10 個符合 技能 + 個性 + 成長潛力 的職業(不限技術職,例如顧問、售前工程師、教育者、EdTech 產品經理、自由接案者) · 然後 縮小至 3 個最適合的方向 + 最多 5 個次要職業作為標籤 · 可在聊天中提及「目前還不適合」的職業,但無需放入頁面
- 必須提供 一個明確的建議,說明應該朝哪個方向前進(根據訪談中的目標),並附上 3 階段計畫
- 在網頁中,薪資預設顯示為
*,僅在使用者要求時才顯示具體數字
5. 訪談
呼叫 grilling 技能(或 grill-me),透過 AskUserQuestion 分回合提問:
選擇該方向的原因 · 在聊天之外的與人/客戶相處經驗 · 時間框架 · 現有專案(個人或公司) ·
每週可投入時間 · 成功的定義 · 繼續或停止的標準
- 若答案前後矛盾或未回答問題 → 再次提問
- 直接指出觀察到的模式(例如不強迫選擇時會回答「都可以」) · 若有不同意見可表達,但由使用者決定
- 最後總結雙方共識,等待使用者確認後才放入頁面
6. 建立網頁
- 將
templates/onepage.html複製到暫存區,然後修改 僅<script id="profile">中的 JSON · 所有文字皆為{"th":…,"en":…}格式 - 使用
Artifact→quickstart(意圖other)首次建立,然後發佈 · 圖示為profile - 根據回饋編輯並重新發佈同一個檔案(維持相同 URL)
設計規則(來自實際使用者回饋 · 不得違反)
| 項目 | 應該做 | 不應該做 |
|---|---|---|
| 頁面佈局 | 單欄從上到下閱讀 · 自我介紹 → 01 技能 → 02 工作方式 → 03 成長歷程 → 04 未來方向 · 寬度可達 1600px | 側邊欄 · 與其他區塊顏色不同的深色面板 · 固定窄版寬度 |
| 未來方向(04) | 「建議」框:1 個建議 + 1 句原因 + 3 階段計畫 · 3 個方向的卡片,僅含:準備度 / 適合原因 / 需補足 · 被選中的卡片右上角有 ★ 推薦標籤 · 「也可以做」為單行標籤 · 「優先做什麼」不超過 4 項 | 長表格列出職業 · 卡片中包含步驟/第一步/薪資 · 與 3 階段計畫重複的資訊(使用者表示「太雜亂」) |
| 顏色 | 所有區塊使用同一色系(白底、細邊框) · 藍色 = 柔和/進步 · 金色 = 困難/目標 · 紅色 = 需謹慎/當前狀態 | 混雜多種色調 |
| 資料來源說明 | 頂部區塊說明所有資料來源 + 未計入的項目 + 「AI 評估,非認證」 | 將來源隱藏在頁面底部 |
| 語言 | 預設泰文 + 泰文/英文切換按鈕 · 英文使用 they/them 或避免性別代名詞 | 從姓名猜測性別 |
| 外人需能理解 | 一般用語 · 使用「一半」「一倍」「三分之一」等比較方式 | 內部專案名稱 · 訪談題號(Q20) · 無單位的原始數字(「43 次」、提示數量) · 純技術術語如「502 Traefik」 |
| 技能 | 雷達圖 + 3 級標籤(擅長/中等/待加強)置於技能區塊 · 軟技能與硬技能並列,項目帶有 01– 編號及證據標籤 · 硬技能列出工具名稱 | 能量條/進度條放在個性描述旁邊(使用者無法理解滿格代表什麼) · 卡片高度不一致 |
| 個性 | 使用 HR 常用的軟技能名稱 · 一個人物 persona 名稱 + 一句描述 · 風格為雙極量表 · 「需注意的個性」獨立成框 | 將測驗結果直接放在頁面上(使用者要求移除) |
| 工作時間 | 小時圖表 從 06:00 開始 · 工作日顯示為 佔全部工作的百分比,並附一行說明百分比含義 | 顯示次數的座標軸 |
| 成長歷程 | 可點擊的階梯,一次只顯示一階 · 高度 = 能力等級(階梯上標示等級名稱) · 標籤「▼ 目前位於此階」 · 每一階:能做的事 / 仍會犯錯 / 轉捩點 · 「與前一階比較」僅在數據充足的月份顯示 · 僅在有對話記錄的階梯顯示 token · 最後一階為目標(金色虛線) | 每月提示數量圖表(使用者無法解讀) · 一次顯示所有階層的詳細資訊 |
| 薪資 | * + 說明文字置於警告區塊與頁尾 | 未經要求顯示具體數字 |
| 隱私 | 不出现金鑰、IP、主機名稱、電子郵件 · 負面數據以不揭露身分的方式描述(例如「曾在不該放的地方輸入金鑰」) | 未經詢問便發佈/推送實際個人資料頁面至公開場所 |
技能中的檔案
scripts/collect.py· 收集單一機器的數據(每月提示數、行為、小時/天、token、時間戳記) · 不輸出文字訊息scripts/merge.py· 合併多台機器 →metrics.json(每月、enough_data、從 06:00 開始的小時百分比、工作日百分比、親自操作時數 vs AI 工作時數、token)templates/onepage.html· 從單一 JSON 資料渲染的網頁 · 檔案中的數據為虛構範例
指標對應頁面內容
| metrics.json | 使用位置 |
|---|---|
hours_pct_from_6am[].pct | hoursPctFrom6am(24 個值,從 06:00 開始) |
weekday_pct | weekdayPct |
late_night_pct | hoursNote,例如「近三分之一的工作發生在晚上 9 點後」 |
monthly[*] 且 enough_data 為真 | stages[i].compare.items(與前一階比較) · stages[i].peak/hot 最忙碌的月份 |
tokens[*] | stages[i].tokens(僅有數據的月份) · 說明 cache read 比例 |
hands_on_hours / ai_working_hours | 在聊天中摘要「親自操作約 ~X 小時/週 · AI 代為操作約 ~Y 小時/週」 |
secrets_pasted > 0 | 在聊天中警告 + 放入「需注意的個性」 + 作為 acts 的第一項 |
template 中 04 部分的 JSON
rec·title、reason、phases[](when、t、d)建議的 3 階段paths[]· 3 個方向:tag、title、ready(0–100)、fits、gap、pick: true給予建議方向、gold: true給予自行創業/founder 方向also[]· 最多 5 個次要職業名稱(純文字)acts[]· 最多 4 項(t、d)