Community生產力與協作github.com

訓練計畫技能

制定、展開和調整最多12週的訓練計畫與課表,整合功能性力量、跑步和游泳。用於健身計畫、混合訓練或hybrid training、月週安排、單次訓練、外部計畫適配及中斷後重入;不用於備賽或臨床診療。

訓練計畫技能 是什麼?

這是一個名為「Playwise Training Plan」的 AI 技能,專為開發者與 AI 代理使用者設計,用於生成和管理最多 12 週的綜合訓練計畫。它整合功能性力量、跑步和游泳,並支援四天、三天或兩天的訓練結構,以長期健康與全面體能發展為核心,而非比賽準備或專項成績。此技能區分「計畫先行」與「反饋觸發調整」,提供明確的劑量、強度與遞進規則,並嚴格限制計畫長度(如 12、9、8、6、4 或 3 週)。它支援 Claude Code、Cursor 等平台,透過結構化檔案(如 plan.json)與自訂腳本(如 validate_plan.py)來確保連貫性,並處理限制、器械配置與多項目編排。關鍵限制包括:最多 12 週、不進行減量或峰值、以及五條獨立負荷線(力量組次、跑步分鐘數、游泳淨量、衝擊次數、恢復占用)的管控,同一階段最多僅一條線可明顯增加。

相容平台✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/mrZhangTianye/training-plan-skill/tree/HEAD

Installed? Explore more 生產力與協作 skills: steipete/gemini, steipete/gh-issues, steipete/skill-creator · View all 6 →

在你喜歡的 AI 中提問

開啟一個已預先載入此 Agent Skill 的新對話。

說明文件

Playwise Training Plan

以長期健康為前提,透過綜合訓練建設全面身體能力,提高應對生活挑戰和參與不同運動的能力。「六邊形戰士」是長期方向,允許多項能力同步提高,也允許階段性重點發展部分能力、維持其他能力;功能性訓練承擔通用身體能力的建設與補強。合理體重與體成分是長期觀察結果,訓練為其提供支持。

這個體系服務誰

服務的人:把訓練當長期健康與生活能力的人;同時玩幾項(力量+跑+泳+球),沒有一項要備賽;目標是什麼都玩點、不受傷、能應付生活裡的體力需求;追能力面寬,不追單項成績。

不服務的人——說了也不做,直接指出超出範圍:

類型特徵
備賽的人馬拉松、鐵三、賽艇、比賽——要 taper、要專項峰值、要週期波動
專項化訓練者要備賽、要 taper、要專項峰值、按項目週期波動。跑次/泳次本身不構成判據:每週跑 4–6 次、泳 3–4 次也可以只是綜合練,按訓練史與總量排
要成績突破的人目標是名次、配速、成績達標
需要臨床診療的人診斷、影像判讀、康復處方

一句話判據:問「你會為某一場比賽調整訓練嗎?」答「會」就不在畫像內。

為什麼劃這條線:本體系的骨架是「綜合能力+不備賽+長期健康」,上限 12 週、不做 taper、不做專項峰值、用疲勞驅動削減而不是週期化波動。專項化的需求會把這三根支柱全部推翻——硬套的結果是兩頭都不討好。遇到這類需求,說明超範圍,不要給「打折版」的專項計畫。

預設用戶能正常完成所安排的訓練;Skill負責給出足夠刺激、明確劑量、預設遞進及可恢復的組合,使正常跟練有一條通向目標能力提高的路徑。不能用「視情況調整」代替本次建議,也不能把填寫檢查結論當作效果保證。

計畫內不留選擇位:課表裡的動作、組次、負荷選擇方法、恢復與輪換都應明確。保留等價動作時固定輪換順序;未知實測負重不編造,按目標努力與首組選擇方法開出可執行處方。交付前消除需要執行者臨時二選一的處方空位。

這是可獨立使用的訓練體系。常規排課使用包內原則、決策規則與動作資產;交付檔案和課表不展示外部作者、教材、論文、引用編號或原始檔案路徑。

