trilium/apps/web-clipper-manifestv3/reference/copilot_task_templates.md
Octech2722 1f444ebc69 docs: add comprehensive development workflow documentation
Copilot Integration:
- Streamlined instructions (70% shorter than original)
- Task templates for common operations
- Three-tier usage strategy (free/strategic/manual)
- Optimized for GitHub Copilot Basic tier limits

Development Resources:
- Common task workflows with time estimates
- Feature parity checklist with priorities
- Debugging and troubleshooting guides
- Testing scenarios and checklists
- Code quality standards

Workflow Optimization:
- Efficient Copilot task budgeting
- Real-world implementation examples
- Performance and success metrics
- Project completion roadmap

Reduces repetitive context in prompts.
Maximizes limited Copilot task budget.
2025-10-18 12:21:13 -05:00

438 lines
8.6 KiB
Markdown

# Copilot Task Templates
Quick copy-paste templates for common Copilot tasks. Fill in the blanks and paste into Copilot Agent mode.
---
## Template 1: Implement Feature from Checklist
```
Implement [FEATURE_NAME] from docs/FEATURE-PARITY-CHECKLIST.md.
**Legacy Reference**: apps/web-clipper/[FILE]:[LINE_RANGE]
**Target Files**:
- src/[FILE_1]
- src/[FILE_2]
**Requirements**:
- Use centralized logging (Logger.create)
- Use theme system if UI component
- Follow patterns from docs/MIGRATION-PATTERNS.md
- Handle all errors gracefully
**Testing**:
- Test on [SCENARIO_1]
- Test on [SCENARIO_2]
- Verify no console errors
**Update**:
- Mark feature complete in docs/FEATURE-PARITY-CHECKLIST.md
```
**Example**:
```
Implement screenshot cropping from docs/FEATURE-PARITY-CHECKLIST.md.
**Legacy Reference**: apps/web-clipper/background.js:393-427
**Target Files**:
- src/background/index.ts (add cropImage function)
- src/background/index.ts (update captureScreenshot handler)
**Requirements**:
- Use OffscreenCanvas API (Pattern 3 from docs/MIGRATION-PATTERNS.md)
- Use centralized logging (Logger.create)
- Handle edge cases (crop outside bounds, zero-size crop)
- Handle all errors gracefully
**Testing**:
- Test small crop (100x100)
- Test large crop (full page)
- Test edge crops (near borders)
- Verify cropped dimensions correct
**Update**:
- Mark screenshot cropping complete in docs/FEATURE-PARITY-CHECKLIST.md
```
---
## Template 2: Fix Bug
```
Fix [BUG_DESCRIPTION] in src/[FILE].
**Problem**: [WHAT'S BROKEN]
**Expected Behavior**: [WHAT SHOULD HAPPEN]
**Current Behavior**: [WHAT ACTUALLY HAPPENS]
**Error Logs** (if any):
```
[PASTE ERROR FROM LOGS]
```
**Root Cause** (if known): [HYPOTHESIS]
**Solution Approach**: [HOW TO FIX]
**Testing**:
- Reproduce bug before fix
- Verify fix resolves issue
- Test edge cases
- Check for regressions
```
**Example**:
```
Fix image processing not running on full page captures in src/background/index.ts.
**Problem**: Images not being downloaded and embedded for full-page saves
**Expected Behavior**: All images should be converted to base64 and embedded in the note
**Current Behavior**: Only works for selection saves, full page keeps external URLs
**Root Cause**: postProcessImages() only called in saveSelection handler, not in savePage handler
**Solution Approach**:
1. Call postProcessImages() in processContent function (line ~608)
2. Ensure it runs for all capture types
3. Handle CORS errors gracefully
**Testing**:
- Save full page with multiple images
- Save page with CORS-restricted images
- Verify embedded images display in Trilium
- Check external images still work as fallback
```
---
## Template 3: Add UI Component
```
Add [COMPONENT_NAME] to [PAGE].
**Purpose**: [WHAT IT DOES]
**Visual Design**:
- [DESCRIBE LAYOUT]
- [LIST UI ELEMENTS]
**Data Source**: [WHERE DATA COMES FROM]
**Interactions**:
- [USER ACTION 1] → [RESULT]
- [USER ACTION 2] → [RESULT]
**Files to Modify**:
- src/[PAGE]/[PAGE].html (markup)
- src/[PAGE]/[PAGE].css (styles with theme variables)
- src/[PAGE]/index.ts (logic with logging)
**Requirements**:
- Import and use theme.css
- Initialize ThemeManager
- Use centralized logging
- Handle empty/error states
**Testing**:
- Test in light mode
- Test in dark mode
- Test with no data
- Test with error condition
```
**Example**:
```
Add "Recent Notes" section to popup.
**Purpose**: Show last 5 saved notes with links to open in Trilium
**Visual Design**:
- Card/panel below main action buttons
- Heading "Recently Saved"
- List of note titles (clickable links)
- If empty, show "No recent notes"
**Data Source**:
- chrome.storage.local.recentNotes array
- Populated by background when saving notes
**Interactions**:
- Click note title → Opens note in Trilium (new tab)
**Files to Modify**:
- src/popup/popup.html (add <div> for recent notes)
- src/popup/popup.css (styles with theme variables)
- src/popup/index.ts (load and display recent notes)
- src/background/index.ts (store recent notes on save)
**Requirements**:
- Import and use theme.css with CSS variables
- Initialize ThemeManager
- Use centralized logging
- Handle empty state (no recent notes)
- Escape HTML in note titles
**Testing**:
- Test in light mode
- Test in dark mode
- Test with no recent notes
- Test with 1 note, 5 notes, 10+ notes
- Test note title with special characters
```
---
## Template 4: Refactor Code
```
Refactor [FUNCTION/MODULE] in src/[FILE].
**Current Issues**:
- [PROBLEM 1]
- [PROBLEM 2]
**Goals**:
- [IMPROVEMENT 1]
- [IMPROVEMENT 2]
**Approach**:
- [STEP 1]
- [STEP 2]
**Requirements**:
- Maintain existing functionality (no behavior changes)
- Improve type safety
- Add/improve logging
- Add error handling if missing
**Testing**:
- Verify all existing functionality still works
- Check no regressions
```
---
## Template 5: Investigate Issue
```
Investigate [ISSUE_DESCRIPTION].
**Symptoms**:
- [WHAT USER SEES]
**Context**:
- Happens when [SCENARIO]
- Doesn't happen when [SCENARIO]
**What to Check**:
1. Review relevant code in [FILE]
2. Check logs for errors
3. Check storage state
4. Compare with MV2 implementation (apps/web-clipper/[FILE])
**Expected Output**:
- Root cause analysis
- Proposed solution
- Code changes needed (if applicable)
```
---
## Template 6: Optimize Performance
```
Optimize performance of [FEATURE] in src/[FILE].
**Current Performance**: [METRICS]
**Target Performance**: [GOAL]
**Bottlenecks** (if known):
- [ISSUE 1]
- [ISSUE 2]
**Approach**:
- [OPTIMIZATION 1]
- [OPTIMIZATION 2]
**Requirements**:
- Measure before/after with performance.now()
- Log performance metrics
- Don't break existing functionality
**Testing**:
- Test with small dataset
- Test with large dataset
- Verify functionality unchanged
```
---
## Template 7: Update Documentation
```
Update [DOCUMENTATION_FILE].
**Changes Needed**:
- [CHANGE 1]
- [CHANGE 2]
**Reason**: [WHY UPDATING]
**Files**:
- docs/[FILE]
```
---
## Quick Copilot Commands
### For Understanding Legacy Code
```
Explain the [FEATURE] implementation in apps/web-clipper/[FILE]:[LINES].
Focus on:
- Core logic and data flow
- Key functions and their purpose
- Data structures used
- Edge cases handled
I need to replicate this in MV3 with modern patterns.
```
### For Code Review
```
Review the implementation in src/[FILE].
Check for:
- Proper error handling
- Centralized logging usage
- Theme system integration (if UI)
- Type safety (no 'any' types)
- Edge cases handled
- Performance concerns
Suggest improvements if any.
```
### For Pattern Guidance
```
What's the best MV3 pattern for [TASK]?
Constraints:
- Must work in service worker (no DOM)
- Need to handle [EDGE_CASE]
- Should follow docs/MIGRATION-PATTERNS.md
Show example implementation.
```
---
## Copilot Chat Shortcuts
### Quick Questions (Use Chat Pane - Free)
```
# Understand code
What does this function do?
# Check compatibility
Is this MV3 compatible?
# Get suggestions
How can I improve this?
# Find examples
Show example of [PATTERN]
# Explain error
Why is TypeScript showing this error?
```
### Inline Fixes (Use Ctrl+I - Free)
```
# Fix error
Fix this TypeScript error
# Add types
Add proper TypeScript types
# Improve logging
Add centralized logging
# Format code
Format this properly
# Add comments
Add explanatory comment
```
---
## Usage Tips
### When to Use Templates
1. **Use Template** when:
- Implementing planned feature
- Bug has clear reproduction steps
- Adding designed UI component
- Following established pattern
2. **Ask for Guidance First** when:
- Unclear how to approach problem
- Need to understand legacy code
- Choosing between approaches
- Architectural decision needed
3. **Use Inline Chat** when:
- Fixing TypeScript errors
- Adding missing imports
- Formatting code
- Quick refactoring
### Maximizing Copilot Efficiency
**Before Using Agent Mode (Task)**:
1. Understand the problem clearly
2. Review legacy code if migrating
3. Check docs/MIGRATION-PATTERNS.md for relevant pattern
4. Plan which files need changes
5. Fill out template completely
**During Agent Mode**:
1. Let it work uninterrupted
2. Review generated code carefully
3. Test immediately
4. Use inline chat for small fixes
**After Task**:
1. Update feature checklist
2. Commit with good message
3. Document any decisions
---
## Context File Quick Reference
Point Copilot to these when needed:
```
See docs/ARCHITECTURE.md for system overview
See docs/MIGRATION-PATTERNS.md for coding patterns
See docs/DEVELOPMENT-GUIDE.md for workflow guidance
See docs/FEATURE-PARITY-CHECKLIST.md for current status
See apps/web-clipper/[FILE] for MV2 reference
```
---
**Remember**: Well-prepared prompts = better results + fewer task retries = more efficient Copilot usage!