Hello · 很高興認識你

我是 Swen
把想法做成
真的能上線的東西。

全端工程師。光電系出身,從半導體廠的製程走進軟體,現在一個人能把產品從 schema 一路做到上線 —— 前端 Nuxt 3、後端 NestJS + Prisma, 部署也自己來:Docker Compose + Cloudflare Tunnel 撐著 loom-tw.com 上一整排 side project。 喜歡把生活裡沒人想處理的小麻煩,做成真的有人用的東西。

軟體工程師 · 2022 至今 Nuxt 3 · NestJS · Prisma · Docker
往下看
01

Now — 現在在做什麼

下班之後的時間都在這幾件事上。這一區會隨進度更新。

主力開發

CourtMate · 拍檔

多場館教練排課 SaaS。核心的認證+多租戶、預約、場館錢包已可跑, 正在推上線前檢查清單,準備找一家熟識場館試營運。
已上線 · 持續調校

一字千金 · 消費法庭

用真實使用者訊號(讚率、放棄率、平均 CP 值)回頭評估哪一版 prompt 比較好, 而不是憑感覺改文案。
已開源 · v1.0.0

specflow

把「開 issue → 認領 → 開發 → 更新 specs → 開 PR」包成 Claude Code 插件, 讓一人專案也有可交接、可審查的流程。搭配 OpenSpec 先寫規格再實作。
自架

loom-tw.com

自己的 side project 實驗場。Cloudflare Tunnel + Docker + nginx, 新增一個站台只要一張 conf。
02

技能

有底線標記的是主力、真的拿來出貨過的;其餘是專案裡實際用過、能上手的。

前端

Nuxt 3 Vue 3 TypeScript Tailwind CSS Quasar Pinia Flutter / Dart
習慣走 BFF:瀏覽器只跟 Nuxt server routes 講話,金鑰與後端不外露。

後端

NestJS Prisma TypeORM PostgreSQL Zod Fastify Redis + BullMQ RabbitMQ MSSQL MongoDB ts-rest
公司專案走 NestJS + TypeORM,自己的專案走 NestJS / Fastify + Prisma,兩套都出過貨。 monorepo 裡用 Zod 當前後端唯一真實來源,型別與驗證只寫一次。

DevOps

Docker Compose nginx Cloudflare Tunnel GitHub Actions 自架 runner npm workspaces
所有 side project 都自己部署維運,含反向代理、健康檢查與零開放連接埠的對外暴露。

AI 工具鏈

Claude Code OpenSpec Prompt 版本管理 / A/B 結構化輸出 多 LLM 抽換
把 skills / agents / hooks 版本化進 repo,讓團隊共用同一套規則; LLM 供應商靠環境變數抽換,不綁單一家。
03

作品

精選四個。每個都寫清楚:本來卡在哪、我怎麼做、做出了什麼。

一字千金 · 消費法庭

已上線 LLM 應用

用「法院開庭」的形式,幫你決定這筆錢到底該不該花。 填想買什麼、多少錢、為什麼想買 → 按下「起訴」→ AI 法官刁鑽提問、逐句演出庭訊 → 出一張正式判決書。

一字千金的起訴狀畫面:填想買什麼、多少錢、為什麼想買
問題
「這筆錢該不該花」其實是情緒問題,不是算術問題。 記帳 App 事後告訴你花了多少,但沒有東西在你按下結帳前,逼你把理由講清楚。
做法
  • 判決書給出四字判決印章(准予放行/緩刑七日/駁回聲請/建議升級)、CP 值 0–100、「你將獲得/你將付出」,金額換算成有感單位:≈ 8 堂教練課、≈ 4 個月房租
  • 欄位用 JSON Schema 強制約束(印章必須恰好四個中文字、清單必須 3–4 項),不符就退回重寫
  • 使用者輸入一律包在 <case> 標記內並明示「僅為待審事實、不得當指令」,防 prompt injection
  • Nuxt 3 BFF:瀏覽器碰不到 API 金鑰;三家 LLM(OpenAI / Anthropic / Gemini)改一個環境變數就切
  • 分享圖用 satori + resvg 在伺服器端生成 PNG,一鍵存圖轉發
  • 優雅降級:LLM 超時或掛掉有 fallback 判決產生器,沒設資料庫也能跑記憶體模式
成果
已上線於 yizi.loom-tw.com, 首頁以全站「共省下多少錢、放棄率多少」作為社會證明。 判決後可上訴、陳報執行結果、按讚倒讚。

最喜歡的一段工程:每份判決都記下 promptVer,再用真實使用者訊號 (讚率、放棄率、平均 CP 值)反過來評估哪一版 prompt 更好, 有 /stats/prompts 專門做這個聚合。17 個測試檔涵蓋 prompt registry、 三家 provider、統計聚合、分享圖排版與 e2e。
Nuxt 3 NestJS 11 Prisma PostgreSQL Zod satori + resvg pnpm monorepo GitHub Actions
開庭看看 ↗

