graphql-schema-generator
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
More from ntaksh42/agents
document-summarizer
Summarize long documents with key points and abstracts. Use when creating executive summaries or condensing content.
138pptx-generator
Generate PowerPoint presentations with slides, charts, and formatting. Use when creating presentations programmatically.
94document-formatter
Format and style documents with consistent formatting. Use when standardizing document formatting or cleaning up text.
48excel-processor
Process Excel files with data manipulation, formula generation, and chart creation. Use when working with spreadsheets or Excel data.
39presentation-creator
Marpを使用した提案資料・比較検討資料の作成スキル。課題提示、複数案の比較検討、メリット・デメリット整理を含む資料を作成する。使用場面:(1) 技術選定や方式比較の検討資料、(2) 提案書・企画書、(3) 問題解決策の提示、(4) 意思決定を支援するドキュメント。作成完了後は必ずサブエージェントでレビューを実施する。
29pdf-processor
Process, extract, and generate PDF documents with text extraction and form handling. Use when working with PDF files or extracting PDF content.
22