@vantagesec/socc 0.1.11 → 0.1.13
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/.claude/agents/socc.md +47 -107
- package/.claude/references/evidence-rules.md +30 -0
- package/.claude/references/intelligence-source-registry.md +32 -0
- package/.claude/references/ioc-extraction.md +25 -0
- package/.claude/references/knowledge-ingestion-policy.md +34 -0
- package/.claude/references/mitre-guidance.md +21 -0
- package/.claude/references/output-contract.md +31 -0
- package/.claude/references/security-json-patterns.md +129 -0
- package/.claude/references/telemetry-investigation-patterns.md +39 -0
- package/.claude/rules/socc-business-rules.md +328 -0
- package/.claude/skills/code-review-excellence/SKILL.md +538 -0
- package/.claude/skills/cybersecurity-analyst/QUICK_REFERENCE.md +263 -0
- package/.claude/skills/cybersecurity-analyst/README.md +243 -0
- package/.claude/skills/cybersecurity-analyst/SKILL.md +1707 -0
- package/.claude/skills/cybersecurity-analyst/tests/quiz.md +472 -0
- package/.claude/skills/data-visualization/SKILL.md +304 -0
- package/.claude/skills/deep-research/SKILL.md +192 -0
- package/.claude/skills/excel-analysis/SKILL.md +247 -0
- package/.claude/skills/find-skills/SKILL.md +133 -0
- package/.claude/skills/humanizer/README.md +120 -0
- package/.claude/skills/humanizer/SKILL.md +439 -0
- package/.claude/skills/malware-behavior/SKILL.md +54 -0
- package/.claude/skills/mitre/SKILL.md +200 -0
- package/.claude/skills/observability-logs-search/SKILL.md +237 -0
- package/.claude/skills/observability-logs-search/references/log-search-reference.md +76 -0
- package/.claude/skills/payload-triage/SKILL.md +53 -0
- package/.claude/skills/phishing-analysis/SKILL.md +51 -0
- package/.claude/skills/prd/SKILL.md +143 -0
- package/.claude/skills/remembering-conversations/MCP-TOOLS.md +137 -0
- package/.claude/skills/remembering-conversations/SKILL.md +65 -0
- package/.claude/skills/sequential-thinking/README.md +118 -0
- package/.claude/skills/sequential-thinking/SKILL.md +93 -0
- package/.claude/skills/sequential-thinking/references/advanced.md +122 -0
- package/.claude/skills/sequential-thinking/references/examples.md +274 -0
- package/.claude/skills/soc-generalist/SKILL.md +53 -0
- package/.claude/skills/suspicious-url/SKILL.md +51 -0
- package/.claude/skills/systematic-debugging/CREATION-LOG.md +119 -0
- package/.claude/skills/systematic-debugging/SKILL.md +296 -0
- package/.claude/skills/systematic-debugging/condition-based-waiting-example.ts +158 -0
- package/.claude/skills/systematic-debugging/condition-based-waiting.md +115 -0
- package/.claude/skills/systematic-debugging/defense-in-depth.md +122 -0
- package/.claude/skills/systematic-debugging/find-polluter.sh +63 -0
- package/.claude/skills/systematic-debugging/root-cause-tracing.md +169 -0
- package/.claude/skills/systematic-debugging/test-academic.md +14 -0
- package/.claude/skills/systematic-debugging/test-pressure-1.md +58 -0
- package/.claude/skills/systematic-debugging/test-pressure-2.md +68 -0
- package/.claude/skills/systematic-debugging/test-pressure-3.md +69 -0
- package/.claude/skills/translation-expertise/SKILL.md +284 -0
- package/.claude/skills/translation-expertise/chinese-traditional.md +535 -0
- package/.claude/skills/translation-expertise/english.md +372 -0
- package/.claude/skills/translation-expertise/japanese.md +515 -0
- package/.claude/skills/translation-expertise/tools-resources.md +527 -0
- package/.claude/skills/translation-expertise/translation-challenges.md +603 -0
- package/.claude/skills/web-search/SKILL.md +322 -0
- package/dist/cli.mjs +31 -31
- package/package.json +4 -1
- package/scripts/bootstrap-socc-soul.mjs +347 -26
- package/socc-canonical/.agents/generated/socc-agent-manifest.json +218 -3
- package/socc-canonical/.agents/generated/socc-agent.md +47 -107
- package/socc-canonical/.agents/rules/AGENT.md +109 -0
- package/socc-canonical/.agents/rules/AQL_REFERENCE.md +40 -0
- package/socc-canonical/.agents/rules/MEMORY.md +19 -0
- package/socc-canonical/.agents/rules/TOOLS.md +48 -0
- package/socc-canonical/.agents/soc-copilot/AGENTS.md +0 -5
- package/socc-canonical/.agents/soc-copilot/MEMORY.md +0 -6
- package/socc-canonical/.agents/soc-copilot/SKILL.md +10 -14
- package/socc-canonical/.agents/soc-copilot/SOUL.md +1 -18
- package/socc-canonical/.agents/soc-copilot/TOOLS.md +16 -30
- package/socc-canonical/.agents/soc-copilot/USER.md +6 -7
- package/socc-canonical/.agents/soc-copilot/identity.md +3 -9
- package/socc-canonical/.agents/soc-copilot/skills/code-review-excellence/SKILL.md +538 -0
- package/socc-canonical/.agents/soc-copilot/skills/cybersecurity-analyst/QUICK_REFERENCE.md +263 -0
- package/socc-canonical/.agents/soc-copilot/skills/cybersecurity-analyst/README.md +243 -0
- package/socc-canonical/.agents/soc-copilot/skills/cybersecurity-analyst/SKILL.md +1707 -0
- package/socc-canonical/.agents/soc-copilot/skills/cybersecurity-analyst/tests/quiz.md +472 -0
- package/socc-canonical/.agents/soc-copilot/skills/data-visualization/SKILL.md +304 -0
- package/socc-canonical/.agents/soc-copilot/skills/deep-research/SKILL.md +192 -0
- package/socc-canonical/.agents/soc-copilot/skills/excel-analysis/SKILL.md +247 -0
- package/socc-canonical/.agents/soc-copilot/skills/find-skills/SKILL.md +133 -0
- package/socc-canonical/.agents/soc-copilot/skills/humanizer/README.md +120 -0
- package/socc-canonical/.agents/soc-copilot/skills/humanizer/SKILL.md +439 -0
- package/socc-canonical/.agents/soc-copilot/skills/malware-behavior/SKILL.md +54 -0
- package/socc-canonical/.agents/soc-copilot/skills/mitre/SKILL.md +200 -0
- package/socc-canonical/.agents/soc-copilot/skills/observability-logs-search/SKILL.md +237 -0
- package/socc-canonical/.agents/soc-copilot/skills/observability-logs-search/references/log-search-reference.md +76 -0
- package/socc-canonical/.agents/soc-copilot/skills/payload-triage/SKILL.md +53 -0
- package/socc-canonical/.agents/soc-copilot/skills/phishing-analysis/SKILL.md +51 -0
- package/socc-canonical/.agents/soc-copilot/skills/prd/SKILL.md +143 -0
- package/socc-canonical/.agents/soc-copilot/skills/remembering-conversations/MCP-TOOLS.md +137 -0
- package/socc-canonical/.agents/soc-copilot/skills/remembering-conversations/SKILL.md +65 -0
- package/socc-canonical/.agents/soc-copilot/skills/sequential-thinking/README.md +118 -0
- package/socc-canonical/.agents/soc-copilot/skills/sequential-thinking/SKILL.md +93 -0
- package/socc-canonical/.agents/soc-copilot/skills/sequential-thinking/references/advanced.md +122 -0
- package/socc-canonical/.agents/soc-copilot/skills/sequential-thinking/references/examples.md +274 -0
- package/socc-canonical/.agents/soc-copilot/skills/soc-generalist/SKILL.md +53 -0
- package/socc-canonical/.agents/soc-copilot/skills/suspicious-url/SKILL.md +51 -0
- package/socc-canonical/.agents/soc-copilot/skills/systematic-debugging/CREATION-LOG.md +119 -0
- package/socc-canonical/.agents/soc-copilot/skills/systematic-debugging/SKILL.md +296 -0
- package/socc-canonical/.agents/soc-copilot/skills/systematic-debugging/condition-based-waiting-example.ts +158 -0
- package/socc-canonical/.agents/soc-copilot/skills/systematic-debugging/condition-based-waiting.md +115 -0
- package/socc-canonical/.agents/soc-copilot/skills/systematic-debugging/defense-in-depth.md +122 -0
- package/socc-canonical/.agents/soc-copilot/skills/systematic-debugging/find-polluter.sh +63 -0
- package/socc-canonical/.agents/soc-copilot/skills/systematic-debugging/root-cause-tracing.md +169 -0
- package/socc-canonical/.agents/soc-copilot/skills/systematic-debugging/test-academic.md +14 -0
- package/socc-canonical/.agents/soc-copilot/skills/systematic-debugging/test-pressure-1.md +58 -0
- package/socc-canonical/.agents/soc-copilot/skills/systematic-debugging/test-pressure-2.md +68 -0
- package/socc-canonical/.agents/soc-copilot/skills/systematic-debugging/test-pressure-3.md +69 -0
- package/socc-canonical/.agents/soc-copilot/skills/translation-expertise/SKILL.md +284 -0
- package/socc-canonical/.agents/soc-copilot/skills/translation-expertise/chinese-traditional.md +535 -0
- package/socc-canonical/.agents/soc-copilot/skills/translation-expertise/english.md +372 -0
- package/socc-canonical/.agents/soc-copilot/skills/translation-expertise/japanese.md +515 -0
- package/socc-canonical/.agents/soc-copilot/skills/translation-expertise/tools-resources.md +527 -0
- package/socc-canonical/.agents/soc-copilot/skills/translation-expertise/translation-challenges.md +603 -0
- package/socc-canonical/.agents/soc-copilot/skills/web-search/SKILL.md +322 -0
- package/socc-canonical/.agents/soc-copilot/skills.md +11 -18
- package/socc-canonical/.agents/workflows/SOP.md +137 -0
- package/socc-canonical/README.md +2 -0
|
@@ -0,0 +1,304 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: data-visualization
|
|
3
|
+
description: Create effective data visualizations with Python (matplotlib, seaborn, plotly). Use when building charts, choosing the right chart type for a dataset, creating publication-quality figures, or applying design principles like accessibility and color theory.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Data Visualization Skill
|
|
7
|
+
|
|
8
|
+
Chart selection guidance, Python visualization code patterns, design principles, and accessibility considerations for creating effective data visualizations.
|
|
9
|
+
|
|
10
|
+
## Chart Selection Guide
|
|
11
|
+
|
|
12
|
+
### Choose by Data Relationship
|
|
13
|
+
|
|
14
|
+
| What You're Showing | Best Chart | Alternatives |
|
|
15
|
+
|---|---|---|
|
|
16
|
+
| **Trend over time** | Line chart | Area chart (if showing cumulative or composition) |
|
|
17
|
+
| **Comparison across categories** | Vertical bar chart | Horizontal bar (many categories), lollipop chart |
|
|
18
|
+
| **Ranking** | Horizontal bar chart | Dot plot, slope chart (comparing two periods) |
|
|
19
|
+
| **Part-to-whole composition** | Stacked bar chart | Treemap (hierarchical), waffle chart |
|
|
20
|
+
| **Composition over time** | Stacked area chart | 100% stacked bar (for proportion focus) |
|
|
21
|
+
| **Distribution** | Histogram | Box plot (comparing groups), violin plot, strip plot |
|
|
22
|
+
| **Correlation (2 variables)** | Scatter plot | Bubble chart (add 3rd variable as size) |
|
|
23
|
+
| **Correlation (many variables)** | Heatmap (correlation matrix) | Pair plot |
|
|
24
|
+
| **Geographic patterns** | Choropleth map | Bubble map, hex map |
|
|
25
|
+
| **Flow / process** | Sankey diagram | Funnel chart (sequential stages) |
|
|
26
|
+
| **Relationship network** | Network graph | Chord diagram |
|
|
27
|
+
| **Performance vs. target** | Bullet chart | Gauge (single KPI only) |
|
|
28
|
+
| **Multiple KPIs at once** | Small multiples | Dashboard with separate charts |
|
|
29
|
+
|
|
30
|
+
### When NOT to Use Certain Charts
|
|
31
|
+
|
|
32
|
+
- **Pie charts**: Avoid unless <6 categories and exact proportions matter less than rough comparison. Humans are bad at comparing angles. Use bar charts instead.
|
|
33
|
+
- **3D charts**: Never. They distort perception and add no information.
|
|
34
|
+
- **Dual-axis charts**: Use cautiously. They can mislead by implying correlation. Clearly label both axes if used.
|
|
35
|
+
- **Stacked bar (many categories)**: Hard to compare middle segments. Use small multiples or grouped bars instead.
|
|
36
|
+
- **Donut charts**: Slightly better than pie charts but same fundamental issues. Use for single KPI display at most.
|
|
37
|
+
|
|
38
|
+
## Python Visualization Code Patterns
|
|
39
|
+
|
|
40
|
+
### Setup and Style
|
|
41
|
+
|
|
42
|
+
```python
|
|
43
|
+
import matplotlib.pyplot as plt
|
|
44
|
+
import matplotlib.ticker as mticker
|
|
45
|
+
import seaborn as sns
|
|
46
|
+
import pandas as pd
|
|
47
|
+
import numpy as np
|
|
48
|
+
|
|
49
|
+
# Professional style setup
|
|
50
|
+
plt.style.use('seaborn-v0_8-whitegrid')
|
|
51
|
+
plt.rcParams.update({
|
|
52
|
+
'figure.figsize': (10, 6),
|
|
53
|
+
'figure.dpi': 150,
|
|
54
|
+
'font.size': 11,
|
|
55
|
+
'axes.titlesize': 14,
|
|
56
|
+
'axes.titleweight': 'bold',
|
|
57
|
+
'axes.labelsize': 11,
|
|
58
|
+
'xtick.labelsize': 10,
|
|
59
|
+
'ytick.labelsize': 10,
|
|
60
|
+
'legend.fontsize': 10,
|
|
61
|
+
'figure.titlesize': 16,
|
|
62
|
+
})
|
|
63
|
+
|
|
64
|
+
# Colorblind-friendly palettes
|
|
65
|
+
PALETTE_CATEGORICAL = ['#4C72B0', '#DD8452', '#55A868', '#C44E52', '#8172B3', '#937860']
|
|
66
|
+
PALETTE_SEQUENTIAL = 'YlOrRd'
|
|
67
|
+
PALETTE_DIVERGING = 'RdBu_r'
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
### Line Chart (Time Series)
|
|
71
|
+
|
|
72
|
+
```python
|
|
73
|
+
fig, ax = plt.subplots(figsize=(10, 6))
|
|
74
|
+
|
|
75
|
+
for label, group in df.groupby('category'):
|
|
76
|
+
ax.plot(group['date'], group['value'], label=label, linewidth=2)
|
|
77
|
+
|
|
78
|
+
ax.set_title('Metric Trend by Category', fontweight='bold')
|
|
79
|
+
ax.set_xlabel('Date')
|
|
80
|
+
ax.set_ylabel('Value')
|
|
81
|
+
ax.legend(loc='upper left', frameon=True)
|
|
82
|
+
ax.spines['top'].set_visible(False)
|
|
83
|
+
ax.spines['right'].set_visible(False)
|
|
84
|
+
|
|
85
|
+
# Format dates on x-axis
|
|
86
|
+
fig.autofmt_xdate()
|
|
87
|
+
|
|
88
|
+
plt.tight_layout()
|
|
89
|
+
plt.savefig('trend_chart.png', dpi=150, bbox_inches='tight')
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
### Bar Chart (Comparison)
|
|
93
|
+
|
|
94
|
+
```python
|
|
95
|
+
fig, ax = plt.subplots(figsize=(10, 6))
|
|
96
|
+
|
|
97
|
+
# Sort by value for easy reading
|
|
98
|
+
df_sorted = df.sort_values('metric', ascending=True)
|
|
99
|
+
|
|
100
|
+
bars = ax.barh(df_sorted['category'], df_sorted['metric'], color=PALETTE_CATEGORICAL[0])
|
|
101
|
+
|
|
102
|
+
# Add value labels
|
|
103
|
+
for bar in bars:
|
|
104
|
+
width = bar.get_width()
|
|
105
|
+
ax.text(width + 0.5, bar.get_y() + bar.get_height()/2,
|
|
106
|
+
f'{width:,.0f}', ha='left', va='center', fontsize=10)
|
|
107
|
+
|
|
108
|
+
ax.set_title('Metric by Category (Ranked)', fontweight='bold')
|
|
109
|
+
ax.set_xlabel('Metric Value')
|
|
110
|
+
ax.spines['top'].set_visible(False)
|
|
111
|
+
ax.spines['right'].set_visible(False)
|
|
112
|
+
|
|
113
|
+
plt.tight_layout()
|
|
114
|
+
plt.savefig('bar_chart.png', dpi=150, bbox_inches='tight')
|
|
115
|
+
```
|
|
116
|
+
|
|
117
|
+
### Histogram (Distribution)
|
|
118
|
+
|
|
119
|
+
```python
|
|
120
|
+
fig, ax = plt.subplots(figsize=(10, 6))
|
|
121
|
+
|
|
122
|
+
ax.hist(df['value'], bins=30, color=PALETTE_CATEGORICAL[0], edgecolor='white', alpha=0.8)
|
|
123
|
+
|
|
124
|
+
# Add mean and median lines
|
|
125
|
+
mean_val = df['value'].mean()
|
|
126
|
+
median_val = df['value'].median()
|
|
127
|
+
ax.axvline(mean_val, color='red', linestyle='--', linewidth=1.5, label=f'Mean: {mean_val:,.1f}')
|
|
128
|
+
ax.axvline(median_val, color='green', linestyle='--', linewidth=1.5, label=f'Median: {median_val:,.1f}')
|
|
129
|
+
|
|
130
|
+
ax.set_title('Distribution of Values', fontweight='bold')
|
|
131
|
+
ax.set_xlabel('Value')
|
|
132
|
+
ax.set_ylabel('Frequency')
|
|
133
|
+
ax.legend()
|
|
134
|
+
ax.spines['top'].set_visible(False)
|
|
135
|
+
ax.spines['right'].set_visible(False)
|
|
136
|
+
|
|
137
|
+
plt.tight_layout()
|
|
138
|
+
plt.savefig('histogram.png', dpi=150, bbox_inches='tight')
|
|
139
|
+
```
|
|
140
|
+
|
|
141
|
+
### Heatmap
|
|
142
|
+
|
|
143
|
+
```python
|
|
144
|
+
fig, ax = plt.subplots(figsize=(10, 8))
|
|
145
|
+
|
|
146
|
+
# Pivot data for heatmap format
|
|
147
|
+
pivot = df.pivot_table(index='row_dim', columns='col_dim', values='metric', aggfunc='sum')
|
|
148
|
+
|
|
149
|
+
sns.heatmap(pivot, annot=True, fmt=',.0f', cmap='YlOrRd',
|
|
150
|
+
linewidths=0.5, ax=ax, cbar_kws={'label': 'Metric Value'})
|
|
151
|
+
|
|
152
|
+
ax.set_title('Metric by Row Dimension and Column Dimension', fontweight='bold')
|
|
153
|
+
ax.set_xlabel('Column Dimension')
|
|
154
|
+
ax.set_ylabel('Row Dimension')
|
|
155
|
+
|
|
156
|
+
plt.tight_layout()
|
|
157
|
+
plt.savefig('heatmap.png', dpi=150, bbox_inches='tight')
|
|
158
|
+
```
|
|
159
|
+
|
|
160
|
+
### Small Multiples
|
|
161
|
+
|
|
162
|
+
```python
|
|
163
|
+
categories = df['category'].unique()
|
|
164
|
+
n_cats = len(categories)
|
|
165
|
+
n_cols = min(3, n_cats)
|
|
166
|
+
n_rows = (n_cats + n_cols - 1) // n_cols
|
|
167
|
+
|
|
168
|
+
fig, axes = plt.subplots(n_rows, n_cols, figsize=(5*n_cols, 4*n_rows), sharex=True, sharey=True)
|
|
169
|
+
axes = axes.flatten() if n_cats > 1 else [axes]
|
|
170
|
+
|
|
171
|
+
for i, cat in enumerate(categories):
|
|
172
|
+
ax = axes[i]
|
|
173
|
+
subset = df[df['category'] == cat]
|
|
174
|
+
ax.plot(subset['date'], subset['value'], color=PALETTE_CATEGORICAL[i % len(PALETTE_CATEGORICAL)])
|
|
175
|
+
ax.set_title(cat, fontsize=12)
|
|
176
|
+
ax.spines['top'].set_visible(False)
|
|
177
|
+
ax.spines['right'].set_visible(False)
|
|
178
|
+
|
|
179
|
+
# Hide empty subplots
|
|
180
|
+
for j in range(i+1, len(axes)):
|
|
181
|
+
axes[j].set_visible(False)
|
|
182
|
+
|
|
183
|
+
fig.suptitle('Trends by Category', fontsize=14, fontweight='bold', y=1.02)
|
|
184
|
+
plt.tight_layout()
|
|
185
|
+
plt.savefig('small_multiples.png', dpi=150, bbox_inches='tight')
|
|
186
|
+
```
|
|
187
|
+
|
|
188
|
+
### Number Formatting Helpers
|
|
189
|
+
|
|
190
|
+
```python
|
|
191
|
+
def format_number(val, format_type='number'):
|
|
192
|
+
"""Format numbers for chart labels."""
|
|
193
|
+
if format_type == 'currency':
|
|
194
|
+
if abs(val) >= 1e9:
|
|
195
|
+
return f'${val/1e9:.1f}B'
|
|
196
|
+
elif abs(val) >= 1e6:
|
|
197
|
+
return f'${val/1e6:.1f}M'
|
|
198
|
+
elif abs(val) >= 1e3:
|
|
199
|
+
return f'${val/1e3:.1f}K'
|
|
200
|
+
else:
|
|
201
|
+
return f'${val:,.0f}'
|
|
202
|
+
elif format_type == 'percent':
|
|
203
|
+
return f'{val:.1f}%'
|
|
204
|
+
elif format_type == 'number':
|
|
205
|
+
if abs(val) >= 1e9:
|
|
206
|
+
return f'{val/1e9:.1f}B'
|
|
207
|
+
elif abs(val) >= 1e6:
|
|
208
|
+
return f'{val/1e6:.1f}M'
|
|
209
|
+
elif abs(val) >= 1e3:
|
|
210
|
+
return f'{val/1e3:.1f}K'
|
|
211
|
+
else:
|
|
212
|
+
return f'{val:,.0f}'
|
|
213
|
+
return str(val)
|
|
214
|
+
|
|
215
|
+
# Usage with axis formatter
|
|
216
|
+
ax.yaxis.set_major_formatter(mticker.FuncFormatter(lambda x, p: format_number(x, 'currency')))
|
|
217
|
+
```
|
|
218
|
+
|
|
219
|
+
### Interactive Charts with Plotly
|
|
220
|
+
|
|
221
|
+
```python
|
|
222
|
+
import plotly.express as px
|
|
223
|
+
import plotly.graph_objects as go
|
|
224
|
+
|
|
225
|
+
# Simple interactive line chart
|
|
226
|
+
fig = px.line(df, x='date', y='value', color='category',
|
|
227
|
+
title='Interactive Metric Trend',
|
|
228
|
+
labels={'value': 'Metric Value', 'date': 'Date'})
|
|
229
|
+
fig.update_layout(hovermode='x unified')
|
|
230
|
+
fig.write_html('interactive_chart.html')
|
|
231
|
+
fig.show()
|
|
232
|
+
|
|
233
|
+
# Interactive scatter with hover data
|
|
234
|
+
fig = px.scatter(df, x='metric_a', y='metric_b', color='category',
|
|
235
|
+
size='size_metric', hover_data=['name', 'detail_field'],
|
|
236
|
+
title='Correlation Analysis')
|
|
237
|
+
fig.show()
|
|
238
|
+
```
|
|
239
|
+
|
|
240
|
+
## Design Principles
|
|
241
|
+
|
|
242
|
+
### Color
|
|
243
|
+
|
|
244
|
+
- **Use color purposefully**: Color should encode data, not decorate
|
|
245
|
+
- **Highlight the story**: Use a bright accent color for the key insight; grey everything else
|
|
246
|
+
- **Sequential data**: Use a single-hue gradient (light to dark) for ordered values
|
|
247
|
+
- **Diverging data**: Use a two-hue gradient with neutral midpoint for data with a meaningful center
|
|
248
|
+
- **Categorical data**: Use distinct hues, maximum 6-8 before it gets confusing
|
|
249
|
+
- **Avoid red/green only**: 8% of men are red-green colorblind. Use blue/orange as primary pair
|
|
250
|
+
|
|
251
|
+
### Typography
|
|
252
|
+
|
|
253
|
+
- **Title states the insight**: "Revenue grew 23% YoY" beats "Revenue by Month"
|
|
254
|
+
- **Subtitle adds context**: Date range, filters applied, data source
|
|
255
|
+
- **Axis labels are readable**: Never rotated 90 degrees if avoidable. Shorten or wrap instead
|
|
256
|
+
- **Data labels add precision**: Use on key points, not every single bar
|
|
257
|
+
- **Annotation highlights**: Call out specific points with text annotations
|
|
258
|
+
|
|
259
|
+
### Layout
|
|
260
|
+
|
|
261
|
+
- **Reduce chart junk**: Remove gridlines, borders, backgrounds that don't carry information
|
|
262
|
+
- **Sort meaningfully**: Categories sorted by value (not alphabetically) unless there's a natural order (months, stages)
|
|
263
|
+
- **Appropriate aspect ratio**: Time series wider than tall (3:1 to 2:1); comparisons can be squarer
|
|
264
|
+
- **White space is good**: Don't cram charts together. Give each visualization room to breathe
|
|
265
|
+
|
|
266
|
+
### Accuracy
|
|
267
|
+
|
|
268
|
+
- **Bar charts start at zero**: Always. A bar from 95 to 100 exaggerates a 5% difference
|
|
269
|
+
- **Line charts can have non-zero baselines**: When the range of variation is meaningful
|
|
270
|
+
- **Consistent scales across panels**: When comparing multiple charts, use the same axis range
|
|
271
|
+
- **Show uncertainty**: Error bars, confidence intervals, or ranges when data is uncertain
|
|
272
|
+
- **Label your axes**: Never make the reader guess what the numbers mean
|
|
273
|
+
|
|
274
|
+
## Accessibility Considerations
|
|
275
|
+
|
|
276
|
+
### Color Blindness
|
|
277
|
+
|
|
278
|
+
- Never rely on color alone to distinguish data series
|
|
279
|
+
- Add pattern fills, different line styles (solid, dashed, dotted), or direct labels
|
|
280
|
+
- Test with a colorblind simulator (e.g., Coblis, Sim Daltonism)
|
|
281
|
+
- Use the colorblind-friendly palette: `sns.color_palette("colorblind")`
|
|
282
|
+
|
|
283
|
+
### Screen Readers
|
|
284
|
+
|
|
285
|
+
- Include alt text describing the chart's key finding
|
|
286
|
+
- Provide a data table alternative alongside the visualization
|
|
287
|
+
- Use semantic titles and labels
|
|
288
|
+
|
|
289
|
+
### General Accessibility
|
|
290
|
+
|
|
291
|
+
- Sufficient contrast between data elements and background
|
|
292
|
+
- Text size minimum 10pt for labels, 12pt for titles
|
|
293
|
+
- Avoid conveying information only through spatial position (add labels)
|
|
294
|
+
- Consider printing: does the chart work in black and white?
|
|
295
|
+
|
|
296
|
+
### Accessibility Checklist
|
|
297
|
+
|
|
298
|
+
Before sharing a visualization:
|
|
299
|
+
- [ ] Chart works without color (patterns, labels, or line styles differentiate series)
|
|
300
|
+
- [ ] Text is readable at standard zoom level
|
|
301
|
+
- [ ] Title describes the insight, not just the data
|
|
302
|
+
- [ ] Axes are labeled with units
|
|
303
|
+
- [ ] Legend is clear and positioned without obscuring data
|
|
304
|
+
- [ ] Data source and date range are noted
|
|
@@ -0,0 +1,192 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: deep-research
|
|
3
|
+
description: |
|
|
4
|
+
Comprehensive research assistant that synthesizes information from multiple sources with citations.
|
|
5
|
+
Use when: conducting in-depth research, gathering sources, writing research summaries, analyzing topics
|
|
6
|
+
from multiple perspectives, or when user mentions research, investigation, or needs synthesized analysis
|
|
7
|
+
with citations.
|
|
8
|
+
license: MIT
|
|
9
|
+
metadata:
|
|
10
|
+
author: awesome-llm-apps
|
|
11
|
+
version: "1.0.0"
|
|
12
|
+
---
|
|
13
|
+
|
|
14
|
+
# Deep Research
|
|
15
|
+
|
|
16
|
+
You are an expert researcher who provides thorough, well-cited analysis by synthesizing information from multiple perspectives.
|
|
17
|
+
|
|
18
|
+
## When to Apply
|
|
19
|
+
|
|
20
|
+
Use this skill when:
|
|
21
|
+
- Conducting in-depth research on a topic
|
|
22
|
+
- Synthesizing information from multiple sources
|
|
23
|
+
- Creating research summaries with proper citations
|
|
24
|
+
- Analyzing different viewpoints and perspectives
|
|
25
|
+
- Identifying key findings and trends
|
|
26
|
+
- Evaluating the quality and credibility of sources
|
|
27
|
+
|
|
28
|
+
## Research Process
|
|
29
|
+
|
|
30
|
+
Follow this systematic approach:
|
|
31
|
+
|
|
32
|
+
### 1. **Clarify the Research Question**
|
|
33
|
+
- What exactly needs to be researched?
|
|
34
|
+
- What level of detail is required?
|
|
35
|
+
- Are there specific angles to prioritize?
|
|
36
|
+
- What is the purpose of the research?
|
|
37
|
+
|
|
38
|
+
### 2. **Identify Key Aspects**
|
|
39
|
+
- Break the topic into subtopics or dimensions
|
|
40
|
+
- List main questions to answer
|
|
41
|
+
- Note important context or background needed
|
|
42
|
+
|
|
43
|
+
### 3. **Gather Information**
|
|
44
|
+
- Consider multiple perspectives
|
|
45
|
+
- Look for primary and secondary sources
|
|
46
|
+
- Check publication dates and currency
|
|
47
|
+
- Evaluate source credibility
|
|
48
|
+
|
|
49
|
+
### 4. **Synthesize Findings**
|
|
50
|
+
- Identify patterns and themes
|
|
51
|
+
- Note areas of consensus and disagreement
|
|
52
|
+
- Highlight key insights
|
|
53
|
+
- Connect related information
|
|
54
|
+
|
|
55
|
+
### 5. **Document Sources**
|
|
56
|
+
- Use numbered citations [1], [2], etc.
|
|
57
|
+
- List full sources at the end
|
|
58
|
+
- Note if information is uncertain or contested
|
|
59
|
+
- Indicate confidence levels where appropriate
|
|
60
|
+
|
|
61
|
+
## Output Format
|
|
62
|
+
|
|
63
|
+
Structure your research as:
|
|
64
|
+
|
|
65
|
+
```markdown
|
|
66
|
+
## Executive Summary
|
|
67
|
+
[2-3 sentence overview of key findings]
|
|
68
|
+
|
|
69
|
+
## Key Findings
|
|
70
|
+
- **[Finding 1]**: [Brief explanation] [1]
|
|
71
|
+
- **[Finding 2]**: [Brief explanation] [2]
|
|
72
|
+
- **[Finding 3]**: [Brief explanation] [3]
|
|
73
|
+
|
|
74
|
+
## Detailed Analysis
|
|
75
|
+
|
|
76
|
+
### [Subtopic 1]
|
|
77
|
+
[In-depth analysis with citations]
|
|
78
|
+
|
|
79
|
+
### [Subtopic 2]
|
|
80
|
+
[In-depth analysis with citations]
|
|
81
|
+
|
|
82
|
+
## Areas of Consensus
|
|
83
|
+
[What sources agree on]
|
|
84
|
+
|
|
85
|
+
## Areas of Debate
|
|
86
|
+
[Where sources disagree or uncertainty exists]
|
|
87
|
+
|
|
88
|
+
## Sources
|
|
89
|
+
[1] [Full citation with credibility note]
|
|
90
|
+
[2] [Full citation with credibility note]
|
|
91
|
+
|
|
92
|
+
## Gaps and Further Research
|
|
93
|
+
[What's still unknown or needs investigation]
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
## Source Evaluation Criteria
|
|
97
|
+
|
|
98
|
+
When citing sources, note:
|
|
99
|
+
|
|
100
|
+
- **Peer-reviewed journals** - Highest credibility
|
|
101
|
+
- **Official reports/statistics** - Authoritative data
|
|
102
|
+
- **News from reputable outlets** - Timely, fact-checked
|
|
103
|
+
- **Expert commentary** - Qualified opinions
|
|
104
|
+
- **General websites** - verify independently
|
|
105
|
+
|
|
106
|
+
## Example
|
|
107
|
+
|
|
108
|
+
**User Request:** "Research the benefits and risks of intermittent fasting"
|
|
109
|
+
|
|
110
|
+
**Response:**
|
|
111
|
+
|
|
112
|
+
## Executive Summary
|
|
113
|
+
|
|
114
|
+
Intermittent fasting (IF) shows promising benefits for weight loss and metabolic health based on current research, though long-term effects remain under study. Evidence supports its safety for most healthy adults, with certain populations requiring medical supervision [1][2].
|
|
115
|
+
|
|
116
|
+
## Key Findings
|
|
117
|
+
|
|
118
|
+
- **Weight Loss**: IF produces similar weight loss to calorie restriction (5-8% body weight over 12 weeks), with potentially better adherence [1]
|
|
119
|
+
- **Metabolic Health**: May improve insulin sensitivity by 20-31% and reduce inflammation markers [2]
|
|
120
|
+
- **Longevity**: Animal studies show promise; human long-term data is limited [3]
|
|
121
|
+
- **Safety**: Not recommended for pregnant women, diabetics without supervision, or those with eating disorder history [4]
|
|
122
|
+
|
|
123
|
+
## Detailed Analysis
|
|
124
|
+
|
|
125
|
+
### Weight Management
|
|
126
|
+
Studies comparing IF to traditional calorie restriction show similar weight loss outcomes. The main advantage appears to be adherence - many people find time-restricted eating easier to maintain than calorie counting [1]. Typical results show 5-8% body weight loss over 12-16 weeks.
|
|
127
|
+
|
|
128
|
+
Common IF protocols:
|
|
129
|
+
- **16:8** - 16 hours fasting, 8-hour eating window
|
|
130
|
+
- **5:2** - Normal eating 5 days, restricted calories 2 days
|
|
131
|
+
- **Alternate day** - Alternating between fasting and eating days
|
|
132
|
+
|
|
133
|
+
### Metabolic Effects
|
|
134
|
+
Research indicates improvements in several biomarkers [2]:
|
|
135
|
+
- Fasting insulin levels decreased 20-31%
|
|
136
|
+
- Blood pressure reductions (3-8 mmHg systolic)
|
|
137
|
+
- Inflammatory marker (CRP) reductions
|
|
138
|
+
- Improved lipid profiles in some studies
|
|
139
|
+
|
|
140
|
+
However, individual responses vary significantly. Some people show dramatic improvements while others see minimal changes.
|
|
141
|
+
|
|
142
|
+
### Potential Mechanisms
|
|
143
|
+
Several explanations for observed benefits:
|
|
144
|
+
1. **Caloric restriction** - IF naturally reduces total calories
|
|
145
|
+
2. **Circadian alignment** - Eating during daytime hours aligns with metabolism
|
|
146
|
+
3. **Autophagy** - Cellular cleanup processes activated during fasting
|
|
147
|
+
4. **Hormetic stress** - Mild stress that improves adaptation
|
|
148
|
+
|
|
149
|
+
### Safety Considerations
|
|
150
|
+
While generally safe for healthy adults, certain groups should avoid IF or proceed with medical supervision [4]:
|
|
151
|
+
- Pregnant or breastfeeding women
|
|
152
|
+
- People with diabetes (risk of hypoglycemia)
|
|
153
|
+
- History of eating disorders
|
|
154
|
+
- Children and adolescents
|
|
155
|
+
- Those taking medications requiring food
|
|
156
|
+
|
|
157
|
+
Common side effects during adaptation (1-2 weeks):
|
|
158
|
+
- Hunger and irritability
|
|
159
|
+
- Headaches
|
|
160
|
+
- Fatigue
|
|
161
|
+
- Difficulty concentrating
|
|
162
|
+
|
|
163
|
+
## Areas of Consensus
|
|
164
|
+
|
|
165
|
+
- IF is as effective as traditional diets for weight loss
|
|
166
|
+
- Short-term safety is established for healthy adults
|
|
167
|
+
- Individual results vary considerably
|
|
168
|
+
- Not a magic solution - overall diet quality matters
|
|
169
|
+
|
|
170
|
+
## Areas of Debate
|
|
171
|
+
|
|
172
|
+
- **Optimal fasting window**: Research shows benefits across different protocols
|
|
173
|
+
- **Long-term sustainability**: Most studies are 8-24 weeks; need multi-year data
|
|
174
|
+
- **Superiority to other diets**: Unclear if benefits exceed other healthy eating patterns
|
|
175
|
+
- **Muscle preservation**: Some concern about muscle loss, but studies show mixed results
|
|
176
|
+
|
|
177
|
+
## Sources
|
|
178
|
+
|
|
179
|
+
[1] Varady KA, et al. "Clinical application of intermittent fasting for weight loss." *Nature Reviews Endocrinology*, 2022. (Systematic review, high credibility)
|
|
180
|
+
|
|
181
|
+
[2] de Cabo R, Mattson MP. "Effects of Intermittent Fasting on Health, Aging, and Disease." *New England Journal of Medicine*, 2019. (Peer-reviewed, authoritative review)
|
|
182
|
+
|
|
183
|
+
[3] Longo VD, Panda S. "Fasting, Circadian Rhythms, and Time-Restricted Feeding in Healthy Lifespan." *Cell Metabolism*, 2016. (Mechanistic research, preliminary human data)
|
|
184
|
+
|
|
185
|
+
[4] Academy of Nutrition and Dietetics. "Position on Intermittent Fasting." 2022. (Professional organization guidelines)
|
|
186
|
+
|
|
187
|
+
## Gaps and Further Research
|
|
188
|
+
|
|
189
|
+
- **Long-term studies** (5+ years) needed for sustained effects
|
|
190
|
+
- **Different populations** - effects across ages, sexes, ethnicities
|
|
191
|
+
- **Optimization** - best fasting windows, meal timing, macronutrient composition
|
|
192
|
+
- **Clinical applications** - specific diseases or conditions that benefit most
|