Initial commit
This commit is contained in:
15
.claude-plugin/plugin.json
Normal file
15
.claude-plugin/plugin.json
Normal file
@@ -0,0 +1,15 @@
|
|||||||
|
{
|
||||||
|
"name": "media-data-tools",
|
||||||
|
"description": "Media processing and data analysis tools including video download, image enhancement, CSV analysis, and meeting insights",
|
||||||
|
"version": "0.0.0-2025.11.28",
|
||||||
|
"author": {
|
||||||
|
"name": "ando",
|
||||||
|
"email": "ando@kivilaid.ee"
|
||||||
|
},
|
||||||
|
"skills": [
|
||||||
|
"./skills/video-downloader",
|
||||||
|
"./skills/image-enhancer",
|
||||||
|
"./skills/csv-data-summarizer",
|
||||||
|
"./skills/meeting-insights-analyzer"
|
||||||
|
]
|
||||||
|
}
|
||||||
3
README.md
Normal file
3
README.md
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
# media-data-tools
|
||||||
|
|
||||||
|
Media processing and data analysis tools including video download, image enhancement, CSV analysis, and meeting insights
|
||||||
64
plugin.lock.json
Normal file
64
plugin.lock.json
Normal file
@@ -0,0 +1,64 @@
|
|||||||
|
{
|
||||||
|
"$schema": "internal://schemas/plugin.lock.v1.json",
|
||||||
|
"pluginId": "gh:kivilaid/plugin-marketplace:media-data-tools",
|
||||||
|
"normalized": {
|
||||||
|
"repo": null,
|
||||||
|
"ref": "refs/tags/v20251128.0",
|
||||||
|
"commit": "c3902fcb92259fa7cd0ce4b93c81a4deb385cecf",
|
||||||
|
"treeHash": "bdda4475556ba71561c8e1f9029210e85eaf5242389ef732c2492cf1103bebfa",
|
||||||
|
"generatedAt": "2025-11-28T10:19:36.023251Z",
|
||||||
|
"toolVersion": "publish_plugins.py@0.2.0"
|
||||||
|
},
|
||||||
|
"origin": {
|
||||||
|
"remote": "git@github.com:zhongweili/42plugin-data.git",
|
||||||
|
"branch": "master",
|
||||||
|
"commit": "aa1497ed0949fd50e99e70d6324a29c5b34f9390",
|
||||||
|
"repoRoot": "/Users/zhongweili/projects/openmind/42plugin-data"
|
||||||
|
},
|
||||||
|
"manifest": {
|
||||||
|
"name": "media-data-tools",
|
||||||
|
"description": "Media processing and data analysis tools including video download, image enhancement, CSV analysis, and meeting insights"
|
||||||
|
},
|
||||||
|
"content": {
|
||||||
|
"files": [
|
||||||
|
{
|
||||||
|
"path": "README.md",
|
||||||
|
"sha256": "1598e0f8e71a3ee2d66f21938783b975b0653c9021b479ba9c5694d0ba4898d6"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": ".claude-plugin/plugin.json",
|
||||||
|
"sha256": "3113d21d0b666b198cfcb5851e8f9b5f524a3aa6e683998f449105b64e7a4466"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "skills/video-downloader/SKILL.md",
|
||||||
|
"sha256": "b5acaa3f9ee216c34004d60fe1050779e539690d644118a50c4fefb141e41101"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "skills/image-enhancer/SKILL.md",
|
||||||
|
"sha256": "57b003b9cd0c3e42861194c37e2df061061f3e1e4b03e776fa33bf27b045e40c"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "skills/csv-data-summarizer/requirements.txt",
|
||||||
|
"sha256": "3787888dbf39eb94483edf69a8009040a4dfd4222a0d57ec01faff8934bacdb9"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "skills/csv-data-summarizer/SKILL.md",
|
||||||
|
"sha256": "1599338ac2db52bad14bb5e67152b3e27279e301a267d3c1a0f8239fab499169"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "skills/csv-data-summarizer/analyze.py",
|
||||||
|
"sha256": "fa217db952541d593d249f02db3693a97d520539f9e8c80764ef656b2140422e"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "skills/meeting-insights-analyzer/SKILL.md",
|
||||||
|
"sha256": "c639c0fc10a84225ba117ec5561f8cca1325c8d739fd0ac169b5a6dca6a0d071"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"dirSha256": "bdda4475556ba71561c8e1f9029210e85eaf5242389ef732c2492cf1103bebfa"
|
||||||
|
},
|
||||||
|
"security": {
|
||||||
|
"scannedAt": null,
|
||||||
|
"scannerVersion": null,
|
||||||
|
"flags": []
|
||||||
|
}
|
||||||
|
}
|
||||||
149
skills/csv-data-summarizer/SKILL.md
Normal file
149
skills/csv-data-summarizer/SKILL.md
Normal file
@@ -0,0 +1,149 @@
|
|||||||
|
---
|
||||||
|
name: csv-data-summarizer
|
||||||
|
description: Analyzes CSV files, generates summary stats, and plots quick visualizations using Python and pandas.
|
||||||
|
metadata:
|
||||||
|
version: 2.1.0
|
||||||
|
dependencies: python>=3.8, pandas>=2.0.0, matplotlib>=3.7.0, seaborn>=0.12.0
|
||||||
|
---
|
||||||
|
|
||||||
|
# CSV Data Summarizer
|
||||||
|
|
||||||
|
This Skill analyzes CSV files and provides comprehensive summaries with statistical insights and visualizations.
|
||||||
|
|
||||||
|
## When to Use This Skill
|
||||||
|
|
||||||
|
Claude should use this Skill whenever the user:
|
||||||
|
- Uploads or references a CSV file
|
||||||
|
- Asks to summarize, analyze, or visualize tabular data
|
||||||
|
- Requests insights from CSV data
|
||||||
|
- Wants to understand data structure and quality
|
||||||
|
|
||||||
|
## How It Works
|
||||||
|
|
||||||
|
## ⚠️ CRITICAL BEHAVIOR REQUIREMENT ⚠️
|
||||||
|
|
||||||
|
**DO NOT ASK THE USER WHAT THEY WANT TO DO WITH THE DATA.**
|
||||||
|
**DO NOT OFFER OPTIONS OR CHOICES.**
|
||||||
|
**DO NOT SAY "What would you like me to help you with?"**
|
||||||
|
**DO NOT LIST POSSIBLE ANALYSES.**
|
||||||
|
|
||||||
|
**IMMEDIATELY AND AUTOMATICALLY:**
|
||||||
|
1. Run the comprehensive analysis
|
||||||
|
2. Generate ALL relevant visualizations
|
||||||
|
3. Present complete results
|
||||||
|
4. NO questions, NO options, NO waiting for user input
|
||||||
|
|
||||||
|
**THE USER WANTS A FULL ANALYSIS RIGHT AWAY - JUST DO IT.**
|
||||||
|
|
||||||
|
### Automatic Analysis Steps:
|
||||||
|
|
||||||
|
**The skill intelligently adapts to different data types and industries by inspecting the data first, then determining what analyses are most relevant.**
|
||||||
|
|
||||||
|
1. **Load and inspect** the CSV file into pandas DataFrame
|
||||||
|
2. **Identify data structure** - column types, date columns, numeric columns, categories
|
||||||
|
3. **Determine relevant analyses** based on what's actually in the data:
|
||||||
|
- **Sales/E-commerce data** (order dates, revenue, products): Time-series trends, revenue analysis, product performance
|
||||||
|
- **Customer data** (demographics, segments, regions): Distribution analysis, segmentation, geographic patterns
|
||||||
|
- **Financial data** (transactions, amounts, dates): Trend analysis, statistical summaries, correlations
|
||||||
|
- **Operational data** (timestamps, metrics, status): Time-series, performance metrics, distributions
|
||||||
|
- **Survey data** (categorical responses, ratings): Frequency analysis, cross-tabulations, distributions
|
||||||
|
- **Generic tabular data**: Adapts based on column types found
|
||||||
|
|
||||||
|
4. **Only create visualizations that make sense** for the specific dataset:
|
||||||
|
- Time-series plots ONLY if date/timestamp columns exist
|
||||||
|
- Correlation heatmaps ONLY if multiple numeric columns exist
|
||||||
|
- Category distributions ONLY if categorical columns exist
|
||||||
|
- Histograms for numeric distributions when relevant
|
||||||
|
|
||||||
|
5. **Generate comprehensive output** automatically including:
|
||||||
|
- Data overview (rows, columns, types)
|
||||||
|
- Key statistics and metrics relevant to the data type
|
||||||
|
- Missing data analysis
|
||||||
|
- Multiple relevant visualizations (only those that apply)
|
||||||
|
- Actionable insights based on patterns found in THIS specific dataset
|
||||||
|
|
||||||
|
6. **Present everything** in one complete analysis - no follow-up questions
|
||||||
|
|
||||||
|
**Example adaptations:**
|
||||||
|
- Healthcare data with patient IDs → Focus on demographics, treatment patterns, temporal trends
|
||||||
|
- Inventory data with stock levels → Focus on quantity distributions, reorder patterns, SKU analysis
|
||||||
|
- Web analytics with timestamps → Focus on traffic patterns, conversion metrics, time-of-day analysis
|
||||||
|
- Survey responses → Focus on response distributions, demographic breakdowns, sentiment patterns
|
||||||
|
|
||||||
|
### Behavior Guidelines
|
||||||
|
|
||||||
|
✅ **CORRECT APPROACH - SAY THIS:**
|
||||||
|
- "I'll analyze this data comprehensively right now."
|
||||||
|
- "Here's the complete analysis with visualizations:"
|
||||||
|
- "I've identified this as [type] data and generated relevant insights:"
|
||||||
|
- Then IMMEDIATELY show the full analysis
|
||||||
|
|
||||||
|
✅ **DO:**
|
||||||
|
- Immediately run the analysis script
|
||||||
|
- Generate ALL relevant charts automatically
|
||||||
|
- Provide complete insights without being asked
|
||||||
|
- Be thorough and complete in first response
|
||||||
|
- Act decisively without asking permission
|
||||||
|
|
||||||
|
❌ **NEVER SAY THESE PHRASES:**
|
||||||
|
- "What would you like to do with this data?"
|
||||||
|
- "What would you like me to help you with?"
|
||||||
|
- "Here are some common options:"
|
||||||
|
- "Let me know what you'd like help with"
|
||||||
|
- "I can create a comprehensive analysis if you'd like!"
|
||||||
|
- Any sentence ending with "?" asking for user direction
|
||||||
|
- Any list of options or choices
|
||||||
|
- Any conditional "I can do X if you want"
|
||||||
|
|
||||||
|
❌ **FORBIDDEN BEHAVIORS:**
|
||||||
|
- Asking what the user wants
|
||||||
|
- Listing options for the user to choose from
|
||||||
|
- Waiting for user direction before analyzing
|
||||||
|
- Providing partial analysis that requires follow-up
|
||||||
|
- Describing what you COULD do instead of DOING it
|
||||||
|
|
||||||
|
### Usage
|
||||||
|
|
||||||
|
The Skill provides a Python function `summarize_csv(file_path)` that:
|
||||||
|
- Accepts a path to a CSV file
|
||||||
|
- Returns a comprehensive text summary with statistics
|
||||||
|
- Generates multiple visualizations automatically based on data structure
|
||||||
|
|
||||||
|
### Example Prompts
|
||||||
|
|
||||||
|
> "Here's `sales_data.csv`. Can you summarize this file?"
|
||||||
|
|
||||||
|
> "Analyze this customer data CSV and show me trends."
|
||||||
|
|
||||||
|
> "What insights can you find in `orders.csv`?"
|
||||||
|
|
||||||
|
### Example Output
|
||||||
|
|
||||||
|
**Dataset Overview**
|
||||||
|
- 5,000 rows × 8 columns
|
||||||
|
- 3 numeric columns, 1 date column
|
||||||
|
|
||||||
|
**Summary Statistics**
|
||||||
|
- Average order value: $58.2
|
||||||
|
- Standard deviation: $12.4
|
||||||
|
- Missing values: 2% (100 cells)
|
||||||
|
|
||||||
|
**Insights**
|
||||||
|
- Sales show upward trend over time
|
||||||
|
- Peak activity in Q4
|
||||||
|
*(Attached: trend plot)*
|
||||||
|
|
||||||
|
## Files
|
||||||
|
|
||||||
|
- `analyze.py` - Core analysis logic
|
||||||
|
- `requirements.txt` - Python dependencies
|
||||||
|
- `resources/sample.csv` - Example dataset for testing
|
||||||
|
- `resources/README.md` - Additional documentation
|
||||||
|
|
||||||
|
## Notes
|
||||||
|
|
||||||
|
- Automatically detects date columns (columns containing 'date' in name)
|
||||||
|
- Handles missing data gracefully
|
||||||
|
- Generates visualizations only when date columns are present
|
||||||
|
- All numeric columns are included in statistical summary
|
||||||
|
|
||||||
182
skills/csv-data-summarizer/analyze.py
Normal file
182
skills/csv-data-summarizer/analyze.py
Normal file
@@ -0,0 +1,182 @@
|
|||||||
|
import pandas as pd
|
||||||
|
import matplotlib.pyplot as plt
|
||||||
|
import seaborn as sns
|
||||||
|
from pathlib import Path
|
||||||
|
|
||||||
|
def summarize_csv(file_path):
|
||||||
|
"""
|
||||||
|
Comprehensively analyzes a CSV file and generates multiple visualizations.
|
||||||
|
|
||||||
|
Args:
|
||||||
|
file_path (str): Path to the CSV file
|
||||||
|
|
||||||
|
Returns:
|
||||||
|
str: Formatted comprehensive analysis of the dataset
|
||||||
|
"""
|
||||||
|
df = pd.read_csv(file_path)
|
||||||
|
summary = []
|
||||||
|
charts_created = []
|
||||||
|
|
||||||
|
# Basic info
|
||||||
|
summary.append("=" * 60)
|
||||||
|
summary.append("📊 DATA OVERVIEW")
|
||||||
|
summary.append("=" * 60)
|
||||||
|
summary.append(f"Rows: {df.shape[0]:,} | Columns: {df.shape[1]}")
|
||||||
|
summary.append(f"\nColumns: {', '.join(df.columns.tolist())}")
|
||||||
|
|
||||||
|
# Data types
|
||||||
|
summary.append(f"\n📋 DATA TYPES:")
|
||||||
|
for col, dtype in df.dtypes.items():
|
||||||
|
summary.append(f" • {col}: {dtype}")
|
||||||
|
|
||||||
|
# Missing data analysis
|
||||||
|
missing = df.isnull().sum().sum()
|
||||||
|
missing_pct = (missing / (df.shape[0] * df.shape[1])) * 100
|
||||||
|
summary.append(f"\n🔍 DATA QUALITY:")
|
||||||
|
if missing:
|
||||||
|
summary.append(f"Missing values: {missing:,} ({missing_pct:.2f}% of total data)")
|
||||||
|
summary.append("Missing by column:")
|
||||||
|
for col in df.columns:
|
||||||
|
col_missing = df[col].isnull().sum()
|
||||||
|
if col_missing > 0:
|
||||||
|
col_pct = (col_missing / len(df)) * 100
|
||||||
|
summary.append(f" • {col}: {col_missing:,} ({col_pct:.1f}%)")
|
||||||
|
else:
|
||||||
|
summary.append("✓ No missing values - dataset is complete!")
|
||||||
|
|
||||||
|
# Numeric analysis
|
||||||
|
numeric_cols = df.select_dtypes(include='number').columns.tolist()
|
||||||
|
if numeric_cols:
|
||||||
|
summary.append(f"\n📈 NUMERICAL ANALYSIS:")
|
||||||
|
summary.append(str(df[numeric_cols].describe()))
|
||||||
|
|
||||||
|
# Correlations if multiple numeric columns
|
||||||
|
if len(numeric_cols) > 1:
|
||||||
|
summary.append(f"\n🔗 CORRELATIONS:")
|
||||||
|
corr_matrix = df[numeric_cols].corr()
|
||||||
|
summary.append(str(corr_matrix))
|
||||||
|
|
||||||
|
# Create correlation heatmap
|
||||||
|
plt.figure(figsize=(10, 8))
|
||||||
|
sns.heatmap(corr_matrix, annot=True, cmap='coolwarm', center=0,
|
||||||
|
square=True, linewidths=1)
|
||||||
|
plt.title('Correlation Heatmap')
|
||||||
|
plt.tight_layout()
|
||||||
|
plt.savefig('correlation_heatmap.png', dpi=150)
|
||||||
|
plt.close()
|
||||||
|
charts_created.append('correlation_heatmap.png')
|
||||||
|
|
||||||
|
# Categorical analysis
|
||||||
|
categorical_cols = df.select_dtypes(include=['object']).columns.tolist()
|
||||||
|
categorical_cols = [c for c in categorical_cols if 'id' not in c.lower()]
|
||||||
|
|
||||||
|
if categorical_cols:
|
||||||
|
summary.append(f"\n📊 CATEGORICAL ANALYSIS:")
|
||||||
|
for col in categorical_cols[:5]: # Limit to first 5
|
||||||
|
value_counts = df[col].value_counts()
|
||||||
|
summary.append(f"\n{col}:")
|
||||||
|
for val, count in value_counts.head(10).items():
|
||||||
|
pct = (count / len(df)) * 100
|
||||||
|
summary.append(f" • {val}: {count:,} ({pct:.1f}%)")
|
||||||
|
|
||||||
|
# Time series analysis
|
||||||
|
date_cols = [c for c in df.columns if 'date' in c.lower() or 'time' in c.lower()]
|
||||||
|
if date_cols:
|
||||||
|
summary.append(f"\n📅 TIME SERIES ANALYSIS:")
|
||||||
|
date_col = date_cols[0]
|
||||||
|
df[date_col] = pd.to_datetime(df[date_col], errors='coerce')
|
||||||
|
|
||||||
|
date_range = df[date_col].max() - df[date_col].min()
|
||||||
|
summary.append(f"Date range: {df[date_col].min()} to {df[date_col].max()}")
|
||||||
|
summary.append(f"Span: {date_range.days} days")
|
||||||
|
|
||||||
|
# Create time-series plots for numeric columns
|
||||||
|
if numeric_cols:
|
||||||
|
fig, axes = plt.subplots(min(3, len(numeric_cols)), 1,
|
||||||
|
figsize=(12, 4 * min(3, len(numeric_cols))))
|
||||||
|
if len(numeric_cols) == 1:
|
||||||
|
axes = [axes]
|
||||||
|
|
||||||
|
for idx, num_col in enumerate(numeric_cols[:3]):
|
||||||
|
ax = axes[idx] if len(numeric_cols) > 1 else axes[0]
|
||||||
|
daily_data = df.groupby(date_col)[num_col].agg(['mean', 'sum', 'count'])
|
||||||
|
daily_data['mean'].plot(ax=ax, label='Average', linewidth=2)
|
||||||
|
ax.set_title(f'{num_col} Over Time')
|
||||||
|
ax.set_xlabel('Date')
|
||||||
|
ax.set_ylabel(num_col)
|
||||||
|
ax.legend()
|
||||||
|
ax.grid(True, alpha=0.3)
|
||||||
|
|
||||||
|
plt.tight_layout()
|
||||||
|
plt.savefig('time_series_analysis.png', dpi=150)
|
||||||
|
plt.close()
|
||||||
|
charts_created.append('time_series_analysis.png')
|
||||||
|
|
||||||
|
# Distribution plots for numeric columns
|
||||||
|
if numeric_cols:
|
||||||
|
n_cols = min(4, len(numeric_cols))
|
||||||
|
fig, axes = plt.subplots(2, 2, figsize=(12, 10))
|
||||||
|
axes = axes.flatten()
|
||||||
|
|
||||||
|
for idx, col in enumerate(numeric_cols[:4]):
|
||||||
|
axes[idx].hist(df[col].dropna(), bins=30, edgecolor='black', alpha=0.7)
|
||||||
|
axes[idx].set_title(f'Distribution of {col}')
|
||||||
|
axes[idx].set_xlabel(col)
|
||||||
|
axes[idx].set_ylabel('Frequency')
|
||||||
|
axes[idx].grid(True, alpha=0.3)
|
||||||
|
|
||||||
|
# Hide unused subplots
|
||||||
|
for idx in range(len(numeric_cols[:4]), 4):
|
||||||
|
axes[idx].set_visible(False)
|
||||||
|
|
||||||
|
plt.tight_layout()
|
||||||
|
plt.savefig('distributions.png', dpi=150)
|
||||||
|
plt.close()
|
||||||
|
charts_created.append('distributions.png')
|
||||||
|
|
||||||
|
# Categorical distributions
|
||||||
|
if categorical_cols:
|
||||||
|
fig, axes = plt.subplots(2, 2, figsize=(14, 10))
|
||||||
|
axes = axes.flatten()
|
||||||
|
|
||||||
|
for idx, col in enumerate(categorical_cols[:4]):
|
||||||
|
value_counts = df[col].value_counts().head(10)
|
||||||
|
axes[idx].barh(range(len(value_counts)), value_counts.values)
|
||||||
|
axes[idx].set_yticks(range(len(value_counts)))
|
||||||
|
axes[idx].set_yticklabels(value_counts.index)
|
||||||
|
axes[idx].set_title(f'Top Values in {col}')
|
||||||
|
axes[idx].set_xlabel('Count')
|
||||||
|
axes[idx].grid(True, alpha=0.3, axis='x')
|
||||||
|
|
||||||
|
# Hide unused subplots
|
||||||
|
for idx in range(len(categorical_cols[:4]), 4):
|
||||||
|
axes[idx].set_visible(False)
|
||||||
|
|
||||||
|
plt.tight_layout()
|
||||||
|
plt.savefig('categorical_distributions.png', dpi=150)
|
||||||
|
plt.close()
|
||||||
|
charts_created.append('categorical_distributions.png')
|
||||||
|
|
||||||
|
# Summary of visualizations
|
||||||
|
if charts_created:
|
||||||
|
summary.append(f"\n📊 VISUALIZATIONS CREATED:")
|
||||||
|
for chart in charts_created:
|
||||||
|
summary.append(f" ✓ {chart}")
|
||||||
|
|
||||||
|
summary.append("\n" + "=" * 60)
|
||||||
|
summary.append("✅ COMPREHENSIVE ANALYSIS COMPLETE")
|
||||||
|
summary.append("=" * 60)
|
||||||
|
|
||||||
|
return "\n".join(summary)
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
# Test with sample data
|
||||||
|
import sys
|
||||||
|
if len(sys.argv) > 1:
|
||||||
|
file_path = sys.argv[1]
|
||||||
|
else:
|
||||||
|
file_path = "resources/sample.csv"
|
||||||
|
|
||||||
|
print(summarize_csv(file_path))
|
||||||
|
|
||||||
4
skills/csv-data-summarizer/requirements.txt
Normal file
4
skills/csv-data-summarizer/requirements.txt
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
pandas>=2.0.0
|
||||||
|
matplotlib>=3.7.0
|
||||||
|
seaborn>=0.12.0
|
||||||
|
|
||||||
99
skills/image-enhancer/SKILL.md
Normal file
99
skills/image-enhancer/SKILL.md
Normal file
@@ -0,0 +1,99 @@
|
|||||||
|
---
|
||||||
|
name: image-enhancer
|
||||||
|
description: Improves the quality of images, especially screenshots, by enhancing resolution, sharpness, and clarity. Perfect for preparing images for presentations, documentation, or social media posts.
|
||||||
|
---
|
||||||
|
|
||||||
|
# Image Enhancer
|
||||||
|
|
||||||
|
This skill takes your images and screenshots and makes them look better—sharper, clearer, and more professional.
|
||||||
|
|
||||||
|
## When to Use This Skill
|
||||||
|
|
||||||
|
- Improving screenshot quality for blog posts or documentation
|
||||||
|
- Enhancing images before sharing on social media
|
||||||
|
- Preparing images for presentations or reports
|
||||||
|
- Upscaling low-resolution images
|
||||||
|
- Sharpening blurry photos
|
||||||
|
- Cleaning up compressed images
|
||||||
|
|
||||||
|
## What This Skill Does
|
||||||
|
|
||||||
|
1. **Analyzes Image Quality**: Checks resolution, sharpness, and compression artifacts
|
||||||
|
2. **Enhances Resolution**: Upscales images intelligently
|
||||||
|
3. **Improves Sharpness**: Enhances edges and details
|
||||||
|
4. **Reduces Artifacts**: Cleans up compression artifacts and noise
|
||||||
|
5. **Optimizes for Use Case**: Adjusts based on intended use (web, print, social media)
|
||||||
|
|
||||||
|
## How to Use
|
||||||
|
|
||||||
|
### Basic Enhancement
|
||||||
|
|
||||||
|
```
|
||||||
|
Improve the image quality of screenshot.png
|
||||||
|
```
|
||||||
|
|
||||||
|
```
|
||||||
|
Enhance all images in this folder
|
||||||
|
```
|
||||||
|
|
||||||
|
### Specific Improvements
|
||||||
|
|
||||||
|
```
|
||||||
|
Upscale this image to 4K resolution
|
||||||
|
```
|
||||||
|
|
||||||
|
```
|
||||||
|
Sharpen this blurry screenshot
|
||||||
|
```
|
||||||
|
|
||||||
|
```
|
||||||
|
Reduce compression artifacts in this image
|
||||||
|
```
|
||||||
|
|
||||||
|
### Batch Processing
|
||||||
|
|
||||||
|
```
|
||||||
|
Improve the quality of all PNG files in this directory
|
||||||
|
```
|
||||||
|
|
||||||
|
## Example
|
||||||
|
|
||||||
|
**User**: "Improve the image quality of screenshot-2024.png"
|
||||||
|
|
||||||
|
**Output**:
|
||||||
|
```
|
||||||
|
Analyzing screenshot-2024.png...
|
||||||
|
|
||||||
|
Current specs:
|
||||||
|
- Resolution: 1920x1080
|
||||||
|
- Format: PNG
|
||||||
|
- Quality: Good, but slight blur
|
||||||
|
|
||||||
|
Enhancements applied:
|
||||||
|
✓ Upscaled to 2560x1440 (retina)
|
||||||
|
✓ Sharpened edges
|
||||||
|
✓ Enhanced text clarity
|
||||||
|
✓ Optimized file size
|
||||||
|
|
||||||
|
Saved as: screenshot-2024-enhanced.png
|
||||||
|
Original preserved as: screenshot-2024-original.png
|
||||||
|
```
|
||||||
|
|
||||||
|
**Inspired by:** Lenny Rachitsky's workflow from his newsletter - used for screenshots in his articles
|
||||||
|
|
||||||
|
## Tips
|
||||||
|
|
||||||
|
- Always keeps original files as backup
|
||||||
|
- Works best with screenshots and digital images
|
||||||
|
- Can batch process entire folders
|
||||||
|
- Specify output format if needed (PNG for quality, JPG for smaller size)
|
||||||
|
- For social media, mention the platform for optimal sizing
|
||||||
|
|
||||||
|
## Common Use Cases
|
||||||
|
|
||||||
|
- **Blog Posts**: Enhance screenshots before publishing
|
||||||
|
- **Documentation**: Make UI screenshots crystal clear
|
||||||
|
- **Social Media**: Optimize images for Twitter, LinkedIn, Instagram
|
||||||
|
- **Presentations**: Upscale images for large screens
|
||||||
|
- **Print Materials**: Increase resolution for physical media
|
||||||
|
|
||||||
327
skills/meeting-insights-analyzer/SKILL.md
Normal file
327
skills/meeting-insights-analyzer/SKILL.md
Normal file
@@ -0,0 +1,327 @@
|
|||||||
|
---
|
||||||
|
name: meeting-insights-analyzer
|
||||||
|
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.
|
||||||
|
---
|
||||||
|
|
||||||
|
# Meeting Insights Analyzer
|
||||||
|
|
||||||
|
This skill transforms your meeting transcripts into actionable insights about your communication patterns, helping you become a more effective communicator and leader.
|
||||||
|
|
||||||
|
## When to Use This Skill
|
||||||
|
|
||||||
|
- Analyzing your communication patterns across multiple meetings
|
||||||
|
- Getting feedback on your leadership and facilitation style
|
||||||
|
- Identifying when you avoid difficult conversations
|
||||||
|
- Understanding your speaking habits and filler words
|
||||||
|
- Tracking improvement in communication skills over time
|
||||||
|
- Preparing for performance reviews with concrete examples
|
||||||
|
- Coaching team members on their communication style
|
||||||
|
|
||||||
|
## What This Skill Does
|
||||||
|
|
||||||
|
1. **Pattern Recognition**: Identifies recurring behaviors across meetings like:
|
||||||
|
- Conflict avoidance or indirect communication
|
||||||
|
- Speaking ratios and turn-taking
|
||||||
|
- Question-asking vs. statement-making patterns
|
||||||
|
- Active listening indicators
|
||||||
|
- Decision-making approaches
|
||||||
|
|
||||||
|
2. **Communication Analysis**: Evaluates communication effectiveness:
|
||||||
|
- Clarity and directness
|
||||||
|
- Use of filler words and hedging language
|
||||||
|
- Tone and sentiment patterns
|
||||||
|
- Meeting control and facilitation
|
||||||
|
|
||||||
|
3. **Actionable Feedback**: Provides specific, timestamped examples with:
|
||||||
|
- What happened
|
||||||
|
- Why it matters
|
||||||
|
- How to improve
|
||||||
|
|
||||||
|
4. **Trend Tracking**: Compares patterns over time when analyzing multiple meetings
|
||||||
|
|
||||||
|
## How to Use
|
||||||
|
|
||||||
|
### Basic Setup
|
||||||
|
|
||||||
|
1. Download your meeting transcripts to a folder (e.g., `~/meetings/`)
|
||||||
|
2. Navigate to that folder in Claude Code
|
||||||
|
3. Ask for the analysis you want
|
||||||
|
|
||||||
|
### Quick Start Examples
|
||||||
|
|
||||||
|
```
|
||||||
|
Analyze all meetings in this folder and tell me when I avoided conflict.
|
||||||
|
```
|
||||||
|
|
||||||
|
```
|
||||||
|
Look at my meetings from the past month and identify my communication patterns.
|
||||||
|
```
|
||||||
|
|
||||||
|
```
|
||||||
|
Compare my facilitation style between these two meeting folders.
|
||||||
|
```
|
||||||
|
|
||||||
|
### Advanced Analysis
|
||||||
|
|
||||||
|
```
|
||||||
|
Analyze all transcripts in this folder and:
|
||||||
|
1. Identify when I interrupted others
|
||||||
|
2. Calculate my speaking ratio
|
||||||
|
3. Find moments I avoided giving direct feedback
|
||||||
|
4. Track my use of filler words
|
||||||
|
5. Show examples of good active listening
|
||||||
|
```
|
||||||
|
|
||||||
|
## Instructions
|
||||||
|
|
||||||
|
When a user requests meeting analysis:
|
||||||
|
|
||||||
|
1. **Discover Available Data**
|
||||||
|
- Scan the folder for transcript files (.txt, .md, .vtt, .srt, .docx)
|
||||||
|
- Check if files contain speaker labels and timestamps
|
||||||
|
- Confirm the date range of meetings
|
||||||
|
- Identify the user's name/identifier in transcripts
|
||||||
|
|
||||||
|
2. **Clarify Analysis Goals**
|
||||||
|
|
||||||
|
If not specified, ask what they want to learn:
|
||||||
|
- Specific behaviors (conflict avoidance, interruptions, filler words)
|
||||||
|
- Communication effectiveness (clarity, directness, listening)
|
||||||
|
- Meeting facilitation skills
|
||||||
|
- Speaking patterns and ratios
|
||||||
|
- Growth areas for improvement
|
||||||
|
|
||||||
|
3. **Analyze Patterns**
|
||||||
|
|
||||||
|
For each requested insight:
|
||||||
|
|
||||||
|
**Conflict Avoidance**:
|
||||||
|
- Look for hedging language ("maybe", "kind of", "I think")
|
||||||
|
- Indirect phrasing instead of direct requests
|
||||||
|
- Changing subject when tension arises
|
||||||
|
- Agreeing without commitment ("yeah, but...")
|
||||||
|
- Not addressing obvious problems
|
||||||
|
|
||||||
|
**Speaking Ratios**:
|
||||||
|
- Calculate percentage of meeting spent speaking
|
||||||
|
- Count interruptions (by and of the user)
|
||||||
|
- Measure average speaking turn length
|
||||||
|
- Track question vs. statement ratios
|
||||||
|
|
||||||
|
**Filler Words**:
|
||||||
|
- Count "um", "uh", "like", "you know", "actually", etc.
|
||||||
|
- Note frequency per minute or per speaking turn
|
||||||
|
- Identify situations where they increase (nervous, uncertain)
|
||||||
|
|
||||||
|
**Active Listening**:
|
||||||
|
- Questions that reference others' previous points
|
||||||
|
- Paraphrasing or summarizing others' ideas
|
||||||
|
- Building on others' contributions
|
||||||
|
- Asking clarifying questions
|
||||||
|
|
||||||
|
**Leadership & Facilitation**:
|
||||||
|
- Decision-making approach (directive vs. collaborative)
|
||||||
|
- How disagreements are handled
|
||||||
|
- Inclusion of quieter participants
|
||||||
|
- Time management and agenda control
|
||||||
|
- Follow-up and action item clarity
|
||||||
|
|
||||||
|
4. **Provide Specific Examples**
|
||||||
|
|
||||||
|
For each pattern found, include:
|
||||||
|
|
||||||
|
```markdown
|
||||||
|
### [Pattern Name]
|
||||||
|
|
||||||
|
**Finding**: [One-sentence summary of the pattern]
|
||||||
|
|
||||||
|
**Frequency**: [X times across Y meetings]
|
||||||
|
|
||||||
|
**Examples**:
|
||||||
|
|
||||||
|
1. **[Meeting Name/Date]** - [Timestamp]
|
||||||
|
|
||||||
|
**What Happened**:
|
||||||
|
> [Actual quote from transcript]
|
||||||
|
|
||||||
|
**Why This Matters**:
|
||||||
|
[Explanation of the impact or missed opportunity]
|
||||||
|
|
||||||
|
**Better Approach**:
|
||||||
|
[Specific alternative phrasing or behavior]
|
||||||
|
|
||||||
|
[Repeat for 2-3 strongest examples]
|
||||||
|
```
|
||||||
|
|
||||||
|
5. **Synthesize Insights**
|
||||||
|
|
||||||
|
After analyzing all patterns, provide:
|
||||||
|
|
||||||
|
```markdown
|
||||||
|
# Meeting Insights Summary
|
||||||
|
|
||||||
|
**Analysis Period**: [Date range]
|
||||||
|
**Meetings Analyzed**: [X meetings]
|
||||||
|
**Total Duration**: [X hours]
|
||||||
|
|
||||||
|
## Key Patterns Identified
|
||||||
|
|
||||||
|
### 1. [Primary Pattern]
|
||||||
|
- **Observed**: [What you saw]
|
||||||
|
- **Impact**: [Why it matters]
|
||||||
|
- **Recommendation**: [How to improve]
|
||||||
|
|
||||||
|
### 2. [Second Pattern]
|
||||||
|
[Same structure]
|
||||||
|
|
||||||
|
## Communication Strengths
|
||||||
|
|
||||||
|
1. [Strength 1 with example]
|
||||||
|
2. [Strength 2 with example]
|
||||||
|
3. [Strength 3 with example]
|
||||||
|
|
||||||
|
## Growth Opportunities
|
||||||
|
|
||||||
|
1. **[Area 1]**: [Specific, actionable advice]
|
||||||
|
2. **[Area 2]**: [Specific, actionable advice]
|
||||||
|
3. **[Area 3]**: [Specific, actionable advice]
|
||||||
|
|
||||||
|
## Speaking Statistics
|
||||||
|
|
||||||
|
- Average speaking time: [X% of meeting]
|
||||||
|
- Questions asked: [X per meeting average]
|
||||||
|
- Filler words: [X per minute]
|
||||||
|
- Interruptions: [X given / Y received per meeting]
|
||||||
|
|
||||||
|
## Next Steps
|
||||||
|
|
||||||
|
[3-5 concrete actions to improve communication]
|
||||||
|
```
|
||||||
|
|
||||||
|
6. **Offer Follow-Up Options**
|
||||||
|
- Track these same metrics in future meetings
|
||||||
|
- Deep dive into specific meetings or patterns
|
||||||
|
- Compare to industry benchmarks
|
||||||
|
- Create a personal communication development plan
|
||||||
|
- Generate a summary for performance reviews
|
||||||
|
|
||||||
|
## Examples
|
||||||
|
|
||||||
|
### Example 1: Conflict Avoidance Analysis (Inspired by Dan Shipper)
|
||||||
|
|
||||||
|
**User**: "I download all of my meeting recordings and put them in a folder. Tell me all the times I've subtly avoided conflict."
|
||||||
|
|
||||||
|
**Output**:
|
||||||
|
```markdown
|
||||||
|
# Conflict Avoidance Patterns
|
||||||
|
|
||||||
|
Found 23 instances across 15 meetings where you used indirect
|
||||||
|
communication or avoided addressing tensions directly.
|
||||||
|
|
||||||
|
## Pattern: Hedging on Critical Feedback
|
||||||
|
|
||||||
|
**Frequency**: 8 times across 7 meetings
|
||||||
|
|
||||||
|
**Example 1: 1:1 with Sarah** - 00:14:32
|
||||||
|
|
||||||
|
**What Happened**:
|
||||||
|
> "So, I was thinking... maybe we could, like, potentially
|
||||||
|
> consider looking at the timeline again? I mean, if you
|
||||||
|
> think that makes sense. But whatever you think is best!"
|
||||||
|
|
||||||
|
**Why This Matters**:
|
||||||
|
You needed to address that Sarah's project was behind schedule,
|
||||||
|
but the hedging language ("maybe", "potentially", "if you think")
|
||||||
|
and the deflection at the end ("whatever you think") made it easy
|
||||||
|
for her to miss the urgency.
|
||||||
|
|
||||||
|
**Better Approach**:
|
||||||
|
"Sarah, the project is two weeks behind schedule. We need to
|
||||||
|
discuss what's blocking progress and create a new timeline
|
||||||
|
today."
|
||||||
|
|
||||||
|
[Additional examples...]
|
||||||
|
|
||||||
|
## Recommendations
|
||||||
|
|
||||||
|
1. **Name the issue directly** in the first sentence
|
||||||
|
2. **Remove hedging words** like "maybe," "kind of," "sort of"
|
||||||
|
3. **Ask specific questions** instead of hinting
|
||||||
|
4. **Schedule difficult conversations** instead of raising them casually
|
||||||
|
```
|
||||||
|
|
||||||
|
### Example 2: Leadership Facilitation
|
||||||
|
|
||||||
|
**User**: "Analyze my team meetings and tell me about my facilitation style."
|
||||||
|
|
||||||
|
**Output**: Provides insights on:
|
||||||
|
- How much you speak vs. team members (60% vs. 40%)
|
||||||
|
- Whether you ask questions or make statements (3:1 ratio)
|
||||||
|
- How you handle disagreements (tendency to resolve too quickly)
|
||||||
|
- Who speaks least and whether you draw them in
|
||||||
|
- Examples of good and missed facilitation moments
|
||||||
|
|
||||||
|
### Example 3: Personal Development Tracking
|
||||||
|
|
||||||
|
**User**: "Compare my meetings from Q1 vs. Q2 to see if I've improved my listening skills."
|
||||||
|
|
||||||
|
**Output**: Creates a comparative analysis showing:
|
||||||
|
- Decrease in interruptions (8 per meeting → 3 per meeting)
|
||||||
|
- Increase in clarifying questions (2 → 7 per meeting)
|
||||||
|
- Improvement in building on others' ideas
|
||||||
|
- Specific examples showing the difference
|
||||||
|
- Remaining areas for growth
|
||||||
|
|
||||||
|
## Setup Tips
|
||||||
|
|
||||||
|
### Getting Meeting Transcripts
|
||||||
|
|
||||||
|
**From Granola** (free with Lenny's newsletter subscription):
|
||||||
|
- Granola auto-transcribes your meetings
|
||||||
|
- Export transcripts to a folder: [Instructions on how]
|
||||||
|
- Point Claude Code to that folder
|
||||||
|
|
||||||
|
**From Zoom**:
|
||||||
|
- Enable cloud recording with transcription
|
||||||
|
- Download VTT or SRT files after meetings
|
||||||
|
- Store in a dedicated folder
|
||||||
|
|
||||||
|
**From Google Meet**:
|
||||||
|
- Use Google Docs auto-transcription
|
||||||
|
- Save transcript docs to a folder
|
||||||
|
- Download as .txt files or give Claude Code access
|
||||||
|
|
||||||
|
**From Fireflies.ai, Otter.ai, etc.**:
|
||||||
|
- Export transcripts in bulk
|
||||||
|
- Store in a local folder
|
||||||
|
- Run analysis on the folder
|
||||||
|
|
||||||
|
### Best Practices
|
||||||
|
|
||||||
|
1. **Consistent naming**: Use `YYYY-MM-DD - Meeting Name.txt` format
|
||||||
|
2. **Regular analysis**: Review monthly or quarterly for trends
|
||||||
|
3. **Specific queries**: Ask about one behavior at a time for depth
|
||||||
|
4. **Privacy**: Keep sensitive meeting data local
|
||||||
|
5. **Action-oriented**: Focus on one improvement area at a time
|
||||||
|
|
||||||
|
## Common Analysis Requests
|
||||||
|
|
||||||
|
- "When do I avoid difficult conversations?"
|
||||||
|
- "How often do I interrupt others?"
|
||||||
|
- "What's my speaking vs. listening ratio?"
|
||||||
|
- "Do I ask good questions?"
|
||||||
|
- "How do I handle disagreement?"
|
||||||
|
- "Am I inclusive of all voices?"
|
||||||
|
- "Do I use too many filler words?"
|
||||||
|
- "How clear are my action items?"
|
||||||
|
- "Do I stay on agenda or get sidetracked?"
|
||||||
|
- "How has my communication changed over time?"
|
||||||
|
|
||||||
|
## Related Use Cases
|
||||||
|
|
||||||
|
- Creating a personal development plan from insights
|
||||||
|
- Preparing performance review materials with examples
|
||||||
|
- Coaching direct reports on their communication
|
||||||
|
- Analyzing customer calls for sales or support patterns
|
||||||
|
- Studying negotiation tactics and outcomes
|
||||||
|
|
||||||
106
skills/video-downloader/SKILL.md
Normal file
106
skills/video-downloader/SKILL.md
Normal file
@@ -0,0 +1,106 @@
|
|||||||
|
---
|
||||||
|
name: video-downloader
|
||||||
|
description: Downloads videos from YouTube and other platforms for offline viewing, editing, or archival. Handles various formats and quality options.
|
||||||
|
---
|
||||||
|
|
||||||
|
# Video Downloader
|
||||||
|
|
||||||
|
This skill downloads videos from YouTube and other platforms directly to your computer.
|
||||||
|
|
||||||
|
## When to Use This Skill
|
||||||
|
|
||||||
|
- Downloading YouTube videos for offline viewing
|
||||||
|
- Saving educational content for reference
|
||||||
|
- Archiving important videos
|
||||||
|
- Getting video files for editing or repurposing
|
||||||
|
- Downloading your own content from platforms
|
||||||
|
- Saving conference talks or webinars
|
||||||
|
|
||||||
|
## What This Skill Does
|
||||||
|
|
||||||
|
1. **Downloads Videos**: Fetches videos from YouTube and other platforms
|
||||||
|
2. **Quality Selection**: Lets you choose resolution (480p, 720p, 1080p, 4K)
|
||||||
|
3. **Format Options**: Downloads in various formats (MP4, WebM, audio-only)
|
||||||
|
4. **Batch Downloads**: Can download multiple videos or playlists
|
||||||
|
5. **Metadata Preservation**: Saves title, description, and thumbnail
|
||||||
|
|
||||||
|
## How to Use
|
||||||
|
|
||||||
|
### Basic Download
|
||||||
|
|
||||||
|
```
|
||||||
|
Download this YouTube video: https://youtube.com/watch?v=...
|
||||||
|
```
|
||||||
|
|
||||||
|
```
|
||||||
|
Download this video in 1080p quality
|
||||||
|
```
|
||||||
|
|
||||||
|
### Audio Only
|
||||||
|
|
||||||
|
```
|
||||||
|
Download the audio from this YouTube video as MP3
|
||||||
|
```
|
||||||
|
|
||||||
|
### Playlist Download
|
||||||
|
|
||||||
|
```
|
||||||
|
Download all videos from this YouTube playlist: [URL]
|
||||||
|
```
|
||||||
|
|
||||||
|
### Batch Download
|
||||||
|
|
||||||
|
```
|
||||||
|
Download these 5 YouTube videos:
|
||||||
|
1. [URL]
|
||||||
|
2. [URL]
|
||||||
|
...
|
||||||
|
```
|
||||||
|
|
||||||
|
## Example
|
||||||
|
|
||||||
|
**User**: "Download this YouTube video: https://youtube.com/watch?v=abc123"
|
||||||
|
|
||||||
|
**Output**:
|
||||||
|
```
|
||||||
|
Downloading from YouTube...
|
||||||
|
|
||||||
|
Video: "How to Build Products Users Love"
|
||||||
|
Channel: Lenny's Podcast
|
||||||
|
Duration: 45:32
|
||||||
|
Quality: 1080p
|
||||||
|
|
||||||
|
Progress: ████████████████████ 100%
|
||||||
|
|
||||||
|
✓ Downloaded: how-to-build-products-users-love.mp4
|
||||||
|
✓ Saved thumbnail: how-to-build-products-users-love.jpg
|
||||||
|
✓ Size: 342 MB
|
||||||
|
|
||||||
|
Saved to: ~/Downloads/
|
||||||
|
```
|
||||||
|
|
||||||
|
**Inspired by:** Lenny's workflow from his newsletter
|
||||||
|
|
||||||
|
## Important Notes
|
||||||
|
|
||||||
|
⚠️ **Copyright & Fair Use**
|
||||||
|
- Only download videos you have permission to download
|
||||||
|
- Respect copyright laws and platform terms of service
|
||||||
|
- Use for personal, educational, or fair use purposes
|
||||||
|
- Don't redistribute copyrighted content
|
||||||
|
|
||||||
|
## Tips
|
||||||
|
|
||||||
|
- Specify quality if you need lower file size (720p vs 1080p)
|
||||||
|
- Use audio-only for podcasts or music to save space
|
||||||
|
- Download to a dedicated folder to stay organized
|
||||||
|
- Check file size before downloading on slow connections
|
||||||
|
|
||||||
|
## Common Use Cases
|
||||||
|
|
||||||
|
- **Education**: Save tutorials and courses for offline learning
|
||||||
|
- **Research**: Archive videos for reference
|
||||||
|
- **Content Creation**: Download your own content from platforms
|
||||||
|
- **Backup**: Save important videos before they're removed
|
||||||
|
- **Offline Viewing**: Watch videos without internet access
|
||||||
|
|
||||||
Reference in New Issue
Block a user