Commit Graph

48 Commits

Author SHA1 Message Date
Leo 593defceb1 release(1.19.0): 掛上機械閘+出貨版號與 changelog(W2 Phase 4-5,收尾)
SDD: docs/3-specs/jdd-dual-profile — 33/33 編號 task 全數完成。

■ Phase 4 把閘掛上去
- scripts/check-all.sh:三道閘+腳本語法的總入口(一個習慣,不是三個要記得的步驟)
- .githooks/pre-commit + core.hooksPath:跑在人的機器上、commit 那一刻
  不掛雲端 workflow——本組織禁止 repo 掛自動化(歷史上那正是帳號被停權的原因)

■ Phase 5 出貨
- VERSION 1.18.0 → 1.19.0(兩處:template/.claude/ 與 template/system-dev/)
- CHANGELOG 1.19.0:用「你會多出什麼」的語言寫,不列檔名
- 🐛 順手補回 **1.18.0 完全沒有 changelog 紀錄**這件事——
  那一版發佈了、功能也出貨了,但更新跑完最後一行正是叫使用者「改了什麼看 CHANGELOG」,
  版號動了卻查不到動了什麼=等於沒交代。依實際 commit 內容補寫。

■ 七題驗收(全部附實測輸出)
-  G2 考生改考卷被攔(命門):engineer 改 journeys.md → exit 2;
     連「把考題藏進 status.md」也擋,6/6
-  G3 進度以站計量:起牀推「J-1 已點亮 n/m 站」,收工列未亮站並禁用任務數當理由
-  G4 憲法分流:總管版技術軌關鍵字 0、成員版上游指針 8,界標各 4/4
-  G6 實例改機制被攔:4/4(框架開發放行、使用者自訂插槽放行)
-  G7 框架混入實例名:指名 sdd-check.md:77,exit 1
- ◐ G1 PM 優先補接縫:機制齊了,但這是行為題,腳本證明不了 → 不標綠
- ◐ G5 政策包即插即用:插槽就位,政策包本體在 W3

■ 安裝實測:兩個乾淨環境各 1 秒、48/54 檔、版本 1.19.0、profile 正確
  (預測①「各 < 10 分鐘」達標;誠實註記:來源走本機檔案,比真實網路快)

🔴 狀態=**等發佈**,不是 :更新來源是公開 GitHub raw,
   只推 Gitea 的話外部實例抓不到 1.19.0。開閘由 leo 決定。

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-06 00:34:23 +08:00
Leo 2f5d9f3bb2 feat(W2 Phase 2-3): JDD 文件範本+八條封路 hook+還清兩件舊債
SDD: docs/3-specs/jdd-dual-profile(active)。編號 task 26/33 完成,Phase 4-5 未開工。

■ Phase 2 JDD 文件範本(orchestrator profile)
範本形狀對齊「實際跑出來的那兩份」(總管已寫的 root.md 15 卡、journeys.md J-1 九站),
不是照規格憑空造:
- 卡片是巢狀 bullet(`- **P1** 🟢 …` + 子項放來源/對帳),非規格畫的平行文字行
- 站點索引**巢狀 bullet 不用表格**(表格會把層級壓平,看不出從屬)
- 兩份都保留「這卷還缺什麼(誠實記)」收尾段——規格沒有,但那是防假綠的地方
新增:root.md / journeys.md / sprint.md / triage-map.md 四範本(add-if-missing,
填了就永不覆蓋)+ plugin-load-order.md(W3 插槽,框架不發明平行外掛格式)

■ Phase 3 封路 hook(八條規則落六支檔)
- role-guard(J1+J2+J3)★命門:考生不能改考卷。六組實測含「考題藏在別的 md 裡」也擋
- jdd-format-guard(J4+J5+J8):紅卡缺對帳日/任務缺站號/PM 文件混技術名詞
- station-done-guard(J6):收工判準是站的考題全綠,不是任務全關
- regression-scope(J7):動實作 → 列出要重考哪幾題(只提醒不擋)
- install-artifact-guard(S1):實例不改機制
- orchestrator-scope-guard(S4):總管不進成員 repo 動實作(從實例上收進框架,
  路徑清單改由實例自填,範本零專名)
掛載鏈依「範圍大的擋在前」:改機制 → 角色 → 位置 → 格式 → 既有三支

■ 還清兩件舊債
- update.sh 檔案清單改讀 manifest(舊硬編降為抓不到來源時的 fallback)
  ——install/update 兩份手抄清單漂移的根因全修
- CLAUDE.md 界標補植:舊實例全文原封包進本地區、框架區重鋪、原檔備份、冪等
  ——解開「沒界標⇒不敢覆蓋⇒框架改的憲法永遠送不到既有實例」這個死結

■ 修掉三個自己造的問題(實測抓出來的,不是想出來的)
- jdd-format-guard 誤擋真實 journeys.md 的「這卷還缺什麼」自述段
  → 排除法改**正面圈定**(只掃卡片本體與站內文),說明區/自述段/索引自然不在範圍
- install-artifact-guard 把 pre-write-guard.sh 也擋了——而它的錯誤訊息正叫人去改那支
  → 使用者自訂插槽列為最優先放行
- check-legacy-paths 用 HEAD 當基準會**自我弱化**:改成清單驅動後保護範圍 35→29 條
  → 基準改指最後一次真正發佈的版本

■ 實測(全部貼過輸出)
- G2 考生改考卷:6/6,含 orchestrator 寫 code/engineer 改考題/考題藏別處
- G4 憲法分流:兩環境重裝,總管版技術軌關鍵字 0、成員版上游指針 8,界標 4/4
- G6 實例改機制:4/4,含框架開發標記放行與自訂插槽放行
- G7 CI 擋實例名:注入違規 → 指出檔案行號 exit 1
- G3 進度以站計量:起牀推「J-1 已點亮 2/9 站」、收工列未亮站並禁用任務數當理由
- 回歸考、界標補植冪等、orchestrator-scope-guard 四組:全通

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-06 00:26:56 +08:00
Leo 6a49f25aef feat(W2 Phase 0-1): 雙 profile 地基+JDD 兩軸身分+兩支防炸閘
SDD: docs/3-specs/jdd-dual-profile(draft → active,leo 2026-08-05 回「開工」)
範圍:總管指定的「防炸兩件 → Phase 0 → Phase 1」,Phase 2 以後未開工。

