Install
openclaw skills install @netanel-abergel/heleni-best-practicesDaily check of Heleni's PA Skills website for new best practices, lessons learned, and skill updates. Use when: running daily sync, owner asks 'any updates from Heleni?', or during weekly self-improvement review. Fetches https://netanel-abergel.github.io/pa-skills/learn.html and applies relevant lessons to this agent's own setup.
openclaw skills install @netanel-abergel/heleni-best-practicesHeleni is an AI PA running on OpenClaw. She publishes real lessons from production at:
Small model for fetching and diffing. Medium model for applying lessons.
Once a day:
LEARN_URL="https://netanel-abergel.github.io/pa-skills/learn.html"
SKILLS_URL="https://github.com/netanel-abergel/pa-skills/tree/main/skills"
RAW_BASE="https://raw.githubusercontent.com/netanel-abergel/pa-skills/main/skills"
# Fetch learn page
curl -s "$LEARN_URL" -o /tmp/heleni-learn-current.html
# Get list of active skills from GitHub
curl -s "https://api.github.com/repos/netanel-abergel/pa-skills/contents/skills" \
| python3 -c "import sys,json; [print(i['name']) for i in json.load(sys.stdin) if i['type']=='dir']" \
> /tmp/heleni-skills-current.txt
LAST_STATE="$WORKSPACE/data/heleni-best-practices-state.json"
# If no state file → first run, save and exit
if [ ! -f "$LAST_STATE" ]; then
python3 -c "
import json, hashlib
with open('/tmp/heleni-learn-current.html') as f: content = f.read()
with open('/tmp/heleni-skills-current.txt') as f: skills = f.read().strip().split()
state = {'learn_hash': hashlib.sha256(content.encode()).hexdigest(), 'skills': skills}
with open('$LAST_STATE', 'w') as f: json.dump(state, f)
print('FIRST_RUN')
"
exit 0
fi
# Compare hashes
python3 << 'EOF'
import json, hashlib
with open('/tmp/heleni-learn-current.html') as f: current_content = f.read()
with open('/tmp/heleni-skills-current.txt') as f: current_skills = f.read().strip().split('\n')
current_hash = hashlib.sha256(current_content.encode()).hexdigest()
with open('$LAST_STATE') as f: last = json.load(f)
changed = current_hash != last.get('learn_hash', '')
new_skills = [s for s in current_skills if s not in last.get('skills', [])]
removed_skills = [s for s in last.get('skills', []) if s not in current_skills]
print(f"CHANGED={changed}")
print(f"NEW_SKILLS={new_skills}")
print(f"REMOVED_SKILLS={removed_skills}")
EOF
Use web_fetch tool to read https://netanel-abergel.github.io/pa-skills/learn.html.
Extract:
For each lesson found, evaluate:
| Lesson type | Action |
|---|---|
| HOT.md rule | Check if this agent breaks the same pattern → add to own HOT.md if yes |
| SOUL.md principle | Check if already covered → add if missing |
| Skill design rule | Update local skill-master description if relevant |
| New skill available | Fetch SKILL.md from GitHub, review, recommend to owner |
Always ask before:
Can apply without asking:
.learnings/heleni-sync/YYYY-MM-DD.md# Update state file
python3 -c "
import json, hashlib
with open('/tmp/heleni-learn-current.html') as f: content = f.read()
with open('/tmp/heleni-skills-current.txt') as f: skills = f.read().strip().split()
state = {'learn_hash': hashlib.sha256(content.encode()).hexdigest(), 'skills': skills, 'last_checked': '$(date -u +%Y-%m-%dT%H:%M:%SZ)'}
with open('$LAST_STATE', 'w') as f: json.dump(state, f)
"
Report format:
📡 Heleni Sync — YYYY-MM-DD
✅ No changes / ⚡ [N] updates found
New lessons:
• [Lesson] — [Applied / Recommended to owner]
New skills available:
• [skill-name] — [description] → [Installed / Recommended]
Next check: tomorrow
Daily at 07:00 UTC (before morning briefing):
{
"id": "heleni-best-practices-sync",
"schedule": "0 7 * * *",
"timezone": "UTC",
"task": "Run heleni-best-practices skill: fetch https://netanel-abergel.github.io/pa-skills/learn.html, compare to last known state at data/heleni-best-practices-state.json, extract new lessons, log to .learnings/heleni-sync/YYYY-MM-DD.md. If significant changes found (new principles, new skills), notify owner with a 2-line summary.",
"delivery": {
"mode": "silent"
}
}
Silent by default. Notifies owner only if something actionable was found.
Trigger phrases:
Pre-loaded so first run has context:
Source: https://netanel-abergel.github.io/pa-skills/learn.html