[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6CT9E5JFR4Z46DCVCZXRA1P":3,"skill-same:01M6CT9E5JFR4Z46DCVCZXRA1P":63},{"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":26,"linkOnly":27,"markdownContent":28,"markdownBody":29,"frontMatter":30,"refName":31,"commitSha":32,"skillDirectory":33,"forksCount":34,"repositoryHtmlUrl":35,"repositoryHomepageUrl":6,"ownerHtmlUrl":36,"ownerBlogUrl":6,"ownerDescription":37,"updatedAt":38,"install":39,"resources":52},"01M6CT9E5JFR4Z46DCVCZXRA1P","multi-tenancy",null,"Designs multi-tenant architecture: org scoping, row-level security and tenant data isolation. Use when designing or auditing how customers' data is kept separate.","vibbs\u002Fcompany-os","vibbs","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F7379149?v=4","01M6CT6M03CAS1H7RA89F3965B","Vibbs Dod","01M6CT6M4MY60C9FFQ3AAR2RSK",6,"MIT","https:\u002F\u002Fgithub.com\u002Fvibbs\u002Fcompany-os\u002Fblob\u002Fmain\u002F.claude\u002Fskills\u002Fmulti-tenancy\u002FSKILL.md",[],[19,20,21,22,23,24,25],"multi tenancy","security","architecture","data","how","scoping","use","2026-11-10 10:12:30",false,"---\nname: multi-tenancy\ndescription: \"Designs multi-tenant architecture: org scoping, row-level security and tenant data isolation. Use when designing or auditing how customers' data is kept separate.\"\nuser-invocable: false\n---\n\n# Multi-Tenancy\n\n## Reference\n- **ID**: S-ENG-04\n- **Category**: Engineering\n- **Inputs**: data model, tenant boundaries, isolation requirements, compliance constraints\n- **Outputs**: multi-tenancy design document → artifacts\u002Fengineering\u002F\n- **Used by**: Engineering Agent\n- **Tool scripts**: .\u002Ftools\u002Fartifact\u002Fvalidate.sh\n\n## Purpose\nDefines the architecture and conventions for multi-tenant data isolation, ensuring that tenant data is properly scoped, row-level security is enforced, and cross-tenant data leakage is prevented at every layer of the stack.\n\n## Procedure\n\n### Step 0: Multi-Tenancy Check\n\nRead `architecture.multi_tenant` from `company.config.yaml`.\n\nIf `false` or absent: output \"Multi-tenancy not configured for this project. Set `architecture.multi_tenant: true` in company.config.yaml to enable multi-tenant design patterns.\" and skip the remaining procedure.\n\nIf `true`: proceed with full multi-tenancy design.\n\n### Steps\n1. Define the tenant model: what constitutes a tenant (org, workspace, account).\n2. Choose the isolation strategy: shared database with RLS, schema-per-tenant, or database-per-tenant.\n3. Design the org-scoping layer: how every query is automatically scoped to the current tenant.\n4. Implement row-level security (RLS) policies at the database level.\n5. Define middleware\u002Fcontext propagation to carry tenant ID through the request lifecycle.\n6. Audit all data access paths to ensure no unscoped queries exist.\n7. Design tenant-aware caching: cache keys must include tenant ID.\n8. Define cross-tenant operation policies (admin access, data migration, support tooling).\n9. Document testing strategy: how to verify isolation in automated tests.\n10. Save the design document to `artifacts\u002Fengineering\u002F`.\n11. Validate the artifact using `.\u002Ftools\u002Fartifact\u002Fvalidate.sh`.\n\n## Quality Checklist\n- [ ] Tenant model is clearly defined with boundary rules\n- [ ] RLS policies are applied to all tenant-scoped tables\n- [ ] No unscoped queries exist in the codebase\n- [ ] Cache keys include tenant ID\n- [ ] Middleware propagates tenant context on every request\n- [ ] Cross-tenant access is explicitly gated and audited\n- [ ] Automated tests verify tenant isolation\n- [ ] Artifact passes validation\n","# Multi-Tenancy\n\n## Reference\n- **ID**: S-ENG-04\n- **Category**: Engineering\n- **Inputs**: data model, tenant boundaries, isolation requirements, compliance constraints\n- **Outputs**: multi-tenancy design document → artifacts\u002Fengineering\u002F\n- **Used by**: Engineering Agent\n- **Tool scripts**: .\u002Ftools\u002Fartifact\u002Fvalidate.sh\n\n## Purpose\nDefines the architecture and conventions for multi-tenant data isolation, ensuring that tenant data is properly scoped, row-level security is enforced, and cross-tenant data leakage is prevented at every layer of the stack.\n\n## Procedure\n\n### Step 0: Multi-Tenancy Check\n\nRead `architecture.multi_tenant` from `company.config.yaml`.\n\nIf `false` or absent: output \"Multi-tenancy not configured for this project. Set `architecture.multi_tenant: true` in company.config.yaml to enable multi-tenant design patterns.\" and skip the remaining procedure.\n\nIf `true`: proceed with full multi-tenancy design.\n\n### Steps\n1. Define the tenant model: what constitutes a tenant (org, workspace, account).\n2. Choose the isolation strategy: shared database with RLS, schema-per-tenant, or database-per-tenant.\n3. Design the org-scoping layer: how every query is automatically scoped to the current tenant.\n4. Implement row-level security (RLS) policies at the database level.\n5. Define middleware\u002Fcontext propagation to carry tenant ID through the request lifecycle.\n6. Audit all data access paths to ensure no unscoped queries exist.\n7. Design tenant-aware caching: cache keys must include tenant ID.\n8. Define cross-tenant operation policies (admin access, data migration, support tooling).\n9. Document testing strategy: how to verify isolation in automated tests.\n10. Save the design document to `artifacts\u002Fengineering\u002F`.\n11. Validate the artifact using `.\u002Ftools\u002Fartifact\u002Fvalidate.sh`.\n\n## Quality Checklist\n- [ ] Tenant model is clearly defined with boundary rules\n- [ ] RLS policies are applied to all tenant-scoped tables\n- [ ] No unscoped queries exist in the codebase\n- [ ] Cache keys include tenant ID\n- [ ] Middleware propagates tenant context on every request\n- [ ] Cross-tenant access is explicitly gated and audited\n- [ ] Automated tests verify tenant isolation\n- [ ] Artifact passes validation\n",{"name":5,"description":7,"user-invocable":27},"main","e842fb6d0e04360c47db78bc2e2e2987314d64d4",".claude\u002Fskills\u002Fmulti-tenancy",2,"https:\u002F\u002Fgithub.com\u002Fvibbs\u002Fcompany-os","https:\u002F\u002Fgithub.com\u002Fvibbs","Principal Engineer · Applied AI · building ArcAI @ GrowthArc","2026-10-21 02:08:08",{"source":8,"skillName":5,"commands":40,"prompt":50,"zipAvailable":51},[41,44,47],{"tool":42,"command":43},"npx","npx skills add vibbs\u002Fcompany-os --skill multi-tenancy",{"tool":45,"command":46},"bunx","bunx skills add vibbs\u002Fcompany-os --skill multi-tenancy",{"tool":48,"command":49},"pnpm","pnpm dlx skills add vibbs\u002Fcompany-os --skill multi-tenancy","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fvibbs\u002Fcompany-os\u002Fblob\u002Fmain\u002F.claude\u002Fskills\u002Fmulti-tenancy\u002FSKILL.md",true,[53,59],{"path":54,"resourceType":55,"resourceTypeDesc":56,"sizeBytes":57,"sourceHtmlUrl":58},"Workflows\u002FConsultingReport.md","REFERENCE","参考文档",10387,"https:\u002F\u002Fgithub.com\u002Ffadrienne\u002FMyGitHub\u002Fblob\u002Fmain\u002FPersonal_AI_Infrastructure\u002FPacks\u002FUtilities\u002Fsrc\u002FDocuments\u002FWorkflows\u002FConsultingReport.md",{"path":60,"resourceType":55,"resourceTypeDesc":56,"sizeBytes":61,"sourceHtmlUrl":62},"Workflows\u002FProcessLargePdfGemini3.md",18449,"https:\u002F\u002Fgithub.com\u002Ffadrienne\u002FMyGitHub\u002Fblob\u002Fmain\u002FPersonal_AI_Infrastructure\u002FPacks\u002FUtilities\u002Fsrc\u002FDocuments\u002FWorkflows\u002FProcessLargePdfGemini3.md",[64,73,81,91,107,125],{"skillNo":65,"name":66,"nameZh":6,"description":67,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":68,"categories":69,"keywords":70,"publishedAt":26},"01M6CTHBW1E64ECYGD105N4S5E","typo-field","Fixture skill with a misspelled top-level field.","https:\u002F\u002Fgithub.com\u002Fvibbs\u002Fcompany-os\u002Fblob\u002Fmain\u002Ftests\u002Ffixtures\u002Fskills\u002Ftypo-field\u002FSKILL.md",[],[71,72],"typo field","fixture skill",{"skillNo":74,"name":75,"nameZh":6,"description":76,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":77,"categories":78,"keywords":79,"publishedAt":26},"01M6CTHABTV8FKVDHFMMKPAV51","spaced-comments","Fixture skill with comments and spaces after block keys.","https:\u002F\u002Fgithub.com\u002Fvibbs\u002Fcompany-os\u002Fblob\u002Fmain\u002Ftests\u002Ffixtures\u002Fskills\u002Fspaced-comments\u002FSKILL.md",[],[80,72],"spaced comments",{"skillNo":82,"name":83,"nameZh":6,"description":84,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":85,"categories":86,"keywords":87,"publishedAt":26},"01M6CTH8MHC14KB65ZDHYBJW1N","crlf-comments","Fixture skill with Windows line endings.","https:\u002F\u002Fgithub.com\u002Fvibbs\u002Fcompany-os\u002Fblob\u002Fmain\u002Ftests\u002Ffixtures\u002Fskills\u002Fcrlf-comments\u002FSKILL.md",[],[88,89,90,72],"crlf comments","CRLF","windows",{"skillNo":92,"name":93,"nameZh":6,"description":94,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":95,"categories":96,"keywords":97,"publishedAt":26},"01M6CTH6TBKTDP9G8QB1Z2K0TY","claude-fields","Fixture skill using top-level fields Claude Code documents.","https:\u002F\u002Fgithub.com\u002Fvibbs\u002Fcompany-os\u002Fblob\u002Fmain\u002Ftests\u002Ffixtures\u002Fskills\u002Fclaude-fields\u002FSKILL.md",[],[98,99,100,101,102,103,72,104,105,106],"claude fields","explore","documents","src","grep","read","Bash","code","testing",{"skillNo":108,"name":109,"nameZh":6,"description":110,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":111,"categories":112,"keywords":118,"publishedAt":26},"01M6CTH46BGKXH80RWS876Y2CW","workflow-router","Maps an objective to the artifacts, stages and agents it needs. Use when deciding what happens next or which agents to involve.","https:\u002F\u002Fgithub.com\u002Fvibbs\u002Fcompany-os\u002Fblob\u002Fmain\u002Fos\u002Fskills\u002Fworkflow-router\u002FSKILL.md",[113],{"categoryNo":114,"categoryName":115,"taxonomyType":116,"taxonomyTypeDesc":117},"01JBSEEDCAT000000000000023","Skill与智能体开发","SCENARIO","使用场景",[119,120,121,122,123,25,124],"workflow","router","workflow router","next","maps","artifacts",{"skillNo":126,"name":127,"nameZh":6,"description":128,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":129,"categories":130,"keywords":131,"publishedAt":26},"01M6CTH27653SRVP2FMEQN3J5B","weekly-review","Summarizes your week: what shipped, AI spend, support themes, security health and next priorities. Use at the end of each week.","https:\u002F\u002Fgithub.com\u002Fvibbs\u002Fcompany-os\u002Fblob\u002Fmain\u002Fos\u002Fskills\u002Fweekly-review\u002FSKILL.md",[],[132,133,134,122,25,135,136,137,20],"weekly review","review","priorities","health","save","support"]