Hallucinate hella cursor rules
This commit is contained in:
31
.cursor/rules/code-quality.mdc
Normal file
31
.cursor/rules/code-quality.mdc
Normal file
@@ -0,0 +1,31 @@
|
|||||||
|
---
|
||||||
|
globs: *.go
|
||||||
|
description: Code quality and consistency standards
|
||||||
|
---
|
||||||
|
|
||||||
|
# Code Quality Standards
|
||||||
|
|
||||||
|
## General Principles
|
||||||
|
- Keep functions focused and single-purpose
|
||||||
|
- Use descriptive variable and function names
|
||||||
|
- Add comprehensive logging for debugging
|
||||||
|
- Handle errors gracefully with proper context
|
||||||
|
|
||||||
|
## Specific Rules
|
||||||
|
- Never use `fmt.Printf` or `fmt.Println` - always use the logger
|
||||||
|
- Avoid redundant log lines right next to each other
|
||||||
|
- Use `logger.Warning()` not `logger.Warn()`
|
||||||
|
- Include character names and operation context in log messages
|
||||||
|
- Use high-level database methods, not raw GORM calls
|
||||||
|
|
||||||
|
## Code Organization
|
||||||
|
- Keep SSO logic in [esi_sso.go](mdc:esi_sso.go)
|
||||||
|
- Keep database abstraction in [db.go](mdc:db.go)
|
||||||
|
- Main application logic in [main.go](mdc:main.go)
|
||||||
|
- Use interfaces for database operations to enable testing
|
||||||
|
|
||||||
|
## Error Handling
|
||||||
|
- Always log errors with sufficient context
|
||||||
|
- Don't swallow errors silently
|
||||||
|
- Provide meaningful error messages to users
|
||||||
|
- Handle network timeouts and API failures gracefully
|
||||||
23
.cursor/rules/database-abstraction.mdc
Normal file
23
.cursor/rules/database-abstraction.mdc
Normal file
@@ -0,0 +1,23 @@
|
|||||||
|
---
|
||||||
|
globs: *.go
|
||||||
|
description: Database abstraction layer conventions
|
||||||
|
---
|
||||||
|
|
||||||
|
# Database Abstraction Standards
|
||||||
|
|
||||||
|
## High-Level Interface
|
||||||
|
The [db.go](mdc:db.go) file provides a high-level database interface. Always use these methods instead of raw GORM calls:
|
||||||
|
|
||||||
|
- `GetTokenForCharacter(characterName string) (*Token, error)`
|
||||||
|
- `SaveTokenForCharacter(token *Token) error`
|
||||||
|
- `AutoMigrate(dst ...interface{}) error`
|
||||||
|
|
||||||
|
## Never Use Raw GORM
|
||||||
|
- Don't call `s.db.DB().Where(...)` directly
|
||||||
|
- Don't call `s.db.DB().Save(...)` directly
|
||||||
|
- Always use the abstracted methods in the DB interface
|
||||||
|
|
||||||
|
## Database Operations
|
||||||
|
- All database operations should be logged with appropriate context
|
||||||
|
- Include character names in log messages for database operations
|
||||||
|
- Handle errors gracefully and log them with context
|
||||||
31
.cursor/rules/esi-sso-interface.mdc
Normal file
31
.cursor/rules/esi-sso-interface.mdc
Normal file
@@ -0,0 +1,31 @@
|
|||||||
|
---
|
||||||
|
globs: esi_sso.go
|
||||||
|
description: EVE SSO interface and implementation standards
|
||||||
|
---
|
||||||
|
|
||||||
|
# EVE SSO Interface Standards
|
||||||
|
|
||||||
|
## Core Interface
|
||||||
|
The SSO system provides a simple interface:
|
||||||
|
```go
|
||||||
|
token, err := sso.GetToken(ctx, "CharacterName")
|
||||||
|
```
|
||||||
|
|
||||||
|
## Key Principles
|
||||||
|
- Use character NAMES, not IDs (nobody knows character IDs)
|
||||||
|
- Handle all SSO complexity behind the scenes
|
||||||
|
- Automatic token refresh when expired
|
||||||
|
- Automatic re-authentication when refresh fails
|
||||||
|
- Store tokens in database for persistence
|
||||||
|
|
||||||
|
## Implementation Details
|
||||||
|
- [esi_sso.go](mdc:esi_sso.go) contains the SSO implementation
|
||||||
|
- Uses PKCE for secure OAuth2 flow
|
||||||
|
- Implements proper callback handling with HTTP server
|
||||||
|
- Includes comprehensive logging for debugging
|
||||||
|
- Handles token exchange and refresh automatically
|
||||||
|
|
||||||
|
## Error Handling
|
||||||
|
- Always log errors with context (character name, operation)
|
||||||
|
- Provide clear error messages for authentication failures
|
||||||
|
- Handle network timeouts and API errors gracefully
|
||||||
27
.cursor/rules/go-eve-pi-project.mdc
Normal file
27
.cursor/rules/go-eve-pi-project.mdc
Normal file
@@ -0,0 +1,27 @@
|
|||||||
|
---
|
||||||
|
alwaysApply: true
|
||||||
|
description: Go EVE PI project structure and conventions
|
||||||
|
---
|
||||||
|
|
||||||
|
# Go EVE PI Project Structure
|
||||||
|
|
||||||
|
This is a Go project for EVE Online PI (Planetary Interaction) management with SSO authentication.
|
||||||
|
|
||||||
|
## Key Files
|
||||||
|
- [main.go](mdc:main.go) - Main entry point, loads configuration from .env file
|
||||||
|
- [esi_sso.go](mdc:esi_sso.go) - EVE SSO authentication implementation
|
||||||
|
- [db.go](mdc:db.go) - Database abstraction layer with high-level methods
|
||||||
|
|
||||||
|
## Project Conventions
|
||||||
|
- Uses `logger "git.site.quack-lab.dev/dave/cylogger"` for all logging
|
||||||
|
- Database operations use high-level methods like `GetTokenForCharacter()` and `SaveTokenForCharacter()`
|
||||||
|
- SSO interface: `GetToken(ctx, characterName)` returns access token for character
|
||||||
|
- Configuration loaded from .env file (ESI_CLIENT_ID, ESI_REDIRECT_URI, ESI_SCOPES, DB_PATH)
|
||||||
|
|
||||||
|
## Logging Standards
|
||||||
|
- Use `logger.Info()` for important business events
|
||||||
|
- Use `logger.Debug()` for detailed debugging information
|
||||||
|
- Use `logger.Warning()` for warning conditions
|
||||||
|
- Use `logger.Error()` for error conditions
|
||||||
|
- Never use `fmt.Printf` - always use the logger
|
||||||
|
- Avoid redundant log lines right next to each other
|
||||||
24
.cursor/rules/go-logging.mdc
Normal file
24
.cursor/rules/go-logging.mdc
Normal file
@@ -0,0 +1,24 @@
|
|||||||
|
---
|
||||||
|
globs: *.go
|
||||||
|
description: Go logging standards and conventions
|
||||||
|
---
|
||||||
|
|
||||||
|
# Go Logging Standards
|
||||||
|
|
||||||
|
## Always Use cylogger
|
||||||
|
- Import: `logger "git.site.quack-lab.dev/dave/cylogger"`
|
||||||
|
- Never use `fmt.Printf`, `fmt.Println`, or standard `log` package
|
||||||
|
- All output must go through the logger system
|
||||||
|
|
||||||
|
## Logging Levels
|
||||||
|
- `logger.Debug()` - Detailed debugging info, internal state
|
||||||
|
- `logger.Info()` - Important business events, user-facing messages
|
||||||
|
- `logger.Warning()` - Warning conditions (not `logger.Warn()`)
|
||||||
|
- `logger.Error()` - Error conditions, failures
|
||||||
|
|
||||||
|
## Best Practices
|
||||||
|
- Include context in log messages (character names, operation details)
|
||||||
|
- Use structured logging with format strings: `logger.Info("Operation completed for %s", name)`
|
||||||
|
- Avoid redundant log lines right next to each other
|
||||||
|
- Log at appropriate levels - don't spam with unnecessary debug logs
|
||||||
|
- Always log errors with context about what operation failed
|
||||||
Reference in New Issue
Block a user