Claude-skill-registry graphql-schema-generator
Generate GraphQL schemas, resolvers, and type definitions. Use when designing GraphQL APIs or documenting GraphQL schemas.
install
source · Clone the upstream repo
git clone https://github.com/majiayu000/claude-skill-registry
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/majiayu000/claude-skill-registry "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/data/graphql-schema-generator" ~/.claude/skills/majiayu000-claude-skill-registry-graphql-schema-generator && rm -rf "$T"
manifest:
skills/data/graphql-schema-generator/SKILL.mdsource content
GraphQL Schema Generator Skill
GraphQLスキーマを生成するスキルです。
概要
データモデルからGraphQLスキーマ、リゾルバーを自動生成します。
主な機能
- スキーマ定義: Type、Query、Mutation
- リゾルバー生成: 実装テンプレート
- ベストプラクティス: ページネーション、エラーハンドリング
- ドキュメント: 自動生成
生成例
Schema
# Types type User { id: ID! name: String! email: String! posts: [Post!]! createdAt: DateTime! } type Post { id: ID! title: String! content: String! author: User! published: Boolean! createdAt: DateTime! updatedAt: DateTime! } type Query { user(id: ID!): User users(first: Int = 10, after: String): UserConnection! post(id: ID!): Post posts(published: Boolean): [Post!]! } type Mutation { createUser(input: CreateUserInput!): User! updateUser(id: ID!, input: UpdateUserInput!): User! deleteUser(id: ID!): Boolean! createPost(input: CreatePostInput!): Post! publishPost(id: ID!): Post! } # Inputs input CreateUserInput { name: String! email: String! password: String! } input UpdateUserInput { name: String email: String } input CreatePostInput { title: String! content: String! authorId: ID! } # Pagination type UserConnection { edges: [UserEdge!]! pageInfo: PageInfo! totalCount: Int! } type UserEdge { node: User! cursor: String! } type PageInfo { hasNextPage: Boolean! hasPreviousPage: Boolean! startCursor: String endCursor: String } # Custom Scalars scalar DateTime
Resolvers (JavaScript)
const resolvers = { Query: { user: async (parent, { id }, { dataSources }) => { return dataSources.userAPI.getUserById(id); }, users: async (parent, { first, after }, { dataSources }) => { return dataSources.userAPI.getUsers({ first, after }); }, post: async (parent, { id }, { dataSources }) => { return dataSources.postAPI.getPostById(id); }, posts: async (parent, { published }, { dataSources }) => { return dataSources.postAPI.getPosts({ published }); } }, Mutation: { createUser: async (parent, { input }, { dataSources }) => { return dataSources.userAPI.createUser(input); }, updateUser: async (parent, { id, input }, { dataSources }) => { return dataSources.userAPI.updateUser(id, input); }, deleteUser: async (parent, { id }, { dataSources }) => { return dataSources.userAPI.deleteUser(id); }, createPost: async (parent, { input }, { dataSources, user }) => { if (!user) throw new Error('Unauthorized'); return dataSources.postAPI.createPost(input); }, publishPost: async (parent, { id }, { dataSources, user }) => { if (!user) throw new Error('Unauthorized'); return dataSources.postAPI.publishPost(id); } }, User: { posts: async (parent, args, { dataSources }) => { return dataSources.postAPI.getPostsByAuthor(parent.id); } }, Post: { author: async (parent, args, { dataSources }) => { return dataSources.userAPI.getUserById(parent.authorId); } } };
バージョン情報
- スキルバージョン: 1.0.0