技能與個人內容分界——三處各管一攤,不要互相爬過去:

  • 技能(本包):可複用的方法、動作庫與其 default_dose、編排與劑量策略、校驗與渲染腳本、輸出型態。不寫任何具體人的可用時長、歷史重量、器械與劑量偏好;庫裡的建議重量是通用預設值,不是給某人的處方。
  • 計畫檔案(plan.json 一類):這一個人、這一個週期的事實——可用時長、場地池長、目標與起點、階段安排、本次劑量與參考重量。
  • 用戶的歷史記錄:使用者真實完成的重量與反應(TR)。格式示範 TR 36kg×8(合成示例,非真實記錄) 為本文重新構造的假資料;真實計畫須使用本人的有效記錄和實際日期。

交付管道不進本包:把計畫落到 Notion/飛書/某個庫的腳本、庫 ID 與頁面 ID,以及「某人習慣手改表格」這類操作史,都屬於使用者的私有環節,不寫進本 skill——它們綁死某一個人的帳號與頁面結構,換個人拿到跑不起來。本包到「渲染稿/匯出檔案」為止;確有需要就放在使用者自己的工具目錄,不進 scripts/、不進 references/,也不降級成「可選工具」留在包內。做通用化時這一層是原地刪,不是搬到別處。

排課撞到時間、器材或負荷取捨時回到用戶條件裡算,不把個人約束寫進技能當規則,也不拿技能的通用預設值頂替用戶的真實資料。

主流:計畫先行,回饋觸發調整

做計畫是本 skill 的主任務,運動判斷只在用戶報問題時啟動。

  1. 先做好計畫:按起點和已知條件,一次寫清各週劑量、強度、休息與正常遞進。
  2. 沒有回饋:照預設路徑繼續——不逐週索要「無不適、無殘留、已穩定」的確認,不把預設完成當成已記錄的實際完成。預設正常完成只是排課假設。
  3. 收到回饋:出現完成困難、不適或條件變化,才調整尚未執行的部分,保留歷史。

加量(加重、加組、加距離、加密組、壓縮休息、加頻次、進下一階段)仍先過加量閘門——閘門是被動攔截:沒報問題就不攔,報了就攔。它不構成「每週必須匯報狀態才能往下走」。

操作流程

  1. 判斷新建、展開、適配、修改或解釋;複用已有目標、條件與結構。
  2. 新建與適配時必讀這五份:資訊收集、訓練哲學、設計原則、編排及處方與遞進;只要涉及傷病、疼痛、手術史或動作受限,先把限制下的訓練讀完再排課——不是出了事才查。
  3. 按訓練內容讀取功能性力量課或跑游課結構,沿能力、領域、動作族、具體條目的四層動作庫,從動作與訓練單元選擇可執行資產,並按選擇與收益核對動作貢獻。完整功能課落實具體部位的滾壓、拉伸、糾正、激活、原地動作準備、行進技能、專項速度/跳躍/藥球、力量房爆發與核心、力量組合及能量代謝(爆發動作的力速曲線分區與舉重衍生負荷帶見力速曲線與舉重衍生);按康復支持與糾正把支持任務放回這些環節,獨立週末課用於低成本拉伸放鬆。因項目分工、階段或時間而改編時,給出具體替代與負荷判斷,不把刪去的環節說成已經完成。技術動作選已熟悉版本;低技術基礎準備可按正常完成假設開出明確可控處方,不捏造已掌握觀察。不把候選的模糊名稱直接當處方,也不生成動作教學或診療課程。
  4. 給出具體劑量、強度、恢復、執行要點和結束條件,並預先安排各週遞進。正常完成即按既定路徑推進;日誌、額外測試或逐次證明不作為進階門檻。收到回饋或條件改變時讀取變更邏輯,修正最小必要範圍,保留已完成歷史。時間變化涉及多個項目時走其中的跨項目取捨:先給推薦與備選、標清代價,由用戶定方向,再重排;不替用戶砍項目,也不等用戶自己給出砍法。縮減順序見時間不夠時怎麼減:換日 → 減課次 → 減量,省時只許減量、不許提密度或強度。
  5. 按資料結構保存計畫,按自校驗判據檢查目標刺激、起點、遞進、項目取捨、實際時間和層級一致性;再執行scripts/validate_plan.py。錯誤先修正,具體待審事項須有相應處理,不能只寫「通過」。按輸出規範渲染或匯出;修改時執行scripts/compare_plans.py保留實際差異與影響。

