mirror of
https://github.com/muratcankoylan/Agent-Skills-for-Context-Engineering.git
synced 2026-09-14 20:36:54 +08:00
ace9c0aeb3
- Personal operating system for founders/creators as Claude Code skill - 6 isolated modules following context engineering principles - 4 automation scripts with tool-design consolidation - Complete skills traceability documentation
122 lines
3.1 KiB
Python
122 lines
3.1 KiB
Python
#!/usr/bin/env python3
|
|
"""
|
|
Weekly Review Generator
|
|
Compiles data from Digital Brain into a weekly review document.
|
|
"""
|
|
|
|
import json
|
|
import os
|
|
from datetime import datetime, timedelta
|
|
from pathlib import Path
|
|
|
|
# Get the digital brain root (parent of agents/)
|
|
BRAIN_ROOT = Path(__file__).parent.parent.parent
|
|
|
|
def load_jsonl(filepath):
|
|
"""Load JSONL file, skipping schema lines."""
|
|
items = []
|
|
if not filepath.exists():
|
|
return items
|
|
with open(filepath, 'r') as f:
|
|
for line in f:
|
|
line = line.strip()
|
|
if not line:
|
|
continue
|
|
try:
|
|
data = json.loads(line)
|
|
# Skip schema definition lines
|
|
if '_schema' not in data:
|
|
items.append(data)
|
|
except json.JSONDecodeError:
|
|
continue
|
|
return items
|
|
|
|
def get_week_range():
|
|
"""Get the start and end of the current week."""
|
|
today = datetime.now()
|
|
start = today - timedelta(days=today.weekday())
|
|
end = start + timedelta(days=6)
|
|
return start.strftime('%Y-%m-%d'), end.strftime('%Y-%m-%d')
|
|
|
|
def analyze_content(week_start):
|
|
"""Analyze content published this week."""
|
|
posts = load_jsonl(BRAIN_ROOT / 'content' / 'posts.jsonl')
|
|
ideas = load_jsonl(BRAIN_ROOT / 'content' / 'ideas.jsonl')
|
|
|
|
week_posts = [p for p in posts if p.get('published', '') >= week_start]
|
|
new_ideas = [i for i in ideas if i.get('created', '') >= week_start]
|
|
|
|
return {
|
|
'posts_published': len(week_posts),
|
|
'new_ideas': len(new_ideas),
|
|
'posts': week_posts
|
|
}
|
|
|
|
def analyze_network(week_start):
|
|
"""Analyze network activity this week."""
|
|
interactions = load_jsonl(BRAIN_ROOT / 'network' / 'interactions.jsonl')
|
|
|
|
week_interactions = [i for i in interactions if i.get('date', '') >= week_start]
|
|
|
|
return {
|
|
'interactions': len(week_interactions),
|
|
'details': week_interactions
|
|
}
|
|
|
|
def analyze_metrics():
|
|
"""Get latest metrics if available."""
|
|
metrics = load_jsonl(BRAIN_ROOT / 'operations' / 'metrics.jsonl')
|
|
if metrics:
|
|
return metrics[-1] # Most recent
|
|
return {}
|
|
|
|
def generate_review():
|
|
"""Generate the weekly review output."""
|
|
week_start, week_end = get_week_range()
|
|
|
|
content = analyze_content(week_start)
|
|
network = analyze_network(week_start)
|
|
metrics = analyze_metrics()
|
|
|
|
review = f"""
|
|
# Weekly Review: {week_start} to {week_end}
|
|
Generated: {datetime.now().isoformat()}
|
|
|
|
## Summary
|
|
|
|
### Content
|
|
- Posts published: {content['posts_published']}
|
|
- New ideas captured: {content['new_ideas']}
|
|
|
|
### Network
|
|
- Interactions logged: {network['interactions']}
|
|
|
|
### Latest Metrics
|
|
"""
|
|
|
|
if metrics:
|
|
audience = metrics.get('audience', {})
|
|
for key, value in audience.items():
|
|
review += f"- {key}: {value}\n"
|
|
else:
|
|
review += "- No metrics recorded yet\n"
|
|
|
|
review += """
|
|
## Action Items
|
|
|
|
1. [ ] Review content performance
|
|
2. [ ] Plan next week's content
|
|
3. [ ] Follow up on pending introductions
|
|
4. [ ] Update goals progress
|
|
5. [ ] Schedule key meetings
|
|
|
|
## Notes
|
|
|
|
[Add your reflections here]
|
|
"""
|
|
|
|
return review
|
|
|
|
if __name__ == '__main__':
|
|
print(generate_review())
|