Instruction file imported from GatoGraphQL/ExtensionStarter (
.cursor/rules/core.mdc). Copyright stays with the author.
description: Core Gato GraphQL architectural patterns and development guidelines. Use when working with core plugin functionality. globs: *php alwaysApply: false
Core Development Rules
Architecture Principles
- Maintain backward compatibility
- Follow WordPress coding standards
- Use dependency injection where possible
- Keep classes focused and single-purpose
- Use interfaces for standardization
Extending the GraphQL Schema - Source code examples
GraphQL spec elements
Type Resolver
Usertype:submodules/GatoGraphQL/layers/CMSSchema/packages/users/src/TypeResolvers/ObjectType/UserObjectTypeResolver.php
Field Resolver
- Fields
name,displayName, and others, for theUsertype:submodules/GatoGraphQL/layers/CMSSchema/packages/users/src/FieldResolvers/ObjectType/UserObjectTypeFieldResolver.php
Mutation Resolver
- Mutation
createPost:submodules/GatoGraphQL/layers/CMSSchema/packages/post-mutations/src/FieldResolvers/ObjectType/RootObjectTypeFieldResolver.php - Mutation resolvers for
createPost:submodules/GatoGraphQL/layers/CMSSchema/packages/post-mutations/src/MutationResolvers/CreatePostMutationResolver.phpsubmodules/GatoGraphQL/layers/CMSSchema/packages/post-mutations/src/MutationResolvers/PayloadableCreatePostMutationResolver.php
Bulk Mutation Resolver
- Bulk mutation
createPosts:submodules/GatoGraphQL/layers/CMSSchema/packages/post-mutations/src/FieldResolvers/ObjectType/RootObjectTypeFieldResolver.php - Bulk mutation resolvers for
createPosts:submodules/GatoGraphQL/layers/CMSSchema/packages/post-mutations/src/MutationResolvers/CreatePostBulkOperationMutationResolver.phpsubmodules/GatoGraphQL/layers/CMSSchema/packages/post-mutations/src/MutationResolvers/PayloadableCreatePostBulkOperationMutationResolver.php
Custom Scalar Resolver
- Custom scalar
Email:submodules/GatoGraphQL/layers/Schema/packages/schema-commons/src/TypeResolvers/ScalarType/EmailScalarTypeResolver.php
Enum Resolver
- Enum
CommentTypeEnum:submodules/GatoGraphQL/layers/CMSSchema/packages/comments/src/TypeResolvers/EnumType/CommentTypeEnumTypeResolver.php
Interface Resolver
- Interface
CustomPostInterfaceTypeResolver:submodules/GatoGraphQL/layers/CMSSchema/packages/customposts/src/TypeResolvers/InterfaceType/CustomPostInterfaceTypeResolver.php
Union Type-Resolver
- Union type
CustomPostUnionTypeResolver:submodules/GatoGraphQL/layers/CMSSchema/packages/customposts/src/TypeResolvers/UnionType/CustomPostUnionTypeResolver.php
Resolvers to add Object Types to Union Types
- Adding
GenericCustomPosttoCustomPostUnion:submodules/GatoGraphQL/layers/CMSSchema/packages/customposts/src/ObjectTypeResolverPickers/CustomPostUnionGenericCustomPostObjectTypeResolverPicker.php
Input Object Resolver
- Input Object
UserSortInput:submodules/GatoGraphQL/layers/CMSSchema/packages/users/src/TypeResolvers/InputObjectType/UserSortInputObjectTypeResolver.php
Oneof Input Object Resolver
- Oneof Input Object
UserByInput:submodules/GatoGraphQL/layers/CMSSchema/packages/users/src/TypeResolvers/InputObjectType/UserByOneofInputObjectTypeResolver.php
Object DataLoader Resolver
- Resolving
Userobjects:submodules/GatoGraphQL/layers/CMSSchema/packages/users/src/RelationalTypeDataLoaders/ObjectType/UserObjectTypeDataLoader.php
Union DataLoader Resolver
- Resolving
CustomPostunions:submodules/GatoGraphQL/layers/CMSSchema/packages/customposts/src/RelationalTypeDataLoaders/ObjectType/CustomPostObjectTypeDataLoader.php
Directive Resolver
- Directive
@skip:submodules/GatoGraphQL/layers/Engine/packages/engine/src/DirectiveResolvers/SkipFieldDirectiveResolver.php
Custom Gato GraphQL elements
Global Field Resolver
- Field
__typename:submodules/GatoGraphQL/layers/GraphQLByPoP/packages/graphql-server/src/FieldResolvers/ObjectType/GlobalObjectTypeFieldResolver.php
Enum String Resolver
- Enum String
CustomPostEnumStringsubmodules/GatoGraphQL/layers/CMSSchema/packages/customposts/src/TypeResolvers/EnumType/CustomPostEnumStringScalarTypeResolver.php
Error Payload Union Type Resolver
- Error Payload Union Type
RootAddCommentToCustomPostMutationErrorPayloadUnion:submodules/GatoGraphQL/layers/CMSSchema/packages/comment-mutations/src/TypeResolvers/UnionType/RootAddCommentToCustomPostMutationErrorPayloadUnionTypeResolver.php
Nested Mutations Resolver
- Mutation
Post.update:submodules/GatoGraphQL/layers/CMSSchema/packages/post-mutations/src/FieldResolvers/ObjectType/PostObjectTypeFieldResolver.php
Field Arguments to filter data
- Field
Root.comments:submodules/GatoGraphQL/layers/CMSSchema/packages/comments/src/FieldResolvers/ObjectType/RootObjectTypeFieldResolver.php
Custom Post Type - Type Resolver
- Custom Post Type
Page:submodules/GatoGraphQL/layers/CMSSchema/packages/pages/src/TypeResolvers/ObjectType/PageObjectTypeResolver.php
Custom Post Type - Field Resolver
- Field
CustomPost.author:submodules/GatoGraphQL/layers/CMSSchema/packages/users/src/ConditionalOnModule/CustomPosts/FieldResolvers/ObjectType/CustomPostObjectTypeFieldResolver.php
Performance Guidelines
- Cache expensive operations
- Use transients appropriately
- Batch process large operations
- Minimize database queries
- Use WordPress object cache
Security Requirements
- Validate and sanitize all inputs
- Use prepared SQL statements
- Check capabilities and nonces
- Escape output
- Follow WordPress security best practices
Error Handling
- Use
wp_errorfor WordPress-style errors - Log meaningful error messages
- Provide user-friendly notices
- Handle API failures gracefully
- Implement retry mechanisms
Documentation Requirements
- PHPDoc blocks for classes/methods
- Inline comments for complex logic
- Document all filters/actions
- Update
CHANGELOG