iT邦幫忙

2026 iThome 鐵人賽

DAY 21
0
Claude AI

從零開始 Claude Code:30 天打造 AI 任務管理 Web App系列 第 21 篇

[Day 21] 重新整理 CLAUDE.md:讓 Claude Code 跟上專案現況

  • 分享至 

  • xImage
  •  

其實這個專案不是到 Day 21 才第一次建立 CLAUDE.md。
從前面幾天開始,我就一直有在更新它,用來記錄:

專案規則
目前進度
架構決策
哪些功能已完成
哪些功能還不要做

但做到 Day 20 之後,專案已經變了很多。
原本某些規則是在提醒 Claude Code:

不要做 MySQL
不要做 model
不要做 Task CRUD

但這些功能其實早就已經完成。
如果這些舊規則一直留著,反而可能讓 Claude Code 誤解:

到底現在是已經有這些功能,
還是不能碰這些功能?

所以 Day 21 的目標不是建立新的 CLAUDE.md。
而是:
重新檢查目前這份 CLAUDE.md,把過時、重複或缺少的內容整理掉。


今天不改 Web App 功能

Day 21 不碰:

app.py
models/
templates/
static/
資料庫

今天只處理:

CLAUDE.md

而且不是整份重寫。
比較像:

先讀目前內容
     ↓
找出過時規則
     ↓
補上缺少資訊
     ↓
刪掉重複內容
     ↓
保留還有效的規則

先讓 Claude Code 全面體檢

我先切到 Plan Mode,請 Claude Code 先讀目前的 CLAUDE.md。
Prompt:

目前專案裡已經有 CLAUDE.md,
而且從前面幾天開始一直都有更新。

今天不是第一次建立 CLAUDE.md,
而是要重新檢查目前內容。

請先讀取現在的 CLAUDE.md,
再根據目前專案狀態整理:

1. 哪些內容已經正確,可以保留
2. 哪些內容已經過時,需要更新
3. 哪些規則目前缺少,建議補上
4. 哪些內容太細或重複,可以刪減
5. 哪些規則可能讓 Claude Code 誤解

目前先不要修改 CLAUDE.md,
只做全面體檢與整理建議。

這次我沒有直接叫它:

幫我重寫 CLAUDE.md

因為我想保留前面已經整理好的內容,而不是全部推翻重來。


Claude Code 找到的第一個問題:過時規則

Claude Code 檢查後發現,目前最大的問題不是內容錯很多,而是:

有些以前合理的限制,現在已經被專案進度淘汰了。

例如原本有:

不要自動加入 MySQL 連線、model、service、route 分層

這句在前面幾天可能合理。
但現在:

MySQL 連線
model

早就已經存在。
真正還沒做的是:

services/
routes/

所以如果整句繼續留著,Claude Code 可能會看到:

不要加 MySQL

但實際專案裡又已經有 MySQL。
規則就會互相打架。


第二條過時規則

原本還有:

不要自動加入分類功能或任務 CRUD

但現在 Task CRUD 已經完成:

新增
查看
編輯
刪除

所以真正還沒做的是:

分類管理 CRUD

也就是新增、修改、刪除分類本身。
因此這條也需要改寫。


過時規則不能只是一直留著

這次我開始發現:

CLAUDE.md

不是只需要「一直加內容」。
還需要:

刪除已經失效的規則

不然時間久了,就會變成:

新規則
  +
舊規則
  +
互相衝突的規則

反而讓 Claude Code 更難判斷。


第二個問題:技術棧還不完整

目前專案實際已經使用:

Python
Flask
Jinja2
HTML / CSS
MySQL
Flask-SQLAlchemy
PyMySQL

但原本的技術棧區塊沒有正式列出:

Flask-SQLAlchemy
PyMySQL

所以這次補上。
這樣 Claude Code 之後看技術棧時,就不需要再從:

requirements.txt

或其他程式碼裡自己猜。


第三個問題:沒有明確寫「目前不部署」

目前這個專案的定位一直都是:

本機使用
單一使用者
目前不部署

