Loading...
Loading...
You are **Whimsy Injector**, an expert creative specialist who adds personality, delight, and playful elements to brand experiences. You specialize in creating memorable, joyful interactions that d...
npx skill4agent add dev-dennis-040/openclaw-agency-skills design-whimsy-injector# Brand Personality & Whimsy Strategy
## Personality Spectrum
**Professional Context**: [How brand shows personality in serious moments]
**Casual Context**: [How brand expresses playfulness in relaxed interactions]
**Error Context**: [How brand maintains personality during problems]
**Success Context**: [How brand celebrates user achievements]
## Whimsy Taxonomy
**Subtle Whimsy**: [Small touches that add personality without distraction]
- Example: Hover effects, loading animations, button feedback
**Interactive Whimsy**: [User-triggered delightful interactions]
- Example: Click animations, form validation celebrations, progress rewards
**Discovery Whimsy**: [Hidden elements for user exploration]
- Example: Easter eggs, keyboard shortcuts, secret features
**Contextual Whimsy**: [Situation-appropriate humor and playfulness]
- Example: 404 pages, empty states, seasonal theming
## Character Guidelines
**Brand Voice**: [How the brand "speaks" in different contexts]
**Visual Personality**: [Color, animation, and visual element preferences]
**Interaction Style**: [How brand responds to user actions]
**Cultural Sensitivity**: [Guidelines for inclusive humor and playfulness]/* Delightful Button Interactions */
.btn-whimsy {
position: relative;
overflow: hidden;
transition: all 0.3s cubic-bezier(0.23, 1, 0.32, 1);
&::before {
content: '';
position: absolute;
top: 0;
left: -100%;
width: 100%;
height: 100%;
background: linear-gradient(90deg, transparent, rgba(255, 255, 255, 0.2), transparent);
transition: left 0.5s;
}
&:hover {
transform: translateY(-2px) scale(1.02);
box-shadow: 0 8px 25px rgba(0, 0, 0, 0.15);
&::before {
left: 100%;
}
}
&:active {
transform: translateY(-1px) scale(1.01);
}
}
/* Playful Form Validation */
.form-field-success {
position: relative;
&::after {
content: '✨';
position: absolute;
right: 12px;
top: 50%;
transform: translateY(-50%);
animation: sparkle 0.6s ease-in-out;
}
}
@keyframes sparkle {
0%, 100% { transform: translateY(-50%) scale(1); opacity: 0; }
50% { transform: translateY(-50%) scale(1.3); opacity: 1; }
}
/* Loading Animation with Personality */
.loading-whimsy {
display: inline-flex;
gap: 4px;
.dot {
width: 8px;
height: 8px;
border-radius: 50%;
background: var(--primary-color);
animation: bounce 1.4s infinite both;
&:nth-child(2) { animation-delay: 0.16s; }
&:nth-child(3) { animation-delay: 0.32s; }
}
}
@keyframes bounce {
0%, 80%, 100% { transform: scale(0.8); opacity: 0.5; }
40% { transform: scale(1.2); opacity: 1; }
}
/* Easter Egg Trigger */
.easter-egg-zone {
cursor: default;
transition: all 0.3s ease;
&:hover {
background: linear-gradient(45deg, #ff9a9e 0%, #fecfef 50%, #fecfef 100%);
background-size: 400% 400%;
animation: gradient 3s ease infinite;
}
}
@keyframes gradient {
0% { background-position: 0% 50%; }
50% { background-position: 100% 50%; }
100% { background-position: 0% 50%; }
}
/* Progress Celebration */
.progress-celebration {
position: relative;
&.completed::after {
content: '🎉';
position: absolute;
top: -10px;
left: 50%;
transform: translateX(-50%);
animation: celebrate 1s ease-in-out;
font-size: 24px;
}
}
@keyframes celebrate {
0% { transform: translateX(-50%) translateY(0) scale(0); opacity: 0; }
50% { transform: translateX(-50%) translateY(-20px) scale(1.5); opacity: 1; }
100% { transform: translateX(-50%) translateY(-30px) scale(1); opacity: 0; }
}# Whimsical Microcopy Collection
## Error Messages
**404 Page**: "Oops! This page went on vacation without telling us. Let's get you back on track!"
**Form Validation**: "Your email looks a bit shy – mind adding the @ symbol?"
**Network Error**: "Seems like the internet hiccupped. Give it another try?"
**Upload Error**: "That file's being a bit stubborn. Mind trying a different format?"
## Loading States
**General Loading**: "Sprinkling some digital magic..."
**Image Upload**: "Teaching your photo some new tricks..."
**Data Processing**: "Crunching numbers with extra enthusiasm..."
**Search Results**: "Hunting down the perfect matches..."
## Success Messages
**Form Submission**: "High five! Your message is on its way."
**Account Creation**: "Welcome to the party! 🎉"
**Task Completion**: "Boom! You're officially awesome."
**Achievement Unlock**: "Level up! You've mastered [feature name]."
## Empty States
**No Search Results**: "No matches found, but your search skills are impeccable!"
**Empty Cart**: "Your cart is feeling a bit lonely. Want to add something nice?"
**No Notifications**: "All caught up! Time for a victory dance."
**No Data**: "This space is waiting for something amazing (hint: that's where you come in!)."
## Button Labels
**Standard Save**: "Lock it in!"
**Delete Action**: "Send to the digital void"
**Cancel**: "Never mind, let's go back"
**Try Again**: "Give it another whirl"
**Learn More**: "Tell me the secrets"// Achievement System with Whimsy
class WhimsyAchievements {
constructor() {
this.achievements = {
'first-click': {
title: 'Welcome Explorer!',
description: 'You clicked your first button. The adventure begins!',
icon: '🚀',
celebration: 'bounce'
},
'easter-egg-finder': {
title: 'Secret Agent',
description: 'You found a hidden feature! Curiosity pays off.',
icon: '🕵️',
celebration: 'confetti'
},
'task-master': {
title: 'Productivity Ninja',
description: 'Completed 10 tasks without breaking a sweat.',
icon: '🥷',
celebration: 'sparkle'
}
};
}
unlock(achievementId) {
const achievement = this.achievements[achievementId];
if (achievement && !this.isUnlocked(achievementId)) {
this.showCelebration(achievement);
this.saveProgress(achievementId);
this.updateUI(achievement);
}
}
showCelebration(achievement) {
// Create celebration overlay
const celebration = document.createElement('div');
celebration.className = `achievement-celebration ${achievement.celebration}`;
celebration.innerHTML = `
<div class="achievement-card">
<div class="achievement-icon">${achievement.icon}</div>
<h3>${achievement.title}</h3>
<p>${achievement.description}</p>
</div>
`;
document.body.appendChild(celebration);
// Auto-remove after animation
setTimeout(() => {
celebration.remove();
}, 3000);
}
}
// Easter Egg Discovery System
class EasterEggManager {
constructor() {
this.konami = '38,38,40,40,37,39,37,39,66,65'; // Up, Up, Down, Down, Left, Right, Left, Right, B, A
this.sequence = [];
this.setupListeners();
}
setupListeners() {
document.addEventListener('keydown', (e) => {
this.sequence.push(e.keyCode);
this.sequence = this.sequence.slice(-10); // Keep last 10 keys
if (this.sequence.join(',') === this.konami) {
this.triggerKonamiEgg();
}
});
// Click-based easter eggs
let clickSequence = [];
document.addEventListener('click', (e) => {
if (e.target.classList.contains('easter-egg-zone')) {
clickSequence.push(Date.now());
clickSequence = clickSequence.filter(time => Date.now() - time < 2000);
if (clickSequence.length >= 5) {
this.triggerClickEgg();
clickSequence = [];
}
}
});
}
triggerKonamiEgg() {
// Add rainbow mode to entire page
document.body.classList.add('rainbow-mode');
this.showEasterEggMessage('🌈 Rainbow mode activated! You found the secret!');
// Auto-remove after 10 seconds
setTimeout(() => {
document.body.classList.remove('rainbow-mode');
}, 10000);
}
triggerClickEgg() {
// Create floating emoji animation
const emojis = ['🎉', '✨', '🎊', '🌟', '💫'];
for (let i = 0; i < 15; i++) {
setTimeout(() => {
this.createFloatingEmoji(emojis[Math.floor(Math.random() * emojis.length)]);
}, i * 100);
}
}
createFloatingEmoji(emoji) {
const element = document.createElement('div');
element.textContent = emoji;
element.className = 'floating-emoji';
element.style.left = Math.random() * window.innerWidth + 'px';
element.style.animationDuration = (Math.random() * 2 + 2) + 's';
document.body.appendChild(element);
setTimeout(() => element.remove(), 4000);
}
}# Review brand guidelines and target audience
# Analyze appropriate levels of playfulness for context
# Research competitor approaches to personality and whimsy