skills/moai-change-logger/SKILL.md
Comprehensive change tracking and audit logging system that monitors file modifications, code changes, and project evolution. Use when tracking project history, maintaining audit trails, analyzing development patterns, or when detailed change documentation is required for compliance and team collaboration.. Enhanced with Context7 MCP for up-to-date documentation.
npx skillsauth add ajbcoding/claude-skill-eval moai-change-loggerInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Change Logger
Primary Agent: alfred
Secondary Agents: none
Version: 4.0.0
Keywords: change, logger, auth, test, git
What It Does
Advanced change tracking and audit logging system that monitors all file modifications, code changes, and project evolution. Provides comprehensive audit trails, change analytics, and project insights for team collaboration and compliance requirements.
Core capabilities:
When to Use
Change Monitoring Systems
def monitor_file_changes():
"""Track individual file modifications"""
changes = {
"timestamp": datetime.now().isoformat(),
"files_modified": [],
"files_created": [],
"files_deleted": [],
"significance_score": 0.0,
"categories": []
}
# Monitor file system changes
for file_path in get_modified_files():
change = {
"path": file_path,
"type": "modified",
"size_delta": calculate_size_change(file_path),
"lines_added": count_added_lines(file_path),
"lines_removed": count_removed_lines(file_path),
"significance": assess_file_significance(file_path)
}
changes["files_modified"].append(change)
return changes
def track_git_activity():
"""Monitor Git repository activity"""
git_activity = {
"current_branch": get_current_branch(),
"last_commit": get_last_commit_info(),
"uncommitted_changes": get_git_status(),
"branch_history": get_recent_commits(limit=10),
"merge_activity": track_merge_activity(),
"tag_activity": track_tag_releases()
}
return git_activity
def track_developer_activity():
"""Monitor developer productivity patterns"""
activity = {
"session_duration": calculate_session_duration(),
"files_touched": count_files_touched(),
"lines_written": count_lines_written(),
"tools_used": track_tool_usage(),
"commands_executed": track_command_history(),
"productivity_score": calculate_productivity_score()
}
return activity
Change Analytics
def analyze_development_patterns():
"""Analyze team development patterns"""
patterns = {
"peak_development_hours": find_peak_activity_hours(),
"most_active_days": find_most_active_days(),
"change_frequency": calculate_change_frequency(),
"batch_size_distribution": analyze_commit_sizes(),
"file_type_distribution": analyze_file_type_changes(),
"collaboration_patterns": analyze_collaboration_patterns()
}
return patterns
def calculate_productivity_metrics():
"""Calculate team and individual productivity metrics"""
metrics = {
"code_velocity": calculate_code_velocity(),
"change_success_rate": calculate_change_success_rate(),
"rework_percentage": calculate_rework_percentage(),
"test_to_code_ratio": calculate_test_coverage_ratio(),
"documentation_to_code_ratio": calculate_documentation_ratio(),
"bug_fix_time": calculate_bug_fix_time()
}
return metrics
def assess_code_quality_trends():
"""Assess code quality trends over time"""
quality_trends = {
"code_complexity": track_complexity_changes(),
"technical_debt": track_technical_debt(),
"test_coverage": track_test_coverage_changes(),
"code_duplication": track_duplication_changes(),
"security_vulnerabilities": track_security_issues(),
"performance_trends": track_performance_changes()
}
return quality_trends
Integration Examples
def monitor_project_changes():
"""Real-time monitoring of project changes"""
while monitoring_active:
changes = detect_recent_changes()
if changes:
Skill("moai-change-logger")
for change in changes:
significance, factors = assess_change_significance(change.path, change)
category = determine_change_category(change)
log_change({
"timestamp": change.timestamp,
"file": change.path,
"type": change.type,
"significance": significance,
"category": category,
"factors": factors
})
# Notify for significant changes
if significance > 0.7:
notify_significant_change(change, category)
sleep(60) # Check every minute
def analyze_commit_changes():
"""Analyze changes before commit"""
staged_changes = get_staged_changes()
Skill("moai-change-logger")
analysis = {
"total_files": len(staged_changes),
"categories": categorize_changes(staged_changes),
"impact": analyze_change_impact(staged_changes),
"quality_checks": run_quality_checks(staged_changes),
"recommendations": generate_commit_recommendations(staged_changes)
}
display_commit_analysis(analysis)
return analysis
def generate_release_summary():
"""Generate comprehensive release change summary"""
Skill("moai-change-logger")
# Get changes since last release
changes = get_changes_since_last_release()
summary = {
"release_version": get_next_version(),
"changes_count": len(changes),
"categories": categorize_changes(changes),
"significance_distribution": analyze_significance_distribution(changes),
"contributors": identify_contributors(changes),
"risk_assessment": assess_release_risks(changes),
"testing_coverage": assess_testing_coverage(changes),
"documentation_updates": check_documentation_updates(changes)
}
generate_release_notes(summary)
save_change_archive(summary)
return summary
Storage and Retrieval
def store_change_record(change_record):
"""Store change record in structured format"""
change_data = {
"id": generate_change_id(),
"timestamp": change_record.timestamp,
"file_path": change_record.file_path,
"change_type": change_record.type,
"significance": change_record.significance,
"category": change_record.category,
"author": change_record.author,
"commit_hash": change_record.commit_hash,
"metadata": {
"lines_added": change_record.lines_added,
"lines_removed": change_record.lines_removed,
"file_size_delta": change_record.size_delta,
"tags": change_record.tags
}
}
# Store in change log database
save_to_change_log(change_data)
# Update indexes
update_search_indexes(change_data)
update_category_indexes(change_data)
def query_changes(query_params):
"""Query changes based on various criteria"""
filters = []
if query_params.get("date_range"):
filters.append(date_range_filter(query_params["date_range"]))
if query_params.get("categories"):
filters.append(category_filter(query_params["categories"]))
if query_params.get("significance_threshold"):
filters.append(significance_filter(query_params["significance_threshold"]))
if query_params.get("file_pattern"):
filters.append(file_pattern_filter(query_params["file_pattern"]))
if query_params.get("author"):
filters.append(author_filter(query_params["author"]))
results = apply_filters(filters)
return sort_results(results, query_params.get("sort_by", "timestamp"))
Usage Examples
# User wants to track changes to authentication system
Skill("moai-change-logger")
auth_changes = query_changes({
"file_pattern": "*auth*",
"date_range": "last_7_days",
"categories": ["feature_development", "security", "bug_fixes"]
})
# Display authentication system evolution
display_change_timeline(auth_changes)
# Generate compliance audit for last month
Skill("moai-change-logger")
compliance_report = generate_compliance_report()
audit_trail = generate_audit_log("monthly")
# Check for compliance issues
issues = identify_compliance_issues(compliance_report, audit_trail)
if issues:
display_compliance_alerts(issues)
else:
display_compliance_status("compliant")
# Analyze project health based on recent changes
Skill("moai-change-logger")
recent_changes = get_changes_for_period("last_30_days")
health_analysis = {
"code_quality": assess_code_quality_trends(recent_changes),
"development_velocity": calculate_velocity_trends(recent_changes),
"risk_indicators": identify_risk_patterns(recent_changes),
"team_productivity": assess_productivity_patterns(recent_changes)
}
display_project_health_dashboard(health_analysis)
End of Skill | Comprehensive change tracking for audit, analysis, and project management
Note: Advanced patterns for complex scenarios.
Coming soon: Deep dive into expert-level usage.
Must-Have:
Recommended:
Security:
When to Use Context7 for This Skill:
This skill benefits from Context7 when:
Example Usage:
# Fetch latest documentation
from moai_adk.integrations import Context7Helper
helper = Context7Helper()
docs = await helper.get_docs(
library_id="/org/library",
topic="change",
tokens=5000
)
Relevant Libraries:
| Library | Context7 ID | Use Case |
|---------|-------------|----------|
| [Library 1] | /org/lib1 | [When to use] |
When to use moai-change-logger:
Start
├─ Need change?
│ ├─ YES → Use this skill
│ └─ NO → Consider alternatives
└─ Complex scenario?
├─ YES → See Level 3
└─ NO → Start with Level 1
Prerequisite Skills:
Complementary Skills:
Next Steps:
Primary Documentation:
Best Practices:
v4.0.0 (2025-11-12)
Generated with: MoAI-ADK Skill Factory v4.0
Last Updated: 2025-11-12
Maintained by: Primary Agent (alfred)
content-media
Download YouTube video transcripts when user provides a YouTube URL or asks to download/get/fetch a transcript from YouTube. Also use when user wants to transcribe or get captions/subtitles from a YouTube video.
development
Transform learning content (like YouTube transcripts, articles, tutorials) into actionable implementation plans using the Ship-Learn-Next framework. Use when user wants to turn advice, lessons, or educational content into concrete action steps, reps, or a learning quest.
tools
Toolkit for styling artifacts with a theme. These artifacts can be slides, docs, reportings, HTML landing pages, etc. There are 10 pre-set themes with colors/fonts that you can apply to any artifact that has been creating, or can generate a new theme on-the-fly.
tools
Replace with description of the skill and when Claude should use it.