Claude-skill-registry calendar-scheduling-fixer
This skill should be used when fixing Vue.js calendar task scheduling issues, specifically when tasks with due dates incorrectly appear in calendar grid instead of staying in calendar inbox. The skill provides comprehensive research-backed solutions for separating task management from calendar scheduling with mandatory Playwright testing.
git clone https://github.com/majiayu000/claude-skill-registry
T=$(mktemp -d) && git clone --depth=1 https://github.com/majiayu000/claude-skill-registry "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/data/calendar-scheduling-fixer" ~/.claude/skills/majiayu000-claude-skill-registry-calendar-scheduling-fixer-bff895 && rm -rf "$T"
skills/data/calendar-scheduling-fixer/SKILL.mdCalendar Scheduling Fixer Skill
This skill provides a comprehensive approach to fixing Vue.js calendar task scheduling issues, specifically addressing the problem where tasks with due dates incorrectly appear in calendar grid slots instead of staying in the calendar inbox.
When to Use This Skill
Use this skill when encountering these specific issues:
- Tasks moved to "Today" smart groups appear in calendar time slots instead of calendar inbox
- Calendar grid shows tasks that should remain in inbox state
- Task due dates leak into calendar scheduling logic
- Need to separate task management (due dates) from calendar commitments (time slots)
- Calendar view shows duplicate or misplaced tasks
Core Principles
1. Data Model Separation
- Tasks: Use
field for deadline metadata, stay in inbox until manually scheduleddueDate - Calendar Events: Use
array for time-specific commitments with scheduled dates/timesinstances - State Management: Maintain clear distinction between inbox state (
) and scheduled stateisInInbox: true
2. Visual Separation
- Inbox Tasks: Show as cards/panels, draggable to calendar for scheduling
- Calendar Events: Show as time blocks with specific start/end times
- Visual Cues: Use different styling, icons, and interaction patterns
3. Workflow Separation
- Canvas Smart Groups: Organize tasks by relevance (Today, Tomorrow, etc.)
- Calendar Inbox: Action queue for tasks that need scheduling
- Calendar Grid: Commitments with specific time slots
Diagnostic Process
Step 1: Identify the Problem Layer
Use the diagnostic script to identify where tasks are leaking into calendar:
node scripts/diagnose-calendar-leak.js
This script will:
- Analyze all calendar composables for task filtering logic
- Check for dueDate vs instances confusion in calendar views
- Identify data model inconsistencies
- Provide specific file locations that need fixes
Step 2: Check Current Task State
Verify task properties using the task state analyzer:
node scripts/analyze-task-state.js
This will show:
- Which tasks have due dates vs instances
- Inbox state status for each task
- Canvas position data
- Scheduling status (inbox vs scheduled)
Step 3: Test with Playwright (MANDATORY)
Always verify fixes with visual testing:
node scripts/test-calendar-behavior.js
This script:
- Checks if Playwright MCP server is available
- If not available, instructs user to restart it
- Runs comprehensive visual tests
- Verifies tasks stay in inbox, not calendar grid
- Tests drag-and-drop from inbox to calendar
Implementation Guidelines
Fix Calendar Day View
In
src/composables/calendar/useCalendarDayView.ts:
- Remove dueDate from calendar event creation
- Only create events for tasks with instances or legacy schedule
- Maintain separate filtering for inbox vs calendar
Fix Calendar Week/Month Views
Ensure similar logic applies across all calendar views:
- Check
anduseCalendarWeekView.tsuseCalendarMonthView.ts - Apply same filtering principles
- Maintain consistency across views
Update Calendar Inbox Filtering
In
src/components/CalendarInboxPanel.vue:
- Verify "Today" filter includes tasks with dueDate === today
- Ensure inbox shows tasks with dueDate but no instances
- Maintain proper task state separation
Update Smart Group Logic
In
src/stores/tasks.ts:
- Verify
only sets dueDatemoveTaskToSmartGroup - Ensure tasks maintain
isInInbox: true - Prevent automatic instance creation
Testing Requirements
Mandatory Playwright Testing
Before claiming any fix works, perform these visual tests:
- Today Group Test: Move task to "Today" in canvas, verify it appears in calendar inbox "Today" filter but NOT in calendar time slots
- Drag Test: Drag task from calendar inbox to calendar time slot, verify it appears as scheduled event
- Multi-view Test: Verify behavior is consistent across day, week, and month views
- State Test: Verify task properties (dueDate, instances, isInInbox) are correct throughout workflow
Test Verification Checklist
- Playwright MCP server is running and accessible
- Task moved to "Today" appears in Calendar Inbox
- Task moved to "Today" does NOT appear in calendar time slots
- Manual drag from inbox to calendar works correctly
- Task state properties are correct after each operation
- Behavior is consistent across all calendar views
Common Pitfalls to Avoid
- Don't use dueDate for calendar event creation - only instances and legacy schedule should create calendar events
- Don't mix task and calendar logic - keep task management separate from calendar display
- Don't skip visual testing - DOM assertions are insufficient, need visual confirmation
- Don't ignore multi-view consistency - fixes must work across day/week/month views
- Don't forget state management - maintain proper inbox vs scheduled state transitions
Reference Materials
Research References
- Vue.js calendar implementation patternsreferences/vue-calendar-best-practices.md
- Data model separation principlesreferences/task-calendar-separation.md
- Testing strategies for calendar functionalityreferences/playwright-calendar-testing.md
Testing Scripts
- Diagnostic tool for identifying calendar scheduling issuesscripts/diagnose-calendar-leak.js
- Task state analyzer for debuggingscripts/analyze-task-state.js
- Comprehensive Playwright test runnerscripts/test-calendar-behavior.js
- Quick verification script for specific fixesscripts/verify-fix.js
Code Templates
- Template for calendar composable fixesassets/calendar-fix-template.js
- Template for Playwright calendar testsassets/test-template.js
Usage Instructions
- Run diagnostic to identify the specific problem
- Check task state to understand current data model issues
- Apply fixes using the implementation guidelines
- Test thoroughly with Playwright (mandatory)
- Verify across all views to ensure consistency
- Document changes for future reference
Always prioritize visual testing and verify that tasks with due dates stay in calendar inbox until manually scheduled to specific time slots.
MANDATORY USER VERIFICATION REQUIREMENT
Policy: No Fix Claims Without User Confirmation
CRITICAL: Before claiming ANY issue, bug, or problem is "fixed", "resolved", "working", or "complete", the following verification protocol is MANDATORY:
Step 1: Technical Verification
- Run all relevant tests (build, type-check, unit tests)
- Verify no console errors
- Take screenshots/evidence of the fix
Step 2: User Verification Request
REQUIRED: Use the
AskUserQuestion tool to explicitly ask the user to verify the fix:
"I've implemented [description of fix]. Before I mark this as complete, please verify: 1. [Specific thing to check #1] 2. [Specific thing to check #2] 3. Does this fix the issue you were experiencing? Please confirm the fix works as expected, or let me know what's still not working."
Step 3: Wait for User Confirmation
- DO NOT proceed with claims of success until user responds
- DO NOT mark tasks as "completed" without user confirmation
- DO NOT use phrases like "fixed", "resolved", "working" without user verification
Step 4: Handle User Feedback
- If user confirms: Document the fix and mark as complete
- If user reports issues: Continue debugging, repeat verification cycle
Prohibited Actions (Without User Verification)
- Claiming a bug is "fixed"
- Stating functionality is "working"
- Marking issues as "resolved"
- Declaring features as "complete"
- Any success claims about fixes
Required Evidence Before User Verification Request
- Technical tests passing
- Visual confirmation via Playwright/screenshots
- Specific test scenarios executed
- Clear description of what was changed
Remember: The user is the final authority on whether something is fixed. No exceptions.