設計約束

  • 最多12週;支援的計畫長度只有 12/9/8/6/4/3 週,其餘(如 10、11、13 週)直接拒絕——回退在塊內做、總長不變,別靠順延。12週=四個3週階段,9週=三個,6週=兩個,8週=兩個完整階段+末階段壓到 2 週(壓縮末段,不拉長前段),4週=單階段加冗餘週或 4×1 維持循環,3週=單階段。
  • 12週採用四個3週階段(階段1 上量→階段2 上強度→階段3 力量接爆發→階段4 力量耐力+鞏固;第4階段不 peak,見四天結構)。週期單元一律叫「階段」,不叫「相」,也不叫「項」;編號寫「階段 1–4」,行文用「每階段/各階段/階段間」,不寫「相 1–4/每相/後續相」。舊稿裡凡出現「四相」的按此改。週期內全部用於訓練,無測試課、測試週或測試前減量。預設週內與週間都有負荷或側重變化,不固定三週加量加一週降載。

階段劑量給滿,不排逐週四步階梯:每階段一個區間(如容量課 3×8–10),W1 在低端、W2 在區間內取一檔、W3 保持,三週各寫確定劑量,正常完成照表走。計畫先行:先把 12 週(或所選長度)的預設劑量與階段銜接一次給全,不把 W2/W3 的取值留給執行結果決定;收到回饋後才改未執行週,不追溯已執行週。劑量可以寫滿,負荷起點不能編——組×次、跑多少分鐘、泳多少米必須逐週落實到數;參考重量/配速拿不到實測時寫「待補」,不用通用預設值冒充實測;「待補」只能落在這兩格——組次、目標 RPE、組間休息、首組如何選重、跑泳的強度描述一律寫滿,不能跟著一起待補,否則沒歷史公斤數的人拿到的是半份計畫。區間怎麼用見計畫修訂。四步階梯與塊長綁定,塊長一改就退化「加兩週降一週」。預設處方不等於虛構執行結果。

區間照模板寫,不自造單值:模板給的是「3×8–10/每動作 24–30 次」,就照區間寫;從區間兩端各挑一頭折成「24 次」或「30 次」,是把區間讀成單值的自造。區間用來寫方法,執行週仍要定值——W1/W2/W3 各落一個數(2×8、3×9、3×10),不能兩週都留著區間。組數總量不是處方指標:先定動作×組次,單課組數=當日動作數×組數,是排完之後的結果,只用來估時間(含熱身與核心)。設一列「每週組數區間」反過來管動作,就是把模板用反了;真要核對就把算出來的組數寫在表下當核算,不當門檻。

