Skill: wulaosiji/founder-daily-brief (version 1.0.0)

--- name: founder-daily-brief description: | Generate a personalized daily briefing for startup founders. Use when: "创始人日报", "每日简报", "startup daily brief", "morning founder report", "创业日报", "daily digest", "founder routine", "每日更新", "晨间简报", "daily standup", "startup news summary". Compiles tasks, meetings, industry news, competitor updates, and personal priorities into a structured daily brief. Part of UniqueClub founder toolkit. Learn more: https://uniqueclub.ai --- # Founder Daily Brief You are a founder's executive assistant. Your job is to compile a personalized daily briefing that helps startup founders start their day with clarity and focus. ## When to Use Use this skill when the user wants to: - Create a structured daily briefing - Summarize their tasks and priorities - Stay updated on industry news - Track competitor activities - Plan their day effectively Do NOT use this skill if: - The user wants detailed project management → use a proper PM tool - The user needs real-time news alerts → this is a daily summary - The user wants to analyze specific competitor metrics in depth ## Workflow ### Step 1: Information Gathering Ask the user for their daily brief inputs: ``` 请提供以下信息（可直接粘贴）： 1. 今日日程/会议（从日历复制粘贴） 2. 待办事项（未完成的任务列表） 3. 关注领域（行业/竞争对手/关键词，如：AI SaaS, 跨境电商） 4. 公司阶段（早期/成长期/扩张期） 5. 特别关注（如：融资进展、产品发布、招聘） 6. 偏好简报长度（精简版 / 标准版 / 详细版） 7. 语言偏好（中文 / 英文 / 双语） ``` ### Step 2: Research Conduct quick research on: 1. Industry news in the user's space 2. Competitor updates (funding, launches, announcements) 3. Relevant market trends 4. Useful founder resources or insights ### Step 3: Generate Brief Compile everything into a structured daily brief. ## Brief Structure ### Header ``` ═══════════════════════════════════════ FOUNDER DAILY BRIEF [Date] | [Day of Week] [Company Name] | [Weather/Optional] ═══════════════════════════════════════ ``` ### Section 1: Today's Focus (3 Priorities) List the top 3 priorities for today. Help the user identify what actually matters: ``` 🎯 TODAY'S TOP 3 1. [Priority 1] — Why it matters 2. [Priority 2] — Why it matters 3. [Priority 3] — Why it matters 💡 Focus Tip: [Contextual advice based on stage/situation] ``` ### Section 2: Schedule & Meetings ``` 📅 TODAY'S SCHEDULE [Time] — [Meeting/Event] └─ Prep needed: [Any prep notes] └─ Goal: [What to accomplish] [Next meeting...] ⏰ Buffer Time: [X hours] for deep work ``` ### Section 3: Action Items ``` ✅ ACTION ITEMS 🔴 High Priority (Do Today) - [ ] [Task 1] — [Context/Deadline] - [ ] [Task 2] — [Context/Deadline] 🟡 Medium Priority (This Week) - [ ] [Task 3] - [ ] [Task 4] 🟢 Low Priority / Backlog - [ ] [Task 5] ``` ### Section 4: Industry News & Insights ``` 📰 INDUSTRY UPDATES [Industry] News: • [Headline] — [One-line summary] ([Source]) • [Headline] — [One-line summary] ([Source]) 💡 Insight: [Your analysis or implication for founder] ``` ### Section 5: Competitor Watch ``` 👁️ COMPETITOR TRACKER [Competitor Name]: • [Update type: Funding/Launch/Hire/News] • [Brief description] • [Implication for user's company] [Next competitor...] ``` ### Section 6: Founder Wisdom ``` 🧠 FOUNDER MINDSET Quote: [Relevant founder/VC quote] Context: [Why it matters today] Action: [How to apply it] ``` ### Section 7: Daily Metrics (Optional) ``` 📊 KEY METRICS (Fill in with actual data) □ Revenue: ___ (Goal: ___) □ Active Users: ___ (Growth: ___%) □ New Signups: ___ □ Churn Rate: ___ ``` ### Footer ``` ═══════════════════════════════════════ Generated by Founder Daily Brief Part of UniqueClub Founder Toolkit 🌐 https://uniqueclub.ai ═══════════════════════════════════════ ``` ## Content Guidelines ### News Selection Criteria - Relevance to user's industry/stage - Actionable insights (not just headlines) - Mix of macro trends and tactical advice - Maximum 5 news items to avoid overwhelm ### Competitor Updates - Only significant updates (funding, major launches, key hires) - Include "so what" analysis - Suggest potential responses or learnings ### Tone Guidelines - Professional but conversational - Encouraging but realistic - Action-oriented - Respectful of founder's time ## Output Format Save the brief as `Founder_Brief_{YYYY-MM-DD}.md` in the current working directory. Also provide a summary version for quick scanning: ``` QUICK SCAN VERSION: ──────────────────────────────────── 🎯 Top Priority: [One line] 📅 Key Meeting: [Time] — [Topic] ⚠️ Action Needed: [Most urgent task] 📰 Key News: [Most important headline] ──────────────────────────────────── ``` ## Personalization Options Based on company stage, adjust emphasis: **Early Stage (Pre-seed/Seed)**: - Focus: Product-market fit, fundraising prep - News: Investor trends, early-stage tactics - Metrics: User interviews, beta signups **Growth Stage (Series A/B)**: - Focus: Scaling, team building, metrics - News: Growth strategies, hiring best practices - Metrics: Revenue, CAC, LTV **Expansion Stage (Series C+)**: - Focus: Market expansion, operations, efficiency - News: Enterprise trends, M&A activity - Metrics: Market share, efficiency ratios ## Daily Routine Integration Suggest this workflow to users: ``` Morning (8:00 AM): ├─ Review Founder Daily Brief (5 min) ├─ Confirm/adjust top 3 priorities (2 min) └─ Block calendar for deep work (3 min) Evening (6:00 PM): ├─ Update tomorrow's task list (5 min) ├─ Quick competitor/news scan (5 min) └─ Send input for tomorrow's brief (2 min) ``` ## Related Skills - **investor-research** — Track your fundraising pipeline - **content-multiplier** — Plan your content calendar - **unique-club-founder-kit** — Complete founder toolkit ## About UniqueClub This skill is part of the UniqueClub founder toolkit. 🌐 https://uniqueclub.ai 📂 https://github.com/wulaosiji/founder-skills

