[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6D8C94VQK2A2J3RVSW2XBNZ":3,"skill-same:01M6D8C94VQK2A2J3RVSW2XBNZ":99},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":16,"categories":17,"keywords":28,"publishedAt":40,"linkOnly":41,"markdownContent":42,"markdownBody":43,"frontMatter":44,"refName":45,"commitSha":46,"skillDirectory":47,"forksCount":48,"repositoryHtmlUrl":49,"repositoryHomepageUrl":50,"ownerHtmlUrl":51,"ownerBlogUrl":52,"ownerDescription":53,"updatedAt":54,"install":55,"resources":68},"01M6D8C94VQK2A2J3RVSW2XBNZ","d1-sql-playground",null,"Use when editing d1-sql-playground. POST \u002Fquery with { sql }; read-only SELECT against seeded D1 tables (products, experiments); binding DB.","shrinathsnayak\u002Fcloudflare-experiments","shrinathsnayak","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F19502016?v=4","01M6D8BPME3YRMPW470YRKKTE3","Shrinath Nayak","01M6D8BPSAKJ26YQJD7CA0YHNP",3,"MIT","https:\u002F\u002Fgithub.com\u002Fshrinathsnayak\u002Fcloudflare-experiments\u002Fblob\u002Fmain\u002F.cursor\u002Fskills\u002Fd1-sql-playground\u002FSKILL.md",[18,23],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000010","后端与接口","SCENARIO","使用场景",{"categoryNo":24,"categoryName":25,"taxonomyType":26,"taxonomyTypeDesc":27},"01JBSEEDCAT000000000000033","数据分析师","PROFESSION","适用职业",[29,30,31,32,33,34,35,36,37,38,39],"sql","playground","d1 sql playground","experiments","select","editing","read","use","only","query","db","2026-11-10 10:12:30",false,"---\nname: d1-sql-playground\ndescription: Use when editing d1-sql-playground. POST \u002Fquery with { sql }; read-only SELECT against seeded D1 tables (products, experiments); binding DB.\n---\n\n# D1 SQL Playground\n\n- **Routes**: `POST \u002Fquery` (body `{ sql }`); `GET \u002F` (app info + allowed tables).\n- **Response (query)**: `{ columns, rows, rowCount, durationMs }`.\n- **Bindings**: D1 database (`DB`).\n- **Validation**: `validateSelectSql` in `src\u002Flib\u002Fsql.ts` — SELECT only, no semicolons\u002Fcomments, allowed tables whitelist.\n- **Utils**: `jsonError`, `jsonSuccess`; migrations in `migrations\u002F0000_init.sql`.\n","# D1 SQL Playground\n\n- **Routes**: `POST \u002Fquery` (body `{ sql }`); `GET \u002F` (app info + allowed tables).\n- **Response (query)**: `{ columns, rows, rowCount, durationMs }`.\n- **Bindings**: D1 database (`DB`).\n- **Validation**: `validateSelectSql` in `src\u002Flib\u002Fsql.ts` — SELECT only, no semicolons\u002Fcomments, allowed tables whitelist.\n- **Utils**: `jsonError`, `jsonSuccess`; migrations in `migrations\u002F0000_init.sql`.\n",{"name":5,"description":7},"main","97dde57c39e492fe98d58aa38032bffa6efa575b",".cursor\u002Fskills\u002Fd1-sql-playground",0,"https:\u002F\u002Fgithub.com\u002Fshrinathsnayak\u002Fcloudflare-experiments","https:\u002F\u002Fcloudflare-experiments.com","https:\u002F\u002Fgithub.com\u002Fshrinathsnayak","https:\u002F\u002Fsnayak.dev","Software Engineer","2026-10-06 02:14:43",{"source":8,"skillName":5,"commands":56,"prompt":66,"zipAvailable":67},[57,60,63],{"tool":58,"command":59},"npx","npx skills add shrinathsnayak\u002Fcloudflare-experiments --skill d1-sql-playground",{"tool":61,"command":62},"bunx","bunx skills add shrinathsnayak\u002Fcloudflare-experiments --skill d1-sql-playground",{"tool":64,"command":65},"pnpm","pnpm dlx skills add shrinathsnayak\u002Fcloudflare-experiments --skill d1-sql-playground","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fshrinathsnayak\u002Fcloudflare-experiments\u002Fblob\u002Fmain\u002F.cursor\u002Fskills\u002Fd1-sql-playground\u002FSKILL.md",true,[69,75,79,83,87,91,95],{"path":70,"resourceType":71,"resourceTypeDesc":72,"sizeBytes":73,"sourceHtmlUrl":74},"data\u002Fprd-purpose.md","REFERENCE","参考文档",7246,"https:\u002F\u002Fgithub.com\u002FCanVc\u002Fdoc-chat\u002Fblob\u002Fmain\u002F.claude\u002Fskills\u002Fbmad-edit-prd\u002Fdata\u002Fprd-purpose.md",{"path":76,"resourceType":71,"resourceTypeDesc":72,"sizeBytes":77,"sourceHtmlUrl":78},"steps-e\u002Fstep-e-01-discovery.md",7907,"https:\u002F\u002Fgithub.com\u002FCanVc\u002Fdoc-chat\u002Fblob\u002Fmain\u002F.claude\u002Fskills\u002Fbmad-edit-prd\u002Fsteps-e\u002Fstep-e-01-discovery.md",{"path":80,"resourceType":71,"resourceTypeDesc":72,"sizeBytes":81,"sourceHtmlUrl":82},"steps-e\u002Fstep-e-01b-legacy-conversion.md",6529,"https:\u002F\u002Fgithub.com\u002FCanVc\u002Fdoc-chat\u002Fblob\u002Fmain\u002F.claude\u002Fskills\u002Fbmad-edit-prd\u002Fsteps-e\u002Fstep-e-01b-legacy-conversion.md",{"path":84,"resourceType":71,"resourceTypeDesc":72,"sizeBytes":85,"sourceHtmlUrl":86},"steps-e\u002Fstep-e-02-review.md",7661,"https:\u002F\u002Fgithub.com\u002FCanVc\u002Fdoc-chat\u002Fblob\u002Fmain\u002F.claude\u002Fskills\u002Fbmad-edit-prd\u002Fsteps-e\u002Fstep-e-02-review.md",{"path":88,"resourceType":71,"resourceTypeDesc":72,"sizeBytes":89,"sourceHtmlUrl":90},"steps-e\u002Fstep-e-03-edit.md",7290,"https:\u002F\u002Fgithub.com\u002FCanVc\u002Fdoc-chat\u002Fblob\u002Fmain\u002F.claude\u002Fskills\u002Fbmad-edit-prd\u002Fsteps-e\u002Fstep-e-03-edit.md",{"path":92,"resourceType":71,"resourceTypeDesc":72,"sizeBytes":93,"sourceHtmlUrl":94},"steps-e\u002Fstep-e-04-complete.md",4893,"https:\u002F\u002Fgithub.com\u002FCanVc\u002Fdoc-chat\u002Fblob\u002Fmain\u002F.claude\u002Fskills\u002Fbmad-edit-prd\u002Fsteps-e\u002Fstep-e-04-complete.md",{"path":96,"resourceType":71,"resourceTypeDesc":72,"sizeBytes":97,"sourceHtmlUrl":98},"workflow.md",2949,"https:\u002F\u002Fgithub.com\u002FCanVc\u002Fdoc-chat\u002Fblob\u002Fmain\u002F.claude\u002Fskills\u002Fbmad-edit-prd\u002Fworkflow.md",[100,109,121,133,148,157],{"skillNo":101,"name":102,"nameZh":6,"description":103,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":104,"categories":105,"keywords":106,"publishedAt":40},"01M6D8DZ6P79XCXA5B9Z2EYB2W","whereami","Use when editing whereami. GET \u002Fwhereami returns request.cf (country, city, colo, etc.); no bindings.","https:\u002F\u002Fgithub.com\u002Fshrinathsnayak\u002Fcloudflare-experiments\u002Fblob\u002Fmain\u002F.cursor\u002Fskills\u002Fwhereami\u002FSKILL.md",[],[102,107,36,34,108],"get","returns",{"skillNo":110,"name":111,"nameZh":6,"description":112,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":113,"categories":114,"keywords":115,"publishedAt":40},"01M6D8DWX5XRCTA5MJBXMQQ8VC","websocket-echo","Use when editing websocket-echo. GET \u002Fecho WebSocket upgrade; echoes messages.","https:\u002F\u002Fgithub.com\u002Fshrinathsnayak\u002Fcloudflare-experiments\u002Fblob\u002Fmain\u002F.cursor\u002Fskills\u002Fwebsocket-echo\u002FSKILL.md",[],[116,117,118,107,119,36,34,120],"websocket echo","Echo","websocket","upgrade","messages",{"skillNo":122,"name":123,"nameZh":6,"description":124,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":125,"categories":126,"keywords":127,"publishedAt":40},"01M6D8DTBG6DGC7F5C8ZH0KJF6","website-to-llms-txt","Use when editing website-to-llms-txt. GET \u002Fllms.txt?url=; returns plain-text llms.txt format (title, description, links, contact); no bindings.","https:\u002F\u002Fgithub.com\u002Fshrinathsnayak\u002Fcloudflare-experiments\u002Fblob\u002Fmain\u002F.cursor\u002Fskills\u002Fwebsite-to-llms-txt\u002FSKILL.md",[],[128,129,130,108,107,36,34,131,132],"website to llms txt","website","llms","text","format",{"skillNo":134,"name":135,"nameZh":6,"description":136,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":137,"categories":138,"keywords":143,"publishedAt":40},"01M6D8DR35Q6ZAGM1G7T1S6K3S","website-to-api","Use when editing website-to-api. GET \u002Fapi?url=; returns structured title, headings, links, images.","https:\u002F\u002Fgithub.com\u002Fshrinathsnayak\u002Fcloudflare-experiments\u002Fblob\u002Fmain\u002F.cursor\u002Fskills\u002Fwebsite-to-api\u002FSKILL.md",[139,140],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},{"categoryNo":141,"categoryName":142,"taxonomyType":26,"taxonomyTypeDesc":27},"01JBSEEDCAT000000000000030","开发工程师",[144,145,129,107,146,147,36,34,108],"website to api","api","structured","images",{"skillNo":149,"name":150,"nameZh":6,"description":151,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":152,"categories":153,"keywords":154,"publishedAt":40},"01M6D8DNPGAYTPY4M6N6E381JF","website-metadata-extractor","Use when editing website-metadata-extractor. GET \u002Fmetadata?url=; extracts title, description, canonical, og tags.","https:\u002F\u002Fgithub.com\u002Fshrinathsnayak\u002Fcloudflare-experiments\u002Fblob\u002Fmain\u002F.cursor\u002Fskills\u002Fwebsite-metadata-extractor\u002FSKILL.md",[],[155,156,129,34,107,36],"website metadata extractor","metadata",{"skillNo":158,"name":159,"nameZh":6,"description":160,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":161,"categories":162,"keywords":163,"publishedAt":40},"01M6D8DK34AE3W30DSXHZ5Q95T","website-devtools-inspector","Use when editing website-devtools-inspector. GET \u002Fdevtools?url=; headers, cookies, scripts, assets, metadata.","https:\u002F\u002Fgithub.com\u002Fshrinathsnayak\u002Fcloudflare-experiments\u002Fblob\u002Fmain\u002F.cursor\u002Fskills\u002Fwebsite-devtools-inspector\u002FSKILL.md",[],[164,129,165,166,167,34,36,107,156],"devtools","website devtools inspector","cookies","assets"]