第三方遊戲投稿
RehabBuilder 匯出根目錄含 index.html、settings.json 與 score.json 的原生套件;遊戲自行計分,Hub 驗證並投影結果。舊版 jsPsych 投稿仍可沿用。
適合獨立開發者與單一 HTML/ZIP 遊戲。Developer documentation
了解 RehabBuilder 原生套件與舊版 jsPsych 套件的投稿規格、安全檢查及人工審核流程。
Overview
第三方遊戲可使用 RehabBuilder 製作原生 HTML/ZIP,或沿用 jsPsych 8 與平台橋樑。原生投稿包含 settings.json 與 score.json;內建遊戲仍由倉庫貢獻者維護。
RehabBuilder 匯出根目錄含 index.html、settings.json 與 score.json 的原生套件;遊戲自行計分,Hub 驗證並投影結果。舊版 jsPsych 投稿仍可沿用。
適合獨立開發者與單一 HTML/ZIP 遊戲。位於 apps/rehabtrainerhub/games/{gameId}/,必須同時擁有 settings.json 與 score.json,並由 OfficialGameShell 註冊。
適合修改本倉庫與共用 Hub 結果畫面。Quick start
原生遊戲可用 RehabBuilder 視覺化製作並匯出 Hub 相容套件。正式投稿仍須檢查活動內容、原始碼、安全限制與結果解釋。
定義任務需求、刺激參數、輸入方式、停止條件、彙總指標與用途限制。
在 Builder 製作與試玩活動,匯出含 settings.json 與 score.json 的套件;公開服務仍須部署。
確認每個結果欄位的公式、單位、分母與可能混淆因素,並標明尚未驗證的用途。
Hub 套件須含 index.html、settings.json 與可閱讀的原始碼;檢查正常完成、中止與結果數值。
確認雙語、鍵盤/觸控、無外連、無個資、未混淆、沒有自行打包平台 runtime,再建立新版本投稿。
以下本機環境與 AI Agent 指引供倉庫內建遊戲貢獻者使用;一般投稿者不必安裝 SDK。
前往本機開發環境Local environment
這些工具只需安裝一次。NVM 管理 Node.js 版本;Node.js 會提供 npm;Git 保存本機版本歷史;GitHub 與 GitHub CLI(gh)負責遠端倉庫、登入、fork 與 pull request。
先用 WinGet 安裝 Git 與 GitHub CLI,再從 NVM for Windows 官方 Releases 下載並執行 nvm-setup.exe。若電腦已有獨立安裝的 Node.js,官方建議先移除,以避免 PATH 衝突。安裝後重開 PowerShell;nvm install/use 通常需要系統管理員權限。
# PowerShell
winget install --id Git.Git -e --source winget
winget install --id GitHub.cli --source winget
# Download and run nvm-setup.exe from the official Releases page,
# then reopen PowerShell. Use an Administrator shell for nvm install/use.
nvm install lts
nvm use lts
npm install --global [email protected]先依作業系統安裝 Git 與 GitHub CLI,再安裝 nvm-sh。安裝腳本完成後重新開啟終端機,或載入 nvm.sh;command -v nvm 應回傳 nvm。不要在原生 Windows PowerShell 使用 nvm-sh。
# macOS with Homebrew
brew install git gh
# Ubuntu, Debian, or WSL (install gh from its official guide)
sudo apt update
sudo apt install git curl
# macOS, Linux, or WSL: install nvm-sh
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.7/install.sh | bash
. "$HOME/.nvm/nvm.sh"
command -v nvm
nvm install --lts
nvm use --lts
npm install --global [email protected]先建立 GitHub 帳號。Git 的 user.name 與 user.email 會寫入 commit 作者資訊;如不想公開私人信箱,可使用 GitHub 提供的 noreply 信箱。gh auth login --web 會啟動瀏覽器驗證。沒有上游倉庫寫入權限時,請先 fork 再從自己的 fork 建立分支。
git config --global user.name "YOUR NAME"
git config --global user.email "YOUR_GITHUB_EMAIL"
gh auth login --web
gh auth status
gh repo clone ian030590/RehabTrainerHub
cd RehabTrainerHub在倉庫根目錄核對版本後使用 npm ci,不要以 npm install 任意改寫 lockfile。第一次先跑平台契約測試,再啟動 Hub;本機開發網址以終端機輸出為準。
node --version # v22 or later
npm --version # 11.19.0
git --version
gh --version
npm ci --workspaces --include-workspace-root
npm run test:game-platform
npm run dev:hubAI-assisted development
OpenAI 官方 Codex CLI 可在終端機讀取、修改與執行目前資料夾中的程式碼。安裝方式可能隨平台更新,請以官方安裝頁的作業系統分頁為準。
開啟官方 Codex CLI 安裝指南npm install -g @openai/codex
codex --versioncd path/to/your-game
codexArchitecture
Hub 只負責設定表單、容器、登入紀錄與離開流程。第三方程式在獨立網域的 sandbox="allow-scripts" iframe 執行,無法讀取主平台 Cookie;平台以 MessageChannel 傳送已驗證設定與接收彙總結果。
Package contract
ZIP 的 index.html 與 settings.json 必須直接位於根目錄。所有圖片、音效、字型、CSS、自訂 plugin 與程式碼都放在套件內,路徑只能使用 ASCII 字母、數字、點、底線、連字號與斜線。
index.html
settings.json
game.js
styles.css
assets/
stimulus.png
correct.wavConfiguration schema
settings.json 是兩條開發路徑都需要的宣告。Hub 在建立 iframe 前驗證它,並將使用者選擇的值傳給遊戲。遊戲內不得再複製一份設定畫面。
{
"schemaVersion": 1,
"gameId": "target-selection",
"sections": [
{
"id": "activity",
"title": {
"zh-TW": "活動設定",
"en": "Activity settings"
},
"fields": [
{
"key": "rounds",
"type": "slider",
"label": {
"zh-TW": "回合數",
"en": "Rounds"
},
"default": 20,
"min": 5,
"max": 40,
"step": 5,
"unit": {
"zh-TW": "回合",
"en": "rounds"
}
},
{
"key": "soundEnabled",
"type": "checkbox",
"label": {
"zh-TW": "聲音回饋",
"en": "Sound feedback"
},
"default": true
}
]
}
]
}sliderlistcheckboxcolorBuilt-in games only
原生投稿與內建遊戲使用 score.json,宣告遊戲結果的數值/布林欄位如何呈現為表格、圖表與摘要;計分公式由遊戲執行。
{
"schema": "rehab-trainer.game-score/v1",
"gameId": "target-selection",
"presentation": {
"primarySummaryKeys": ["accuracy", "medianResponseMs"],
"qualitySummaryKeys": ["omissions"],
"defaultRoundMetricKey": "responseMs",
"chartType": "line"
},
"columns": [
{
"key": "correct",
"label": { "zh": "正確", "en": "Correct" },
"sources": ["correct"]
},
{
"key": "responseMs",
"label": { "zh": "反應時間", "en": "Response time" },
"sources": ["responseMs"],
"unit": "ms"
}
],
"summary": [
{
"key": "accuracy",
"label": { "zh": "正確率", "en": "Accuracy" },
"sources": ["accuracy"],
"unit": "%"
},
{
"key": "medianResponseMs",
"label": { "zh": "反應時間中位數", "en": "Median response time" },
"sources": ["medianResponseMs"],
"unit": "ms"
},
{
"key": "omissions",
"label": { "zh": "遺漏次數", "en": "Omissions" },
"sources": ["omissions"]
}
]
}Platform runtime
本節適用舊版 jsPsych 投稿:執行站提供 jsPsych 8.2.3 與版本化橋樑。原生 HTML 投稿可使用自己的程式碼,透過隔離執行站的私有 MessagePort 接收設定與回傳結果。
/runtime/jspsych-8.2.3.js
/runtime/jspsych-8.2.3.css
/runtime/trainerhub-game-bridge-1.0.0.jsOT & research checklist
一個看似簡單的遊戲可能同時要求視覺搜尋、持續注意、反應抑制、動作速度與裝置操作。文件與結果只能描述實際任務,不可由遊戲表現推論疾病、日常功能或治療效果。
寫出主要與次要活動需求,說明刺激、反應與成功條件如何對應;避免只用「訓練大腦」等籠統說法。
記錄回合數、呈現時間、間隔、刺激大小、隨機化、練習回合與停止條件;把可調值放進 settings.json。
逐一說明每個值的公式、單位、分母、遺漏值與極端值處理;正確率與反應時間不可混成未說明的單一分數。
揭露輸入裝置、螢幕、網路瀏覽器、熟悉度、疲勞、視聽與動作需求可能影響結果。
優先引用原始研究、同儕審查文獻或官方方法文件,核對實際版本;參考方法不等於具備同等信效度。
使用練習、活動、刺激參數、當次紀錄與換算參考值;不宣稱診斷、處方、治療、恢復功能或保證效果。
Accessibility
Security gate
掃描只是初步分類,不是安全邊界。通過掃描後仍會在無敏感憑證的隔離環境進行原始碼查核與人工試玩。
fetch、XHR、WebSocket、EventSource、sendBeacon、WebRTC、http(s) URL、CSS @import。document.cookie、location、window.top、window.open、history navigation、表單與超連結。eval、Function、atob/btoa、Reflective access、ServiceWorker、Worker、SharedWorker、importScripts。iframe、frame、object、embed、base、meta refresh 與動態 document.write。Verification
改動內建遊戲、共用設定或結果契約時,至少執行下列 gate;涉及 entrypoint/renderer/fullscreen 時不可省略 build:hub。
npm run test:game-platform
npm run test:game-architecture
npm run test:embedded-training
npm run test:entrypoints
npm run build:hubPrompt builder
先填寫活動意圖與操作條件。產生的提示詞會鎖定平台契約、研究界線、安全與驗證輸出,適合直接貼入 Codex。
# 角色
你是一名資深 Web RD,並具備職能治療活動分析與學術研究素養。修改前先完整閱讀 AGENTS.md,並檢查倉庫目前實際 schema、遊戲通訊契約與測試,不依賴臆測或舊文件。
# 目標
以「【實作前確認】」為名稱,製作第三方 HTML/ZIP 投稿。
# 活動規格
- 主要活動需求:【實作前確認】
- 每回合互動:【實作前確認】
- 輸入方式:滑鼠/觸控
- 回合與時間:【實作前確認】
- 彙總指標:【實作前確認】
- 參考依據與限制:【實作前確認】
# 不可違反的平台契約
為 RehabBuilder 準備活動規格。未來 Hub 匯出需包含可閱讀的 index.html、settings.json、原始碼、樣式與本地資產,並使用執行站版本化的 jsPsych runtime 與遊戲通訊橋樑。維持既有上傳掃描與人工審核。RehabBuilder 尚在規劃中,不要宣稱目前可匯出。
- settings.json 使用 schemaVersion 1、完全一致的 gameId 與 zh-TW/en 雙語文字,只能使用 slider、list、checkbox、color;遊戲內不可複製 Hub 設定畫面。
- 套件必須自足。禁止網路 API、外部 URL、Cookie、導頁、表單、巢狀 frame、動態執行程式碼、worker、攝影機、麥克風、定位與個資。
- 只回傳或投影有限數值、布林與 null 的彙總資料;禁止原始 trial、自由文字、識別碼、影像、聲音或動作軌跡。
# 研究與文案規則
- 分開描述主要活動需求,以及裝置、感覺、注意力與動作等次要需求。
- 說明每個指標的公式、單位、分母、遺漏值處理與可能混淆因素。
- 使用「練習、活動、當次紀錄」等用語;不得宣稱診斷、治療、恢復功能、臨床級效度或保證效果。
- 缺少證據時清楚標示限制;不得虛構引用或宣稱與已發表工具具同等效度。
# 可及性
使用語意 HTML、清楚焦點、至少 44×44 CSS px 操作目標、鍵盤等效操作、減少動態支援,並在互動前顯示指示。提供可靠離開方式,釋放所有 listener 與 renderer 資源。
# 交付要求
1. 先回報假設、缺少決策、已查核契約與實作計畫。
2. 撰寫完整的 RehabBuilder 活動規格;不要宣稱 Hub 匯出功能已可使用。
3. 說明檔案結構、settings、分數/結果、生命週期清理與研究限制。
4. 先跑最小相關測試,再跑此開發路徑要求的倉庫 gate;列出完整命令與結果。
5. 最後審查 diff 的安全、i18n、可及性、敏感欄位與不當醫療宣稱。Developer workspace
使用右上角帳戶按鈕登入後,即可上傳 HTML/ZIP、查看掃描結果與人工審核進度。閱讀文件與產生提示詞不需要登入。