■ 防炸(排在所有 task 之前,因為它們炸的是既有的東西)
- check-no-instance-names.sh + instance-names.txt:框架範本不得混入實例專名
  基線實測 22 行命中(非先前誤報的 20)→ 9 行無損泛化改寫、13 行檔級豁免記帳待 W3 搬走
  拒絕假性清理(把專名換成模糊詞=資訊消失、分層問題還在)
- check-legacy-paths.sh:已發佈腳本引用的 35 條遠端路徑只增不移
  舊實例跑的是舊腳本、路徑寫死;搬檔=整排 404 且不會有下一次更新來修它(1.16.0 前科)

■ Phase 0 地基
- template/manifest/{common,repo,orchestrator}.tsv:安裝清單單一真相源
  修好 install/update 兩份硬編清單的既有漂移——install 從不裝 wiki-first-search /
  subagent-wiki-guard / publish-lag-check / decisions-summary,但 update 會
  ⇒ 乾淨安裝反而拿不到 1.16/1.17/1.18 的招牌功能
- .claude/hooks/lib/role-lib.sh:scope×role 兩軸機械判定,零自陳
  身分矩陣六組實測全通過,含「成員 repo × orchestrator」不存在的格子擋下
- .sdt-framework-dev:框架開發標記(官方沒有 --framework-dev 這個參數,實查非記憶)

■ Phase 1 雙 profile
- profiles/{repo,orchestrator}/CLAUDE.md 兩部憲法
- install.sh:--profile + 自動偵測+寫檔前確認、manifest 驅動、
  CLAUDE.md 三段組裝(框架區/本地補充區界標+sha256)、.profile、.template-manifest、
  settings.json 寫入 env.AGENT_ROLE 預設
- update.sh:漂移偵測(不覆蓋手改檔、另存 .new、白話清單)+ 基準快照隨更新前進
- template/CLAUDE.md 原路徑凍結留底(相容)

■ 順手修掉兩個舊 bug(都在本次要動的函式裡)
- add_if_missing 少了 mkdir -p ⇒ 新目錄的檔 curl 失敗但 VERSION 照升(2026-07 記「待回報」至今未修)
- 下載健全性只用 [ -s ]=非空即接受 ⇒ 404 頁面會無聲覆寫好檔
  (SKILL.md 260→1 行的機制;同一支腳本的版本號那條路早就防了,檔案這條沒防)

■ 實測(非推論)
- G4 憲法分流:兩個乾淨環境各裝一次,orchestrator 版含 SDD 三件式關鍵字 0 次、
  repo 版含上游指針 8 次;界標 4/4;sha 宣告與實算相符
- G7 CI 擋實例名:注入違規行 → fail 並指出 sdd-check.md:77,exit 1;還原後 exit 0
- 漂移偵測:手改兩支 hook → 正確報 2 支、手改內容保住、產 .new;
  解掉後歸零;連跑三輪冪等

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-05 23:56:48 +08:00
Leo 2a8c259d08 依 D22 翻正舊 ignore 政策:本 repo 自己的 SDD 進版控 + 新增 jdd-dual-profile 卷
🔴 修的病:這個框架 repo 自己的 5 份 SDD 全部被 .gitignore 擋在版控之外,
只活在一台硬碟上——clone 不到、雲端 CC 讀不到、沒備份。SDD 是進度真相源,
「框架 repo 沒吃自己的狗糧」。

依據 D22(已翻案):Gitea private 除機敏值外全 push,雲端工人靠 clone,docs 缺=斷糧;
只有 GitHub mirror 才嚴篩,而 docs 整包已在 github-publish-exclude.txt。

