diff --git a/skills/morning-intelligence/SKILL.md b/skills/morning-intelligence/SKILL.md new file mode 100644 index 0000000..ef42251 --- /dev/null +++ b/skills/morning-intelligence/SKILL.md @@ -0,0 +1,198 @@ +--- +name: morning-intelligence +description: "Run a 15-question interview to capture your role, topics, sources, exclusions, and format preferences — then write a master prompt you can drop into a scheduled task or Claude Code Routine to get a personalised news brief every morning. Use when asked to set up a morning intelligence brief, build a morning news prompt, or create a personalised news briefing." +--- + +# Morning Intelligence Skill + +Write the prompt that writes your briefing. A 15-question interview extracts your exact context — role, topics, sources, exclusions, format, recency — then produces a single master prompt you can paste into a scheduled task or Claude Code Routine and never touch again. + +> **Pro tip:** Run this interview with Opus for the best output. Opus asks sharper follow-up questions and writes a tighter master prompt. + +> **Credit:** Originally created by Ashwin Francis (Cash&Cache) — adapted and extended for this library. + +--- + +## Required Inputs + +No inputs required upfront. The skill runs the interview first. + +If the user has already provided context (e.g. pasted a role description or topic list), absorb it and skip those questions in the interview — don't ask for information already given. + +--- + +## How the Interview Works + +Run questions **one at a time** (or in small groups of 2–3 where they're closely related). Don't dump all 15 at once. Wait for each answer before proceeding. Ask natural follow-ups where the answer is vague. + +### Interview Questions + +**Block 1 — Who you are and how you read** + +1. What is your role, and what lens do you read news through? (e.g. "Head of Product at a B2B SaaS — I read for competitive moves, AI tooling, and enterprise buying signals.") +2. What are the 3–5 topics you always want covered? Be specific — "AI" is too broad; "AI applied to enterprise software" is better. +3. What are 2–3 topics you actively want filtered out — things that waste your time every morning? + +**Block 2 — Sources and signals** + +4. Which publications, newsletters, or outlets do you trust most? (Examples: The Information, TLDR, Benedict Evans, Stratechery, FT, specific subreddits) +5. Are there any Twitter/X accounts, Substack writers, or niche sources that are must-reads for you specifically? +6. Is there any geography that matters — are you focused on a specific country, region, or market? + +**Block 3 — Story type and recency** + +7. What mix of story types do you want? Rank or weight these: breaking news / in-depth analysis / opinion / data & research / product launches & announcements. +8. How fresh does the content need to be? Only today's news? Last 24 hours? Last 48 hours? Or are you okay with "last few days" if a story is important enough? + +**Block 4 — Format and time** + +9. How do you want the brief formatted? Options: bullet list by topic / short narrative paragraphs / a digest with headlines + 1-line summaries / a table / mixed. +10. What's your reading time budget in the morning? 5 minutes (tight digest) / 10 minutes (fuller brief) / 15 minutes (comprehensive). + +**Block 5 — This week specifically** + +11. Is there anything you're tracking this week in particular — a specific company, deal, product launch, regulatory development, or ongoing story? + +**Block 6 — Follow-up clarification (questions 12–15)** + +Based on the answers above, ask 4 targeted follow-up questions to sharpen ambiguities. Examples of what to probe: + +- If a topic is still broad: "You said [topic] — do you want the technical angle, the business/market angle, or both?" +- If sources are vague: "When you say [publication], do you want everything from them or only specific sections/writers?" +- If format is unclear: "You want bullets — should each topic have its own section with 3–5 bullets, or one flat list of all stories?" +- If recency conflicts with format: "You want only today's news but a comprehensive 15-minute brief — on slow news days, should I go deeper on one story or pull from the last 48 hours to fill it out?" +- If exclusions are vague: "You said no [topic] — does that include adjacent topics like [related thing], or strictly [topic]?" + +Use your judgement on which 4 are most worth asking given the actual answers. + +--- + +## Output Structure + +After the interview is complete, produce three things in order: + +### 1. Summary of What You Told Me + +A brief summary of the interview, clustered into thematic pillars. This lets the user verify the master prompt will be accurate before it's written. + +``` +WHAT I HEARD +──────────── +Role lens: [1 sentence] +Core topics: [Pillar 1] · [Pillar 2] · [Pillar 3] +Exclusions: [Topic A], [Topic B] +Sources: [List] +Story mix: [e.g. 60% analysis, 30% news, 10% data] +Recency: [e.g. Last 24 hours, today only for breaking] +Format: [e.g. Bullets by topic, ~10 min read] +This week: [Specific tracking items] +``` + +Confirm: "Does this look right? I'll write the master prompt based on this." + +--- + +### 2. The Master Prompt + +Formatted and ready to paste. Start with a markdown code block so the user can copy it cleanly. + +```` +``` +MORNING INTELLIGENCE BRIEF — MASTER PROMPT +========================================== + +You are an intelligence analyst briefing [ROLE] at the start of their day. + +TASK +Generate a personalised morning news brief covering the following. + +TOPICS TO COVER +1. [Topic / Pillar 1] — focus on [angle] +2. [Topic / Pillar 2] — focus on [angle] +3. [Topic / Pillar 3] — focus on [angle] +[add pillars as needed] + +NEVER INCLUDE +- [Excluded topic 1] +- [Excluded topic 2] +- [Excluded topic 3] + +PREFERRED SOURCES (prioritise these) +[Source 1], [Source 2], [Source 3], [Source 4] + +STORY TYPE MIX +[e.g. Prioritise analysis and data-driven pieces. Include breaking news only if significant. Skip opinion unless it's from [specific writer].] + +RECENCY +[e.g. Cover only the last 24 hours. For ongoing stories I'm tracking, include relevant developments from the last 48 hours.] + +CURRENTLY TRACKING THIS WEEK +[Specific story / company / topic the user flagged] + +FORMAT +[e.g. Organise by topic. Under each topic: 2–4 bullet points. Each bullet: headline + 1–2 sentence summary + source name. End with a "What to watch today" section: 2–3 sentences on what matters most today.] + +LENGTH +Target a [5/10/15]-minute read. + +TONE +Analyst voice. No fluff. Lead with the signal, not the noise. If something is uncertain or based on incomplete reporting, flag it as such. +``` +```` + +--- + +### 3. Setup Guide + +A short section below the master prompt: + +``` +HOW TO USE THIS PROMPT +────────────────────── + +OPTION A — Cowork Scheduled Tasks (Claude Pro/Max) + Requires: Desktop app open at scheduled time + 1. Open Claude desktop → Cowork → Scheduled Tasks + 2. Create a new task, set your time (e.g. 7:00 AM) + 3. Paste the master prompt as the task content + 4. Save. It will run every morning when your desktop app is open. + +OPTION B — Claude Code Routines (runs in the cloud) + Requires: Claude Code with Routines access + Advantage: Runs without your laptop being on + 1. In your project root, create or open .claude/routines.json + 2. Add a new routine with a cron schedule (e.g. "0 7 * * *" for 7 AM daily) + 3. Set the prompt field to the master prompt above + 4. Commit and push — Claude Code will run it on schedule. + +UPDATING YOUR BRIEF + When your focus shifts, re-run this skill. The interview takes 5–10 minutes + and produces a new master prompt to replace the old one. +``` + +--- + +## Quality Checks + +- [ ] Every interview question was asked — none skipped unless the user already provided the answer +- [ ] The "What I Heard" summary was shown and confirmed before writing the master prompt +- [ ] The master prompt uses specific topic angles, not vague category names (not "AI" — "AI applied to enterprise software") +- [ ] Exclusions are explicitly stated in the master prompt with a NEVER INCLUDE section +- [ ] Sources are listed in order of preference, not as a flat unordered list +- [ ] Story type mix is written as a directive, not just a list +- [ ] Recency instruction handles the edge case of slow news days +- [ ] Format instruction is precise enough that a different AI could follow it correctly +- [ ] The master prompt is inside a code block so it copies cleanly +- [ ] Both setup options (Cowork and Claude Code Routines) are included + +--- + +## Example Trigger Phrases + +- "Set up my morning intelligence brief" +- "Build me a morning news prompt" +- "Interview me for a morning briefing skill" +- "I want to start every day with a personalised news digest" +- "Help me set up a daily AI news brief" +- "Create a scheduled morning news prompt for me" +- "Build me a prompt for my daily briefing routine" diff --git a/skills/notebooklm-connector/SKILL.md b/skills/notebooklm-connector/SKILL.md new file mode 100644 index 0000000..ace4ffc --- /dev/null +++ b/skills/notebooklm-connector/SKILL.md @@ -0,0 +1,175 @@ +--- +name: notebooklm-connector +description: Automates NotebookLM from Claude Code — creates notebooks, adds sources, and triggers outputs (mindmaps, audio overviews, slide decks) without manual clicking via the Claude Chrome extension. +--- + +# NotebookLM Connector + +## The Problem + +NotebookLM is one of the best AI research tools — but it doesn't connect to your other tools. Every notebook requires manual setup inside the NotebookLM UI: open browser, name the notebook, paste URLs one by one, click generate. For researchers, builders, or anyone who works with a high volume of sources, this friction compounds fast. + +This skill automates NotebookLM from Claude Code using browser automation via the Claude Chrome extension. + +## Prerequisites + +| Requirement | Details | +|-------------|---------| +| Claude Chrome extension | Must be installed and active in your Chrome browser | +| NotebookLM account | Active account at notebooklm.google.com | +| Chrome browser | Open and signed into NotebookLM | + +If the Chrome extension is not installed, this skill cannot function. There is no fallback — you will need to perform actions manually. + +## Required Inputs + +| Input | Required | Notes | +|-------|----------|-------| +| Action(s) to perform | Yes | What you want done — see Supported Actions below | +| Notebook name | Conditional | Required for create; optional for add/generate if a notebook is already open | +| Sources | Conditional | Required for add sources action — URLs, file paths, or pasted text | +| Output type | Conditional | Required for generate action — mindmap, audio overview, or briefing doc | + +## Supported Actions + +| Action | What It Does | +|--------|-------------| +| Create notebook | Opens NotebookLM, creates a new notebook with the specified title | +| Add sources | Adds one or more URLs, files, or text blocks as sources to a notebook | +| Generate mindmap | Triggers mindmap generation from the notebook's sources | +| Generate audio overview | Requests an audio overview (note: takes several minutes to render) | +| Generate briefing doc | Requests a briefing document or slide deck from sources | +| List notebooks | Lists your existing notebooks and their source counts | +| Open notebook | Navigates to a specific existing notebook by name | + +Actions can be chained in a single request: "Create a notebook called 'AI Trends Q2', add these 3 URLs as sources, then generate a mindmap." + +## Output Structure + +After completing actions, Claude returns a structured confirmation: + +``` +## NotebookLM — Actions Completed + +**Notebook:** [Notebook name] +**URL:** [Direct link to the notebook] +**Actions completed:** +- [x] Created notebook: "[Name]" +- [x] Added source: [URL or file name] +- [x] Added source: [URL or file name] +- [x] Triggered: Mindmap generation + +**Status:** [Any pending items — e.g. "Audio overview is generating, check back in 5–10 minutes"] + +**Notes:** [Any issues encountered or deviations from the requested actions] +``` + +If an action fails, the failed step is marked with `[ ]` and a reason is provided. See Error Handling below. + +## Instructions for Claude + +### Step 1 — Parse and confirm the request + +Before opening any browser, parse the full request into discrete steps: + +1. What notebook is being targeted (new or existing)? +2. What sources need to be added (list each URL or file)? +3. What outputs need to be generated? + +If anything is ambiguous — e.g. "add my research sources" without specifying what they are — ask for clarification before proceeding. Do not guess at source URLs. + +### Step 2 — Check the Chrome extension is available + +Confirm browser automation is available via the Claude Chrome extension. If it is not active, stop and report: + +> "This skill requires the Claude Chrome extension to be installed and active. Please install it at [extension URL] and try again." + +### Step 3 — Navigate to NotebookLM + +Open or navigate to `https://notebooklm.google.com`. Confirm the user is logged in. If a login screen appears, stop and ask the user to log in manually, then retry. + +### Step 4 — Execute actions in order + +Execute each action in the sequence requested. After each action, confirm it completed before moving to the next. Do not batch actions speculatively. + +**Creating a notebook:** +- Click "New Notebook" +- Enter the specified title +- Confirm the notebook is created and visible + +**Adding a URL source:** +- In the notebook, click "Add Source" +- Select "Website" or "URL" +- Paste the URL +- Wait for the source to process and appear in the sources list +- Confirm before adding the next source + +**Adding pasted text:** +- Click "Add Source" +- Select "Copied text" or "Paste text" +- Paste the content +- Confirm the source appears + +**Generating a mindmap:** +- Navigate to the notebook's output options +- Select "Mindmap" from available outputs +- Trigger generation +- Confirm the mindmap begins rendering + +**Generating an audio overview:** +- Navigate to output options +- Select "Audio Overview" +- Trigger generation +- Note: rendering takes several minutes — report this to the user, do not wait for completion + +### Step 5 — Compile and return the confirmation + +Return the structured output described in the Output Structure section above, including the direct notebook URL and a checklist of completed/failed actions. + +## Error Handling + +If any step fails, do the following: + +1. Stop at the failed step (do not attempt to continue) +2. Report the exact step that failed and what was observed +3. Suggest a manual workaround for that step +4. Offer to retry from that point + +**Common failures and workarounds:** + +| Failure | Likely Cause | Manual Workaround | +|---------|-------------|-------------------| +| Extension not detected | Extension not installed or disabled | Install from Chrome Web Store | +| Login screen appears | Session expired | Log in manually, then retry | +| Source fails to process | URL is paywalled or blocked | Download content and add as pasted text instead | +| Mindmap not available | Source volume too low | Add more sources (NotebookLM requires minimum content) | +| Audio overview grayed out | Sources not yet indexed | Wait 1–2 minutes for indexing, then retry | + +## Limitations + +- **Chrome extension required** — This skill does not work in the Claude web interface without the extension. It cannot function in API-only or terminal-only Claude setups. +- **NotebookLM UI changes** — If Google updates the NotebookLM interface, specific steps (button names, navigation paths) may need to be updated in this skill. +- **Audio overview render time** — Audio overviews are queued server-side by NotebookLM and typically take 5–15 minutes. Claude can trigger the request but cannot wait for completion. +- **File uploads** — Uploading local files (PDFs, docs) requires the file to be accessible from the browser. File paths must be absolute. +- **Session state** — Claude cannot save or restore NotebookLM session state between conversations. Each session starts fresh. + +## Quality Checks + +- [ ] User's full request was parsed into discrete steps before any browser action was taken +- [ ] Ambiguous source references were clarified before proceeding +- [ ] Each action was confirmed complete before the next one started +- [ ] Direct notebook URL is included in the output +- [ ] If audio overview was triggered, user was informed of the render delay +- [ ] Any failed steps are explicitly reported with the specific failure reason +- [ ] Manual workaround was offered for any step that failed +- [ ] Output checklist accurately reflects what was completed vs. what failed + +## Example Trigger Phrases + +- "Open NotebookLM and create a notebook called 'Competitor Analysis Q2'" +- "Add these 5 URLs as sources to my NotebookLM notebook" +- "Generate a mindmap in NotebookLM from my current notebook" +- "Create a NotebookLM notebook on AI agent frameworks, add these sources, and generate an audio overview" +- "What notebooks do I have in NotebookLM?" +- "Add this article to NotebookLM: [URL]" +- "Generate a briefing doc from my NotebookLM sources on [topic]" diff --git a/skills/sycophancy-challenger/SKILL.md b/skills/sycophancy-challenger/SKILL.md new file mode 100644 index 0000000..b70a00c --- /dev/null +++ b/skills/sycophancy-challenger/SKILL.md @@ -0,0 +1,156 @@ +--- +name: sycophancy-challenger +description: Flips Claude's default from "find reasons you're right" to "find reasons you're wrong." A genuine thinking partner, not a mirror with grammar. Use before high-stakes decisions, plans, assumptions, or pitches you haven't stress-tested. +--- + +# Sycophancy Challenger + +Claude defaults to validating. You bring a decision, it finds three reasons your instinct is solid, and you leave more confident but not more right. That's actively dangerous when the stakes are high — a hiring call, a pricing change, a strategy pivot, a public commitment. This skill flips the default: Claude argues against your idea first, holds its position under pushback, and only concedes when you give it new evidence. Not when you express displeasure. + +> Credit: Originally created by Joel Salinas (Leadership in Change) — adapted and extended for this library. + +--- + +## Required Inputs + +| Input | Format | Notes | +|---|---|---| +| Your idea, decision, plan, or assumption | Describe it in plain language | More context = sharper challenge. Include reasoning if you have it. | + +No other setup required. Activating the skill is enough — describe your idea and Claude will challenge it immediately. + +--- + +## Output Structure + +Every response in this mode follows this exact format: + +``` +## Strongest Case AGAINST This + +[The single most damaging criticism of the idea. Not a list of concerns — the +one argument that, if true, would kill this. Stated directly, without softening.] + + +## The Weakest Element + +[The specific part of the idea most likely to fail, be wrong, or break under +real-world conditions. Named precisely. Not "execution risk" — the actual thing.] + + +## What You'd Need to Prove to Make This Work + +[The assumptions that must be true for this idea to succeed. Written as testable +claims, not as encouragement. If an assumption can't be tested, that's noted.] + + +## What I Can't Find Fault With + +[Only appears when a genuine search finds nothing damaging. States clearly what +holds up and why — doesn't invent weak praise to fill the section. If everything +is actually fine, says so plainly and explains why the challenge came up short.] +``` + +No additional sections. No summary. No "overall, this is a solid idea." The format ends when the four sections are complete. + +--- + +## Instructions for Claude + +### On activation + +Do not open with agreement, validation, or any form of "I see where you're coming from." Begin the challenge immediately. The first word of your response should advance the criticism, not soften the user's expectations. + +### Step 1: Assume the idea hasn't been stress-tested + +Treat the idea as if the user believes in it strongly and has not actively looked for reasons it fails. Your job is to be the adversary they didn't have in the room. + +### Step 2: Find the strongest case against it + +Not a balanced view. Not pros and cons. The strongest case against. Ask: +- What's the most likely way this fails? +- What's the assumption that, if wrong, makes everything else irrelevant? +- Who would argue against this, and what's the best version of their argument? +- What does this idea get wrong about how people, markets, or systems actually behave? + +State the strongest case directly. Do not list multiple criticisms in this section — lead with the one that does the most damage. + +### Step 3: Identify the weakest element + +This is different from the strongest case against. The weakest element is the most fragile specific component — the thing most likely to crack under execution, scrutiny, or changed conditions. Name it precisely. Examples of insufficient answers: +- "The timeline might be tight" → insufficient +- "The assumption that customers will pay $99/month before experiencing the product is the element most likely to break this, because you have no evidence of willingness-to-pay at that price point" → correct level of specificity + +### Step 4: Surface the required assumptions + +List what must be true for this to work. Write each assumption as a testable claim: + +``` +For this to work, the following must be true: +1. [Assumption stated as a claim that can be verified or falsified] +2. [Assumption stated as a claim] +3. [Assumption stated as a claim] +``` + +If an assumption cannot be tested — it's based on hope, belief, or unprovable prediction — flag it explicitly: "This assumption cannot currently be tested. That's a risk." + +### Step 5: Report what holds up (only if true) + +Search genuinely for what the idea gets right or where the challenge fails. If you find it, state it clearly. If you can't find a real flaw, say exactly that: "I've looked for the failure points and I can't find them. Here's what actually holds up: [specific things]." Do not invent praise. Do not invent flaws either. + +### Handling pushback + +If the user pushes back: +- **New evidence or new information:** update your position based on the evidence. State what changed and why. +- **Emotional pushback, repetition, or displeasure:** do not move. Restate the criticism calmly. Example: "I understand you feel strongly about this — I'm not backing off the point about X because that hasn't changed. If there's something I'm missing, tell me what it is." +- **A clarification that changes the picture:** acknowledge the clarification, adjust if warranted, and explain exactly what the clarification changed. + +Do not soften a position because the user seems upset. Do not move back to validation mode mid-conversation. + +### When the skill ends + +The session is complete when the user has either: +1. Strengthened their idea by addressing the core criticism with real evidence or a genuine plan adjustment, or +2. Identified a real flaw they're going to fix. + +Not when they've expressed satisfaction. Not when a certain number of exchanges have happened. The measure is whether something actually changed or was genuinely defended. + +### Prohibitions + +These prohibitions do more work than the rules above. Follow them absolutely: + +- **Never open with agreement or validation.** Not "That's an interesting approach," not "I can see why you'd think that." Start with the challenge. +- **Never say "great question," "great point," or "I see where you're coming from" as a lead.** These are validation openers, not neutral transitions. +- **Never soften a criticism with "however, there are also positives."** If the positives are real, they go in the "What I Can't Find Fault With" section, not as a counterweight to every criticism. +- **Never back down because the user expressed displeasure.** Only move if given new evidence. +- **Never invent a flaw that isn't real.** If the idea is actually solid, say so. Inventing fake criticisms is as useless as fake validation. +- **Never use the word "valid" to describe the user's perspective mid-challenge.** It's a validation signal disguised as a neutral word. + +--- + +## Quality Checks + +- [ ] Response opened with the challenge — not with a softening phrase or acknowledgment +- [ ] "Strongest Case Against" section contains one argument, not a list +- [ ] "Weakest Element" is specific — names the actual component, not a category of risk +- [ ] "What You'd Need to Prove" lists testable assumptions, not encouragement +- [ ] Untestable assumptions are explicitly flagged as risks +- [ ] "What I Can't Find Fault With" only appears if the search was genuine and something held up +- [ ] No invented flaws — every criticism connects to something real in what the user described +- [ ] Pushback was met with a position restatement, not a retreat (unless new evidence was provided) +- [ ] The session ended because something changed or was genuinely defended — not because the user seemed satisfied +- [ ] None of the prohibited phrases or patterns appear anywhere in the response + +--- + +## Example Trigger Phrases + +- "Use the sycophancy-challenger skill — here's my plan: [describe it]" +- "Challenge this idea before I commit to it: [describe it]" +- "I've already decided to do X — tell me why I'm wrong" +- "Be the devil's advocate on this hire: [describe the candidate and the role]" +- "I'm about to pitch this to investors — tear it apart first: [describe it]" +- "Don't validate this, challenge it: [idea or assumption]" +- "Stress-test this strategy: [describe it]" +- "What's the strongest argument against doing this: [decision]" +- "I think I'm right about X — what am I missing?"