[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M71GMTX2MBCC6NH0JF06P9Z6":3,"skill-same:01M71GMTX2MBCC6NH0JF06P9Z6":66},{"skillNo":4,"name":5,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":11,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":15,"categories":16,"keywords":27,"publishedAt":33,"linkOnly":34,"markdownContent":35,"markdownBody":36,"frontMatter":37,"refName":38,"commitSha":39,"skillDirectory":40,"forksCount":41,"repositoryHtmlUrl":42,"repositoryHomepageUrl":6,"ownerHtmlUrl":43,"ownerBlogUrl":44,"ownerDescription":6,"updatedAt":45,"install":46,"resources":59},"01M71GMTX2MBCC6NH0JF06P9Z6","backend-data-layer",null,"lookatitude\u002Fguild","lookatitude","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F524917?v=4","01M71GJ2KGXFSJZKAZC5P1ZXXM","Miguel Pinto","01M71GJ2MH4SH9WJKP8M7XZZ0P",8,"MIT","https:\u002F\u002Fgithub.com\u002Flookatitude\u002Fguild\u002Fblob\u002Fmain\u002Fskills\u002Fspecialists\u002Fbackend-data-layer\u002FSKILL.md",[17,22],{"categoryNo":18,"categoryName":19,"taxonomyType":20,"taxonomyTypeDesc":21},"01JBSEEDCAT000000000000010","后端与接口","SCENARIO","使用场景",{"categoryNo":23,"categoryName":24,"taxonomyType":25,"taxonomyTypeDesc":26},"01JBSEEDCAT000000000000033","数据分析师","PROFESSION","适用职业",[28,29,30,31,32],"data","backend","backend data","layer","backend data layer","2026-11-10 10:12:30",false,"---\nname: backend-data-layer\ndescription: Designs database schemas, access patterns, indexes, and query shapes for a single storage boundary. Output: DDL (SQL) or schema fragment plus query-pattern notes and indexing plan. Pulled by the `backend` specialist. TRIGGER: \"design the schema for X\", \"what tables do we need for X\", \"model the data for X\", \"draft the DDL for X\", \"what indexes should we add for X queries\", \"how should we store X\". DO NOT TRIGGER for: writing the actual migration file (use `backend-migration-writer`), external API shape (use `backend-api-contract`), third-party integration (use `backend-service-integration`), picking a DB engine at vendor level (architect-tradeoff-matrix or researcher-comparison-table), cross-service data-flow architecture (architect-systems-design).\nwhen_to_use: The parent `backend` specialist pulls this skill when the task needs tables, columns, relationships, indexes, or query-access plans designed for a specific store. Also fires on explicit user request.\ntype: specialist\n---\n\n# backend-data-layer\n\nThe schema is the contract with the DB; the evidence is an `EXPLAIN` plan or a query count matching the expected access pattern.\n\n## What you do\n\nDesign the persistent shape of one bounded domain. Name every table, every column with a type, every FK, every index. Co-locate the schema with the access patterns — an index without a query that needs it is wasted space; a query without an index is a production incident.\n\n- Start from access patterns, not from the conceptual model. List the top 5–10 queries the app will run, then design tables to serve them.\n- Declare PKs, FKs, `NOT NULL`, uniqueness, and defaults explicitly — lean on the DB, not the app.\n- Index every FK. Add composite indexes for the specific `WHERE … ORDER BY … LIMIT` shapes the queries use.\n- Bound every listing query with pagination — no `SELECT *` with no `LIMIT` in production code paths.\n- Note denormalization and counter-cache columns explicitly and say why.\n- Flag retention \u002F archival expectations if rows accumulate unbounded.\n\n## Output shape\n\nMarkdown or SQL file under `.guild\u002Fruns\u002F\u003Crun-id>\u002Fdata\u002F\u003Cslug>.{sql|md}` with:\n\n1. **Access patterns** — numbered list of the queries this schema must serve.\n2. **Schema** — DDL or a table-by-table markdown spec (columns · types · constraints).\n3. **Indexes** — one per line, tied to the query number it serves.\n4. **Retention \u002F growth** — expected row count and archival plan.\n5. **Migration notes** — one paragraph on how to get from current state to proposed state (detailed file belongs to `backend-migration-writer`).\n\n## Anti-patterns\n\n- Missing indexes on FKs — guaranteed slow joins at any scale.\n- Designing tables first, then figuring out how to query them — inverts the actual constraint.\n- N+1 patterns baked in (parent list → per-row child fetch) — plan joins or batched fetches up front.\n- Unbounded queries — no `LIMIT`, no pagination, no retention story.\n- No migration plan — a schema change landing without a migration file is a production outage waiting.\n- Over-normalization that forces 5-table joins on the hot path.\n\n## Handoff\n\nReturn the schema and access-pattern notes to the invoking `backend` specialist. If the change is non-trivial, the backend agent chains into `backend-migration-writer` to author the actual migration. This skill writes the design; the migration file is a separate artifact.\n","# backend-data-layer\n\nThe schema is the contract with the DB; the evidence is an `EXPLAIN` plan or a query count matching the expected access pattern.\n\n## What you do\n\nDesign the persistent shape of one bounded domain. Name every table, every column with a type, every FK, every index. Co-locate the schema with the access patterns — an index without a query that needs it is wasted space; a query without an index is a production incident.\n\n- Start from access patterns, not from the conceptual model. List the top 5–10 queries the app will run, then design tables to serve them.\n- Declare PKs, FKs, `NOT NULL`, uniqueness, and defaults explicitly — lean on the DB, not the app.\n- Index every FK. Add composite indexes for the specific `WHERE … ORDER BY … LIMIT` shapes the queries use.\n- Bound every listing query with pagination — no `SELECT *` with no `LIMIT` in production code paths.\n- Note denormalization and counter-cache columns explicitly and say why.\n- Flag retention \u002F archival expectations if rows accumulate unbounded.\n\n## Output shape\n\nMarkdown or SQL file under `.guild\u002Fruns\u002F\u003Crun-id>\u002Fdata\u002F\u003Cslug>.{sql|md}` with:\n\n1. **Access patterns** — numbered list of the queries this schema must serve.\n2. **Schema** — DDL or a table-by-table markdown spec (columns · types · constraints).\n3. **Indexes** — one per line, tied to the query number it serves.\n4. **Retention \u002F growth** — expected row count and archival plan.\n5. **Migration notes** — one paragraph on how to get from current state to proposed state (detailed file belongs to `backend-migration-writer`).\n\n## Anti-patterns\n\n- Missing indexes on FKs — guaranteed slow joins at any scale.\n- Designing tables first, then figuring out how to query them — inverts the actual constraint.\n- N+1 patterns baked in (parent list → per-row child fetch) — plan joins or batched fetches up front.\n- Unbounded queries — no `LIMIT`, no pagination, no retention story.\n- No migration plan — a schema change landing without a migration file is a production outage waiting.\n- Over-normalization that forces 5-table joins on the hot path.\n\n## Handoff\n\nReturn the schema and access-pattern notes to the invoking `backend` specialist. If the change is non-trivial, the backend agent chains into `backend-migration-writer` to author the actual migration. This skill writes the design; the migration file is a separate artifact.\n",{},"main","2e58b0360ca51ca3c96ca8e015ef5aba5738803d","skills\u002Fspecialists\u002Fbackend-data-layer",0,"https:\u002F\u002Fgithub.com\u002Flookatitude\u002Fguild","https:\u002F\u002Fgithub.com\u002Flookatitude","https:\u002F\u002Flookatitude.com","2026-11-06 03:55:18",{"source":7,"skillName":5,"commands":47,"prompt":57,"zipAvailable":58},[48,51,54],{"tool":49,"command":50},"npx","npx skills add lookatitude\u002Fguild --skill backend-data-layer",{"tool":52,"command":53},"bunx","bunx skills add lookatitude\u002Fguild --skill backend-data-layer",{"tool":55,"command":56},"pnpm","pnpm dlx skills add lookatitude\u002Fguild --skill backend-data-layer","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Flookatitude\u002Fguild\u002Fblob\u002Fmain\u002Fskills\u002Fspecialists\u002Fbackend-data-layer\u002FSKILL.md",true,[60],{"path":61,"resourceType":62,"resourceTypeDesc":63,"sizeBytes":64,"sourceHtmlUrl":65},"evals.json","REFERENCE","参考文档",617,"https:\u002F\u002Fgithub.com\u002Flookatitude\u002Fguild\u002Fblob\u002Fmain\u002Fskills\u002Fspecialists\u002Fbackend-data-layer\u002Fevals.json",[67,79,89,103,121,132],{"skillNo":68,"name":69,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":11,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":70,"categories":71,"keywords":72,"publishedAt":33},"01M71GQQ1ZAND0XQBS4GTSWYFK","technical-writer-user-manual","https:\u002F\u002Fgithub.com\u002Flookatitude\u002Fguild\u002Fblob\u002Fmain\u002Fskills\u002Fspecialists\u002Ftechnical-writer-user-manual\u002FSKILL.md",[],[73,74,75,76,77,78],"writer","technical","technical writer","technical writer user manual","manual","user",{"skillNo":80,"name":81,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":11,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":82,"categories":83,"keywords":84,"publishedAt":33},"01M71GQMQ71DQNH4A7REXRVFCB","technical-writer-release-notes","https:\u002F\u002Fgithub.com\u002Flookatitude\u002Fguild\u002Fblob\u002Fmain\u002Fskills\u002Fspecialists\u002Ftechnical-writer-release-notes\u002FSKILL.md",[],[85,73,86,87,88,74,75],"release","notes","technical writer release notes","release notes",{"skillNo":90,"name":91,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":11,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":92,"categories":93,"keywords":98,"publishedAt":33},"01M71GQJQT9G8QHE0A9SN01VE4","technical-writer-api-docs","https:\u002F\u002Fgithub.com\u002Flookatitude\u002Fguild\u002Fblob\u002Fmain\u002Fskills\u002Fspecialists\u002Ftechnical-writer-api-docs\u002FSKILL.md",[94,95],{"categoryNo":18,"categoryName":19,"taxonomyType":20,"taxonomyTypeDesc":21},{"categoryNo":96,"categoryName":97,"taxonomyType":25,"taxonomyTypeDesc":26},"01JBSEEDCAT000000000000030","开发工程师",[99,74,75,100,101,102,73],"technical writer api docs","docs","api docs","api",{"skillNo":104,"name":105,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":11,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":106,"categories":107,"keywords":114,"publishedAt":33},"01M71GQH3T5F23M2M298WXVAQ5","social-media-platform-post","https:\u002F\u002Fgithub.com\u002Flookatitude\u002Fguild\u002Fblob\u002Fmain\u002Fskills\u002Fspecialists\u002Fsocial-media-platform-post\u002FSKILL.md",[108,111],{"categoryNo":109,"categoryName":110,"taxonomyType":20,"taxonomyTypeDesc":21},"01JBSEEDCAT000000000000019","营销推广",{"categoryNo":112,"categoryName":113,"taxonomyType":25,"taxonomyTypeDesc":26},"01JBSEEDCAT000000000000035","市场营销",[115,116,117,118,119,120],"social media platform post","post","Media","platform","social","social media",{"skillNo":122,"name":123,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":11,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":124,"categories":125,"keywords":128,"publishedAt":33},"01M71GQFS4MJ4S8ZRK7KQNNPJE","social-media-engagement-templates","https:\u002F\u002Fgithub.com\u002Flookatitude\u002Fguild\u002Fblob\u002Fmain\u002Fskills\u002Fspecialists\u002Fsocial-media-engagement-templates\u002FSKILL.md",[126,127],{"categoryNo":109,"categoryName":110,"taxonomyType":20,"taxonomyTypeDesc":21},{"categoryNo":112,"categoryName":113,"taxonomyType":25,"taxonomyTypeDesc":26},[119,129,117,130,131,120],"engagement","social media engagement templates","templates",{"skillNo":133,"name":134,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":11,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":135,"categories":136,"keywords":142,"publishedAt":33},"01M71GQEPZ5GX6NBFQ9H0W5E0C","social-media-content-calendar","https:\u002F\u002Fgithub.com\u002Flookatitude\u002Fguild\u002Fblob\u002Fmain\u002Fskills\u002Fspecialists\u002Fsocial-media-content-calendar\u002FSKILL.md",[137,138,139],{"categoryNo":109,"categoryName":110,"taxonomyType":20,"taxonomyTypeDesc":21},{"categoryNo":112,"categoryName":113,"taxonomyType":25,"taxonomyTypeDesc":26},{"categoryNo":140,"categoryName":141,"taxonomyType":25,"taxonomyTypeDesc":26},"01JBSEEDCAT000000000000036","内容创作者",[143,144,119,120,145,146,117],"calendar","content calendar","social media content calendar","content"]