Software Design Patterns .cursorrules strategies