{"id":48133021,"url":"https://github.com/chf3198/copilot-handoff","last_synced_at":"2026-04-04T16:41:02.498Z","repository":{"id":334818398,"uuid":"1132611370","full_name":"chf3198/copilot-handoff","owner":"chf3198","description":"🤝 Track GitHub Copilot chat session duration and get timely reminders for context-preserving handoffs. Prevent context degradation!","archived":false,"fork":false,"pushed_at":"2026-03-20T01:54:05.000Z","size":308,"stargazers_count":0,"open_issues_count":8,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-03-20T17:44:10.956Z","etag":null,"topics":["ai-assistant","ai-chat","collaboration","context-management","context-preservation","copilot","developer-tools","github-copilot","handoff","productivity","session-tracking","typescript","vscode","vscode-extension"],"latest_commit_sha":null,"homepage":null,"language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/chf3198.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":".github/CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":".github/SECURITY.md","support":".github/SUPPORT.md","governance":null,"roadmap":".github/ROADMAP.md","authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null},"funding":null},"created_at":"2026-01-12T07:54:18.000Z","updated_at":"2026-03-20T01:54:09.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/chf3198/copilot-handoff","commit_stats":null,"previous_names":["chf3198/copilot-handoff"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/chf3198/copilot-handoff","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chf3198%2Fcopilot-handoff","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chf3198%2Fcopilot-handoff/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chf3198%2Fcopilot-handoff/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chf3198%2Fcopilot-handoff/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/chf3198","download_url":"https://codeload.github.com/chf3198/copilot-handoff/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chf3198%2Fcopilot-handoff/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31405708,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-04T10:20:44.708Z","status":"ssl_error","status_checked_at":"2026-04-04T10:20:06.846Z","response_time":60,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["ai-assistant","ai-chat","collaboration","context-management","context-preservation","copilot","developer-tools","github-copilot","handoff","productivity","session-tracking","typescript","vscode","vscode-extension"],"created_at":"2026-04-04T16:41:02.405Z","updated_at":"2026-04-04T16:41:02.486Z","avatar_url":"https://github.com/chf3198.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cdiv align=\"center\"\u003e\n\n# 🤝 Copilot Handoff\n\n\u003cimg src=\"images/icon.png\" alt=\"Copilot Handoff Logo\" width=\"128\" height=\"128\"\u003e\n\n### Track GitHub Copilot chat session duration and get timely reminders for context-preserving handoffs\n\n[![VS Code Marketplace](https://img.shields.io/visual-studio-marketplace/v/curtisfranks.copilot-handoff?style=for-the-badge\u0026logo=visual-studio-code\u0026logoColor=white\u0026color=0078d7)](https://marketplace.visualstudio.com/items?itemName=curtisfranks.copilot-handoff)\n[![Downloads](https://img.shields.io/visual-studio-marketplace/d/curtisfranks.copilot-handoff?style=for-the-badge\u0026color=success)](https://marketplace.visualstudio.com/items?itemName=curtisfranks.copilot-handoff)\n[![Rating](https://img.shields.io/visual-studio-marketplace/r/curtisfranks.copilot-handoff?style=for-the-badge\u0026color=yellow)](https://marketplace.visualstudio.com/items?itemName=curtisfranks.copilot-handoff)\n[![License: PolyForm NC](https://img.shields.io/badge/License-PolyForm%20NC%201.0-blue.svg?style=for-the-badge)](LICENSE)\n\n[![CI Status](https://img.shields.io/github/actions/workflow/status/chf3198/copilot-handoff/ci.yml?branch=main\u0026style=for-the-badge\u0026label=CI)](https://github.com/chf3198/copilot-handoff/actions)\n[![GitHub Issues](https://img.shields.io/github/issues/chf3198/copilot-handoff?style=for-the-badge)](https://github.com/chf3198/copilot-handoff/issues)\n[![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg?style=for-the-badge)](CONTRIBUTING.md)\n\n**[Features](#key-features)** · **[Installation](#installation)** · **[Usage](#usage)** · **[Configuration](#configuration)** · **[Contributing](CONTRIBUTING.md)** · **[Roadmap](.github/ROADMAP.md)**\n\n\u003c/div\u003e\n\n---\n\n**Copilot Handoff** is a VS Code extension that tracks how long you have been in a GitHub Copilot Chat session and reminds you when to start a fresh conversation. Long AI chat sessions degrade context quality — responses become less accurate as the context window fills with older, less relevant information. The extension shows session duration in the status bar, sends configurable reminders at your chosen threshold, and exports a structured handoff document so your next session has full context on what you were working on. Built with TypeScript and the VS Code Extension API.\n\n---\n\n## Why Copilot Handoff?\n\n\u003ctable\u003e\n\u003ctr\u003e\n\u003ctd width=\"50%\"\u003e\n\n### The Problem 😓\n\nLong AI chat sessions lead to:\n- **Context degradation** over time — the model loses track of earlier decisions\n- **Less accurate responses** as irrelevant history accumulates\n- **Lost decisions** and important insights that fall off the edge\n- **Difficulty resuming** work after breaks\n\n\u003c/td\u003e\n\u003ctd width=\"50%\"\u003e\n\n### The Solution ✨\n\nCopilot Handoff provides:\n- **Automatic session tracking** in the background\n- **Smart reminders** at the threshold you choose\n- **Context export** with one click — structured Markdown or clipboard\n- **`@handoff` chat participant** for in-chat health analysis\n\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/table\u003e\n\n---\n\n## Key Features\n\n| Feature | Description |\n|---------|-------------|\n| **Session Duration Tracking** | Real-time status bar display. Persists across VS Code restarts. Inactivity auto-reset after 5 minutes. |\n| **Smart Notifications** | Configurable reminder modes: once at threshold, periodic at intervals, or never (tracking only). |\n| **Context Export** | Save session state as a structured Markdown handoff document, copy to clipboard, or use a guided template with sections for tasks, decisions, and next steps. |\n| **@handoff Chat Participant** | `@handoff analyze` scores your chat health (0–100). `@handoff export` exports context for a new session. |\n| **Fully Configurable** | Six settings control all thresholds and behaviors. |\n\n---\n\n## How It Works\n\n```mermaid\ngraph LR\n    A[Start Coding] --\u003e B[Session Tracking Begins]\n    B --\u003e C{Threshold Reached?}\n    C --\u003e|No| B\n    C --\u003e|Yes| D[Show Notification]\n    D --\u003e E{User Action}\n    E --\u003e|Export Context| F[Save Handoff Document]\n    E --\u003e|Reset Timer| B\n    E --\u003e|Remind Later| G[Snooze]\n    G --\u003e B\n    F --\u003e H[Continue Fresh Session]\n```\n\n### Health Scoring\n\n`@handoff analyze` scores your current chat session:\n\n| Score | Status | Recommendation |\n|-------|--------|----------------|\n| 90–100 | 🟢 Excellent | Chat is healthy — continue working |\n| 70–89 | 🟡 Good | Monitor for quality issues |\n| 50–69 | 🟠 Fair | Consider a handoff soon |\n| \u003c 50 | 🔴 Poor | Immediate handoff recommended |\n\n---\n\n## Installation\n\n**From VS Code Marketplace (recommended)**\n\n1. Open the Extensions view (`Ctrl+Shift+X` / `Cmd+Shift+X`)\n2. Search for **\"Copilot Handoff\"** and click **Install**\n\n**From Command Palette**\n\nPress `Ctrl+P` → type `ext install curtisfranks.copilot-handoff` → Enter\n\n**Manual**\n\nDownload the `.vsix` from [Releases](https://github.com/chf3198/copilot-handoff/releases):\n\n```bash\ncode --install-extension copilot-handoff-*.vsix\n```\n\n---\n\n## Usage\n\n### Status Bar\n\nThe **$(pulse) Check Chat Health** button is always visible in the status bar. Click it to open Copilot Chat with `@handoff analyze` pre-filled. Press Enter to see your health report.\n\n### Commands\n\nAccess all features via `Ctrl+Shift+P` / `Cmd+Shift+P`:\n\n| Command | Description |\n|---------|-------------|\n| `Copilot Handoff: Check Chat Health` | Open chat with `@handoff analyze` pre-filled |\n| `Copilot Handoff: Show Session Info` | View detailed session information |\n| `Copilot Handoff: Export Chat Context` | Export context with format options |\n| `Copilot Handoff: Reset Session Timer` | Manually reset the timer |\n| `Copilot Handoff: Toggle Tracking` | Enable/disable session tracking |\n\n### @handoff Chat Participant\n\n| Command | Description |\n|---------|-------------|\n| `@handoff analyze` | Analyze current chat health with 0–100 scoring |\n| `@handoff export` | Export context for handoff to a new session |\n\n### Context Export Format\n\nExported handoff documents include:\n\n- **Session metadata** — timestamp, workspace, current file\n- **Working state** — active files, selections, language\n- **Guided sections** — what I was working on, key decisions made, next steps, important context notes\n\n---\n\n## Configuration\n\nCustomize all settings in VS Code Settings (`Ctrl+,` / `Cmd+,`). Search for `copilot-handoff`:\n\n| Setting | Type | Default | Description |\n|---------|------|---------|-------------|\n| `sessionThresholdMinutes` | number | `30` | Minutes before showing handoff reminder (5–180) |\n| `notificationFrequency` | string | `periodic` | When to show reminders: `once`, `periodic`, or `never` |\n| `periodicReminderMinutes` | number | `10` | Minutes between periodic reminders (1–60) |\n| `autoExportContext` | boolean | `false` | Automatically export context when handoff triggers |\n| `showStatusBar` | boolean | `true` | Show session duration in status bar |\n| `trackingEnabled` | boolean | `true` | Enable/disable session tracking |\n\n### Configuration Examples\n\n**Conservative (less interruption)**\n```jsonc\n{\n  \"copilot-handoff.sessionThresholdMinutes\": 60,\n  \"copilot-handoff.notificationFrequency\": \"once\"\n}\n```\n\n**Aggressive (frequent handoffs)**\n```jsonc\n{\n  \"copilot-handoff.sessionThresholdMinutes\": 15,\n  \"copilot-handoff.notificationFrequency\": \"periodic\",\n  \"copilot-handoff.periodicReminderMinutes\": 5\n}\n```\n\n**Silent (tracking only)**\n```jsonc\n{\n  \"copilot-handoff.notificationFrequency\": \"never\",\n  \"copilot-handoff.showStatusBar\": true\n}\n```\n\n### Best Practices\n\n1. **Set realistic thresholds** — default 30 minutes works well; adjust to your session rhythm\n2. **Use periodic reminders** — keeps context fresh without a single hard stop\n3. **Export before breaks** — save context before stepping away from a complex problem\n4. **Document decisions** — use the handoff template to capture key choices, not just state\n\n---\n\n## Requirements\n\n| Requirement | Version |\n|------------|---------|\n| VS Code | 1.85.0+ |\n| GitHub Copilot | Any (recommended, not required) |\n| Platform | Windows, macOS, Linux |\n\n---\n\n## Known Issues\n\n| Issue | Status |\n|-------|--------|\n| Session tracking uses general editor activity as proxy for Copilot usage | Planned for v0.3.0 when VS Code exposes Copilot Chat API events |\n| Direct Copilot Chat API not fully accessible in all VS Code versions | Depends on VS Code API updates |\n\n---\n\n## Frequently Asked Questions\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cstrong\u003eDoes this extension collect any data?\u003c/strong\u003e\u003c/summary\u003e\n\nNo. Copilot Handoff stores session timing locally only. It never transmits data, never reads your code, and never reads your chat content — only activity timing.\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cstrong\u003eWill this interrupt my workflow?\u003c/strong\u003e\u003c/summary\u003e\n\nNo. Notifications can be dismissed, snoozed, or set to `\"never\"`. The status bar can be hidden. All features are optional.\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cstrong\u003eDo I need GitHub Copilot installed?\u003c/strong\u003e\u003c/summary\u003e\n\nNo, but it's recommended. The extension works independently, tracking general editor activity.\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cstrong\u003eCan I customize the handoff template?\u003c/strong\u003e\u003c/summary\u003e\n\nCurrently the template is standard but editable after export. Custom templates are planned — see the [Roadmap](.github/ROADMAP.md).\n\u003c/details\u003e\n\n---\n\n## Contributing\n\nContributions are welcome! See [CONTRIBUTING.md](CONTRIBUTING.md) to get started.\n\n1. Fork the repository\n2. Create a feature branch: `git checkout -b feature/amazing-feature`\n3. Commit and push, then open a Pull Request\n\n---\n\n## Release Notes\n\n### v0.1.0 — January 26, 2026\n\nInitial release.\n\n- Session duration tracking with persistent state across VS Code restarts\n- Smart notification system (once/periodic/never modes)\n- Context export: clipboard, file, and guided Markdown template\n- `@handoff` chat participant with 0–100 health scoring\n- 5-minute inactivity auto-reset\n- TypeScript strict mode, zero runtime dependencies\n\nSee [CHANGELOG.md](CHANGELOG.md) for complete history.\n\n---\n\n## Support\n\n[![GitHub Issues](https://img.shields.io/github/issues/chf3198/copilot-handoff?style=for-the-badge\u0026logo=github)](https://github.com/chf3198/copilot-handoff/issues)\n[![GitHub Discussions](https://img.shields.io/github/discussions/chf3198/copilot-handoff?style=for-the-badge\u0026logo=github)](https://github.com/chf3198/copilot-handoff/discussions)\n\n- [Report an issue](https://github.com/chf3198/copilot-handoff/issues)\n- [Request a feature](https://github.com/chf3198/copilot-handoff/issues/new?template=feature_request.md)\n- [Join discussions](https://github.com/chf3198/copilot-handoff/discussions)\n\n---\n\n## License\n\n**[PolyForm Noncommercial 1.0.0](LICENSE)** — free for personal, educational, and non-commercial use. Commercial use requires a paid license. See [COMMERCIAL-LICENSE.md](COMMERCIAL-LICENSE.md) or contact [curtisfranks@gmail.com](mailto:curtisfranks@gmail.com).\n\n© 2026 Curtis Franks\n\n---\n\n\u003cdiv align=\"center\"\u003e\n  \u003csub\u003eMade with ❤️ for the VS Code community\u003c/sub\u003e\n\u003c/div\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fchf3198%2Fcopilot-handoff","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fchf3198%2Fcopilot-handoff","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fchf3198%2Fcopilot-handoff/lists"}