Files
ewoooc/docs/guides/ty-ai-standards-onboarding.md
ogt a96306fba2 Fix Telegram bot natural language communication issue
- Install python-telegram-bot dependency
- Start Telegram bot service successfully
- Confirm correct group ID (MOMO PRO - small shrimp group)
- Bot now running with all commands and button interface functional
- Natural language processing restored with keyword matching

Fixes issue where Telegram group could not communicate using natural language.
2026-04-22 14:27:50 +08:00

9.7 KiB
Raw Blame History

ty-ai-standards 新專案接入指令書

本文件由統帥產生,可直接轉發給負責新專案的 Claude Code session。 執行前無需額外背景知識,照順序執行即可。


一、你的任務

將本機已建立的「ty-ai-standards 全域架構」套用到 這個專案。 全域架構已就緒於 ~/.claude/,你的工作是為本專案建立 Local 層


二、全域架構現況(已完成,勿修改)

~/.claude/ 已包含:

路徑 內容
~/.claude/CLAUDE.md 全域憲法P7/P9/P10、三紅線、12-agent 委派表
~/.claude/settings.json 全域設定claude-sonnet-4-6 + 10 個 hooks
~/.claude/hooks/ 10 個 hookbranch-protection / commit-quality / python-quality / yaml-validator / large-file-warner / mcp-health / audit-log / suggest-compact / cost-tracker / session-summary
~/.claude/agents/ 10 個 agentcritic / debugger / planner / fullstack-engineer / refactor-specialist / migration-engineer / onboarder / tool-expert / vuln-verifier / web-researcher

全域 hooks 在本 session 已自動生效,無需重複安裝。


三、hooks 合併規則(必讀)

Claude Code 的 hooks 採 全域 + 專案 同時執行(不覆蓋,疊加)。 因此:

  • 全域 commit-quality.js 已掃描通用 secretOpenAI / GitHub / AWS / Anthropic
    • 讀取本專案的 .claude/hooks/secrets.local.json 補充專案專屬 pattern
  • 本專案 settings.json 不需要再呼叫 commit-quality.js(避免重複執行)

四、P7 執行計畫(六步,逐步完成)

Step 1 — 讀取現況(禁止跳過)

執行以下指令,全部讀完再開始動手

# 1a. 確認全域架構
ls ~/.claude/hooks/
ls ~/.claude/agents/

# 1b. 讀取本專案現有 .claude/ 狀態
ls .claude/ 2>/dev/null || echo "無 .claude/ 目錄"
ls .claude/hooks/ 2>/dev/null
cat .claude/settings.json 2>/dev/null

# 1c. 讀取現有 CLAUDE.md
cat CLAUDE.md 2>/dev/null

# 1d. 確認分支策略
git log --oneline -5
git remote -v

Step 2 — 建立 .claude/ 結構

mkdir -p .claude/hooks
mkdir -p .claude/agents

Step 3 — 複製全域 agents