回退與重做在塊內吸收,不順延總長:某週不達標就降為保底週(見計畫型態),階段末判定為「重做」時佔用下一階段的位置——總長仍是 12 週,13 週一類非標準長度直接判不合法。

  • 按生活與運動需求、目標能力及執行條件分配功能性力量、跑步和游泳的任務與主次,項目配置隨目標改變。主休息日優先週日,工作日保持訓練,六日內輕重錯開。游泳、熱身中的跑跳和力量課末代謝訓練均計入總負荷。
  • 耐力發展讀取有氧總量與進階,分別核算主跑段、淨游量、計畫中等當量及整課耗時。低起點用具體週間路徑建立總量,不能把力量、準備和池邊休息湊作有氧;較高基線者按專項需求設計新增刺激。
  • 適用力量明確採用剩餘次數標尺指導選重,常用RPE7約餘3次、RPE8約餘2次、RPE9約餘1次(力量階段主要動作用檔);課表寫出錨點。RPE不等於最大力量百分比,參考重量不是固定完成要求。DUP用穩定主力動作在相鄰訓練課改變次數與相應負荷;聲明的主力錨點保存於design_context.strength_waves,工作組標記wave_role。換動作、換標題或階段進階本身不能證明DUP;不要求所有輔助、爆發或準備任務都波動。
  • 為發展目標設計實際刺激與遞進;維持目標有對應刺激,暫緩或未評估項明確標記。不能用任意能力標籤製造覆蓋,也不預設每項能力都要獨立訓練。
  • 動作庫覆蓋功能性力量、跑步、游泳及巨觀支撐任務,覆蓋表見references/training-library/coverage.json。每項所需能力有適用資產或明確缺口,不能把庫中存在某動作當作本週期已經得到發展。預設主課優先高貢獻、可遞進且時間、技術和恢復成本合理的動作;局部孤立動作有明確任務時再判斷,不為湊行數加入主課。
  • 預設能完成不等於自動掌握陌生技術或已有運動限制已獲許可。選擇已掌握替代,已明確限制進入編排;異常反應出現時停止相關內容並重新判斷。
  • 先出通用編排,再落個人化:第一版按健康成年人的通用處方排,不預設傷病、器械缺失、可用時長;結構定稿後才做替代與降級。例外:已登記限制(或明顯疑似)時不走這條——先套限制篩一遍動作與總量,再按頻次鋪課;未登記也未評估的,按最保守一檔排,等評估結果再放開。順序反了,第一稿就是一份帶禁忌動作的健康人處方。兩件事混在一版裡改,結構問題和個體限制會攪成一鍋。用戶按頻次逐個評審時(四天→三天→兩天),一次只鋪一個頻次、一堂課,該輪確認後再繼續;用戶直接要整份課表或明確委託選結構,則按 intake 一次交付整份,不逐堂追問;每堂課前說清「哪些項三週遞進、哪些三項固定」,以便核對預設遞進。

結構模板:按頻次選一份,不混用、不拼接

  • 四天結構:週內交替(2 下肢日+2 純上肢推日)、四階段遞進(階段 1 上量→階段 2 上強度→階段 3 力量接爆發→階段 4 力量耐力+鞏固,不 peak)、日定位。
  • 三天結構:骨架真身(Core 兩行/Pair 一組/Tri-set 三格)、重-中-輕強度梯度、只能取示例表內動作的歸類池、力量軸+模板軸兩軸遞進;三天只有第一階段,後續階段屬移植。
  • 兩天結構:兩組主項結構、預設無輔助層(完整整合分支的唯一例外須寫全組序/工作長度/恢復)、完整兩天課、缺口清單與「擴項規則失效」的遞進修正。

多項目編排:先定骨架掛載,再算強度額度

  • 同期訓練:干擾閾值、每週高強度課預算(硬上限 4 次、登記限制時 3 次,腳本會查)、項目互斥矩陣、跑 0–7 次梯度與四/三/二練×跑的週曆拼法、兩檔配比(力量為主/混合,不產生「主導項目」)。
  • 多項目編排:無專項者的骨架+掛載、兩本帳(強度/天數)、恢復日三型態與計數口徑、編排七步、球種對力量重點的影響、同日順序、一天兩練規則、算例。

功能性力量是底,專項是它的使用場景——不按項目輪流分「發展名額」:先問用戶對每項運動的想法(興趣參與/補體能/想改善某個具體環節)+每週願給多少時間;問不清就按維持排並在稿上標「未確認」,不猜配比、不替用戶定角色。力量課貫穿週期、按自身組次與負重遞進,不因輪到跑或泳就讓位,也不因自己漲了要求跑泳停。控增量靠負荷線,不靠給項目排隊:「本週跑、下週泳」這類輪換表是錯的讀法,一被這麼寫就回退重排。

五條獨立負荷線:力量組次(含負重錨點)/跑動分鐘數/泳淨量/衝擊接觸次數/恢復佔用。同一階段最多一條線明顯上抬,第二條要抬須寫明理由(review 級,不報 error)。維持項不是零負荷——維持的力量課照樣佔恢復資源,「某項維持」不等於「另外兩項可以放心加」。上抬按課表裡寫下的劑量判,不按目標層怎麼措辭:拿每階段首末週的力量組數×次數、跑動分鐘、泳淨量作量,目標 RPE 均值作強度,主項休息作恢復;量過 10%、RPE 漲 0.2、休息壓到 95% 以下任一條成立即算這條線在抬。stage_load_lines() 出這張對照表,同階段超過一條線抬就報 stage_lines:<block>(review),要求寫清主次與另一條為什麼也抬;目標寫「發展」但每次課劑量沒動,這條線就是平的。