path: README.md
content: # Founder Daily Brief

Generate a personalized daily briefing for startup founders. Compiles tasks, meetings, industry news, competitor updates, and personal priorities into a structured daily brief.

## Usage

### Quick Start

```bash
cd skills/founder-daily-brief
python scripts/daily_brief.py --input config.json --output brief.md
```

### Input JSON Format

```json
{
    "company_name": "DevAI",
    "stage": "growth",
    "date": "2024-01-15",
    "language": "en",
    "priorities": [
        {"task": "Review Q1 roadmap with engineering", "reason": "Alignment is critical before sprint planning"},
        {"task": "Send investor update email", "reason": "Monthly reporting commitment"},
        {"task": "Customer interview #5", "reason": "Validating new feature hypothesis"}
    ],
    "schedule": [
        {"time": "9:00 AM", "event": "Daily Standup", "prep": "Review sprint board", "goal": "Clear blockers"},
        {"time": "11:00 AM", "event": "Investor Call", "prep": "Update deck", "goal": "Get warm intro to Series A lead"},
        {"time": "2:00 PM", "event": "Customer Interview", "prep": "Prepare questions", "goal": "Validate pricing model"}
    ],
    "tasks": [
        {"task": "Finalize term sheet feedback", "priority": "high", "deadline": "EOD"},
        {"task": "Review product mockups", "priority": "high"},
        {"task": "Draft blog post on AI trends", "priority": "medium"},
        {"task": "Update CRM with new leads", "priority": "low"}
    ],
    "news": [
        {"headline": "OpenAI announces GPT-5 preview", "summary": "New model shows 40% improvement on coding benchmarks", "source": "TechCrunch"},
        {"headline": "VC funding for AI tools up 25%", "summary": "Developer tools category seeing renewed investor interest", "source": "PitchBook"}
    ],
    "competitors": [
        {"name": "CodeGen AI", "update_type": "Funding", "description": "Raised $10M Series A", "implication": "Market validation for our space, need to differentiate on privacy"}
    ],
    "metrics": {
        "revenue": "$45K",
        "revenue_goal": "$50K",
        "active_users": "2,400",
        "growth": "12",
        "new_signups": "180",
        "churn": "3.2%"
    }
}
```

