name: vibe-coding-guidelines description: 在非程式開發者要用 vibe coding 與 coding agent 協作時使用。常見觸發像「幫我整理開發準則」「定義交付邊界」「規劃驗證方式」。輸出需求表達、邊界與風險控管準則;不直接取代實作。 version: 2026.3.26 homepage: https://github.com/AllanYiin/skills/tree/main/skills/vibe-coding-guidelines license: MIT metadata: {"author":"Allan Yiin","language":"zh-TW","category":"engineering","short-description":"非程式開發者進行 vibe coding 時給 coding agent 的開發準則"}
Vibe Coding Guidelines
Purpose
把「不懂程式的使用者」的需求,交付成一個可解壓縮後直接點一下就能啟動的專案:
- Windows:雙擊
run_app.bat(它是scripts/project_launcher.py生成/維護的 Windows wrapper,不是另一份可自由發明的新主入口) - macOS:雙擊
run_app.command(若無法執行,請先chmod +x run_app.command;若首次被系統阻擋,依提示到「系統設定 > 隱私權與安全性」允許後再執行) - Linux:雙擊或執行
run_app.sh(若無法執行,請先chmod +x run_app.sh)
同時提供繁體中文介面、狀態持久化、友善錯誤訊息與 logs;若使用者提供 SVG / mockup / 畫面規格,介面方向必須尊重原規格,不能擅自改風格。若是工作台型 UI,嚴格禁止 stacked UI / stacked cards 疊首頁;必須先定義唯一主任務,並讓該功能盡量佔據最大、最中央、最先被看的畫面區域。任何工作台或流程頁都要把 task model、state model、資訊分類與 visibility plan 寫進規格與 AGENTS.md,不能只留一句「請簡潔」。
Scope
In scope
- 以 Windows / Linux / macOS 為目標的 Python(優先)或必要時的 Python+Node 專案交付
- 一鍵啟動(自建 venv、自裝 requirements、自動開瀏覽器/視窗)
- 專案規格→開發計畫→
todo.md檢核→逐檔寫入→測試→打包 ZIP - 各平台坑位(編碼、路徑、port、權限、防毒/權限政策)避雷;Windows 特例會額外標註
- OpenAI Responses 串流對話、Whisper STT、Nano Banana 2(Gemini 3.1 Flash Image)圖像(T2I/I2I)整合規範
Out of scope
- 需要使用者自行開 cmd/PowerShell 手動輸入指令才能完成的交付
- 需要 WSL/Linux 才能執行的方案
- 需要使用者自行調整系統環境變數才能運作的方案(除非已提供 UI 內設定流程)
Primary use cases
- 交付可一鍵啟動的 Windows 應用(ZIP)
- Trigger examples: 「幫我做一個 Windows 工具/小程式」「我要下載解壓後直接點 run 就能跑」「打包成 ZIP 給我」
- Expected result: ZIP 內含
run_app.bat、requirements.txt、README.md、todo.md;解壓後雙擊可啟動;錯誤寫入logs/且 UI 以繁中提示。
- 既有專案的最小修改(不重構)
- Trigger examples: 「這個專案在 Windows 跑不起來」「中文亂碼」「port 被佔用」「缺套件/requirements 不對」
- Expected result: 保持原 UI/介面/API 不變,做最小改動修好;提供被修改檔案的完整內容;再打包 ZIP。
- 加入 AI 功能且強制串流
- Trigger examples: 「加 ChatGPT 串流」「加語音轉文字」「加生圖/修圖」「用 OpenAI Responses API」
- Expected result: 所有 LLM 文字輸出皆 streaming;金鑰不硬編碼;model 由 env/config 管;STT/T2I/I2I 依規範接入。
Workflow overview
最新流程以這個順序為準:
- 先釐清/補齊規格,並把需求整理到
specs/requirements.md;至少寫清楚功能、輸入輸出、UI、資料保存、錯誤處理、打包方式,以及使用情境判定需要的四個軸。 - 產出並寫入
todo.md,後續以它作為唯一工作清單;若需求變動,先更新specs/requirements.md,再更新todo.md。 - 先讀
references/usage_scene_decision_tree.md,判定usage_scene與project_profile;資訊不足時才反問最少問題,並把結果寫入根目錄project.config.json。 - 依使用情境先生成根目錄
AGENTS.md,組成固定為「核心規則 + 使用情境規則 + 技術補充規則 + 專案特例」。 - 再讀
references/apsm_decision_tree.md做 APSM 技術選型,決定archetype/architecture/frontend/backend/apsm_version,並補完project.config.json。 - 根據使用情境與 APSM 一起選目錄模板並建立骨架,至少補齊固定檔案、
README.md、specs/requirements.md、todo.md、.env.example、scripts/project_launcher.py、scripts/apsm_validate.py與.venv/。 - 立刻執行
python scripts/apsm_validate.py --project <target-project>;先修完結構 errors,再繼續功能實作。 - 逐檔完成實作與必要測試,避免 placeholder;若需求包含 AI,再依規範整合 Responses 串流、Whisper、Nano Banana 2,並確保金鑰與設定管理合規。
- 在目標專案根目錄執行
python scripts/project_launcher.py,完成依賴驗證、launcher 生成、runtime metadata 建立與常見啟動修正;之後至少做一次本機啟動驗證,並再跑python scripts/apsm_validate.py --project <target-project> --strict。 - 確認 launcher、logs、runtime metadata 與錯誤訊息都符合規範後,壓縮成 ZIP 交付。
Routing boundaries
- Neighboring skills / workflows:
spec-organizer:需求還沒整理成可開發規格。frontend-design:重點是前端視覺與互動,而不是整個可執行專案交付規範。technical-documentation-writer:只需要文件,不需要交付可啟動專案。
- Negative triggers:
- 「幫我只做一段文案」
- 「只討論概念,不要產出專案」
- 「只改一個元件顏色,不做整體交付」
- Handoff rule: 若任務不涉及可執行專案交付、啟動器、打包或新手協作規範,就不應啟動這個 skill。
Language coverage
- Primary language(s): 繁體中文、英文。
- Mixed-language trigger phrases: vibe coding、run_app.bat、ZIP delivery、project launcher、streaming chat、Windows tool。
- Locale-specific wording risks: 使用者說「做個小工具」常隱含 Windows 一鍵啟動與零指令體驗,需要主動寫進規格。
Success criteria
project.config.json除了 APSM 欄位外,還要包含usage_scene與project_profile。根目錄必須存在
AGENTS.md,而且內容要對齊使用情境、技術選型與專案特例。預設場景必須是
scene_b_shared_tool,只有明確符合個人黑盒工具時才降到場景 A。使用者不需手動安裝依賴、不需手動輸入指令;只需解壓縮→點一下啟動(Windows:
run_app.bat/macOS:run_app.command/Linux:run_app.sh)。跨平台可啟動:ZIP 內同時包含
run_app.bat/run_app.command/run_app.sh,且三者皆可在對應平台啟動。run_app.bat/run_app.command/run_app.sh都是由scripts/project_launcher.py(必要時搭配scripts/project_launcher_posix.py)生成或維護的 launcher wrapper;agent 應沿用或修改這條生成鏈,不得另外自創平行的run_app.bat主流程。編碼穩定:
.py/.json/.md為 UTF-8(建議無 BOM);run_app.bat預設 ASCII-only,不以 ANSI/CP950 為策略,也不預設加入chcp 65001;run_app.command/run_app.sh使用 UTF-8 LF。重要流程(I/O、網路、LLM)不閃退:有全域 try/except、UI 友善錯誤、
logs/有 stack trace。port 衝突不可假裝已自動處理;若尚未實作完整動態 port 協調,至少要清楚提示衝突原因與下一步。若要支援動態 port,必須以服務實際綁定後回報的 port 為單一事實來源,並同步更新 URL / API base / log / 啟動器狀態。
AI 回應必為 streaming;金鑰不出現在 logs。
在規劃目錄前已完成 APSM 選型,且根目錄有可機器判讀的
project.config.json(含apsm_version與archetype);agent 不需要靠猜測目錄來反推架構。python scripts/apsm_validate.py --project <target-project> --strict可通過,代表project.config.json、目錄結構、必要啟動檔與.env關鍵欄位一致。已執行過
project_launcher.py的專案,必須另外具備.runtime/ports.json、.runtime/launcher_state.json與logs/launcher.log等 machine-readable runtime metadata。若有 viewer / editor / diff / preview 類工作台,必須只聚焦一個唯一主任務;主任務必須佔據最大、最中央、最先被看的區域,次要資訊退到側欄、drawer、tab 或折疊層,不得做成 stacked UI / stacked cards 首頁。
若有 viewer / editor / diff / preview 類工作台,
specs/requirements.md與AGENTS.md必須都寫出:primary task、task model、state model、資訊角色分類、首屏主要群組上限與 disclosure 規則。工作台首頁預設只允許 2-3 個主要視覺群組,且只有 1 個主 CTA;
reference類資訊不得長期佔據主舞台。空狀態不可只留白;必須清楚說明缺少什麼、為何沒有內容、下一步要做什麼。
Instructions
Step 0: Inputs 期望
- 若使用者有提供規格:直接進入 Step 1。
- 若規格不足:自行補齊並以「白話文確認」列出:核心功能、限制、UI 版型(只有在未指定時才預設左右分欄;若規格已指定結構,不得擅改)、資料保存方式、輸出檔案(ZIP)。
- 若屬工作台、dashboard、viewer、editor、review tool 或 setup flow,額外補齊:唯一主任務、task model、state model、資訊分類、visibility plan。
Step 1: 產生並維護 todo.md 與 specs/requirements.md
在
specs/requirements.md內另外整理四個判定軸,並直接對應到project_profile四欄:使用者是誰(user_type)、使用週期(usage_duration)、修改頻率(change_frequency)、壞掉代價(failure_cost)。若描述已足夠,直接推定;若資訊不足且會影響場景分類,再反問最少問題。
把所有子任務寫成 checklist。
把當前確認過的規格整理到根目錄
specs/requirements.md;至少包含:功能範圍、輸入輸出、UI/互動、資料保存、外部依賴、驗收條件。若有工作台型 UI(viewer、editor、diff、preview、審閱台),規格內必須額外寫明:唯一主任務、主畫面責任、task model、state model、各資訊區塊的角色(
action-critical、decision-supporting、status-feedback、reference、exception-handling、audit/history)、次要資訊應退到哪裡、首屏最多 2-3 個主要視覺群組、空狀態的下一步指引;嚴格禁止 stacked UI / stacked cards 疊首頁。若使用者後續補需求,先更新
specs/requirements.md,再更新todo.md;不要讓規格只散落在對話裡。後續每完成一項就打勾;任何新需求都先更新 todo.md。
Step 2: 使用情境判定與 AGENTS.md 組裝
- 先讀
references/usage_scene_decision_tree.md,判斷usage_scene,不要直接從技術棧反推場景。 usage_scene只能是:scene_a_personal_blackboxscene_b_shared_toolscene_c_internal_toolscene_d_engineer_maintained
project_profile至少包含:user_typeusage_durationchange_frequencyfailure_cost
- 上述四欄就是 Step 1 提到的四個判定軸;欄位值域與判定規則以
references/usage_scene_decision_tree.md為準。 - 資訊不足時,預設
scene_b_shared_tool,不要預設 A。 - 把
usage_scene與project_profile寫進根目錄project.config.json。 - 在 APSM 技術選型之前,先產生根目錄
AGENTS.md。 AGENTS.md的組成固定為:- 核心規則
- 使用情境規則
- 技術補充規則
- 專案特例
AGENTS.md至少要寫出:專案定位、最高原則、目錄與檔案規範、實作規範、UI / UX 規範、修改規範、測試與打包規範、專案特例。- 若專案有主工作台,
AGENTS.md的 UI / UX 規範必須額外包含:- 先定義唯一主任務,再畫版面;盡量一次只聚焦一個功能
- 先寫 task model、state model、資訊分類與 visibility plan,再允許切版
- 主畫面只能讓主任務佔據中央、首要視線與最大化畫面區域
- 次要資訊退到側欄、drawer、tab 或折疊層;
reference類資訊預設 on-demand exception-handling類資訊只在對應 state 顯示- 首屏最多 2-3 個主要視覺群組,且只能有 1 個主 CTA
- 嚴格禁止 stacked UI / stacked cards 首頁
- 空狀態要交代缺少內容、原因與下一步
Step 3: APSM 技術選型與專案類型宣告
APSM 是技術補充層,不是主分類;主分類先看使用情境。
project.config.json除了 APSM 欄位外,還要保留usage_scene與project_profile,讓場景規則、技術規則與 validator 對齊。APSM(AI Project Structure Model)是這個 skill 的目錄規劃中樞。先定義 machine-readable config,再映射到目錄模板;不要跳過這一步。
選型時先走
references/apsm_decision_tree.md;決策樹只負責篩選,不能取代完整模板矩陣。APSM 是兩層模型:
archetype負責 AI/新手入口分類,architecture/frontend/backend負責精確技術組合。不要把這兩層混在一起。在規劃任何目錄結構前,先明確決定五個欄位:
archetype、architecture、frontend、backend、apsm_version;不要直接從 A1/B3 之類模板反推需求。技術選型原則:
- 預設以 Python 優先;只有在需要瀏覽器級 SPA、SSR/MPA 框架能力,或明確需要 Node 生態時,才引入 Node。
- 若只是簡單表單、內部工具或模板渲染頁面,優先考慮
single_service + python_templates + python_api。 - 若前端與後端需要獨立啟動、獨立部署或 API 本身要獨立存在,才選
separated。 - 若仍想維持單一 repo 但前後端要分開組織,選
monorepo(src/server+src/web)。 archetype推薦值:web_app:separated類型的 Web 前端 + APImonorepo:前後端都放在src/python_fullstack:Python template renderingfullstack_app:目前此 skill 為相容既有 B4 模板保留的延伸 archetype(single_service + node_ssr + node_api)service_api:API-only 單體服務(single_service + none + python_api/node_api)
根目錄必須寫入
project.config.json,至少包含:{ "name": "my-vibe-app", "apsm_version": "1.0", "archetype": "web_app", "architecture": "separated", "frontend": "node_spa", "backend": "python_api", "version": "0.1.0" }project.config.json是 APSM 的單一真相來源;specs/requirements.md是需求真相來源。後續README.md的目錄說明、啟動入口與.env規劃都必須與兩者一致。可接受的 canonical 組合與對應模板,見
references/directory_structure_recommendations.md;若需求不吻合,先調整選型,再選最接近的模板,不要擅自發明新 root 規則。
Step 4: 目錄與固定檔案規範
固定檔案除了
project.config.json、specs/requirements.md、README.md、todo.md外,還要包含根目錄AGENTS.md。AGENTS.md是正式產物,不是可有可無的補充說明。目標專案的相對路徑
scripts/project_launcher.py必須存在;這支檔案來自此 skill 內的scripts/project_launcher.py。目標專案的相對路徑
scripts/apsm_validate.py也必須存在;這支檔案負責做 APSM 結構檢核。交付完成時,目標專案根目錄必有:
project.config.json、specs/requirements.md、.venv/(不打包)、requirements.txt、run_app.bat、run_app.command、run_app.sh、.env(不進版控)、.env.example、README.md、todo.md。run_app.bat是根目錄scripts/project_launcher.py的 Windows 啟動 wrapper;若需要修 launcher 行為,優先修改/重跑project_launcher.py,不要另外手寫一份脫鉤的run_app.bat。執行過
project_launcher.py後,專案還應該有.runtime/ports.json、.runtime/launcher_state.json與logs/launcher.log等 runtime metadata;這些檔案是 APSM Runtime 的機器判讀介面。目錄結構是技術選型結果,不是起點;必須先完成 Step 2,再依專案型態(前後端分離 / monorepo / single-service)選擇目錄。
規範細節放在
references/directory_structure_recommendations.md。
Step 5: APSM 目錄結構檢核
validator 也要檢查
usage_scene/project_profile/AGENTS.md,避免只有技術模板對齊、但場景規則沒有落地。建立骨架後,立刻執行:
python scripts/apsm_validate.py --project <target-project>validator 至少要檢查:
project.config.json是否存在、JSON 是否合法、apsm_version是否支援、archetype是否與組合一致architecture/frontend/backend組合是否在 skill 支援清單內- 根目錄固定檔案是否齊全
- 對應模板的關鍵目錄與關鍵入口檔是否存在
.env是否具備該組合所需的 host/port key- 若已執行過 launcher,
.runtime/ports.json與.runtime/launcher_state.json也要能通過 JSON 與 key 檢查
若 validator 報錯,先修結構,再繼續開發;不要把結構錯誤帶到功能實作階段。
Step 5: Windows 專屬硬規則
.bat只能用 Windows 指令(dir/copy/del/rmdir/set),禁止ls/rm/cp/export。- Python 路徑一律用
os.path.join/pathlib;禁止手寫\\。 - 檔案讀寫顯式指定
encoding='utf-8'。 run_app.bat預設只放 ASCII 文案;若真的要輸出中文等非 ASCII,才允許例外採chcp 65001+ UTF-8,且必須在實際 Windows 環境驗證。- 避免過深目錄以免 260 字元限制;遇到 Defender 阻擋要在 README 說明操作。
Step 6: AI 功能整合規範(需要才用)
- Chat:一律 OpenAI Responses API + streaming;對話/視覺用
inputmessages + parts。 - STT:先 Whisper(
whisper-1),失敗再用 Responsesinput_audiofallback。 - 圖像:預設 Nano Banana 2(Gemini 3.1 Flash Image)做 T2I/I2I;加上 no-text guardrail。
- 若需要本地模型/離線推論,優先評估 ONNX + ONNX Runtime;除非有明確理由,避免把 PyTorch 當成預設交付依賴。
- 金鑰:只從 env/config 讀;不要硬編碼。
- 若是前後端分離(例如 FastAPI/Flask + React/Vue),後端必須處理 CORS,至少允許本機前端開發位址;前端 API base 必須和根目錄設定一致。
(詳細程式型樣與封裝策略見 references/openai_nanobanana_guidelines.md。)
Step 7: 錯誤處理與 logging
- 主入口必包
try/except,禁止閃退。 - UI 顯示「白話錯誤 + 請複製以下訊息給 AI 助手」;下方附完整 traceback。
- logs 目錄分級記錄(INFO/ERROR),不得寫入 API key。
- 若用 toast 顯示錯誤,停留時間要足夠,且內容應可選取/複製;不要讓錯誤訊息一閃而過。
- 若有使用 mocking / 假資料 / 假 API,必須在對話、README 或 UI 中明確揭露,不可讓使用者誤以為是真實資料流。
Step 8: 一鍵啟動與打包
- 先將此 skill 內相對路徑
scripts/project_launcher.py與scripts/apsm_validate.py的內容寫入目標專案的相對路徑。 - 主入口請維持
scripts/project_launcher.py;它負責跨平台高階分類、修復與 launcher 生成,不應改成平台後綴名稱。 - 雖然 PDF 原始規格傾向單一
run_app,但此 skill 為了維持 Windows/macOS/Linux 的零指令雙擊體驗,仍保留run_app.bat/run_app.command/run_app.sh三入口;不要擅自改回單檔。 run_app.bat是由scripts/project_launcher.py生成/維護的 Windows wrapper,不是獨立規格或另一套 hand-written launcher;若專案內已存在這條鏈,禁止 agent 自作主張另外寫一份新的run_app.bat取代它。- 若要沿用來源 skill 的分平台流程,或要在 POSIX 環境單獨驗證,也可一併帶入此 skill 內的
scripts/project_launcher_posix.py,並以python scripts/project_launcher_posix.py生成/檢查run_app.sh與run_app.command。舊名scripts/project_launcher_linux.py僅保留相容別名,不建議再當主名稱。 - 再於目標專案根目錄執行:
python scripts/project_launcher.py以:- 自動掃描 imports → 修正/生成
requirements.txt - 保守修正入口檔常見的 relative import 問題,並在改寫前產生
.bak備份 - 建立 venv、安裝依賴、
pip check、import test - seed
.runtime/ports.json、.runtime/launcher_state.json與必要 log 檔,讓 validator 與後續除錯都有單一可讀位置 - 偵測後端/前端入口與設定中可推得的 host/port
- 生成
run_app.bat/run_app.command/run_app.sh;只有在 URL 可推得時才嘗試自動開瀏覽器。啟動器應先做 readiness probe 並把結果寫進 log 與終端,但即使 probe 失敗也仍要嘗試開瀏覽器,避免使用者誤以為系統卡死
- 自動掃描 imports → 修正/生成
- 交付前打包 ZIP:在根目錄執行
python scripts/project_launcher.py --package- 預設輸出:
release/<資料夾名>.zip - 可用
--package-out指定 ZIP 路徑 - ZIP 會排除:
.venv/、__pycache__/、node_modules/、logs/、.env、.launcher.env - ZIP 會保留:
dist/、build/(靜態站/前端成品常用)
- 預設輸出:
- 若要支援真正安全的動態 port:
- 優先讓服務自行綁定可用 port,之後再回讀實際 port;不要先掃描一個空 port 再假設仍可用
- 將實際 port 同步回寫到瀏覽器 URL、前端 API base、log、以及啟動器自己的狀態檔
- 在開瀏覽器前做 readiness check;若服務尚未 ready,就不要自動打開錯誤頁面
Step 9: Finalization and QA
- 對照
references/quality_checklist.md全部通過。 python scripts/apsm_validate.py --project <target-project> --strict必須在交付前通過一次。.runtime/ports.json與.runtime/launcher_state.json必須存在且為合法 JSON;若 launcher 已寫入 runtime state,就不能留空殼檔。- 至少做一次「解壓到新資料夾→雙擊 run_app.bat」的乾淨啟動驗證。
Testing plan
Triggering tests
- Should trigger:
- 「幫我做一個 Windows 小工具,解壓後直接雙擊就能跑」
- 「這個專案 Windows 上中文亂碼/port 衝突,幫我修」
- 「加 OpenAI 串流對話 + 語音轉文字 + 生圖」
- Should NOT trigger:
- 純概念性討論(不需要交付可執行專案)
- 純翻譯/摘要,且不涉及 Windows 交付
Functional tests
Test case: 一鍵啟動
- Given: 新解壓縮的專案資料夾
- When: 點一下啟動(Windows:
run_app.bat/macOS:run_app.command/Linux:run_app.sh) - Then: 自動建立 venv、安裝依賴、啟動服務/視窗;只有在 URL 可推得且已通過 readiness check 的設計下才自動開啟前端。失敗時顯示繁中說明並寫入
logs/。
Test case: APSM 結構檢核
- Given: 已產生
project.config.json與目錄骨架的專案 - When: 執行
python scripts/apsm_validate.py --project <target-project> --strict - Then: 輸出 valid 結果;若缺檔、組合非法、
.envkey 不完整、或.runtime/*.json結構不合法,會以 error code 與路徑回報。
- Given: 已產生
Test case: 串流輸出
- Given: 啟用 OpenAI Responses chat
- When: 發送訊息
- Then: UI 逐 token 更新;中斷或錯誤可保留已生成內容。
Troubleshooting
症狀:macOS/Linux 雙擊
run_app.*沒反應或提示沒有執行權限- 修正:在 Terminal 執行
chmod +x run_app.sh run_app.command後再執行/雙擊。
- 修正:在 Terminal 執行
症狀:macOS 雙擊
.command被系統阻擋- 修正:依 README 指引到「系統設定 > 隱私權與安全性」允許開啟;必要時再補
chmod +x。
- 修正:依 README 指引到「系統設定 > 隱私權與安全性」允許開啟;必要時再補
症狀:
attempted relative import with no known parent package- 原因:入口檔相對匯入
- 修正:
project_launcher.py會保守修正常見入口檔的 relative import,並先寫出.bak備份;若仍失敗,再改成套件入口(例如python -m package.module)或手動修正。
Resources
references/usage_scene_decision_tree.md:先判斷使用情境 A/B/C/D,再輸出usage_scene、project_profile與AGENTS.md以下皆為此 skill 目錄內的相對路徑;若要套用到目標專案,需先把對應內容寫入目標專案的相對位置。
scripts/project_launcher.py:一鍵啟動腳本生成與依賴驗證;實際使用時應寫入目標專案的scripts/project_launcher.pyscripts/apsm_validate.py:APSM 結構檢核器;驗證project.config.json、目錄模板與必要檔案是否一致scripts/project_launcher_posix.py:POSIX 相容入口;適合保留 split-platform 流程或在 Linux/macOS 上單獨驗證 launcher 行為scripts/project_launcher_linux.py:僅供相容舊流程的別名;名稱容易誤導,不建議作為新的主要引用references/openai_nanobanana_guidelines.md:OpenAI Responses 串流 + Nano Banana 2 圖像 + STT 規範references/apsm_decision_tree.md:APSM 決策樹;先用它篩選archetype/architecture/frontend/backend,再去查模板細節references/linux_platform_pitfalls.md:Linux 權限、Shell 啟動、xdg-open與背景執行避雷references/macos_platform_pitfalls.md:macOS Finder、.command、Gatekeeper、open與權限避雷references/linux_macos_platform_pitfalls.md:Linux/macOS 導讀與共通原則,相容舊連結用references/windows_platform_pitfalls.md:Windows 常見錯誤與硬規則references/directory_structure_recommendations.md:目錄結構建議與 port/env 規範references/quality_checklist.md:交付前 QA 清單