「只抬一條線」不等於「同一條線可以連漲整輪」:同一條線連續 2 個階段以上都在抬報 stage_lines_streak;相鄰兩個抬檔點之間至少穩 3 週,只隔 1–2 週就連抬報 ramp_interval(訊息裡帶兩個週次與兩個量)。合法寫法是階段內三條線全平、抬檔只落在階段邊界(示例:跑 62/75/88/100 分鐘每週,每檔穩 3 週)。階段內全平時要說清哪條線在下一個邊界接棒,否則「誰都還沒動」會被讀成整個週期沒遞進。兩種型態不報「階段內加量」:① 階段首週 1–2 組→次週 3 組、次數與 RPE 不變,那是原表 Phase 1 自己的入門週節奏(_is_phase_intro() 記為 prescribed_intro,改用次週作比較基線),不是自主加量;② 容量日與較重日次數相同(Phase 2–4 兩日主項同為 5 次)時,日波動由目標 RPE 承擔,design_checks 認「次數不同」或「目標 RPE 明確更高」二者其一——缺這條,示例從換階段那週起會整段報「較重課與容量課未給出明確較低重複區間」、blocked_weeks 一路鋪到末週。

階段銜接單列一次,基線→首週也單列一次:只比每階段首末週,會整段漏掉「階段內三周全平、抬檔全壓在邊界」這一類——stage_load_lines() 的 handoff/handoff_rising 報 stage_handoff:<block>,未在 design_context.review_resolutions 寫明是抬檔還是疊加時,actual 模式不出表;只比 W1 之後的抬檔點,會漏掉基線到 W1 這一跳(全表最大的一步常在沒人看的位置)。基線→首週按頻率判、不按百分比判:baseline_entry_check() 在跑次增加時只核單次是否延長(單次最長 ≤ 基線單次即通過,加頻率本身不是加量),跑次不變而週量漲幅過 10% 才報。三套口徑不能共用一個名字:主跑段合計(各課最長單段相加,不含起跑與收尾)/跑動類合計(按動作類型求和——起跑、收尾若也編成跑課類動作就會被算進來)/整課(含快走與冷身),分三句寫;40% 上限、抬檔判定、銜接檢查都只能用「含過渡的整週跑量」這套。報對照表時列名寫準:把按類型求和得到的數標成「主跑合計」,同一週就會和專項教練的主跑段數差十幾分鐘,看著像兩家各錯一半。摘要(mini_goal)裡的分鐘數核的是本課主跑段(最長單段),不是整課、也不是含起跑收尾的跑動合計——口徑取錯,幾十節課會全報「不一致」,白改一輪;這類漂移要腳本掃全表,人工抽看幾節必然漏掉只差 1–2 分鐘的那批。基線的跑次/單次最長/週量要落成 baseline_basis 的結構化欄位(run_sessions_per_week/run_longest_minutes/run_weekly_minutes/minutes_basis),只寫在 observation 散文裡,下一步沒人能核,跨口徑相除還會算出 +55% 這種假漲幅。

能算的欄位就別手寫:單次摘要(mini_goal)與整課耗時都由劑量生成(session_summary.mini_goal()/duration_model.apply()),手寫副本與處方並存時改一處必留另一處。摘要裡寫了數字就是可核對聲明,與劑量不符報 mini_goal 與單次劑量不一致(review 級,附生成值)。改組次後的連帶清單(set_sequence/時長/摘要/context_hash/階段表)見資料結構,漏一項就多一輪返工。context_hash 不手填、也不留舊值:動過主項組次或遞增組後,未重新整理的決議會讓 global_gaps 報 stage_handoff:<block>: 需在 review_resolutions 記錄當前 context_hash…,並連帶堵住出稿門。刷法是重跑 design_checks.check(plan, library())(library() 從 validate_plan 導入),把 requirements 裡的 review_id → context_hash 逐條回填 design_context.review_resolutions 再跑全量測試;理由文字不動,除非抬檔事實本身變了。

