技能教程 · 代理
機器層說明書:索引、包、一個迴圈
本站按代理優先設計:一份 JSON 索引、每技能一個 zip、可校驗的雜湊值、照打即跑的指令。寫自己的代理——內部工具、班級機器人、自動化——下面就是全部介面面,沒有 SDK。
合約
GET https://workshopskill.com/zh-hant/skills.json
{ "name": "blind-portrait", "description": "15 分鐘兩人背對背畫圖練習,讓單向溝通的失真被看見……", "version": "1.1.0", "updated": "2026-10-07", "category": "communication", "group_size": "2", "duration_minutes": "15", "setting": "offline", "depth": "assessment-type", "page_url": "https://workshopskill.com/zh-hant/activities/blind-portrait/", "skill_url": ".../files/SKILL.md", "bundle_url": ".../files/blind-portrait.zip", "bundle_sha256": "..." }
先比對,再取包
python——過濾並校驗
import json, urllib.request, hashlib, io, zipfile IDX = "https://workshopskill.com/zh-hant/skills.json" brief = {"category": "communication", "minutes": 15, "people": 2} c = json.load(urllib.request.urlopen(IDX)) hits = [s for s in c["skills"] if s["category"] == brief["category"] and int(s["duration_minutes"]) <= brief["minutes"]] s = hits[0] raw = urllib.request.urlopen(s["bundle_url"]).read() assert hashlib.sha256(raw).hexdigest() == s["bundle_sha256"], "包變了" z = zipfile.ZipFile(io.BytesIO(raw)) # z.read("blind-portrait/SKILL.md") print(z.namelist())
給 LLM 的是技能,不是整站
系統提示裡放好迴圈:依使用者的需求對索引比對;取命中的包;照 SKILL.md 執行;碰到帳號步驟先徵詢
。frontmatter 用微型 YAML 解析出欄位,正文就是操作手冊。校驗那行 sha256 值得留在原型裡——因為資料夾就是承諾:代理打出來的,和人不下載到的,必須位元組一致。
線上測量的邊界
測評型技能的收尾是一條 formlm-cli 產生指令,規格在包內的測評預設 JSON。在自己的代理裡把它當帶同意的工具呼叫:把登入交給人,或在有會話的地方跑;否則退回紙卷(包裡就有可列印答卷)——差值數學照樣進報告。
接著讀
常見問題
JSON 層穩定嗎?
欄位只增不改;發過的名字繼續發。updated/version 就是給客戶做 diff 用的。
限流、鑑權、key?
索引、包、檔案全都沒有:靜態 HTTPS,匿名。請禮貌快取。
能包進收費產品嗎?
CC BY 4.0 涵蓋帶出處標示的再散布與改作;每個資料夾的 license.md 寫明白話邊界,改作那篇講商品化打法。