skill-pack/pos-morning/SKILL.md
Morning brief pipeline — auto-detects MCP servers, gathers calendar + tasks + sessions + vault, synthesizes ONE focus sentence. Three output modes.
npx skillsauth add ai-mindset-org/pos-sprint pos-morningInstall 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.
Generate a morning brief by auto-detecting your integrations, gathering context from every available source, and synthesizing ONE focused sentence for the day. Works with zero setup — adapts to whatever you have connected.
This is the "aha moment" of a POS — the first time all your data sources produce a single actionable priority.
Read MCP config to know what's available BEFORE gathering data:
cat ~/.claude/mcp.json 2>/dev/null
Build integrations map from configured servers:
| Server | Capability | Loader |
|--------|-----------|--------|
| krisp | Meetings, transcripts, action items | ToolSearch: "+krisp" |
| linear | Tasks, projects, sprints | ToolSearch: "+linear list" |
| telegram | Saved messages (context clues) | ToolSearch: "+telegram get" |
| notion | Notes, databases | ToolSearch: "+notion search" |
| exa | Web context (optional) | ToolSearch: "+exa" |
Only ToolSearch servers found in mcp.json. Don't guess — if not configured, don't try.
Also check for local tools:
# Google Calendar script (bash wrapper)
GCAL_SCRIPTS=("$HOME/.claude/scripts/gcal-smart.sh" "$HOME/.claude/scripts/gcal.sh")
for s in "${GCAL_SCRIPTS[@]}"; do [ -x "$s" ] && echo "gcal: $s" && break; done
# Linear tracking cache (memory file)
find ~/.claude/projects -name "linear-tracking.md" -type f 2>/dev/null | head -1
Try each source in degradation order. Skip silently if unavailable — never error, never ask to install.
Degradation chain (stop at first success):
Krisp MCP (if in mcp.json):
ToolSearch: "+krisp meetings"
mcp__krisp__list_upcoming_meetings
mcp__krisp__search_meetings (yesterday, for recap)
Krisp also provides action items from yesterday's meetings — extract these.
Google Calendar script:
"$HOME/.claude/scripts/gcal-smart.sh" today
"$HOME/.claude/scripts/gcal-smart.sh" week # for broader context
Skip — note "no calendar" in output header.
Degradation chain:
Linear MCP:
ToolSearch: "+linear list_issues"
mcp__linear__list_issues(assignee: "me", status: "started")
mcp__linear__list_issues(assignee: "me", status: "unstarted")
Also check for recently completed (last 3 days) to show momentum.
Linear cache (memory file):
TRACKING=$(find ~/.claude/projects -name "linear-tracking.md" -type f 2>/dev/null | head -1)
Read and extract cached task list with statuses.
Local TODO:
find . -maxdepth 2 \( -name "TODO.md" -o -name "tasks.md" -o -name "TODO" \) 2>/dev/null | head -3
Skip — note "no task source".
Only if Telegram MCP detected:
ToolSearch: "+telegram get_messages"
mcp__telegram__telegram_get_messages(dialog: "me", limit: 5)
Saved messages reveal what the user was thinking about. Extract themes, don't display raw messages.
touch -t $(date +%Y%m%d)0000 /tmp/pos-today-marker 2>/dev/null
find ~/.claude/projects -name "*.jsonl" -newer /tmp/pos-today-marker -maxdepth 3 2>/dev/null | head -5
# If nothing today, check yesterday
YESTERDAY=$(date -v-1d +%Y%m%d 2>/dev/null || date -d "yesterday" +%Y%m%d 2>/dev/null)
touch -t ${YESTERDAY}0000 /tmp/pos-yesterday-marker 2>/dev/null
find ~/.claude/projects -name "*.jsonl" -newer /tmp/pos-yesterday-marker -maxdepth 3 2>/dev/null | head -5
For each session, read first 20 and last 20 lines to extract:
If working directory is a vault:
find . -name "*.md" -mmin -720 \
-not -path "./.obsidian/*" \
-not -path "./.trash/*" \
-not -path "./.smart-env/*" \
-not -path "./node_modules/*" \
2>/dev/null | head -10
mcp__krisp__search_meetings (yesterday's date range)
mcp__krisp__list_activities
Extract per-meeting:
Adjust synthesis by day:
| Day | Mode | Extra | |-----|------|-------| | Monday | Week overview | Show full week calendar, sprint status | | Tuesday-Thursday | Standard | Focus on today's blocks | | Friday | Wins + lessons | Show completed tasks this week, retrospective prompt |
The single most important output. Derive ONE sentence from ALL context:
Examples:
NEVER generic focus like "have a productive day" — must be specific.
┌─────────────────────────────────────────────────┐
│ MORNING BRIEF · {weekday} {date} │
│ sources: {list of what connected} │
└─────────────────────────────────────────────────┘
FOCUS
> {main priority — 1 sentence from all context}
CALENDAR ({count} events)
├─ {time} {title} ({duration})
├─ {time} {title} ({duration})
└─ {time} {title} ({duration})
TASKS ({in_progress} IP · {todo} todo)
├─ {id} {title} ◐ IP
├─ {id} {title} ◐ IP
└─ +{N} in backlog
YESTERDAY
> {1-2 sentences: what you worked on, based on sessions + meetings}
OBSERVATIONS
· {schedule insight — conflicts, free blocks, back-to-back}
· {task insight — overdue items, approaching deadlines}
· {pattern — "3 sessions on X this week, close it today?"}
Terminal output as above.
Same + additional sections:
YESTERDAY'S MEETINGS ({count})
├─ {title} {duration} {participants}
│ → action: {item}
└─ {title} {duration}
RECENT FILES ({count})
├─ {filename} {modified time ago}
└─ {filename} {modified time ago}
SAVED MESSAGES
├─ {preview of recent telegram saved}
└─ {preview}
INTEGRATIONS
├─ calendar {krisp|gcal|none}
├─ tasks {linear|cache|local|none}
├─ messaging {telegram|none}
├─ meetings {krisp|none}
└─ sessions {N found}
Compact version for Telegram Saved Messages:
#morning {weekday}
focus: {priority}
{time} {event}
{time} {event}
tasks: {count} IP · {count} todo
· {most important}
· {second}
> {one observation}
Send via:
ToolSearch: "+telegram send_self"
mcp__telegram__telegram_send_self(message: "{brief}")
If Telegram not available, fall back to brief and note it.
| Mistake | Fix | |---------|-----| | ToolSearch for server not in mcp.json | Only search servers found in config | | Generic focus: "be productive today" | Focus MUST be specific: action + object + deadline | | Showing raw JSONL content | Extract topic from first user message only | | Failing when no calendar | Skip silently — brief with just tasks is valuable | | Hardcoded MCP tool names | ToolSearch first — tool names vary across setups | | Sending telegram without checking | Check Step 0 map — only send if detected | | Reading entire session files | First 20 + last 20 lines is enough for topic | | Skipping yesterday's meetings | Krisp action items are tomorrow's priorities |
testing
# YT Transcribe — YouTube → Whisper → Obsidian Транскрибирует YouTube-видео через mlx-whisper (Apple Silicon, Metal-native) с параллельными чанками. Fallback на openai-whisper если mlx недоступен. ## Какую боль закрывает - **Потерянный контент видео**: Посмотрел лекцию/подкаст — через неделю забыл 90%. Нет текстовой базы для поиска. - **Нет транскриптов для русского**: YouTube auto-captions для русского языка — мусор. Whisper даёт quality транскрипцию. - **Ручная обработка**: Переслушивать 2-
development
Интерактивный процесс написания текстов для вайб-маркетинга на основе Julian Shapiro framework. **Новые возможности (v2.0):** - Research & Gap Analysis (Perplexity → WebSearch fallback) - Scoring 0-5 вместо binary (Novelty + Resonance + Hook + Clarity) - AI-Slop Detection на всех этапах (10 типов patterns) - 3 варианта intro с self-scoring - Markdown export всех промежуточных результатов **Русские triggers:** "напиши пост по шапиро", "написать статью по фреймворку шапиро", "создай текст в стиле julian shapiro", "помоги написать контент по методу shapiro", "контент по julian shapiro фреймворку", "пост по julian shapiro", "напиши в стиле шапиро" **English triggers:** "write content using julian shapiro framework", "create post with shapiro method", "write article shapiro style", "help with julian shapiro writing" **Generic triggers:** "напиши статью", "помоги написать контент", "создай текст", "начать писать", "хочу написать пост", "нужна помощь с текстом", "write content", "write article", "создай контент", "придумай идею для статьи", or requests help with content creation process.
tools
# /tg-saved v2 — Telegram Saved Messages → Deep Analysis → Obsidian ## Назначение Скилл извлекает сообщения из Telegram "Избранное" (Saved Messages) за последние N дней, автоматически парсит контент всех ссылок в сообщениях (requests + BeautifulSoup, до 5000 символов на URL), затем для каждого сообщения запускает глубокий анализ через Claude CLI subprocess (модель Sonnet). Результат — подробная структурированная заметка в Obsidian `00-inbox/` с YAML frontmatter, секциями анализа, ссылками и ор
documentation
Делает LLM-выжимку из комментариев менеджеров об одном или нескольких подрядчиках. Используй этот скилл когда нужно понять что говорят менеджеры о конкретном подрядчике, или получить JSON с выжимкой для дальнейшей обработки.