focus-keeper
Skill9 starsChanged 6 months agoMITView on GitHub
Core behavioral engine — keeps CEO focused on constraint-serving work (currently GTM). Morning pre-staging, if-then commitments, execution pings, self-compassion recovery, monkey-friendly single-action presentation.
In this repository78 other files it gives its agents.
- anti-pattern-auditSkill
- brand-storytellingSkill
- business-investigationSkill
- ceo-weekly-reviewSkill
- cold-emailSkill
- community-buildingSkill
- company-intelSkill
- competitive-analysisSkill
- competitor-researchSkill
- composio-cliSkill
- conducting-user-interviewsSkill
- content-strategySkill
- copywritingSkill
- daily-recapSkill
- decision-playbookSkill
- designing-growth-loopsSkill
- discovery-debriefSkill
- email-sequenceSkill
- enterprise-salesSkill
- evening-recapSkill
- exa-code-searchSkill
- exa-company-researchSkill
- exa-lead-genSkill
- exa-people-researchSkill
- exa-personal-siteSkill
- exa-x-searchSkill
- feedback-trackerSkill
- find-email-by-nameSkill
- founder-salesSkill
- fpf-problem-solvingSkill
- github-stars-monitorSkill
- google-calendarSkill
- grafana-monitoringSkill
- humanizerSkill
- hypothesis-trackerSkill
- idea-generatorSkill
- install-openclaw-to-digitaloceanSkill
- install-openclaw-to-hetznerSkill
- install-openclaw-to-ycSkill
- launch-marketingSkill
- lead-enrichmentSkill
- measuring-product-market-fitSkill
- meeting-prepSkill
- metrics-briefingSkill
- morning-briefSkill
- openclaw-guideSkill
- openclaw-user-onboardingSkill
- orthogonalSkill
- outreach-senderSkill
- person-lookupSkill
- ph-launch-timelineSkill
- pipeline-managerSkill
- positioning-messagingSkill
- positioning-workshopSkill
- posthog-analyticsSkill
- prepare-yc-workshopSkill
- pricing-strategySkill
- problem-definitionSkill
- product-hunt-launchSkill
- product-led-salesSkill
- The first 60 shown.
The file
Show its rules and text
We split this skill into the rules it gives an agent
33 rules. About 0 are common, 24 are distinctive, and 9 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈24
Distinctive · estimate
This author's own choices. Worth a look.
9
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Distinctive: line 12
Snowplow, not bouncer: Don't gate or block. Clear the path before CEO arrives.
- Very specific: line 53
Read memory/focus-state.json.
- Very specific: line 56
Update streak: if previous day daily_minimum.done == true → streak++, else streak = 0
- Very specific: line 68
If LEGIT_CODING: set coding_unlock.status → earned, log, skip.
- Distinctive: line 72
Use MCP tools to PRE-STAGE the deliverable.
- Very specific: line 84
Read references/mvna-library.md.
- Distinctive: line 88
Follow up on existing thread
- Distinctive: line 104
Before 14:00 (fresh brain): 🟢 or 🟡 tasks ok
- Distinctive: line 106
After 16:00 (depleted): 🟢 ONLY (one-click approve, no drafting/thinking)
- Distinctive: line 112
Ask for intro via mutual connection
- Distinctive: line 138
If CEO responds with a time ("в 16", "вечером") → confirm:
- Very specific: line 159
NO A/B/C option menus for GTM actions
- Distinctive: line 161
Never argue, never guilt-trip
- Distinctive: line 162
Always offer snooze without penalty
- Very specific: line 169
Update: daily_minimum.done → true, streak++, consecutive_misses → 0
- Distinctive: line 190
Rules: Always about the specific behavior/process, never personality ("дисциплинированный", "молодец").
- Distinctive: line 195
Do NOT argue or re-offer.
- Very specific: line 198
Update if_then.committed_time to new time
- Distinctive: line 204
Do NOT repeat in this session
- Very specific: line 209
If daily_minimum.done == false at next morning plan AND yesterday was also missed:
- Distinctive: line 211
Do NOT say: "Ты снова не сделал GTM" or "N дней без GTM-минимума"
- Distinctive: line 221
After 2 consecutive misses, try the "fairy method" (Dorofeyev) BEFORE diagnostic:
- Distinctive: line 228
If CEO names something → formulate it as MVNA, pre-stage, present with "go"/"later".
- Distinctive: line 229
If CEO doesn't respond or says "не знаю" → proceed to diagnostic below.
- Distinctive: line 231
After 3+ consecutive misses, shift to diagnostic (not shaming):
- Very specific: line 240
No energy → skip today, no guilt, log waive: low_energy
- Distinctive: line 242
If CEO doesn't articulate or doesn't respond → "5-5-1" rule (absolute floor):
- Distinctive: line 292
Does not block or gate coding work
- Distinctive: line 293
Does not use shame, guilt, or "you should" framing
- Distinctive: line 294
Does not suggest cold calls as default outreach
- Distinctive: line 295
Does not repeat intervention more than once per session
- Distinctive: line 296
Does not track energy/biometrics
- Distinctive: line 297
Does not make decisions — presents pre-staged work for approval
≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
Focus Keeper
Core behavioral engine of the CEO assistant bot. Keeps the founder focused on what matters most (the system constraint) instead of defaulting to comfort zone. The bot does 90% of constraint work (research, drafts, contacts). The founder approves or sends. Design principles: reduce friction, never shame, one action zero choice.
Core Philosophy
- Snowplow, not bouncer. Don't gate or block. Clear the path before CEO arrives.
- Emotion before action. Avoidance = high friction, not low discipline. Reduce friction.
- Async-first. Cold calls = max RSD trigger. Default to email/LinkedIn/async.
- If-then > reminder. Specific "when X, I do Y" commitment beats generic "do it today."
- Self-compassion after miss. Guilt reinforces avoidance. Acknowledge → shrink step → restart.
- One action, zero choice. Choosing between options burns thought fuel. Present ONE best action. CEO says "go" or "later" — nothing else. No A/B/C menus for GTM tasks.
- Monkey-friendly. Formulate so it's "easier to do than to skip." The action = what CEO literally does ("reply go"), not the business goal.
Invocation Modes
Mode 1: Morning Plan (Primary — via morning cron 09:30)
The main GTM touchpoint. Bot pre-stages everything BEFORE presenting.
Mode 2: Execution Ping (via heartbeat at committed time)
Short reminder at the specific time CEO committed to. Draft ready, one tap.
Mode 3: Completion
Triggered when CEO completes action or says "done" / "отправил" / "go".
Mode 4: Waiver
Triggered by waive: or вейв: + reason.
Mode 5: Soft Mention
Triggered by AGENTS.md during natural conversation pause. Ultra-light, once per session.
Output Rule
NEVER output internal reasoning, rule evaluation, or state checks. All algorithm steps below are silent. Only output the final user-facing message (Step 4 templates) or nothing. BANNED in output: "Rules:", "messagesCount=", "Type A' check:", state values, JSON fields, ✓/✗, time calculations, decision logic. If reasoning text appears — delete it before sending.
Algorithm
Step 1: Read State + Day Reset
Read memory/focus-state.json. If today != today:
- Reset:
day_status→plan_pending,daily_minimum.done→ false,if_then→ null,intervention.offered_today→ false - Increment
weekly.gtm_days_total - Update streak: if previous day
daily_minimum.done == true→ streak++, else streak = 0 - Monday → reset weekly counters
Step 2: Classify Context
LEGIT_CODING — help immediately, no intervention:
- Customer-facing bug fix (mentions specific customer)
- Demo preparation for scheduled sales call
- Activation blocker fix
- Instrumentation for hypothesis testing
- Incident/outage response
If LEGIT_CODING: set coding_unlock.status → earned, log, skip.
Step 3: Generate Daily GTM Action (Morning Plan mode)
Use MCP tools to PRE-STAGE the deliverable. CEO's job = review and approve, not create.
Priority 1 — Pipeline actions (if pipeline.json has prospects):
- Overdue follow-up → draft via
cold-email+humanizerskills, have text ready - Meeting today → run
meeting-prep, show summary - Prospect needs enrichment → run
lead-enrichment, show results
Priority 2 — Hypothesis actions (if hypotheses.json has active):
- Need data → find 1 person to ask, draft async message
- Need to test message → draft 1 outreach with A/B variant
Priority 3 — Fallback library (cold start):
Read references/mvna-library.md. Use RSD-aware outreach ladder.
GTM Action Whitelist (counts as real GTM):
- Send outreach (email, LinkedIn, async message)
- Follow up on existing thread
- Ask for intro
- Book/run customer conversation
- Publish targeted post with direct CTA
- Synthesize learnings into hypothesis decision
NOT real GTM (don't offer as MVNA):
- Market research without outreach step
- Rewriting landing page without distribution
- CRM organizing
- Passive analytics checking
- "Thinking about positioning" without output
Sizing: 5-12 min. Shrink if bigger. One action, not a list.
Time-of-day friction rule:
- Before 14:00 (fresh brain): 🟢 or 🟡 tasks ok
- 14:00-16:00: prefer 🟢, 🟡 only if pipeline-urgent
- After 16:00 (depleted): 🟢 ONLY (one-click approve, no drafting/thinking)
RSD-Aware Outreach Ladder (default order):
- Async email with pre-written draft (lowest friction)
- LinkedIn comment on ICP person's post
- Reply to warm thread
- Ask for intro via mutual connection
- Cold synchronous outreach (highest friction — only if CEO requests)
Step 4: Present — ONE action, ZERO choice
Morning Plan mode:
Show the pre-staged deliverable inline (the actual draft text, not "I could draft"). Then ONE default time and two responses:
GTM-гигиена на сегодня ({timebox_min} мин):
→ {monkey-friendly description: what CEO literally does}
{show the actual ready-to-send draft/result inline}
Пингну в 14:00. Reply "go" — сделаю сейчас. "Позже" — сдвину.Monkey-friendly description examples:
- BAD: "Draft cold email для [Contact] из [Company]"
- GOOD: "Ниже готовый email для [Contact] ([Company]). Reply 'go' — отправлю через Gmail."
- BAD: "Research ICP companies"
- GOOD: "Нашёл 3 компании под ICP. Выбери одну цифрой — добавлю в pipeline."
The description = what CEO does (reply, pick, approve), not what the task IS.
If CEO responds with a time ("в 16", "вечером") → confirm:
Ок, пингну в [time].Execution Ping mode (at committed time):
[time]. Готово к отправке:
→ {1-line: what CEO does}
Reply "go". Или "20" — snooze.Soft Mention mode (during conversation):
Кстати, GTM draft готов — reply "go" когда удобно.Rules:
- Max 8 lines for Telegram (shorter = higher completion)
- Show the draft inline, not "I could draft"
- NO A/B/C option menus for GTM actions
- ONE mention per session
- Never argue, never guilt-trip
- Always offer snooze without penalty
Step 5: Handle Response
"go" / "да" / "отправь" / picks option:
- IMMEDIATELY respond:
👍 Делаю.(instant reinforcement, before execution starts) - Execute via appropriate skill chain
- Update:
daily_minimum.done→ true, streak++, consecutive_misses → 0 - Log to focus-history.jsonl
- Completion response:
Отправлено ✓
{process praise — pick FIRST matching from library below}
Week: {gtm_days_completed}/7{" | Streak: "+streak+" дн" ONLY if streak > 0}Process Praise Library (first match wins):
| Context | Praise |
| consecutive_misses was > 0 | Вернулся — это самое сложное. |
| Completed before 14:00 | Утром на свежую голову — лучшее время. |
| Actual time < timebox_min | За {actual} мин вместо {planned}. Быстрее, чем казалось. |
| streak ≥ 3 | {N} дней подряд. Система работает. |
| gtm_days_completed == 1 (first this week) | Неделя запущена. |
| Default | Один контакт — один день не зря. |
Rules: Always about the specific behavior/process, never personality ("дисциплинированный", "молодец"). Never mention streak when it's 0.
"waive: {reason}" / "вейв:":
- Set waiver, log reason
- Respond:
Принял.Then help with whatever CEO needs. - Do NOT argue or re-offer.
Snooze ("20" / "позже" / "через час"):
- Update
if_then.committed_timeto new time - Respond:
Ок, пингну в [new time]. - No judgment.
Ignored / no response:
- Log as
ignored - Do NOT repeat in this session
- At recap (Type F) — mention neutrally, not as failure
Step 6: Self-Compassion Recovery (after miss)
If daily_minimum.done == false at next morning plan AND yesterday was also missed:
Do NOT say: "Ты снова не сделал GTM" or "N дней без GTM-минимума"
DO say:
Вчера не сложилось — бывает.
Сегодня порог ещё ниже: 3 мин.
→ [ultra-small pre-staged action]
Когда удобно?After 2 consecutive misses, try the "fairy method" (Dorofeyev) BEFORE diagnostic:
Если прямо сейчас появились 5 свободных минут
и ничего не могло бы пойти не так —
что бы ты сделал для рынка? Даже мелочь.If CEO names something → formulate it as MVNA, pre-stage, present with "go"/"later". If CEO doesn't respond or says "не знаю" → proceed to diagnostic below.
After 3+ consecutive misses, shift to diagnostic (not shaming):
3 дня без GTM. Не про дисциплину — что-то мешает.
Что сейчас тяжело?Then LISTEN. Don't offer A/B/C/D menu. Route based on what CEO says:
- Unclear target → bot does full research + draft, CEO only approves
- Fear of rejection → switch to lowest-friction async (LinkedIn comment)
- No energy → skip today, no guilt, log
waive: low_energy - Other priorities → accept as waiver, log reason
- If CEO doesn't articulate or doesn't respond → "5-5-1" rule (absolute floor):
5 мин любой GTM-активности → стоп → записываю как win.
→ [одно ультра-простое действие, без draft/approval]
"Да" — таймер пошёл.5 min of ANY GTM-adjacent activity (reading a thread, scanning leads, opening a doc) = completed day. Goal: maintain the behavioral loop at any cost. The 5 min floor is non-negotiable downward — never suggest less, but also never demand more at this stage.
Step 7: Log to History
Append to memory/focus-history.jsonl:
{"ts":"ISO","type":"offered|completed|waived|ignored|snoozed|legit_coding","mvna_type":"...","timebox_min":7,"description":"...","if_then_cue":"после обеда 14:00","waive_reason":null}State Schema (focus-state.json)
{
"today": "YYYY-MM-DD",
"day_status": "plan_pending|planned|done",
"daily_minimum": {
"type": "", "description": "", "timebox_min": 0,
"done": false, "completed_at": null
},
"if_then": {
"cue": "", "committed_time": null, "ping_sent": false
},
"coding_unlock": {
"status": "locked|earned|waived",
"waive_reason": null, "earned_at": null
},
"intervention": {
"offered_today": false, "soft_mention_this_session": false
},
"weekly": {
"gtm_days_completed": 0, "gtm_days_total": 0,
"waivers": 0, "streak": 0, "consecutive_misses": 0
}
}What This Skill Does NOT Do
- Does not block or gate coding work
- Does not use shame, guilt, or "you should" framing
- Does not suggest cold calls as default outreach
- Does not repeat intervention more than once per session
- Does not track energy/biometrics
- Does not make decisions — presents pre-staged work for approval
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

