{"id":"94a07654-594e-4038-b5db-7a0e5609f5e7","shortId":"HEL9BH","kind":"skill","title":"Xlsx","tagline":"Skills skill by Anthropics","description":"# Requirements for Outputs\n\n## All Excel files\n\n### Professional Font\n- Use a consistent, professional font (e.g., Arial, Times New Roman) for all deliverables unless otherwise instructed by the user\n\n### Zero Formula Errors\n- Every Excel model MUST be delivered with ZERO formula errors (#REF!, #DIV/0!, #VALUE!, #N/A, #NAME?)\n\n### Preserve Existing Templates (when updating templates)\n- Study and EXACTLY match existing format, style, and conventions when modifying files\n- Never impose standardized formatting on files with established patterns\n- Existing template conventions ALWAYS override these guidelines\n\n## Financial models\n\n### Color Coding Standards\nUnless otherwise stated by the user or existing template\n\n#### Industry-Standard Color Conventions\n- **Blue text (RGB: 0,0,255)**: Hardcoded inputs, and numbers users will change for scenarios\n- **Black text (RGB: 0,0,0)**: ALL formulas and calculations\n- **Green text (RGB: 0,128,0)**: Links pulling from other worksheets within same workbook\n- **Red text (RGB: 255,0,0)**: External links to other files\n- **Yellow background (RGB: 255,255,0)**: Key assumptions needing attention or cells that need to be updated\n\n### Number Formatting Standards\n\n#### Required Format Rules\n- **Years**: Format as text strings (e.g., \"2024\" not \"2,024\")\n- **Currency**: Use $#,##0 format; ALWAYS specify units in headers (\"Revenue ($mm)\")\n- **Zeros**: Use number formatting to make all zeros \"-\", including percentages (e.g., \"$#,##0;($#,##0);-\")\n- **Percentages**: Default to 0.0% format (one decimal)\n- **Multiples**: Format as 0.0x for valuation multiples (EV/EBITDA, P/E)\n- **Negative numbers**: Use parentheses (123) not minus -123\n\n### Formula Construction Rules\n\n#### Assumptions Placement\n- Place ALL assumptions (growth rates, margins, multiples, etc.) in separate assumption cells\n- Use cell references instead of hardcoded values in formulas\n- Example: Use =B5*(1+$B$6) instead of =B5*1.05\n\n#### Formula Error Prevention\n- Verify all cell references are correct\n- Check for off-by-one errors in ranges\n- Ensure consistent formulas across all projection periods\n- Test with edge cases (zero values, negative numbers)\n- Verify no unintended circular references\n\n#### Documentation Requirements for Hardcodes\n- Comment or in cells beside (if end of table). Format: \"Source: [System/Document], [Date], [Specific Reference], [URL if applicable]\"\n- Examples:\n  - \"Source: Company 10-K, FY2024, Page 45, Revenue Note, [SEC EDGAR URL]\"\n  - \"Source: Company 10-Q, Q2 2025, Exhibit 99.1, [SEC EDGAR URL]\"\n  - \"Source: Bloomberg Terminal, 8/15/2025, AAPL US Equity\"\n  - \"Source: FactSet, 8/20/2025, Consensus Estimates Screen\"\n\n# XLSX creation, editing, and analysis\n\n## Overview\n\nA user may ask you to create, edit, or analyze the contents of an .xlsx file. You have different tools and workflows available for different tasks.\n\n## Important Requirements\n\n**LibreOffice Required for Formula Recalculation**: You can assume LibreOffice is installed for recalculating formula values using the `scripts/recalc.py` script. The script automatically configures LibreOffice on first run, including in sandboxed environments where Unix sockets are restricted (handled by `scripts/office/soffice.py`)\n\n## Reading and analyzing data\n\n### Data analysis with pandas\nFor data analysis, visualization, and basic operations, use **pandas** which provides powerful data manipulation capabilities:\n\n```python\nimport pandas as pd\n\n# Read Excel\ndf = pd.read_excel('file.xlsx')  # Default: first sheet\nall_sheets = pd.read_excel('file.xlsx', sheet_name=None)  # All sheets as dict\n\n# Analyze\ndf.head()      # Preview data\ndf.info()      # Column info\ndf.describe()  # Statistics\n\n# Write Excel\ndf.to_excel('output.xlsx', index=False)\n```\n\n## Excel File Workflows\n\n## CRITICAL: Use Formulas, Not Hardcoded Values\n\n**Always use Excel formulas instead of calculating values in Python and hardcoding them.** This ensures the spreadsheet remains dynamic and updateable.\n\n### ❌ WRONG - Hardcoding Calculated Values\n```python\n# Bad: Calculating in Python and hardcoding result\ntotal = df['Sales'].sum()\nsheet['B10'] = total  # Hardcodes 5000\n\n# Bad: Computing growth rate in Python\ngrowth = (df.iloc[-1]['Revenue'] - df.iloc[0]['Revenue']) / df.iloc[0]['Revenue']\nsheet['C5'] = growth  # Hardcodes 0.15\n\n# Bad: Python calculation for average\navg = sum(values) / len(values)\nsheet['D20'] = avg  # Hardcodes 42.5\n```\n\n### ✅ CORRECT - Using Excel Formulas\n```python\n# Good: Let Excel calculate the sum\nsheet['B10'] = '=SUM(B2:B9)'\n\n# Good: Growth rate as Excel formula\nsheet['C5'] = '=(C4-C2)/C2'\n\n# Good: Average using Excel function\nsheet['D20'] = '=AVERAGE(D2:D19)'\n```\n\nThis applies to ALL calculations - totals, percentages, ratios, differences, etc. The spreadsheet should be able to recalculate when source data changes.\n\n## Common Workflow\n1. **Choose tool**: pandas for data, openpyxl for formulas/formatting\n2. **Create/Load**: Create new workbook or load existing file\n3. **Modify**: Add/edit data, formulas, and formatting\n4. **Save**: Write to file\n5. **Recalculate formulas (MANDATORY IF USING FORMULAS)**: Use the scripts/recalc.py script\n   ```bash\n   python scripts/recalc.py output.xlsx\n   ```\n6. **Verify and fix any errors**: \n   - The script returns JSON with error details\n   - If `status` is `errors_found`, check `error_summary` for specific error types and locations\n   - Fix the identified errors and recalculate again\n   - Common errors to fix:\n     - `#REF!`: Invalid cell references\n     - `#DIV/0!`: Division by zero\n     - `#VALUE!`: Wrong data type in formula\n     - `#NAME?`: Unrecognized formula name\n\n### Creating new Excel files\n\n```python\n# Using openpyxl for formulas and formatting\nfrom openpyxl import Workbook\nfrom openpyxl.styles import Font, PatternFill, Alignment\n\nwb = Workbook()\nsheet = wb.active\n\n# Add data\nsheet['A1'] = 'Hello'\nsheet['B1'] = 'World'\nsheet.append(['Row', 'of', 'data'])\n\n# Add formula\nsheet['B2'] = '=SUM(A1:A10)'\n\n# Formatting\nsheet['A1'].font = Font(bold=True, color='FF0000')\nsheet['A1'].fill = PatternFill('solid', start_color='FFFF00')\nsheet['A1'].alignment = Alignment(horizontal='center')\n\n# Column width\nsheet.column_dimensions['A'].width = 20\n\nwb.save('output.xlsx')\n```\n\n### Editing existing Excel files\n\n```python\n# Using openpyxl to preserve formulas and formatting\nfrom openpyxl import load_workbook\n\n# Load existing file\nwb = load_workbook('existing.xlsx')\nsheet = wb.active  # or wb['SheetName'] for specific sheet\n\n# Working with multiple sheets\nfor sheet_name in wb.sheetnames:\n    sheet = wb[sheet_name]\n    print(f\"Sheet: {sheet_name}\")\n\n# Modify cells\nsheet['A1'] = 'New Value'\nsheet.insert_rows(2)  # Insert row at position 2\nsheet.delete_cols(3)  # Delete column 3\n\n# Add new sheet\nnew_sheet = wb.create_sheet('NewSheet')\nnew_sheet['A1'] = 'Data'\n\nwb.save('modified.xlsx')\n```\n\n## Recalculating formulas\n\nExcel files created or modified by openpyxl contain formulas as strings but not calculated values. Use the provided `scripts/recalc.py` script to recalculate formulas:\n\n```bash\npython scripts/recalc.py <excel_file> [timeout_seconds]\n```\n\nExample:\n```bash\npython scripts/recalc.py output.xlsx 30\n```\n\nThe script:\n- Automatically sets up LibreOffice macro on first run\n- Recalculates all formulas in all sheets\n- Scans ALL cells for Excel errors (#REF!, #DIV/0!, etc.)\n- Returns JSON with detailed error locations and counts\n- Works on both Linux and macOS\n\n## Formula Verification Checklist\n\nQuick checks to ensure formulas work correctly:\n\n### Essential Verification\n- [ ] **Test 2-3 sample references**: Verify they pull correct values before building full model\n- [ ] **Column mapping**: Confirm Excel columns match (e.g., column 64 = BL, not BK)\n- [ ] **Row offset**: Remember Excel rows are 1-indexed (DataFrame row 5 = Excel row 6)\n\n### Common Pitfalls\n- [ ] **NaN handling**: Check for null values with `pd.notna()`\n- [ ] **Far-right columns**: FY data often in columns 50+ \n- [ ] **Multiple matches**: Search all occurrences, not just first\n- [ ] **Division by zero**: Check denominators before using `/` in formulas (#DIV/0!)\n- [ ] **Wrong references**: Verify all cell references point to intended cells (#REF!)\n- [ ] **Cross-sheet references**: Use correct format (Sheet1!A1) for linking sheets\n\n### Formula Testing Strategy\n- [ ] **Start small**: Test formulas on 2-3 cells before applying broadly\n- [ ] **Verify dependencies**: Check all cells referenced in formulas exist\n- [ ] **Test edge cases**: Include zero, negative, and very large values\n\n### Interpreting scripts/recalc.py Output\nThe script returns JSON with error details:\n```json\n{\n  \"status\": \"success\",           // or \"errors_found\"\n  \"total_errors\": 0,              // Total error count\n  \"total_formulas\": 42,           // Number of formulas in file\n  \"error_summary\": {              // Only present if errors found\n    \"#REF!\": {\n      \"count\": 2,\n      \"locations\": [\"Sheet1!B5\", \"Sheet1!C10\"]\n    }\n  }\n}\n```\n\n## Best Practices\n\n### Library Selection\n- **pandas**: Best for data analysis, bulk operations, and simple data export\n- **openpyxl**: Best for complex formatting, formulas, and Excel-specific features\n\n### Working with openpyxl\n- Cell indices are 1-based (row=1, column=1 refers to cell A1)\n- Use `data_only=True` to read calculated values: `load_workbook('file.xlsx', data_only=True)`\n- **Warning**: If opened with `data_only=True` and saved, formulas are replaced with values and permanently lost\n- For large files: Use `read_only=True` for reading or `write_only=True` for writing\n- Formulas are preserved but not evaluated - use scripts/recalc.py to update values\n\n### Working with pandas\n- Specify data types to avoid inference issues: `pd.read_excel('file.xlsx', dtype={'id': str})`\n- For large files, read specific columns: `pd.read_excel('file.xlsx', usecols=['A', 'C', 'E'])`\n- Handle dates properly: `pd.read_excel('file.xlsx', parse_dates=['date_column'])`\n\n## Code Style Guidelines\n**IMPORTANT**: When generating Python code for Excel operations:\n- Write minimal, concise Python code without unnecessary comments\n- Avoid verbose variable names and redundant operations\n- Avoid unnecessary print statements\n\n**For Excel files themselves**:\n- Add comments to cells with complex formulas or important assumptions\n- Document data sources for hardcoded values\n- Include notes for key calculations and model sections","tags":["xlsx","skills","anthropics"],"capabilities":["skill","source-anthropics","category-skills"],"categories":["skills"],"synonyms":[],"warnings":[],"endpointUrl":"https://skills.sh/anthropics/skills/xlsx","protocol":"skill","transport":"skills-sh","auth":{"type":"none","details":{"install_from":"skills.sh"}},"qualityScore":"0.500","qualityRationale":"deterministic score 0.50 from registry signals: · indexed on skills.sh · published under anthropics/skills","verified":false,"liveness":"unknown","lastLivenessCheck":null,"agentReviews":{"count":0,"score_avg":null,"cost_usd_avg":null,"success_rate":null,"latency_p50_ms":null,"narrative_summary":null,"summary_updated_at":null},"enrichmentModel":"deterministic:skill:v1","enrichmentVersion":1,"enrichedAt":"2026-04-24T02:40:12.427Z","embedding":null,"createdAt":"2026-04-18T20:23:44.345Z","updatedAt":"2026-04-24T02:40:12.427Z","lastSeenAt":"2026-04-24T02:40:12.427Z","tsv":"'-1':566 '-123':235 '-3':1005,1113 '/c2':621 '0':107,108,122,123,124,132,134,147,148,159,189,209,210,569,572,1155 '0.0':214,221 '0.15':578 '024':186 '1':265,655,1035,1214,1217,1219 '1.05':271 '10':335,347 '123':232 '128':133 '2':185,664,890,895,1004,1112,1176 '20':829 '2024':183 '2025':350 '255':109,146,157,158 '3':673,898,901 '30':951 '4':680 '42':1161 '42.5':593 '45':339 '5':685,1039 '50':1062 '5000':557 '6':267,700,1042 '64':1025 '8/15/2025':359 '8/20/2025':365 '99.1':352 'a1':784,798,802,810,818,885,912,1100,1223 'a10':799 'aapl':360 'abl':646 'across':293 'add':781,793,902,1354 'add/edit':675 'align':776,819,820 'alway':81,191,516 'analysi':373,447,452,1190 'analyz':384,444,491 'anthrop':5 'appli':633,1116 'applic':331 'arial':20 'ask':378 'assum':410 'assumpt':161,239,243,251,1363 'attent':163 'automat':424,954 'avail':397 'averag':583,623,629 'avg':584,591 'avoid':1288,1339,1346 'b':266 'b1':787 'b10':554,606 'b2':608,796 'b5':264,270,1179 'b9':609 'background':155 'bad':542,558,579 'base':1215 'bash':696,941,947 'basic':455 'besid':318 'best':1182,1187,1198 'bk':1028 'bl':1026 'black':119 'bloomberg':357 'blue':104 'bold':805 'broad':1117 'build':1014 'bulk':1191 'c':1308 'c10':1181 'c2':620 'c4':619 'c4-c2':618 'c5':575,617 'calcul':128,522,539,543,581,602,636,931,1230,1374 'capabl':464 'case':300,1129 'category-skills' 'cell':165,252,254,277,317,740,883,970,1085,1090,1114,1122,1211,1222,1357 'center':822 'chang':116,652 'check':281,718,995,1047,1074,1120 'checklist':993 'choos':656 'circular':308 'code':88,1320,1327,1335 'col':897 'color':87,102,807,815 'column':496,823,900,1017,1021,1024,1056,1061,1218,1302,1319 'comment':314,1338,1355 'common':653,734,1043 'compani':334,346 'complex':1200,1359 'comput':559 'concis':1333 'configur':425 'confirm':1019 'consensus':366 'consist':16,291 'construct':237 'contain':925 'content':386 'convent':65,80,103 'correct':280,594,1000,1011,1097 'count':984,1158,1175 'creat':381,666,756,920 'create/load':665 'creation':370 'critic':510 'cross':1093 'cross-sheet':1092 'currenc':187 'd19':631 'd2':630 'd20':590,628 'data':445,446,451,462,494,651,660,676,748,782,792,913,1058,1189,1195,1225,1235,1242,1285,1365 'datafram':1037 'date':326,1311,1317,1318 'decim':217 'default':212,476 'delet':899 'deliv':41 'deliver':26 'denomin':1075 'depend':1119 'detail':712,980,1146 'df':472,550 'df.describe':498 'df.head':492 'df.iloc':565,568,571 'df.info':495 'df.to':502 'dict':490 'differ':393,399,640 'dimens':826 'div/0':47,742,975,1080 'divis':743,1071 'document':310,1364 'dtype':1294 'dynam':534 'e':1309 'e.g':19,182,208,1023 'edg':299,1128 'edgar':343,354 'edit':371,382,832 'end':320 'ensur':290,530,997 'environ':433 'equiti':362 'error':35,45,273,287,705,711,716,719,723,730,735,973,981,1145,1151,1154,1157,1167,1172 'essenti':1001 'establish':76 'estim':367 'etc':248,641,976 'ev/ebitda':226 'evalu':1275 'everi':36 'exact':59 'exampl':262,332,946 'excel':10,37,471,474,482,501,503,507,518,596,601,614,625,758,834,918,972,1020,1032,1040,1205,1292,1304,1314,1329,1351 'excel-specif':1204 'exhibit':351 'exist':52,61,78,97,671,833,850,1126 'existing.xlsx':855 'export':1196 'extern':149 'f':878 'factset':364 'fals':506 'far':1054 'far-right':1053 'featur':1207 'ff0000':808 'ffff00':816 'file':11,68,74,153,390,508,672,684,759,835,851,919,1166,1257,1299,1352 'file.xlsx':475,483,1234,1293,1305,1315 'fill':811 'financi':85 'first':428,477,960,1070 'fix':703,727,737 'font':13,18,774,803,804 'format':62,72,172,175,178,190,201,215,219,323,679,766,800,843,1098,1201 'formula':34,44,126,236,261,272,292,406,416,512,519,597,615,677,687,691,751,754,764,794,841,917,926,940,964,991,998,1079,1104,1110,1125,1160,1164,1202,1247,1270,1360 'formulas/formatting':663 'found':717,1152,1173 'full':1015 'function':626 'fy':1057 'fy2024':337 'generat':1325 'good':599,610,622 'green':129 'growth':244,560,564,576,611 'guidelin':84,1322 'handl':439,1046,1310 'hardcod':110,258,313,514,527,538,547,556,577,592,1368 'header':195 'hello':785 'horizont':821 'id':1295 'identifi':729 'import':401,466,769,773,846,1323,1362 'impos':70 'includ':206,430,1130,1370 'index':505,1036 'indic':1212 'industri':100 'industry-standard':99 'infer':1289 'info':497 'input':111 'insert':891 'instal':413 'instead':256,268,520 'instruct':29 'intend':1089 'interpret':1137 'invalid':739 'issu':1290 'json':709,978,1143,1147 'k':336 'key':160,1373 'larg':1135,1256,1298 'len':587 'let':600 'librari':1184 'libreoffic':403,411,426,957 'link':135,150,1102 'linux':988 'load':670,847,849,853,1232 'locat':726,982,1177 'lost':1254 'maco':990 'macro':958 'make':203 'mandatori':688 'manipul':463 'map':1018 'margin':246 'match':60,1022,1064 'may':377 'minim':1332 'minus':234 'mm':197 'model':38,86,1016,1376 'modifi':67,674,882,922 'modified.xlsx':915 'multipl':218,225,247,866,1063 'must':39 'n/a':49 'name':50,485,752,755,870,876,881,1342 'nan':1045 'need':162,167 'negat':228,303,1132 'never':69 'new':22,667,757,886,903,905,910 'newsheet':909 'none':486 'note':341,1371 'null':1049 'number':113,171,200,229,304,1162 'occurr':1067 'off-by-on':283 'offset':1030 'often':1059 'one':216,286 'open':1240 'openpyxl':661,762,768,838,845,924,1197,1210 'openpyxl.styles':772 'oper':456,1192,1330,1345 'otherwis':28,91 'output':8,1139 'output.xlsx':504,699,831,950 'overrid':82 'overview':374 'p/e':227 'page':338 'panda':449,458,467,658,1186,1283 'parenthes':231 'pars':1316 'pattern':77 'patternfil':775,812 'pd':469 'pd.notna':1052 'pd.read':473,481,1291,1303,1313 'percentag':207,211,638 'period':296 'perman':1253 'pitfal':1044 'place':241 'placement':240 'point':1087 'posit':894 'power':461 'practic':1183 'present':1170 'preserv':51,840,1272 'prevent':274 'preview':493 'print':877,1348 'profession':12,17 'project':295 'proper':1312 'provid':460,935 'pull':136,1010 'python':465,525,541,545,563,580,598,697,760,836,942,948,1326,1334 'q':348 'q2':349 'quick':994 'rang':289 'rate':245,561,612 'ratio':639 'read':442,470,1229,1259,1263,1300 'recalcul':407,415,648,686,732,916,939,962 'red':143 'redund':1344 'ref':46,738,974,1091,1174 'refer':255,278,309,328,741,1007,1082,1086,1095,1220 'referenc':1123 'remain':533 'rememb':1031 'replac':1249 'requir':6,174,311,402,404 'restrict':438 'result':548 'return':708,977,1142 'revenu':196,340,567,570,573 'rgb':106,121,131,145,156 'right':1055 'roman':23 'row':790,889,892,1029,1033,1038,1041,1216 'rule':176,238 'run':429,961 'sale':551 'sampl':1006 'sandbox':432 'save':681,1246 'scan':968 'scenario':118 'screen':368 'script':421,423,695,707,937,953,1141 'scripts/office/soffice.py':441 'scripts/recalc.py':420,694,698,936,943,949,1138,1277 'search':1065 'sec':342,353 'second':945 'section':1377 'select':1185 'separ':250 'set':955 'sheet':478,480,484,488,553,574,589,605,616,627,779,783,786,795,801,809,817,856,863,867,869,873,875,879,880,884,904,906,908,911,967,1094,1103 'sheet.append':789 'sheet.column':825 'sheet.delete':896 'sheet.insert':888 'sheet1':1099,1178,1180 'sheetnam':860 'simpl':1194 'skill':2,3 'small':1108 'socket':436 'solid':813 'sourc':324,333,345,356,363,650,1366 'source-anthropics' 'specif':327,722,862,1206,1301 'specifi':192,1284 'spreadsheet':532,643 'standard':71,89,101,173 'start':814,1107 'state':92 'statement':1349 'statist':499 'status':714,1148 'str':1296 'strategi':1106 'string':181,928 'studi':57 'style':63,1321 'success':1149 'sum':552,585,604,607,797 'summari':720,1168 'system/document':325 'tabl':322 'task':400 'templat':53,56,79,98 'termin':358 'test':297,1003,1105,1109,1127 'text':105,120,130,144,180 'time':21 'timeout':944 'tool':394,657 'total':549,555,637,1153,1156,1159 'true':806,1227,1237,1244,1261,1267 'type':724,749,1286 'unintend':307 'unit':193 'unix':435 'unless':27,90 'unnecessari':1337,1347 'unrecogn':753 'updat':55,170,536,1279 'url':329,344,355 'us':361 'use':14,188,199,230,253,263,418,457,511,517,595,624,690,692,761,837,933,1077,1096,1224,1258,1276 'usecol':1306 'user':32,95,114,376 'valu':48,259,302,417,515,523,540,586,588,746,887,932,1012,1050,1136,1231,1251,1280,1369 'valuat':224 'variabl':1341 'verbos':1340 'verif':992,1002 'verifi':275,305,701,1008,1083,1118 'visual':453 'warn':1238 'wb':777,852,859,874 'wb.active':780,857 'wb.create':907 'wb.save':830,914 'wb.sheetnames':872 'width':824,828 'within':140 'without':1336 'work':864,985,999,1208,1281 'workbook':142,668,770,778,848,854,1233 'workflow':396,509,654 'worksheet':139 'world':788 'write':500,682,1265,1269,1331 'wrong':537,747,1081 'x':222 'xlsx':1,369,389 'year':177 'yellow':154 'zero':33,43,198,205,301,745,1073,1131","prices":[{"id":"37f86cbc-92a7-44a8-867a-d658b3d4527f","listingId":"94a07654-594e-4038-b5db-7a0e5609f5e7","amountUsd":"0","unit":"free","nativeCurrency":null,"nativeAmount":null,"chain":null,"payTo":null,"paymentMethod":"skill-free","isPrimary":true,"details":{"org":"anthropics","category":"skills","install_from":"skills.sh"},"createdAt":"2026-04-18T20:23:44.345Z"}],"sources":[{"listingId":"94a07654-594e-4038-b5db-7a0e5609f5e7","source":"github","sourceId":"anthropics/skills/xlsx","sourceUrl":"https://github.com/anthropics/skills/tree/main/skills/xlsx","isPrimary":false,"firstSeenAt":"2026-04-18T21:24:32.151Z","lastSeenAt":"2026-04-24T00:50:10.716Z"},{"listingId":"94a07654-594e-4038-b5db-7a0e5609f5e7","source":"skills_sh","sourceId":"anthropics/skills/xlsx","sourceUrl":"https://skills.sh/anthropics/skills/xlsx","isPrimary":true,"firstSeenAt":"2026-04-18T20:23:44.345Z","lastSeenAt":"2026-04-24T02:40:12.427Z"}],"details":{"listingId":"94a07654-594e-4038-b5db-7a0e5609f5e7","quickStartSnippet":null,"exampleRequest":null,"exampleResponse":null,"schema":null,"openapiUrl":null,"agentsTxtUrl":null,"citations":[],"useCases":[],"bestFor":[],"notFor":[],"kindDetails":{"org":"anthropics","slug":"xlsx","source":"skills_sh","category":"skills","skills_sh_url":"https://skills.sh/anthropics/skills/xlsx"},"updatedAt":"2026-04-24T02:40:12.427Z"}}