Release wordcraft-mcp and gridcraft-mcp 0.3.0: client-neutral skills, Cursor plugins.
This commit is contained in:
1 parent
debdf92877
commit
4c7e3ff720
26 files changed
+1008
-236
No files matched your search
+33
-5
@@ -18,8 +18,8 @@ fi
|
||||
table="$(mktemp)"
|
||||
trap 'rm -f "$table"' EXIT
|
||||
{
|
||||
echo "| Skill | Kurzbeschreibung | Version | Doku | Download | Erweiterung (.mcpb) |"
|
||||
echo "|---|---|---|---|---|---|"
|
||||
echo '| Skill | Kurzbeschreibung | Version | Doku | Download | Erweiterung (.mcpb) | Cursor-Plugin | Cursor 1-Klick |'
|
||||
echo '|---|---|---|---|---|---|---|---|'
|
||||
while IFS= read -r name; do
|
||||
[[ -z "$name" ]] && continue
|
||||
desc=""
|
||||
@@ -31,11 +31,40 @@ trap 'rm -f "$table"' EXIT
|
||||
tag_enc="$(python3 -c 'import urllib.parse,sys; print(urllib.parse.quote(sys.argv[1], safe=""))' "$name/v$ver")"
|
||||
zip_link="[${name}-v${ver}.zip](${REPO_WEB}/releases/download/${tag_enc}/${name}-v${ver}.zip)"
|
||||
mcpb=""
|
||||
cursor_zip=""
|
||||
deeplink=""
|
||||
if [[ -f "$SKILLS_DIR/$name/extension/manifest.json" ]]; then
|
||||
mcpb="[${name}-v${ver}.mcpb](${REPO_WEB}/releases/download/${tag_enc}/${name}-v${ver}.mcpb)"
|
||||
cursor_zip="[${name}-cursor-v${ver}.zip](${REPO_WEB}/releases/download/${tag_enc}/${name}-cursor-v${ver}.zip)"
|
||||
deeplink="$(python3 - "$SKILLS_DIR/$name/extension/manifest.json" "$name" <<'PY'
|
||||
import json, base64, sys, urllib.parse, re
|
||||
man = json.load(open(sys.argv[1], encoding="utf-8"))
|
||||
name = sys.argv[2]
|
||||
sk = {"wordcraft-mcp":"wordcraft","gridcraft-mcp":"gridcraft"}.get(name)
|
||||
if not sk:
|
||||
m = re.match(r"^(.+)-mcp$", name)
|
||||
sk = m.group(1) if m else name
|
||||
cmd = man["server"]["mcp_config"]["command"]
|
||||
args = []
|
||||
for a in man["server"]["mcp_config"].get("args") or []:
|
||||
s = str(a)
|
||||
if s == "${user_config.author}":
|
||||
args.append("Claude")
|
||||
elif s == "${user_config.read_root}":
|
||||
args.append("${userHome}/Documents")
|
||||
elif s == "${user_config.write_root}":
|
||||
args.append("${userHome}/Documents/Claude")
|
||||
else:
|
||||
args.append(s)
|
||||
payload = {sk: {"command": cmd, "args": args}}
|
||||
b64 = base64.urlsafe_b64encode(json.dumps(payload, separators=(",", ":")).encode()).decode().rstrip("=")
|
||||
link = f"cursor://anysphere.cursor-deeplink/mcp/install?name={urllib.parse.quote(sk)}&config={b64}"
|
||||
print(f"[Add to Cursor]({link})")
|
||||
PY
|
||||
)"
|
||||
fi
|
||||
printf '| [%s](skills/%s/) | %s | %s | [README](skills/%s/README.md) | %s | %s |\n' \
|
||||
"$name" "$name" "$desc" "$ver" "$name" "$zip_link" "$mcpb"
|
||||
printf '| [%s](skills/%s/) | %s | %s | [README](skills/%s/README.md) | %s | %s | %s | %s |\n' \
|
||||
"$name" "$name" "$desc" "$ver" "$name" "$zip_link" "$mcpb" "$cursor_zip" "$deeplink"
|
||||
done < <(skill_names)
|
||||
} > "$table"
|
||||
|
||||
@@ -51,7 +80,6 @@ if [[ $check -eq 1 ]]; then
|
||||
fi
|
||||
echo "README.md ist aktuell."
|
||||
else
|
||||
# Explizit UTF-8 schreiben (Locale kann sonst die README verfaelschen).
|
||||
python3 -c 'import sys; open(sys.argv[1],"w",encoding="utf-8",newline="\n").write(sys.stdin.read())' "$readme" <<< "$new"
|
||||
echo "README.md aktualisiert."
|
||||
fi
|
||||
Reference in new issue
Block a user