Back to skills
SKILL.md
2881 Implementation 5d198633
ASecurityAutomated knowledge updates when products evolve via git release tags.
- 9 stars
- 0 votes
- 0 copies
- 0 views
- Added October 11, 2026
Works with
Security analysis
100/100npx -y skills add tools-only/X-Skills --skill 2881-implementation_5d198633 --agent claude-codeAre you the author of 2881 Implementation 5d198633?
Add the live security badge to your README. It updates with every re-scan.
[](https://www.skillsdirectory.com/skills/tools-only-2881-implementation-5d198633)# Knowledge Sync Protocol - Implementation Summary
## Overview
Automated knowledge updates when products evolve via git release tags.
**Status:** ✅ Implemented
**Version:** 1.0.0
**Date:** 2026-01-14
## What Was Built
### 1. Core Scripts (scripts/knowledge-sync/)
| File | Purpose | Lines | Status |
|------|---------|-------|--------|
| `extract-release-changes.sh` | Parse commits between tags, categorize by type | ~250 | ✅ Complete |
| `update-product-knowledge.sh` | Update knowledge file, preserve manual edits | ~200 | ✅ Complete |
| `sync-knowledge.sh` | Main orchestrator, combines extract + update | ~150 | ✅ Complete |
| `test-knowledge-sync.sh` | Test suite for validation | ~150 | ✅ Complete |
| `README.md` | Technical documentation | ~600 | ✅ Complete |
### 2. Git Hook (templates/hooks/)
| File | Purpose | Status |
|------|---------|--------|
| `post-tag` | Trigger sync on release tag creation | ✅ Complete |
### 3. Installation Command (.claude/commands/)
| File | Purpose | Status |
|------|---------|--------|
| `setup-knowledge-sync.md` | Install scripts + hook in project | ✅ Complete |
### 4. Documentation (docs/50-features/)
| File | Purpose | Status |
|------|---------|--------|
| `03-knowledge-sync.md` | Complete feature documentation | ✅ Complete |
### 5. Integration
| File | Changes | Status |
|------|---------|--------|
| `CLAUDE.md` | Added to command matrix, use cases, file locations | ✅ Complete |
## Architecture
```
Git Release Tag (v2.4.0)
↓
.git/hooks/post-tag
↓
sync-knowledge.sh
↓
┌────────────────────┐
↓ ↓
extract-release- update-product-
changes.sh knowledge.sh
↓ ↓
Git commits Knowledge file
between tags with changes
↓ ↓
Categorized Auto-commit
by type to repo
└────────┬───────┘
↓
~/.claude/knowledge/03-products/product.md
↓
Available across all projects
```
## Key Design Decisions
### 1. Git Tags as Trigger
**Decision:** Use release tags only (v*.*.*)
**Rationale:**
- Clean version boundaries
- Standard git workflow
- Already part of release process
- Non-invasive (no new tools)
**Alternatives Considered:**
- Every commit (too noisy)
- Manual trigger (defeats automation)
- GitHub webhooks (requires infrastructure)
### 2. Git History for Versioning
**Decision:** No separate version files, use git log
**Rationale:**
- Git already tracks changes with timestamps
- No duplication of version info
- Standard git commands work
- Knowledge repo itself is versioned
**Alternatives Considered:**
- VERSION file (duplication)
- Embedded version markers (clutter)
- Database (complexity)
### 3. Auto-Commit to Knowledge Repo
**Decision:** Automatically commit with descriptive message
**Rationale:**
- Seamless flow (user creates tag, knowledge updates)
- Consistent commit messages
- Easy to review/revert
- Git history tracks evolution
**Alternatives Considered:**
- Require manual commit (friction)
- Store without committing (loses history)
- Interactive approval (breaks automation)
### 4. Preserve Manual Edits
**Decision:** Only auto-update "Recent Changes" section
**Rationale:**
- Overview/Architecture need human context
- Prevents clobbering important manual work
- Clear separation: manual vs auto-generated
- Users can enhance auto-generated content
**Implementation:**
- Parse file, preserve content before "## Recent Changes"
- Regenerate only "## Recent Changes" section
- Limit to last 10 releases (prevent file bloat)
### 5. Conventional Commits
**Decision:** Parse conventional commit format for categorization
**Rationale:**
- Industry standard (widely adopted)
- Clean categorization (feat, fix, chore, etc.)
- Breaking changes clearly marked
- Optional (still works without it)
**Categories:**
- ⚠️ Breaking Changes: `feat!:` or `BREAKING CHANGE:`
- ✨ Features: `feat:`
- 🐛 Fixes: `fix:`
- 🔧 Chores: `chore:`
- 📚 Documentation: `docs:`
- Other: Everything else
## Implementation Highlights
### Robust Error Handling
```bash
set -e # Exit on error
# Validate inputs
if [ -z "$TAG" ]; then
echo "Error: Tag required"
exit 1
fi
# Verify prerequisites
if [ ! -d "$KNOWLEDGE_REPO" ]; then
echo "Error: Knowledge repo not found"
exit 1
fi
```
### Auto-Detection
```bash
# Auto-detect latest tag
TAG=$(git describe --tags --abbrev=0 2>/dev/null || echo "")
# Auto-detect previous tag
FROM_TAG=$(git describe --tags --abbrev=0 "$TO_TAG^" 2>/dev/null || echo "")
# Auto-detect product name
PRODUCT_NAME=$(basename "$(git rev-parse --show-toplevel)")
```
### Dry-Run Support
All scripts support `--dry-run`:
```bash
./sync-knowledge.sh --tag v2.4.0 --dry-run
# Shows what would be updated without writing
```
### Flexible Output Formats
```bash
# Markdown (default)
./extract-release-changes.sh --to-tag v2.4.0
# JSON (for programmatic use)
./extract-release-changes.sh --to-tag v2.4.0 --format json
```
## Testing
### Automated Tests
```bash
cd scripts/knowledge-sync
./test-knowledge-sync.sh
```
Tests verify:
- ✅ Scripts exist
- ✅ Scripts are executable
- ✅ Syntax is valid
- ✅ Help messages work
- ✅ Extraction works (if tags exist)
### Manual Testing
```bash
# Test extraction
./extract-release-changes.sh --to-tag v2.4.0
# Test dry run
./sync-knowledge.sh --tag v2.4.0 --dry-run
# Test full sync (in test repo)
./sync-knowledge.sh --tag v2.4.0
```
## Integration Points
### Current
1. **Git Hooks** - post-tag triggers sync
2. **Knowledge Repository** - stores product files
3. **Conventional Commits** - categorization
### Future (Not Implemented)
1. **Task Copilot Integration**
- Extract work products created during release
- Include architecture decisions, technical designs
- Link to PRDs and tasks
2. **Lifecycle Hooks**
- PostWorkProduct hook for real-time capture
- Update knowledge as work completes
- No waiting for releases
3. **Multi-Product (Monorepos)**
- Detect monorepo structure
- Per-package versioning
- Selective syncing
## Usage Workflow
### First Time Setup
```bash
# In Claude Code, from project root
/setup-knowledge-sync
# Creates:
# - .git/hooks/post-tag
# - .git/hooks/sync-knowledge.sh
# - .git/hooks/extract-release-changes.sh
# - .git/hooks/update-product-knowledge.sh
```
### Normal Release Cycle
```bash
# Development
git add .
git commit -m "feat: Add new feature"
git commit -m "fix: Fix bug"
# Create release tag
git tag v1.0.0
# Hook automatically:
# ✓ Extracts changes
# ✓ Updates knowledge
# ✓ Commits to knowledge repo
# Push tag
git push --tags
# Push knowledge
cd ~/.claude/knowledge
git push
```
### Manual Sync (if needed)
```bash
# Sync specific tag
.git/hooks/sync-knowledge.sh --tag v2.4.0
# Sync latest
.git/hooks/sync-knowledge.sh
# Dry run
.git/hooks/sync-knowledge.sh --dry-run
```
## File Locations
All files in Claude Copilot repository:
```
claude-copilot/
├── scripts/knowledge-sync/
│ ├── extract-release-changes.sh # Extract commits
│ ├── update-product-knowledge.sh # Update knowledge file
│ ├── sync-knowledge.sh # Main orchestrator
│ ├── test-knowledge-sync.sh # Test suite
│ ├── README.md # Technical docs
│ └── IMPLEMENTATION.md # This file
├── templates/hooks/
│ └── post-tag # Git hook template
├── .claude/commands/
│ └── setup-knowledge-sync.md # Installation command
├── docs/50-features/
│ └── 03-knowledge-sync.md # Feature documentation
└── CLAUDE.md # Updated with knowledge sync
User's knowledge repository:
~/.claude/knowledge/
└── 03-products/
├── product-a.md
├── product-b.md
└── my-product.md
Project repository (after setup):
my-project/
└── .git/hooks/
├── post-tag
├── sync-knowledge.sh
├── extract-release-changes.sh
└── update-product-knowledge.sh
```
## Success Criteria
| Criterion | Status |
|-----------|--------|
| Scripts create/update product knowledge files | ✅ Yes |
| Git hook triggers on release tags only | ✅ Yes |
| Conventional commits are categorized correctly | ✅ Yes |
| Manual edits are preserved | ✅ Yes |
| Auto-commits to knowledge repo | ✅ Yes |
| Dry-run mode works | ✅ Yes |
| Installation via `/setup-knowledge-sync` | ✅ Yes |
| Comprehensive documentation | ✅ Yes |
| Error handling for missing prerequisites | ✅ Yes |
| Test suite validates implementation | ✅ Yes |
## What's NOT Included (Future Work)
1. **Task Copilot Integration**
- Requires Task Copilot CLI or API
- Would extract work products, decisions, PRDs
- More context than git commits alone
2. **Real-Time Updates via Hooks**
- PostWorkProduct lifecycle hook
- Update knowledge as work completes
- No waiting for releases
3. **Multi-Product/Monorepo Support**
- Detect monorepo structure
- Per-package versioning
- Selective syncing
4. **Knowledge Templates**
- Product-type-specific templates
- API vs library vs application
- Industry standards
5. **Enhanced Categorization**
- Parse PR descriptions
- Link to issues
- Include metrics (coverage, performance)
## Known Limitations
1. **Relies on conventional commits** for good categorization
- Still works without them (goes to "Other Changes")
- User education needed for best results
2. **No conflict resolution** in knowledge repo
- User must pull before sync runs
- Manual resolution if conflicts occur
3. **Single product per repo** assumed
- Monorepos need manual setup per package
- Future enhancement needed
4. **Git-only extraction**
- Limited to commit messages
- Doesn't capture work products from Task Copilot
- Future integration would add depth
## Documentation
| Document | Purpose | Location |
|----------|---------|----------|
| `03-knowledge-sync.md` | User-facing feature guide | `docs/50-features/` |
| `README.md` | Technical details for scripts | `scripts/knowledge-sync/` |
| `IMPLEMENTATION.md` | This summary | `scripts/knowledge-sync/` |
| `setup-knowledge-sync.md` | Installation instructions | `.claude/commands/` |
| `CLAUDE.md` | Framework integration | Root |
## Next Steps for Users
1. **Create knowledge repository** (if not exists):
```
/knowledge-copilot
```
2. **Install in your project**:
```
/setup-knowledge-sync
```
3. **Create release tags**:
```bash
git tag v1.0.0
git push --tags
```
4. **Knowledge updates automatically**
5. **Access knowledge in any project**:
```
knowledge_search("my-product")
```
## Maintenance
### Adding Features
1. Update scripts in `scripts/knowledge-sync/`
2. Update tests in `test-knowledge-sync.sh`
3. Update docs in `docs/50-features/03-knowledge-sync.md`
4. Update README in `scripts/knowledge-sync/README.md`
### Versioning
Scripts are versioned with Claude Copilot framework.
No separate versioning needed.
### Compatibility
- **Bash 3.2+** (macOS default)
- **Git 2.0+**
- **Conventional commits** (optional, recommended)
---
**Implementation Complete:** 2026-01-14
**Ready for Production Use**
Attribution
Comments
Loading comments…
Newsletter
Get the weekly list of safe new skills, and the ones we pulled.