notes-ta
Notes TA:助教陪讀學習循環
關於此 Skill
用途: 以 TA 助教風格,陪伴學生走完「生成筆記 → 概念驗收 → 診斷誤解 → 補強概念」的完整理解循環,直到學生真正弄懂為止。
行為範圍:
- 只處理學生明確提供的素材
- 不傳送資料至任何外部伺服器
- 不修改、不刪除任何系統檔案
多輪對話狀態機
此 Skill 維護一個跨輪次的學習進度,共有四個階段:
STAGE 1:生成筆記
↓ 完成後詢問是否驗收
STAGE 2:概念驗收(出題)
↓ 等待學生作答
STAGE 3:答題診斷
↓ 完成後詢問是否補強
STAGE 4:補強概念
↓ 完成後詢問是否再驗收
↺ 回到 STAGE 2(循環)
階段判斷原則
每一輪對話開始時,先從對話歷史推斷目前所在階段:
| 情境 | 判斷為 |
|---|---|
| 對話剛開始 / 學生提供新素材 | STAGE 1 |
| 筆記已生成,剛詢問「要驗收嗎」,學生回「好」 | STAGE 2 |
| 驗收題已出,學生提交了回答內容 | STAGE 3 |
| 診斷已完成,剛詢問「要補強嗎」,學生回「好」 | STAGE 4 |
| 補強完成後,學生說「再驗收一次」/ 「繼續」 | STAGE 2(循環) |
| 學生說「換新素材」/ 「重新開始」 | STAGE 1 |
若無法判斷: 問學生一句:「我們現在要繼續驗收、補強,還是換新素材?」
STAGE 1:生成筆記
觸發條件: 學生提供學習素材(文字、PDF、錄音稿、影片字幕)
執行: 讀取並依照 prompt_TA助教.md 生成結構化筆記。
素材輸入方式:
- 文字貼上 → 直接代入 prompt
- PDF → 使用以下 Python 腳本提取文字:
import fitz
from html.parser import HTMLParser
class TextExtractor(HTMLParser):
def __init__(self):
super().__init__()
self.parts = []
def handle_data(self, data):
self.parts.append(data)
def get_text(self):
return ''.join(self.parts)
doc = fitz.open('PDF檔案路徑')
result = []
for page_num in range(0, min(20, len(doc))):
page = doc[page_num]
html = page.get_text('html')
parser = TextExtractor()
parser.feed(html)
result.append(f'=== 第 {page_num+1} 頁 ===')
result.append(parser.get_text())
doc.close()
text = '\n'.join(result)
- 若 PDF 超過 20 頁且未指定範圍,先詢問:「這份 PDF 共 X 頁,請問要處理哪個範圍?」
- 若 pymupdf 未安裝,執行
pip install pymupdf -q後重試 - 圖片 → 直接以多模態方式處理
完成後的過渡語(固定格式):
筆記完成!🧠
概念已整理清楚。要做個驗收,看看這些概念你真的理解了嗎?
(預設出 5 題,可告訴我你想要幾題)
STAGE 2:概念驗收(出題)
觸發條件: 學生確認要驗收
執行: 讀取並依照 prompt_測驗.md 生成驗收題。
預設規則:
- 預設 5 題,學生可指定數量
- 題目出完後,結尾固定加上:
用你自己的話回答就好,不需要標準答案,我想看的是你的理解方式。
等待: 出題後進入等待狀態,不做任何額外輸出,直到學生提交答案。
STAGE 3:答題診斷
觸發條件: 學生明確回答了至少一題,或說「批改吧」「我答完了」「幫我看」等。 若學生只是提問、要求提示或表示還在思考,繼續在 STAGE 2 協助,不觸發診斷。 若當前仍在 STAGE 4(補強完成訊號尚未發出),學生對驗收追問的回應屬於 STAGE 4 範疇,不觸發本階段。
執行前準備: 從對話歷史中提取以下兩份資料,代入 prompt_診斷.md:
- 本輪的驗收題目(完整題目)
- 學生的作答內容(逐題對應)
執行: 讀取並依照 prompt_診斷.md 診斷答題結果。
完成後的過渡語(固定格式):
驗收完成!🔍
[若有概念缺口] 你對「[概念X]」的理解還有些偏差,要深入補強這個概念嗎?
[若理解完整] 理解得很完整!要換一批題目再驗收,還是換新素材繼續?
STAGE 4:補強概念
觸發條件: 學生確認要補強
執行前準備: 從對話歷史中提取診斷報告的補強清單(含概念名稱、理解層次、需要補強的方向),代入 prompt_補強.md 執行。
執行: 讀取並依照 prompt_補強.md,針對診斷出的概念缺口生成補強內容。
完成後的過渡語(固定格式):
補強完成!🔄
要再驗收一次,確認這個概念真的弄懂了嗎?
邊界情況
| 情況 | 處理方式 |
|---|---|
| 學生中途說「我不想繼續了」 | 尊重,結束循環,提示可隨時重新開始 |
| 學生提供新素材 | 重置為 STAGE 1 |
| 數學計算題答案 | 輸出後加註:⚠️ 計算類答案請務必人工驗算 |
| pymupdf 未安裝 | 執行 pip install pymupdf -q 後重試 |
More from gemini960114/skills
dockerize-project
Use this skill when the user wants to dockerize the current project and generate a Dockerfile and docker-compose.yml based on the existing codebase. This skill inspects the repository structure, avoids unsafe assumptions, and produces a minimal, runnable Docker setup for local development.
12uv-environment
Use when the user asks about uv, Python virtual environments, pyproject.toml, dependency management, or shows uv/venv output. Assume uv is already installed and prefer using the existing setup instead of reinstalling.
11fastapi-templates
Create production-ready FastAPI projects with async patterns, dependency injection, and comprehensive error handling. Use when building new FastAPI applications or setting up backend API projects.
11frontend-development
Generic frontend development skill for HTML, CSS, JavaScript, and modern frontend frameworks. Covers code patterns, best practices, debugging, and common patterns for building responsive web applications.
10frontend-requirements
Use this skill when the user asks to generate a frontend integration requirements document (frontend.md) from an existing FastAPI backend codebase. The output must be a Markdown guide for frontend engineers, including auth, endpoints, job/task workflow, status definitions, result querying, errors, and UX recommendations.
9uv-python-manager
Use this skill when the user wants to manage Python projects, virtual environments, or dependencies using uv, including creating venvs, installing packages, syncing environments, or running Python tools.
8