描述欄位要照課表實際劑量寫:progression_condition/purpose 裡寫「本階段由 8 組升到 12 組」之前,先讀該階段 items 的 sets/reps/target_rpe 確認真是這麼排的。把教練的目標數字直接轉述進描述、而課表沒實現,就是一份自己跟自己對不上的計畫——評審會當成「聲稱已落盤」打回,自己複核時也容易被這句騙過。沒落地的遞進只寫在計畫外的備註裡,不寫進計畫描述。

衝擊接觸自己單獨算一行:組數表與跑量表都看不出它。週接觸量=contacts_per_rep × sets × reps × 側數 逐日累加;與跑動分鐘並列核對、不相加,也不設「兩條不能同升」的硬規則。判某階段衝擊漲沒漲先按這個式子算出來再下結論,不憑「換了組織方式」推斷——把獨立增強式段移進配對組常是持平或下降。

處方調整與表現改善分兩欄記:同一處方下表現變好是訓練結果,不改處方;只有加組、加距、提目標強度、進下一階段才算處方調整。混成一欄既看不出基礎訓練的收益,也看不出專項是否另外加碼。

單項處方:跑與泳各自的起點、遞進與上限

  • 計畫修訂:計畫是計畫、執行是執行——本包不規定怎麼練怎麼記,只管拿到結果後計畫怎麼改:週內判定、階段末判定、塊內回退位、只改局部不重寫計畫。
  • 跑課編排:四檔起點處方、I/R 頻次跟球走、遞進(含單次最長跑按週跑次分檔:4+次 30%/3 次 40%/2 次 55%/單跑不適用,>64 km 收到 25%,腳本會查)、跑姿三條、強度描述、典型週曆。
  • 游泳編排:按泳姿與具體任務確認起點,兩檔努力(不測 CSS),預設單變數遞進及異常調整、真實池長與游距、器材和既有限制;示例劑量不是通用成人處方。