.gitignore 改法:整條擋 → 只擋子項(/*)+ 逐個放行真 SDD。
與 template/ 底下逐位元組相同的自裝副本(TEMPLATE-sdd/、SDD-LIFECYCLE.md)續擋。

新增 docs/3-specs/jdd-dual-profile/(status: draft,等 leo confirm 才升 active):
JDD(PM 軌 root/journeys/角色權限/站號 sprint)與雙 profile 合成一卷,
33 條 task/6 phase,每條掛服務哪條 Gherkin(G1–G7)。
新增 hook 6 支、改既有 hook 1 支。**0 行實作**。

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-05 23:22:14 +08:00
Leo dc4fe67e15 feat(1.18.0): 公開 mirror 落後偵測(手動同步的靜默失敗,只有外部用戶會撞到)
Gitea(草稿)↔ GitHub(正稿)是手動同步,改了零件沒發佈=用戶抓到舊版
且無任何錯誤訊息,只是行為不對——我們自己永遠測不到。

SessionStart hook 比對工作區 HEAD 與 .github-public 最後 release snapshot,
落後就出聲,含發佈指令;若該批改動含 .wasm 額外標紅(安裝器懶載直接抓那個)。
只提醒不阻擋(發佈需 leo 親跑 arm)。

實測 Arcrun:落後 25 個 commit 且含 wasm 變更。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-21 13:51:10 +08:00
Leo 27c207c3e9 feat(1.17.0): 查詢一律從最強查法開始(語意→關鍵字→grep)
leo:「它一定是用最好的搜尋,如果沒有才 fallback,但那不是你要指定的。」

事故:查 CF git 託管只用 grep→零命中→結論「沒查過/申請表沒送」=指控 leo
沒做他早就做過的事。同一問題跑語意搜尋第一筆就命中(0.858),
帶出三元組「Artifacts >> 若提供 git 倉庫則可取代 >> Gitea」,leo 15 天前就記了。

根因不是關鍵字選錯,是用了三種查詢裡最弱的那種。
grep 要求先猜對詞;語意搜尋不需要。

- subagent 注入改分級查法(語意/關鍵字/grep)
- wiki-first-search:grep 零命中不再靜默退出(那正是最該用語意的時刻);
  有命中也明說「最弱查法、搜尋詞是猜的,請補語意搜尋」

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-21 11:59:21 +08:00
Leo 3eeded0432 fix: 源頭就寫對的網址,不靠發佈時改寫(leo 2026-07-21)
leo:「要發佈的正稿,從頭就不要用奇怪的網址,以免改來改去。」
=sanitize 每次改寫是補丁不是解法。改成源頭正確:

- README/README.en:死帳號 uncle6me-web → youlinhsieh(該帳號已 suspend,
  安裝指令指著它半年沒人發現=別人照做必失敗)
- install.sh/update.sh:來源預設改公開 GitHub raw;內部要指私有草稿源
  走 TEMPLATE_SOURCE= 環境變數覆寫,不改檔 → 兩邊不再需要維護兩份網址
- tasks-project-sync.yaml 註解範例帳號改通用佔位符

sanitize 降級為「安全網」:正常情況應無需改寫;若它報告改了東西=
源頭又混進錯網址的信號,回頭修源頭。保留它做發佈前驗證(殘留即中止)——
擋的是「只有外部使用者才會撞到、我們自己永遠測不到」的錯。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-21 11:32:27 +08:00
Leo c25babf4bb feat: GitHub public mirror 管線(成品櫥窗,非工作現場)
leo 2026-07-21:「應該要給的是一個適合別人用的濃縮結果,不需要有過程。
以後我還是在私有的 template 工作,但 publish 到 GitHub 就把它當貼文。」

- publish-github.sh:移植自 arcrun-rag 既有管線(乾淨歷史、憑證走 header 不進 URL)
  +修一個真 bug:原版 sanitize 失敗不中止 → 會把未淨化樹 rsync 進 mirror 並推出去
- github-publish-exclude.txt:濾掉工作現場(system-dev/ .claude/ docs/ CLAUDE.md CHANGELOG.md)
  保留成品(README/scripts/skills/template)
- github-publish-sanitize.py:改寫來源網址 + 發佈前驗證,殘留失效來源即中止
  ① git.uncle6.me(private 且即將換 CF 版,別人抓不到)
  ② uncle6me-web(已 suspend 的舊 GitHub 帳號——README 安裝指令原本還指著它,
     別人照著跑會失敗,與 07-20 update.sh 同一顆雷)

公開樹實測:只剩 README/scripts/skills/template,安裝指令指向 youlinhsieh,零殘留。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-21 11:18:37 +08:00
Leo b027044cb4 docs(template): CLAUDE.md 樣板加「第一鐵律:wiki 是判準,不准跳過」
leo 2026-07-21:「其他 repos 各自都要警覺不能跳過 wiki」。
hook 會攔,但 CLAUDE.md 是各 repo AI 開工必讀處,鐵律要寫在會被讀到的地方。
含:grep 查法、三條硬規則(衝突以 wiki 為準/核對解除條件/回頭更新 wiki)、
動外部系統前先找現成腳本(07-21 curl 硬幹實例)。

註:CLAUDE.md 屬使用者資料檔,update.sh 不覆蓋 → 既有 repo 由總管手動補齊。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-21 10:55:28 +08:00
Leo 0a04c9c594 fix(1.16.1): wiki-first-search 補 Bash 破口(1.16.0 隔天即被自己繞過)
leo 點破:wiki 早記著寄信已驗證可用,我卻沒查又自創 curl 部署法。
根因=昨天的 hook 只掛 Grep|Glob|Read,但我實際用的是 Bash → 完全不觸發。

- matcher 加 Bash,只認高風險指令(wrangler|curl|npx|acr|gh|deploy|push)
- update.sh 對既有註冊就地補 Bash,不只新裝生效

教訓:防跳過 wiki 的機制本身要蓋到所有實際查詢途徑。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-21 10:51:33 +08:00
Leo 4d14b05d81 fix(1.16.0): update/install 來源改指 Gitea(GitHub uncle6me-web 已 suspend=自動更新早就死了)+補 system-dev/VERSION 同步
發現:所有下游 repo 的 update.sh 都指向已被 suspend 的 GitHub 帳號
raw.githubusercontent.com/uncle6me-web/… → 一律「取不到遠端版本」而中止。
去 GitHub 化時漏掉這條,等於整套自動更新機制靜默失效。

改指 git.uncle6.me/Leo/system-dev-template/raw/branch/main(實測 200)。
另:版本真相源有兩份(template/.claude/VERSION 與 template/system-dev/VERSION),
update.sh 讀的是後者但 1.15.0 只更新了前者 → 補齊,並列為之後要收斂的雙檔同步債。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-21 01:38:45 +08:00
Leo ed3a97c6a2 feat(1.16.0): 讓 wiki 真的被讀到——查詢即搜尋 wiki+subagent 自動注入
病根(leo 2026-07-20 點破,真實事故):總管三次擋回 leo「某機制早已棄用」的
正確判斷,查證後 leo 全對。根因不是知識不足,是讀取流程:
① wiki 只讀開頭就開工(關鍵記載在第 56 行,答案一直在那裡)
② 派 subagent 只叫它讀 code、沒叫讀 wiki → 從稿子推論必然得出過時結論
③ 把 wiki 的「當時狀態」當永久事實(沒核對解除條件)

leo:「我需要的不是你記住,而是機制面的解法」
「如果你不是讀而是搜尋 wiki,就不會只讀 50 行就下定論,像 cmd+F 那樣高亮。」

新增:
- wiki-first-search.sh(PreToolUse: Grep|Glob|Read)
  查 code/文件的當下,用同一組關鍵字 grep wiki,只推命中行。
  開場 push 全文解決不了「只讀開頭」——時機才是關鍵。提醒不阻擋。
- subagent-wiki-guard.sh(PreToolUse: Task)
  查證/實作類任務 → 注入「先查 wiki」指示。
  第一版為「上游沒交代就擋」,經 leo 指正改注入式:
  「它只要聽到查,就應該主動查 wiki」——依賴上游記得寫=同一個病。

update.sh 除同步兩支 hook 外,自動註冊進 settings.json(不只提醒)——
靠人看提醒手動補,等於把同一個病搬到安裝環節。
template/ 新裝樣板同步(新 repo 裝完即生效)。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-21 01:30:46 +08:00
Leo 7b83465acf feat: SDD 生命週期鐵律——單一活性 SDD+pending-changes 緩衝+雙層硬約束(issue #6)+ bump 1.15.0
leo 2026-07-17 拍板:任何時刻每 repo 只有一份現行 SDD(status: active)。

- 新增 3-specs/SDD-LIFECYCLE.md:frontmatter 狀態標記(active|draft|paused|closed + superseded_by)+五條鐵律(單一活性/禁 CC 自建 SDD/規格變更走 pending-changes.md 等 confirm/開新 SDD 先逐條搬舊任務才准寫 code/session 開始回報三數字)
- 新增 3-specs/pending-changes.md:規格變更緩衝區骨架(待裁決/已裁決留底)
- TEMPLATE-sdd/design.md 掛 frontmatter(status: draft),移除舊「> 狀態」blockquote
- sdd-guard.sh 升級:active>1 不論寫什麼檔一律 exit 2;寫 code 檔需恰好 1 份 active;老 repo 無 frontmatter 退回舊行為(統計排除 archive/ 與 TEMPLATE)
- 新增 template/scripts/sdd-active-check.sh:獨立檢查,pre-commit/CI 可掛,>1 exit 1
- /sdd-check 加生命週期段(五鐵律摘要+三數字回報格式);template/CLAUDE.md 鐵律指向 SDD-LIFECYCLE.md
- install.sh/update.sh 鋪齊新檔(issue #13 教訓:update 不補新檔=結構斷層)
- 三情境 pipe-test 真跑通過:兩份 active 擋(2)/一份放行(0)/零 frontmatter 退舊行為(0)
- 版號:遠端已被 issue #5(vault 萃取)佔走 1.14.0,本案改記 1.15.0

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-17 16:53:18 +08:00
Claude 989a6fbfed docs: 校正殘留舊路徑 .claude/wiki → system-dev/wiki(總管裁定路徑筆誤)
wiki 於 1.9.x 已遷出 .claude/、真實慣例為 system-dev/wiki/;把描述當前架構
卻仍寫舊路徑的 doc 一併校正,讓 template 路徑故事一致、避免未來 install 被誤導。

- docs/why.md:雙空間說明的 wiki 路徑。
- docs/wishlist.md:三層機敏防護 L1/L3 的 .wikiignore 與 hook 掃描路徑。
- skills/llm-wiki/SKILL.md:架構圖、L1、維護規則。
- skills/llm-wiki/references/templates.md:CLAUDE.md/INDEX/mistakes/decisions 範本全部路徑。
- template/system-dev/docs/README.md:wiki 記憶空間標題。
- template/system-dev/wiki/.wikiignore:L3 註解。
- CHANGELOG 1.14.0 條目自身用語清乾淨。

保留(刻意不改):install.sh/update.sh/session-start-recall.sh 的舊路徑「遷移偵測」、
CHANGELOG 歷史版本記錄、.gitignore 根目錄自裝忽略——這些本就該指舊路徑。

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-06 03:06:04 +00:00
Claude 9a5219d8bd feat: vault 萃取能力 /wiki-extract(raw Logseq → system-dev/wiki,冪等)+ bump 1.14.0(issue #5)
vault repo(Logseq/Obsidian 只有原文)需要萃,萃取歸 template。新增可重跑、
content_hash 冪等的增量萃取,把原始筆記萃成 system-dev/wiki 精耕卡+[[wikilink]],
供下游 Arcrun ingest 機械拉三元組。AI 只產卡片,不寫 KBDB、不拉三元組。

- 新增 /wiki-extract 命令:vault 增量重萃入口(給 Routine 反覆跑,不需 token)。
  content_hash 冪等(.extract-manifest.json,hash 沒變=零 AI 呼叫);卡片格式沿用
  wiki-init 第五步不重造;原文唯讀 + D16 精耕非 RAG。
- 新增 Logseq 任務 marker 解析單一真相源 docs/4-guides/logseq-markers.md:
  大寫 marker(非 GFM checkbox),TODO/LATER→todo、DOING/NOW→in-progress、
  WAITING→blocked、DONE→done、CANCELED/CANCELLED→closed;跳過 LOGBOOK/屬性行。
  與 template#4 tasks 投影共用同一套,不各寫一份。
- install/update 帶下新命令與 guide;wiki-init 加增量重萃指針。

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-06 02:54:39 +00:00
Leo 146d3c4875 merge: issue #16 tasks.md⇄GitHub Project 單向投影(optional 模組)
前 session 寫完未 commit,本次補 commit(已過總管 review、http_request 修正落地)。
本地端讀 md/git diff、遠端 workflow 只打 GitHub API。真跑 acr push/run 留給人。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-28 16:28:08 +08:00
Leo 10f25e53e3 feat: tasks.md ⇄ GitHub Project 單向投影 optional 模組(issue #16)+ bump 1.13.0
裝了 SDD 的專案可把 docs/3-specs/*/tasks.md 待辦單向投影成唯讀 GitHub Project。
md 唯一真相源、Project 永遠唯讀,無反向同步、不會兩個真相源打架。預設不逼:
沒裝 Arcrun/答不要的用戶完全 no-op,純 md 不受影響。

- 投影 workflow template/system-dev/workflows/tasks-project-sync.yaml(Arcrun
  workflow):foreach 增量 → switch 動作 → http_request 打 GitHub API:新 task→
  issue create / [ ]→[x]→close / 文字改→edit / 行刪→archive(not_planned),並用
  GraphQL addProjectV2ItemById 投影進 Projects v2。auth 走 {{creds.github_token}}。
- 本地觸發端 tasks-project-sync.local.sh:因 Arcrun workflow 跑遠端 CF Workers、
  沒本地 fs/git,「讀 tasks.md / git diff / 回寫 <!-- gh:id -->」由本地端做完再
  acr run 餵增量。本地一半 + 遠端一半,職責邊界清楚。薄殼不自刻 parser。
- 防複發核實:每個 component 經 acr parts 核實存在(registry 無 github 零件,全用
  http_request 打 REST/GraphQL)。acr validate --offline 通過(7 三元組、config 完整)。
- 啟用判準=對話 + 能力,不掃檔(Arcrun workflow 存遠端 KV、零本地檔也能用 →
  掃檔 false negative)。install/init 問一句 → 查環境有 Arcrun 就 acr push 啟用、
  沒有就一次性溫和廣告。帶檔 ≠ 啟用。install/update 隨 SDD 模組帶 workflow(add_if_missing)。
- 守 flag 紅線:push 後本機觸發單次,禁定期輪詢、禁 GitHub Actions fan-out。

⚠️ 端到端(acr push 真部署 + acr run 真投影)待 leo21c 驗,本版為 code-done 骨架。
SDD(內部,gitignore 不推):docs/3-specs/tasks-project-projection/。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-28 16:24:33 +08:00
Leo 953e7739da docs: CHANGELOG 補 1.12.0(跨 repo 署名鐵律,issue #12)
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-26 18:24:28 +08:00
Leo 5d803c3971 feat: 跨 repo issue/comment 署名鐵律 [<repo> CC](issue #12)+ bump 1.12.0
所有 repo 共用 uncle6me-web 一帳號發 issue/comment,author 看不出來源。
issue-handle skill 加第 3 節「跨 repo 署名」:comment 開頭一律 [<本 repo> CC],
總管用 [InkStoneCo 總管],內容層溯源(平台無 per-repo 身份)。第 1 節範例帶署名,
原 flag 界線順延第 4 節。落點選 skill 不選 CLAUDE.md(導航牌不增長)。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-26 18:15:01 +08:00
Leo 93420cea4e feat: 採集規範升級三元組抓內文實體+## 實體 區塊(issue #11)+ bump 1.11.0
Logseq 183 卡落地暴露:現行三元組只示範卡對卡(既有雙鏈加動詞、資訊量沒增加);
gloss 只描述卡標題一個 node,內文實體無處放描述。只談採集端,ingest 另立。

- 三元組改抓內文實體關係(原子筆記>>對立於>>傳統筆記,A/B 是內文概念)
- 卡片新增 ## 實體 區塊:正規名(同義詞)— 描述,供 embedding normalize,集中不重複
- ## 關聯 拆兩層:內文知識關係(端點裸文字)+卡片關係(卡對卡 [[]])
- ★端點硬自檢★:端點須與 ## 實體 一字不差,逐條比對。實證 Haiku 對不齊 14→0
- 謂詞限定動詞禁名詞(否則 Haiku 寫 >> 存儲格式 >> 讀不通)
- 兩路徑同步 SKILL(Cowork)+wiki-init(CC)

對應 SDD: wiki-architecture(內部,不推)。Closes #11

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-26 18:02:25 +08:00
Leo 21ba319934 fix: install 防重複安裝,已裝過導去 update(杜絕 wiki 並存)+ bump 1.10.1
實測:裝過舊版的專案「先 install 發現裝過再 update」→ install 先建空殼,
update 遷移見目的地已存在就冪等跳過 → 真資料卡舊位置、空殼佔新位置、並存。

職責切分:install 只管全新安裝,一切已裝過的後續歸 update。

- install 防呆:偵測裝過沒(system-dev/ 或 .claude/wiki/ 或 .claude/VERSION
  任一存在,不分新舊版)→ 不動任何東西,導去 update。源頭杜絕並存。
- update 偵測並存:migrate_dir 遇目的地已存在但舊位置仍有真資料 → COEXIST
  警告需合併,不靜默跳過、不自動合併(絕不覆蓋用戶資料),引導 CC 逐檔合併。
- install↔update 互相導向,閉環無死結。
- 沙盒驗證:四種狀態(新結構/舊wiki/舊VERSION/全新)防呆正確、並存偵測不吃資料。

對應 SDD: install-layout(內部,不推)。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-26 17:51:18 +08:00
Leo 671503fd70 feat: wiki 資訊架構 push/pull 判準 + principles 原則 push 檔 + bump 1.10.0
從「用戶所有檔案一律改寫成 wiki」前提,用 push(行動前必看見)vs pull(按需查)
重新推導 wiki/ 每個檔存廢——wiki 主要給 AI 看,判準是 CC 做事會不會被動看見。
對應 SDD: wiki-architecture(內部,依原則不推)。

- 新增 principles.md(push 全文):收跨全局原則(不污染根目錄、low-code…),
  原則是會被遺忘的盲區,沒推到眼前 CC 設計時不服從。一行一條 ≤15。
- mistakes 改 push 摘要(標題+症狀,全文按需展開,量大不撐爆 context)
- decisions-summary 降級為 cards + INDEX 決策視圖(既有相容)
- INDEX 升級多角度視圖的家:新增角度只改 INDEX,不開檔不問用戶
- session-start hook 三類 push:principles 全文→status→mistakes 標題;>15 警告
- install 補 principles download;update 加 add_if_missing(補範本/已有則保留)
- push/pull 判準寫進 wiki-init + SKILL,CC/Cowork 共用
- 沙盒驗證:三類注入順序與量受控、add_if_missing 不覆蓋用戶內容、全 bash -n 過

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-26 17:34:26 +08:00
Leo ead3593109 fix: 遷移後 CLAUDE.md 殘留舊路徑 → hook 偵測並提示 CC 代修 + bump 1.9.3
升級 1.9.x 後 wiki 已搬 system-dev/,但 update.sh 鐵則絕不碰 CLAUDE.md(用戶資料),
CLAUDE.md 內仍寫 .claude/wiki 舊路徑,CC 照它找錯位置(KB 端升級後發現)。

- session-start hook 偵測:wiki 已遷移但 CLAUDE.md 有 .claude/wiki → 接關後提示 CC 代修
- 由 CC 代改而非腳本盲 sed:避免誤傷用戶自寫內容、不破鐵則
- SDD install-layout 補一條決策(小修,不重寫)

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-26 16:09:11 +08:00
Leo c24c42c99f fix: 修 SKILL.md typed-edge 三元組整節重複貼兩次(issue #10)+ bump 1.9.2
加 gloss 節時複製貼上沒清掉舊段,### 使用 typed-edge 三元組 在 SKILL.md
出現兩次、byte-identical(KB 端讀 skill 時發現)。

- 刪重複第二份,保留第一份(順序合理,gloss 節緊接其後)
- 兩來源檔同步:docs/SKILL.md + template/system-dev/docs/SKILL.md

Closes #10

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-26 15:35:22 +08:00
Leo e097c02b9d fix: 修 1.8.x 舊腳本升級撞 404 + VERSION 被污染 + bump 1.9.1
1.9.0 把 VERSION 搬到 system-dev/,但 1.8.x 舊用戶本機 update.sh 寫死抓舊路徑,
curl 對 404 把「404:NotFound」當內容寫進 VERSION,且第一次跑不遷移。

- 發佈源保留相容墊片 template/.claude/VERSION(與 system-dev/VERSION 同步)
- 新 update.sh 驗 REMOTE_VER 須像 X.Y.Z,否則視為取不到,永不寫進 VERSION
  (404/HTML/空 全擋,未來路徑變動也不會再污染版號)

照 README curl main/scripts/update.sh 升級者抓遠端新腳本、一次遷移不受影響;
只有跑本機舊 scripts/update.sh 才中,這版修掉。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-26 15:27:55 +08:00
Leo ecf1f882c6 feat: 安裝結構收進 system-dev/(不污染用戶根目錄)+ 舊版自動遷移 + bump 1.9.0
工具產物原散在用戶根目錄(docs 七層、scripts),又把 wiki/VERSION 寄生在 CC 原生
.claude/ 裡,用戶分不清哪個 docs 是工具的。這版徹底收斂:除 .claude/(settings/
commands/hooks)與 CLAUDE.md 留根,工具所有資料收進 system-dev/。

對應 SDD: system-dev/docs/3-specs/install-layout/(內部記錄,依原則不推)。

- 新結構 system-dev/{VERSION,wiki/,docs/,scripts/};.claude/ 只剩 CC 機制檔
- wiki 改寫產物落點正式化:install 建 system-dev/wiki/cards/(.gitkeep)
- docs 雙語義拆開:工具文件→system-dev/docs/;用戶 raw source 維持原處只讀
- scripts 一開始就裝進 system-dev/scripts/
- 舊版自動遷移雙保險:update.sh 冪等搬移(wiki 含 .git、docs 白名單)
  + session-start hook 偵測舊結構未遷移時提示(low-code 用戶兜底)
- wiki-secret-scan 觸發路徑改 system-dev/wiki/**(否則新結構防護失效)
- 全套路徑引用同步:CLAUDE/SKILL/wiki-*/sdd-*/hooks/INDEX/README(中英)
- 沙盒驗證:遷移含 .git commit 一致、冪等、用戶自填 docs 保留;全 bash -n 過

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-26 15:13:43 +08:00
Leo c95705c286 fix: update.sh 在 curl|bash 下崩潰(bash 3.2 多位元組,1.7.0 漏修)+ bump 1.8.2
第 54 行「已是最新版($LOCAL_VER)」中文全形括號緊貼裸變數,curl|bash 串流在
多位元組邊界切斷時 bash 3.2 誤判變數名 → LOCAL_VER�: unbound variable。觸發點
在「本機=遠端版本」分支,故「以為沒更新再跑一次」必中。

- $LOCAL_VER → ${LOCAL_VER}(同 1.7.0 install.sh 的修法,當時漏掉 update.sh)
- bash set -u 模擬該分支驗過不再崩

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-26 14:41:06 +08:00
Leo e0ff006564 fix: 補裝 Cowork wiki skill(docs/SKILL.md)+ CLAUDE.md 加 wiki/gloss 導航 + bump 1.8.1
Cowork(claude.ai)整理 wiki 的規則檔 docs/SKILL.md(含 typed-edge、frontmatter
標籤、gloss)從來沒被裝到用戶端:install.sh 沒下載、template/docs/ 發佈源也缺檔,
claude.ai 來掃時身上零規則。CC 平時讀的 CLAUDE.md 也沒指向採集規則,造成「CC 說
找不到 gloss 指引」。

- template/docs/SKILL.md 新增(補發佈源,install 才有得下載)
- install.sh 加下載 docs/SKILL.md(wiki 模組)
- update.sh 加 update_file docs/SKILL.md(可覆蓋規則檔)
- template/CLAUDE.md 加「整理 wiki 的方法」導航,CC+Cowork 雙明示 gloss 規則所在

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-26 14:13:42 +08:00
Leo f2c048c79f feat: wiki 採集加「萃 gloss」(node 一句說明,供下游語義 normalize)+ bump 1.8.0
issue #9:下游 KBDB 語義 normalize 要對「entity 名 + gloss」一起 embedding 自動
歸一同義詞,但採集只萃三元組沒萃 gloss。原則:gloss 在知識生產當下由 local
CC/Cowork 建,不留給下游 ingest 臨時補(下游視角編不出好 gloss)。

- 卡片 frontmatter 加 gloss: 欄位(選填、deep tier 才產)
- gloss ≠ 摘要:gloss 給機器 normalize,## 摘要 給人讀
- 對齊下游 envelope nodes[].gloss
- wiki-init.md(CC)與 docs/SKILL.md(Cowork)兩路徑同步

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-26 13:47:07 +08:00
Leo e9d6d78032 fix: install/update 雙語化(預設英文) + 修 macOS bash 3.2 安裝崩潰 + bump 1.7.0
- 修崩潰:bash 3.2 + set -u 展開空陣列會炸 unbound variable;移除多餘
  ${SKIPPED[*]} no-op;多位元組字串旁變數改用 ${VAR} 防 curl|bash 串流切斷
- install/update 訊息依 locale 雙語,預設英文(curl|bash 常 LANG=C),zh_TW 切繁中
- 寫進 CLAUDE.md 的 raw source 宣告依 locale 只寫一種語言(不撐爆 context)
- 修措辭:一般開發案不再顯示誤導的「偵測到 vault 類型:docs」
- 新增 README.en.md(繁中↔English 切換)
- gitignore dogfooding 自裝產物(CLAUDE.md/docs 子目錄/.claude/settings*)

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-26 12:40:28 +08:00
Leo bc0fe3f01c docs: 釐清 taxonomy 是受控擴充非凍結(先查重再登記)+ bump 1.6.1
1.6.0「禁止自創」措辭過嚴,碰到新軸會逼 AI 硬塞或偷創。改成:
禁的是繞過字典直接冒新標籤,不是禁新增——遇裝不下的內容先查重
(非同義詞?)、確認是新軸才登記進該 repo 的 TAXONOMY.md 再用。
字典 per-repo,跨 repo 不共用。新增領域軸要慎,形態軸較安全。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-26 01:28:21 +08:00
Leo dccb97a6df feat: wiki 完整規劃方式(183 卡實證)三層架構+frontmatter標籤+多層索引(issue #8/#6/#7)
在 Logseq vault(234 篇 → 183 卡、571 typed-edge)完整跑一輪後定案的
「對 AI 最優」規劃方式,一次納入 wiki-init.md 與 docs/SKILL.md:

- 三層架構:INDEX(標籤視圖)→ cards/<bucket>/00-INDEX → 原子卡。
- frontmatter tags 分類(非行內 #tag、非資料夾),TAXONOMY.md 當字典禁自創。
- 桶子索引固定名 00-INDEX.md(#6);指它帶路徑 [[bucket/00-INDEX]](#7)。
- 新檔 TAXONOMY.md:install download_if_missing、update keep_file。
- 踩坑警語:subagent 絕不寫 raw source(git 驗證)、檔名全形字元一致、量大用 Haiku。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-26 01:20:40 +08:00
Leo 331e4d56a7 feat: wiki 連結升級成 typed-edge 三元組 A >> 謂詞 >> B(issue #5)
裸 [[wikilink]] 是弱連結——只說「有關」,沒說關係是什麼,下游要建
knowledge graph 還得回讀兩張卡。改寫成帶語義的三元組,下游 ingest 直接
parse 出帶類型的有向邊,把關係也預編譯。

- wiki-init.md + docs/SKILL.md 的 ## 關聯 改用 [[A]] >> 謂詞 >> [[B]]。
- 規則:方向性、謂詞用動詞、自由詞彙、向後相容(裸 [[A]] 仍合法)。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-25 23:11:31 +08:00
Leo 6b49f35925 feat: wiki = AI 改寫的記憶(拿掉索引模式)+ 量大建議 Haiku(issue #4)
修正 1.4.0 方向:索引 vs 改寫不該是兩種並列模式。記憶系統的目的是
讓 AI 之後讀得快——不管 vault 或一般開發,原文都是亂的,只做指回原文
的索引等於每次重新解析、沒省到。wiki 的價值在「改寫一次,之後每次讀都便宜」。

- 拿掉索引模式,改寫成 wiki 是所有專案的唯一預設。
- 唯一例外:不可改動的正式文件(須逐字讀)才用指針指回原文。
- 量大時主動建議派 Haiku subagent 並行改寫,主模型負責切概念與審稿。
- INDEX.md 範本統一成概念索引指向 wiki 內部條目。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-25 21:51:30 +08:00
Leo 37070fe506 feat: wiki-init 新增草稿改寫模式(AI 當總編輯)+ bump 1.4.0(issue #4)
wiki-init 原本整套指令只有「分類歸檔/導航」,把人和 AI 都導向做出
[[原文檔名]] 指回原文的索引。但 PKM/vault 使用者常要的是相反的:
原文是草稿,要 AI 改寫萃取成自包含 wiki,讀 wiki 就好不必回原文。

- 開頭新增模式分岔(索引 vs 草稿改寫),附對照表。
- 偵測到 Logseq/Obsidian vault → 預設草稿改寫模式,但問一句可切回。
- 一般專案 → 維持索引模式(向下相容)。
- 草稿改寫格式寫進命令本身(概念原子化、自包含、來源指針、wikilink),
  與 Cowork docs/SKILL.md 一致。
- INDEX.md 範本支援兩種形狀。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-25 21:44:39 +08:00
Leo c0a6b6a465 fix: update.sh 不再覆蓋客製 pre-write-guard.sh(issue #3)+ bump 1.3.1
update.sh 原把 pre-write-guard.sh 列在無條件覆蓋區,會用模板空殼
無聲蓋掉下游已客製的 guardrail,且 update_file 無 .bak 備份。

改法(issue 方案 1):新增 keep_with_template()——原檔永不覆蓋,
最新模板版另存 pre-write-guard.template.sh 旁邊,結尾印 diff 指令供採納。
首次安裝(原檔不存在)才走 update_file 抓本體。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-25 20:47:46 +08:00
Leo ba247428a8 chore: bump 1.3.0 + CHANGELOG(vault 偵測 + Cowork skill)
承接上一個 feat commit:補上版號與更新紀錄,讓 update.sh 能通知用戶有新版。
- template/.claude/VERSION:1.2.0 → 1.3.0(新功能、向下相容)
- CHANGELOG:新增 1.3.0 一節
- .gitignore:排除 dev repo 自裝的 .claude/commands/(比照 wiki/hooks 的自用不推慣例)

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-25 20:06:28 +08:00
Leo d10659bd2d feat: install.sh 偵測 vault 類型寫入 raw source + Cowork 整理 skill
- install.sh:建立 CLAUDE.md 前偵測資料夾類型,寫入對應 raw source
  - logseq/ → pages/, journals/
  - .obsidian/ → 根目錄 .md
  - 都沒有 → docs/(維持原行為)
  宣告區塊對 vault 明令不得搬動/改名 .md,整理只寫進 .claude/wiki/。
  已有 CLAUDE.md 一律不覆蓋,改列提醒手動補。
- docs/SKILL.md:給 claude.ai Cowork 的 wiki-cowork-scan skill,
  與 CC 共用同一套偵測與整理規則。
- README:新增 vault 支援、Cowork 整理兩節,更新目錄樹。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-25 20:01:21 +08:00
Leo 25cb4d1f63 feat: v1.2.0 — issue 處理指引 + pre-write-guard 定位釐清 + 開發 wiki 隔離
issue #1:新增 /issue-handle slash command,CC 處理 GitHub issue 的
普世指引——讀回自己 repo 直接做、跨 repo 發要先問人、禁掛 Actions/cron
自動輪詢(會觸發 GitHub 異常偵測)。屬共用指引,install/update 不分模組裝。

issue #2:pre-write-guard.sh 釐清定位為「按需手填的空插槽」,非裝上就
生效的警察。檔頭明講有 CC 在場時直接叫 CC 寫貼合的 guard 更好;install/
update 安裝時提示「預設不攔,要手填才生效」,消除安全錯覺。hook 執行維持
安靜不洗版。

另:repo 自己裝了一套開發用 wiki(內部記錄),與 template/ 成品範本實體
隔離,.gitignore 排除 .claude/wiki/、.claude/hooks/、.claude/VERSION,
不推 GitHub。

升版 1.2.0,CHANGELOG 記錄。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-23 12:20:23 +08:00
Leo 68f71eab75 feat: 舊版一鍵更新 update.sh + VERSION + CHANGELOG
舊版使用者升級的雞生蛋問題:本機沒有 update.sh,第一次靠 README
的 curl 從遠端抓更新器來跑,跑完它把自己裝進 scripts/update.sh,
之後直接跑本機的即可。

update.sh 只覆蓋模板/邏輯檔(hooks、commands、TEMPLATE-*),完全
不碰使用者資料(wiki 內容、.wikiignore、settings.json、CLAUDE.md)。
依已裝模組自動偵測該更新什麼,並比對 VERSION 列出新功能。

新增 template/.claude/VERSION 作為版本基準、CHANGELOG.md 記錄每版
變動,README 加更新區段與 CHANGELOG 連結。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-23 11:40:57 +08:00
Leo 5c364aa592 chore: gitignore 排除 editorial-image skill(私房出圖工具不上傳)
editorial-image 是本機出圖輔助 skill,不屬於此公開模板的範圍,
留在本機使用,不入版控。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-20 19:23:31 +08:00
Leo 5553332efd docs: README 加致謝區段,修正 Karpathy 拼字
- 修 L17「Kaparthy」→「Karpathy」
- 新增致謝:Andrej Karpathy(LLM Wiki 概念,附 gist 與延伸閱讀連結)、
  Amazon Kiro(SDD 方法論學習來源,附官方文件)、Claude(結對共同作者)

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-20 13:36:12 +08:00
Leo 2bbb8b30e0 docs: 修正 README 目錄樹(docs/ 實際只有 why.md + wishlist.md)
原列的 sdd-guide.md / llm-wiki-guide.md 不存在,改成實際的 wishlist.md。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-20 13:29:12 +08:00
Leo 9dcbe38021 feat: install.sh 模組化安裝(--wiki / --sdd / --all)
有時只需要 wiki 不需要 SDD。不 fork,改用同一入口模組選單:
- --wiki / --sdd / --all(預設),無參數 + 有 tty 則互動詢問
- curl|bash 無 tty 安全預設 --all
- settings.json 的 hooks 依選的模組自動組裝(不再下載單一靜態檔)

不 fork 的理由:使用者多半非工程背景,一個入口最友善;維護成本不翻倍。
模組邊界先劃好,未來功能達 3+ 個再演進成「模板組合器」。

同步 wishlist:§1 接關 / §2 hook 標記已完成(commit 39783cc),
新增 §3 機敏防護 / §4 模組化安裝並標完成。README 補三層防護與模組安裝說明。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-20 12:45:53 +08:00
Leo 29e3636bd2 feat: wiki 機敏防護三層(.wikiignore + 行內標記 + secret-scan hook)
不想被編入 wiki 的內容(密碼/金鑰/個資)三層防線:
- L1 .wikiignore:整個機敏檔不編入(glob,像 .gitignore)
- L2 行內標記 <!-- wiki:ignore -->:檔案內某段不編入
- L3 wiki-secret-scan.sh hook:機敏值真寫進 .claude/wiki/ → exit 2 擋

L3 偵測密碼賦值/PEM 私鑰/AWS·GitHub·Slack·Google·Stripe 金鑰/JWT/
連線字串帳密/台灣身分證/信用卡號;wiki-secret-ok 行尾標記可豁免誤判。
wiki-init/wiki-capture/SKILL 寫入 L1+L2 協議。

誠實限制:L1/L2 靠 CC 自律、L3 靠 regex(有偽陽/偽陰),減少意外外洩
非保險箱——真正的密鑰本就不該進版控。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-20 12:45:28 +08:00
Leo 39783cccc8 feat: 接關 hook + SDD 強制 hook(實作 wishlist 兩項)
§1 接關機制(雙保險):
- session-start-recall.sh:SessionStart 自動注入 status 重點 + 快照核實提醒
- /wiki-recall:fallback 命令,hook 失效時手動接關

§2 軟規範 → 硬攔截:
- sdd-guard.sh:動 code 檔但無 SDD → exit 2 擋(/sdd-check 自動版)
- pre-write-guard.sh:專案自訂禁令骨架(預設停用)
- settings.json:掛 SessionStart + PreToolUse

配套:install.sh 下載 hooks/settings(settings 比照 CLAUDE.md 不覆蓋);
README/CLAUDE.md 補文件 + 誠實限制聲明。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-15 16:04:58 +08:00
Leo 04e2cc3071 Fix install source to match uncle6me-web repo
install.sh REPO_URL and README install commands were hardcoded to
richblack/system-dev-template while this repo lives at
uncle6me-web/system-dev-template. The mismatch made the installer pull
executable config (.claude/commands/*.md) from a different repo name than
the one users name, which the classifier blocks. Point all sources at
uncle6me-web so the install source matches the repo name.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-14 17:25:39 +08:00
Leo 8aa1b68ca0 Initial commit 2026-06-08 16:06:18 +08:00