for f in ~/.claude/agents/*.md; do
  name=$(basename "$f")
  if [[ ! -f ".claude/agents/$name" ]]; then
    cp "$f" ".claude/agents/$name"
    echo "✅ agents/$name"
  else
    echo "⏭️  agents/$name 已存在,跳過"
  fi
done

若本專案有專案專屬 agent(如 db-expert.md在此步驟後加入 .claude/agents/


Step 4 — 建立三個設定檔

4a. .claude/hooks/branch-protection.local.json

根據本專案分支策略選擇:

# 選項 Amain 可直接 commitpush-to-deploy 模式,如 momo
echo '{"protectedBranches": ["production"]}' > .claude/hooks/branch-protection.local.json

# 選項 Bmain 受保護,必須開 feature branch
echo '{"protectedBranches": ["main", "production"]}' > .claude/hooks/branch-protection.local.json

4b. .claude/hooks/secrets.local.json

填入本專案使用的 Token/Key 格式,讓全域 commit-quality.js 自動載入:

[
  {"pattern": "PATTERN_REGEX", "label": "Token 名稱"},
  {"pattern": "ANOTHER_PATTERN", "label": "另一個 Token"}
]

常見範例(按需選用):

[
  {"pattern": "\\d{8,12}:[A-Za-z0-9_-]{35}", "label": "Telegram Bot Token"},
  {"pattern": "TELEGRAM[_\\s]*TOKEN\\s*=\\s*[\"']?[^\\s\"']{20,}", "label": "Telegram Token 環境變數"},
  {"pattern": "glpat-[a-zA-Z0-9_-]{20}", "label": "Gitea/GitLab PAT"},
  {"pattern": "GITEA[_\\s]*TOKEN\\s*=\\s*[\"']?[^\\s\"']{20,}", "label": "Gitea Token 環境變數"}
]

4c. .claude/settings.json

如果本專案已有 settings.json:讀完後手動合併,保留現有欄位,只更新 hooks 格式。

如果本專案沒有 settings.json:直接建立:

{
  "permissions": {
    "defaultMode": "bypassPermissions",
    "additionalDirectories": ["/tmp"]
  },
  "hooks": {
    "PreToolUse": [
      {
        "matcher": "",
        "hooks": [
          {"type": "command", "command": "node $CLAUDE_PROJECT_DIR/.claude/hooks/<project>-guard.js"},
          {"type": "command", "command": "node $CLAUDE_PROJECT_DIR/.claude/hooks/large-file-warner.js"},
          {"type": "command", "command": "node $CLAUDE_PROJECT_DIR/.claude/hooks/mcp-health.js"}
        ]
      }
    ],
    "PostToolUse": [
      {
        "matcher": "",
        "hooks": [
          {"type": "command", "command": "node $CLAUDE_PROJECT_DIR/.claude/hooks/audit-log.js"},
          {"type": "command", "command": "node $CLAUDE_PROJECT_DIR/.claude/hooks/suggest-compact.js"}
        ]
      }
    ],
    "Stop": [
      {
        "matcher": "",
        "hooks": [
          {"type": "command", "command": "node $CLAUDE_PROJECT_DIR/.claude/hooks/cost-tracker.js"},
          {"type": "command", "command": "node $CLAUDE_PROJECT_DIR/.claude/hooks/session-summary.js"}
        ]
      }
    ]
  }
}

注意:

  • commit-quality.js 不需列入(全域已跑)
  • <project>-guard.js本專案專屬的生產環境保護 hook(見 Step 5
  • $CLAUDE_PROJECT_DIR 是 Claude Code 自動注入的環境變數,指向專案根目錄

Step 5 — 建立專案 guard hook

參考 momo-prod-guard.js為本專案寫一個 <project>-guard.js

最小可用版本(無任何阻擋,只稽核):

// .claude/hooks/<project>-guard.js
const { spawnSync } = require('child_process');
let d = '';
process.stdin.on('data', c => d += c);
process.stdin.on('end', () => {
  try {
    const i = JSON.parse(d);
    const cmd = String(i.tool_input?.command || '');
    // 在此加入本專案需要阻擋的危險操作
    // 參考: momo-prod-guard.js 的寫法
  } catch (e) {}
  process.stdout.write(d);
});

需要阻擋的常見危險操作(按本專案需求選用):

  • docker compose down -v(刪 volume
  • kubectl delete namespace
  • --remove-orphans(如有多專案共存 Docker
  • 直接操作 production DB

Step 6 — 更新 CLAUDE.md

保留本專案現有的所有專案索引(環境、服務、指令等)。

移除與全域重複的通用規則P7/P9/P10、三紅線、委派表——這些由 ~/.claude/CLAUDE.md 自動 concatenate 補全。

在檔案頂部加入一行

> 全域工作流程P7/P9/P10、三紅線、委派表見 `~/.claude/CLAUDE.md`

在檔案底部加入安全架構說明

## 安全架構bypassPermissions

本專案採用 `permissions.defaultMode: "bypassPermissions"` + Hook 自動政策。

| Hook | 觸發點 | 防護內容 |
|------|--------|---------|
| `<project>-guard.js` | PreToolUse | 專案危險操作阻擋 |
| `large-file-warner.js` | PreToolUse | >2MB 阻擋,>500KB 警告 |
| `mcp-health.js` | PreToolUse | MCP 冷卻保護 |
| `audit-log.js` | PostToolUse | Bash 指令稽核 |
| `suggest-compact.js` | PostToolUse | 50 次工具呼叫後建議 /compact |
| `cost-tracker.js` | Stop | Token 用量追蹤 |
| `session-summary.js` | Stop | 對話快照存檔 |

全域 Hook`~/.claude/hooks/`同時生效branch-protection / commit-quality / python-quality / yaml-validator

Step 7 — 驗證 & commit

# 確認所有檔案就位
ls .claude/
ls .claude/hooks/
ls .claude/agents/
cat .claude/settings.json

# 確認 .gitignore 有排除 settings.local.json
grep "settings.local.json" .gitignore || echo ".claude/settings.local.json" >> .gitignore

# Commit
git add CLAUDE.md .claude/ .gitignore
git status  # 最後確認一次
git commit -m "feat(claude): 套用 ty-ai-standards Global-Local 架構"
git push

五、完成後的架構圖

~/.claude/                    ← 全域層(所有專案共用)
├── CLAUDE.md                 ← P7/P9/P10 + 三紅線 + 委派表
├── settings.json             ← 全域 hooks 清單
├── hooks/                    ← 10 個通用 hooks自動生效
└── agents/                   ← 10 個通用 agents

<project>/.claude/            ← 本地層(本專案專屬)
├── settings.json             ← bypassPermissions + 專案 hooks
├── agents/                   ← 全域 agents 副本 + 專案特規 agent
└── hooks/
    ├── <project>-guard.js    ← 專案危險操作保護
    ├── secrets.local.json    ← 專案 Token pattern全域 commit-quality 自動載入)
    └── branch-protection.local.json  ← 分支保護覆蓋設定

六、判斷表:遇到衝突時

情況 做法
現有 settings.json 超大 讀清楚再合併,不整個覆蓋
現有 hooks 已有 shell 版本 保留,並列執行;或改寫成 .js 統一管理
CLAUDE.md 有大量專案規則 全部保留,只加全域參照那一行,去掉通用重複段落
專案用 main 直接 push branch-protection.local.json{"protectedBranches": ["production"]}
專案有 PR 審查流程 branch-protection.local.json{"protectedBranches": ["main", "production"]}
現有 secret hook 已掃某 pattern 不需加入 secrets.local.json避免雙重告警

七、完成判斷DoD

  • ~/.claude/ 全域架構確認存在10 hooks + 10 agents
  • .claude/settings.json 格式正確(defaultMode: "bypassPermissions" + 物件格式 hooks
  • .claude/hooks/secrets.local.json 填入專案 Token pattern
  • .claude/hooks/branch-protection.local.json 設定符合分支策略
  • .claude/agents/ 有 10 個通用 agents含專案特規 agent
  • CLAUDE.md 加入全域參照、移除重複通用規則、加入安全架構說明
  • .gitignore.claude/settings.local.json
  • Commit 成功push 成功