把 awesome-cursorrules 的 FastAPI 生產架構規範改寫成一份強制 Router→Service→Repository 分層、薄 handler、防腐層、冪等性的 AGENTS.md/CLAUDE.md,讓 AI 寫 Python 後端時自動拒絕反模式。
讓 AI 寫 FastAPI 不再把 SQL 塞進路由、不再在 service 裡丟 HTTPException。四層架構、薄 handler、防腐層、冪等鍵——一份規則檔全部釘死。
[ 登入後可看完整內容 ]## 這是什麼/解決什麼痛點 用 AI 寫 FastAPI 後端,最容易長出的技術債就是「全部混在一起」:路由函式裡直接寫 SQL、service 裡丟 `HTTPException`、外部 API 的原始 dict 在整個 codebase 裡傳來傳去、扣款沒有冪等保護導致重複扣錢。這些在 demo 階段看不出問題,一上生產就變成難測、難改、會出事的地雷。 這份範本把一套經過實戰打磨的 FastAPI 分層架構固化成 `AGENTS.md`(或 Claude Code 的 `CLAUDE.md`)。它強制 Router→Service→Repository→ORM/HTTP 的單向匯入、薄 handler、防腐層(ACL)隔離外部 API、每個外部服務獨立的 httpx client(隔艙隔離)、mutation 帶冪等鍵、以及一份「必須拒絕的反模式」清單。AI 讀到它之後,會在寫程式前就主動避開這些陷阱。 ## 為什麼這來源值得用 來源是 `PatrickJS/awesome-cursorrules`(CC0 公眾領域,可任意商用改作)裡專為「生產架構」寫的 FastAPI 規則。和坊間泛泛的「請用 FastAPI 最佳實踐」不同,這份規則非常具體且有意見:它明確點名要拒絕哪九種反模式、給出檔案行數的紅黃綠燈治理、要求 service 只丟領域例外。這種「具體到可以直接套用」的程度,正是讓 AI 真的改變行為的關鍵——模糊的原則 AI 會敷衍,具體的禁令 AI 會遵守。 ## 怎麼用 1. 把 `full_prompt` 存成專案根目錄的 `AGENTS.md` 或 `CLAUDE.md`。 2. 用 `{{TEST_TOOL}}`、`{{TEST_CMD}}` 對齊你的測試框架與指令。 3. 對照你的專案目錄調整 `app/routers`、`app/services` 等路徑名稱(若你用不同命名)。 4. 之後請 AI 加 endpoint 時,它會先說明動哪一層、是否違反匯入方向,再動手;你也可以叫它「審查這個 PR 有沒有違反 AGENTS.md 的反模式清單」。 ## 何時用 - 需要長期維護、會接金流或外部 API 的生產級 FastAPI 服務。 - 多人協作,想用一份契約統一架構紀律。 - 既有專案已經開始「什麼都混在路由裡」,想止血並逐步重構。 對只是寫個小腳本或一次性 demo 的場景,這套架構偏重;那種情況用更輕的規則即可。 📎 來源:PatrickJS/awesome-cursorrules(作者 PatrickJS,CC0-1.0 公眾領域授權)— 本篇為繁中改寫整理,原始內容見上方連結。
這組 prompt 專為 Claude Code 設計。把 prompt 內 2 個方括號 [變數] 換成你自己的內容,貼進 Claude Code 執行即可。屬進階用法,建議熟悉工具後再依需求微調參數。
完整 prompt 免費。註冊並登入 PromptCraft 帳號即可複製、收藏與留言,不需付費。
prompt 文字本身你可自由使用與修改。但 AI 生成物(圖/音樂/影片/文字)的商用授權,取決於你在 Claude Code 使用的方案與其官方服務條款,請以該工具的授權規範為準。
Studio engineer 視角拆解 Suno 致命弱點(油炸 vocals、高頻 artifact)+ 4 步驟 DAW workflow + Suno Studio 修音 prompt
提案產生器 / 會議處理器 / 內容再利用 / 週五回顧 / 收工 reset — 試了 40 個只有這 5 個沒被丟掉、各省 30+ 分鐘 / 次。
適合:部落格、Medium、Notion 公開頁、Substack — 任何支援 iframe / HTML 嵌入的地方。對方點「看完整」會回到本站、是 prompt 庫的免費 backlink。
<iframe src="https://prompt.luvai.net/embed/cursorrules-fastapi-layered-architecture-agents-md" width="100%" height="380" frameborder="0" style="border:1px solid #e0dcd0;border-radius:4px;" loading="lazy" title="PromptCraft Embed"></iframe>