105 lines
3.9 KiB
JSON
105 lines
3.9 KiB
JSON
{
|
|
"$schema": "internal://schemas/plugin.lock.v1.json",
|
|
"pluginId": "gh:jezweb/claude-skills:skills/cloudflare-turnstile",
|
|
"normalized": {
|
|
"repo": null,
|
|
"ref": "refs/tags/v20251128.0",
|
|
"commit": "395f7a3fbf640673b3e03ed800673c320bac4327",
|
|
"treeHash": "0d0340805a6c2ea84ae4fa5a4f1a52b687917fbaeef4731605eec19a822cdc3a",
|
|
"generatedAt": "2025-11-28T10:18:58.793082Z",
|
|
"toolVersion": "publish_plugins.py@0.2.0"
|
|
},
|
|
"origin": {
|
|
"remote": "git@github.com:zhongweili/42plugin-data.git",
|
|
"branch": "master",
|
|
"commit": "aa1497ed0949fd50e99e70d6324a29c5b34f9390",
|
|
"repoRoot": "/Users/zhongweili/projects/openmind/42plugin-data"
|
|
},
|
|
"manifest": {
|
|
"name": "cloudflare-turnstile",
|
|
"description": "Add bot protection with Turnstile (CAPTCHA alternative). Use when: protecting forms, securing login/signup, preventing spam, migrating from reCAPTCHA, integrating with React/Next.js/Hono, implementing E2E tests, or debugging CSP errors, token validation failures, or error codes 100*/300*/600*.",
|
|
"version": "1.0.0"
|
|
},
|
|
"content": {
|
|
"files": [
|
|
{
|
|
"path": "README.md",
|
|
"sha256": "4be7157860d8e65e17bb70554607aeb8c8bc1b8172764d97df7edc3514f83724"
|
|
},
|
|
{
|
|
"path": "SKILL.md",
|
|
"sha256": "9644cf2b04733ca4ef638b11f1dcaff6e94db6a69f7fad9dcf6f996b4f25df84"
|
|
},
|
|
{
|
|
"path": "references/example-reference.md",
|
|
"sha256": "77c788d727d05d6479a61d6652b132e43882ffc67c145bb46ba880567d83f7f8"
|
|
},
|
|
{
|
|
"path": "references/widget-configs.md",
|
|
"sha256": "43d089076218ff08cc27716f09eaaed361bb7b5d9a99bff1467dceaf9271c016"
|
|
},
|
|
{
|
|
"path": "references/react-integration.md",
|
|
"sha256": "d2e21fdf4e85f5e269bcfba4c0b365b5273794d136af3ff030155a00551684fb"
|
|
},
|
|
{
|
|
"path": "references/error-codes.md",
|
|
"sha256": "fdf8c6a1ca3bf6b5eb3b9922939f2f6523bc3485e19fc5e58f60339971213365"
|
|
},
|
|
{
|
|
"path": "references/testing-guide.md",
|
|
"sha256": "3a0a1ec5258c712d8885d595f726514e94cf94ffab50745ff50be73aa404c4ce"
|
|
},
|
|
{
|
|
"path": "scripts/check-csp.sh",
|
|
"sha256": "7560516e85807369b9136653e909bf6c80369a4f136cd38964a9eda3f225639e"
|
|
},
|
|
{
|
|
"path": "scripts/example-script.sh",
|
|
"sha256": "83d2b09d044811608e17cbd8e66d993b1e9998c7bd3379a42ab81fbdba973e0e"
|
|
},
|
|
{
|
|
"path": ".claude-plugin/plugin.json",
|
|
"sha256": "c4d49a11df5616f13b7245275209495dc580d4d1fa09209001608b7f7534e128"
|
|
},
|
|
{
|
|
"path": "templates/turnstile-test-config.ts",
|
|
"sha256": "529ec05cba26f8c1c2076700977d0678bf7ffcc95be885d530e9548aac2012c9"
|
|
},
|
|
{
|
|
"path": "templates/turnstile-widget-implicit.html",
|
|
"sha256": "b59a17c9565df0b5d576f794b4afb144403763d9e4e025fe5e85082c7792113d"
|
|
},
|
|
{
|
|
"path": "templates/turnstile-react-component.tsx",
|
|
"sha256": "0ec5ab1d61fa1bb3bee9dd8c2ee35a47e1445865edabb18010689cd576c7e13c"
|
|
},
|
|
{
|
|
"path": "templates/turnstile-hono-route.ts",
|
|
"sha256": "0482db70722bf6f006dbd82e6dacef8c8a0f46250ff89cb2e6c803f9ab6c907f"
|
|
},
|
|
{
|
|
"path": "templates/turnstile-widget-explicit.ts",
|
|
"sha256": "acda3dcf63ff3b053517d74204a2074bb979e889da5a6c1c8b07af6337b9228c"
|
|
},
|
|
{
|
|
"path": "templates/turnstile-server-validation.ts",
|
|
"sha256": "17f9b65d7e7b6c7f47e916f84f39c7330c9962dde24eb76a0c656131bfe8d5cc"
|
|
},
|
|
{
|
|
"path": "templates/wrangler-turnstile-config.jsonc",
|
|
"sha256": "bf20c5cd1721dfaf37187101d3deaa25f291349c9b59eb409247ee618c199d3b"
|
|
},
|
|
{
|
|
"path": "assets/example-template.txt",
|
|
"sha256": "3f725c80d70847fd8272bf1400515ba753f12f98f3b294d09e50b54b4c1b024a"
|
|
}
|
|
],
|
|
"dirSha256": "0d0340805a6c2ea84ae4fa5a4f1a52b687917fbaeef4731605eec19a822cdc3a"
|
|
},
|
|
"security": {
|
|
"scannedAt": null,
|
|
"scannerVersion": null,
|
|
"flags": []
|
|
}
|
|
} |