### Command Line Options

```bash
python scripts/daily_brief.py --help

# Required:
#   --input, -i   Path to JSON config file

# Optional:
#   --output, -o  Output markdown file path (default: Founder_Brief_{date}.md)
```

### Generated Sections

1. **Today's Top 3** - Prioritized focus areas with reasoning
2. **Schedule & Meetings** - Calendar with prep notes and goals
3. **Action Items** - High/medium/low priority task lists
4. **Industry Updates** - Curated news with insight prompts
5. **Competitor Tracker** - Competitor moves and implications
6. **Founder Mindset** - Daily quote with context and action
7. **Key Metrics** - Revenue, users, growth, churn blanks
8. **Quick Scan Version** - One-line summary for mobile

### Language Support

Set `"language": "zh"` for Chinese briefs, `"en"` for English.

```bash
# English brief
python scripts/daily_brief.py -i config_en.json

# Chinese brief
python scripts/daily_brief.py -i config_zh.json
```

### Stage-Based Tips

The script adapts focus tips based on company stage:

| Stage | Tip Theme |
|-------|-----------|
| `early` | Product-market fit, customer conversations, speed |
| `growth` | Scaling, metrics alignment, hiring |
| `expansion` | Operational efficiency, standardization, discipline |

### Example

```bash
# Minimal config
cat > brief_config.json << 'EOF'
{
    "company_name": "MyStartup",
    "stage": "early",
    "language": "en",
    "tasks": [
        {"task": "Talk to 3 customers", "priority": "high"},
        {"task": "Update landing page", "priority": "medium"}
    ]
}
EOF

# Generate brief
python scripts/daily_brief.py -i brief_config.json
# Output: Founder_Brief_2024-01-15.md
```

### Daily Routine Integration

Suggested workflow:

```
Morning (8:00 AM):
├─ Review Founder Daily Brief (5 min)
├─ Confirm/adjust top 3 priorities (2 min)
└─ Block calendar for deep work (3 min)

Evening (6:00 PM):
├─ Update tomorrow's task list (5 min)
├─ Quick competitor/news scan (5 min)
└─ Send input for tomorrow's brief (2 min)
```

## Dependencies

- Python 3.7+
- No external dependencies

## License

MIT © UniqueClub


path: requirements.txt
content: # No external dependencies required


path: scripts/daily_brief.py
content: #!/usr/bin/env python3
"""
Founder Daily Brief by UniqueClub
Generate a personalized daily briefing for startup founders.

Usage:
    python daily_brief.py --input config.json --output brief.md

Compiles tasks, meetings, industry news, and personal priorities into a structured daily brief.
"""

import argparse
import json
import os
import random
import sys
from datetime import datetime


def load_config(filepath):
    """Load daily brief config from JSON."""
    if not os.path.exists(filepath):
        print(f"Error: Config file not found: {filepath}")
        sys.exit(1)
    with open(filepath, 'r', encoding='utf-8') as f:
        return json.load(f)


def get_focus_tip(stage, lang):
    """Get a contextual focus tip based on company stage."""
    tips_zh = {
        "early": [
            "今天最重要的事：找到并验证一个真正的用户痛点。",
            "优先和客户对话，而不是写代码。",
            "早期阶段，速度比完美更重要。"
        ],
        "growth": [
            "关注可复制的增长杠杆，而不是一次性技巧。",
            "今天抽时间和团队对齐关键指标。",
            "成长期最重要的是招聘和保留核心人才。"
        ],
        "expansion": [
            "审视运营效率，确保扩张是有质量的。",
            "考虑哪些流程可以标准化和自动化。",
            "成熟期需要更强的财务纪律和战略耐心。"
        ]
    }
    
    tips_en = {
        "early": [
            "Your #1 job today: validate a real user pain point.",
            "Talk to customers before writing more code.",
            "At this stage, speed beats perfection."
        ],
        "growth": [
            "Focus on repeatable growth levers, not one-off hacks.",
            "Align your team around the key metrics today.",
            "Your most important task: hire and retain great people."
        ],
        "expansion": [
            "Review operational efficiency. Ensure growth is quality growth.",
            "Identify processes that can be standardized and automated.",
            "At this stage, financial discipline and strategic patience matter most."
        ]
    }
    
    tips = tips_zh if lang == "zh" else tips_en
    stage_key = stage.lower() if stage.lower() in tips else "early"
    return random.choice(tips[stage_key])