支撐判斷:先看限制與器械,再落到動作名

  • 限制下的訓練:長期/階段性兩類限制、七個動作族×三檔、癒合三期(按組織與次晨反應分期,不按日曆)、3/10 疼痛只作當日上限、衝擊支路三類(明確禁止/允許但條件未足/當次發作,三支不可混成一條)、紅旗清單、轉診條件。
  • 器械配置:器械清單與逐項替代(可提/降級/真缺口三級)、膝主導功能性排序、四檔配置下八個主項位怎麼填、無重量時的遞進六法。
  • 動作中英對照:術語基線、書中未收錄動作的標註;「現名」一列就是動作庫 name 原值,寫課表按它寫,否則表現列按名匹配會串。
  • 對照表每一行要帶庫 id、要顯式寫 not_in_library,改完跑 scripts/check_exercise_names.py:它逐行核「id 在不在庫、表裡名字等不等於庫 name、有無 id 卻自稱現用名」,並給出可補的 id;寫了 not_in_library 的行單列成「已聲明庫內無」、不計為錯誤,表頭行跳過。兩種狀態之外沒有第三種:沒 id 又不聲明庫內無的行不算「現用名」,腳本會當錯誤報出來——庫裡沒有的移動技能(交叉跳、側向爬一類)寫成現用名,等於替庫造了一個查不到的名字。聲明「已在動作庫與本表同時執行」之前先 grep -rn '舊名1\|舊名2' SKILL.md references/:改表的行容易,正文與結構檔案(兩/三/四天結構、functional-session、gym-equipment、limitations、multi-sport)裡同一批名字還有幾十處,只改表卻宣布統一,下一輪評審一 grep 就會發現表比正文新。
  • 判庫內缺項須按定義檢索:同時查 id/name、english_name 和動作定義,核對 canonical 與 runtime 兩套資產及同義名。零命中才標 not_in_library,不得以近似動作替代缺項。報告關鍵詞、範圍與結果。
  • 補新條目前先定中文名,分「有出處」與「建議譯名」兩檔:有公開中文用法的直接寫(深蹲保持/靜態深蹲、側向熊爬),查不到統一譯法的標「描述性建議譯名,待圖示核對」(藥球觸趾深蹲一類),不冒充行業標準。新名與庫內同族對齊:庫裡的 crawl 只有熊爬,橫向變體就叫「側向熊爬」而不是「側向爬行」。與臨床/測試術語撞名要寫明區別:「單腿交叉跳」在康復文獻裡是 crossover hop test 的測量動作,跟熱身裡的交叉跳不是一回事,不區分會讓一個名字指兩個動作。
  • 腳本報的行數先扣掉解析假象,再談有多少欠賬:對照表的表頭行會被當成資料行(「現用中文名」那格就是表頭名)、一行裡並排寫兩個 id 的合併行會被拿同一格名字核兩次——這兩類都報成「名稱與庫不一致」或「無庫 id 卻自稱現用名」。修法是改腳本跳過表頭、把合併行拆成一行一 id,不是回頭去改動作名;先扣掉這兩類再報數,否則報出去的條數裡有一半是解析器自己造出來的。給表加一種新的合法狀態,同一輪就把校驗器改掉:not_in_library 只寫進表、腳本仍只認「有 id/無 id」時,整張表永遠紅,而且每一輪都被當成新欠帳重查一遍。合併行本身就是串台源:一行掛兩個 id,按名匹配時兩個 id 會爭同一格名字,測試與渲染各取一個,看著都對。
  • 問題統計說明口徑,顯示名變更使用 alias:區分動作條目、器材行、表頭和已聲明庫外條目。庫 name 是匹配鍵;alias 不參與匹配,改名須同步校驗與引用。
  • 動作名回到原文核,不自造:中文名一律取書內譯名或包內已統一的名稱。自造名會撞上書本身的立場(自造「手槍蹲」撞書反對手槍式深蹲、自造「保加利亞」撞正名後腳抬高分腿蹲、自造「下砍/上舉」撞下劈/上拉)。熱身與糾正段尤其不能按英文詞直譯:Inchworm 字面是尺蠖、書裡叫毛毛蟲;Leg Cradle 直譯成「腿搖籃」也不對;Cook hip lift 與 Leg lower 也不能中英混寫。這一段的動作在書裡只有一張準備段表,英文字面與動作型態經常脫節(shuffle 是拖步不是「跚步」),一律按中文版原表寫,完了補進動作中英對照第十一節。核名要逐頁對原文,憑印象列名必錯;書中沒有的動作(地板臥推、北歐腿彎舉)保留但標「包內補充」,不得說成書裡有的。包內已統一的資產名稱優先作為匹配用語,以動作中英對照為準。
  • 結構結論寫入 references 並更新入口指標:修改完成須讀回檔案、核對差異並執行相關與全量測試。討論結論不代替最終檔案內容。

版本號寫在 SKILL.md 前置欄位:當前 1.0 公開源包。plan.json 的 version 是整數格式修訂號,schema_version 是格式版本字串,不與包版本混用。

改稿與定稿紀律:

  • 評審意見不等於修改授權:專項教練、復健師、顧問乃至主教練說「撤回這批」「按我說的改」,都只是建議;動 SKILL.md 與 references/ 之前先把要改的清單給用戶看、拿到一句「改」,再成組落盤。一次落完,不邊改邊報。
  • 合併同輪修改範圍:列明檔案、位置、理由與連帶影響,按已授權範圍成組修改,一輪改動統一記錄版本。
  • 定稿後保持可追溯:僅在授權範圍內修改,保留版本與實際差異。實際訓練收益和恢復能力須由執行結果判斷。
  • 概括句與明細表必須逐項對帳,對不上就刪概括句:「原組數減一組」「每週三次有氧」「這堂課 20 分鐘」這類一句話概括,明細改過之後極易與新數字矛盾(減一組卻寫著 5→3 組、說三次有氧而課表排了四次、間歇課實際 30–40 分鐘)。定稿前把每一句概括拉回它對應的表逐項核;不一致時保留明細、刪掉或改寫概括句,兩句並存讀者無法判斷哪句是真的。
  • 撤回一批內容時,同時改掉生產它的那條規則:數字被刪掉而寫出這些數字的規則原樣留著,下一輪評審會照著同一條規則把數字造回來。撤完先 grep 一遍該內容的關鍵串確認 0 命中,再讀那條產出規則本身是否也該反向改寫。
  • 改完在 CHANGELOG.md 記一條:哪版撤了什麼、為什麼撤、影響哪些檔案。沒有這條,下一輪只能靠「誰記得」來判斷,撤過的東西會被當成遺漏補回去。
  • 以版本差異報告改動範圍:使用檔案清單、內容差異與校驗結果,不憑記憶宣稱完成。

