본문으로 건너뛰기
cccskills
무료GitHub에 공개

personal-monitor-domain

Plan a personal monitoring dashboard using a reference for panels, data sources, APIs, refresh intervals, and development priorities. It covers schedules, messages, news, stocks, finances, and combined views such as a daily briefing.

한국어 요약은 준비 중입니다. 영어 요약을 표시하고 있습니다.

원문원문 설명 보기

Domain specification for a personal daily monitoring dashboard. Defines all target panels (email, Feishu, Office, social, news, Twitter, code status, schedule, stock market, daily finance), their data sources, APIs, and priority ordering for incremental development.

실행 점수 미검증

설치 방법 보기

이럴 때 유용합니다

  • Choosing which dashboard panel to build next
  • Checking panel APIs and data structures
  • Planning a combined view of schedules, messages, and stocks
  • Designing an AI-generated morning briefing

포함된 파일(2)

  • SKILL.md10.3 KB
  • .skill_id38 B

SKILL.md(원문)

설치하기 전에 에이전트에게 전달되는 지시 내용을 확인할 수 있습니다.

Personal Monitor Domain Specification

This skill defines WHAT the my-daily-monitor dashboard should do — the panels, data sources, APIs, and features that make up a personal daily monitoring system. Use this as a reference when creating new panels or deciding what to build next.

When to Use

  • You are planning which panel to build next
  • You need API details for a specific data source
  • You are composing multiple panels into an integrated dashboard
  • You need to understand the priority ordering for incremental development

Target Panels Overview

#PanelData SourcePriorityStatus
1Schedule / CalendarGoogle Calendar APIP0 — CoreImplemented
2Email InboxGmail API (OAuth)P0 — CoreImplemented
3Feishu MessagesFeishu/Lark Open APIP0 — CoreImplemented
4Stock MarketFinnhub APIP0 — CoreImplemented
5News FeedGNews / HackerNewsP0 — CoreImplemented
6Code Status (CI/CD)GitHub Actions APIP1 — ImportantImplemented
7Office DocumentsMicrosoft Graph APIP1 — ImportantImplemented
8Social Feed (Twitter)Twitter API v2P1 — ImportantImplemented
9Daily FinanceManual / SpreadsheetP1 — ImportantImplemented
10WeatherOpenWeatherMap / wttr.inP1 — ImportantImplemented
11World ClockBuilt-in (no API)P2 — Nice to HaveImplemented
12MapMapLibre GLP2 — Nice to HaveImplemented
13AI InsightsLLM API (Groq/Ollama)P2 — Nice to HaveImplemented
14XiaohongshuWeb scraping / APIP2 — Nice to HavePartial
15DevOpsServer probesP2 — Nice to HaveImplemented
16Quick LinksStatic configP3 — ExtraImplemented
17Live NewsYouTube embedP3 — ExtraImplemented
18My MonitorsCustom keywordsP3 — ExtraImplemented

Panel Details

1. Schedule / Calendar

Purpose: Show today's meetings, upcoming events, and agenda

API: Google Calendar API v3

  • Auth: OAuth 2.0 (reuses Gmail credentials)
  • Endpoint: GET /api/calendar?calendarId=primary
  • Headers: X-Gmail-Client-Id, X-Gmail-Client-Secret, X-Gmail-Token

Data shape:

interface CalendarEvent {
  id: string;
  title: string;
  startTime: string;      // ISO 8601
  endTime: string;
  location?: string;
  isAllDay?: boolean;
  color?: string;
  meetingLink?: string;    // Zoom/Meet URL
}

Refresh interval: 5 minutes

2. Email Inbox

Purpose: Show unread emails, sender, subject, snippet

API: Gmail API v1

  • Auth: OAuth 2.0 (Client ID + Client Secret + Refresh Token)
  • Endpoint: GET /api/emails?maxResults=15&q=is:unread
  • Headers: X-Gmail-Client-Id, X-Gmail-Client-Secret, X-Gmail-Token
  • Server-side: Exchange refresh token for access token, call Gmail API

Data shape:

interface EmailMessage {
  id: string;
  from: string;
  subject: string;
  snippet: string;
  receivedAt: string;
  unread: boolean;
  labels?: string[];
}

Refresh interval: 2 minutes

3. Feishu Messages

Purpose: Show recent Feishu/Lark chat messages across all conversations

API: Feishu Open Platform API

  • Auth: App ID + App Secret → tenant access token
  • Endpoint: GET /api/feishu
  • Headers: X-Feishu-App-Id, X-Feishu-App-Secret
  • Server-side: Get tenant_access_token, fetch chat list, fetch recent messages

Data shape:

interface FeishuMessage {
  id: string;
  chatName: string;
  chatType: string;        // 'group' | 'p2p'
  avatar: string;
  senderName: string;
  content: string;
  imageUrl: string;
  timestamp: string;
  unread: boolean;
  chatId: string;
  recentMessages: FeishuRecentMsg[];
}

Refresh interval: 1 minute

4. Stock Market

