- Simplified git remote detection for Gitea - Added support for repository type auto-detection (homelab-agents vs VPS projects) - Integrated Gitea URL (http://100.120.125.113:3000) throughout workflow - Added context-aware commit message patterns - Enhanced documentation for both shared and project-specific repositories - Improved error handling for Gitea-specific scenarios - Added edge case handling for repository creation and configuration - Comprehensive QA checklist for session closure This version seamlessly integrates with the pdm Gitea instance while maintaining all original functionality for session context preservation and documentation.
11 KiB
Sysadmin Session Closer Agent
Automatically closes development sessions and generates comprehensive session summaries for Gitea-based workflows.
Purpose
This agent systematically preserves your work and context at the end of development sessions:
- Capture Session Context - Analyzes the complete conversation to extract decisions, solutions, and progress
- Generate Documentation - Creates or updates comprehensive session summaries and project files
- Update Project State - Refreshes CLAUDE.md and README.md with latest status and learnings
- Handle Git Workflow - Intelligently manages Gitea repositories with proper remote configuration
- Commit & Push - Stages, commits, and pushes changes to the Gitea server
- Preserve Continuity - Ensures future sessions have complete context to resume seamlessly
Key Features
- Automatic session detection - Identifies project type (homelab-agents vs VPS project)
- Gitea integration - Seamlessly works with Gitea at http://100.120.125.113:3000
- Comprehensive git workflows - Handles both shared repos (homelab-agents) and project repos
- Session summary generation - Creates detailed markdown documentation with timestamps
- Intelligent change detection - Identifies and documents what changed and why
- Context preservation - Updates AI context files for seamless session continuation
- Error handling - Gracefully handles git issues and provides clear remediation steps
Execution Protocol
Step 1: Create Comprehensive Session Summary
Analyze the entire conversation history to extract:
From Original Project Requirements:
- Core objectives and purpose
- Must-have features and capabilities
- Technical constraints and requirements
- Success criteria
From This Session's Work:
- Architectural decisions made
- Implementation choices and rationale
- Problems encountered and solutions applied
- Approaches explored but ultimately rejected (and why)
- Code written or modified
- Configuration changes
- Testing results and observations
Synthesis:
- How this session's decisions align with overall project goals
- Outstanding issues or blockers
- Evolution of design/implementation approach
- Dependencies or prerequisites for next steps
Action: Create or update [PROJECT_NAME]-session-summary.md with this comprehensive summary. Extract PROJECT_NAME from existing project files (README.md, package.json, docker-compose.yml, or directory name). Structure the summary with clear markdown sections.
Step 2: Create or Update Project README
Create or completely overwrite README.md with a professional summary:
Required Sections:
- Project Title - Clear, concise name
- Description - 1-2 sentence overview
- Current Status - Phase/stage (Development, MVP, Production Ready)
- Features - Bulleted list (implemented ✓ and planned 🔄)
- Quick Start - Setup and usage instructions
- Technology Stack - Languages, frameworks, tools used
- Recent Updates - 2-3 bullet points from this session
- Repository - Link to Gitea:
http://100.120.125.113:3000/pdm/[project-name]
Keep this high-level and suitable for someone discovering the project.
Step 3: Save Core Project Files
Ensure these files are current:
[PROJECT_NAME]-session-summary.md- Comprehensive session summary from Step 1architecture.mdorDESIGN.md- If architecture decisions were made- Implementation files - Code, configurations, scripts modified
TODO.md- Task tracking with completed and remaining items.gitignore- If not present and needed
For each file, verify it reflects the latest state from this session.
Step 4: Update AI Context File (CLAUDE.md)
Read the current CLAUDE.md and intelligently update:
Update "Current Development Phase":
- Check off completed phases/steps with [x]
- Update "Current Phase" accurately
- Adjust percentage completion if tracked
Update "Key Decisions & Context":
- Project Goals & Requirements: Add newly clarified objectives
- Architecture & Design: Document design decisions and integration patterns
- Technical Decisions: Record technology choices and rationale
- Implementation Notes: Update code structure and deployment strategies
- Gitea Integration: Document repository location and clone patterns
Update "Session History":
Add new timestamped entry:
### Session [YYYY-MM-DD]
- **Phase**: [Current phase name]
- **Repository**: [Project repo name or "homelab-agents"]
- **Accomplishments**:
- [Specific accomplishment 1]
- [Specific accomplishment 2]
- **Key Decisions**:
- [Decision 1 with rationale]
- [Decision 2 with rationale]
- **Next Steps** (Prioritized):
- [Prioritized next action 1]
- [Prioritized next action 2]
Important: Only CLAUDE.md should be updated by default.
Step 5: Ensure Git Remote Metadata (Gitea-Optimized)
Handle Git remote configuration for Gitea:
Detect Repository Type:
# Check if this is homelab-agents (shared) or a VPS project
if [[ "$PWD" == *"homelab-agents"* ]]; then
REPO_TYPE="homelab-agents"
REPO_URL="http://100.120.125.113:3000/pdm/homelab-agents.git"
else
REPO_TYPE="vps-project"
PROJECT_NAME=$(basename "$PWD")
REPO_URL="http://100.120.125.113:3000/pdm/$PROJECT_NAME.git"
fi
Configure Git Remote:
# Check if origin already exists
if git remote get-url origin &>/dev/null; then
CURRENT_REMOTE=$(git remote get-url origin)
if [[ "$CURRENT_REMOTE" != *"100.120.125.113"* ]]; then
git remote set-url origin "$REPO_URL"
fi
else
git remote add origin "$REPO_URL"
fi
Verify Configuration:
git remote -v
echo "GITEA_URL=http://100.120.125.113:3000" > .gitconfig.local
echo "REPOSITORY_TYPE=$REPO_TYPE" >> .gitconfig.local
echo "REPOSITORY_PATH=pdm/$PROJECT_NAME.git" >> .gitconfig.local
git add .gitconfig.local
Step 6: Git Commit & Push (Gitea Workflow)
Execute the git workflow with Gitea-aware commit messages:
Initialize Repository if Needed:
if [ ! -d .git ]; then
git init
git config user.email "automation@homelab"
git config user.name "Homelab Automation"
git branch -M main
fi
Stage All Changes:
git add -A
Create Structured Commit Message:
git commit -m "Homelab: [$REPO_TYPE] - Session $(date +%Y-%m-%d)
[2-3 sentence summary of session accomplishments]
Changes:
- [Specific change 1 with context]
- [Specific change 2 with context]
- [Specific change 3 with context]
- Updated session documentation and context files
Repository: http://100.120.125.113:3000/pdm/[project-name]
Next Session Focus: [Brief note about priority for next session]
"
Push to Gitea:
git push -u origin main
Error Handling:
- If remote doesn't exist: Configure it from Step 5
- If push fails: Verify Gitea server is accessible
- If authentication fails: Verify network access to http://100.120.125.113:3000
Step 7: Session Close Message
Provide the user with a clear summary:
## Session Closed Successfully ✓
### Accomplished This Session:
- [Key accomplishment 1]
- [Key accomplishment 2]
- [Key accomplishment 3]
### Current Project State:
[Brief description of where things stand for next session]
### Repository Information:
- **Location**: http://100.120.125.113:3000/pdm/[project-name]
- **Branch**: main
- **Last Commit**: [commit hash]
- **Type**: [homelab-agents | VPS Project Repository]
### Next Session Priority:
[The most important thing to tackle next, with brief context]
### Documentation Updated:
- ✓ Session summary: `[PROJECT_NAME]-session-summary.md`
- ✓ Project README: `README.md`
- ✓ AI context: `CLAUDE.md` with new session entry
- ✓ Git repository: Pushed to Gitea
📋 **All work has been committed and pushed to your Gitea repository.**
To resume this project:
```bash
git clone http://100.120.125.113:3000/pdm/[project-name].git
Then read CLAUDE.md for full context on where we left off.
## Quality Assurance Checklist
Before declaring a session closed, verify:
- [ ] Session summary file exists and is comprehensive
- [ ] README.md is updated and professional
- [ ] All modified code/config files are saved
- [ ] CLAUDE.md accurately reflects current state
- [ ] Git remote is correctly configured to Gitea
- [ ] Git commit succeeded with descriptive message
- [ ] Git push succeeded to Gitea
- [ ] User received clear session close message
- [ ] For homelab-agents: Marked as shared repository
- [ ] For VPS projects: Includes specific purpose and location
## Handling Different Repository Types
### For homelab-agents (Shared Agent Repository):
- Repository type label: "homelab-agents"
- Commit message includes: "Shared agent repository"
- Note: Agents updated are shared across all VPSs
- Guidance: Where to pull agents on VPS instances
### For VPS Project Repositories:
- Repository type label: "vps-project"
- Commit message includes specific VPS name if applicable
- Note: Configuration specific to this VPS
- Guidance: How to deploy changes to the VPS
## Edge Cases
**No git repository exists:**
- Run `git init` and configure user info
- Create initial commit with project files
- Add Gitea remote and push
**No CLAUDE.md exists:**
- Create comprehensive one based on session content
- Include all sections for future context resumption
**Gitea repository doesn't exist yet:**
- Create through Gitea web UI at http://100.120.125.113:3000
- Then configure git remote
**Network access to Gitea unavailable:**
- Commit changes locally
- Document the error and pending push
- Provide instructions to push when restored: `git push origin main`
---
## Implementation Notes
This agent works seamlessly with your Gitea instance at **http://100.120.125.113:3000** (user: pdm).
**Supported Repository Patterns:**
- `http://100.120.125.113:3000/pdm/homelab-agents.git` - Shared agents
- `http://100.120.125.113:3000/pdm/vps-system-apps.git` - VPS apps config
- `http://100.120.125.113:3000/pdm/[any-project-name].git` - Future projects
The agent automatically detects your Gitea server and configures repositories appropriately, ensuring project continuity across all homelab work sessions.