代算結果註明方法與責任邊界:區分來源事實、獨立計算與設計選擇;同一判據保留一致閾值和明確適用範圍。

同一量結果不同先對齊口徑:核對輸入、單位、過渡時間和捨入方式,列出未解決差異,再確定採用值。

絕對數值進規則前先過一道判據:任何「每次最多加 X 分鐘」「超過 Y 分鐘就轉檔」這類數,先自問起點不同的兩個人是否都成立——60 分鐘週量的人加 15 分鐘是 +25%,300 分鐘的人加 15 分鐘是 +5%,一個數管不了兩個量級。不成立就降為「本示例參數」,寫明觸發點由使用者的比例檔決定,不寫成通則;由本包自定分配倒推出來的數尤其不能升級為規則(如從「三跑 40% 檔下單次會超 50 分鐘」導出「120 分鐘必須加跑次」,是兩層自造疊在一起)。同理,比例上限已經管住單次長度時,就不要再疊一個固定分鐘數——重複的閾值遲早互相打架。

耗時帳與可行性結論必須同一口徑:說「X 分鐘排得下」之前,固定塊(準備+爆發+核心)、遞增/熱身組、工作組與組間休息、換動作要一次算完;先給一個不含遞增的數、再補一句「加上遞增多 6 分鐘」,結論已經和自己打架。比兩個方案誰更省時之前先對齊工作量:組數或時長不同時,差異來自工作量本身,不能歸因給方案結構(拿 7 組比 9 組得出「減模式更費時」、拿 6 組比 9 組得出「保四類裝不下」都是這一類)。正確寫法是「預算 ↔ 能排的組數」一張對照表,讓兩個方案在同一預算下比覆蓋與厚度。整課耗時由劑量算,不寫常量:scripts/duration_model.py 是唯一實現(單動作=組數×單組工作+(組數−1)×組間休息;單組工作優先取 RPE≥7 的計次×5 秒,其次資產表的整組工作秒(備註已寫明「約 9 秒/次」「每次保持 10 秒、共 6 次」一類的直接採用,別再用逐次估算覆蓋它),再次時長欄位,技術計次×4 秒;per_side 翻倍),apply() 寫回 items→modules→session 三層;校驗裡「處方量超出分配時間」必須調同一個函數。計距按動作分速度,不共用一個常量:行進/橫向走與踢腿行進 0.8 m/s、負重行走 1.0 m/s、加速跑 3 m/s 上下(10 米 strides 約 3 秒)。一律按 1.3 m/s 會把 20 米行進算成 15 秒、把 strides 算成 8 秒,兩頭都錯。兩套組工作估計並存時,一邊算出「每節超 90 分鐘」、另一邊算出「都在 90 內」,先錯的是結論不是資料。24 節課共用一個手寫常量,等於把真實浮動藏起來。兩個實現每節只差 0.5–1.5 分鐘時,別先歸因「換動作過渡」或「逐項四捨五入」——這兩類差不齣這個量級;打開對方的腳本逐項 diff 單組工作秒,差異幾乎都落在那一層(整組碼表 vs 逐次估算),定位到具體動作再判誰對,別在兩種可能的解釋裡選一個就當結論。超時不許壓縮有症狀部位的準備組來湊:遞增/熱身組解決的是「沒充分準備就直接上工作組」的安全性,不屬於可裁容量;補遞增組與砍時長分開算,補完仍超就如實報超時。審劑量時按動作逐個點數遞增組(RPE4 那幾組)——某個主項整輪 0 組就是沒有安全帶

(… 原文截斷)

相關技能