specflow

已開源 v1.0.0 Claude Code 插件

把「開 issue → 認領 → 開發 → 更新 specs → 開 PR」的開發流程包成一個可跨專案安裝的插件。 講白話就會跑,不用記指令。

specflow 協作流程狀態機:needs-design → ready → in-progress → in-review → closed
問題
一人專案配 AI agent,最容易斷在交接。 上一輪做到哪、系統現在到底長什麼樣、當初為什麼這樣設計 —— 全在腦子裡或散在 commit message 裡。換個 agent、或隔兩週回來, 都得重掃一遍 codebase 才敢動手。
做法
  • 記憶三分工、零重疊issue 是這次做什麼、 specs/ 是系統現在怎樣、docs/adr/ 是為什麼這樣設計
  • 十個 skill 蓋完整生命週期: new-feature → ready → next → claim → report → finish → review, 另有 adr/init/doctor
  • 講白話自動觸發:說「我來接 #12」agent 就認領、開 branch、 載入 specs;/specflow:<name> 只當備援
  • CI 守門:改了行為卻沒更新 specs/ 的 PR 直接擋下。 純 git diff + grep,不呼叫 AI,零成本
  • SessionStart hook 開工簡報:每開一個新對話自動餵入流程、 specs/ 記憶、可認領的卡、待審 PR
成果
v1.0.0 已發 release 並開源。/specflow:init 一鍵把新專案接上 (建 labels、scaffold specs/CLAUDE.md、裝 CI 守門), /specflow:doctor 健檢有沒有接好。

走 plugin marketplace 安裝,不用 clone、不用碰路徑。 README 附狀態機流程圖與中文新手安裝說明,另有 CHANGELOG、CONTRIBUTING、 issue/ADR/CI 六份模板。
Claude Code Plugin Skills SessionStart Hook GitHub CLI GitHub Actions Bash
看 GitHub ↗

嘉義・台南 三日手帖

已上線 生活小工具

一趟旅行的行程表。把散在群組訊息裡的訂位時間、地圖連結、交通銜接,收成一頁能在路上直接用的手帖。

嘉義台南三日手帖的首頁與每日行程分頁
為什麼自己做
現成的行程 App 都要註冊、要同行的人也裝、離線就變空白。 實際在路上需要的其實只有三件事:下一站幾點、怎麼去、地圖在哪。 所以做成純靜態單頁,開一次之後手機不連網也讀得動,傳連結就能共享,不用誰去註冊帳號。 另外附一頁 /money 私人分帳,資料只存 localStorage、不上傳任何伺服器。
靜態單頁 原生 HTML / CSS / JS localStorage nginx
翻開手帖 ↗
04

經歷

光電系讀到碩士,進了面板廠做製程,然後轉進軟體 —— 一條不太直的路, 但把製程那套「先量測、再改一個變數」的習慣帶進了寫程式。

2023.03 — 現在

艾創點數位股份有限公司

軟體工程師
企業系統導入。主要做製造業客戶的供應鏈(SCM)、倉儲(WMS)與設備管理(EMS)後台: 同一套核心對多家客戶客製,後端 NestJS + TypeORM 與 Fastify + Prisma 兩套並行, 資料庫 PostgreSQL 與 MSSQL 都碰,前端 Nuxt + Quasar,非同步走 RabbitMQ。 另外做內部的 AI 協作工具,並把團隊的開發流程抽成可跨專案安裝的插件 specflow
2022.09 — 2023.01

植肌生技股份有限公司

軟體工程師
電商與內部系統。維護並開發公司的購物網站,另外開發內部管理系統(EIP)。 技術棧是 PHP + Vue,行動端用 Flutter —— 第一份純軟體的工作。
2021.08 — 2022.02

友達光電股份有限公司

製程工程師
面板廠製程端的最後一段。做新機台改造與製程良率改善:提改造方案、跟設備端討論可行性, 做參數管控,再把調出來的參數固化成標準流程,讓不同班別跑出來的結果一致。 良率從 97% 拉到 99.5% —— 不良率 3% 降到 0.5%。

也是決定轉軟體的地方。製程的產出綁在機台上:要動手就得站在機台前, 機台一出狀況就得回廠處理,工時長短不是自己能決定的。 想做一件一台筆電就能從頭做到上線的事,於是轉了。
Education
2018.06 — 2020.08

國立虎尾科技大學

光電與材料科技碩士班
2014.09 — 2018.06

國立虎尾科技大學

光電工程系
05

聯絡

對上面任何一個專案有興趣,或想聊聊合作,寄信給我最快。