Purpose: Track personal stock watchlist with prices, changes, sparklines

API: Finnhub Stock API

  • Auth: Query param token=API_KEY
  • Endpoint: GET /api/stocks?symbols=AAPL,MSFT,...
  • Free tier: 60 requests/minute
  • Server-side: Batch fetch quotes, return unified format

Data shape:

interface StockQuote {
  symbol: string;
  name: string;
  price: number | null;
  change: number | null;
  changePercent: number | null;
  high: number | null;
  low: number | null;
  sparkline?: number[];
}

Default watchlist: AAPL, MSFT, GOOGL, AMZN, TSLA, NVDA, META

Refresh interval: 1 minute

5. News Feed

Purpose: Aggregated headlines from multiple sources with threat classification

APIs:

  • GNews (primary): https://gnews.io/api/v4 — 100 req/day free
  • HackerNews (tech): https://hacker-news.firebaseio.com/v0/ — unlimited, no key
  • RSS feeds (fallback): Direct XML parsing

Data shape:

interface NewsArticle {
  title: string;
  description: string;
  url: string;
  source: string;
  publishedAt: string;
  image?: string;
  threatLevel?: 'critical' | 'high' | 'medium' | 'low';
}

Refresh interval: 5 minutes

6. Code Status (CI/CD)

Purpose: Show GitHub Actions workflow runs — passed, failed, in-progress

API: GitHub REST API v3

  • Auth: Personal Access Token (PAT) in GITHUB_TOKEN
  • Endpoint: GET /api/github?action=runs&owner=...&repo=...
  • Server-side: Fetch /repos/{owner}/{repo}/actions/runs

Data shape:

interface WorkflowRun {
  id: number;
  name: string;
  status: string;
  conclusion: string | null;   // 'success' | 'failure' | 'cancelled'
  branch: string;
  createdAt: string;
  url: string;
}

Refresh interval: 2 minutes

7. Office Documents

Purpose: Recent Office document activity (PPT, DOC, XLSX, PDF)

API: Microsoft Graph API

  • Auth: OAuth 2.0 (Azure AD app registration)
  • Endpoint: GET /api/office
  • Server-side: Call Graph API /me/drive/recent

Data shape:

interface OfficeDocument {
  id: string;
  name: string;
  type: 'doc' | 'xlsx' | 'ppt' | 'pdf';
  modifiedAt: string;
  modifiedBy: string;
  url?: string;
}

Refresh interval: 5 minutes

Note: Currently uses demo data. Full implementation requires Azure AD app registration with Files.Read permission.

8. Social Feed

Purpose: Twitter timeline + Xiaohongshu content

Twitter API v2:

  • Auth: Bearer Token
  • Endpoint: GET /api/social?action=search&q=... or action=list&listId=...
  • Server-side: Forward to Twitter search/list endpoint

Xiaohongshu:

  • No official API; requires web scraping or reverse-engineered endpoints
  • Potential approach: headless browser scraping via server-side proxy

Data shape:

interface SocialPost {
  id: string;
  platform: 'twitter' | 'xiaohongshu';
  author: string;
  username?: string;
  content: string;
  timestamp: string;
  likes?: number;
  retweets?: number;
  comments?: number;
  url?: string;
}

Refresh interval: 3 minutes

9. Daily Finance

Purpose: Track daily income and expenses, show balance

Data source options:

  • Google Sheets API (personal budget spreadsheet)
  • YNAB API (budgeting app)
  • Local JSON file / localStorage
  • Custom bookkeeping endpoint

Data shape:

interface DailySummary {
  totalIncome: number;
  totalExpense: number;
  balance: number;
  transactions: FinanceTransaction[];
}

interface FinanceTransaction {
  id: string;
  description: string;
  amount: number;
  type: 'income' | 'expense';
  category: string;
  date: string;
}

Refresh interval: 10 minutes

Composition: Today Focus Sidebar

The sidebar aggregates highlights from multiple panels into a single glanceable view:

interface TodayFocusData {
  nextEvent?: { title: string; startTime: string; minutesUntil: number };
  unreadEmails: number;
  unreadFeishu: number;
  stockAlerts: Array<{ symbol: string; changePercent: number }>;
  ciFailures: number;
  dailyBriefing?: string;   // AI-generated summary
}

Dependencies: schedule, email, feishu, stock-market, code-status, ai-summary

Composition: AI Daily Briefing

Uses an LLM to synthesize a morning briefing from all data sources:

Input: Unread emails, today's events, top news headlines, stock movers Output: 2-3 paragraph natural language summary API: Groq (free, fast) or local Ollama

API Key Configuration

All API keys are stored in browser localStorage via a Settings modal:

