WorkshopSkill活動資料夾

技能教程 · 代理

機器層說明書:索引、包、一個迴圈

本站按代理優先設計:一份 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 寫明白話邊界,改作那篇講商品化打法。