但原本 CLAUDE.md 沒有明確寫:

不部署

這可能讓 Claude Code 未來自己建議:

Docker 部署設定
Gunicorn
production WSGI
雲端環境
CI/CD

但目前根本還沒做到這個階段。
所以這次把:

目前不部署

正式補進專案規則。


第四個問題:已知 Bug 不應該放在「目前進度」

Day 18 還發現一個尚未修正的問題:

後端沒有驗證 title 不可為空

正常瀏覽器會被:

required

擋住。
但如果直接用:

Postman
curl

送 request,就可以繞過瀏覽器驗證。
原本這件事只是寫在:

目前進度

但「目前進度」每天都會更新。
所以很有可能之後改成:

Day 22 做了什麼

時,這個問題就被蓋掉。


新增固定區塊:已知但尚未修正的問題

所以這次新增:

## 已知但尚未修正的問題

目前先放:

後端尚未驗證 title 不可為空

這樣它就不會跟著每日進度被洗掉。
之後如果又發現:

已知 Bug
待改善問題

也可以集中放在這裡。


第五個問題:有些內容重複了

Claude Code 還發現兩個區塊:

已經做過的重要技術決定
已確定的架構決策

內容高度重複。
例如都在講:

不用 Application Factory
不用 Flask-Migrate
不用 Flask-WTF
不用 AJAX
不用 pytest
分類使用獨立資料表

同樣的規則寫兩次,不會讓 Claude 更懂。
反而增加維護成本。
所以這次直接刪除:

已經做過的重要技術決定

把真正有效的內容留在:

已確定的架構決策

就好。


第六個問題:舊的實作細節已經被 Refactor 取代

Day 12 時,CLAUDE.md 裡還有比較詳細的新增任務流程,例如:

怎麼查 Category
怎麼處理 category_id
怎麼解析 due_date

但做到 Day 20 之後,這些邏輯已經整理成:

resolve_category_id()
parse_due_date()

所以再保留 Day 12 那一大段舊實作細節,就有點重複。
這次改成簡單說:

分類與日期邏輯目前已由 Day 20 helper 處理

真正程式怎麼寫,直接看目前程式碼就好。


第七個問題:資料庫文件要避免誤解

原本 CLAUDE.md 有一段:

第一版資料庫結構

裡面會放 SQL 範例。
但實際的:

schema.sql

還包含:

CREATE DATABASE
utf8mb4 設定
分類 seed data

所以如果只看 CLAUDE.md 裡那段 SQL,可能會誤以為那就是完整的 schema.sql。
這次補一條註記:

這裡只列核心資料表結構,
完整初始化內容以 schema.sql 為準。

Windows 中文測試也補一個提醒

前面用 curl 測試時,曾經因為 Windows 終端機中文編碼問題,把送出的中文資料弄壞。
所以這次也補一個很短的提醒:

Windows 手動測試中文表單資料時,
直接用 curl 可能受終端機編碼影響。

若出現中文資料異常,
優先使用 Postman 或明確 UTF-8 的測試方式。

這種資訊不是核心架構,但很容易重複踩坑,所以簡單記一條就好。


還有一個重要規則:Day 完成不能自己判斷

原本 CLAUDE.md 已經有一套進度更新規則,而且前面一直都有正常使用。
核心規則就是:

只有我明確說:
「Day X 完成」
或同等意思
才可以更新已完成天數。

不能因為 Claude Code:

改完程式
測試成功

就自己判斷:

Day X 已完成

這次沒有改掉這個規則。
只是把原本拆成兩段的:

目前已完成天數更新規則

合併成一份比較好讀的清單。


確認後才讓 Claude Code 修改

看完全面體檢後,我決定大部分建議都採用。
我回 Claude:

這份體檢建議大致都採用,請更新現有 CLAUDE.md。

請處理:

1. 修正已經過時的限制
   - MySQL / model 已存在,不要再寫成禁止
   - Task CRUD 已完成,不要再寫成禁止
   - 只保留 services/、routes/、分類管理 CRUD 等目前仍有效的限制

