mirror of
https://github.com/github/awesome-copilot.git
synced 2026-02-20 02:15:12 +00:00
- Introduced hooks to enable automated workflows triggered by specific events during GitHub Copilot sessions. - Added documentation for hooks in AGENTS.md and README.md. - Created a new directory structure for hooks, including README.md and hooks.json files. - Implemented two example hooks: Session Auto-Commit and Session Logger. - Developed scripts for logging session events and auto-committing changes. - Enhanced validation and parsing for hook metadata. - Updated build and validation scripts to accommodate new hooks functionality.
91 lines
2.5 KiB
Markdown
91 lines
2.5 KiB
Markdown
---
|
|
name: 'Session Auto-Commit'
|
|
description: 'Automatically commits and pushes changes when a Copilot coding agent session ends'
|
|
tags: ['automation', 'git', 'productivity']
|
|
---
|
|
|
|
# Session Auto-Commit Hook
|
|
|
|
Automatically commits and pushes changes when a GitHub Copilot coding agent session ends, ensuring your work is always saved and backed up.
|
|
|
|
## Overview
|
|
|
|
This hook runs at the end of each Copilot coding agent session and automatically:
|
|
- Detects if there are uncommitted changes
|
|
- Stages all changes
|
|
- Creates a timestamped commit
|
|
- Pushes to the remote repository
|
|
|
|
## Features
|
|
|
|
- **Automatic Backup**: Never lose work from a Copilot session
|
|
- **Timestamped Commits**: Each auto-commit includes the session end time
|
|
- **Safe Execution**: Only commits when there are actual changes
|
|
- **Error Handling**: Gracefully handles push failures
|
|
|
|
## Installation
|
|
|
|
1. Copy this hook folder to your repository's `.github/hooks/` directory:
|
|
```bash
|
|
cp -r hooks/session-auto-commit .github/hooks/
|
|
```
|
|
|
|
2. Ensure the script is executable:
|
|
```bash
|
|
chmod +x .github/hooks/session-auto-commit/auto-commit.sh
|
|
```
|
|
|
|
3. Commit the hook configuration to your repository's default branch
|
|
|
|
## Configuration
|
|
|
|
The hook is configured in `hooks.json` to run on the `sessionEnd` event:
|
|
|
|
```json
|
|
{
|
|
"version": 1,
|
|
"hooks": {
|
|
"sessionEnd": [
|
|
{
|
|
"type": "command",
|
|
"bash": ".github/hooks/session-auto-commit/auto-commit.sh",
|
|
"timeoutSec": 30
|
|
}
|
|
]
|
|
}
|
|
}
|
|
```
|
|
|
|
## How It Works
|
|
|
|
1. When a Copilot coding agent session ends, the hook executes
|
|
2. Checks if inside a Git repository
|
|
3. Detects uncommitted changes using `git status`
|
|
4. Stages all changes with `git add -A`
|
|
5. Creates a commit with format: `auto-commit: YYYY-MM-DD HH:MM:SS`
|
|
6. Attempts to push to remote
|
|
7. Reports success or failure
|
|
|
|
## Customization
|
|
|
|
You can customize the hook by modifying `auto-commit.sh`:
|
|
|
|
- **Commit Message Format**: Change the timestamp format or message prefix
|
|
- **Selective Staging**: Use specific git add patterns instead of `-A`
|
|
- **Branch Selection**: Push to specific branches only
|
|
- **Notifications**: Add desktop notifications or Slack messages
|
|
|
|
## Disabling
|
|
|
|
To temporarily disable auto-commits:
|
|
|
|
1. Remove or comment out the `sessionEnd` hook in `hooks.json`
|
|
2. Or set an environment variable: `export SKIP_AUTO_COMMIT=true`
|
|
|
|
## Notes
|
|
|
|
- The hook uses `--no-verify` to avoid triggering pre-commit hooks
|
|
- Failed pushes won't block session termination
|
|
- Requires appropriate git credentials configured
|
|
- Works with both Copilot coding agent and GitHub Copilot CLI
|