@caddis/cli 0.4.10 → 0.4.12
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bundles/antigravity-plugin/plugin.json +1 -1
- package/bundles/antigravity-plugin/scripts/caddis_spawn.py +60 -6
- package/bundles/antigravity-plugin/scripts/setup_project_ai.py +10 -0
- package/bundles/antigravity-plugin/skills/_registry.md +0 -1
- package/bundles/antigravity-plugin/skills/brainstorming/SKILL.md +2 -2
- package/bundles/antigravity-plugin/skills/explainer-doc/SKILL.md +1 -1
- package/bundles/antigravity-plugin/skills/ship-pr/SKILL.md +1 -1
- package/bundles/antigravity-plugin/skills/spawn-session/SKILL.md +15 -0
- package/bundles/antigravity-plugin/skills/ui-brief/SKILL.md +6 -1
- package/bundles/antigravity-plugin-extras/plugin.json +1 -1
- package/bundles/antigravity-plugin-extras/skills/_registry.md +1 -19
- package/bundles/codex/.codex/skills/docs/explainer-doc/SKILL.md +1 -1
- package/bundles/codex/.codex/skills/workflow/brainstorming/SKILL.md +2 -2
- package/bundles/manifest.json +3 -3
- package/package.json +1 -1
- package/bundles/antigravity-plugin-extras/skills/competitive-ads-extractor/SKILL.md +0 -294
- package/bundles/antigravity-plugin-extras/skills/content-research-writer/SKILL.md +0 -539
- package/bundles/antigravity-plugin-extras/skills/domain-name-brainstormer/SKILL.md +0 -213
- package/bundles/antigravity-plugin-extras/skills/humanizer/SKILL.md +0 -194
- package/bundles/antigravity-plugin-extras/skills/image-enhancer/SKILL.md +0 -100
- package/bundles/antigravity-plugin-extras/skills/invoice-organizer/SKILL.md +0 -447
- package/bundles/antigravity-plugin-extras/skills/job-application/SKILL.md +0 -188
- package/bundles/antigravity-plugin-extras/skills/lead-research-assistant/SKILL.md +0 -200
- package/bundles/antigravity-plugin-extras/skills/meeting-insights-analyzer/SKILL.md +0 -328
- package/bundles/antigravity-plugin-extras/skills/notebooklm/AUTHENTICATION.md +0 -154
- package/bundles/antigravity-plugin-extras/skills/notebooklm/SKILL.md +0 -270
- package/bundles/antigravity-plugin-extras/skills/notebooklm/references/api_reference.md +0 -309
- package/bundles/antigravity-plugin-extras/skills/notebooklm/references/troubleshooting.md +0 -376
- package/bundles/antigravity-plugin-extras/skills/notebooklm/references/usage_patterns.md +0 -338
- package/bundles/antigravity-plugin-extras/skills/notebooklm/scripts/__init__.py +0 -81
- package/bundles/antigravity-plugin-extras/skills/notebooklm/scripts/ask_question.py +0 -256
- package/bundles/antigravity-plugin-extras/skills/notebooklm/scripts/auth_manager.py +0 -358
- package/bundles/antigravity-plugin-extras/skills/notebooklm/scripts/browser_session.py +0 -255
- package/bundles/antigravity-plugin-extras/skills/notebooklm/scripts/browser_utils.py +0 -107
- package/bundles/antigravity-plugin-extras/skills/notebooklm/scripts/cleanup_manager.py +0 -302
- package/bundles/antigravity-plugin-extras/skills/notebooklm/scripts/config.py +0 -44
- package/bundles/antigravity-plugin-extras/skills/notebooklm/scripts/notebook_manager.py +0 -410
- package/bundles/antigravity-plugin-extras/skills/notebooklm/scripts/run.py +0 -102
- package/bundles/antigravity-plugin-extras/skills/notebooklm/scripts/setup_environment.py +0 -204
- package/bundles/antigravity-plugin-extras/skills/onboard-project/SKILL.md +0 -192
- package/bundles/antigravity-plugin-extras/skills/pipeline-state/SKILL.md +0 -208
- package/bundles/antigravity-plugin-extras/skills/raffle-winner-picker/SKILL.md +0 -159
- package/bundles/antigravity-plugin-extras/skills/relay/SKILL.md +0 -246
- package/bundles/antigravity-plugin-extras/skills/requesting-code-review/SKILL.md +0 -105
- package/bundles/antigravity-plugin-extras/skills/requesting-code-review/code-reviewer.md +0 -146
- package/bundles/antigravity-plugin-extras/skills/slack-gif-creator/LICENSE.txt +0 -202
- package/bundles/antigravity-plugin-extras/skills/slack-gif-creator/SKILL.md +0 -646
- package/bundles/antigravity-plugin-extras/skills/slack-gif-creator/core/color_palettes.py +0 -302
- package/bundles/antigravity-plugin-extras/skills/slack-gif-creator/core/easing.py +0 -230
- package/bundles/antigravity-plugin-extras/skills/slack-gif-creator/core/frame_composer.py +0 -469
- package/bundles/antigravity-plugin-extras/skills/slack-gif-creator/core/gif_builder.py +0 -246
- package/bundles/antigravity-plugin-extras/skills/slack-gif-creator/core/typography.py +0 -357
- package/bundles/antigravity-plugin-extras/skills/slack-gif-creator/core/validators.py +0 -264
- package/bundles/antigravity-plugin-extras/skills/slack-gif-creator/core/visual_effects.py +0 -494
- package/bundles/antigravity-plugin-extras/skills/slack-gif-creator/requirements.txt +0 -4
- package/bundles/antigravity-plugin-extras/skills/slack-gif-creator/templates/bounce.py +0 -106
- package/bundles/antigravity-plugin-extras/skills/slack-gif-creator/templates/explode.py +0 -331
- package/bundles/antigravity-plugin-extras/skills/slack-gif-creator/templates/fade.py +0 -329
- package/bundles/antigravity-plugin-extras/skills/slack-gif-creator/templates/flip.py +0 -291
- package/bundles/antigravity-plugin-extras/skills/slack-gif-creator/templates/kaleidoscope.py +0 -211
- package/bundles/antigravity-plugin-extras/skills/slack-gif-creator/templates/morph.py +0 -329
- package/bundles/antigravity-plugin-extras/skills/slack-gif-creator/templates/move.py +0 -293
- package/bundles/antigravity-plugin-extras/skills/slack-gif-creator/templates/pulse.py +0 -268
- package/bundles/antigravity-plugin-extras/skills/slack-gif-creator/templates/shake.py +0 -127
- package/bundles/antigravity-plugin-extras/skills/slack-gif-creator/templates/slide.py +0 -291
- package/bundles/antigravity-plugin-extras/skills/slack-gif-creator/templates/spin.py +0 -269
- package/bundles/antigravity-plugin-extras/skills/slack-gif-creator/templates/wiggle.py +0 -300
- package/bundles/antigravity-plugin-extras/skills/slack-gif-creator/templates/zoom.py +0 -312
- package/bundles/antigravity-plugin-extras/skills/state-tracking/SKILL.md +0 -131
- package/bundles/antigravity-plugin-extras/skills/video-downloader/SKILL.md +0 -107
- package/bundles/antigravity-plugin-extras/skills/youtube-transcript/SKILL.md +0 -416
- package/bundles/codex/.codex/skills/workflow/golden-plan/SKILL.md +0 -586
- /package/bundles/{antigravity-plugin → antigravity-plugin-extras}/skills/golden-plan/SKILL.md +0 -0
|
@@ -1,200 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: lead-research-assistant
|
|
3
|
-
context: fork
|
|
4
|
-
description: Identifies high-quality leads for your product or service by analyzing your business, searching for target companies, and providing actionable contact strategies. Perfect for sales, business development, and marketing professionals.
|
|
5
|
-
---
|
|
6
|
-
|
|
7
|
-
# Lead Research Assistant
|
|
8
|
-
|
|
9
|
-
This skill helps you identify and qualify potential leads for your business by analyzing your product/service, understanding your ideal customer profile, and providing actionable outreach strategies.
|
|
10
|
-
|
|
11
|
-
## When to Use This Skill
|
|
12
|
-
|
|
13
|
-
- Finding potential customers or clients for your product/service
|
|
14
|
-
- Building a list of companies to reach out to for partnerships
|
|
15
|
-
- Identifying target accounts for sales outreach
|
|
16
|
-
- Researching companies that match your ideal customer profile
|
|
17
|
-
- Preparing for business development activities
|
|
18
|
-
|
|
19
|
-
## What This Skill Does
|
|
20
|
-
|
|
21
|
-
1. **Understands Your Business**: Analyzes your product/service, value proposition, and target market
|
|
22
|
-
2. **Identifies Target Companies**: Finds companies that match your ideal customer profile based on:
|
|
23
|
-
- Industry and sector
|
|
24
|
-
- Company size and location
|
|
25
|
-
- Technology stack and tools they use
|
|
26
|
-
- Growth stage and funding
|
|
27
|
-
- Pain points your product solves
|
|
28
|
-
3. **Prioritizes Leads**: Ranks companies based on fit score and relevance
|
|
29
|
-
4. **Provides Contact Strategies**: Suggests how to approach each lead with personalized messaging
|
|
30
|
-
5. **Enriches Data**: Gathers relevant information about decision-makers and company context
|
|
31
|
-
|
|
32
|
-
## How to Use
|
|
33
|
-
|
|
34
|
-
### Basic Usage
|
|
35
|
-
|
|
36
|
-
Simply describe your product/service and what you're looking for:
|
|
37
|
-
|
|
38
|
-
```
|
|
39
|
-
I'm building [product description]. Find me 10 companies in [location/industry]
|
|
40
|
-
that would be good leads for this.
|
|
41
|
-
```
|
|
42
|
-
|
|
43
|
-
### With Your Codebase
|
|
44
|
-
|
|
45
|
-
For even better results, run this from your product's source code directory:
|
|
46
|
-
|
|
47
|
-
```
|
|
48
|
-
Look at what I'm building in this repository and identify the top 10 companies
|
|
49
|
-
in [location/industry] that would benefit from this product.
|
|
50
|
-
```
|
|
51
|
-
|
|
52
|
-
### Advanced Usage
|
|
53
|
-
|
|
54
|
-
For more targeted research:
|
|
55
|
-
|
|
56
|
-
```
|
|
57
|
-
My product: [description]
|
|
58
|
-
Ideal customer profile:
|
|
59
|
-
- Industry: [industry]
|
|
60
|
-
- Company size: [size range]
|
|
61
|
-
- Location: [location]
|
|
62
|
-
- Current pain points: [pain points]
|
|
63
|
-
- Technologies they use: [tech stack]
|
|
64
|
-
|
|
65
|
-
Find me 20 qualified leads with contact strategies for each.
|
|
66
|
-
```
|
|
67
|
-
|
|
68
|
-
## Instructions
|
|
69
|
-
|
|
70
|
-
When a user requests lead research:
|
|
71
|
-
|
|
72
|
-
1. **Understand the Product/Service**
|
|
73
|
-
- If in a code directory, analyze the codebase to understand the product
|
|
74
|
-
- Ask clarifying questions about the value proposition
|
|
75
|
-
- Identify key features and benefits
|
|
76
|
-
- Understand what problems it solves
|
|
77
|
-
|
|
78
|
-
2. **Define Ideal Customer Profile**
|
|
79
|
-
- Determine target industries and sectors
|
|
80
|
-
- Identify company size ranges
|
|
81
|
-
- Consider geographic preferences
|
|
82
|
-
- Understand relevant pain points
|
|
83
|
-
- Note any technology requirements
|
|
84
|
-
|
|
85
|
-
3. **Research and Identify Leads**
|
|
86
|
-
- Search for companies matching the criteria
|
|
87
|
-
- Look for signals of need (job postings, tech stack, recent news)
|
|
88
|
-
- Consider growth indicators (funding, expansion, hiring)
|
|
89
|
-
- Identify companies with complementary products/services
|
|
90
|
-
- Check for budget indicators
|
|
91
|
-
|
|
92
|
-
4. **Prioritize and Score**
|
|
93
|
-
- Create a fit score (1-10) for each lead
|
|
94
|
-
- Consider factors like:
|
|
95
|
-
- Alignment with ICP
|
|
96
|
-
- Signals of immediate need
|
|
97
|
-
- Budget availability
|
|
98
|
-
- Competitive landscape
|
|
99
|
-
- Timing indicators
|
|
100
|
-
|
|
101
|
-
5. **Provide Actionable Output**
|
|
102
|
-
|
|
103
|
-
For each lead, provide:
|
|
104
|
-
- **Company Name** and website
|
|
105
|
-
- **Why They're a Good Fit**: Specific reasons based on their business
|
|
106
|
-
- **Priority Score**: 1-10 with explanation
|
|
107
|
-
- **Decision Maker**: Role/title to target (e.g., "VP of Engineering")
|
|
108
|
-
- **Contact Strategy**: Personalized approach suggestions
|
|
109
|
-
- **Value Proposition**: How your product solves their specific problem
|
|
110
|
-
- **Conversation Starters**: Specific points to mention in outreach
|
|
111
|
-
- **LinkedIn URL**: If available, for easy connection
|
|
112
|
-
|
|
113
|
-
6. **Format the Output**
|
|
114
|
-
|
|
115
|
-
Present results in a clear, scannable format:
|
|
116
|
-
|
|
117
|
-
```markdown
|
|
118
|
-
# Lead Research Results
|
|
119
|
-
|
|
120
|
-
## Summary
|
|
121
|
-
- Total leads found: [X]
|
|
122
|
-
- High priority (8-10): [X]
|
|
123
|
-
- Medium priority (5-7): [X]
|
|
124
|
-
- Average fit score: [X]
|
|
125
|
-
|
|
126
|
-
---
|
|
127
|
-
|
|
128
|
-
## Lead 1: [Company Name]
|
|
129
|
-
|
|
130
|
-
**Website**: [URL]
|
|
131
|
-
**Priority Score**: [X/10]
|
|
132
|
-
**Industry**: [Industry]
|
|
133
|
-
**Size**: [Employee count/revenue range]
|
|
134
|
-
|
|
135
|
-
**Why They're a Good Fit**:
|
|
136
|
-
[2-3 specific reasons based on their business]
|
|
137
|
-
|
|
138
|
-
**Target Decision Maker**: [Role/Title]
|
|
139
|
-
**LinkedIn**: [URL if available]
|
|
140
|
-
|
|
141
|
-
**Value Proposition for Them**:
|
|
142
|
-
[Specific benefit for this company]
|
|
143
|
-
|
|
144
|
-
**Outreach Strategy**:
|
|
145
|
-
[Personalized approach - mention specific pain points, recent company news, or relevant context]
|
|
146
|
-
|
|
147
|
-
**Conversation Starters**:
|
|
148
|
-
- [Specific point 1]
|
|
149
|
-
- [Specific point 2]
|
|
150
|
-
|
|
151
|
-
---
|
|
152
|
-
|
|
153
|
-
[Repeat for each lead]
|
|
154
|
-
```
|
|
155
|
-
|
|
156
|
-
7. **Offer Next Steps**
|
|
157
|
-
- Suggest saving results to a CSV for CRM import
|
|
158
|
-
- Offer to draft personalized outreach messages
|
|
159
|
-
- Recommend prioritization based on timing
|
|
160
|
-
- Suggest follow-up research for top leads
|
|
161
|
-
|
|
162
|
-
## Examples
|
|
163
|
-
|
|
164
|
-
### Example 1: From Lenny's Newsletter
|
|
165
|
-
|
|
166
|
-
**User**: "I'm building a tool that masks sensitive data in AI coding assistant queries. Find potential leads."
|
|
167
|
-
|
|
168
|
-
**Output**: Creates a prioritized list of companies that:
|
|
169
|
-
- Use AI coding assistants (Copilot, Cursor, etc.)
|
|
170
|
-
- Handle sensitive data (fintech, healthcare, legal)
|
|
171
|
-
- Have evidence in their GitHub repos of using coding agents
|
|
172
|
-
- May have accidentally exposed sensitive data in code
|
|
173
|
-
- Includes LinkedIn URLs of relevant decision-makers
|
|
174
|
-
|
|
175
|
-
### Example 2: Local Business
|
|
176
|
-
|
|
177
|
-
**User**: "I run a consulting practice for remote team productivity. Find me 10 companies in the Bay Area that recently went remote."
|
|
178
|
-
|
|
179
|
-
**Output**: Identifies companies that:
|
|
180
|
-
- Recently posted remote job listings
|
|
181
|
-
- Announced remote-first policies
|
|
182
|
-
- Are hiring distributed teams
|
|
183
|
-
- Show signs of remote work challenges
|
|
184
|
-
- Provides personalized outreach strategies for each
|
|
185
|
-
|
|
186
|
-
## Tips for Best Results
|
|
187
|
-
|
|
188
|
-
- **Be specific** about your product and its unique value
|
|
189
|
-
- **Run from your codebase** if applicable for automatic context
|
|
190
|
-
- **Provide context** about your ideal customer profile
|
|
191
|
-
- **Specify constraints** like industry, location, or company size
|
|
192
|
-
- **Request follow-up** research on promising leads for deeper insights
|
|
193
|
-
|
|
194
|
-
## Related Use Cases
|
|
195
|
-
|
|
196
|
-
- Drafting personalized outreach emails after identifying leads
|
|
197
|
-
- Building a CRM-ready CSV of qualified prospects
|
|
198
|
-
- Researching specific companies in detail
|
|
199
|
-
- Analyzing competitor customer bases
|
|
200
|
-
- Identifying partnership opportunities
|
|
@@ -1,328 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: meeting-insights-analyzer
|
|
3
|
-
context: fork
|
|
4
|
-
description: Analyzes meeting transcripts and recordings to uncover behavioral patterns, communication insights, and actionable feedback. Identifies when you avoid conflict, use filler words, dominate conversations, or miss opportunities to listen. Perfect for professionals seeking to improve their communication and leadership skills.
|
|
5
|
-
---
|
|
6
|
-
|
|
7
|
-
# Meeting Insights Analyzer
|
|
8
|
-
|
|
9
|
-
This skill transforms your meeting transcripts into actionable insights about your communication patterns, helping you become a more effective communicator and leader.
|
|
10
|
-
|
|
11
|
-
## When to Use This Skill
|
|
12
|
-
|
|
13
|
-
- Analyzing your communication patterns across multiple meetings
|
|
14
|
-
- Getting feedback on your leadership and facilitation style
|
|
15
|
-
- Identifying when you avoid difficult conversations
|
|
16
|
-
- Understanding your speaking habits and filler words
|
|
17
|
-
- Tracking improvement in communication skills over time
|
|
18
|
-
- Preparing for performance reviews with concrete examples
|
|
19
|
-
- Coaching team members on their communication style
|
|
20
|
-
|
|
21
|
-
## What This Skill Does
|
|
22
|
-
|
|
23
|
-
1. **Pattern Recognition**: Identifies recurring behaviors across meetings like:
|
|
24
|
-
- Conflict avoidance or indirect communication
|
|
25
|
-
- Speaking ratios and turn-taking
|
|
26
|
-
- Question-asking vs. statement-making patterns
|
|
27
|
-
- Active listening indicators
|
|
28
|
-
- Decision-making approaches
|
|
29
|
-
|
|
30
|
-
2. **Communication Analysis**: Evaluates communication effectiveness:
|
|
31
|
-
- Clarity and directness
|
|
32
|
-
- Use of filler words and hedging language
|
|
33
|
-
- Tone and sentiment patterns
|
|
34
|
-
- Meeting control and facilitation
|
|
35
|
-
|
|
36
|
-
3. **Actionable Feedback**: Provides specific, timestamped examples with:
|
|
37
|
-
- What happened
|
|
38
|
-
- Why it matters
|
|
39
|
-
- How to improve
|
|
40
|
-
|
|
41
|
-
4. **Trend Tracking**: Compares patterns over time when analyzing multiple meetings
|
|
42
|
-
|
|
43
|
-
## How to Use
|
|
44
|
-
|
|
45
|
-
### Basic Setup
|
|
46
|
-
|
|
47
|
-
1. Download your meeting transcripts to a folder (e.g., `~/meetings/`)
|
|
48
|
-
2. Navigate to that folder in Claude Code
|
|
49
|
-
3. Ask for the analysis you want
|
|
50
|
-
|
|
51
|
-
### Quick Start Examples
|
|
52
|
-
|
|
53
|
-
```
|
|
54
|
-
Analyze all meetings in this folder and tell me when I avoided conflict.
|
|
55
|
-
```
|
|
56
|
-
|
|
57
|
-
```
|
|
58
|
-
Look at my meetings from the past month and identify my communication patterns.
|
|
59
|
-
```
|
|
60
|
-
|
|
61
|
-
```
|
|
62
|
-
Compare my facilitation style between these two meeting folders.
|
|
63
|
-
```
|
|
64
|
-
|
|
65
|
-
### Advanced Analysis
|
|
66
|
-
|
|
67
|
-
```
|
|
68
|
-
Analyze all transcripts in this folder and:
|
|
69
|
-
1. Identify when I interrupted others
|
|
70
|
-
2. Calculate my speaking ratio
|
|
71
|
-
3. Find moments I avoided giving direct feedback
|
|
72
|
-
4. Track my use of filler words
|
|
73
|
-
5. Show examples of good active listening
|
|
74
|
-
```
|
|
75
|
-
|
|
76
|
-
## Instructions
|
|
77
|
-
|
|
78
|
-
When a user requests meeting analysis:
|
|
79
|
-
|
|
80
|
-
1. **Discover Available Data**
|
|
81
|
-
- Scan the folder for transcript files (.txt, .md, .vtt, .srt, .docx)
|
|
82
|
-
- Check if files contain speaker labels and timestamps
|
|
83
|
-
- Confirm the date range of meetings
|
|
84
|
-
- Identify the user's name/identifier in transcripts
|
|
85
|
-
|
|
86
|
-
2. **Clarify Analysis Goals**
|
|
87
|
-
|
|
88
|
-
If not specified, ask what they want to learn:
|
|
89
|
-
- Specific behaviors (conflict avoidance, interruptions, filler words)
|
|
90
|
-
- Communication effectiveness (clarity, directness, listening)
|
|
91
|
-
- Meeting facilitation skills
|
|
92
|
-
- Speaking patterns and ratios
|
|
93
|
-
- Growth areas for improvement
|
|
94
|
-
|
|
95
|
-
3. **Analyze Patterns**
|
|
96
|
-
|
|
97
|
-
For each requested insight:
|
|
98
|
-
|
|
99
|
-
**Conflict Avoidance**:
|
|
100
|
-
- Look for hedging language ("maybe", "kind of", "I think")
|
|
101
|
-
- Indirect phrasing instead of direct requests
|
|
102
|
-
- Changing subject when tension arises
|
|
103
|
-
- Agreeing without commitment ("yeah, but...")
|
|
104
|
-
- Not addressing obvious problems
|
|
105
|
-
|
|
106
|
-
**Speaking Ratios**:
|
|
107
|
-
- Calculate percentage of meeting spent speaking
|
|
108
|
-
- Count interruptions (by and of the user)
|
|
109
|
-
- Measure average speaking turn length
|
|
110
|
-
- Track question vs. statement ratios
|
|
111
|
-
|
|
112
|
-
**Filler Words**:
|
|
113
|
-
- Count "um", "uh", "like", "you know", "actually", etc.
|
|
114
|
-
- Note frequency per minute or per speaking turn
|
|
115
|
-
- Identify situations where they increase (nervous, uncertain)
|
|
116
|
-
|
|
117
|
-
**Active Listening**:
|
|
118
|
-
- Questions that reference others' previous points
|
|
119
|
-
- Paraphrasing or summarizing others' ideas
|
|
120
|
-
- Building on others' contributions
|
|
121
|
-
- Asking clarifying questions
|
|
122
|
-
|
|
123
|
-
**Leadership & Facilitation**:
|
|
124
|
-
- Decision-making approach (directive vs. collaborative)
|
|
125
|
-
- How disagreements are handled
|
|
126
|
-
- Inclusion of quieter participants
|
|
127
|
-
- Time management and agenda control
|
|
128
|
-
- Follow-up and action item clarity
|
|
129
|
-
|
|
130
|
-
4. **Provide Specific Examples**
|
|
131
|
-
|
|
132
|
-
For each pattern found, include:
|
|
133
|
-
|
|
134
|
-
```markdown
|
|
135
|
-
### [Pattern Name]
|
|
136
|
-
|
|
137
|
-
**Finding**: [One-sentence summary of the pattern]
|
|
138
|
-
|
|
139
|
-
**Frequency**: [X times across Y meetings]
|
|
140
|
-
|
|
141
|
-
**Examples**:
|
|
142
|
-
|
|
143
|
-
1. **[Meeting Name/Date]** - [Timestamp]
|
|
144
|
-
|
|
145
|
-
**What Happened**:
|
|
146
|
-
> [Actual quote from transcript]
|
|
147
|
-
|
|
148
|
-
**Why This Matters**:
|
|
149
|
-
[Explanation of the impact or missed opportunity]
|
|
150
|
-
|
|
151
|
-
**Better Approach**:
|
|
152
|
-
[Specific alternative phrasing or behavior]
|
|
153
|
-
|
|
154
|
-
[Repeat for 2-3 strongest examples]
|
|
155
|
-
```
|
|
156
|
-
|
|
157
|
-
5. **Synthesize Insights**
|
|
158
|
-
|
|
159
|
-
After analyzing all patterns, provide:
|
|
160
|
-
|
|
161
|
-
```markdown
|
|
162
|
-
# Meeting Insights Summary
|
|
163
|
-
|
|
164
|
-
**Analysis Period**: [Date range]
|
|
165
|
-
**Meetings Analyzed**: [X meetings]
|
|
166
|
-
**Total Duration**: [X hours]
|
|
167
|
-
|
|
168
|
-
## Key Patterns Identified
|
|
169
|
-
|
|
170
|
-
### 1. [Primary Pattern]
|
|
171
|
-
- **Observed**: [What you saw]
|
|
172
|
-
- **Impact**: [Why it matters]
|
|
173
|
-
- **Recommendation**: [How to improve]
|
|
174
|
-
|
|
175
|
-
### 2. [Second Pattern]
|
|
176
|
-
[Same structure]
|
|
177
|
-
|
|
178
|
-
## Communication Strengths
|
|
179
|
-
|
|
180
|
-
1. [Strength 1 with example]
|
|
181
|
-
2. [Strength 2 with example]
|
|
182
|
-
3. [Strength 3 with example]
|
|
183
|
-
|
|
184
|
-
## Growth Opportunities
|
|
185
|
-
|
|
186
|
-
1. **[Area 1]**: [Specific, actionable advice]
|
|
187
|
-
2. **[Area 2]**: [Specific, actionable advice]
|
|
188
|
-
3. **[Area 3]**: [Specific, actionable advice]
|
|
189
|
-
|
|
190
|
-
## Speaking Statistics
|
|
191
|
-
|
|
192
|
-
- Average speaking time: [X% of meeting]
|
|
193
|
-
- Questions asked: [X per meeting average]
|
|
194
|
-
- Filler words: [X per minute]
|
|
195
|
-
- Interruptions: [X given / Y received per meeting]
|
|
196
|
-
|
|
197
|
-
## Next Steps
|
|
198
|
-
|
|
199
|
-
[3-5 concrete actions to improve communication]
|
|
200
|
-
```
|
|
201
|
-
|
|
202
|
-
6. **Offer Follow-Up Options**
|
|
203
|
-
- Track these same metrics in future meetings
|
|
204
|
-
- Deep dive into specific meetings or patterns
|
|
205
|
-
- Compare to industry benchmarks
|
|
206
|
-
- Create a personal communication development plan
|
|
207
|
-
- Generate a summary for performance reviews
|
|
208
|
-
|
|
209
|
-
## Examples
|
|
210
|
-
|
|
211
|
-
### Example 1: Conflict Avoidance Analysis (Inspired by Dan Shipper)
|
|
212
|
-
|
|
213
|
-
**User**: "I download all of my meeting recordings and put them in a folder. Tell me all the times I've subtly avoided conflict."
|
|
214
|
-
|
|
215
|
-
**Output**:
|
|
216
|
-
```markdown
|
|
217
|
-
# Conflict Avoidance Patterns
|
|
218
|
-
|
|
219
|
-
Found 23 instances across 15 meetings where you used indirect
|
|
220
|
-
communication or avoided addressing tensions directly.
|
|
221
|
-
|
|
222
|
-
## Pattern: Hedging on Critical Feedback
|
|
223
|
-
|
|
224
|
-
**Frequency**: 8 times across 7 meetings
|
|
225
|
-
|
|
226
|
-
**Example 1: 1:1 with Sarah** - 00:14:32
|
|
227
|
-
|
|
228
|
-
**What Happened**:
|
|
229
|
-
> "So, I was thinking... maybe we could, like, potentially
|
|
230
|
-
> consider looking at the timeline again? I mean, if you
|
|
231
|
-
> think that makes sense. But whatever you think is best!"
|
|
232
|
-
|
|
233
|
-
**Why This Matters**:
|
|
234
|
-
You needed to address that Sarah's project was behind schedule,
|
|
235
|
-
but the hedging language ("maybe", "potentially", "if you think")
|
|
236
|
-
and the deflection at the end ("whatever you think") made it easy
|
|
237
|
-
for her to miss the urgency.
|
|
238
|
-
|
|
239
|
-
**Better Approach**:
|
|
240
|
-
"Sarah, the project is two weeks behind schedule. We need to
|
|
241
|
-
discuss what's blocking progress and create a new timeline
|
|
242
|
-
today."
|
|
243
|
-
|
|
244
|
-
[Additional examples...]
|
|
245
|
-
|
|
246
|
-
## Recommendations
|
|
247
|
-
|
|
248
|
-
1. **Name the issue directly** in the first sentence
|
|
249
|
-
2. **Remove hedging words** like "maybe," "kind of," "sort of"
|
|
250
|
-
3. **Ask specific questions** instead of hinting
|
|
251
|
-
4. **Schedule difficult conversations** instead of raising them casually
|
|
252
|
-
```
|
|
253
|
-
|
|
254
|
-
### Example 2: Leadership Facilitation
|
|
255
|
-
|
|
256
|
-
**User**: "Analyze my team meetings and tell me about my facilitation style."
|
|
257
|
-
|
|
258
|
-
**Output**: Provides insights on:
|
|
259
|
-
- How much you speak vs. team members (60% vs. 40%)
|
|
260
|
-
- Whether you ask questions or make statements (3:1 ratio)
|
|
261
|
-
- How you handle disagreements (tendency to resolve too quickly)
|
|
262
|
-
- Who speaks least and whether you draw them in
|
|
263
|
-
- Examples of good and missed facilitation moments
|
|
264
|
-
|
|
265
|
-
### Example 3: Personal Development Tracking
|
|
266
|
-
|
|
267
|
-
**User**: "Compare my meetings from Q1 vs. Q2 to see if I've improved my listening skills."
|
|
268
|
-
|
|
269
|
-
**Output**: Creates a comparative analysis showing:
|
|
270
|
-
- Decrease in interruptions (8 per meeting → 3 per meeting)
|
|
271
|
-
- Increase in clarifying questions (2 → 7 per meeting)
|
|
272
|
-
- Improvement in building on others' ideas
|
|
273
|
-
- Specific examples showing the difference
|
|
274
|
-
- Remaining areas for growth
|
|
275
|
-
|
|
276
|
-
## Setup Tips
|
|
277
|
-
|
|
278
|
-
### Getting Meeting Transcripts
|
|
279
|
-
|
|
280
|
-
**From Granola** (free with Lenny's newsletter subscription):
|
|
281
|
-
- Granola auto-transcribes your meetings
|
|
282
|
-
- Export transcripts to a folder: [Instructions on how]
|
|
283
|
-
- Point Claude Code to that folder
|
|
284
|
-
|
|
285
|
-
**From Zoom**:
|
|
286
|
-
- Enable cloud recording with transcription
|
|
287
|
-
- Download VTT or SRT files after meetings
|
|
288
|
-
- Store in a dedicated folder
|
|
289
|
-
|
|
290
|
-
**From Google Meet**:
|
|
291
|
-
- Use Google Docs auto-transcription
|
|
292
|
-
- Save transcript docs to a folder
|
|
293
|
-
- Download as .txt files or give Claude Code access
|
|
294
|
-
|
|
295
|
-
**From Fireflies.ai, Otter.ai, etc.**:
|
|
296
|
-
- Export transcripts in bulk
|
|
297
|
-
- Store in a local folder
|
|
298
|
-
- Run analysis on the folder
|
|
299
|
-
|
|
300
|
-
### Best Practices
|
|
301
|
-
|
|
302
|
-
1. **Consistent naming**: Use `YYYY-MM-DD - Meeting Name.txt` format
|
|
303
|
-
2. **Regular analysis**: Review monthly or quarterly for trends
|
|
304
|
-
3. **Specific queries**: Ask about one behavior at a time for depth
|
|
305
|
-
4. **Privacy**: Keep sensitive meeting data local
|
|
306
|
-
5. **Action-oriented**: Focus on one improvement area at a time
|
|
307
|
-
|
|
308
|
-
## Common Analysis Requests
|
|
309
|
-
|
|
310
|
-
- "When do I avoid difficult conversations?"
|
|
311
|
-
- "How often do I interrupt others?"
|
|
312
|
-
- "What's my speaking vs. listening ratio?"
|
|
313
|
-
- "Do I ask good questions?"
|
|
314
|
-
- "How do I handle disagreement?"
|
|
315
|
-
- "Am I inclusive of all voices?"
|
|
316
|
-
- "Do I use too many filler words?"
|
|
317
|
-
- "How clear are my action items?"
|
|
318
|
-
- "Do I stay on agenda or get sidetracked?"
|
|
319
|
-
- "How has my communication changed over time?"
|
|
320
|
-
|
|
321
|
-
## Related Use Cases
|
|
322
|
-
|
|
323
|
-
- Creating a personal development plan from insights
|
|
324
|
-
- Preparing performance review materials with examples
|
|
325
|
-
- Coaching direct reports on their communication
|
|
326
|
-
- Analyzing customer calls for sales or support patterns
|
|
327
|
-
- Studying negotiation tactics and outcomes
|
|
328
|
-
|
|
@@ -1,154 +0,0 @@
|
|
|
1
|
-
# Authentication Architecture
|
|
2
|
-
|
|
3
|
-
## Overview
|
|
4
|
-
|
|
5
|
-
This skill uses a **hybrid authentication approach** that combines the best of both worlds:
|
|
6
|
-
|
|
7
|
-
1. **Persistent Browser Profile** (`user_data_dir`) for consistent browser fingerprinting
|
|
8
|
-
2. **Manual Cookie Injection** from `state.json` for reliable session cookie persistence
|
|
9
|
-
|
|
10
|
-
## Why This Approach?
|
|
11
|
-
|
|
12
|
-
### The Problem
|
|
13
|
-
|
|
14
|
-
Playwright/Patchright has a known bug ([#36139](https://github.com/microsoft/playwright/issues/36139)) where **session cookies** (cookies without an `Expires` attribute) do not persist correctly when using `launch_persistent_context()` with `user_data_dir`.
|
|
15
|
-
|
|
16
|
-
**What happens:**
|
|
17
|
-
- ✅ Persistent cookies (with `Expires` date) → Saved correctly to browser profile
|
|
18
|
-
- ❌ Session cookies (without `Expires`) → **Lost after browser restarts**
|
|
19
|
-
|
|
20
|
-
**Impact:**
|
|
21
|
-
- Some Google auth cookies are session cookies
|
|
22
|
-
- Users experience random authentication failures
|
|
23
|
-
- "Works on my machine" syndrome (depends on which cookies Google uses)
|
|
24
|
-
|
|
25
|
-
### TypeScript vs Python
|
|
26
|
-
|
|
27
|
-
The **MCP Server** (TypeScript) can work around this by passing `storage_state` as a parameter:
|
|
28
|
-
|
|
29
|
-
```typescript
|
|
30
|
-
// TypeScript - works!
|
|
31
|
-
const context = await chromium.launchPersistentContext(userDataDir, {
|
|
32
|
-
storageState: "state.json", // ← Loads cookies including session cookies
|
|
33
|
-
channel: "chrome"
|
|
34
|
-
});
|
|
35
|
-
```
|
|
36
|
-
|
|
37
|
-
But **Python's Playwright API doesn't support this** ([#14949](https://github.com/microsoft/playwright/issues/14949)):
|
|
38
|
-
|
|
39
|
-
```python
|
|
40
|
-
# Python - NOT SUPPORTED!
|
|
41
|
-
context = playwright.chromium.launch_persistent_context(
|
|
42
|
-
user_data_dir=profile_dir,
|
|
43
|
-
storage_state="state.json", # ← Parameter not available in Python!
|
|
44
|
-
channel="chrome"
|
|
45
|
-
)
|
|
46
|
-
```
|
|
47
|
-
|
|
48
|
-
## Our Solution: Hybrid Approach
|
|
49
|
-
|
|
50
|
-
We use a **two-phase authentication system**:
|
|
51
|
-
|
|
52
|
-
### Phase 1: Setup (`auth_manager.py setup`)
|
|
53
|
-
|
|
54
|
-
1. Launch persistent context with `user_data_dir`
|
|
55
|
-
2. User logs in manually
|
|
56
|
-
3. **Save state to TWO places:**
|
|
57
|
-
- Browser profile directory (automatic, for fingerprint + persistent cookies)
|
|
58
|
-
- `state.json` file (explicit save, for session cookies)
|
|
59
|
-
|
|
60
|
-
```python
|
|
61
|
-
context = playwright.chromium.launch_persistent_context(
|
|
62
|
-
user_data_dir="browser_profile/",
|
|
63
|
-
channel="chrome"
|
|
64
|
-
)
|
|
65
|
-
# User logs in...
|
|
66
|
-
context.storage_state(path="state.json") # Save all cookies
|
|
67
|
-
```
|
|
68
|
-
|
|
69
|
-
### Phase 2: Runtime (`ask_question.py`)
|
|
70
|
-
|
|
71
|
-
1. Launch persistent context with `user_data_dir` (loads fingerprint + persistent cookies)
|
|
72
|
-
2. **Manually inject cookies** from `state.json` (adds session cookies)
|
|
73
|
-
|
|
74
|
-
```python
|
|
75
|
-
# Step 1: Launch with browser profile
|
|
76
|
-
context = playwright.chromium.launch_persistent_context(
|
|
77
|
-
user_data_dir="browser_profile/",
|
|
78
|
-
channel="chrome"
|
|
79
|
-
)
|
|
80
|
-
|
|
81
|
-
# Step 2: Manually inject cookies from state.json
|
|
82
|
-
with open("state.json", 'r') as f:
|
|
83
|
-
state = json.load(f)
|
|
84
|
-
context.add_cookies(state['cookies']) # ← Workaround for session cookies!
|
|
85
|
-
```
|
|
86
|
-
|
|
87
|
-
## Benefits
|
|
88
|
-
|
|
89
|
-
| Feature | Our Approach | Pure `user_data_dir` | Pure `storage_state` |
|
|
90
|
-
|---------|--------------|----------------------|----------------------|
|
|
91
|
-
| **Browser Fingerprint Consistency** | ✅ Same across restarts | ✅ Same | ❌ Changes each time |
|
|
92
|
-
| **Session Cookie Persistence** | ✅ Manual injection | ❌ Lost (bug) | ✅ Native support |
|
|
93
|
-
| **Persistent Cookie Persistence** | ✅ Automatic | ✅ Automatic | ✅ Native support |
|
|
94
|
-
| **Google Trust** | ✅ High (same browser) | ✅ High | ❌ Low (new browser) |
|
|
95
|
-
| **Cross-platform Reliability** | ✅ Chrome required | ⚠️ Chromium issues | ✅ Portable |
|
|
96
|
-
| **Cache Performance** | ✅ Keeps cache | ✅ Keeps cache | ❌ No cache |
|
|
97
|
-
|
|
98
|
-
## File Structure
|
|
99
|
-
|
|
100
|
-
```
|
|
101
|
-
~/.claude/skills/notebooklm/data/
|
|
102
|
-
├── auth_info.json # Metadata about authentication
|
|
103
|
-
├── browser_state/
|
|
104
|
-
│ ├── state.json # Cookies + localStorage (for manual injection)
|
|
105
|
-
│ └── browser_profile/ # Chrome user profile (for fingerprint + cache)
|
|
106
|
-
│ ├── Default/
|
|
107
|
-
│ │ ├── Cookies # Persistent cookies only (session cookies missing!)
|
|
108
|
-
│ │ ├── Local Storage/
|
|
109
|
-
│ │ └── Cache/
|
|
110
|
-
│ └── ...
|
|
111
|
-
```
|
|
112
|
-
|
|
113
|
-
## Why `state.json` is Critical
|
|
114
|
-
|
|
115
|
-
Even though we use `user_data_dir`, we **still need `state.json`** because:
|
|
116
|
-
|
|
117
|
-
1. **Session cookies** are not saved to the browser profile (Playwright bug)
|
|
118
|
-
2. **Manual injection** is the only reliable way to load session cookies
|
|
119
|
-
3. **Validation** - we can check if cookies are expired before launching
|
|
120
|
-
|
|
121
|
-
## Code References
|
|
122
|
-
|
|
123
|
-
**Setup:** `scripts/auth_manager.py:94-120`
|
|
124
|
-
- Lines 100-113: Launch persistent context with `channel="chrome"`
|
|
125
|
-
- Line 167: Save to `state.json` via `context.storage_state()`
|
|
126
|
-
|
|
127
|
-
**Runtime:** `scripts/ask_question.py:77-118`
|
|
128
|
-
- Lines 86-99: Launch persistent context
|
|
129
|
-
- Lines 101-118: Manual cookie injection workaround
|
|
130
|
-
|
|
131
|
-
**Validation:** `scripts/auth_manager.py:236-298`
|
|
132
|
-
- Lines 262-275: Launch persistent context
|
|
133
|
-
- Lines 277-287: Manual cookie injection for validation
|
|
134
|
-
|
|
135
|
-
## Related Issues
|
|
136
|
-
|
|
137
|
-
- [microsoft/playwright#36139](https://github.com/microsoft/playwright/issues/36139) - Session cookies not persisting
|
|
138
|
-
- [microsoft/playwright#14949](https://github.com/microsoft/playwright/issues/14949) - Storage state with persistent context
|
|
139
|
-
- [StackOverflow Question](https://stackoverflow.com/questions/79641481/) - Session cookie persistence issue
|
|
140
|
-
|
|
141
|
-
## Future Improvements
|
|
142
|
-
|
|
143
|
-
If Playwright adds support for `storage_state` parameter in Python's `launch_persistent_context()`, we can simplify to:
|
|
144
|
-
|
|
145
|
-
```python
|
|
146
|
-
# Future (when Python API supports it):
|
|
147
|
-
context = playwright.chromium.launch_persistent_context(
|
|
148
|
-
user_data_dir="browser_profile/",
|
|
149
|
-
storage_state="state.json", # ← Would handle everything automatically!
|
|
150
|
-
channel="chrome"
|
|
151
|
-
)
|
|
152
|
-
```
|
|
153
|
-
|
|
154
|
-
Until then, our hybrid approach is the most reliable solution.
|