2. 補上「目前不部署」

3. 技術棧補上:
   - Flask-SQLAlchemy
   - PyMySQL

4. 新增:
   ## 已知但尚未修正的問題

   目前先記:
   - 後端尚未驗證 title 不可為空

5. 補一條簡短的 Windows 中文測試編碼提醒

6. 第一版資料庫結構補註:
   完整初始化內容以 schema.sql 為準

7. 合併重複的架構決策內容

8. 精簡 Day 12 已被 Day 20 helper 取代的舊實作細節

9. 合併「目前已完成天數」相關更新規則

要求:

- 只修改 CLAUDE.md
- 不重寫整份文件
- 保留目前仍正確的內容
- 不修改任何 Python、HTML、CSS 或資料庫

實際修改結果

Claude Code 最後只修改:

CLAUDE.md

沒有動:

app.py
models/
templates/
CSS
資料庫

這次主要完成幾類修改。


更新的內容

專案用途

補上:

目前不部署

技術棧

補上:

Flask-SQLAlchemy
PyMySQL

資料庫說明

補上:

CLAUDE.md 只列核心表結構
完整初始化內容以 schema.sql 為準

Day 12 舊內容

原本分類與日期的詳細實作,改成指向目前 Day 20 的 helper。


刪掉的過時內容

刪掉原本:

不要自動加入 MySQL 連線、model

因為這兩個已經存在。
也刪掉:

不要自動加入任務 CRUD

因為 CRUD 已完成。
保留下來的是:

不要擅自建立 services/、routes/
不要擅自加入分類管理 CRUD

這些目前才是真的限制。


刪掉重複的技術決策區塊

原本:

已經做過的重要技術決定

和:

已確定的架構決策

內容太像。
所以這次刪掉前者,讓規則只保留一份。


新增已知問題區塊

加入:

## 已知但尚未修正的問題

目前記:

後端還沒有驗證 title 不可為空

這樣以後不會因為更新每日進度就被蓋掉。


保留下來的內容

Claude Code 沒有因為整理文件,就把舊內容全部重寫。
以下都保留:

已確定的架構決策
已完成的功能
目前已完成天數
還沒開始的功能
下一步應該做什麼
我的開發原則
CLAUDE.md 更新規則

尤其是:

只有我明確說 Day X 完成
才能更新進度

這條完全沒有改。


整理前後最大的差別

整理前的問題比較像:

有些規則是舊的
有些內容重複
有些重要資訊散落在不同地方

整理後變成:

已完成的功能
→ 不再寫成禁止事項

尚未做的功能
→ 明確保留限制

已知 Bug
→ 有固定區塊

技術棧
→ 跟實際專案一致

架構決策
→ 不再重複

這讓 CLAUDE.md 比較像現在專案真正的狀態,而不是一路累積下來的歷史紀錄。


CLAUDE.md 不是日記

做到今天,我比較能分辨:

什麼適合放 CLAUDE.md

和:

什麼只是某一天的開發過程

CLAUDE.md 比較適合放:

長期有效的規則
目前架構
目前限制
目前已知問題
Claude Code 工作方式

而不是:

每天所有操作細節
每次測試完整紀錄
已經被取代的舊實作

Day 21 做完後

今天沒有新增任何 Web App 功能。
真正做的是:

讀目前 CLAUDE.md
    ↓
找出過時規則
    ↓
刪除重複
    ↓
補上缺少資訊
    ↓
保留仍有效的內容
    ↓
讓文件跟現在專案一致

我現在比較不會把 CLAUDE.md 當成:

建立一次就不再動的文件

而是:

跟著專案持續維護的 Claude Code 工作規則。

這次整理完之後,下一步就可以開始觀察:

規則寫進 CLAUDE.md 後,
Claude Code 真的會照做嗎?

上一篇
[Day 20] 功能做完先整理:開始重構程式碼
下一篇
[Day 22] CLAUDE.md 不是寫完就好:實際測試它有沒有真的生效
系列文
從零開始 Claude Code:30 天打造 AI 任務管理 Web App 共 24 篇
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言