KeyRequired ForHow to Get
FINNHUB_API_KEYStock Markethttps://finnhub.io/ (free)
GNEWS_API_KEYNewshttps://gnews.io/ (free, 100/day)
GMAIL_CLIENT_IDEmail + CalendarGoogle Cloud Console OAuth
GMAIL_CLIENT_SECRETEmail + CalendarGoogle Cloud Console OAuth
GMAIL_REFRESH_TOKENEmail + CalendarOAuth flow
FEISHU_APP_IDFeishuFeishu Open Platform
FEISHU_APP_SECRETFeishuFeishu Open Platform
GITHUB_TOKENCode StatusGitHub → Settings → PAT
TWITTER_BEARER_TOKENSocial FeedTwitter Developer Portal
GROQ_API_KEYAI Insightshttps://console.groq.com/

Keys are passed to the server via request headers (never in query params), and the server-side proxy uses them to call external APIs.

Personal Data Sensitivity

This dashboard handles personal data. Key considerations:

  1. API keys — stored in localStorage, never sent to third parties
  2. Email content — proxied through your own server, not cached
  3. Calendar events — may contain sensitive meeting details
  4. Finance data — keep local, never expose to external APIs
  5. Social accounts — use read-only tokens, never write access
  6. No analytics — unlike WorldMonitor, no Sentry/Vercel Analytics needed
  7. Self-hosted — run on localhost or personal server, not public deployment

Development Priority

Phase 1 (MVP): Schedule + Email + Feishu + Stock + News — the daily essentials Phase 2 (Complete): Code Status + Office + Social + Finance + Weather Phase 3 (Enhanced): Map + AI Insights + World Clock + Xiaohongshu Phase 4 (Polish): DevOps + Live News + Quick Links + My Monitors + Command Palette

리뷰

아직 리뷰가 없습니다. 사용해 본 소감을 남겨 주세요.

댓글

로그인 없이 쓸 수 있습니다. 사용 후기, 질문, 작동하지 않은 환경 등을 편하게 남겨 주세요.

아직 댓글이 없습니다. 첫 댓글을 남겨 보세요.

보내면 바로 공개됩니다. 이메일 주소나 전화번호 같은 개인 정보는 쓰지 마세요. URL은 2개까지입니다.

0 / 1,000자

이 양식은 reCAPTCHA로 보호되며 Google 개인정보처리방침 및 서비스 약관이 적용됩니다.

같은 저장소의 스킬

Prepare audio stems, the separate parts of a track, for mixing by matching their durations with silence, loops, or crossfades. Verify each generated and processed file before moving to the next production step.

한국어 요약은 준비 중입니다. 영어 요약을 표시하고 있습니다.

  • Match audio parts with different durations
  • Extend drums and melodic parts using suitable methods
  • Check audio specifications before mixing
HKUDS/OpenSpace7.8천2026년 8월 13일 업데이트

Produce audio in separate stems, meaning individual instrument tracks, and verify each output as you go. Align track lengths with silence, loops, or crossfades, then apply effects, mix a master, and package the files.

한국어 요약은 준비 중입니다. 영어 요약을 표시하고 있습니다.

  • Align instrument tracks to a reference audio file
  • Choose how to extend tracks that are too short
  • Verify audio properties after generation and effects
HKUDS/OpenSpace7.8천2026년 8월 13일 업데이트

Build serverless endpoints that relay external API requests for a dashboard while keeping API keys on the server. Includes Vercel examples for input checks, caching, cross-origin access, and consistent JSON responses.

한국어 요약은 준비 중입니다. 영어 요약을 표시하고 있습니다.

  • Connect a dashboard to external APIs without exposing API keys
  • Create endpoints for stock quotes and news
  • Standardize API responses and error handling
HKUDS/OpenSpace7.8천2026년 8월 13일 업데이트

Produce a master track and separate audio parts through a structured Python workflow. Apply filters and reverb, export WAV files with consistent settings, package them in a ZIP archive, and check that the deliverables meet the requested specifications.

한국어 요약은 준비 중입니다. 영어 요약을 표시하고 있습니다.

  • Export a master track with separate audio parts
  • Apply filters and reverb to audio
  • Check duration and format across deliverables
HKUDS/OpenSpace7.8천2026년 8월 13일 업데이트

Keep document creation moving when web searches and page retrieval repeatedly fail. The skill preserves the original task, uses the model’s existing knowledge, and clearly identifies information that could not be checked against external sources.

한국어 요약은 준비 중입니다. 영어 요약을 표시하고 있습니다.

  • Continue drafting after repeated web retrieval failures
  • Preserve task requirements during network errors
  • Mark information that could not be externally verified
HKUDS/OpenSpace7.8천2026년 8월 13일 업데이트

When Python execution repeatedly fails in execute_code_sandbox, use a file-based alternative: save the script, run it through the shell, and capture results or errors. The guidance covers paths, imports, timeouts, structured output, and optional cleanup.

한국어 요약은 준비 중입니다. 영어 요약을 표시하고 있습니다.

  • Retry Python work through the shell after repeated sandbox failures
  • Run longer tasks with an adjusted timeout
  • Execute Python work that needs multiple files or system utilities
HKUDS/OpenSpace7.8천2026년 8월 13일 업데이트

HKUDS의 스킬 모두 보기

이 스킬의 문제 신고