[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill-anthropic-validate-data":3,"mdc--zezmmc-key":37,"related-repo-anthropic-validate-data":2317,"related-org-anthropic-validate-data":2429},{"slug":4,"name":4,"fn":5,"description":6,"org":7,"tags":12,"stars":26,"repoUrl":27,"updatedAt":28,"license":29,"forks":30,"topics":31,"repo":32,"sourceUrl":35,"mdContent":36},"validate-data","QA analyses for methodology and accuracy","QA an analysis before sharing -- methodology, accuracy, and bias checks. Use when reviewing an analysis before a stakeholder presentation, spot-checking calculations and aggregation logic, verifying a SQL query's results look right, or assessing whether conclusions are actually supported by the data.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},"anthropic","Anthropic","https:\u002F\u002Fpexgzepcugksgbtrxkhf.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Forg-logos\u002Fanthropic.png","anthropics",[13,17,20,23],{"name":14,"slug":15,"type":16},"Research","research","tag",{"name":18,"slug":19,"type":16},"Data Quality","data-quality",{"name":21,"slug":22,"type":16},"Data Analysis","data-analysis",{"name":24,"slug":25,"type":16},"Analytics","analytics",22885,"https:\u002F\u002Fgithub.com\u002Fanthropics\u002Fknowledge-work-plugins","2026-04-06T17:57:16.56574",null,2736,[],{"repoUrl":27,"stars":26,"forks":30,"topics":33,"description":34},[],"Open source repository of plugins primarily intended for knowledge workers to use in Claude Cowork","https:\u002F\u002Fgithub.com\u002Fanthropics\u002Fknowledge-work-plugins\u002Ftree\u002FHEAD\u002Fdata\u002Fskills\u002Fvalidate-data","---\nname: validate-data\ndescription: QA an analysis before sharing -- methodology, accuracy, and bias checks. Use when reviewing an analysis before a stakeholder presentation, spot-checking calculations and aggregation logic, verifying a SQL query's results look right, or assessing whether conclusions are actually supported by the data.\nargument-hint: \"\u003Canalysis to review>\"\n---\n\n# \u002Fvalidate-data - Validate Analysis Before Sharing\n\n> If you see unfamiliar placeholders or need to check which tools are connected, see [CONNECTORS.md](..\u002F..\u002FCONNECTORS.md).\n\nReview an analysis for accuracy, methodology, and potential biases before sharing with stakeholders. Generates a confidence assessment and improvement suggestions.\n\n## Usage\n\n```\n\u002Fvalidate-data \u003Canalysis to review>\n```\n\nThe analysis can be:\n- A document or report in the conversation\n- A file (markdown, notebook, spreadsheet)\n- SQL queries and their results\n- Charts and their underlying data\n- A description of methodology and findings\n\n## Workflow\n\n### 1. Review Methodology and Assumptions\n\nExamine:\n\n- **Question framing**: Is the analysis answering the right question? Could the question be interpreted differently?\n- **Data selection**: Are the right tables\u002Fdatasets being used? Is the time range appropriate?\n- **Population definition**: Is the analysis population correctly defined? Are there unintended exclusions?\n- **Metric definitions**: Are metrics defined clearly and consistently? Do they match how stakeholders understand them?\n- **Baseline and comparison**: Is the comparison fair? Are time periods, cohort sizes, and contexts comparable?\n\n### 2. Run the Pre-Delivery QA Checklist\n\nWork through the checklist below — data quality, calculation, reasonableness, and presentation checks.\n\n### 3. Check for Common Analytical Pitfalls\n\nSystematically review against the detailed pitfall catalog below (join explosion, survivorship bias, incomplete period comparison, denominator shifting, average of averages, timezone mismatches, selection bias).\n\n### 4. Verify Calculations and Aggregations\n\nWhere possible, spot-check:\n\n- Recalculate a few key numbers independently\n- Verify that subtotals sum to totals\n- Check that percentages sum to 100% (or close to it) where expected\n- Confirm that YoY\u002FMoM comparisons use the correct base periods\n- Validate that filters are applied consistently across all metrics\n\nApply the result sanity-checking techniques below (magnitude checks, cross-validation, red-flag detection).\n\n### 5. Assess Visualizations\n\nIf the analysis includes charts:\n\n- Do axes start at appropriate values (zero for bar charts)?\n- Are scales consistent across comparison charts?\n- Do chart titles accurately describe what's shown?\n- Could the visualization mislead a quick reader?\n- Are there truncated axes, inconsistent intervals, or 3D effects that distort perception?\n\n### 6. Evaluate Narrative and Conclusions\n\nReview whether:\n\n- Conclusions are supported by the data shown\n- Alternative explanations are acknowledged\n- Uncertainty is communicated appropriately\n- Recommendations follow logically from findings\n- The level of confidence matches the strength of evidence\n\n### 7. Suggest Improvements\n\nProvide specific, actionable suggestions:\n\n- Additional analyses that would strengthen the conclusions\n- Caveats or limitations that should be noted\n- Better visualizations or framings for key points\n- Missing context that stakeholders would want\n\n### 8. Generate Confidence Assessment\n\nRate the analysis on a 3-level scale:\n\n**Ready to share** -- Analysis is methodologically sound, calculations verified, caveats noted. Minor suggestions for improvement but nothing blocking.\n\n**Share with noted caveats** -- Analysis is largely correct but has specific limitations or assumptions that must be communicated to stakeholders. List the required caveats.\n\n**Needs revision** -- Found specific errors, methodological issues, or missing analyses that should be addressed before sharing. List the required changes with priority order.\n\n## Output Format\n\n```\n## Validation Report\n\n### Overall Assessment: [Ready to share | Share with caveats | Needs revision]\n\n### Methodology Review\n[Findings about approach, data selection, definitions]\n\n### Issues Found\n1. [Severity: High\u002FMedium\u002FLow] [Issue description and impact]\n2. ...\n\n### Calculation Spot-Checks\n- [Metric]: [Verified \u002F Discrepancy found]\n- ...\n\n### Visualization Review\n[Any issues with charts or visual presentation]\n\n### Suggested Improvements\n1. [Improvement and why it matters]\n2. ...\n\n### Required Caveats for Stakeholders\n- [Caveat that must be communicated]\n- ...\n```\n\n---\n\n## Pre-Delivery QA Checklist\n\nRun through this checklist before sharing any analysis with stakeholders.\n\n### Data Quality Checks\n\n- [ ] **Source verification**: Confirmed which tables\u002Fdata sources were used. Are they the right ones for this question?\n- [ ] **Freshness**: Data is current enough for the analysis. Noted the \"as of\" date.\n- [ ] **Completeness**: No unexpected gaps in time series or missing segments.\n- [ ] **Null handling**: Checked null rates in key columns. Nulls are handled appropriately (excluded, imputed, or flagged).\n- [ ] **Deduplication**: Confirmed no double-counting from bad joins or duplicate source records.\n- [ ] **Filter verification**: All WHERE clauses and filters are correct. No unintended exclusions.\n\n### Calculation Checks\n\n- [ ] **Aggregation logic**: GROUP BY includes all non-aggregated columns. Aggregation level matches the analysis grain.\n- [ ] **Denominator correctness**: Rate and percentage calculations use the right denominator. Denominators are non-zero.\n- [ ] **Date alignment**: Comparisons use the same time period length. Partial periods are excluded or noted.\n- [ ] **Join correctness**: JOIN types are appropriate (INNER vs LEFT). Many-to-many joins haven't inflated counts.\n- [ ] **Metric definitions**: Metrics match how stakeholders define them. Any deviations are noted.\n- [ ] **Subtotals sum**: Parts add up to the whole where expected. If they don't, explain why (e.g., overlap).\n\n### Reasonableness Checks\n\n- [ ] **Magnitude**: Numbers are in a plausible range. Revenue isn't negative. Percentages are between 0-100%.\n- [ ] **Trend continuity**: No unexplained jumps or drops in time series.\n- [ ] **Cross-reference**: Key numbers match other known sources (dashboards, previous reports, finance data).\n- [ ] **Order of magnitude**: Total revenue is in the right ballpark. User counts match known figures.\n- [ ] **Edge cases**: What happens at the boundaries? Empty segments, zero-activity periods, new entities.\n\n### Presentation Checks\n\n- [ ] **Chart accuracy**: Bar charts start at zero. Axes are labeled. Scales are consistent across panels.\n- [ ] **Number formatting**: Appropriate precision. Consistent currency\u002Fpercentage formatting. Thousands separators where needed.\n- [ ] **Title clarity**: Titles state the insight, not just the metric. Date ranges are specified.\n- [ ] **Caveat transparency**: Known limitations and assumptions are stated explicitly.\n- [ ] **Reproducibility**: Someone else could recreate this analysis from the documentation provided.\n\n## Common Data Analysis Pitfalls\n\n### Join Explosion\n\n**The problem**: A many-to-many join silently multiplies rows, inflating counts and sums.\n\n**How to detect**:\n```sql\n-- Check row count before and after join\nSELECT COUNT(*) FROM table_a;  -- 1,000\nSELECT COUNT(*) FROM table_a a JOIN table_b b ON a.id = b.a_id;  -- 3,500 (uh oh)\n```\n\n**How to prevent**:\n- Always check row counts after joins\n- If counts increase, investigate the join relationship (is it really 1:1 or 1:many?)\n- Use `COUNT(DISTINCT a.id)` instead of `COUNT(*)` when counting entities through joins\n\n### Survivorship Bias\n\n**The problem**: Analyzing only entities that exist today, ignoring those that were deleted, churned, or failed.\n\n**Examples**:\n- Analyzing user behavior of \"current users\" misses churned users\n- Looking at \"companies using our product\" ignores those who evaluated and left\n- Studying properties of \"successful\" outcomes without \"unsuccessful\" ones\n\n**How to prevent**: Ask \"who is NOT in this dataset?\" before drawing conclusions.\n\n### Incomplete Period Comparison\n\n**The problem**: Comparing a partial period to a full period.\n\n**Examples**:\n- \"January revenue is $500K vs. December's $800K\" -- but January isn't over yet\n- \"This week's signups are down\" -- checked on Wednesday, comparing to a full prior week\n\n**How to prevent**: Always filter to complete periods, or compare same-day-of-month \u002F same-number-of-days.\n\n### Denominator Shifting\n\n**The problem**: The denominator changes between periods, making rates incomparable.\n\n**Examples**:\n- Conversion rate improves because you changed how you count \"eligible\" users\n- Churn rate changes because the definition of \"active\" was updated\n\n**How to prevent**: Use consistent definitions across all compared periods. Note any definition changes.\n\n### Average of Averages\n\n**The problem**: Averaging pre-computed averages gives wrong results when group sizes differ.\n\n**Example**:\n- Group A: 100 users, average revenue $50\n- Group B: 10 users, average revenue $200\n- Wrong: Average of averages = ($50 + $200) \u002F 2 = $125\n- Right: Weighted average = (100*$50 + 10*$200) \u002F 110 = $63.64\n\n**How to prevent**: Always aggregate from raw data. Never average pre-aggregated averages.\n\n### Timezone Mismatches\n\n**The problem**: Different data sources use different timezones, causing misalignment.\n\n**Examples**:\n- Event timestamps in UTC vs. user-facing dates in local time\n- Daily rollups that use different cutoff times\n\n**How to prevent**: Standardize all timestamps to a single timezone (UTC recommended) before analysis. Document the timezone used.\n\n### Selection Bias in Segmentation\n\n**The problem**: Segments are defined by the outcome you're measuring, creating circular logic.\n\n**Examples**:\n- \"Users who completed onboarding have higher retention\" -- obviously, they self-selected\n- \"Power users generate more revenue\" -- they became power users BY generating revenue\n\n**How to prevent**: Define segments based on pre-treatment characteristics, not outcomes.\n\n### Other Statistical Traps\n\n- **Simpson's paradox**: Trend reverses when data is aggregated vs. segmented\n- **Correlation presented as causation** without supporting evidence\n- **Small sample sizes** leading to unreliable conclusions\n- **Outliers disproportionately affecting averages** (should medians be used instead?)\n- **Multiple testing \u002F cherry-picking** significant results\n- **Look-ahead bias**: Using future information to explain past events\n- **Cherry-picked time ranges** that favor a particular narrative\n\n## Result Sanity Checking\n\n### Magnitude Checks\n\nFor any key number in your analysis, verify it passes the \"smell test\":\n\n| Metric Type | Sanity Check |\n|---|---|\n| User counts | Does this match known MAU\u002FDAU figures? |\n| Revenue | Is this in the right order of magnitude vs. known ARR? |\n| Conversion rates | Is this between 0% and 100%? Does it match dashboard figures? |\n| Growth rates | Is 50%+ MoM growth realistic, or is there a data issue? |\n| Averages | Is the average reasonable given what you know about the distribution? |\n| Percentages | Do segment percentages sum to ~100%? |\n\n### Cross-Validation Techniques\n\n1. **Calculate the same metric two different ways** and verify they match\n2. **Spot-check individual records** -- pick a few specific entities and trace their data manually\n3. **Compare to known benchmarks** -- match against published dashboards, finance reports, or prior analyses\n4. **Reverse engineer** -- if total revenue is X, does per-user revenue times user count approximately equal X?\n5. **Boundary checks** -- what happens when you filter to a single day, a single user, or a single category? Are those micro-results sensible?\n\n### Red Flags That Warrant Investigation\n\n- Any metric that changed by more than 50% period-over-period without an obvious cause\n- Counts or sums that are exact round numbers (suggests a filter or default value issue)\n- Rates exactly at 0% or 100% (may indicate incomplete data)\n- Results that perfectly confirm the hypothesis (reality is usually messier)\n- Identical values across time periods or segments (suggests the query is ignoring a dimension)\n\n## Documentation Standards for Reproducibility\n\n### Analysis Documentation Template\n\nEvery non-trivial analysis should include:\n\n```markdown\n## Analysis: [Title]\n\n### Question\n[The specific question being answered]\n\n### Data Sources\n- Table: [schema.table_name] (as of [date])\n- Table: [schema.other_table] (as of [date])\n- File: [filename] (source: [where it came from])\n\n### Definitions\n- [Metric A]: [Exactly how it's calculated]\n- [Segment X]: [Exactly how membership is determined]\n- [Time period]: [Start date] to [end date], [timezone]\n\n### Methodology\n1. [Step 1 of the analysis approach]\n2. [Step 2]\n3. [Step 3]\n\n### Assumptions and Limitations\n- [Assumption 1 and why it's reasonable]\n- [Limitation 1 and its potential impact on conclusions]\n\n### Key Findings\n1. [Finding 1 with supporting evidence]\n2. [Finding 2 with supporting evidence]\n\n### SQL Queries\n[All queries used, with comments]\n\n### Caveats\n- [Things the reader should know before acting on this]\n```\n\n### Code Documentation\n\nFor any code (SQL, Python) that may be reused:\n\n```python\n\"\"\"\nAnalysis: Monthly Cohort Retention\nAuthor: [Name]\nDate: [Date]\nData Source: events table, users table\nLast Validated: [Date] -- results matched dashboard within 2%\n\nPurpose:\n    Calculate monthly user retention cohorts based on first activity date.\n\nAssumptions:\n    - \"Active\" means at least one event in the month\n    - Excludes test\u002Finternal accounts (user_type != 'internal')\n    - Uses UTC dates throughout\n\nOutput:\n    Cohort retention matrix with cohort_month rows and months_since_signup columns.\n    Values are retention rates (0-100%).\n\"\"\"\n```\n\n### Version Control for Analyses\n\n- Save queries and code in version control (git) or a shared docs system\n- Note the date of the data snapshot used\n- If an analysis is re-run with updated data, document what changed and why\n- Link to prior versions of recurring analyses for trend comparison\n\n## Examples\n\n```\n\u002Fvalidate-data Review this quarterly revenue analysis before I send it to the exec team: [analysis]\n```\n\n```\n\u002Fvalidate-data Check my churn analysis -- I'm comparing Q4 churn rates to Q3 but Q4 has a shorter measurement window\n```\n\n```\n\u002Fvalidate-data Here's a SQL query and its results for our conversion funnel. Does the logic look right? [query + results]\n```\n\n## Tips\n\n- Run \u002Fvalidate-data before any high-stakes presentation or decision\n- Even quick analyses benefit from a sanity check -- it takes a minute and can save your credibility\n- If the validation finds issues, fix them and re-validate\n- Share the validation output alongside your analysis to build stakeholder confidence\n",{"data":38,"body":40},{"name":4,"description":6,"argument-hint":39},"\u003Canalysis to review>",{"type":41,"children":42},"root",[43,52,71,76,83,96,101,131,137,144,149,203,209,214,220,225,231,236,264,269,275,280,308,314,319,347,353,358,381,387,392,402,412,422,428,437,441,447,452,458,558,564,657,663,742,748,827,833,839,849,859,897,906,940,946,955,964,982,991,997,1006,1014,1027,1036,1042,1051,1059,1072,1081,1087,1096,1105,1128,1137,1143,1152,1160,1173,1182,1188,1197,1205,1218,1227,1233,1306,1312,1318,1323,1429,1435,1489,1495,1523,1529,1535,1540,2053,2059,2064,2221,2227,2250,2255,2264,2273,2282,2288,2311],{"type":44,"tag":45,"props":46,"children":48},"element","h1",{"id":47},"validate-data-validate-analysis-before-sharing",[49],{"type":50,"value":51},"text","\u002Fvalidate-data - Validate Analysis Before Sharing",{"type":44,"tag":53,"props":54,"children":55},"blockquote",{},[56],{"type":44,"tag":57,"props":58,"children":59},"p",{},[60,62,69],{"type":50,"value":61},"If you see unfamiliar placeholders or need to check which tools are connected, see ",{"type":44,"tag":63,"props":64,"children":66},"a",{"href":65},"..\u002F..\u002FCONNECTORS.md",[67],{"type":50,"value":68},"CONNECTORS.md",{"type":50,"value":70},".",{"type":44,"tag":57,"props":72,"children":73},{},[74],{"type":50,"value":75},"Review an analysis for accuracy, methodology, and potential biases before sharing with stakeholders. Generates a confidence assessment and improvement suggestions.",{"type":44,"tag":77,"props":78,"children":80},"h2",{"id":79},"usage",[81],{"type":50,"value":82},"Usage",{"type":44,"tag":84,"props":85,"children":89},"pre",{"className":86,"code":88,"language":50},[87],"language-text","\u002Fvalidate-data \u003Canalysis to review>\n",[90],{"type":44,"tag":91,"props":92,"children":94},"code",{"__ignoreMap":93},"",[95],{"type":50,"value":88},{"type":44,"tag":57,"props":97,"children":98},{},[99],{"type":50,"value":100},"The analysis can be:",{"type":44,"tag":102,"props":103,"children":104},"ul",{},[105,111,116,121,126],{"type":44,"tag":106,"props":107,"children":108},"li",{},[109],{"type":50,"value":110},"A document or report in the conversation",{"type":44,"tag":106,"props":112,"children":113},{},[114],{"type":50,"value":115},"A file (markdown, notebook, spreadsheet)",{"type":44,"tag":106,"props":117,"children":118},{},[119],{"type":50,"value":120},"SQL queries and their results",{"type":44,"tag":106,"props":122,"children":123},{},[124],{"type":50,"value":125},"Charts and their underlying data",{"type":44,"tag":106,"props":127,"children":128},{},[129],{"type":50,"value":130},"A description of methodology and findings",{"type":44,"tag":77,"props":132,"children":134},{"id":133},"workflow",[135],{"type":50,"value":136},"Workflow",{"type":44,"tag":138,"props":139,"children":141},"h3",{"id":140},"_1-review-methodology-and-assumptions",[142],{"type":50,"value":143},"1. Review Methodology and Assumptions",{"type":44,"tag":57,"props":145,"children":146},{},[147],{"type":50,"value":148},"Examine:",{"type":44,"tag":102,"props":150,"children":151},{},[152,163,173,183,193],{"type":44,"tag":106,"props":153,"children":154},{},[155,161],{"type":44,"tag":156,"props":157,"children":158},"strong",{},[159],{"type":50,"value":160},"Question framing",{"type":50,"value":162},": Is the analysis answering the right question? Could the question be interpreted differently?",{"type":44,"tag":106,"props":164,"children":165},{},[166,171],{"type":44,"tag":156,"props":167,"children":168},{},[169],{"type":50,"value":170},"Data selection",{"type":50,"value":172},": Are the right tables\u002Fdatasets being used? Is the time range appropriate?",{"type":44,"tag":106,"props":174,"children":175},{},[176,181],{"type":44,"tag":156,"props":177,"children":178},{},[179],{"type":50,"value":180},"Population definition",{"type":50,"value":182},": Is the analysis population correctly defined? Are there unintended exclusions?",{"type":44,"tag":106,"props":184,"children":185},{},[186,191],{"type":44,"tag":156,"props":187,"children":188},{},[189],{"type":50,"value":190},"Metric definitions",{"type":50,"value":192},": Are metrics defined clearly and consistently? Do they match how stakeholders understand them?",{"type":44,"tag":106,"props":194,"children":195},{},[196,201],{"type":44,"tag":156,"props":197,"children":198},{},[199],{"type":50,"value":200},"Baseline and comparison",{"type":50,"value":202},": Is the comparison fair? Are time periods, cohort sizes, and contexts comparable?",{"type":44,"tag":138,"props":204,"children":206},{"id":205},"_2-run-the-pre-delivery-qa-checklist",[207],{"type":50,"value":208},"2. Run the Pre-Delivery QA Checklist",{"type":44,"tag":57,"props":210,"children":211},{},[212],{"type":50,"value":213},"Work through the checklist below — data quality, calculation, reasonableness, and presentation checks.",{"type":44,"tag":138,"props":215,"children":217},{"id":216},"_3-check-for-common-analytical-pitfalls",[218],{"type":50,"value":219},"3. Check for Common Analytical Pitfalls",{"type":44,"tag":57,"props":221,"children":222},{},[223],{"type":50,"value":224},"Systematically review against the detailed pitfall catalog below (join explosion, survivorship bias, incomplete period comparison, denominator shifting, average of averages, timezone mismatches, selection bias).",{"type":44,"tag":138,"props":226,"children":228},{"id":227},"_4-verify-calculations-and-aggregations",[229],{"type":50,"value":230},"4. Verify Calculations and Aggregations",{"type":44,"tag":57,"props":232,"children":233},{},[234],{"type":50,"value":235},"Where possible, spot-check:",{"type":44,"tag":102,"props":237,"children":238},{},[239,244,249,254,259],{"type":44,"tag":106,"props":240,"children":241},{},[242],{"type":50,"value":243},"Recalculate a few key numbers independently",{"type":44,"tag":106,"props":245,"children":246},{},[247],{"type":50,"value":248},"Verify that subtotals sum to totals",{"type":44,"tag":106,"props":250,"children":251},{},[252],{"type":50,"value":253},"Check that percentages sum to 100% (or close to it) where expected",{"type":44,"tag":106,"props":255,"children":256},{},[257],{"type":50,"value":258},"Confirm that YoY\u002FMoM comparisons use the correct base periods",{"type":44,"tag":106,"props":260,"children":261},{},[262],{"type":50,"value":263},"Validate that filters are applied consistently across all metrics",{"type":44,"tag":57,"props":265,"children":266},{},[267],{"type":50,"value":268},"Apply the result sanity-checking techniques below (magnitude checks, cross-validation, red-flag detection).",{"type":44,"tag":138,"props":270,"children":272},{"id":271},"_5-assess-visualizations",[273],{"type":50,"value":274},"5. Assess Visualizations",{"type":44,"tag":57,"props":276,"children":277},{},[278],{"type":50,"value":279},"If the analysis includes charts:",{"type":44,"tag":102,"props":281,"children":282},{},[283,288,293,298,303],{"type":44,"tag":106,"props":284,"children":285},{},[286],{"type":50,"value":287},"Do axes start at appropriate values (zero for bar charts)?",{"type":44,"tag":106,"props":289,"children":290},{},[291],{"type":50,"value":292},"Are scales consistent across comparison charts?",{"type":44,"tag":106,"props":294,"children":295},{},[296],{"type":50,"value":297},"Do chart titles accurately describe what's shown?",{"type":44,"tag":106,"props":299,"children":300},{},[301],{"type":50,"value":302},"Could the visualization mislead a quick reader?",{"type":44,"tag":106,"props":304,"children":305},{},[306],{"type":50,"value":307},"Are there truncated axes, inconsistent intervals, or 3D effects that distort perception?",{"type":44,"tag":138,"props":309,"children":311},{"id":310},"_6-evaluate-narrative-and-conclusions",[312],{"type":50,"value":313},"6. Evaluate Narrative and Conclusions",{"type":44,"tag":57,"props":315,"children":316},{},[317],{"type":50,"value":318},"Review whether:",{"type":44,"tag":102,"props":320,"children":321},{},[322,327,332,337,342],{"type":44,"tag":106,"props":323,"children":324},{},[325],{"type":50,"value":326},"Conclusions are supported by the data shown",{"type":44,"tag":106,"props":328,"children":329},{},[330],{"type":50,"value":331},"Alternative explanations are acknowledged",{"type":44,"tag":106,"props":333,"children":334},{},[335],{"type":50,"value":336},"Uncertainty is communicated appropriately",{"type":44,"tag":106,"props":338,"children":339},{},[340],{"type":50,"value":341},"Recommendations follow logically from findings",{"type":44,"tag":106,"props":343,"children":344},{},[345],{"type":50,"value":346},"The level of confidence matches the strength of evidence",{"type":44,"tag":138,"props":348,"children":350},{"id":349},"_7-suggest-improvements",[351],{"type":50,"value":352},"7. Suggest Improvements",{"type":44,"tag":57,"props":354,"children":355},{},[356],{"type":50,"value":357},"Provide specific, actionable suggestions:",{"type":44,"tag":102,"props":359,"children":360},{},[361,366,371,376],{"type":44,"tag":106,"props":362,"children":363},{},[364],{"type":50,"value":365},"Additional analyses that would strengthen the conclusions",{"type":44,"tag":106,"props":367,"children":368},{},[369],{"type":50,"value":370},"Caveats or limitations that should be noted",{"type":44,"tag":106,"props":372,"children":373},{},[374],{"type":50,"value":375},"Better visualizations or framings for key points",{"type":44,"tag":106,"props":377,"children":378},{},[379],{"type":50,"value":380},"Missing context that stakeholders would want",{"type":44,"tag":138,"props":382,"children":384},{"id":383},"_8-generate-confidence-assessment",[385],{"type":50,"value":386},"8. Generate Confidence Assessment",{"type":44,"tag":57,"props":388,"children":389},{},[390],{"type":50,"value":391},"Rate the analysis on a 3-level scale:",{"type":44,"tag":57,"props":393,"children":394},{},[395,400],{"type":44,"tag":156,"props":396,"children":397},{},[398],{"type":50,"value":399},"Ready to share",{"type":50,"value":401}," -- Analysis is methodologically sound, calculations verified, caveats noted. Minor suggestions for improvement but nothing blocking.",{"type":44,"tag":57,"props":403,"children":404},{},[405,410],{"type":44,"tag":156,"props":406,"children":407},{},[408],{"type":50,"value":409},"Share with noted caveats",{"type":50,"value":411}," -- Analysis is largely correct but has specific limitations or assumptions that must be communicated to stakeholders. List the required caveats.",{"type":44,"tag":57,"props":413,"children":414},{},[415,420],{"type":44,"tag":156,"props":416,"children":417},{},[418],{"type":50,"value":419},"Needs revision",{"type":50,"value":421}," -- Found specific errors, methodological issues, or missing analyses that should be addressed before sharing. List the required changes with priority order.",{"type":44,"tag":77,"props":423,"children":425},{"id":424},"output-format",[426],{"type":50,"value":427},"Output Format",{"type":44,"tag":84,"props":429,"children":432},{"className":430,"code":431,"language":50},[87],"## Validation Report\n\n### Overall Assessment: [Ready to share | Share with caveats | Needs revision]\n\n### Methodology Review\n[Findings about approach, data selection, definitions]\n\n### Issues Found\n1. [Severity: High\u002FMedium\u002FLow] [Issue description and impact]\n2. ...\n\n### Calculation Spot-Checks\n- [Metric]: [Verified \u002F Discrepancy found]\n- ...\n\n### Visualization Review\n[Any issues with charts or visual presentation]\n\n### Suggested Improvements\n1. [Improvement and why it matters]\n2. ...\n\n### Required Caveats for Stakeholders\n- [Caveat that must be communicated]\n- ...\n",[433],{"type":44,"tag":91,"props":434,"children":435},{"__ignoreMap":93},[436],{"type":50,"value":431},{"type":44,"tag":438,"props":439,"children":440},"hr",{},[],{"type":44,"tag":77,"props":442,"children":444},{"id":443},"pre-delivery-qa-checklist",[445],{"type":50,"value":446},"Pre-Delivery QA Checklist",{"type":44,"tag":57,"props":448,"children":449},{},[450],{"type":50,"value":451},"Run through this checklist before sharing any analysis with stakeholders.",{"type":44,"tag":138,"props":453,"children":455},{"id":454},"data-quality-checks",[456],{"type":50,"value":457},"Data Quality Checks",{"type":44,"tag":102,"props":459,"children":462},{"className":460},[461],"contains-task-list",[463,483,498,513,528,543],{"type":44,"tag":106,"props":464,"children":467},{"className":465},[466],"task-list-item",[468,474,476,481],{"type":44,"tag":469,"props":470,"children":473},"input",{"disabled":471,"type":472},true,"checkbox",[],{"type":50,"value":475}," ",{"type":44,"tag":156,"props":477,"children":478},{},[479],{"type":50,"value":480},"Source verification",{"type":50,"value":482},": Confirmed which tables\u002Fdata sources were used. Are they the right ones for this question?",{"type":44,"tag":106,"props":484,"children":486},{"className":485},[466],[487,490,491,496],{"type":44,"tag":469,"props":488,"children":489},{"disabled":471,"type":472},[],{"type":50,"value":475},{"type":44,"tag":156,"props":492,"children":493},{},[494],{"type":50,"value":495},"Freshness",{"type":50,"value":497},": Data is current enough for the analysis. Noted the \"as of\" date.",{"type":44,"tag":106,"props":499,"children":501},{"className":500},[466],[502,505,506,511],{"type":44,"tag":469,"props":503,"children":504},{"disabled":471,"type":472},[],{"type":50,"value":475},{"type":44,"tag":156,"props":507,"children":508},{},[509],{"type":50,"value":510},"Completeness",{"type":50,"value":512},": No unexpected gaps in time series or missing segments.",{"type":44,"tag":106,"props":514,"children":516},{"className":515},[466],[517,520,521,526],{"type":44,"tag":469,"props":518,"children":519},{"disabled":471,"type":472},[],{"type":50,"value":475},{"type":44,"tag":156,"props":522,"children":523},{},[524],{"type":50,"value":525},"Null handling",{"type":50,"value":527},": Checked null rates in key columns. Nulls are handled appropriately (excluded, imputed, or flagged).",{"type":44,"tag":106,"props":529,"children":531},{"className":530},[466],[532,535,536,541],{"type":44,"tag":469,"props":533,"children":534},{"disabled":471,"type":472},[],{"type":50,"value":475},{"type":44,"tag":156,"props":537,"children":538},{},[539],{"type":50,"value":540},"Deduplication",{"type":50,"value":542},": Confirmed no double-counting from bad joins or duplicate source records.",{"type":44,"tag":106,"props":544,"children":546},{"className":545},[466],[547,550,551,556],{"type":44,"tag":469,"props":548,"children":549},{"disabled":471,"type":472},[],{"type":50,"value":475},{"type":44,"tag":156,"props":552,"children":553},{},[554],{"type":50,"value":555},"Filter verification",{"type":50,"value":557},": All WHERE clauses and filters are correct. No unintended exclusions.",{"type":44,"tag":138,"props":559,"children":561},{"id":560},"calculation-checks",[562],{"type":50,"value":563},"Calculation Checks",{"type":44,"tag":102,"props":565,"children":567},{"className":566},[461],[568,583,598,613,628,642],{"type":44,"tag":106,"props":569,"children":571},{"className":570},[466],[572,575,576,581],{"type":44,"tag":469,"props":573,"children":574},{"disabled":471,"type":472},[],{"type":50,"value":475},{"type":44,"tag":156,"props":577,"children":578},{},[579],{"type":50,"value":580},"Aggregation logic",{"type":50,"value":582},": GROUP BY includes all non-aggregated columns. Aggregation level matches the analysis grain.",{"type":44,"tag":106,"props":584,"children":586},{"className":585},[466],[587,590,591,596],{"type":44,"tag":469,"props":588,"children":589},{"disabled":471,"type":472},[],{"type":50,"value":475},{"type":44,"tag":156,"props":592,"children":593},{},[594],{"type":50,"value":595},"Denominator correctness",{"type":50,"value":597},": Rate and percentage calculations use the right denominator. Denominators are non-zero.",{"type":44,"tag":106,"props":599,"children":601},{"className":600},[466],[602,605,606,611],{"type":44,"tag":469,"props":603,"children":604},{"disabled":471,"type":472},[],{"type":50,"value":475},{"type":44,"tag":156,"props":607,"children":608},{},[609],{"type":50,"value":610},"Date alignment",{"type":50,"value":612},": Comparisons use the same time period length. Partial periods are excluded or noted.",{"type":44,"tag":106,"props":614,"children":616},{"className":615},[466],[617,620,621,626],{"type":44,"tag":469,"props":618,"children":619},{"disabled":471,"type":472},[],{"type":50,"value":475},{"type":44,"tag":156,"props":622,"children":623},{},[624],{"type":50,"value":625},"Join correctness",{"type":50,"value":627},": JOIN types are appropriate (INNER vs LEFT). Many-to-many joins haven't inflated counts.",{"type":44,"tag":106,"props":629,"children":631},{"className":630},[466],[632,635,636,640],{"type":44,"tag":469,"props":633,"children":634},{"disabled":471,"type":472},[],{"type":50,"value":475},{"type":44,"tag":156,"props":637,"children":638},{},[639],{"type":50,"value":190},{"type":50,"value":641},": Metrics match how stakeholders define them. Any deviations are noted.",{"type":44,"tag":106,"props":643,"children":645},{"className":644},[466],[646,649,650,655],{"type":44,"tag":469,"props":647,"children":648},{"disabled":471,"type":472},[],{"type":50,"value":475},{"type":44,"tag":156,"props":651,"children":652},{},[653],{"type":50,"value":654},"Subtotals sum",{"type":50,"value":656},": Parts add up to the whole where expected. If they don't, explain why (e.g., overlap).",{"type":44,"tag":138,"props":658,"children":660},{"id":659},"reasonableness-checks",[661],{"type":50,"value":662},"Reasonableness Checks",{"type":44,"tag":102,"props":664,"children":666},{"className":665},[461],[667,682,697,712,727],{"type":44,"tag":106,"props":668,"children":670},{"className":669},[466],[671,674,675,680],{"type":44,"tag":469,"props":672,"children":673},{"disabled":471,"type":472},[],{"type":50,"value":475},{"type":44,"tag":156,"props":676,"children":677},{},[678],{"type":50,"value":679},"Magnitude",{"type":50,"value":681},": Numbers are in a plausible range. Revenue isn't negative. Percentages are between 0-100%.",{"type":44,"tag":106,"props":683,"children":685},{"className":684},[466],[686,689,690,695],{"type":44,"tag":469,"props":687,"children":688},{"disabled":471,"type":472},[],{"type":50,"value":475},{"type":44,"tag":156,"props":691,"children":692},{},[693],{"type":50,"value":694},"Trend continuity",{"type":50,"value":696},": No unexplained jumps or drops in time series.",{"type":44,"tag":106,"props":698,"children":700},{"className":699},[466],[701,704,705,710],{"type":44,"tag":469,"props":702,"children":703},{"disabled":471,"type":472},[],{"type":50,"value":475},{"type":44,"tag":156,"props":706,"children":707},{},[708],{"type":50,"value":709},"Cross-reference",{"type":50,"value":711},": Key numbers match other known sources (dashboards, previous reports, finance data).",{"type":44,"tag":106,"props":713,"children":715},{"className":714},[466],[716,719,720,725],{"type":44,"tag":469,"props":717,"children":718},{"disabled":471,"type":472},[],{"type":50,"value":475},{"type":44,"tag":156,"props":721,"children":722},{},[723],{"type":50,"value":724},"Order of magnitude",{"type":50,"value":726},": Total revenue is in the right ballpark. User counts match known figures.",{"type":44,"tag":106,"props":728,"children":730},{"className":729},[466],[731,734,735,740],{"type":44,"tag":469,"props":732,"children":733},{"disabled":471,"type":472},[],{"type":50,"value":475},{"type":44,"tag":156,"props":736,"children":737},{},[738],{"type":50,"value":739},"Edge cases",{"type":50,"value":741},": What happens at the boundaries? Empty segments, zero-activity periods, new entities.",{"type":44,"tag":138,"props":743,"children":745},{"id":744},"presentation-checks",[746],{"type":50,"value":747},"Presentation Checks",{"type":44,"tag":102,"props":749,"children":751},{"className":750},[461],[752,767,782,797,812],{"type":44,"tag":106,"props":753,"children":755},{"className":754},[466],[756,759,760,765],{"type":44,"tag":469,"props":757,"children":758},{"disabled":471,"type":472},[],{"type":50,"value":475},{"type":44,"tag":156,"props":761,"children":762},{},[763],{"type":50,"value":764},"Chart accuracy",{"type":50,"value":766},": Bar charts start at zero. Axes are labeled. Scales are consistent across panels.",{"type":44,"tag":106,"props":768,"children":770},{"className":769},[466],[771,774,775,780],{"type":44,"tag":469,"props":772,"children":773},{"disabled":471,"type":472},[],{"type":50,"value":475},{"type":44,"tag":156,"props":776,"children":777},{},[778],{"type":50,"value":779},"Number formatting",{"type":50,"value":781},": Appropriate precision. Consistent currency\u002Fpercentage formatting. Thousands separators where needed.",{"type":44,"tag":106,"props":783,"children":785},{"className":784},[466],[786,789,790,795],{"type":44,"tag":469,"props":787,"children":788},{"disabled":471,"type":472},[],{"type":50,"value":475},{"type":44,"tag":156,"props":791,"children":792},{},[793],{"type":50,"value":794},"Title clarity",{"type":50,"value":796},": Titles state the insight, not just the metric. Date ranges are specified.",{"type":44,"tag":106,"props":798,"children":800},{"className":799},[466],[801,804,805,810],{"type":44,"tag":469,"props":802,"children":803},{"disabled":471,"type":472},[],{"type":50,"value":475},{"type":44,"tag":156,"props":806,"children":807},{},[808],{"type":50,"value":809},"Caveat transparency",{"type":50,"value":811},": Known limitations and assumptions are stated explicitly.",{"type":44,"tag":106,"props":813,"children":815},{"className":814},[466],[816,819,820,825],{"type":44,"tag":469,"props":817,"children":818},{"disabled":471,"type":472},[],{"type":50,"value":475},{"type":44,"tag":156,"props":821,"children":822},{},[823],{"type":50,"value":824},"Reproducibility",{"type":50,"value":826},": Someone else could recreate this analysis from the documentation provided.",{"type":44,"tag":77,"props":828,"children":830},{"id":829},"common-data-analysis-pitfalls",[831],{"type":50,"value":832},"Common Data Analysis Pitfalls",{"type":44,"tag":138,"props":834,"children":836},{"id":835},"join-explosion",[837],{"type":50,"value":838},"Join Explosion",{"type":44,"tag":57,"props":840,"children":841},{},[842,847],{"type":44,"tag":156,"props":843,"children":844},{},[845],{"type":50,"value":846},"The problem",{"type":50,"value":848},": A many-to-many join silently multiplies rows, inflating counts and sums.",{"type":44,"tag":57,"props":850,"children":851},{},[852,857],{"type":44,"tag":156,"props":853,"children":854},{},[855],{"type":50,"value":856},"How to detect",{"type":50,"value":858},":",{"type":44,"tag":84,"props":860,"children":864},{"className":861,"code":862,"language":863,"meta":93,"style":93},"language-sql shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","-- Check row count before and after join\nSELECT COUNT(*) FROM table_a;  -- 1,000\nSELECT COUNT(*) FROM table_a a JOIN table_b b ON a.id = b.a_id;  -- 3,500 (uh oh)\n","sql",[865],{"type":44,"tag":91,"props":866,"children":867},{"__ignoreMap":93},[868,879,888],{"type":44,"tag":869,"props":870,"children":873},"span",{"class":871,"line":872},"line",1,[874],{"type":44,"tag":869,"props":875,"children":876},{},[877],{"type":50,"value":878},"-- Check row count before and after join\n",{"type":44,"tag":869,"props":880,"children":882},{"class":871,"line":881},2,[883],{"type":44,"tag":869,"props":884,"children":885},{},[886],{"type":50,"value":887},"SELECT COUNT(*) FROM table_a;  -- 1,000\n",{"type":44,"tag":869,"props":889,"children":891},{"class":871,"line":890},3,[892],{"type":44,"tag":869,"props":893,"children":894},{},[895],{"type":50,"value":896},"SELECT COUNT(*) FROM table_a a JOIN table_b b ON a.id = b.a_id;  -- 3,500 (uh oh)\n",{"type":44,"tag":57,"props":898,"children":899},{},[900,905],{"type":44,"tag":156,"props":901,"children":902},{},[903],{"type":50,"value":904},"How to prevent",{"type":50,"value":858},{"type":44,"tag":102,"props":907,"children":908},{},[909,914,919],{"type":44,"tag":106,"props":910,"children":911},{},[912],{"type":50,"value":913},"Always check row counts after joins",{"type":44,"tag":106,"props":915,"children":916},{},[917],{"type":50,"value":918},"If counts increase, investigate the join relationship (is it really 1:1 or 1:many?)",{"type":44,"tag":106,"props":920,"children":921},{},[922,924,930,932,938],{"type":50,"value":923},"Use ",{"type":44,"tag":91,"props":925,"children":927},{"className":926},[],[928],{"type":50,"value":929},"COUNT(DISTINCT a.id)",{"type":50,"value":931}," instead of ",{"type":44,"tag":91,"props":933,"children":935},{"className":934},[],[936],{"type":50,"value":937},"COUNT(*)",{"type":50,"value":939}," when counting entities through joins",{"type":44,"tag":138,"props":941,"children":943},{"id":942},"survivorship-bias",[944],{"type":50,"value":945},"Survivorship Bias",{"type":44,"tag":57,"props":947,"children":948},{},[949,953],{"type":44,"tag":156,"props":950,"children":951},{},[952],{"type":50,"value":846},{"type":50,"value":954},": Analyzing only entities that exist today, ignoring those that were deleted, churned, or failed.",{"type":44,"tag":57,"props":956,"children":957},{},[958,963],{"type":44,"tag":156,"props":959,"children":960},{},[961],{"type":50,"value":962},"Examples",{"type":50,"value":858},{"type":44,"tag":102,"props":965,"children":966},{},[967,972,977],{"type":44,"tag":106,"props":968,"children":969},{},[970],{"type":50,"value":971},"Analyzing user behavior of \"current users\" misses churned users",{"type":44,"tag":106,"props":973,"children":974},{},[975],{"type":50,"value":976},"Looking at \"companies using our product\" ignores those who evaluated and left",{"type":44,"tag":106,"props":978,"children":979},{},[980],{"type":50,"value":981},"Studying properties of \"successful\" outcomes without \"unsuccessful\" ones",{"type":44,"tag":57,"props":983,"children":984},{},[985,989],{"type":44,"tag":156,"props":986,"children":987},{},[988],{"type":50,"value":904},{"type":50,"value":990},": Ask \"who is NOT in this dataset?\" before drawing conclusions.",{"type":44,"tag":138,"props":992,"children":994},{"id":993},"incomplete-period-comparison",[995],{"type":50,"value":996},"Incomplete Period Comparison",{"type":44,"tag":57,"props":998,"children":999},{},[1000,1004],{"type":44,"tag":156,"props":1001,"children":1002},{},[1003],{"type":50,"value":846},{"type":50,"value":1005},": Comparing a partial period to a full period.",{"type":44,"tag":57,"props":1007,"children":1008},{},[1009,1013],{"type":44,"tag":156,"props":1010,"children":1011},{},[1012],{"type":50,"value":962},{"type":50,"value":858},{"type":44,"tag":102,"props":1015,"children":1016},{},[1017,1022],{"type":44,"tag":106,"props":1018,"children":1019},{},[1020],{"type":50,"value":1021},"\"January revenue is $500K vs. December's $800K\" -- but January isn't over yet",{"type":44,"tag":106,"props":1023,"children":1024},{},[1025],{"type":50,"value":1026},"\"This week's signups are down\" -- checked on Wednesday, comparing to a full prior week",{"type":44,"tag":57,"props":1028,"children":1029},{},[1030,1034],{"type":44,"tag":156,"props":1031,"children":1032},{},[1033],{"type":50,"value":904},{"type":50,"value":1035},": Always filter to complete periods, or compare same-day-of-month \u002F same-number-of-days.",{"type":44,"tag":138,"props":1037,"children":1039},{"id":1038},"denominator-shifting",[1040],{"type":50,"value":1041},"Denominator Shifting",{"type":44,"tag":57,"props":1043,"children":1044},{},[1045,1049],{"type":44,"tag":156,"props":1046,"children":1047},{},[1048],{"type":50,"value":846},{"type":50,"value":1050},": The denominator changes between periods, making rates incomparable.",{"type":44,"tag":57,"props":1052,"children":1053},{},[1054,1058],{"type":44,"tag":156,"props":1055,"children":1056},{},[1057],{"type":50,"value":962},{"type":50,"value":858},{"type":44,"tag":102,"props":1060,"children":1061},{},[1062,1067],{"type":44,"tag":106,"props":1063,"children":1064},{},[1065],{"type":50,"value":1066},"Conversion rate improves because you changed how you count \"eligible\" users",{"type":44,"tag":106,"props":1068,"children":1069},{},[1070],{"type":50,"value":1071},"Churn rate changes because the definition of \"active\" was updated",{"type":44,"tag":57,"props":1073,"children":1074},{},[1075,1079],{"type":44,"tag":156,"props":1076,"children":1077},{},[1078],{"type":50,"value":904},{"type":50,"value":1080},": Use consistent definitions across all compared periods. Note any definition changes.",{"type":44,"tag":138,"props":1082,"children":1084},{"id":1083},"average-of-averages",[1085],{"type":50,"value":1086},"Average of Averages",{"type":44,"tag":57,"props":1088,"children":1089},{},[1090,1094],{"type":44,"tag":156,"props":1091,"children":1092},{},[1093],{"type":50,"value":846},{"type":50,"value":1095},": Averaging pre-computed averages gives wrong results when group sizes differ.",{"type":44,"tag":57,"props":1097,"children":1098},{},[1099,1104],{"type":44,"tag":156,"props":1100,"children":1101},{},[1102],{"type":50,"value":1103},"Example",{"type":50,"value":858},{"type":44,"tag":102,"props":1106,"children":1107},{},[1108,1113,1118,1123],{"type":44,"tag":106,"props":1109,"children":1110},{},[1111],{"type":50,"value":1112},"Group A: 100 users, average revenue $50",{"type":44,"tag":106,"props":1114,"children":1115},{},[1116],{"type":50,"value":1117},"Group B: 10 users, average revenue $200",{"type":44,"tag":106,"props":1119,"children":1120},{},[1121],{"type":50,"value":1122},"Wrong: Average of averages = ($50 + $200) \u002F 2 = $125",{"type":44,"tag":106,"props":1124,"children":1125},{},[1126],{"type":50,"value":1127},"Right: Weighted average = (100*$50 + 10*$200) \u002F 110 = $63.64",{"type":44,"tag":57,"props":1129,"children":1130},{},[1131,1135],{"type":44,"tag":156,"props":1132,"children":1133},{},[1134],{"type":50,"value":904},{"type":50,"value":1136},": Always aggregate from raw data. Never average pre-aggregated averages.",{"type":44,"tag":138,"props":1138,"children":1140},{"id":1139},"timezone-mismatches",[1141],{"type":50,"value":1142},"Timezone Mismatches",{"type":44,"tag":57,"props":1144,"children":1145},{},[1146,1150],{"type":44,"tag":156,"props":1147,"children":1148},{},[1149],{"type":50,"value":846},{"type":50,"value":1151},": Different data sources use different timezones, causing misalignment.",{"type":44,"tag":57,"props":1153,"children":1154},{},[1155,1159],{"type":44,"tag":156,"props":1156,"children":1157},{},[1158],{"type":50,"value":962},{"type":50,"value":858},{"type":44,"tag":102,"props":1161,"children":1162},{},[1163,1168],{"type":44,"tag":106,"props":1164,"children":1165},{},[1166],{"type":50,"value":1167},"Event timestamps in UTC vs. user-facing dates in local time",{"type":44,"tag":106,"props":1169,"children":1170},{},[1171],{"type":50,"value":1172},"Daily rollups that use different cutoff times",{"type":44,"tag":57,"props":1174,"children":1175},{},[1176,1180],{"type":44,"tag":156,"props":1177,"children":1178},{},[1179],{"type":50,"value":904},{"type":50,"value":1181},": Standardize all timestamps to a single timezone (UTC recommended) before analysis. Document the timezone used.",{"type":44,"tag":138,"props":1183,"children":1185},{"id":1184},"selection-bias-in-segmentation",[1186],{"type":50,"value":1187},"Selection Bias in Segmentation",{"type":44,"tag":57,"props":1189,"children":1190},{},[1191,1195],{"type":44,"tag":156,"props":1192,"children":1193},{},[1194],{"type":50,"value":846},{"type":50,"value":1196},": Segments are defined by the outcome you're measuring, creating circular logic.",{"type":44,"tag":57,"props":1198,"children":1199},{},[1200,1204],{"type":44,"tag":156,"props":1201,"children":1202},{},[1203],{"type":50,"value":962},{"type":50,"value":858},{"type":44,"tag":102,"props":1206,"children":1207},{},[1208,1213],{"type":44,"tag":106,"props":1209,"children":1210},{},[1211],{"type":50,"value":1212},"\"Users who completed onboarding have higher retention\" -- obviously, they self-selected",{"type":44,"tag":106,"props":1214,"children":1215},{},[1216],{"type":50,"value":1217},"\"Power users generate more revenue\" -- they became power users BY generating revenue",{"type":44,"tag":57,"props":1219,"children":1220},{},[1221,1225],{"type":44,"tag":156,"props":1222,"children":1223},{},[1224],{"type":50,"value":904},{"type":50,"value":1226},": Define segments based on pre-treatment characteristics, not outcomes.",{"type":44,"tag":138,"props":1228,"children":1230},{"id":1229},"other-statistical-traps",[1231],{"type":50,"value":1232},"Other Statistical Traps",{"type":44,"tag":102,"props":1234,"children":1235},{},[1236,1246,1256,1266,1276,1286,1296],{"type":44,"tag":106,"props":1237,"children":1238},{},[1239,1244],{"type":44,"tag":156,"props":1240,"children":1241},{},[1242],{"type":50,"value":1243},"Simpson's paradox",{"type":50,"value":1245},": Trend reverses when data is aggregated vs. segmented",{"type":44,"tag":106,"props":1247,"children":1248},{},[1249,1254],{"type":44,"tag":156,"props":1250,"children":1251},{},[1252],{"type":50,"value":1253},"Correlation presented as causation",{"type":50,"value":1255}," without supporting evidence",{"type":44,"tag":106,"props":1257,"children":1258},{},[1259,1264],{"type":44,"tag":156,"props":1260,"children":1261},{},[1262],{"type":50,"value":1263},"Small sample sizes",{"type":50,"value":1265}," leading to unreliable conclusions",{"type":44,"tag":106,"props":1267,"children":1268},{},[1269,1274],{"type":44,"tag":156,"props":1270,"children":1271},{},[1272],{"type":50,"value":1273},"Outliers disproportionately affecting averages",{"type":50,"value":1275}," (should medians be used instead?)",{"type":44,"tag":106,"props":1277,"children":1278},{},[1279,1284],{"type":44,"tag":156,"props":1280,"children":1281},{},[1282],{"type":50,"value":1283},"Multiple testing \u002F cherry-picking",{"type":50,"value":1285}," significant results",{"type":44,"tag":106,"props":1287,"children":1288},{},[1289,1294],{"type":44,"tag":156,"props":1290,"children":1291},{},[1292],{"type":50,"value":1293},"Look-ahead bias",{"type":50,"value":1295},": Using future information to explain past events",{"type":44,"tag":106,"props":1297,"children":1298},{},[1299,1304],{"type":44,"tag":156,"props":1300,"children":1301},{},[1302],{"type":50,"value":1303},"Cherry-picked time ranges",{"type":50,"value":1305}," that favor a particular narrative",{"type":44,"tag":77,"props":1307,"children":1309},{"id":1308},"result-sanity-checking",[1310],{"type":50,"value":1311},"Result Sanity Checking",{"type":44,"tag":138,"props":1313,"children":1315},{"id":1314},"magnitude-checks",[1316],{"type":50,"value":1317},"Magnitude Checks",{"type":44,"tag":57,"props":1319,"children":1320},{},[1321],{"type":50,"value":1322},"For any key number in your analysis, verify it passes the \"smell test\":",{"type":44,"tag":1324,"props":1325,"children":1326},"table",{},[1327,1346],{"type":44,"tag":1328,"props":1329,"children":1330},"thead",{},[1331],{"type":44,"tag":1332,"props":1333,"children":1334},"tr",{},[1335,1341],{"type":44,"tag":1336,"props":1337,"children":1338},"th",{},[1339],{"type":50,"value":1340},"Metric Type",{"type":44,"tag":1336,"props":1342,"children":1343},{},[1344],{"type":50,"value":1345},"Sanity Check",{"type":44,"tag":1347,"props":1348,"children":1349},"tbody",{},[1350,1364,1377,1390,1403,1416],{"type":44,"tag":1332,"props":1351,"children":1352},{},[1353,1359],{"type":44,"tag":1354,"props":1355,"children":1356},"td",{},[1357],{"type":50,"value":1358},"User counts",{"type":44,"tag":1354,"props":1360,"children":1361},{},[1362],{"type":50,"value":1363},"Does this match known MAU\u002FDAU figures?",{"type":44,"tag":1332,"props":1365,"children":1366},{},[1367,1372],{"type":44,"tag":1354,"props":1368,"children":1369},{},[1370],{"type":50,"value":1371},"Revenue",{"type":44,"tag":1354,"props":1373,"children":1374},{},[1375],{"type":50,"value":1376},"Is this in the right order of magnitude vs. known ARR?",{"type":44,"tag":1332,"props":1378,"children":1379},{},[1380,1385],{"type":44,"tag":1354,"props":1381,"children":1382},{},[1383],{"type":50,"value":1384},"Conversion rates",{"type":44,"tag":1354,"props":1386,"children":1387},{},[1388],{"type":50,"value":1389},"Is this between 0% and 100%? Does it match dashboard figures?",{"type":44,"tag":1332,"props":1391,"children":1392},{},[1393,1398],{"type":44,"tag":1354,"props":1394,"children":1395},{},[1396],{"type":50,"value":1397},"Growth rates",{"type":44,"tag":1354,"props":1399,"children":1400},{},[1401],{"type":50,"value":1402},"Is 50%+ MoM growth realistic, or is there a data issue?",{"type":44,"tag":1332,"props":1404,"children":1405},{},[1406,1411],{"type":44,"tag":1354,"props":1407,"children":1408},{},[1409],{"type":50,"value":1410},"Averages",{"type":44,"tag":1354,"props":1412,"children":1413},{},[1414],{"type":50,"value":1415},"Is the average reasonable given what you know about the distribution?",{"type":44,"tag":1332,"props":1417,"children":1418},{},[1419,1424],{"type":44,"tag":1354,"props":1420,"children":1421},{},[1422],{"type":50,"value":1423},"Percentages",{"type":44,"tag":1354,"props":1425,"children":1426},{},[1427],{"type":50,"value":1428},"Do segment percentages sum to ~100%?",{"type":44,"tag":138,"props":1430,"children":1432},{"id":1431},"cross-validation-techniques",[1433],{"type":50,"value":1434},"Cross-Validation Techniques",{"type":44,"tag":1436,"props":1437,"children":1438},"ol",{},[1439,1449,1459,1469,1479],{"type":44,"tag":106,"props":1440,"children":1441},{},[1442,1447],{"type":44,"tag":156,"props":1443,"children":1444},{},[1445],{"type":50,"value":1446},"Calculate the same metric two different ways",{"type":50,"value":1448}," and verify they match",{"type":44,"tag":106,"props":1450,"children":1451},{},[1452,1457],{"type":44,"tag":156,"props":1453,"children":1454},{},[1455],{"type":50,"value":1456},"Spot-check individual records",{"type":50,"value":1458}," -- pick a few specific entities and trace their data manually",{"type":44,"tag":106,"props":1460,"children":1461},{},[1462,1467],{"type":44,"tag":156,"props":1463,"children":1464},{},[1465],{"type":50,"value":1466},"Compare to known benchmarks",{"type":50,"value":1468}," -- match against published dashboards, finance reports, or prior analyses",{"type":44,"tag":106,"props":1470,"children":1471},{},[1472,1477],{"type":44,"tag":156,"props":1473,"children":1474},{},[1475],{"type":50,"value":1476},"Reverse engineer",{"type":50,"value":1478}," -- if total revenue is X, does per-user revenue times user count approximately equal X?",{"type":44,"tag":106,"props":1480,"children":1481},{},[1482,1487],{"type":44,"tag":156,"props":1483,"children":1484},{},[1485],{"type":50,"value":1486},"Boundary checks",{"type":50,"value":1488}," -- what happens when you filter to a single day, a single user, or a single category? Are those micro-results sensible?",{"type":44,"tag":138,"props":1490,"children":1492},{"id":1491},"red-flags-that-warrant-investigation",[1493],{"type":50,"value":1494},"Red Flags That Warrant Investigation",{"type":44,"tag":102,"props":1496,"children":1497},{},[1498,1503,1508,1513,1518],{"type":44,"tag":106,"props":1499,"children":1500},{},[1501],{"type":50,"value":1502},"Any metric that changed by more than 50% period-over-period without an obvious cause",{"type":44,"tag":106,"props":1504,"children":1505},{},[1506],{"type":50,"value":1507},"Counts or sums that are exact round numbers (suggests a filter or default value issue)",{"type":44,"tag":106,"props":1509,"children":1510},{},[1511],{"type":50,"value":1512},"Rates exactly at 0% or 100% (may indicate incomplete data)",{"type":44,"tag":106,"props":1514,"children":1515},{},[1516],{"type":50,"value":1517},"Results that perfectly confirm the hypothesis (reality is usually messier)",{"type":44,"tag":106,"props":1519,"children":1520},{},[1521],{"type":50,"value":1522},"Identical values across time periods or segments (suggests the query is ignoring a dimension)",{"type":44,"tag":77,"props":1524,"children":1526},{"id":1525},"documentation-standards-for-reproducibility",[1527],{"type":50,"value":1528},"Documentation Standards for Reproducibility",{"type":44,"tag":138,"props":1530,"children":1532},{"id":1531},"analysis-documentation-template",[1533],{"type":50,"value":1534},"Analysis Documentation Template",{"type":44,"tag":57,"props":1536,"children":1537},{},[1538],{"type":50,"value":1539},"Every non-trivial analysis should include:",{"type":44,"tag":84,"props":1541,"children":1545},{"className":1542,"code":1543,"language":1544,"meta":93,"style":93},"language-markdown shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","## Analysis: [Title]\n\n### Question\n[The specific question being answered]\n\n### Data Sources\n- Table: [schema.table_name] (as of [date])\n- Table: [schema.other_table] (as of [date])\n- File: [filename] (source: [where it came from])\n\n### Definitions\n- [Metric A]: [Exactly how it's calculated]\n- [Segment X]: [Exactly how membership is determined]\n- [Time period]: [Start date] to [end date], [timezone]\n\n### Methodology\n1. [Step 1 of the analysis approach]\n2. [Step 2]\n3. [Step 3]\n\n### Assumptions and Limitations\n- [Assumption 1 and why it's reasonable]\n- [Limitation 1 and its potential impact on conclusions]\n\n### Key Findings\n1. [Finding 1 with supporting evidence]\n2. [Finding 2 with supporting evidence]\n\n### SQL Queries\n[All queries used, with comments]\n\n### Caveats\n- [Things the reader should know before acting on this]\n","markdown",[1546],{"type":44,"tag":91,"props":1547,"children":1548},{"__ignoreMap":93},[1549,1580,1588,1601,1611,1619,1632,1683,1728,1759,1767,1780,1793,1806,1832,1840,1853,1867,1881,1895,1903,1916,1929,1942,1950,1963,1976,1989,1997,2010,2019,2027,2040],{"type":44,"tag":869,"props":1550,"children":1551},{"class":871,"line":872},[1552,1558,1564,1569,1575],{"type":44,"tag":869,"props":1553,"children":1555},{"style":1554},"--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF",[1556],{"type":50,"value":1557},"## ",{"type":44,"tag":869,"props":1559,"children":1561},{"style":1560},"--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B",[1562],{"type":50,"value":1563},"Analysis: ",{"type":44,"tag":869,"props":1565,"children":1566},{"style":1554},[1567],{"type":50,"value":1568},"[",{"type":44,"tag":869,"props":1570,"children":1572},{"style":1571},"--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D",[1573],{"type":50,"value":1574},"Title",{"type":44,"tag":869,"props":1576,"children":1577},{"style":1554},[1578],{"type":50,"value":1579},"]\n",{"type":44,"tag":869,"props":1581,"children":1582},{"class":871,"line":881},[1583],{"type":44,"tag":869,"props":1584,"children":1585},{"emptyLinePlaceholder":471},[1586],{"type":50,"value":1587},"\n",{"type":44,"tag":869,"props":1589,"children":1590},{"class":871,"line":890},[1591,1596],{"type":44,"tag":869,"props":1592,"children":1593},{"style":1554},[1594],{"type":50,"value":1595},"### ",{"type":44,"tag":869,"props":1597,"children":1598},{"style":1560},[1599],{"type":50,"value":1600},"Question\n",{"type":44,"tag":869,"props":1602,"children":1604},{"class":871,"line":1603},4,[1605],{"type":44,"tag":869,"props":1606,"children":1608},{"style":1607},"--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8",[1609],{"type":50,"value":1610},"[The specific question being answered]\n",{"type":44,"tag":869,"props":1612,"children":1614},{"class":871,"line":1613},5,[1615],{"type":44,"tag":869,"props":1616,"children":1617},{"emptyLinePlaceholder":471},[1618],{"type":50,"value":1587},{"type":44,"tag":869,"props":1620,"children":1622},{"class":871,"line":1621},6,[1623,1627],{"type":44,"tag":869,"props":1624,"children":1625},{"style":1554},[1626],{"type":50,"value":1595},{"type":44,"tag":869,"props":1628,"children":1629},{"style":1560},[1630],{"type":50,"value":1631},"Data Sources\n",{"type":44,"tag":869,"props":1633,"children":1635},{"class":871,"line":1634},7,[1636,1641,1646,1650,1655,1660,1665,1669,1674,1678],{"type":44,"tag":869,"props":1637,"children":1638},{"style":1554},[1639],{"type":50,"value":1640},"-",{"type":44,"tag":869,"props":1642,"children":1643},{"style":1607},[1644],{"type":50,"value":1645}," Table: ",{"type":44,"tag":869,"props":1647,"children":1648},{"style":1554},[1649],{"type":50,"value":1568},{"type":44,"tag":869,"props":1651,"children":1652},{"style":1571},[1653],{"type":50,"value":1654},"schema.table_name",{"type":44,"tag":869,"props":1656,"children":1657},{"style":1554},[1658],{"type":50,"value":1659},"]",{"type":44,"tag":869,"props":1661,"children":1662},{"style":1607},[1663],{"type":50,"value":1664}," (as of ",{"type":44,"tag":869,"props":1666,"children":1667},{"style":1554},[1668],{"type":50,"value":1568},{"type":44,"tag":869,"props":1670,"children":1671},{"style":1571},[1672],{"type":50,"value":1673},"date",{"type":44,"tag":869,"props":1675,"children":1676},{"style":1554},[1677],{"type":50,"value":1659},{"type":44,"tag":869,"props":1679,"children":1680},{"style":1607},[1681],{"type":50,"value":1682},")\n",{"type":44,"tag":869,"props":1684,"children":1686},{"class":871,"line":1685},8,[1687,1691,1695,1699,1704,1708,1712,1716,1720,1724],{"type":44,"tag":869,"props":1688,"children":1689},{"style":1554},[1690],{"type":50,"value":1640},{"type":44,"tag":869,"props":1692,"children":1693},{"style":1607},[1694],{"type":50,"value":1645},{"type":44,"tag":869,"props":1696,"children":1697},{"style":1554},[1698],{"type":50,"value":1568},{"type":44,"tag":869,"props":1700,"children":1701},{"style":1571},[1702],{"type":50,"value":1703},"schema.other_table",{"type":44,"tag":869,"props":1705,"children":1706},{"style":1554},[1707],{"type":50,"value":1659},{"type":44,"tag":869,"props":1709,"children":1710},{"style":1607},[1711],{"type":50,"value":1664},{"type":44,"tag":869,"props":1713,"children":1714},{"style":1554},[1715],{"type":50,"value":1568},{"type":44,"tag":869,"props":1717,"children":1718},{"style":1571},[1719],{"type":50,"value":1673},{"type":44,"tag":869,"props":1721,"children":1722},{"style":1554},[1723],{"type":50,"value":1659},{"type":44,"tag":869,"props":1725,"children":1726},{"style":1607},[1727],{"type":50,"value":1682},{"type":44,"tag":869,"props":1729,"children":1731},{"class":871,"line":1730},9,[1732,1736,1741,1745,1750,1754],{"type":44,"tag":869,"props":1733,"children":1734},{"style":1554},[1735],{"type":50,"value":1640},{"type":44,"tag":869,"props":1737,"children":1738},{"style":1607},[1739],{"type":50,"value":1740}," File: ",{"type":44,"tag":869,"props":1742,"children":1743},{"style":1554},[1744],{"type":50,"value":1568},{"type":44,"tag":869,"props":1746,"children":1747},{"style":1571},[1748],{"type":50,"value":1749},"filename",{"type":44,"tag":869,"props":1751,"children":1752},{"style":1554},[1753],{"type":50,"value":1659},{"type":44,"tag":869,"props":1755,"children":1756},{"style":1607},[1757],{"type":50,"value":1758}," (source: [where it came from])\n",{"type":44,"tag":869,"props":1760,"children":1762},{"class":871,"line":1761},10,[1763],{"type":44,"tag":869,"props":1764,"children":1765},{"emptyLinePlaceholder":471},[1766],{"type":50,"value":1587},{"type":44,"tag":869,"props":1768,"children":1770},{"class":871,"line":1769},11,[1771,1775],{"type":44,"tag":869,"props":1772,"children":1773},{"style":1554},[1774],{"type":50,"value":1595},{"type":44,"tag":869,"props":1776,"children":1777},{"style":1560},[1778],{"type":50,"value":1779},"Definitions\n",{"type":44,"tag":869,"props":1781,"children":1783},{"class":871,"line":1782},12,[1784,1788],{"type":44,"tag":869,"props":1785,"children":1786},{"style":1554},[1787],{"type":50,"value":1640},{"type":44,"tag":869,"props":1789,"children":1790},{"style":1607},[1791],{"type":50,"value":1792}," [Metric A]: [Exactly how it's calculated]\n",{"type":44,"tag":869,"props":1794,"children":1796},{"class":871,"line":1795},13,[1797,1801],{"type":44,"tag":869,"props":1798,"children":1799},{"style":1554},[1800],{"type":50,"value":1640},{"type":44,"tag":869,"props":1802,"children":1803},{"style":1607},[1804],{"type":50,"value":1805}," [Segment X]: [Exactly how membership is determined]\n",{"type":44,"tag":869,"props":1807,"children":1809},{"class":871,"line":1808},14,[1810,1814,1819,1823,1828],{"type":44,"tag":869,"props":1811,"children":1812},{"style":1554},[1813],{"type":50,"value":1640},{"type":44,"tag":869,"props":1815,"children":1816},{"style":1607},[1817],{"type":50,"value":1818}," [Time period]: [Start date] to [end date], ",{"type":44,"tag":869,"props":1820,"children":1821},{"style":1554},[1822],{"type":50,"value":1568},{"type":44,"tag":869,"props":1824,"children":1825},{"style":1571},[1826],{"type":50,"value":1827},"timezone",{"type":44,"tag":869,"props":1829,"children":1830},{"style":1554},[1831],{"type":50,"value":1579},{"type":44,"tag":869,"props":1833,"children":1835},{"class":871,"line":1834},15,[1836],{"type":44,"tag":869,"props":1837,"children":1838},{"emptyLinePlaceholder":471},[1839],{"type":50,"value":1587},{"type":44,"tag":869,"props":1841,"children":1843},{"class":871,"line":1842},16,[1844,1848],{"type":44,"tag":869,"props":1845,"children":1846},{"style":1554},[1847],{"type":50,"value":1595},{"type":44,"tag":869,"props":1849,"children":1850},{"style":1560},[1851],{"type":50,"value":1852},"Methodology\n",{"type":44,"tag":869,"props":1854,"children":1856},{"class":871,"line":1855},17,[1857,1862],{"type":44,"tag":869,"props":1858,"children":1859},{"style":1554},[1860],{"type":50,"value":1861},"1.",{"type":44,"tag":869,"props":1863,"children":1864},{"style":1607},[1865],{"type":50,"value":1866}," [Step 1 of the analysis approach]\n",{"type":44,"tag":869,"props":1868,"children":1870},{"class":871,"line":1869},18,[1871,1876],{"type":44,"tag":869,"props":1872,"children":1873},{"style":1554},[1874],{"type":50,"value":1875},"2.",{"type":44,"tag":869,"props":1877,"children":1878},{"style":1607},[1879],{"type":50,"value":1880}," [Step 2]\n",{"type":44,"tag":869,"props":1882,"children":1884},{"class":871,"line":1883},19,[1885,1890],{"type":44,"tag":869,"props":1886,"children":1887},{"style":1554},[1888],{"type":50,"value":1889},"3.",{"type":44,"tag":869,"props":1891,"children":1892},{"style":1607},[1893],{"type":50,"value":1894}," [Step 3]\n",{"type":44,"tag":869,"props":1896,"children":1898},{"class":871,"line":1897},20,[1899],{"type":44,"tag":869,"props":1900,"children":1901},{"emptyLinePlaceholder":471},[1902],{"type":50,"value":1587},{"type":44,"tag":869,"props":1904,"children":1906},{"class":871,"line":1905},21,[1907,1911],{"type":44,"tag":869,"props":1908,"children":1909},{"style":1554},[1910],{"type":50,"value":1595},{"type":44,"tag":869,"props":1912,"children":1913},{"style":1560},[1914],{"type":50,"value":1915},"Assumptions and Limitations\n",{"type":44,"tag":869,"props":1917,"children":1919},{"class":871,"line":1918},22,[1920,1924],{"type":44,"tag":869,"props":1921,"children":1922},{"style":1554},[1923],{"type":50,"value":1640},{"type":44,"tag":869,"props":1925,"children":1926},{"style":1607},[1927],{"type":50,"value":1928}," [Assumption 1 and why it's reasonable]\n",{"type":44,"tag":869,"props":1930,"children":1932},{"class":871,"line":1931},23,[1933,1937],{"type":44,"tag":869,"props":1934,"children":1935},{"style":1554},[1936],{"type":50,"value":1640},{"type":44,"tag":869,"props":1938,"children":1939},{"style":1607},[1940],{"type":50,"value":1941}," [Limitation 1 and its potential impact on conclusions]\n",{"type":44,"tag":869,"props":1943,"children":1945},{"class":871,"line":1944},24,[1946],{"type":44,"tag":869,"props":1947,"children":1948},{"emptyLinePlaceholder":471},[1949],{"type":50,"value":1587},{"type":44,"tag":869,"props":1951,"children":1953},{"class":871,"line":1952},25,[1954,1958],{"type":44,"tag":869,"props":1955,"children":1956},{"style":1554},[1957],{"type":50,"value":1595},{"type":44,"tag":869,"props":1959,"children":1960},{"style":1560},[1961],{"type":50,"value":1962},"Key Findings\n",{"type":44,"tag":869,"props":1964,"children":1966},{"class":871,"line":1965},26,[1967,1971],{"type":44,"tag":869,"props":1968,"children":1969},{"style":1554},[1970],{"type":50,"value":1861},{"type":44,"tag":869,"props":1972,"children":1973},{"style":1607},[1974],{"type":50,"value":1975}," [Finding 1 with supporting evidence]\n",{"type":44,"tag":869,"props":1977,"children":1979},{"class":871,"line":1978},27,[1980,1984],{"type":44,"tag":869,"props":1981,"children":1982},{"style":1554},[1983],{"type":50,"value":1875},{"type":44,"tag":869,"props":1985,"children":1986},{"style":1607},[1987],{"type":50,"value":1988}," [Finding 2 with supporting evidence]\n",{"type":44,"tag":869,"props":1990,"children":1992},{"class":871,"line":1991},28,[1993],{"type":44,"tag":869,"props":1994,"children":1995},{"emptyLinePlaceholder":471},[1996],{"type":50,"value":1587},{"type":44,"tag":869,"props":1998,"children":2000},{"class":871,"line":1999},29,[2001,2005],{"type":44,"tag":869,"props":2002,"children":2003},{"style":1554},[2004],{"type":50,"value":1595},{"type":44,"tag":869,"props":2006,"children":2007},{"style":1560},[2008],{"type":50,"value":2009},"SQL Queries\n",{"type":44,"tag":869,"props":2011,"children":2013},{"class":871,"line":2012},30,[2014],{"type":44,"tag":869,"props":2015,"children":2016},{"style":1607},[2017],{"type":50,"value":2018},"[All queries used, with comments]\n",{"type":44,"tag":869,"props":2020,"children":2022},{"class":871,"line":2021},31,[2023],{"type":44,"tag":869,"props":2024,"children":2025},{"emptyLinePlaceholder":471},[2026],{"type":50,"value":1587},{"type":44,"tag":869,"props":2028,"children":2030},{"class":871,"line":2029},32,[2031,2035],{"type":44,"tag":869,"props":2032,"children":2033},{"style":1554},[2034],{"type":50,"value":1595},{"type":44,"tag":869,"props":2036,"children":2037},{"style":1560},[2038],{"type":50,"value":2039},"Caveats\n",{"type":44,"tag":869,"props":2041,"children":2043},{"class":871,"line":2042},33,[2044,2048],{"type":44,"tag":869,"props":2045,"children":2046},{"style":1554},[2047],{"type":50,"value":1640},{"type":44,"tag":869,"props":2049,"children":2050},{"style":1607},[2051],{"type":50,"value":2052}," [Things the reader should know before acting on this]\n",{"type":44,"tag":138,"props":2054,"children":2056},{"id":2055},"code-documentation",[2057],{"type":50,"value":2058},"Code Documentation",{"type":44,"tag":57,"props":2060,"children":2061},{},[2062],{"type":50,"value":2063},"For any code (SQL, Python) that may be reused:",{"type":44,"tag":84,"props":2065,"children":2069},{"className":2066,"code":2067,"language":2068,"meta":93,"style":93},"language-python shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","\"\"\"\nAnalysis: Monthly Cohort Retention\nAuthor: [Name]\nDate: [Date]\nData Source: events table, users table\nLast Validated: [Date] -- results matched dashboard within 2%\n\nPurpose:\n    Calculate monthly user retention cohorts based on first activity date.\n\nAssumptions:\n    - \"Active\" means at least one event in the month\n    - Excludes test\u002Finternal accounts (user_type != 'internal')\n    - Uses UTC dates throughout\n\nOutput:\n    Cohort retention matrix with cohort_month rows and months_since_signup columns.\n    Values are retention rates (0-100%).\n\"\"\"\n","python",[2070],{"type":44,"tag":91,"props":2071,"children":2072},{"__ignoreMap":93},[2073,2081,2089,2097,2105,2113,2121,2128,2136,2144,2151,2159,2167,2175,2183,2190,2198,2206,2214],{"type":44,"tag":869,"props":2074,"children":2075},{"class":871,"line":872},[2076],{"type":44,"tag":869,"props":2077,"children":2078},{},[2079],{"type":50,"value":2080},"\"\"\"\n",{"type":44,"tag":869,"props":2082,"children":2083},{"class":871,"line":881},[2084],{"type":44,"tag":869,"props":2085,"children":2086},{},[2087],{"type":50,"value":2088},"Analysis: Monthly Cohort Retention\n",{"type":44,"tag":869,"props":2090,"children":2091},{"class":871,"line":890},[2092],{"type":44,"tag":869,"props":2093,"children":2094},{},[2095],{"type":50,"value":2096},"Author: [Name]\n",{"type":44,"tag":869,"props":2098,"children":2099},{"class":871,"line":1603},[2100],{"type":44,"tag":869,"props":2101,"children":2102},{},[2103],{"type":50,"value":2104},"Date: [Date]\n",{"type":44,"tag":869,"props":2106,"children":2107},{"class":871,"line":1613},[2108],{"type":44,"tag":869,"props":2109,"children":2110},{},[2111],{"type":50,"value":2112},"Data Source: events table, users table\n",{"type":44,"tag":869,"props":2114,"children":2115},{"class":871,"line":1621},[2116],{"type":44,"tag":869,"props":2117,"children":2118},{},[2119],{"type":50,"value":2120},"Last Validated: [Date] -- results matched dashboard within 2%\n",{"type":44,"tag":869,"props":2122,"children":2123},{"class":871,"line":1634},[2124],{"type":44,"tag":869,"props":2125,"children":2126},{"emptyLinePlaceholder":471},[2127],{"type":50,"value":1587},{"type":44,"tag":869,"props":2129,"children":2130},{"class":871,"line":1685},[2131],{"type":44,"tag":869,"props":2132,"children":2133},{},[2134],{"type":50,"value":2135},"Purpose:\n",{"type":44,"tag":869,"props":2137,"children":2138},{"class":871,"line":1730},[2139],{"type":44,"tag":869,"props":2140,"children":2141},{},[2142],{"type":50,"value":2143},"    Calculate monthly user retention cohorts based on first activity date.\n",{"type":44,"tag":869,"props":2145,"children":2146},{"class":871,"line":1761},[2147],{"type":44,"tag":869,"props":2148,"children":2149},{"emptyLinePlaceholder":471},[2150],{"type":50,"value":1587},{"type":44,"tag":869,"props":2152,"children":2153},{"class":871,"line":1769},[2154],{"type":44,"tag":869,"props":2155,"children":2156},{},[2157],{"type":50,"value":2158},"Assumptions:\n",{"type":44,"tag":869,"props":2160,"children":2161},{"class":871,"line":1782},[2162],{"type":44,"tag":869,"props":2163,"children":2164},{},[2165],{"type":50,"value":2166},"    - \"Active\" means at least one event in the month\n",{"type":44,"tag":869,"props":2168,"children":2169},{"class":871,"line":1795},[2170],{"type":44,"tag":869,"props":2171,"children":2172},{},[2173],{"type":50,"value":2174},"    - Excludes test\u002Finternal accounts (user_type != 'internal')\n",{"type":44,"tag":869,"props":2176,"children":2177},{"class":871,"line":1808},[2178],{"type":44,"tag":869,"props":2179,"children":2180},{},[2181],{"type":50,"value":2182},"    - Uses UTC dates throughout\n",{"type":44,"tag":869,"props":2184,"children":2185},{"class":871,"line":1834},[2186],{"type":44,"tag":869,"props":2187,"children":2188},{"emptyLinePlaceholder":471},[2189],{"type":50,"value":1587},{"type":44,"tag":869,"props":2191,"children":2192},{"class":871,"line":1842},[2193],{"type":44,"tag":869,"props":2194,"children":2195},{},[2196],{"type":50,"value":2197},"Output:\n",{"type":44,"tag":869,"props":2199,"children":2200},{"class":871,"line":1855},[2201],{"type":44,"tag":869,"props":2202,"children":2203},{},[2204],{"type":50,"value":2205},"    Cohort retention matrix with cohort_month rows and months_since_signup columns.\n",{"type":44,"tag":869,"props":2207,"children":2208},{"class":871,"line":1869},[2209],{"type":44,"tag":869,"props":2210,"children":2211},{},[2212],{"type":50,"value":2213},"    Values are retention rates (0-100%).\n",{"type":44,"tag":869,"props":2215,"children":2216},{"class":871,"line":1883},[2217],{"type":44,"tag":869,"props":2218,"children":2219},{},[2220],{"type":50,"value":2080},{"type":44,"tag":138,"props":2222,"children":2224},{"id":2223},"version-control-for-analyses",[2225],{"type":50,"value":2226},"Version Control for Analyses",{"type":44,"tag":102,"props":2228,"children":2229},{},[2230,2235,2240,2245],{"type":44,"tag":106,"props":2231,"children":2232},{},[2233],{"type":50,"value":2234},"Save queries and code in version control (git) or a shared docs system",{"type":44,"tag":106,"props":2236,"children":2237},{},[2238],{"type":50,"value":2239},"Note the date of the data snapshot used",{"type":44,"tag":106,"props":2241,"children":2242},{},[2243],{"type":50,"value":2244},"If an analysis is re-run with updated data, document what changed and why",{"type":44,"tag":106,"props":2246,"children":2247},{},[2248],{"type":50,"value":2249},"Link to prior versions of recurring analyses for trend comparison",{"type":44,"tag":77,"props":2251,"children":2253},{"id":2252},"examples",[2254],{"type":50,"value":962},{"type":44,"tag":84,"props":2256,"children":2259},{"className":2257,"code":2258,"language":50},[87],"\u002Fvalidate-data Review this quarterly revenue analysis before I send it to the exec team: [analysis]\n",[2260],{"type":44,"tag":91,"props":2261,"children":2262},{"__ignoreMap":93},[2263],{"type":50,"value":2258},{"type":44,"tag":84,"props":2265,"children":2268},{"className":2266,"code":2267,"language":50},[87],"\u002Fvalidate-data Check my churn analysis -- I'm comparing Q4 churn rates to Q3 but Q4 has a shorter measurement window\n",[2269],{"type":44,"tag":91,"props":2270,"children":2271},{"__ignoreMap":93},[2272],{"type":50,"value":2267},{"type":44,"tag":84,"props":2274,"children":2277},{"className":2275,"code":2276,"language":50},[87],"\u002Fvalidate-data Here's a SQL query and its results for our conversion funnel. Does the logic look right? [query + results]\n",[2278],{"type":44,"tag":91,"props":2279,"children":2280},{"__ignoreMap":93},[2281],{"type":50,"value":2276},{"type":44,"tag":77,"props":2283,"children":2285},{"id":2284},"tips",[2286],{"type":50,"value":2287},"Tips",{"type":44,"tag":102,"props":2289,"children":2290},{},[2291,2296,2301,2306],{"type":44,"tag":106,"props":2292,"children":2293},{},[2294],{"type":50,"value":2295},"Run \u002Fvalidate-data before any high-stakes presentation or decision",{"type":44,"tag":106,"props":2297,"children":2298},{},[2299],{"type":50,"value":2300},"Even quick analyses benefit from a sanity check -- it takes a minute and can save your credibility",{"type":44,"tag":106,"props":2302,"children":2303},{},[2304],{"type":50,"value":2305},"If the validation finds issues, fix them and re-validate",{"type":44,"tag":106,"props":2307,"children":2308},{},[2309],{"type":50,"value":2310},"Share the validation output alongside your analysis to build stakeholder confidence",{"type":44,"tag":2312,"props":2313,"children":2314},"style",{},[2315],{"type":50,"value":2316},"html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"items":2318,"total":2428},[2319,2335,2349,2360,2378,2397,2413],{"slug":2320,"name":2320,"fn":2321,"description":2322,"org":2323,"tags":2324,"stars":26,"repoUrl":27,"updatedAt":2334},"accessibility-review","run WCAG accessibility audits","Run a WCAG 2.1 AA accessibility audit on a design or page. Trigger with \"audit accessibility\", \"check a11y\", \"is this accessible?\", or when reviewing a design for color contrast, keyboard navigation, touch target size, or screen reader behavior before handoff.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[2325,2328,2331],{"name":2326,"slug":2327,"type":16},"Accessibility","accessibility",{"name":2329,"slug":2330,"type":16},"Design","design",{"name":2332,"slug":2333,"type":16},"WCAG","wcag","2026-04-06T17:58:05.682394",{"slug":2336,"name":2336,"fn":2337,"description":2338,"org":2339,"tags":2340,"stars":26,"repoUrl":27,"updatedAt":2348},"account-research","research accounts for sales intel","Research a company or person and get actionable sales intel. Works standalone with web search, supercharged when you connect enrichment tools or your CRM. Trigger with \"research [company]\", \"look up [person]\", \"intel on [prospect]\", \"who is [name] at [company]\", or \"tell me about [company]\".",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[2341,2344,2345],{"name":2342,"slug":2343,"type":16},"CRM","crm",{"name":14,"slug":15,"type":16},{"name":2346,"slug":2347,"type":16},"Sales","sales","2026-04-06T17:56:41.410418",{"slug":2350,"name":2350,"fn":2351,"description":2352,"org":2353,"tags":2354,"stars":26,"repoUrl":27,"updatedAt":2359},"analyze","answer data questions and run analyses","Answer data questions -- from quick lookups to full analyses. Use when looking up a single metric, investigating what's driving a trend or drop, comparing segments over time, or preparing a formal data report for stakeholders.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[2355,2356,2357],{"name":24,"slug":25,"type":16},{"name":21,"slug":22,"type":16},{"name":2358,"slug":863,"type":16},"SQL","2026-04-06T17:57:21.593647",{"slug":2361,"name":2361,"fn":2362,"description":2363,"org":2364,"tags":2365,"stars":26,"repoUrl":27,"updatedAt":2377},"architecture","create and evaluate architecture decision records","Create or evaluate an architecture decision record (ADR). Use when choosing between technologies (e.g., Kafka vs SQS), documenting a design decision with trade-offs and consequences, reviewing a system design proposal, or designing a new component from requirements and constraints.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[2366,2369,2371,2374],{"name":2367,"slug":2368,"type":16},"ADR","adr",{"name":2370,"slug":2361,"type":16},"Architecture",{"name":2372,"slug":2373,"type":16},"Documentation","documentation",{"name":2375,"slug":2376,"type":16},"Engineering","engineering","2026-04-06T17:57:49.26444",{"slug":2379,"name":2379,"fn":2380,"description":2381,"org":2382,"tags":2383,"stars":26,"repoUrl":27,"updatedAt":2396},"audit-support","support SOX 404 control testing","Support SOX 404 compliance with control testing methodology, sample selection, and documentation standards. Use when generating testing workpapers, selecting audit samples, classifying control deficiencies, or preparing for internal or external audits.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[2384,2387,2390,2393],{"name":2385,"slug":2386,"type":16},"Audit","audit",{"name":2388,"slug":2389,"type":16},"Finance","finance",{"name":2391,"slug":2392,"type":16},"Regulatory Compliance","regulatory-compliance",{"name":2394,"slug":2395,"type":16},"SOX","sox","2026-04-06T17:57:36.714815",{"slug":2398,"name":2398,"fn":2399,"description":2400,"org":2401,"tags":2402,"stars":26,"repoUrl":27,"updatedAt":2412},"brand-review","review content against brand voice","Review content against your brand voice, style guide, and messaging pillars, flagging deviations by severity with specific before\u002Fafter fixes. Use when checking a draft before it ships, when auditing copy for voice consistency and terminology, or when screening for unsubstantiated claims, missing disclaimers, and other legal flags.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[2403,2406,2409],{"name":2404,"slug":2405,"type":16},"Branding","branding",{"name":2407,"slug":2408,"type":16},"Marketing","marketing",{"name":2410,"slug":2411,"type":16},"Writing","writing","2026-04-06T17:58:19.548331",{"slug":2414,"name":2414,"fn":2415,"description":2416,"org":2417,"tags":2418,"stars":26,"repoUrl":27,"updatedAt":2427},"brand-voice-enforcement","enforce brand voice in content","This skill applies brand guidelines to content creation. It should be used when the user asks to \"write an email\", \"draft a proposal\", \"create a pitch deck\", \"write a LinkedIn post\", \"draft a presentation\", \"write a Slack message\", \"draft sales content\", or any content creation request where brand voice should be applied. Also triggers on \"on-brand\", \"brand voice\", \"enforce voice\", \"apply brand guidelines\", \"brand-aligned content\", \"write in our voice\", \"use our brand tone\", \"make this sound like us\", \"rewrite this in our tone\", or \"this doesn't sound on-brand\". Not for generating guidelines from scratch (use guideline-generation) or discovering brand materials (use discover-brand).\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[2419,2420,2423,2426],{"name":2404,"slug":2405,"type":16},{"name":2421,"slug":2422,"type":16},"Communications","communications",{"name":2424,"slug":2425,"type":16},"Content Creation","content-creation",{"name":2410,"slug":2411,"type":16},"2026-04-06T18:00:23.528956",200,{"items":2430,"total":2607},[2431,2450,2462,2474,2493,2504,2525,2545,2555,2570,2578,2591],{"slug":2432,"name":2432,"fn":2433,"description":2434,"org":2435,"tags":2436,"stars":2447,"repoUrl":2448,"updatedAt":2449},"algorithmic-art","create algorithmic art with p5.js","Creating algorithmic art using p5.js with seeded randomness and interactive parameter exploration. Use this when users request creating art using code, generative art, algorithmic art, flow fields, or particle systems. Create original algorithmic art rather than copying existing artists' work to avoid copyright violations.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[2437,2440,2441,2444],{"name":2438,"slug":2439,"type":16},"Creative","creative",{"name":2329,"slug":2330,"type":16},{"name":2442,"slug":2443,"type":16},"Generative Art","generative-art",{"name":2445,"slug":2446,"type":16},"JavaScript","javascript",161831,"https:\u002F\u002Fgithub.com\u002Fanthropics\u002Fskills","2026-04-06T17:56:15.455818",{"slug":2451,"name":2451,"fn":2452,"description":2453,"org":2454,"tags":2455,"stars":2447,"repoUrl":2448,"updatedAt":2461},"brand-guidelines","apply Anthropic brand colors and typography","Applies Anthropic's official brand colors and typography to any sort of artifact that may benefit from having Anthropic's look-and-feel. Use it when brand colors or style guidelines, visual formatting, or company design standards apply.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[2456,2457,2458],{"name":2404,"slug":2405,"type":16},{"name":2329,"slug":2330,"type":16},{"name":2459,"slug":2460,"type":16},"Typography","typography","2026-04-06T17:56:05.042852",{"slug":2463,"name":2463,"fn":2464,"description":2465,"org":2466,"tags":2467,"stars":2447,"repoUrl":2448,"updatedAt":2473},"canvas-design","create posters and visual art as PNG or PDF","Create beautiful visual art in .png and .pdf documents using design philosophy. You should use this skill when the user asks to create a poster, piece of art, design, or other static piece. Create original visual designs, never copying existing artists' work to avoid copyright violations.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[2468,2469,2470],{"name":2438,"slug":2439,"type":16},{"name":2329,"slug":2330,"type":16},{"name":2471,"slug":2472,"type":16},"PDF","pdf","2026-04-06T17:56:03.794732",{"slug":2475,"name":2475,"fn":2476,"description":2477,"org":2478,"tags":2479,"stars":2447,"repoUrl":2448,"updatedAt":2492},"claude-api","build apps with the Claude API","Reference for the Claude API \u002F Anthropic SDK — model ids, pricing, params, streaming, tool use, MCP, agents, caching, token counting, model migration.\nTRIGGER — read BEFORE opening the target file; don't skip because it \"looks like a one-liner\" — whenever: the prompt names Claude\u002FAnthropic in any form (Claude, Anthropic, Fable, Opus, Sonnet, Haiku, `anthropic`, `@anthropic-ai`, `claude-*`, `us.anthropic.*`, `[1m]`); the user asks about an LLM (pricing\u002Fmodel choice\u002Flimits\u002Fcaching) — never answer from memory; OR the task is LLM-shaped with provider unstated (agent\u002FMCP\u002Ftool-definition\u002Fmulti-agent\u002FRAG\u002FLLM-judge\u002Fcomputer-use; generate\u002Fsummarize\u002Fextract\u002Fclassify\u002Frewrite\u002Fconverse over NL; debugging refusals\u002Fcutoffs\u002Fstreaming\u002Ftool-calls\u002Ftokens).\nSKIP only when another provider is being worked on (overrides all triggers): OpenAI\u002FGPT\u002FGemini\u002FLlama\u002FMistral\u002FCohere\u002FOllama named in the query; OR `grep -rE 'openai|langchain_openai|google.generativeai|genai|mistralai|cohere|ollama'` over the project hits (run this grep FIRST if no provider named — don't Read the file).",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[2480,2483,2484,2487,2489],{"name":2481,"slug":2482,"type":16},"Agents","agents",{"name":9,"slug":8,"type":16},{"name":2485,"slug":2486,"type":16},"Anthropic SDK","anthropic-sdk",{"name":2488,"slug":2475,"type":16},"Claude API",{"name":2490,"slug":2491,"type":16},"LLM","llm","2026-07-28T05:36:08.213335",{"slug":2494,"name":2494,"fn":2495,"description":2496,"org":2497,"tags":2498,"stars":2447,"repoUrl":2448,"updatedAt":2503},"doc-coauthoring","co-author documentation and technical specs","Guide users through a structured workflow for co-authoring documentation. Use when user wants to write documentation, proposals, technical specs, decision docs, or similar structured content. This workflow helps users efficiently transfer context, refine content through iteration, and verify the doc works for readers. Trigger when user mentions writing docs, creating proposals, drafting specs, or similar documentation tasks.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[2499,2500],{"name":2372,"slug":2373,"type":16},{"name":2501,"slug":2502,"type":16},"Technical Writing","technical-writing","2026-04-06T17:56:14.18897",{"slug":2505,"name":2505,"fn":2506,"description":2507,"org":2508,"tags":2509,"stars":2447,"repoUrl":2448,"updatedAt":2524},"docx","create and edit Word documents","Use this skill whenever the user wants to create, read, edit, or manipulate Word documents (.docx files) or Word templates (.dotx files). Triggers include: any mention of 'Word doc', 'word document', '.docx', '.dotx', or requests to produce professional documents with formatting like tables of contents, headings, page numbers, or letterheads. Also use when extracting or reorganizing content from .docx or .dotx files, inserting or replacing images in documents, performing find-and-replace in Word files, working with tracked changes or comments, or converting content into a polished Word document. If the user asks for a 'report', 'memo', 'letter', 'template', or similar deliverable as a Word or .docx file, use this skill. Do NOT use for PDFs, spreadsheets, Google Docs, or general coding tasks unrelated to document generation.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[2510,2513,2515,2518,2521],{"name":2511,"slug":2512,"type":16},"Documents","documents",{"name":2514,"slug":2505,"type":16},"DOCX",{"name":2516,"slug":2517,"type":16},"Office","office",{"name":2519,"slug":2520,"type":16},"Templates","templates",{"name":2522,"slug":2523,"type":16},"Word","word","2026-07-18T05:16:23.136271",{"slug":2526,"name":2526,"fn":2527,"description":2528,"org":2529,"tags":2530,"stars":2447,"repoUrl":2448,"updatedAt":2544},"frontend-design","design production-grade frontend interfaces","Guidance for distinctive, intentional visual design when building new UI or reshaping an existing one. Helps with aesthetic direction, typography, and making choices that don't read as templated defaults.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[2531,2532,2535,2538,2541],{"name":2329,"slug":2330,"type":16},{"name":2533,"slug":2534,"type":16},"Frontend","frontend",{"name":2536,"slug":2537,"type":16},"React","react",{"name":2539,"slug":2540,"type":16},"Tailwind CSS","tailwind-css",{"name":2542,"slug":2543,"type":16},"UI Components","ui-components","2026-04-06T17:56:16.723469",{"slug":2546,"name":2546,"fn":2547,"description":2548,"org":2549,"tags":2550,"stars":2447,"repoUrl":2448,"updatedAt":2554},"internal-comms","write internal company communications","A set of resources to help me write all kinds of internal communications, using the formats that my company likes to use. Claude should use this skill whenever asked to write some sort of internal communications (status reports, leadership updates, 3P updates, company newsletters, FAQs, incident reports, project updates, etc.).",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[2551,2552,2553],{"name":2421,"slug":2422,"type":16},{"name":2519,"slug":2520,"type":16},{"name":2410,"slug":2411,"type":16},"2026-04-06T17:56:20.695522",{"slug":2556,"name":2556,"fn":2557,"description":2558,"org":2559,"tags":2560,"stars":2447,"repoUrl":2448,"updatedAt":2569},"mcp-builder","build MCP servers","Guide for creating high-quality MCP (Model Context Protocol) servers that enable LLMs to interact with external services through well-designed tools. Use when building MCP servers to integrate external APIs or services, whether in Python (FastMCP) or Node\u002FTypeScript (MCP SDK).",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[2561,2562,2565,2566],{"name":2481,"slug":2482,"type":16},{"name":2563,"slug":2564,"type":16},"API Development","api-development",{"name":2490,"slug":2491,"type":16},{"name":2567,"slug":2568,"type":16},"MCP","mcp","2026-04-06T17:56:10.357665",{"slug":2472,"name":2472,"fn":2571,"description":2572,"org":2573,"tags":2574,"stars":2447,"repoUrl":2448,"updatedAt":2577},"read edit and manipulate PDF files","Use this skill whenever the user wants to do anything with PDF files. This includes reading or extracting text\u002Ftables from PDFs, combining or merging multiple PDFs into one, splitting PDFs apart, rotating pages, adding watermarks, creating new PDFs, filling PDF forms, encrypting\u002Fdecrypting PDFs, extracting images, and OCR on scanned PDFs to make them searchable. If the user mentions a .pdf file or asks to produce one, use this skill.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[2575,2576],{"name":2511,"slug":2512,"type":16},{"name":2471,"slug":2472,"type":16},"2026-04-06T17:56:02.483316",{"slug":2579,"name":2579,"fn":2580,"description":2581,"org":2582,"tags":2583,"stars":2447,"repoUrl":2448,"updatedAt":2590},"pptx","create and edit PowerPoint presentations","Use this skill any time a .pptx or .potx file is involved in any way — as input, output, or both. This includes: creating slide decks, pitch decks, or presentations; reading, parsing, or extracting text from any .pptx or .potx file (even if the extracted content will be used elsewhere, like in an email or summary); editing, modifying, or updating existing presentations; combining or splitting slide files; working with templates (.potx), layouts, speaker notes, or comments. Trigger whenever the user mentions \"deck,\" \"slides,\" \"presentation,\" or references a .pptx or .potx filename, regardless of what they plan to do with the content afterward. If a .pptx or .potx file needs to be opened, created, or touched, use this skill.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[2584,2587],{"name":2585,"slug":2586,"type":16},"PowerPoint","powerpoint",{"name":2588,"slug":2589,"type":16},"Presentations","presentations","2026-07-18T05:16:24.1471",{"slug":2592,"name":2592,"fn":2593,"description":2594,"org":2595,"tags":2596,"stars":2447,"repoUrl":2448,"updatedAt":2606},"skill-creator","create and optimize agent skills","Create new skills, modify and improve existing skills, and measure skill performance. Use when users want to create a skill from scratch, edit, or optimize an existing skill, run evals to test a skill, benchmark skill performance with variance analysis, or optimize a skill's description for better triggering accuracy.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[2597,2598,2599,2602,2605],{"name":2481,"slug":2482,"type":16},{"name":2372,"slug":2373,"type":16},{"name":2600,"slug":2601,"type":16},"Evals","evals",{"name":2603,"slug":2604,"type":16},"Performance","performance",{"name":2501,"slug":2502,"type":16},"2026-04-19T06:45:40.804",490]