問答備忘 技能改造

方案二:動態參數傳入機制

建立時間:2026-04-09 08:10 | 來源:主公與由貞對話

📌 問題背景

主公提問

方案二:動態參數傳入是怎麼設置?先說通則,再以 upload-html 和 updatememo 為例進行解說。

📐 通則:動態參數傳入機制

核心概念

Skill 執行時,由貞在 SKILL.md 中定義參數格式,主公觸發時附帶參數,由貞解析後代入指令。

觸發格式

執行 {skill名稱} {參數1} {參數2}

# 範例
執行 upload-html my-blog
執行 upload-html my-blog ./dist

SKILL.md 參數定義區段

## 參數(Parameters)

| 參數位置 | 名稱         | 必填 | 預設值              | 說明             |
|---------|-------------|------|--------------------|-----------------  |
| $1      | PROJECT_NAME | 否   | 讀取 .wb-project    | 部署目標專案名稱  |
| $2      | SOURCE_DIR   | 否   | 當前目錄 .          | 部署來源資料夾    |

若未傳入參數,依序嘗試:
1. 讀取 .wb-project 中的 PROJECT_NAME
2. 使用預設值
3. 詢問主公確認

由貞解析邏輯

1

主公說:「執行 upload-html my-blog」

觸發詞後的第一個詞即為 $1

2

由貞解析參數

$1 = "my-blog"(專案名稱)

3

代入指令

--project-name my-blog

4

執行

wrangler pages deploy . --project-name my-blog --commit-dirty true

🔧 範例一:upload-html 改造

改造前(Hardcode 版)

# SKILL.md 內固定寫死:
npx wrangler pages deploy . --project-name wholistics --commit-dirty true

改造後 — 新觸發格式

執行 upload-html                      ← 無參數:讀 .wb-project 或詢問
執行 upload-html my-blog              ← 指定專案名稱
執行 upload-html my-blog ./dist       ← 指定專案名稱 + 來源目錄

SKILL.md 新增參數定義

#名稱必填預設值說明
$1PROJECT_NAME.wb-project 或詢問Cloudflare Pages 專案名稱
$2SOURCE_DIR當前目錄 .部署來源路徑

由貞執行時的動態指令

# 有參數時
npx wrangler pages deploy {SOURCE_DIR} --project-name {PROJECT_NAME} --commit-dirty true

# 實際代入範例
npx wrangler pages deploy . --project-name my-blog --commit-dirty true

🔧 範例二:updatememo 改造

改造前(Hardcode 版)

# SKILL.md 內固定:
- 複製到 wh-all-deploy/
- 部署到 wholistics 專案
- 連結固定為 wholistics.pages.dev

改造後 — 新觸發格式

updatememo                            ← 無參數:讀 .wb-project
updatememo my-blog                    ← 指定專案名稱
updatememo my-blog ./deploy           ← 指定專案名稱 + 部署目錄

SKILL.md 新增參數定義

#名稱必填預設值說明
$1PROJECT_NAME.wb-project 或詢問備忘部署的目標專案
$2DEPLOY_DIR./{PROJECT_NAME}-deploy本地部署目錄路徑

由貞執行時的動態推算

# 動態推算相關路徑
DEPLOY_DIR  = C:\Users\...\{PROJECT_NAME}-deploy\
BASE_URL    = https://{PROJECT_NAME}.pages.dev
INDEX_FILE  = {DEPLOY_DIR}\index.html

# 複製備忘
Copy-Item "tomemo-xxx.html" "{DEPLOY_DIR}\{編號}-xxx.html"

# index.html 連結動態替換
href="https://{PROJECT_NAME}.pages.dev/{編號}-xxx.html"

# 部署
npx wrangler pages deploy {DEPLOY_DIR} --project-name {PROJECT_NAME} --commit-dirty true

📊 方案二優缺點

✅ 優點

  • 改動最小,只修改 SKILL.md 說明
  • 立即可用,無需額外配置檔
  • 適合偶爾切換專案的情況
  • 學習成本低

❌ 缺點

  • 每次需記得傳參數
  • 多個 Skill 需分別傳,較麻煩
  • 無法完全自動化
  • 頻繁切換時容易出錯

🎯 方案一 + 方案二 疊加最佳實踐

# 優先順序
參數 > .wb-project > 全域預設 > 詢問主公

→ 有傳參數?直接用
→ 沒傳?自動讀 .wb-project(方案一)
→ 沒有配置檔?用全域預設
→ 全都沒有?問主公

✅ 最佳實踐:兩方案疊加使用

日常工作:進入專案目錄(有 .wb-project),直接說 updatememo 自動識別
臨時切換:updatememo other-project 覆蓋配置
結果:既能全自動,又保留手動覆蓋彈性,學員零負擔上手

📋 後續行動

修改 upload-html SKILL.md

新增參數定義區段,支援 $1=PROJECT_NAME、$2=SOURCE_DIR

修改 updatememo SKILL.md

新增參數定義,動態推算 DEPLOY_DIR、BASE_URL、INDEX_FILE

建立 project-init Skill

學員執行後自動生成 .wb-project,一次配置,後續所有 Skill 自動識別