Best for
- Use when the user types /weekly or /monthly, asks for a weekly or monthly journal review or retrospective, asks 'how was my week' or 'how was my month', or wants trends, anomalies, or patterns across recent journal entr…
mycelium-hq/ai-brain-starter/skills/insights/SKILL.md
Use when the user types /weekly or /monthly, asks for a weekly or monthly journal review or retrospective, asks 'how was my week' or 'how was my month', or wants trends, anomalies, or patterns across recent journal entries. Also fires when regenerating an insight report for a past week or month. NOT for writing today's entry (use daily-journal), cross-session pattern extraction (use patterns), or operational/team reviews.
Decision brief
Generate the entire report in the language the user writes in. If Spanish, all sections — coach, therapist, panel, floor notes — are in Spanish.
Compatibility matrix
| Platform | Status | Evidence | What to check |
|---|---|---|---|
| Codex | Not declared | No explicit evidence | Portability before use |
| Claude Code | Not declared | No explicit evidence | Portability before use |
| Cursor | Not declared | No explicit evidence | Portability before use |
| Gemini CLI | Not declared | No explicit evidence | Portability before use |
Installation
The source command is displayed only when detected. A safe inspection prompt is always available so your agent can explain every action before execution.
npx skills add https://github.com/mycelium-hq/ai-brain-starter --skill "skills/insights"Inspect the Agent Skill "insights" from https://github.com/mycelium-hq/ai-brain-starter/blob/4b234a7bb81b4f7bafb4537b41060323f526771f/skills/insights/SKILL.md at commit 4b234a7bb81b4f7bafb4537b41060323f526771f. List every install step, command, network request, credential, file read/write, external action, and rollback step. Explain whether it fits my task. Do not install or execute anything until I approve.
Workflow
DO NOT grep thousands of files. Use the journal index instead.
Read [VAULTPATH]/⚙️ Meta/journal-index.json (or [VAULTPATH]/Meta/journal-index.json on vaults without an emoji-prefixed Meta — the same folder build-journal-index.py writes to). Structure: {"total": N, "lastupdated": "YYYY-MM-DD", "entries": [{file, date, floor, floorlevel}, ...…
From idx["entries"], filter where entry["date"] starts with the target YYYY-MM (monthly) or falls within the target Mon-Sun range (weekly).
Read the full content of each matching file. Do NOT read files outside the date range. With the index, you're reading 5-15 files instead of searching the entire vault.
If the RescueTime MCP is connected: Try calling mcprescuetimegetdailysummary for each day. If the MCP is disconnected or returns errors, note "RescueTime unavailable for this period" in the report and skip all RescueTime-dependent sections. Do NOT silently omit. For weekly, also…
Permission review
The documentation asks the agent to read local files, directories, or repositories.
Read the full content of each matching file. Do NOT read files outside the date range. With the index, you're reading 5-15 files instead of searching the entire vault.The documentation includes network, browsing, or remote request actions.
*Substack:** [Internal Design](https://adelaidadiazroa.substack.com/s/internal-design) | [Diseño Interior](https://adelaidadiazroa.substack.com/s/internal-design)Evidence record
| Signal | Value | Evidence type | Meaning |
|---|---|---|---|
| Quality score | 94/100 | Computed | Documentation, specificity, maintenance, and trust rules |
| Repository stars | 31 | Source | Repository attention, not individual Skill quality |
| Compatibility | 0 platforms | Source | Declared in the catalog source record |
| Usage guide | automated source guide | Editorial | Generated or reviewed according to the visible evidence level |
Pinned source
When the user types /weekly or /monthly, generate an insight report from their recent journal entries.
Generate the entire report in the language the user writes in. If Spanish, all sections — coach, therapist, panel, floor notes — are in Spanish.
Spanish floor aliases: Asco (1) · Vergüenza (2) · Bochorno (3) · Culpa (4) · Apatía (5) · Resignación (6) · Confusión (7) · Soledad (8) · Aburrimiento (9) · Duelo (10) · Decepción (11) · Herida (12) · Miedo (13) · Frustración (14) · Deseo (15) · Rabia (16) · Desprecio (17) · Orgullo (18) · Valentía (19) · Esperanza (20) · Neutralidad (21) · Disposición (22) · Aceptación (23) · Razón (24) · Confianza (25) · Compasión (26) · Humildad (27) · Pertenencia (28) · Amor (29) · Gratitud (30) · Entusiasmo (31) · Asombro (32) · Alegría (33) · Paz (34)
Floor wikilinks in the report use Spanish aliases in Spanish: [[Miedo]], [[Valentía]] etc.
Journal entries are in: [VAULT_PATH]/Journals/
DO NOT grep thousands of files. Use the journal index instead.
Read [VAULT_PATH]/⚙️ Meta/journal-index.json (or [VAULT_PATH]/Meta/journal-index.json on vaults without an emoji-prefixed Meta — the same folder build-journal-index.py writes to). Structure: {"total": N, "last_updated": "YYYY-MM-DD", "entries": [{file, date, floor, floor_level}, ...]}. Access entries via idx["entries"], then filter by entry["date"].
If the index doesn't exist or is more than 7 days old, rebuild it first:
/usr/bin/python3 "[VAULT_PATH]/Meta/scripts/build-journal-index.py"
From idx["entries"], filter where entry["date"] starts with the target YYYY-MM (monthly) or falls within the target Mon-Sun range (weekly).
Floor counting — primary vs. arc. Each entry has one primary floor (where it landed). Entries that moved also carry floor_arc, the ordered path of floors they passed through. Compute BOTH views and name which one a number is: (a) landed-floor distribution counts the primary floor once per entry; (b) floors-touched distribution expands floor_arc — count +1 for every floor in the arc, and an entry with no arc contributes just its primary floor. Do NOT collapse an arc to a single item, and treat a legacy list-form floor: [A, B, C] the same way (expand it, never count as one). Verify by running a Python script against the index, never hand-counting.
Read the full content of each matching file. Do NOT read files outside the date range. With the index, you're reading 5-15 files instead of searching the entire vault.
If the RescueTime MCP is connected: Try calling mcp__rescuetime__get_daily_summary for each day. If the MCP is disconnected or returns errors, note "RescueTime unavailable for this period" in the report and skip all RescueTime-dependent sections. Do NOT silently omit. For weekly, also call mcp__rescuetime__get_productivity_trend with days: 7.
If a Time Tracking file exists (check CLAUDE.md for the path, typically ⚙️ Meta/Time Tracking.md): Read it and filter entries for the period. This shows what categories were worked on during Claude Code sessions (Writing, Business, Vault, Personal, Admin). Merge with RescueTime app data for a combined picture: RescueTime shows which apps were used, session logs show what purpose they served.
Add to the report if data is available:
If the vault has scripts/token-usage-report.py, run it to surface real per-session token consumption + estimated USD cost from Claude Code session JSONLs:
# /weekly: 7-day window
VAULT_ROOT="<VAULT_PATH>" python3 "<VAULT_PATH>/scripts/token-usage-report.py" --days 7 --top 10
# /monthly: 30-day window
VAULT_ROOT="<VAULT_PATH>" python3 "<VAULT_PATH>/scripts/token-usage-report.py" --days 30 --top 20
The script writes ⚙️ Meta/Token Usage Report.md. Read it and surface a compact block in the report. If Opus cost share >60% or Sessions ≥60 turns >3, surface as a coach line in Section 3 (model-routing or session-length drift). Single-session cost outliers (>$200) get one bullet in Section 2.
This replaces guess-work with real numbers from ~/.claude/projects/<vault-hash>/*.jsonl (the only ground-truth source for token consumption — Claude Code does not surface this in any UI). Inspired by JuliusBrussee/caveman's /caveman-stats.
If the vault has scripts/compress-vault-doc.py, run the compression-candidate sweep on docs flagged by Drift Audit:
VAULT_ROOT="<VAULT_PATH>" python3 "<VAULT_PATH>/scripts/compress-vault-doc.py" --auto-from-drift --dry-run
If candidates show >2KB savings, surface as a compact block. If <2KB, skip silently.
The reason this skill exists is to surface insight, not to summarize. A report that says "you had 6 Courage entries" is data. A report that says "Courage was 25% in the prior three months, dropped to 3% this month" is signal. That's the lead.
If the vault has scripts/monthly-baseline.py, run it for the target period:
VAULT_ROOT="<VAULT_PATH>" python3 "<VAULT_PATH>/scripts/monthly-baseline.py" --month YYYY-MM --pretty
The script outputs floor distribution shifts ≥3pp from baseline, word-frequency anomalies ≥2× or ≤0.5× baseline, numeric metric deltas ≥10%, activity deltas, top people mentions, and missing-data flags. Use this output as the FIRST DATA SECTION (sections 0a/0b/0c below). Don't bury it under "Month at a glance." Anomaly-led framing means the reader sees what's different before they see what's present.
Before writing the report, check which data sources exist for the target period:
If a data source has no entries for the period, skip that section silently. If 3+ data sources are missing, add a one-line note at the top: "Note: some tracking systems started after this period. Sections that depend on them are omitted."
REPORT OPTIMIZATION FUNCTION: Optimize for INSIGHT (anomaly + delta + counterfactual + said-vs-did), NOT for COMPLETENESS (cover every section). A great report surfaces 3-5 things you didn't already know. Sections 0a, 0b, 0c are the load-bearing ones. Sections 1, 1b, 6 are appendix material. Don't lead with summary content. If a section has nothing genuinely surprising, write one short line and move on rather than padding.
The audit shaping every section: would this observation surprise the reader? If no, it's summary not insight. Cut it or compress it.
From the Step 2g baseline output. Surface the floor shifts, word-frequency spikes, numeric metric changes, and activity deltas — but synthesize them, don't just paste the table. Format as 3-5 bullet points:
Each bullet names the data, the magnitude, AND the hypothesis the data invites. Don't stop at "X happened" — say "X happened, here's what it might mean."
Pull commitments from the period:
⚙️ Meta/Decisions/*.md) where outcome is blank or staleFor each commitment: what was the outcome? Format as a 2-column comparison. Surface gaps explicitly. A missed deadline or stalled decision is signal, not an error to skip.
This is the section that converts "summary of what happened" into "report card on what was said." Without this, the skill produces narrative without accountability.
For the period, surface:
Goal: surface 1-2 connections invisible from sequential reading. The graph sees aggregate patterns the diary doesn't.
The body has its own data and its own arc. When biometric / cycle / sleep / nutrition / lab data is available, it answers questions journals alone can't: which Floor-low days were physiology and which were content; whether the recovery score's "rest more" was the right prescription or whether the actual signal was "eat enough"; whether a Floor pattern this month is anniversary-coupled to the same month two years ago; whether a nutrient deficiency is masquerading as a low-mood pattern.
If the health MCP is not registered or returns errors, skip this entire section silently. Graceful degradation, never block the main report.
health_weekly_rollup(week_start) — HRV / RHR / sleep / steps / workout aggregates + recovery_trendhealth_sleep_regularity(week_start, week_end) — bed/wake variance, mean latency, nap count, regularity_scorehealth_nutrition_summary(week_start, week_end) — daily macros + under_fuel_signalhealth_cycle_context(today) — current phase + cycle-day + irregularityhealth_floor_correlation("HKQuantityTypeIdentifierHeartRateVariabilitySDNN", days=30, vault_root) — HRV vs Floor over 30dhealth_lab_panel(today, lookback_days=180) — most recent lab values per marker with status (low / in_range / high)health_long_window("HKQuantityTypeIdentifierHeartRateVariabilitySDNN", years=2) — YoY same-month + persistent_asymmetry signalhealth_long_window_with_journal("HKQuantityTypeIdentifierStepCount", years=2, vault_root) — Floor distribution by month + YoY metrichealth_longevity_panel(today) — VO2Max, walking speed, walking steadiness, lean mass, Zone 2 minutes, 6-min walkhealth_phase_means("HKQuantityTypeIdentifierHeartRateVariabilitySDNN", days=90) — cycle-phase segmented HRVhealth_symptom_correlation(symptom_type, days=90, vault_root) — for each symptom that appeared 3+ times this month, run the correlationThe reason this section exists is to change what the user does tomorrow, not to display body numbers. Lead with patterns that pair body data with the Floor/journal track in ways neither could surface alone.
Surface 3-7 bullets, each shaped:
Worked examples (not for the report — the SHAPE):
HRV ran 18% below baseline mid-period — and you were in mid-luteal phase. Cycle-phase context (Sims) says luteal HRV dips are physiology. The recovery score over-fired here. Don't trust the "rest more" prompts during luteal week 3 unless RHR also climbed.
Floor 4 (Fear) days correlated r=-0.42 with HRV across 12 paired observations. On Fear days, sleep latency was 23min vs 11min average. The body is registering threat before the journal names it. For the next two weeks, when sleep latency runs >20min, write before bed instead of in the morning.
5 of 14 days you ate under 70% of energy burned. Recovery score recommended rest 4 of those days. This is the under-fuel signal — recovery wants you to eat enough, not rest more. Set a daily kcal floor of [basal+active*0.8] until HRV returns to baseline.
HRV is 14% below same-month-last-year AND same-month-two-years-ago. Third-year asymmetry. Persistent-asymmetry detector flagged it. Anniversary-pattern hypothesis (van der Kolk). What was happening this time of year in [year-3]?
/deconstructon the period.
Vitamin D 25-OH = 28 ng/mL (ref 30-100). Below range. Vitamin D deficiency drives mood, immunity, and recovery. The persistent low-Floor pattern this month may have a metabolic floor under it. Get tested again in 3 months after supplementing 5000 IU/day; flag with your physician.
Sleep-regularity score 52/100. Bed-time stdev 87min, wake-time stdev 72min. Body is in chronic low-grade jet lag. The recovery formula doesn't capture this — single-night scores look fine. Pick a wake time within a 30-min window for 14 days; the score should climb 20+ points.
VO2Max trended down 4% over 90 days. Zone 2 minutes 124/week (target 180+). Cardio capacity is the priority longevity lever and it's drifting. One Zone 2 walk (60-70% HRmax) per workday for the next month — measurable in the next monthly review.
When health_cycle_context(today) returns a phase, ALL biometric interpretations in this section must be qualified by phase. Saying "your HRV dropped" without naming the phase is medically incomplete and the substrate gaslights its menstruating users without it. The phase tag is the first line of any biometric finding.
If health_lab_panel(today) returns ANY marker with status: low or status: high, surface it as its own bullet with the WHY for that marker (pull from health_recommended_labs if useful) and a specific re-check or supplementation suggestion. Out-of-range labs change the prescription; never bury them under "your body had a tough month."
Use the curious register: observation + question. Do NOT use clinical for this section even though the data is clinical. The reader is reading their own life, not a chart review. The data is the input; the question is the load-bearing artifact.
A floor is a point; a period of floors is a vector field. This section reads the movement frontmatter the daily-journal skill records (floor_yesterday, floor_arc, moved_because, body_check, rope, door, door_prev) and reports on motion, not position. If fewer than ~10 entries carry these fields yet, write one line ("movement data is still thin — [X] entries carry it") and report only what's real. Never fabricate transitions from entries that lack the fields.
Compute (by script against the index/frontmatter, never hand-counted):
floor_yesterday where present; (b) WITHIN an entry — every adjacent pair in floor_arc (an arc [Fear, Frustration, Hope] yields Fear→Frustration and Frustration→Hope). Pool both, then surface the top 2-3: "Your Fear goes to Frustration (4 of 5 times), not to Shame. That's your wiring — the generic map doesn't apply to you." These transitions ARE the elevators the framework points at — name the single most common movement for the period ("your most common movement this month was Fear → Frustration").body_check? "5 of your 7 low-floor days were underslept days. Before working on the psychology, protect the sleep."rope: values across all time (not just the period). These are the user's proven handholds. Surface as a short list in the report AND append new ropes to the relevant floor notes' Personal Patterns: "What has actually pulled you up: the dogs (6×), walking (4×), calling [person] (2×)."door_prev: done. This is the insight-vs-action gauge: a high floor-naming accuracy with a low door rate means the journal is producing articulate stuckness. Say so directly (coach voice): "You named the floor correctly 12 times and walked through the door 3 times. The map is not the walking."Banned shapes: transition claims from non-consecutive entries presented as consecutive; calling a fast return to a low baseline "resilient"; prescribing a floor's generic way-out for a loop without naming the loop's mechanism; padding this section when the data is thin.
Keep this short. The deltas are in 0a. This section is the snapshot context for a reader who skipped 0a, not the lead.
Compute a matrix: for each floor that appeared 3+ times this period, count how many entries co-occur with each topic cluster. Use keyword matching against entry content. Define 5-7 topic clusters relevant to the user's life (e.g., work, writing, money, relationships, health, spiritual, social). Present as a table (floor rows x topic columns). Then write 3-4 bullet points naming the strongest correlations: "Money correlates with Fear (7) and barely with Peace (2). When you think about money, you're on the worried floors."
Only report what the data shows. Do not interpret beyond the numbers.
Be direct. Coach energy. Specific references to entries:
Gentler. Curious. Not prescriptive:
If the user has the /coaching skill installed and a 🏠 Home/Coaching Sessions/ folder exists, scan it for any sessions whose re_eval_date has passed (date <= today) and whose status is still open. For each one:
Re-eval signals questions from that fileclosed-grown if commitments landed and pattern stayed dormant, closed-failed if pattern repeated and commitments didn't land, re-eval if mixed (extend re_eval_date by another month), or stay open if not enough data yet.Be honest about the data. If the user committed to "send the written follow-up" and there's no journal entry mentioning it, name that. If the pattern surfaced once in a different context, that's the 2nd-mention promotion threshold — name that too.
If no coaching sessions exist or none are due, skip this section silently.
Select 3-5 advisors most relevant to what came up. 1-2 sentences each, in character. Challenge assumptions, don't just validate.
Use the full advisory panel. Each advisor has a distinct voice, match it when they speak.
Wealth & Strategy -- for money, business models, leverage, risk, and building wealth:
Leadership -- for managing people, making decisions, and growing as a leader:
Gatherings -- for how people come together, events, and creating belonging:
Psychology -- for inner work, patterns, emotional processing, and growth:
Relationships -- for love, dating, attachment, conflict, and connection:
Health -- for body, sleep, hormones, movement, and longevity:
Wisdom -- for meaning, perspective, and the bigger picture:
Creativity -- for making things, creative blocks, and artistic practice:
Where Section 5 has the panel REACT to anomalies (what to notice), Section 5a has a different panel PRESCRIBE actions (what to do). Use the "Personal Growth & Becoming Better Humans" roster from templates/rules/advisory-panel.md. Seat 5-7 voices most relevant to this month's anomalies.
The instruction to each voice is the same: "Given this month's data, what should the journaler actually DO over the next 30 days to grow as a human, not just to ship more work?" The output is a concrete practice, ritual, identity-shift, or belief-examination. Not generic encouragement.
Format each voice as 2-3 sentences:
Required diversity:
Banned shapes:
Skip for /weekly (too short a window for prescriptive month-long practices).
Scan [VAULT_PATH]/Meta/Decisions/ for any decisions logged this period with stakes: high. Check whether they have deconstruct: true in their YAML frontmatter.
"You made [X] high-stakes decision(s) this week without running a first-principles check: [decision name(s)]. Not every decision needs one, but if any of these feel like you followed a playbook instead of thinking it through, it's not too late to run
/deconstructon them."
This is the accountability loop for first-principles thinking. The deconstruct skill catches decisions in real time. This catches the ones that slipped through.
Scan [VAULT_PATH]/Meta/Decisions/ for active decision files (those NOT in the Archive/ subfolder). For each one:
speed field as a guide: if speed: Instant or speed: Hours, it's ready for retrospective within a week. If speed: Days, wait 2-4 weeks. If speed: Weeks, wait 1-3 months.Outcome (what actually happened) and Pattern (what this reveals about how they decide). Don't fill these in yourself; ask the user. The learning only works if they articulate it.[VAULT_PATH]/Meta/Decisions/Archive/. The decision is complete; it has taught what it can teach.If there are no active decisions to review, skip this section silently.
Check if [VAULT_PATH]/Meta/skill-usage-log.jsonl exists and has entries for the period. If it does, include a brief summary:
Keep this to 2-3 sentences. If the log file doesn't exist or is empty, skip this section silently.
Once a month, scan the Obsidian community plugin registry (github.com/obsidianmd/obsidian-releases, specifically community-plugins.json) for:
Keep to 2-3 sentences: what's new, whether any of it is worth installing or investigating. If nothing relevant, skip silently.
Things that went well that might get overlooked. Good days matter MORE to document than bad ones.
End with ONE question. Not homework. Not an action item. A question worth thinking about based on what the data showed. Make it specific to THEIR week, not a fortune cookie.
Journals are organized by month folder. Save reports INSIDE the appropriate month folder, not in a separate subfolder.
[VAULT_PATH]/Journals/{Month YYYY}/Mon. D-D, YYYY Weekly.md
Journals/April 2026/Apr. 7-13, 2026 Weekly.mdJournals/April 2026/Mar. 31-Apr. 6, 2026 Weekly.md[VAULT_PATH]/Journals/{Month YYYY}/Mon. YYYY Monthly.md
Journals/April 2026/Apr. 2026 Monthly.mdThe month folder will already exist if journals are organized (run scripts/organize-journals.py to set that up). Create it if it doesn't exist.
Format:
---
creationDate: [today]
type: insight
period: weekly OR monthly
date_range: [start] to [end]
entries_analyzed: [X]
primary_floor: [Floor]
floor_trend: [up/down/stable]
gym_total: [X]
avg_bedtime: [time]
---
[Full report]
*Primary floor: [[Floor]] · [[Level Floors]]*
Floor wikilinks in report body: Every floor name in sections 1–7 — [[Fear]], [[Courage]], etc. — first occurrence per floor. In Spanish reports use Spanish aliases: [[Miedo]], [[Valentía]]. This builds the graph and links readers to the floor files where the Substack reference lives.
After saving the insight report, check whether any floor that appeared this period has a new personal pattern worth capturing. Floor concept notes live in the vault's concept folder (e.g., Notes/ or Writing/The High-Rise/Floors/).
For each floor that appeared 2+ times this period:
[[Fear]], [[Courage]], [[Joy]])## Personal Patterns section. If not, create one.## Personal Patterns with the date range: - *(Week of Apr 7-13, 2026)* Joy tends to show up after back-to-back gym days and uninterrupted writing mornings.What makes a pattern worth adding:
What to skip:
Floor note bootstrap: If a floor note doesn't exist for a floor that appeared this period, create it:
---
aliases: [floor-name-lowercase, common-synonyms, spanish-equivalents]
floor_number: [X]
type: concept
floor_tier: [low|middle|high]
creationDate: YYYY-MM-DD
---
# [[FloorName|FloorName]]
**[[The High-Rise Series|High-Rise]] Floor:** [X]
**[[Energy|Energy]]:** [one-line energy description]
[2-3 sentences about the floor.]
## How it shows up
- [symptom or behavior]
## The way out
[1-2 sentences.]
## From your journals
*(Fills in over time.)*
## Personal Patterns
- *(Week of [date])* [first observation from this period]
## [[Connection|Connected]]
[[Adjacent Floor]] | [[Related Concept]]
**Substack:** [Internal Design](https://adelaidadiazroa.substack.com/s/internal-design) | [Diseño Interior](https://adelaidadiazroa.substack.com/s/internal-design)
Existing notes: Check each updated floor note for the bilingual Substack line at the bottom. Add if missing.
Over time, clicking [[Fear]] won't show a textbook definition. It'll show YOUR fear: what triggers it, who brings it, what moves you out of it, and how it's changed over the months.
For monthly insights: Do a deeper review. Read ALL personal patterns accumulated so far and see if any need updating, merging, or retiring. A pattern from January might not hold in April.
After updating floor notes, scan this week's journal entries for missing wikilinks:
[VAULT_PATH]/Meta/Wikilink Reference.md[[wikilinks]] where they're missing (first occurrence per file only, use alias syntax)Graphify integration: If graphify-out/graph.json exists, also check:
Run python3 "[VAULT_PATH]/Meta/scripts/context-audit.py" and include the results. Then pull 3 panel voices to comment on the overall setup:
The panel should answer: "What's one thing about this setup that's slowing you down that you haven't noticed?"
If the audit script flags warnings, include specific fix recommendations. If everything passes, say so briefly and move on.
creationDate or the index. If you don't know when something happened, say "the date isn't in the entries" rather than guessing.Alternatives
coreyhaines31/marketingskills
When the user wants to plan, design, or implement an A/B test or experiment, or build a growth experimentation program. Also use when the user mentions "A/B test," "split test," "experiment," "test this change," "variant copy," "multivariate test," "hypothesis," "should I test this," "which version is better," "test two versions," "statistical significance," "how long should I run this test," "growth experiments," "experiment velocity," "experiment backlog," "ICE score," "experimentation program
coreyhaines31/marketingskills
When the user wants to reduce churn, build cancellation flows, set up save offers, recover failed payments, or implement retention strategies. Also use when the user mentions 'churn,' 'cancel flow,' 'offboarding,' 'save offer,' 'dunning,' 'failed payment recovery,' 'win-back,' 'retention,' 'exit survey,' 'pause subscription,' 'involuntary churn,' 'people keep canceling,' 'churn rate is too high,' 'how do I keep users,' or 'customers are leaving.' Use this whenever someone is losing subscribers o
alirezarezvani/claude-skills
App Store Optimization (ASO) toolkit for researching keywords, analyzing competitor rankings, generating metadata suggestions, and improving app visibility on Apple App Store and Google Play Store. Use when the user asks about ASO, app store rankings, app metadata, app titles and descriptions, app store listings, app visibility, or mobile app marketing on iOS or Android. Supports keyword research and scoring, competitor keyword analysis, metadata optimization, A/B test planning, launch checklist
prowler-cloud/prowler
PostgreSQL indexing best practices for Prowler: index design, partial indexes, partitioned table indexing, EXPLAIN ANALYZE validation, concurrent operations, monitoring, and maintenance. Trigger: When creating or modifying PostgreSQL indexes, analyzing query performance with EXPLAIN, debugging slow queries, reviewing index usage statistics, reindexing, dropping indexes, or working with partitioned table indexes. Also trigger when discussing index strategies, partial indexes, or index maintenance