docs 合併cursor規則為四檔
This commit is contained in:
@@ -1,31 +1,52 @@
|
||||
---
|
||||
description: 助手必問再改(站主明講);防擅自改名、批次改檔、編碼毀檔
|
||||
description: 必問再改、Git commit/禁 push、UTF-8、內頁 header、對圖與 devtools
|
||||
alwaysApply: true
|
||||
---
|
||||
|
||||
# 必問再改(站主已多次強調)
|
||||
# 必問再改與 Git(站主訂)
|
||||
|
||||
## 硬規則
|
||||
## 改檔
|
||||
|
||||
1. **站主沒說「執行」→ 不改檔**(可先說明、對照、列計畫)。
|
||||
2. **站主說「先改一頁」→ 只改那一頁**,不得順手全站套用。
|
||||
3. **class 改名/全站換名**:先問站主**確切 class 字串**;全站內頁 banner 現用 **`inner-page-header`**(禁止再改回 `map-archive-header` 等單頁名);不得用 PowerShell 批次替換 HTML。
|
||||
4. **導覽文案**:不得自加括號、副標、路徑說明(例如禁止擅自「傳奇的轉折(六六歌2)」);`portal-nav.js` 改字前先對站主原句。
|
||||
5. **CSS 對齊 devtools**:站主給的勾選/數值照抄;若必須補 `min-height`、`padding` 等 devtools 沒有的值,**先寫明「這是我補的」**,等站主說執行再寫入。
|
||||
1. **沒說「執行」→ 不改檔**(可先說明、對照、列計畫)。**「檢查」→ 只回報**。
|
||||
2. **只改被點名的那一頁/區塊**;未寫到的檔不開、不刪、不重構。
|
||||
3. **class 全站換名**:先問確切字串。內頁 banner 用 **`inner-page-header`**(禁止改回 `map-archive-header` 等)。**禁止** PowerShell 批次改 `.html`(須 UTF-8 安全,如逐檔 `StrReplace`)。
|
||||
4. **頂欄文案**:禁止擅自加括號、副標(如「傳奇的轉折(六六歌2)」);改 `portal-nav.js` 前對站主原句。
|
||||
5. **devtools**:勾選/數值照抄;補 devtools 沒有的值須標「這是我補的」,等站主說執行再寫入。
|
||||
6. **參考圖**:粉線=看這段,不是整段包 span。`mark_y`/`mark_b` 對照圖裡實際字重。
|
||||
7. **首頁 `#mission`**:只調 span 時只動 `<span>`;金句未要求時只改內文。沒叫動註解就不動註解。
|
||||
|
||||
## 禁止(曾毀站)
|
||||
## 內頁 header
|
||||
|
||||
- **禁止**用 PowerShell `Get-Content` / `Set-Content`(或未指定 `-Encoding utf8`)批次改 **`.html`** → 會把 UTF-8 中文弄成 `?`、標籤斷裂(如 `?/span>`)。
|
||||
- 若需批次改 HTML:只用 **UTF-8 安全**方式(例如逐檔 `StrReplace`、或 `git` 還原後手改),改完抽查 `index.html` 首屏中文是否正常。
|
||||
- 內頁:**`header.inner-page-header`**。首頁 Hero:**`header#origin`**。樣式以站主在電子書頁調過的為準;要套他頁須站主說執行。
|
||||
|
||||
## 內頁 header(約定方向,名稱待站主定)
|
||||
## Git:改完末尾附 commit
|
||||
|
||||
- 全站內頁 banner:**`header.inner-page-header`**(勿用 `map-archive-header` 等單頁名當全站 class)。
|
||||
- 首頁僅 **`header#origin`** 全屏 Hero,與內頁 header class 分開。
|
||||
- 樣式以站主在**電子書頁** devtools 調過的為準後,再談是否套其他內頁(須站主說執行)。
|
||||
每做完**一項**改動並已寫入檔案,回覆末尾附(**勿**為此反覆跑 `git status`/`git diff`):
|
||||
|
||||
```bash
|
||||
git add .
|
||||
git commit -m "類型 修改重點"
|
||||
```
|
||||
|
||||
| 項目 | 約定 |
|
||||
|------|------|
|
||||
| 類型 | `feat`|`fix`|`style` 三選一 |
|
||||
| 重點 | **15 字以內**(標點計入) |
|
||||
| add | **一律 `git add .`**,禁止只 add 單檔 |
|
||||
|
||||
- 只說「檢查」、未改檔 → 不附 commit。多項獨立交辦 → 每項各附一段。
|
||||
|
||||
## Git:禁止擅自 push
|
||||
|
||||
- **禁止 `git push`**,除非站主原句「幫我 push」等。只貼 push 錯誤 ≠ 同意 push。
|
||||
- 修 push 失敗:只動本機(壓圖、`.gitignore`、`amend`/filter-branch **先問**),末尾只給站主:
|
||||
|
||||
```bash
|
||||
git push origin main
|
||||
```
|
||||
|
||||
- GitHub 單檔 **> 100 MB** 拒 push。`*.png.bak` 已在根 `.gitignore`,勿 `git add .` 送進備份檔。
|
||||
|
||||
## 回覆
|
||||
|
||||
- 站主說字太多時:**短句**,先答「做沒做、為什麼壞」,不要長篇道歉後又擅自改一輪。
|
||||
- **改完一項並已寫入檔案**:回覆末尾附 `git add .` + `git commit -m "feat|fix|style 重點"`(重點 **15 字以內**);細則見 `.cursor/collaboration-notes.md` §6。勿為附 commit 反覆查 git。
|
||||
- **禁止擅自 `git push`**:除非站主原句要求推遠端;修 push 失敗只改本機,末尾給站主自行的 `git push …` 即可。見 `.cursor/collaboration-notes.md` §6.1。
|
||||
- 站主要短句時:先答做沒做、為什麼壞,勿長篇道歉後又擅自改一輪。
|
||||
|
||||
@@ -37,8 +37,6 @@ alwaysApply: true
|
||||
|
||||
## 文件與規則檔
|
||||
|
||||
- **不要**主動新增或長篇修改 `README`、`docs/*.md`、規則檔,除非使用者明講要寫入文件或規範。
|
||||
- **助手自用筆記**(對話紀要、頁面編輯規格、實作備忘):只寫在 **`.cursor/`**(例如 `.cursor/*-notes.md`);**禁止**放在 `docs/`、`README` 或站主日常會開的目錄。回覆裡也不必貼長篇筆記內容。
|
||||
- **例外**:使用者要求「把約定寫死/規則講清楚/不要再做錯」時,得**精準**更新 `.cursor/rules`(與 `portal-nav.js` 頂部註解對齊),避免重複踩雷;仍避免無關長文。
|
||||
|
||||
(與導覽開放、頂欄 vs `site-guide` 相關條文以 **`user-scope-and-nav.mdc`**、**`portal-nav-rules.mdc`** 為準;實作前兩份都讀。)
|
||||
- **不要**主動新增或長篇修改 `README`、`docs/*.md`,除非站主明講。
|
||||
- **約定只寫在** `.cursor/rules/*.mdc`(**合併進既有檔**,勿再新增散落 `*-notes.md`/目錄索引)。禁止放在 `docs/` 或站主日常會開的目錄。
|
||||
- 動導覽/籌備中/`site-guide`:**只讀** `portal-nav-rules.mdc`。
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
---
|
||||
description: 全站頂欄導覽 portal-nav.js(buildPortalNavInnerHTML、COMING_SOON_PAGES、INDEX_NAV_OPEN_HASHES、籌備中、新頁檢查清單);與 user-scope-and-nav 搭配。
|
||||
description: 全站導覽與籌備中(portal-nav.js、site-guide、開放邊界、刪錨點)
|
||||
alwaysApply: true
|
||||
---
|
||||
|
||||
@@ -23,13 +23,7 @@ alwaysApply: true
|
||||
3. **`totoga2/readable.html`(圖文好讀版,檔名 `readable.html`)**、**`variety/variety.html`**:站主**沒有明講對外開放**時,檔名**必須**留在 `COMING_SOON_PAGES`(訪客頂欄不可點進)。要開放時**只**能等站主說了再從 Set 移除。
|
||||
4. **「刪除/拿掉/不要了」**:若未寫明是**單一檔案**、**頂欄某一列**、**整段子選單**還是**整個資料夾**,**一律先問站主**,禁止自行擴大刪除範圍。
|
||||
5. **不確定**是否開放、連哪、是否例外:**先問站主再改**,不要猜。
|
||||
6. 站主說要刪的是 **`某頁#錨點`**(頁內區塊)時:先改該頁 DOM,再修死錨連結;**不要**只動導覽、也不要把「刪區塊」擴成刪頂欄整段。細節見 **`user-scope-and-nav.mdc`**(§ 頁面錨點刪除)。
|
||||
|
||||
## 0.1 站主同意(細項)
|
||||
|
||||
- **未經站主明確同意**,不得自行:從 `COMING_SOON_PAGES` 移除檔名、擴充 `INDEX_NAV_OPEN_HASHES`、在 `buildPortalNavInnerHTML` **新增**導覽項目、**刪除站主已同意列入頂欄**的項目、或把籌備中連結改成可點(**全站導覽頁頂欄例外見 §0**)。
|
||||
- **`extra/site-guide.html`**:站主自用;條件同 §0 表格。(僅此頁可加 `data-portal-nav-all-open`。)
|
||||
- 頂欄模板**不含**未同意掛列的頁;該頁仍可由 `site-guide` 主文或網址直開(站主自用)。
|
||||
6. 站主說刪 **`某頁#錨點`**:見下方 **§8 頁面錨點刪除**(先改 DOM,再修死鏈;禁止只動導覽)。
|
||||
|
||||
---
|
||||
|
||||
@@ -123,22 +117,18 @@ alwaysApply: true
|
||||
|
||||
---
|
||||
|
||||
## 7. 與使用者約定:開放範圍
|
||||
## 8. 頁面錨點刪除(`某頁.html#id`)
|
||||
|
||||
- **不要**在未經使用者**明確交代**的情況下,自行把導覽改為「可點進入」或更換目標頁(例如把「傳奇的轉折」改成連到 `totoga2.html`)。
|
||||
- 「傳奇的轉折」是否開放、連到哪裡,**只依使用者指示**;意圖與邊界亦見 **`.cursor/rules/user-scope-and-nav.mdc`**。
|
||||
指該 HTML 裡 **`id="…"` 的那一區**/`<section>`,不是刪整檔、不是刪資料夾、不是刪頂欄整段「全員發瘋」,也不是擅自改 `COMING_SOON_PAGES`(除非原句一併交代)。
|
||||
|
||||
---
|
||||
1. **先**在目標頁拿掉該 DOM。
|
||||
2. **再**修仍指向死錨的 `href`(最小必要)。
|
||||
3. **禁止**只改 `portal-nav.js`/`site-guide.html` 卻不刪頁內區塊。
|
||||
|
||||
## 相關檔案
|
||||
錨點拿掉後,書籤網址列仍可能顯示 `#…`,不代表 DOM 還在。header 大標 ≠ 已刪的 `#id` 區塊。「刪除」範圍不清 → **先問**。
|
||||
|
||||
| 檔案 | 用途 |
|
||||
|------|------|
|
||||
| `assets/js/portal-nav.js` | `buildPortalNavInnerHTML`、`COMING_SOON_PAGES`、`INDEX_NAV_OPEN_HASHES`、籌備中邏輯 |
|
||||
| `assets/css/style.css` | `.portal-nav`、子選單、`.nav-current` 等樣式 |
|
||||
| `.cursor/rules/user-scope-and-nav.mdc` | 意圖與導覽開放(與本規則搭配) |
|
||||
| `.cursor/rules/ai-change-boundaries.mdc` | 變更範圍與共用 CSS 邊界 |
|
||||
| `docs/CHANGESET-review.md` | 歷次變更檢查清單筆記(非程式真值來源) |
|
||||
| `docs/sql/` | SQL 練習/筆記(`sql_plan.md`、`.sql` 腳本與匯出) |
|
||||
## 名詞
|
||||
|
||||
(籌備中提示:`COMING_SOON_LABEL`=「籌備中」;頂欄氣泡與頁內按鈕後綴同文案。)
|
||||
- **頂欄**:`portal-nav.js` 注入的 `<nav class="portal-nav" data-portal-nav>`。
|
||||
- **全站索引**:`extra/site-guide.html`(可列草稿;**不等於**頂欄要掛)。
|
||||
- **程式真值**:`assets/js/portal-nav.js`(`COMING_SOON_LABEL`=「籌備中」)。
|
||||
|
||||
@@ -5,43 +5,41 @@ alwaysApply: true
|
||||
|
||||
# 全站文案調性
|
||||
|
||||
撰寫或改寫**給訪客看的內文**時,語感對齊下列母本(站主指定範圍):
|
||||
撰寫或改寫**給訪客看的內文**時,語感對齊母本(站主指定範圍):
|
||||
|
||||
## 母本範圍
|
||||
## 母本
|
||||
|
||||
**檔案**:`index.html`
|
||||
**起點**:`<body>` 從開頭讀起。
|
||||
**終點**:`#timeline` 內 `article[data-era="2016.05"]` **全文為止**(含錨點句)。
|
||||
|
||||
依 **DOM 由上而下** 納入:
|
||||
**檔案** `index.html`:`<body>` 起 → `#timeline` 內 **`article[data-era="2016.05"]` 全文止**(含錨點句)。
|
||||
|
||||
| 區塊 | 說明 |
|
||||
|------|------|
|
||||
| `header#origin` | Hero 標語(六顆水晶、傳奇) |
|
||||
| `nav.portal-nav` | 頂欄導覽(主標/副標,在 body 內依序出現) |
|
||||
| `#start` | 好奇的開端、2016 四月入坑、黃色奇蹟、路人→坑底 |
|
||||
| `#mission` | 成立的初衷、LOGO/黃色海洋瞬間、追星與創作 |
|
||||
| `#timeline` → 至 `2016.05` | `1997` → `2000` → `2016`(合體)→ `2016.05`(夢境進現實+錨點句) |
|
||||
| `header#origin` | Hero |
|
||||
| `nav.portal-nav` | 頂欄 |
|
||||
| `#start` | 入坑 |
|
||||
| `#mission` | 初衷 |
|
||||
| `#timeline` | 至 1997 → 2000 → 2016 → **2016.05** |
|
||||
|
||||
**截止線**(站主指定):`#timeline` 內 **`data-era="2016.05"` 之後**的節點;該篇之後的 body 內容。
|
||||
**不納入** 2016.05 之後的 timeline 與 body 後段。
|
||||
|
||||
## 錨點句(`2016.05` 末段)
|
||||
## 錨點句(2016.05)
|
||||
|
||||
> 原來大家只是換個方式一起變老,這份情誼早已超越了表演。
|
||||
|
||||
是整條閱讀軸的收束之一;須能承接 **入坑自述 → 初衷 → 1997→2000→2016→2016.05**,勿只複誦此句。
|
||||
須承接入坑 → 初衷 → 四節時間軸,勿只複誦此句。
|
||||
|
||||
## 語感要點
|
||||
## 語感
|
||||
|
||||
- 站主視角:2016 因《無限挑戰》入坑、好奇到淪陷;網站像藝廊、把喜愛化為創作。
|
||||
- 時間軸:盛世 → 休止凍結 → 合體 → 現實落地(簽約、四/九月、空位、《超回》)。
|
||||
- 溫柔、具體場景、遺憾與釋懷並寫;黃色海洋、十六年、羈絆、奇蹟、完整。
|
||||
站主 2016 入坑、藝廊式創作;盛世 → 休止 → 合體 → 落地。溫柔、具體、遺憾與釋懷並寫。
|
||||
|
||||
## 避免
|
||||
|
||||
- 只寫 timeline 末段或只抄錨點句。
|
||||
- 把 2016.05 之後的 timeline 或 body 後段當母本。
|
||||
- 只抄 timeline 末段或錨點句。
|
||||
- 2016.05 之後當母本。
|
||||
- 讀者向技術說明(除非站主明講)。
|
||||
- **單頁 intro**(如電子書)把首頁時間軸/入坑/錨點句硬拼進一段;該頁應先說明**該頁主題**(如六六歌2 跨頁書),語感對齊母本即可。
|
||||
- 單頁 intro 硬拼整條首頁時間軸;該頁先說**該頁主題**(如六六歌2 電子書),語感對齊即可。
|
||||
|
||||
細項:`.cursor/site-voice-notes.md`。
|
||||
## 六六歌2 單頁 intro
|
||||
|
||||
- 採用版見 `totoga2/ebook.html`(「四月那場重逢…」)。
|
||||
- 勿 FlipHTML5/PDF 操作說明。
|
||||
- 四入口順序:**時間軸 → 電子書 → 圖文好讀版 → 影片**。
|
||||
|
||||
@@ -1,68 +0,0 @@
|
||||
---
|
||||
description: 未經使用者明確交代,不得擅自開放導覽、改連結或擴充需求範圍(本 repo 含全站導覽與 totoga2 等)。
|
||||
alwaysApply: true
|
||||
---
|
||||
|
||||
# 使用者意圖與導覽(sechskies)
|
||||
|
||||
## 速記(每次動導覽或 `portal-nav.js` 前先對齊)
|
||||
|
||||
1. **`extra/site-guide.html`**:站主自用;該頁頂欄 `data-portal-nav-all-open` → **全部連結可點**;主文 `<main class="site-guide-main">` 的 `<a>` **不准**用腳本改成籌備中。
|
||||
2. **其他每一頁**:未公開=**籌備中**(頂欄+頁內連結皆鎖、須寫出「籌備中」);依 **`COMING_SOON_PAGES` / `INDEX_NAV_OPEN_HASHES`**;不准在其他頁加 `all-open`。
|
||||
3. **`totoga2/readable.html`**(檔名 `readable.html`)、**`variety.html`**:站主沒說「對外開放」→ **留在 `COMING_SOON_PAGES`**;不得自以為可以幫忙開放。
|
||||
4. **沒寫在指令裡的開放/連結/從 Set 移除/刪檔或刪導覽列**:**一律先問**,禁止推論;「刪除」未指明範圍(單檔 vs 頂欄整段 vs 資料夾)=必須先問。
|
||||
5. 技術細節與檢查清單:**`portal-nav-rules.mdc`**(與本檔一起讀)。
|
||||
6. **頂欄 `portal-nav`(header)**:文案與巢狀結構對齊 `extra/site-guide.html` **主選單樹**(有連結者);`site-guide-nav-nolink` 與 `COMING_SOON_PAGES` 維持籌備中、**不准擅自開放或改未列開放之頁內容**。勿把此句誤做成 `extra/` 分頁列或全站 `nav` 黑底規則。
|
||||
|
||||
---
|
||||
|
||||
## 只做被交代的事
|
||||
|
||||
- **不得**在未被使用者**明確要求**的情況下:把導覽連結從「籌備中/尚無開放」改成可點、更換 `href` 成真實頁面、從 `COMING_SOON_PAGES` 移除、或把錨點加入 `INDEX_NAV_OPEN_HASHES`。
|
||||
- **不得**在未被使用者**明確要求**的情況下:從 `buildPortalNavInnerHTML` **刪除**站主**已同意**列入頂欄的項目。
|
||||
- 使用者**明確要求**移除某列(例如不同意掛頂欄的「六顆水晶」)時,依指示從模板刪除即可。
|
||||
- **不得**在未被使用者**明確要求**的情況下:在 `buildPortalNavInnerHTML` **新增**任何頂欄導覽項目或子選單連結(即使目標頁面已存在於 repo)。
|
||||
- **不得**在 **`site-guide.html` 以外**的頁面加上 **`data-portal-nav-all-open`**(該屬性僅用於索引頁頂欄「全連結可點」;其他頁頂欄須套用籌備中規則)。
|
||||
- **不得**因為「內容已搬到某頁」就自行推論「導覽也應該開放」——導覽是否開放**只聽使用者口述**。
|
||||
- 若使用者只要求搬內容、刪檔、改站內某段文案,**預設不改** `assets/js/portal-nav.js` 的開放狀態與連結目標。
|
||||
|
||||
## 「傳奇的轉折」與 `totoga2/readable.html`(特別記牢)
|
||||
|
||||
- 頂欄「圖文好讀版」連到 **`totoga2/readable.html`**(見 `buildPortalNavInnerHTML`)。
|
||||
- 使用者**沒有明講對外開放整合頁**時:`readable.html` **必須**在 **`COMING_SOON_PAGES`** 裡 → 訪客頂欄該項為籌備中、**不可點進**。
|
||||
- **禁止**在未獲同意下:從 Set **移除** `readable.html`、或改成連到其他頁並當成已開放。
|
||||
- 首頁錨點另依 **`INDEX_NAV_OPEN_HASHES`**;與「傳奇的轉折/totoga2」分開判斷。
|
||||
|
||||
## 實作前自檢
|
||||
|
||||
- 若變更會影響 `assets/js/portal-nav.js`(`buildPortalNavInnerHTML`、`COMING_SOON_PAGES`、`INDEX_NAV_OPEN_HASHES`):**對照使用者原句**,確認每一項連結的開/關都有被明確交代。
|
||||
|
||||
## 名詞對齊(避免做錯檔)
|
||||
|
||||
- **頂部橫列導覽(常稱 navbar)**:`assets/js/portal-nav.js` 注入的 `<nav class="portal-nav" data-portal-nav>`。已同意列入者不得擅自刪除;**新增**備份稿/未公開頁至上列須站主明講。**`extra/site-guide.html`** 可加 **`data-portal-nav-all-open`** 略過籌備中(僅該頁)。
|
||||
- **全站頁面索引**:`site-guide.html`(自行開網址),用來列檔案與錨點;**不影響**頂欄是否出現該連結。使用者說「留在全站導覽」常指保留在 **site-guide** 或站內說明,**不等於**要掛進頂欄。
|
||||
|
||||
(變更哪些檔、可否動共用 CSS:見 **`ai-change-boundaries.mdc`**。)
|
||||
|
||||
全站導覽的**技術細節與檢查清單**:**`portal-nav-rules.mdc`**(與本檔同目錄)。
|
||||
|
||||
---
|
||||
|
||||
## 頁面錨點刪除(`某頁.html#某id`)
|
||||
|
||||
站主若說「刪 `#stage`」「刪 `variety.html#stage`」等,指的是 **該 HTML 裡 `id="…"` 的那一區塊/`<section>`**,不是刪整份檔、不是刪 `variety/` 資料夾、不是刪頂欄一整段「全員發瘋」、也不是擅自改 `COMING_SOON_PAGES` 開放與否(除非原句一併交代)。
|
||||
|
||||
**實作順序(曾做錯順序=站主會火大)**
|
||||
|
||||
1. **先**在目標頁面拿掉對應 DOM(含該 `id` 的區塊)。
|
||||
2. **再**做最小必要連結修正:站內若還有指到已不存在錨點的 `href`,改成仍存在的錨點或去掉 hash;這是避免壞錨點,**不**等於「重構導覽」或「刪頂欄列」。
|
||||
3. **禁止**只改 `portal-nav.js` / `site-guide.html` 卻不刪頁內區塊;也**禁止**把「刪錨點」擴大成刪站主未點名的頂欄項目。
|
||||
|
||||
**和瀏覽器行為對齊(避免說站主幻覺)**
|
||||
|
||||
- 錨點從 HTML 拿掉後,書籤或舊連結上的網址列仍可能顯示 `#…`,**不代表**頁面還有該 `id`。
|
||||
- 頁頂大標(例如 `header` 裡的 `h1`「瘋子與天才」)與下面各區 `id` 區塊是不同層級;不要因為畫面上還看到大標就以為「# 那段還在」。
|
||||
|
||||
**仍模糊時**
|
||||
|
||||
- 「刪除」沒寫清是單一錨點區、整檔、頂欄某一列還是資料夾:用**一句話**確認再改,不要猜;尤其接近深夜、站主已重複指令時。
|
||||
Reference in New Issue
Block a user