skills/growth-brief/SKILL.md
Monthly self-improvement brief for Cairn. Queries error_patterns, action_exemplars, experiment_windows, and session_journal to synthesize what Cairn learned, where it failed, and 3 concrete proposals for Avi to approve. Run on the 1st of each month. Keywords: growth brief, monthly review, self-improvement, what did cairn learn, how is cairn doing, monthly report
npx skillsauth add avifenesh/cairn growth-briefInstall 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.
Synthesizes one month of Cairn's operational data into a structured brief: top failure modes, what was learned, what improved, and 3 concrete proposals for Avi to approve.
Run on the 1st of each month at 08:00 UTC via cron, or triggered manually.
Run all four queries in parallel using cairn.shell with sqlite3 against ${DATABASE_PATH:-$HOME/.cairn/data/cairn.db}.
1a. Top recurring error patterns (30 days):
SELECT pattern_hash, pattern, count, category, first_seen, last_seen, auto_fixed
FROM error_patterns
WHERE last_seen >= date('now', '-30 days')
ORDER BY count DESC
LIMIT 10;
1b. Action exemplar performance (30 days):
SELECT action_type,
COUNT(*) as total,
ROUND(AVG(score), 2) as avg_score,
SUM(CASE WHEN score > 0.6 THEN 1 ELSE 0 END) as successes,
SUM(CASE WHEN score < 0 THEN 1 ELSE 0 END) as failures
FROM action_exemplars
WHERE created_at >= date('now', '-30 days')
GROUP BY action_type
ORDER BY total DESC;
1c. Experiment windows — what was tuned and what worked (60 days):
SELECT ew.window_type, ew.composite_score,
e.parameter_name, e.variant_value, e.status, e.success_count
FROM experiment_windows ew
LEFT JOIN experiments e ON e.id = ew.experiment_id
WHERE ew.started_at >= date('now', '-60 days')
AND ew.ended_at IS NOT NULL
ORDER BY ew.composite_score DESC
LIMIT 20;
1d. Session journal — task completion and efficiency (30 days):
SELECT
COUNT(*) as total_sessions,
ROUND(AVG(round_count), 1) as avg_rounds,
ROUND(AVG(duration_ms) / 60000.0, 1) as avg_duration_min,
SUM(CASE WHEN json_array_length(errors) > 0 THEN 1 ELSE 0 END) as sessions_with_errors,
mode
FROM session_journal
WHERE created_at >= date('now', '-30 days')
GROUP BY mode
ORDER BY total_sessions DESC;
Also query memories for relevant learnings:
cairn.searchMemory: "improvement error fix recurring failure pattern"
cairn.journalSearch: "fixed improved resolved learned"
Analyze the data and write a structured Telegram-ready brief. Keep it under 3000 characters total.
[MONTHLY GROWTH BRIEF — {MONTH} {YEAR}]
TOP FAILURE MODES (last 30 days) List the top 3-5 patterns from error_patterns by count. For each:
WHAT CAIRN LEARNED Summarize key learnings from session_journal and action_exemplars:
EXPERIMENT RESULTS Summarize what parameters were tuned:
WHAT IMPROVED THIS MONTH 2-3 bullets on concrete improvements observed (compare to previous period if data exists).
3 PROPOSALS FOR AVI Concrete, actionable proposals based on the data. Each needs explicit approval before Cairn acts.
cairn.publishToFeed: send the formatted brief via preferred channel (Telegram)
Priority: medium (not urgent, but important)
data-ai
Detect agent-cairn PRs that have stalled (no activity >=90 min) and classify the failure mode to route to appropriate recovery agent.
tools
Post-install skill adaptation: read a newly installed SKILL.md, fix environment-specific references (paths, accounts, tool names), assign the skill to relevant agent types, and propose an AGENTS.md update. Triggered automatically after cairn.installSkill completes.
testing
Decision support with memory-backed context. Retrieves past decisions, journal history, and relevant facts before answering questions that involve a choice or tradeoff. Keywords: should I, which is better, tradeoff, compare, decide, choose, option, alternative, pros and cons, recommend
development
Generate content drafts when a PR is merged or significant code ships. Produces a Twitter/X thread, blog post outline, and changelog entry from PR title, changed files, and commit messages. Keywords: content, tweet, blog, changelog, announce, write about, PR merged, shipped, released, draft post, social, thread