[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M78J53VFRBHCN0DM6C0RTACK":3,"skill-same:01M78J53VFRBHCN0DM6C0RTACK":51},{"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":24,"commitSha":25,"skillDirectory":26,"forksCount":14,"repositoryHtmlUrl":27,"repositoryHomepageUrl":6,"ownerHtmlUrl":28,"ownerBlogUrl":6,"ownerDescription":29,"updatedAt":30,"install":31,"resources":44},"01M78J53VFRBHCN0DM6C0RTACK","database-schema-designer",null,"Use when the user asks to create ERD diagrams, normalize database schemas, design table relationships, or plan schema migrations.","aneeba-pixel\u002Fclaude-skills","aneeba-pixel","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F218186338?v=4","01M78GRXBTG70217SH410P543Y","Aneeba Saeed","01M78GRXCDZ6TA0F8H2CZMDGSS",0,"MIT","https:\u002F\u002Fgithub.com\u002Faneeba-pixel\u002Fclaude-skills\u002Fblob\u002Fclaude\u002Fopen-prs-review-Of9HK\u002Fengineering\u002Fskills\u002Fdatabase-schema-designer\u002FSKILL.md",[],[],"2026-11-15 14:19:17",false,"---\nname: \"database-schema-designer\"\ndescription: \"Use when the user asks to create ERD diagrams, normalize database schemas, design table relationships, or plan schema migrations.\"\n---\n\n# Database Schema Designer\n\n**Tier:** POWERFUL  \n**Category:** Engineering  \n**Domain:** Data Architecture \u002F Backend  \n\n---\n\n## Overview\n\nDesign relational database schemas from requirements and generate migrations, TypeScript\u002FPython types, seed data, RLS policies, and indexes. Handles multi-tenancy, soft deletes, audit trails, versioning, and polymorphic associations.\n\n## Core Capabilities\n\n- **Schema design** — normalize requirements into tables, relationships, constraints\n- **Migration generation** — Drizzle, Prisma, TypeORM, Alembic\n- **Type generation** — TypeScript interfaces, Python dataclasses\u002FPydantic models\n- **RLS policies** — Row-Level Security for multi-tenant apps\n- **Index strategy** — composite indexes, partial indexes, covering indexes\n- **Seed data** — realistic test data generation\n- **ERD generation** — Mermaid diagram from schema\n\n---\n\n## When to Use\n\n- Designing a new feature that needs database tables\n- Reviewing a schema for performance or normalization issues\n- Adding multi-tenancy to an existing schema\n- Generating TypeScript types from a Prisma schema\n- Planning a schema migration for a breaking change\n\n---\n\n## Schema Design Process\n\n### Step 1: Requirements → Entities\n\nGiven requirements:\n> \"Users can create projects. Each project has tasks. Tasks can have labels. Tasks can be assigned to users. We need a full audit trail.\"\n\nExtract entities:\n```\nUser, Project, Task, Label, TaskLabel (junction), TaskAssignment, AuditLog\n```\n\n### Step 2: Identify Relationships\n\n```\nUser 1──* Project         (owner)\nProject 1──* Task\nTask *──* Label            (via TaskLabel)\nTask *──* User            (via TaskAssignment)\nUser 1──* AuditLog\n```\n\n### Step 3: Add Cross-cutting Concerns\n\n- Multi-tenancy: add `organization_id` to all tenant-scoped tables\n- Soft deletes: add `deleted_at TIMESTAMPTZ` instead of hard deletes\n- Audit trail: add `created_by`, `updated_by`, `created_at`, `updated_at`\n- Versioning: add `version INTEGER` for optimistic locking\n\n---\n\n## Full Schema Example (Task Management SaaS)\n→ See references\u002Ffull-schema-examples.md for details\n\n## Row-Level Security (RLS) Policies\n\n```sql\n-- Enable RLS\nALTER TABLE tasks ENABLE ROW LEVEL SECURITY;\nALTER TABLE projects ENABLE ROW LEVEL SECURITY;\n\n-- Create app role\nCREATE ROLE app_user;\n\n-- Users can only see tasks in their organization's projects\nCREATE POLICY tasks_org_isolation ON tasks\n  FOR ALL TO app_user\n  USING (\n    project_id IN (\n      SELECT p.id FROM projects p\n      JOIN organization_members om ON om.organization_id = p.organization_id\n      WHERE om.user_id = current_setting('app.current_user_id')::text\n    )\n  );\n\n-- Soft delete: never show deleted records\nCREATE POLICY tasks_no_deleted ON tasks\n  FOR SELECT TO app_user\n  USING (deleted_at IS NULL);\n\n-- Only task creator or admin can delete\nCREATE POLICY tasks_delete_policy ON tasks\n  FOR DELETE TO app_user\n  USING (\n    created_by_id = current_setting('app.current_user_id')::text\n    OR EXISTS (\n      SELECT 1 FROM organization_members om\n      JOIN projects p ON p.organization_id = om.organization_id\n      WHERE p.id = tasks.project_id\n        AND om.user_id = current_setting('app.current_user_id')::text\n        AND om.role IN ('owner', 'admin')\n    )\n  );\n\n-- Set user context (call at start of each request)\nSELECT set_config('app.current_user_id', $1, true);\n```\n\n---\n\n## Seed Data Generation\n\n```typescript\n\u002F\u002F db\u002Fseed.ts\nimport { faker } from '@faker-js\u002Ffaker'\nimport { db } from '.\u002Fclient'\nimport { organizations, users, projects, tasks } from '.\u002Fschema'\nimport { createId } from '@paralleldrive\u002Fcuid2'\nimport { hashPassword } from '..\u002Fsrc\u002Flib\u002Fauth'\n\nasync function seed() {\n  console.log('Seeding database...')\n\n  \u002F\u002F Create org\n  const [org] = await db.insert(organizations).values({\n    id: createId(),\n    name: \"acme-corp\",\n    slug: 'acme',\n    plan: 'growth',\n  }).returning()\n\n  \u002F\u002F Create users\n  const adminUser = await db.insert(users).values({\n    id: createId(),\n    email: 'admin@acme.com',\n    name: \"alice-admin\",\n    passwordHash: await hashPassword('password123'),\n  }).returning().then(r => r[0])\n\n  \u002F\u002F Create projects\n  const projectsData = Array.from({ length: 3 }, () => ({\n    id: createId(),\n    organizationId: org.id,\n    ownerId: adminUser.id,\n    name: \"fakercompanycatchphrase\"\n    description: faker.lorem.paragraph(),\n    status: 'active' as const,\n  }))\n\n  const createdProjects = await db.insert(projects).values(projectsData).returning()\n\n  \u002F\u002F Create tasks for each project\n  for (const project of createdProjects) {\n    const tasksData = Array.from({ length: faker.number.int({ min: 5, max: 20 }) }, (_, i) => ({\n      id: createId(),\n      projectId: project.id,\n      title: faker.hacker.phrase(),\n      description: faker.lorem.sentences(2),\n      status: faker.helpers.arrayElement(['todo', 'in_progress', 'done'] as const),\n      priority: faker.helpers.arrayElement(['low', 'medium', 'high'] as const),\n      position: i * 1000,\n      createdById: adminUser.id,\n      updatedById: adminUser.id,\n    }))\n\n    await db.insert(tasks).values(tasksData)\n  }\n\n  console.log(`✅ Seeded: 1 org, ${projectsData.length} projects, tasks`)\n}\n\nseed().catch(console.error).finally(() => process.exit(0))\n```\n\n---\n\n## ERD Generation (Mermaid)\n\n```\nerDiagram\n    Organization ||--o{ OrganizationMember : has\n    Organization ||--o{ Project : owns\n    User ||--o{ OrganizationMember : joins\n    User ||--o{ Task : \"created by\"\n    Project ||--o{ Task : contains\n    Task ||--o{ TaskAssignment : has\n    Task ||--o{ TaskLabel : has\n    Task ||--o{ Comment : has\n    Task ||--o{ Attachment : has\n    Label ||--o{ TaskLabel : \"applied to\"\n    User ||--o{ TaskAssignment : assigned\n\n    Organization {\n        string id PK\n        string name\n        string slug\n        string plan\n    }\n\n    Task {\n        string id PK\n        string project_id FK\n        string title\n        string status\n        string priority\n        timestamp due_date\n        timestamp deleted_at\n        int version\n    }\n```\n\nGenerate from Prisma:\n```bash\nnpx prisma-erd-generator\n# or: npx @dbml\u002Fcli prisma2dbml -i schema.prisma | npx dbml-to-mermaid\n```\n\n---\n\n## Common Pitfalls\n\n- **Soft delete without index** — `WHERE deleted_at IS NULL` without index = full scan\n- **Missing composite indexes** — `WHERE org_id = ? AND status = ?` needs a composite index\n- **Mutable surrogate keys** — never use email or slug as PK; use UUID\u002FCUID\n- **Non-nullable without default** — adding a NOT NULL column to existing table requires default or migration plan\n- **No optimistic locking** — concurrent updates overwrite each other; add `version` column\n- **RLS not tested** — always test RLS with a non-superuser role\n\n---\n\n## Best Practices\n\n1. **Timestamps everywhere** — `created_at`, `updated_at` on every table\n2. **Soft deletes for auditable data** — `deleted_at` instead of DELETE\n3. **Audit log for compliance** — log before\u002Fafter JSON for regulated domains\n4. **UUIDs or CUIDs as PKs** — avoid sequential integer leakage\n5. **Index foreign keys** — every FK column should have an index\n6. **Partial indexes** — use `WHERE deleted_at IS NULL` for active-only queries\n7. **RLS over application-level filtering** — database enforces tenancy, not just app code\n","# Database Schema Designer\n\n**Tier:** POWERFUL  \n**Category:** Engineering  \n**Domain:** Data Architecture \u002F Backend  \n\n---\n\n## Overview\n\nDesign relational database schemas from requirements and generate migrations, TypeScript\u002FPython types, seed data, RLS policies, and indexes. Handles multi-tenancy, soft deletes, audit trails, versioning, and polymorphic associations.\n\n## Core Capabilities\n\n- **Schema design** — normalize requirements into tables, relationships, constraints\n- **Migration generation** — Drizzle, Prisma, TypeORM, Alembic\n- **Type generation** — TypeScript interfaces, Python dataclasses\u002FPydantic models\n- **RLS policies** — Row-Level Security for multi-tenant apps\n- **Index strategy** — composite indexes, partial indexes, covering indexes\n- **Seed data** — realistic test data generation\n- **ERD generation** — Mermaid diagram from schema\n\n---\n\n## When to Use\n\n- Designing a new feature that needs database tables\n- Reviewing a schema for performance or normalization issues\n- Adding multi-tenancy to an existing schema\n- Generating TypeScript types from a Prisma schema\n- Planning a schema migration for a breaking change\n\n---\n\n## Schema Design Process\n\n### Step 1: Requirements → Entities\n\nGiven requirements:\n> \"Users can create projects. Each project has tasks. Tasks can have labels. Tasks can be assigned to users. We need a full audit trail.\"\n\nExtract entities:\n```\nUser, Project, Task, Label, TaskLabel (junction), TaskAssignment, AuditLog\n```\n\n### Step 2: Identify Relationships\n\n```\nUser 1──* Project         (owner)\nProject 1──* Task\nTask *──* Label            (via TaskLabel)\nTask *──* User            (via TaskAssignment)\nUser 1──* AuditLog\n```\n\n### Step 3: Add Cross-cutting Concerns\n\n- Multi-tenancy: add `organization_id` to all tenant-scoped tables\n- Soft deletes: add `deleted_at TIMESTAMPTZ` instead of hard deletes\n- Audit trail: add `created_by`, `updated_by`, `created_at`, `updated_at`\n- Versioning: add `version INTEGER` for optimistic locking\n\n---\n\n## Full Schema Example (Task Management SaaS)\n→ See references\u002Ffull-schema-examples.md for details\n\n## Row-Level Security (RLS) Policies\n\n```sql\n-- Enable RLS\nALTER TABLE tasks ENABLE ROW LEVEL SECURITY;\nALTER TABLE projects ENABLE ROW LEVEL SECURITY;\n\n-- Create app role\nCREATE ROLE app_user;\n\n-- Users can only see tasks in their organization's projects\nCREATE POLICY tasks_org_isolation ON tasks\n  FOR ALL TO app_user\n  USING (\n    project_id IN (\n      SELECT p.id FROM projects p\n      JOIN organization_members om ON om.organization_id = p.organization_id\n      WHERE om.user_id = current_setting('app.current_user_id')::text\n    )\n  );\n\n-- Soft delete: never show deleted records\nCREATE POLICY tasks_no_deleted ON tasks\n  FOR SELECT TO app_user\n  USING (deleted_at IS NULL);\n\n-- Only task creator or admin can delete\nCREATE POLICY tasks_delete_policy ON tasks\n  FOR DELETE TO app_user\n  USING (\n    created_by_id = current_setting('app.current_user_id')::text\n    OR EXISTS (\n      SELECT 1 FROM organization_members om\n      JOIN projects p ON p.organization_id = om.organization_id\n      WHERE p.id = tasks.project_id\n        AND om.user_id = current_setting('app.current_user_id')::text\n        AND om.role IN ('owner', 'admin')\n    )\n  );\n\n-- Set user context (call at start of each request)\nSELECT set_config('app.current_user_id', $1, true);\n```\n\n---\n\n## Seed Data Generation\n\n```typescript\n\u002F\u002F db\u002Fseed.ts\nimport { faker } from '@faker-js\u002Ffaker'\nimport { db } from '.\u002Fclient'\nimport { organizations, users, projects, tasks } from '.\u002Fschema'\nimport { createId } from '@paralleldrive\u002Fcuid2'\nimport { hashPassword } from '..\u002Fsrc\u002Flib\u002Fauth'\n\nasync function seed() {\n  console.log('Seeding database...')\n\n  \u002F\u002F Create org\n  const [org] = await db.insert(organizations).values({\n    id: createId(),\n    name: \"acme-corp\",\n    slug: 'acme',\n    plan: 'growth',\n  }).returning()\n\n  \u002F\u002F Create users\n  const adminUser = await db.insert(users).values({\n    id: createId(),\n    email: 'admin@acme.com',\n    name: \"alice-admin\",\n    passwordHash: await hashPassword('password123'),\n  }).returning().then(r => r[0])\n\n  \u002F\u002F Create projects\n  const projectsData = Array.from({ length: 3 }, () => ({\n    id: createId(),\n    organizationId: org.id,\n    ownerId: adminUser.id,\n    name: \"fakercompanycatchphrase\"\n    description: faker.lorem.paragraph(),\n    status: 'active' as const,\n  }))\n\n  const createdProjects = await db.insert(projects).values(projectsData).returning()\n\n  \u002F\u002F Create tasks for each project\n  for (const project of createdProjects) {\n    const tasksData = Array.from({ length: faker.number.int({ min: 5, max: 20 }) }, (_, i) => ({\n      id: createId(),\n      projectId: project.id,\n      title: faker.hacker.phrase(),\n      description: faker.lorem.sentences(2),\n      status: faker.helpers.arrayElement(['todo', 'in_progress', 'done'] as const),\n      priority: faker.helpers.arrayElement(['low', 'medium', 'high'] as const),\n      position: i * 1000,\n      createdById: adminUser.id,\n      updatedById: adminUser.id,\n    }))\n\n    await db.insert(tasks).values(tasksData)\n  }\n\n  console.log(`✅ Seeded: 1 org, ${projectsData.length} projects, tasks`)\n}\n\nseed().catch(console.error).finally(() => process.exit(0))\n```\n\n---\n\n## ERD Generation (Mermaid)\n\n```\nerDiagram\n    Organization ||--o{ OrganizationMember : has\n    Organization ||--o{ Project : owns\n    User ||--o{ OrganizationMember : joins\n    User ||--o{ Task : \"created by\"\n    Project ||--o{ Task : contains\n    Task ||--o{ TaskAssignment : has\n    Task ||--o{ TaskLabel : has\n    Task ||--o{ Comment : has\n    Task ||--o{ Attachment : has\n    Label ||--o{ TaskLabel : \"applied to\"\n    User ||--o{ TaskAssignment : assigned\n\n    Organization {\n        string id PK\n        string name\n        string slug\n        string plan\n    }\n\n    Task {\n        string id PK\n        string project_id FK\n        string title\n        string status\n        string priority\n        timestamp due_date\n        timestamp deleted_at\n        int version\n    }\n```\n\nGenerate from Prisma:\n```bash\nnpx prisma-erd-generator\n# or: npx @dbml\u002Fcli prisma2dbml -i schema.prisma | npx dbml-to-mermaid\n```\n\n---\n\n## Common Pitfalls\n\n- **Soft delete without index** — `WHERE deleted_at IS NULL` without index = full scan\n- **Missing composite indexes** — `WHERE org_id = ? AND status = ?` needs a composite index\n- **Mutable surrogate keys** — never use email or slug as PK; use UUID\u002FCUID\n- **Non-nullable without default** — adding a NOT NULL column to existing table requires default or migration plan\n- **No optimistic locking** — concurrent updates overwrite each other; add `version` column\n- **RLS not tested** — always test RLS with a non-superuser role\n\n---\n\n## Best Practices\n\n1. **Timestamps everywhere** — `created_at`, `updated_at` on every table\n2. **Soft deletes for auditable data** — `deleted_at` instead of DELETE\n3. **Audit log for compliance** — log before\u002Fafter JSON for regulated domains\n4. **UUIDs or CUIDs as PKs** — avoid sequential integer leakage\n5. **Index foreign keys** — every FK column should have an index\n6. **Partial indexes** — use `WHERE deleted_at IS NULL` for active-only queries\n7. **RLS over application-level filtering** — database enforces tenancy, not just app code\n",{"name":5,"description":7},"claude\u002Fopen-prs-review-Of9HK","a48d8438efe8e36550acc4c2006bdcddf62911db","engineering\u002Fskills\u002Fdatabase-schema-designer","https:\u002F\u002Fgithub.com\u002Faneeba-pixel\u002Fclaude-skills","https:\u002F\u002Fgithub.com\u002Faneeba-pixel","Student at University of Gujrat","2026-07-14 21:41:17",{"source":8,"skillName":5,"commands":32,"prompt":42,"zipAvailable":43},[33,36,39],{"tool":34,"command":35},"npx","npx skills add aneeba-pixel\u002Fclaude-skills --skill database-schema-designer",{"tool":37,"command":38},"bunx","bunx skills add aneeba-pixel\u002Fclaude-skills --skill database-schema-designer",{"tool":40,"command":41},"pnpm","pnpm dlx skills add aneeba-pixel\u002Fclaude-skills --skill database-schema-designer","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Faneeba-pixel\u002Fclaude-skills\u002Fblob\u002Fclaude\u002Fopen-prs-review-Of9HK\u002Fengineering\u002Fskills\u002Fdatabase-schema-designer\u002FSKILL.md",true,[45],{"path":46,"resourceType":47,"resourceTypeDesc":48,"sizeBytes":49,"sourceHtmlUrl":50},"references\u002Ffull-schema-examples.md","REFERENCE","参考文档",10443,"https:\u002F\u002Fgithub.com\u002Faneeba-pixel\u002Fclaude-skills\u002Fblob\u002Fclaude\u002Fopen-prs-review-Of9HK\u002Fengineering\u002Fskills\u002Fdatabase-schema-designer\u002Freferences\u002Ffull-schema-examples.md",[52,59,66,73,80,87],{"skillNo":53,"name":54,"nameZh":6,"description":55,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":56,"categories":57,"keywords":58,"publishedAt":19},"01M78K120A3JKH3NH8GC19YG4M","syllabus","Generates a curated supplementary reading list from any course syllabus using Consensus academic search. Grill-me intake (syllabus input format + course audience + year range) plus a grouping forcing-options checkpoint before any search runs — so the reading list matches the course's level and recency need. Parses the syllabus to extract topics and learning outcomes, searches Consensus for recent peer-reviewed papers per topic, and produces a professionally formatted .docx with clickable Consensus links, plain-language summaries calibrated to audience level, and Bloom-higher-order discussion questions tied to course learning goals. Triggers whenever a user uploads a syllabus, course outline, or curriculum document and wants supplementary readings. Also triggers on: 'syllabus reading list', 'find papers for my course', 'create a reading list from this syllabus', 'recent research for my class', 'supplementary readings', 'find journal articles for these topics', 'what recent papers cover this material', 'any new research on these course topics', 'update my syllabus with recent papers'. Even casual mentions when a syllabus is attached should trigger this skill.","https:\u002F\u002Fgithub.com\u002Faneeba-pixel\u002Fclaude-skills\u002Fblob\u002Fclaude\u002Fopen-prs-review-Of9HK\u002Fresearch\u002Fsyllabus\u002Fskills\u002Fsyllabus\u002FSKILL.md",[],[],{"skillNo":60,"name":61,"nameZh":6,"description":62,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":63,"categories":64,"keywords":65,"publishedAt":19},"01M78K0QS9AGDJ43CPQYEHM5S0","research","Default entry point for any research request — a hybrid router that classifies the question deterministically and either delegates to a specialist research skill (pulse for trends\u002Fsentiment, grants for NIH funding, litreview for academic literature, syllabus for course reading, patent for prior-art + IP landscape, dossier for entity research) or runs its own plan-decompose-multi-source-search-synthesize-cite fallback workflow when no specialist matches. Always surfaces the routing decision so users can override. Triggers — \"research [topic]\", \"look into [topic]\", \"what do we know about [topic]\", \"investigate [topic]\", \"find me information on [topic]\", \"do some research on [topic]\", \"I need to understand [topic]\", or any research request that doesn't obviously match a more-specific specialist skill. Output is a markdown briefing (default) or .docx document (on request) with full citations and an audit log.","https:\u002F\u002Fgithub.com\u002Faneeba-pixel\u002Fclaude-skills\u002Fblob\u002Fclaude\u002Fopen-prs-review-Of9HK\u002Fresearch\u002Fresearch\u002Fskills\u002Fresearch\u002FSKILL.md",[],[],{"skillNo":67,"name":68,"nameZh":6,"description":69,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":70,"categories":71,"keywords":72,"publishedAt":19},"01M78K0FV3HMJ94SK965CWMNNP","pulse","Multi-source recency research skill that takes the pulse of any topic across Reddit, Hacker News, the open web, and optionally X\u002FTwitter within a configurable recent window (default 30 days). Forcing intake clarifies topic specificity, angle (trend\u002Fsentiment\u002Fproblems\u002Fopportunities\u002Fcomparison), time window, and platform scope before searching. Returns a synthesized briefing with citations, engagement metrics, and cross-platform pattern analysis. Triggers: 'pulse on [topic]', 'what's happening with [topic]', 'what are people saying about [topic]', 'current conversation about [topic]', 'take the pulse of [topic]', 'trending: [topic]', 'find me info on [topic]', or any variation requesting multi-source recency intelligence on a topic. Also use for competitor research, trend discovery, tool comparisons, and audience sentiment analysis.","https:\u002F\u002Fgithub.com\u002Faneeba-pixel\u002Fclaude-skills\u002Fblob\u002Fclaude\u002Fopen-prs-review-Of9HK\u002Fresearch\u002Fpulse\u002Fskills\u002Fpulse\u002FSKILL.md",[],[],{"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":19},"01M78K04E77B04KYBB6M01EV3J","patent","Patent prior-art and landscape intelligence skill — not generic patent help. Commits to one of five sub-use-cases via forcing intake (novelty search \u002F freedom-to-operate \u002F competitive landscape \u002F acquisition diligence \u002F litigation prior-art) before any search runs. Searches Google Patents, Espacenet, USPTO, and optionally Lens.org for citation-graph signals. Output is an editable Word document (.docx) with verdict, ranked closest art (claim-text extracted), CPC-class-aware landscape, family-resolved hits, geographic coverage, FTO flags where applicable, strategy recommendations, and full audit log. Triggers: 'prior art search for [invention]', 'patent search on [topic]', 'freedom to operate analysis', 'FTO for [product]', 'patent landscape for [field]', 'is [invention] novel', 'patents on [topic]', 'competitive patent analysis', 'prior art for litigation', 'patent diligence on [company]'. Produces search signal, not legal advice — always recommends consulting a patent attorney before filing or licensing decisions. Trademark, copyright, and trade-secret questions are out of scope.","https:\u002F\u002Fgithub.com\u002Faneeba-pixel\u002Fclaude-skills\u002Fblob\u002Fclaude\u002Fopen-prs-review-Of9HK\u002Fresearch\u002Fpatent\u002Fskills\u002Fpatent\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":15,"licenseFileUrl":6,"sourceHtmlUrl":84,"categories":85,"keywords":86,"publishedAt":19},"01M78JZW8XEFZP6HSF53M8D4M1","notebooklm","Browser automation skill for controlling Google's NotebookLM. Handles reading and querying notebooks, adding sources (URLs, text, files, YouTube links, synthesized content), generating Studio outputs (Audio Overview, infographics, slide decks, study guides, briefing docs, mind maps, timelines, FAQs), and creating new notebooks. Triggers on any phrase involving NotebookLM — 'open NotebookLM', 'check my [name] notebook', 'pull info from NotebookLM', 'ask my notebook about X', 'add [source] to NotebookLM', 'create an infographic in NotebookLM', 'use NotebookLM Studio', 'generate a slide deck from my notebook', or any variation where the goal involves NotebookLM. Requires browser automation environment — fails gracefully when unavailable.","https:\u002F\u002Fgithub.com\u002Faneeba-pixel\u002Fclaude-skills\u002Fblob\u002Fclaude\u002Fopen-prs-review-Of9HK\u002Fresearch\u002Fnotebooklm\u002Fskills\u002Fnotebooklm\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},"01M78JZHX45S2Y0GPY9Z5V6TQ3","litreview","Academic literature orientation skill that searches papers via Consensus, builds a strategic search plan using PICO (default) or SPIDER \u002F Decomposition \u002F hybrid as fallbacks, and synthesizes findings into a professionally formatted Word document (.docx) research guide. Grill-me intake (research question specificity + framework hint + tentative depth) before the recon search; a second forcing checkpoint after Phase 2 confirms framework + sub-areas + depth before searches consume budget. Configurable depth (5\u002F10\u002F20 queries) controls coverage vs. speed. Output is a 'launching pad' — not a finished review, but an orientation guide that lets a researcher dive in confidently. Triggers: 'litreview on [topic]', 'literature review on [topic]', 'I'm starting a literature review on X', 'I'm writing a paper on X', 'help me research X', 'I'm doing research on X', 'can you help me research X'. Do NOT trigger for single one-off paper searches where the user just wants a quick list — that's a plain Consensus search.","https:\u002F\u002Fgithub.com\u002Faneeba-pixel\u002Fclaude-skills\u002Fblob\u002Fclaude\u002Fopen-prs-review-Of9HK\u002Fresearch\u002Flitreview\u002Fskills\u002Flitreview\u002FSKILL.md",[],[]]