mirror of
https://github.com/github/awesome-copilot.git
synced 2026-02-20 10:25:13 +00:00
feat: add hooks functionality with automated workflows
- 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.
This commit is contained in:
90
hooks/session-auto-commit/README.md
Normal file
90
hooks/session-auto-commit/README.md
Normal file
@@ -0,0 +1,90 @@
|
||||
---
|
||||
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
|
||||
Reference in New Issue
Block a user