.claude/skills/learn-new-things/SKILL.md
Continuous learning heartbeat - autonomously researches, extracts insights, and expands knowledge base
npx skillsauth add abilityai/cornelius learn-new-thingsInstall 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.
Autonomous learning loop that periodically expands the knowledge base through research, extraction, and connection discovery. Runs locally using existing skills and sub-agents.
This heartbeat skill implements a continuous learning cycle:
Each cycle is a complete learning session. The heartbeat never "completes" - it continuously learns.
Git Workflow: Each learning session commits to its own branch (learning/YYYY-MM-DD-topic-slug), then returns to main. This keeps main clean while preserving all learning for selective merging.
/deep-research, /auto-discovery, /integrate-recent-notes, /refresh-index/learn-new-things # Default: 8-hour interval, auto-select topic
/learn-new-things 4 # 4-hour interval
/learn-new-things 8 "multi-agent systems" # Specific topic
/learn-new-things stop # Stop the learning loop
Track learning progress in resources/learn-new-things-log.md:
session_id: YYYY-MM-DD-HHMMSS
last_cycle: 2026-02-18T13:15:00
cycles_completed: 0
topics_researched: []
insights_extracted: 0
connections_discovered: 0
consecutive_errors: 0
phase: "running" # running | paused | error
branches_created: [] # e.g., ["learning/2026-02-18-embodied-cognition"]
Read or create state file:
cat /Users/eugene/Dropbox/Agents/Cornelius/resources/learn-new-things-log.md 2>/dev/null || echo "No existing state"
Parse arguments:
$ARGUMENTS[0] - Interval in hours (default: 8)$ARGUMENTS[1] - Optional topic (default: auto-select)If argument is "stop", set phase: "paused" and exit.
Check when index was last updated:
ls -la /Users/eugene/Dropbox/Agents/Cornelius/resources/local-brain-search/data/brain.faiss
If older than 24 hours, refresh:
/Users/eugene/Dropbox/Agents/Cornelius/resources/local-brain-search/run_reindex.sh
Read current analysis:
head -100 /Users/eugene/Dropbox/Agents/Cornelius/knowledge-base-analysis.md
Note:
Use the provided topic from $ARGUMENTS[1].
Select topic based on knowledge base gaps and rotation. Use these strategies:
Strategy A: Gap-Filling Choose from underrepresented domains in knowledge-base-analysis.md:
Strategy B: Depth-Building Extend existing strong domains:
Strategy C: Emerging Trends Research cutting-edge developments:
Rotation Logic:
cycle_num = cycles_completed % 3
if cycle_num == 0: Strategy A (gap-filling)
if cycle_num == 1: Strategy B (depth-building)
if cycle_num == 2: Strategy C (emerging)
Document selected topic and rationale.
Launch the deep-research skill with selected topic:
Use Task tool with subagent_type='research-specialist':
TOPIC: [Selected topic]
Conduct comprehensive research on [topic] focusing EXCLUSIVELY on the most recent research and developments (2025-2026).
SEARCH STRATEGY:
- Prioritize papers from last 12-18 months
- Search for "2025", "2026", "recent", "latest" in queries
- Check arXiv preprints, major conferences (NeurIPS, ICML, ICLR)
- Look for industry whitepapers and blog posts
OUTPUT REQUIREMENTS:
- 15-25 major papers/developments
- Full citations with DATES
- Key findings and novel contributions
- Save to: /Users/eugene/Dropbox/Agents/Cornelius/resources/[Topic-Slug]-Research-YYYY-MM-DD.md
On Success: Continue to Step 5
On Failure: Log error, increment consecutive_errors, check threshold
Format: YYYY-MM-DD [Topic Description]
date '+%Y-%m-%d'
# Create: Brain/Document Insights/YYYY-MM-DD [Topic]/
Use Task tool with subagent_type='document-insight-extractor':
Extract unique insights from the research report for the knowledge base.
SOURCE DOCUMENT: [Path to research report from Step 4]
SESSION FOLDER: [Session folder name]
EXTRACTION GUIDELINES:
1. Focus on novel insights (paradigm shifts, counter-intuitive findings)
2. Bridge to existing hubs: Consciousness, Dopamine, Decision-Making, Identity, AI Agents, Flow
3. Quality > Quantity: 15-25 high-value insights
4. ALWAYS search for duplicates before creating notes
5. Create changelog in session folder
On Success: Count insights extracted, continue to Step 6 On Failure: Log error, continue to Step 6 (partial success is OK)
Use Task tool with subagent_type='connection-finder':
Discover connections between newly extracted insights and existing knowledge base.
STARTING POINTS: All notes in session folder: [Session folder path]
CONNECTION DISCOVERY GOALS:
1. Bridge to existing 530+ permanent notes
2. Link to 6 primary thematic hubs
3. Find cross-domain consilience opportunities
4. Similarity thresholds: 0.65-0.85
OUTPUT:
- Connection map for new insights
- Synthesis opportunities identified
- Changelog: CHANGELOG - Connection Discovery Session YYYY-MM-DD.md in Brain/05-Meta/Changelogs/
On Success: Count connections, continue to Step 7 On Failure: Log error, continue to Step 7
Write to resources/learn-new-things-log.md:
# Learn New Things - Session Log
**Session ID:** [session_id]
**Last Updated:** [timestamp]
**Phase:** running
## Statistics
- Cycles completed: [N]
- Topics researched: [list]
- Total insights extracted: [N]
- Total connections discovered: [N]
- Consecutive errors: [N]
## Latest Cycle
- **Started:** [timestamp]
- **Topic:** [topic]
- **Research report:** [path]
- **Session folder:** [path]
- **Insights extracted:** [N]
- **Connections found:** [N]
- **Status:** [success/partial/error]
## Cycle History
| Date | Topic | Insights | Connections | Status |
|------|-------|----------|-------------|--------|
| YYYY-MM-DD | [topic] | [N] | [N] | [status] |
Add entry to Brain/CHANGELOG.md:
## YYYY-MM-DD - Learning Heartbeat Cycle [N]
- **Topic:** [topic]
- **Insights extracted:** [N]
- **Connections discovered:** [N]
- **Session folder:** [[Document Insights/YYYY-MM-DD Topic]]
After completing the learning cycle, commit all changes to a dedicated branch, then return to main.
Generate branch name from topic and date:
# Get current date
DATE=$(date '+%Y-%m-%d')
# Create topic slug (lowercase, hyphens, no special chars)
# Example: "Multi-Agent Systems" → "multi-agent-systems"
TOPIC_SLUG=$(echo "[topic]" | tr '[:upper:]' '[:lower:]' | sed 's/[^a-z0-9]/-/g' | sed 's/--*/-/g' | sed 's/^-//' | sed 's/-$//')
BRANCH_NAME="learning/${DATE}-${TOPIC_SLUG}"
Before creating the learning branch, ensure we're on main:
cd /Users/eugene/Dropbox/Agents/Cornelius
git stash --include-untracked -m "Pre-learning stash $(date '+%Y-%m-%d %H:%M')" 2>/dev/null || true
git checkout main
git pull origin main 2>/dev/null || true
git stash pop 2>/dev/null || true
git checkout -b "$BRANCH_NAME"
Stage all files created during this cycle:
# Research report
git add "resources/[Topic-Slug]-Research-*.md"
# Document Insights session folder
git add "Brain/Document Insights/[Session-Folder]/"
# Changelogs
git add "Brain/05-Meta/Changelogs/CHANGELOG - *.md"
git add "Brain/CHANGELOG.md"
# State file
git add "resources/learn-new-things-log.md"
# Local Brain Search index updates (if any)
git add "resources/local-brain-search/data/" 2>/dev/null || true
git commit -m "$(cat <<'EOF'
Learning: [Topic] - Cycle [N]
Research & Extraction Session:
- Topic: [topic]
- Papers analyzed: [N]
- Insights extracted: [N]
- Connections discovered: [N]
Session folder: Brain/Document Insights/[Session-Folder]/
Research report: resources/[filename]
Generated by /learn-new-things heartbeat
EOF
)"
git push -u origin "$BRANCH_NAME"
Create a PR for review and selective merging:
gh pr create --title "Learning: [Topic] - Cycle [N]" --body "$(cat <<'EOF'
## Learning Session Summary
**Topic:** [topic]
**Date:** YYYY-MM-DD
**Cycle:** [N]
### Research Results
- Papers analyzed: [N]
- Insights extracted: [N]
- Connections discovered: [N]
### Files Added
- Research report: `resources/[filename]`
- Session folder: `Brain/Document Insights/[Session-Folder]/`
- Changelogs updated
### Key Discoveries
1. [Most significant insight]
2. [Cross-domain connection found]
3. [Synthesis opportunity identified]
### Review Checklist
- [ ] Insights are high quality and non-redundant
- [ ] Connections to existing notes are valid
- [ ] No sensitive or incorrect information
---
🤖 Generated by `/learn-new-things` heartbeat
EOF
)"
Store PR URL in state file for reference:
## Latest Cycle
...
- **Pull Request:** https://github.com/[repo]/pull/[N]
If PR creation fails:
git checkout main
git status
# Should show: "On branch main, nothing to commit, working tree clean"
# Or show unrelated pending changes (not from learning cycle)
Update state file with branch information:
## Latest Cycle
...
- **Git branch:** learning/YYYY-MM-DD-topic-slug
- **Branch pushed:** yes/no
- **Main restored:** yes
If branch creation fails:
If push fails:
If checkout main fails:
consecutive_errorsIf consecutive_errors >= 3 OR git checkout main failed:
## LEARNING HEARTBEAT PAUSED
**Error:** 3 consecutive cycles failed
**Last topic:** [topic]
**Last error:** [error description]
Manual intervention required. Check:
1. Network connectivity for research
2. Local Brain Search index health
3. Disk space for new notes
To resume: `/learn-new-things`
Set phase: "error" and stop.
If cycle completes successfully:
consecutive_errors = 0cycles_completedtopics_researchedDisplay cycle summary:
## Learning Cycle [N] Complete
**Topic:** [topic]
**Duration:** [time]
### Results
- Research papers analyzed: [N]
- Unique insights extracted: [N]
- Connections discovered: [N]
### Key Discoveries
1. [Most significant insight]
2. [Cross-domain connection]
3. [Synthesis opportunity]
### Files Created
- Research report: `resources/[filename]`
- Session folder: `Brain/Document Insights/[folder]`
- Changelogs updated
### Git
- **Branch:** `learning/YYYY-MM-DD-topic-slug`
- **Pushed to remote:** yes
- **Pull Request:** [PR URL]
- **Returned to main:** yes
### Next Cycle
- Scheduled in: [interval] hours
- Suggested topic: [next topic based on rotation]
Set timer for next learning cycle:
INTERVAL_HOURS=${1:-8}
INTERVAL_SECONDS=$((INTERVAL_HOURS * 3600))
sleep $INTERVAL_SECONDS && echo "HEARTBEAT: learn-new-things ready for next cycle"
Run with run_in_background: true.
Important: The heartbeat only continues if you respond to "HEARTBEAT: learn-new-things" prompt.
Automatic pause:
Manual stop:
/learn-new-things stopResume:
/learn-new-things againEdit this skill to adjust:
| Parameter | Default | Description |
|-----------|---------|-------------|
| interval_hours | 8 | Hours between cycles |
| max_errors | 3 | Consecutive errors before pause |
| insights_per_cycle | 15-25 | Target insight count |
| connection_threshold | 0.65-0.85 | Similarity range |
The rotation pattern can be customized:
Cycle 0, 3, 6, 9... → Gap-filling (underrepresented domains)
Cycle 1, 4, 7, 10... → Depth-building (strong domains)
Cycle 2, 5, 8, 11... → Emerging trends (cutting-edge)
/learn-new-things
→ Starts 8-hour learning loop
→ Auto-selects topic based on gaps
→ Runs research → extract → connect
→ Schedules next cycle in 8 hours
/learn-new-things 4 "embodied cognition"
→ 4-hour interval
→ Researches embodied cognition specifically
→ Useful for filling known gap quickly
cat resources/learn-new-things-log.md
→ See cycles completed, topics covered
→ Review error history
→ Check next scheduled cycle
/learn-new-things stop
→ Pauses the heartbeat
→ Preserves state for later resume
→ No new cycles scheduled
Each learning cycle creates a branch (learning/YYYY-MM-DD-topic-slug) and opens a Pull Request. This provides a formal review workflow for learning results.
gh pr list --search "Learning:" --state open
# View PR details
gh pr view [PR-NUMBER]
# See files changed
gh pr diff [PR-NUMBER]
# View in browser
gh pr view [PR-NUMBER] --web
When learning results look good:
# Merge via CLI
gh pr merge [PR-NUMBER] --merge
# Or merge via GitHub web interface for more control
gh pr view [PR-NUMBER] --web
If a learning session produced low-quality results:
# Close PR without merging
gh pr close [PR-NUMBER]
# Optionally delete the branch too
gh pr close [PR-NUMBER] --delete-branch
# List all open learning PRs
gh pr list --search "Learning:" --state open
# List all learning branches (including those without PRs)
git branch -r | grep "learning/"
# Delete all merged learning branches (cleanup)
git branch -r --merged main | grep "learning/" | xargs -I {} git push origin --delete {}
| Skill | Relationship |
|-------|--------------|
| /deep-research | Core research engine (called each cycle) |
| /auto-discovery | Can run separately for connection-only cycles |
| /integrate-recent-notes | Runs after learning to connect new notes |
| /refresh-index | Called before each cycle |
| /analyze-kb | Run periodically to update gap analysis |
┌────────────────────────────────────────────────────────────────────────────┐
│ LEARNING HEARTBEAT │
│ │
│ ┌────────┐ ┌────────┐ ┌────────┐ ┌────────┐ ┌─────────┐ ┌─────┐ │
│ │ SELECT │──▶│RESEARCH│──▶│EXTRACT │──▶│CONNECT │──▶│ COMMIT │──▶│ PR │ │
│ │ TOPIC │ │ PAPERS │ │INSIGHTS│ │ TO KB │ │ BRANCH │ │ │ │
│ └────────┘ └────────┘ └────────┘ └────────┘ └─────────┘ └──┬──┘ │
│ │ │ │
│ │ ┌───────▼───┐ │
│ │ │ RETURN TO │ │
│ │ │ MAIN │ │
│ │ └─────┬─────┘ │
│ │ │ │
│ └─────────────────────SLEEP 8hrs──────────────────────────────┘ │
│ │
└────────────────────────────────────────────────────────────────────────────┘
Each cycle:
1. Check gaps in knowledge base
2. Select topic (gap-fill / depth / emerging)
3. Research latest papers (15-25)
4. Extract unique insights (15-25)
5. Discover connections to existing notes
6. Commit to learning/YYYY-MM-DD-topic branch
7. Push branch, create Pull Request
8. Return to main, schedule next cycle
Continuous learning → Ever-expanding knowledge base
PRs enable formal review → Selective merging via GitHub
Each cycle should complete:
| Source | Location | Read | Write | Description |
|--------|----------|------|-------|-------------|
| State file | resources/learn-new-things-log.md | ✓ | ✓ | Cycle tracking |
| KB analysis | knowledge-base-analysis.md | ✓ | | Gap identification |
| Research reports | resources/ | | ✓ | Generated reports |
| Document Insights | Brain/Document Insights/ | | ✓ | Extracted insights |
| Changelogs | Brain/05-Meta/Changelogs/ | | ✓ | Session logs |
| Master changelog | Brain/CHANGELOG.md | ✓ | ✓ | Summary entries |
| Local Brain Search | resources/local-brain-search/ | ✓ | | Index, search |
Remember: This is a continuous learning engine. Each cycle makes the knowledge base smarter. The goal is not completion - it's perpetual growth and integration.
development
Rebuild the Cornelius voice agent system prompt from knowledge base sources
data-ai
Update dashboard.yaml with current knowledge base metrics from analysis report
documentation
Update Knowledge Graph Changelog
testing
Comprehensive testing playbook for Local Brain Search memory improvements (Phases 1, 3, 4)