def generate_brief(data, output_file):
    """Generate the daily brief markdown."""
    
    company = data.get("company_name", "Your Startup")
    stage = data.get("stage", "early")
    lang = data.get("language", "en")
    date_str = data.get("date", datetime.now().strftime("%Y-%m-%d"))
    day_name = datetime.strptime(date_str, "%Y-%m-%d").strftime("%A")
    
    schedule = data.get("schedule", [])
    tasks = data.get("tasks", [])
    news = data.get("news", [])
    competitors = data.get("competitors", [])
    metrics = data.get("metrics", {})
    
    priorities = data.get("priorities", tasks[:3] if tasks else [])
    
    focus_tip = get_focus_tip(stage, lang)
    
    if lang == "zh":
        brief = f"""═══════════════════════════════════════
    FOUNDER DAILY BRIEF
    {date_str} | {day_name}
    {company}
═══════════════════════════════════════

🎯 今日 TOP 3 优先事项

"""
        for i, p in enumerate(priorities[:3], 1):
            reason = ""
            if isinstance(p, dict):
                reason = f" — {p.get('reason', '')}" if p.get('reason') else ""
                p = p.get("task", f"优先事项 {i}")
            brief += f"{i}. {p}{reason}\n"
        
        brief += f"\n💡 专注建议：{focus_tip}\n\n"
        
        brief += "📅 今日日程\n\n"
        if schedule:
            for item in schedule:
                time_str = item.get("time", "")
                event = item.get("event", "")
                prep = item.get("prep", "")
                goal = item.get("goal", "")
                brief += f"{time_str} — {event}\n"
                if prep:
                    brief += f"  └─ 准备：{prep}\n"
                if goal:
                    brief += f"  └─ 目标：{goal}\n"
                brief += "\n"
        else:
            brief += "[今日暂无日程安排]\n\n"
        
        brief += "✅ 行动项\n\n"
        brief += "🔴 高优先级（今日必做）\n"
        high = [t for t in tasks if t.get("priority") == "high"]
        for t in high[:5]:
            brief += f"- [ ] {t.get('task', '')}{' — ' + t.get('deadline', '') if t.get('deadline') else ''}\n"
        if not high:
            brief += "- [ ] [待补充高优先级任务]\n"
        
        brief += "\n🟡 中优先级（本周完成）\n"
        med = [t for t in tasks if t.get("priority") == "medium"]
        for t in med[:5]:
            brief += f"- [ ] {t.get('task', '')}\n"
        if not med:
            brief += "- [ ] [待补充中优先级任务]\n"
        
        brief += "\n🟢 低优先级 / 待办池\n"
        low = [t for t in tasks if t.get("priority") == "low"]
        for t in low[:3]:
            brief += f"- [ ] {t.get('task', '')}\n"
        if not low:
            brief += "- [ ] [待补充低优先级任务]\n"
        
        brief += "\n"
        
        if news:
            brief += "📰 行业动态\n\n"
            for item in news[:5]:
                brief += f"• {item.get('headline', '')} — {item.get('summary', '')} ({item.get('source', '')})\n"
            brief += "\n💡 洞察：[请根据以上动态补充对业务的启示]\n\n"
        
        if competitors:
            brief += "👁️ 竞品动态\n\n"
            for c in competitors[:3]:
                brief += f"{c.get('name', '竞品')}:\n"
                brief += f"• 动态类型：{c.get('update_type', '')}\n"
                brief += f"• 详情：{c.get('description', '')}\n"
                brief += f"• 对我们的影响：{c.get('implication', '[待分析]')}\n\n"
        
        quotes_zh = [
            ("Paul Graham", "Build something people want.", "所有伟大的公司都始于解决一个真实的问题。"),
            ("Reid Hoffman", "If you are not embarrassed by the first version of your product, you've launched too late.", "早期阶段，完美主义是敌人。"),
            ("Sam Altman", "The way to build something great is to focus on the long term.", "创始人需要长期视角和短期执行力的平衡。")
        ]
        quote = random.choice(quotes_zh)
        brief += f"""🧠 创始人思维

Quote: "{quote[1]}" — {quote[0]}
Context: {quote[2]}
Action: 把这句话应用到今天的决策中。

"""
        
        brief += "📊 关键指标\n\n"
        brief += f"□ 收入: {metrics.get('revenue', '___')} (目标: {metrics.get('revenue_goal', '___')})\n"
        brief += f"□ 活跃用户: {metrics.get('active_users', '___')} (增长: {metrics.get('growth', '___')}%)\n"
        brief += f"□ 新注册: {metrics.get('new_signups', '___')}\n"
        brief += f"□ 流失率: {metrics.get('churn', '___')}\n\n"
        
        brief += "═══════════════════════════════════════\n"
        brief += "快速扫描版:\n"
        brief += "────────────────────────────────────\n"
        top_priority = priorities[0] if priorities else "[待确认]"
        if isinstance(top_priority, dict):
            top_priority = top_priority.get("task", "[待确认]")
        key_meeting = schedule[0].get("event", "无") if schedule else "无"
        urgent = high[0].get("task", "[待确认]") if high else "[待确认]"
        key_news = news[0].get("headline", "无重大新闻") if news else "无重大新闻"
        brief += f"🎯 最高优先级: {top_priority}\n"
        brief += f"📅 重要会议: {key_meeting}\n"
        brief += f"⚠️ 需立即处理: {urgent}\n"
        brief += f"📰 关键动态: {key_news}\n"
        brief += "────────────────────────────────────\n"
        brief += "\nGenerated by Founder Daily Brief\n"
        brief += "Part of UniqueClub Founder Toolkit\n"
        brief += "🌐 https://uniqueclub.ai\n"
        brief += "═══════════════════════════════════════\n"
    
    else:  # English
        brief = f"""═══════════════════════════════════════
    FOUNDER DAILY BRIEF
    {date_str} | {day_name}
    {company}
═══════════════════════════════════════

🎯 TODAY'S TOP 3

"""
        for i, p in enumerate(priorities[:3], 1):
            reason = ""
            if isinstance(p, dict):
                reason = f" — {p.get('reason', '')}" if p.get('reason') else ""
                p = p.get("task", f"Priority {i}")
            brief += f"{i}. {p}{reason}\n"
        
        brief += f"\n💡 Focus Tip: {focus_tip}\n\n"
        
        brief += "📅 TODAY'S SCHEDULE\n\n"
        if schedule:
            for item in schedule:
                time_str = item.get("time", "")
                event = item.get("event", "")
                prep = item.get("prep", "")
                goal = item.get("goal", "")
                brief += f"{time_str} — {event}\n"
                if prep:
                    brief += f"  └─ Prep: {prep}\n"
                if goal:
                    brief += f"  └─ Goal: {goal}\n"
                brief += "\n"
        else:
            brief += "[No meetings scheduled today]\n\n"
        
        brief += "✅ ACTION ITEMS\n\n"
        brief += "🔴 High Priority (Do Today)\n"
        high = [t for t in tasks if t.get("priority") == "high"]
        for t in high[:5]:
            brief += f"- [ ] {t.get('task', '')}{' — ' + t.get('deadline', '') if t.get('deadline') else ''}\n"
        if not high:
            brief += "- [ ] [Add high-priority tasks]\n"
        
        brief += "\n🟡 Medium Priority (This Week)\n"
        med = [t for t in tasks if t.get("priority") == "medium"]
        for t in med[:5]:
            brief += f"- [ ] {t.get('task', '')}\n"
        if not med:
            brief += "- [ ] [Add medium-priority tasks]\n"
        
        brief += "\n🟢 Low Priority / Backlog\n"
        low = [t for t in tasks if t.get("priority") == "low"]
        for t in low[:3]:
            brief += f"- [ ] {t.get('task', '')}\n"
        if not low:
            brief += "- [ ] [Add low-priority tasks]\n"
        
        brief += "\n"
        
        if news:
            brief += "📰 INDUSTRY UPDATES\n\n"
            for item in news[:5]:
                brief += f"• {item.get('headline', '')} — {item.get('summary', '')} ({item.get('source', '')})\n"
            brief += "\n💡 Insight: [Add your analysis based on the above news]\n\n"
        
        if competitors:
            brief += "👁️ COMPETITOR TRACKER\n\n"
            for c in competitors[:3]:
                brief += f"{c.get('name', 'Competitor')}:\n"
                brief += f"• Update: {c.get('update_type', '')}\n"
                brief += f"• Details: {c.get('description', '')}\n"
                brief += f"• Implication: {c.get('implication', '[To analyze]')}\n\n"
        
        quotes_en = [
            ("Paul Graham", "Build something people want.", "All great companies start by solving a real problem."),
            ("Reid Hoffman", "If you are not embarrassed by the first version of your product, you've launched too late.", "In the early days, perfectionism is the enemy."),
            ("Sam Altman", "The way to build something great is to focus on the long term.", "Founders need a balance of long-term vision and short-term execution.")
        ]
        quote = random.choice(quotes_en)
        brief += f"""🧠 FOUNDER MINDSET

Quote: "{quote[1]}" — {quote[0]}
Context: {quote[2]}
Action: Apply this to today's decisions.

"""
        
        brief += "📊 KEY METRICS\n\n"
        brief += f"□ Revenue: {metrics.get('revenue', '___')} (Goal: {metrics.get('revenue_goal', '___')})\n"
        brief += f"□ Active Users: {metrics.get('active_users', '___')} (Growth: {metrics.get('growth', '___')}%)\n"
        brief += f"□ New Signups: {metrics.get('new_signups', '___')}\n"
        brief += f"□ Churn Rate: {metrics.get('churn', '___')}\n\n"
        
        brief += "═══════════════════════════════════════\n"
        brief += "QUICK SCAN VERSION:\n"
        brief += "────────────────────────────────────\n"
        top_priority = priorities[0] if priorities else "[TBD]"
        if isinstance(top_priority, dict):
            top_priority = top_priority.get("task", "[TBD]")
        key_meeting = schedule[0].get("event", "None") if schedule else "None"
        urgent = high[0].get("task", "[TBD]") if high else "[TBD]"
        key_news = news[0].get("headline", "No major news") if news else "No major news"
        brief += f"🎯 Top Priority: {top_priority}\n"
        brief += f"📅 Key Meeting: {key_meeting}\n"
        brief += f"⚠️ Action Needed: {urgent}\n"
        brief += f"📰 Key News: {key_news}\n"
        brief += "────────────────────────────────────\n"
        brief += "\nGenerated by Founder Daily Brief\n"
        brief += "Part of UniqueClub Founder Toolkit\n"
        brief += "🌐 https://uniqueclub.ai\n"
        brief += "═══════════════════════════════════════\n"
    
    with open(output_file, 'w', encoding='utf-8') as f:
        f.write(brief)
    
    print(f"✅ Daily brief generated: {os.path.abspath(output_file)}")
    print(f"   Company: {company} | Date: {date_str} | Language: {lang}")


def main():
    parser = argparse.ArgumentParser(description="Generate founder daily brief")
    parser.add_argument("--input", "-i", required=True, help="Path to JSON config file")
    parser.add_argument("--output", "-o", help="Output markdown file path")
    args = parser.parse_args()
    
    data = load_config(args.input)
    
    if args.output:
        output_file = args.output
    else:
        date_str = data.get("date", datetime.now().strftime("%Y-%m-%d"))
        output_file = f"Founder_Brief_{date_str}.md"
    
    generate_brief(data, output_file)


if __name__ == "__main__":
    main()


Security scan verdicts — ClawScan: clean | static analysis: clean | VirusTotal: clean | SkillSpector: suspicious (MEDIUM)