[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M773EW286FA13RC8BAASX8JS":3,"skill-same:01M773EW286FA13RC8BAASX8JS":50},{"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":18,"publishedAt":19,"linkOnly":20,"markdownContent":21,"markdownBody":22,"frontMatter":23,"refName":28,"commitSha":29,"skillDirectory":30,"forksCount":31,"repositoryHtmlUrl":32,"repositoryHomepageUrl":6,"ownerHtmlUrl":33,"ownerBlogUrl":6,"ownerDescription":34,"updatedAt":35,"install":36,"resources":49},"01M773EW286FA13RC8BAASX8JS","tsql-queryblock",null,"Componente React QueryBlock de TailwindSQL. Trigger: Cuando usás el componente QueryBlock en React.","davidcoachdev\u002Fdcfiles","davidcoachdev","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F69812733?v=4","01M758C4BR16TAV1N47W319E9V","David H. Caycedo Blum.","01M758C4CCZA2ZYGA0BGMXCDRH",1,"Apache-2.0","https:\u002F\u002Fgithub.com\u002Fdavidcoachdev\u002Fdcfiles\u002Fblob\u002Fmain\u002Fconfig\u002F.config\u002Fopencode\u002Fskills\u002Ftailwindsql\u002Ftsql-queryblock\u002FSKILL.md",[],[],"2026-11-12 13:55:43",false,"---\nname: tsql-queryblock\ndescription: >\n  Componente React QueryBlock de TailwindSQL.\n  Trigger: Cuando usás el componente QueryBlock en React.\nlicense: Apache-2.0\nmetadata:\n  author: gentleman-programming\n  version: \"1.0\"\n---\n\n## QueryBlock - Componente Principal\n\n```tsx\nimport { QueryBlock } from \"..\u002Ftailwindsql.config\";\n\nfunction UsersPage() {\n  return (\n    \u003CQueryBlock query=\"select-all from-[User]\">\n      {(users) => (\n        \u003Cul>\n          {users.map(user => (\n            \u003Cli key={user.id}>{user.name}\u003C\u002Fli>\n          ))}\n        \u003C\u002Ful>\n      )}\n    \u003C\u002FQueryBlock>\n  );\n}\n```\n\n## Props\n\n| Prop | Tipo | Requerido | Descripción |\n|------|------|-----------|-------------|\n| `query` | string | Sí | Query TailwindSQL |\n| `adapter` | function | No* | Función que ejecuta SQL |\n| `children` | function | Sí | Render function |\n| `fallback` | ReactNode | No | Loading state |\n| `loadingDelay` | number | No | Delay antes de mostrar loading |\n\n*Si no se pasa, usa el adapter global configurado.\n\n## Render Function\n\n```tsx\n\u002F\u002F children es una función que recibe los datos\n{(users) => \u003Cul>{users.map(u => \u003Cli>{u.name}\u003C\u002Fli>)}\u003C\u002Ful>}\n\n\u002F\u002F Con estado de loading\n{(users, isLoading, error) => (\n  \u003C>\n    {isLoading && \u003CSpinner \u002F>}\n    {error && \u003CError msg={error.message} \u002F>}\n    \u003Cul>{users.map(u => \u003Cli>{u.name}\u003C\u002Fli>)}\u003C\u002Ful>\n  \u003C\u002F>\n)}\n```\n\n## Configuración Global\n\n```typescript\n\u002F\u002F tailwindsql.config.ts\nimport { configTailwindSQL } from \"@repo\u002Ftailwindsql\";\nimport { executeSQL } from \".\u002Fapp\u002Factions\";\n\nexport const { QueryBlock } = configTailwindSQL({\n  adapter: executeSQL,\n  loadingDelay: 200,  \u002F\u002F ms\n  defaultFallback: \u003Cdiv>Cargando...\u003C\u002Fdiv>\n});\n```\n\n## Docs\n\n- https:\u002F\u002Fgithub.com\u002Fptaberg\u002Ftailwindsql#quick-start","## QueryBlock - Componente Principal\n\n```tsx\nimport { QueryBlock } from \"..\u002Ftailwindsql.config\";\n\nfunction UsersPage() {\n  return (\n    \u003CQueryBlock query=\"select-all from-[User]\">\n      {(users) => (\n        \u003Cul>\n          {users.map(user => (\n            \u003Cli key={user.id}>{user.name}\u003C\u002Fli>\n          ))}\n        \u003C\u002Ful>\n      )}\n    \u003C\u002FQueryBlock>\n  );\n}\n```\n\n## Props\n\n| Prop | Tipo | Requerido | Descripción |\n|------|------|-----------|-------------|\n| `query` | string | Sí | Query TailwindSQL |\n| `adapter` | function | No* | Función que ejecuta SQL |\n| `children` | function | Sí | Render function |\n| `fallback` | ReactNode | No | Loading state |\n| `loadingDelay` | number | No | Delay antes de mostrar loading |\n\n*Si no se pasa, usa el adapter global configurado.\n\n## Render Function\n\n```tsx\n\u002F\u002F children es una función que recibe los datos\n{(users) => \u003Cul>{users.map(u => \u003Cli>{u.name}\u003C\u002Fli>)}\u003C\u002Ful>}\n\n\u002F\u002F Con estado de loading\n{(users, isLoading, error) => (\n  \u003C>\n    {isLoading && \u003CSpinner \u002F>}\n    {error && \u003CError msg={error.message} \u002F>}\n    \u003Cul>{users.map(u => \u003Cli>{u.name}\u003C\u002Fli>)}\u003C\u002Ful>\n  \u003C\u002F>\n)}\n```\n\n## Configuración Global\n\n```typescript\n\u002F\u002F tailwindsql.config.ts\nimport { configTailwindSQL } from \"@repo\u002Ftailwindsql\";\nimport { executeSQL } from \".\u002Fapp\u002Factions\";\n\nexport const { QueryBlock } = configTailwindSQL({\n  adapter: executeSQL,\n  loadingDelay: 200,  \u002F\u002F ms\n  defaultFallback: \u003Cdiv>Cargando...\u003C\u002Fdiv>\n});\n```\n\n## Docs\n\n- https:\u002F\u002Fgithub.com\u002Fptaberg\u002Ftailwindsql#quick-start",{"name":5,"license":15,"metadata":24,"description":27},{"author":25,"version":26},"gentleman-programming","1.0","Componente React QueryBlock de TailwindSQL. Trigger: Cuando usás el componente QueryBlock en React.\n","main","5dc86f90a5cbe45db3acd917825461b3ed6937fb","config\u002F.config\u002Fopencode\u002Fskills\u002Ftailwindsql\u002Ftsql-queryblock",0,"https:\u002F\u002Fgithub.com\u002Fdavidcoachdev\u002Fdcfiles","https:\u002F\u002Fgithub.com\u002Fdavidcoachdev","🌐 Apasionado por crear soluciones web escalables y eficientes. \r\n🧑‍🏫 Coach Dev.\r\n💻 Frontend Dev. \r\n🎚️Backend Dev.\r\n📊 Agile\u002FScrum.\r\n🚀100% remoto.","2026-08-26 07:28:05",{"source":8,"skillName":5,"commands":37,"prompt":47,"zipAvailable":48},[38,41,44],{"tool":39,"command":40},"npx","npx skills add davidcoachdev\u002Fdcfiles --skill tsql-queryblock",{"tool":42,"command":43},"bunx","bunx skills add davidcoachdev\u002Fdcfiles --skill tsql-queryblock",{"tool":45,"command":46},"pnpm","pnpm dlx skills add davidcoachdev\u002Fdcfiles --skill tsql-queryblock","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fdavidcoachdev\u002Fdcfiles\u002Fblob\u002Fmain\u002Fconfig\u002F.config\u002Fopencode\u002Fskills\u002Ftailwindsql\u002Ftsql-queryblock\u002FSKILL.md",true,[],[51,58,65,72,80,87],{"skillNo":52,"name":53,"nameZh":6,"description":54,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":55,"categories":56,"keywords":57,"publishedAt":19},"01M7740FETMZY1VTYAEFY1TWY7","zustand-5","Zustand 5 state management patterns. Trigger: When managing React state with Zustand.","https:\u002F\u002Fgithub.com\u002Fdavidcoachdev\u002Fdcfiles\u002Fblob\u002Fmain\u002Fconfig\u002F.config\u002Fopencode\u002Fskills\u002Fzustand-5\u002FSKILL.md",[],[],{"skillNo":59,"name":60,"nameZh":6,"description":61,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":62,"categories":63,"keywords":64,"publishedAt":19},"01M773ZZM9V68SA1AKP4WF4J29","zod-4","Zod 4 schema validation patterns. Trigger: When using Zod for validation - breaking changes from v3.","https:\u002F\u002Fgithub.com\u002Fdavidcoachdev\u002Fdcfiles\u002Fblob\u002Fmain\u002Fconfig\u002F.config\u002Fopencode\u002Fskills\u002Fzod-4\u002FSKILL.md",[],[],{"skillNo":66,"name":67,"nameZh":6,"description":68,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":69,"categories":70,"keywords":71,"publishedAt":19},"01M773ZJFR90CQAY0N9QR40QVP","x-bookmark-quote-posts","Workflow para revisar bookmarks de X\u002FTwitter y convertirlos en drafts de quote posts. Accede a la sección de bookmarks vía browser headless, extrae posts recientes, y genera drafts con voz personal del usuario. No publica ni muta X — solo genera contenido para revisión. Trigger: X bookmarks, Twitter bookmarks, quote posts, bookmark automation, crear quote posts, revisar bookmarks, growth content X.","https:\u002F\u002Fgithub.com\u002Fdavidcoachdev\u002Fdcfiles\u002Fblob\u002Fmain\u002Fconfig\u002F.config\u002Fopencode\u002Fskills\u002Fx-bookmark-quote-posts\u002FSKILL.md",[],[],{"skillNo":73,"name":74,"nameZh":6,"description":75,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":76,"licenseFileUrl":6,"sourceHtmlUrl":77,"categories":78,"keywords":79,"publishedAt":19},"01M773Z2RGV3786FV310SDB0YD","writing-skills","Use when creating new skills, editing existing skills, or verifying skills work before deployment","MIT","https:\u002F\u002Fgithub.com\u002Fdavidcoachdev\u002Fdcfiles\u002Fblob\u002Fmain\u002Fconfig\u002F.config\u002Fopencode\u002Fskills\u002Fwriting-skills\u002FSKILL.md",[],[],{"skillNo":81,"name":82,"nameZh":6,"description":83,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":76,"licenseFileUrl":6,"sourceHtmlUrl":84,"categories":85,"keywords":86,"publishedAt":19},"01M773YJH3KDSW467CSS63CSRJ","writing-plans","Use when you have a spec or requirements for a multi-step task, before touching code","https:\u002F\u002Fgithub.com\u002Fdavidcoachdev\u002Fdcfiles\u002Fblob\u002Fmain\u002Fconfig\u002F.config\u002Fopencode\u002Fskills\u002Fwriting-plans\u002FSKILL.md",[],[],{"skillNo":88,"name":89,"nameZh":6,"description":90,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":91,"categories":92,"keywords":93,"publishedAt":19},"01M773Y3S3H2CPRK5S8YFHWB5C","work-unit-commits","Plan commits as reviewable work units. Trigger: implementation, commit splitting, chained PRs, or keeping tests and docs with code.","https:\u002F\u002Fgithub.com\u002Fdavidcoachdev\u002Fdcfiles\u002Fblob\u002Fmain\u002Fconfig\u002F.config\u002Fopencode\u002Fskills\u002Fwork-unit-commits\u002FSKILL.md",[],[]]