Problem
Currently, we maintain feature voting in roadmap-data.json which creates duplication and synchronization issues:
- Duplicate tracking: Both
roadmap-data.json and GitHub issues track the same features
- Sync challenges: Votes in JSON don't reflect GitHub issue priorities or discussions
- Limited collaboration: JSON voting is isolated from GitHub's collaborative features
- Maintenance overhead: Two systems need to be kept in sync manually
Current State Analysis
The roadmap-data.json contains 23 features with vote scores, but many already have corresponding GitHub issues:
Proposed Solution
Replace the JSON-based voting system with GitHub-native features:
1. GitHub Reactions for Voting
Use GitHub's reaction system for lightweight voting:
- 👍 = Vote for this feature
- ❤️ = High priority/critical need
- 🚀 = Want to implement this
- 👎 = Not needed/low priority
2. Issue Sorting by Engagement
Create tooling to list issues by engagement metrics:
# List issues by vote count (reactions)
refakts roadmap:list --sort-by votes
# List issues by recent activity
refakts roadmap:list --sort-by activity
# List issues by implementation readiness
refakts roadmap:list --sort-by ready
3. Migration Strategy
- Create GitHub issues for roadmap features that don't have them yet
- Link existing votes by adding reactions equivalent to JSON scores
- Update roadmap commands to read from GitHub API instead of JSON
- Archive roadmap-data.json once migration is complete
Implementation Approach
Enhanced Roadmap Commands
// New GitHub-based roadmap system
class GitHubRoadmapService {
async listFeaturesByVotes(): Promise<FeatureIssue[]> {
// Fetch issues with 'enhancement' label
// Sort by reaction count (👍 + ❤️ + 🚀)
// Include issue metadata and discussion activity
}
async voteForFeature(issueNumber: number, voteType: ReactionType): Promise<void> {
// Add reaction to GitHub issue
// Update local cache if needed
}
}
New Command Interface
# List features by vote count
refakts roadmap:status --sort votes
# Vote for a feature
refakts roadmap:vote 42 # Adds 👍 reaction to issue #42
# View feature details with voting history
refakts roadmap:view 42 # Shows issue details + reaction summary
Benefits
Better Integration
- Native GitHub features: Reactions, comments, labels, milestones
- Unified discussion: Feature voting happens alongside technical discussion
- Better visibility: GitHub notifications and activity feeds
- Searchable: GitHub's powerful search and filtering
Improved Collaboration
- Public voting: Community can participate in feature prioritization
- Context-rich: Votes can include comments explaining why
- Implementation tracking: Issues can track progress from idea to completion
- Cross-referencing: Easy linking between related features and bugs
Simplified Maintenance
- Single source of truth: GitHub issues only
- Automatic sync: No manual JSON updates needed
- Rich metadata: Labels, assignees, milestones, project boards
- API access: Programmatic access via GitHub API
Migration Plan
Phase 1: Create Missing Issues
Create GitHub issues for roadmap features that don't have them:
extract-delegate-class (score: 0)
extract-field (score: 0)
extract-type-alias (score: 1)
extract-interface (score: 1)
extract-superclass (score: 0)
- And others without
githubIssue field
Phase 2: Transfer Votes
Convert JSON scores to GitHub reactions:
- Score 9 (
extract-method) → Multiple 👍 + ❤️ reactions
- Score 6 (
find-usages) → Multiple 👍 reactions (but mark as ✅ implemented)
- Score 4 (
auto-import-organizer) → Several 👍 reactions
- etc.
Phase 3: Update Tooling
- Modify
roadmap:status to read from GitHub API
- Update
roadmap:vote to add GitHub reactions
- Add new sorting and filtering options
- Update documentation and help text
Phase 4: Archive JSON
- Remove
roadmap-data.json
- Update post-commit hooks if they reference it
- Clean up related scripts and utilities
Acceptance Criteria
Priority
Medium - Improves feature tracking and eliminates duplication, but doesn't block current development workflows.
🤖 Generated with Claude Code
Co-Authored-By: Claude noreply@anthropic.com
Problem
Currently, we maintain feature voting in
roadmap-data.jsonwhich creates duplication and synchronization issues:roadmap-data.jsonand GitHub issues track the same featuresCurrent State Analysis
The
roadmap-data.jsoncontains 23 features with vote scores, but many already have corresponding GitHub issues:find-usages(score: 6) → Issue Implement find-usages command #2 ✅ Implementedextract-method(score: 9) → Issue Implement extract-method command #4move-file(score: 0) → Issue Implement move-file command #3 ✅ Implementedauto-import-organizer(score: 4) → Issue Implement auto-import-organizer command #11safe-delete(score: 3) → Issue Implement safe-delete command #12Proposed Solution
Replace the JSON-based voting system with GitHub-native features:
1. GitHub Reactions for Voting
Use GitHub's reaction system for lightweight voting:
2. Issue Sorting by Engagement
Create tooling to list issues by engagement metrics:
3. Migration Strategy
Implementation Approach
Enhanced Roadmap Commands
New Command Interface
Benefits
Better Integration
Improved Collaboration
Simplified Maintenance
Migration Plan
Phase 1: Create Missing Issues
Create GitHub issues for roadmap features that don't have them:
extract-delegate-class(score: 0)extract-field(score: 0)extract-type-alias(score: 1)extract-interface(score: 1)extract-superclass(score: 0)githubIssuefieldPhase 2: Transfer Votes
Convert JSON scores to GitHub reactions:
extract-method) → Multiple 👍 + ❤️ reactionsfind-usages) → Multiple 👍 reactions (but mark as ✅ implemented)auto-import-organizer) → Several 👍 reactionsPhase 3: Update Tooling
roadmap:statusto read from GitHub APIroadmap:voteto add GitHub reactionsPhase 4: Archive JSON
roadmap-data.jsonAcceptance Criteria
refakts roadmap:statusdisplays GitHub-based datarefakts roadmap:vote <issue-number>adds reactionsroadmap-data.jsonremoved after successful migrationPriority
Medium - Improves feature tracking and eliminates duplication, but doesn't block current development workflows.
🤖 Generated with Claude Code
Co-Authored-By: Claude noreply@anthropic.com