{"id":"2729e2af-0b1a-4cf0-b25b-5bbea5ecab1b","shortId":"n8LdH6","kind":"skill","title":"xlsx-processing-manus","tagline":"Professional Excel spreadsheet creation with a focus on aesthetics and data analysis. Use when creating spreadsheets for organizing, analyzing, and presenting structured data in a clear and professional format.","description":"# Excel Generator Skill\n\n## Goal\n\nMake the user able to use the Excel immediately and gain insights upon opening.\n\n## Core Principle\n\nEnrich visuals as much as possible, while ensuring content clarity and not adding cognitive burden. Every visual element should be meaningful and purposeful—serving the content, not decorating it.\n\n---\n\n## Part 1: User Needs & Feature Matching\n\nBefore creating any Excel, think through:\n1. **What does the user need?** — Not \"an Excel file\", but what problem are they solving?\n2. **What can I provide?** — Which features will help them?\n3. **How to match?** — Select the right combination for this specific scenario.\n\n### Feature ↔ User Value Pairs\n\n#### Help Users「Understand Data」\n\n| Feature | User Value | When to Use |\n|---------|-----------|-------------|\n| Bar/Column Chart | See comparisons at a glance | Comparing values across categories |\n| Line Chart | See trends at a glance | Time series data |\n| Pie Chart | See proportions at a glance | Part-to-whole (≤6 categories) |\n| Data Bars | Compare magnitude without leaving the cell | Numeric columns needing quick comparison |\n| Color Scale | Heatmap effect, patterns pop out | Matrices, ranges, distributions |\n| Sparklines | See trend within a single cell | Summary rows with historical context |\n\n#### Help Users「Find What Matters」\n\n| Feature | User Value | When to Use |\n|---------|-----------|-------------|\n| Pre-sorting | Most important data comes first | Rankings, Top N, priorities |\n| Conditional Highlighting | Key data stands out automatically | Outliers, thresholds, Top/Bottom N |\n| Icon Sets | Status visible at a glance | KPI status, categorical states (use sparingly) |\n| Bold/Color Emphasis | Visual distinction between primary and secondary | Summary rows, key metrics |\n| KEY INSIGHTS Section | Conclusions delivered directly | Analytical reports |\n\n#### Help Users「Save Time」\n\n| Feature | User Value | When to Use |\n|---------|-----------|-------------|\n| Overview Sheet | Summary on first page, no hunting | All multi-sheet files |\n| Pre-calculated Summaries | Results ready, no manual calculation | Data requiring statistics |\n| Consistent Number Formats | No format adjustments needed | All numeric data |\n| Freeze Panes | Headers visible while scrolling | Tables with >10 rows |\n| Sheet Index with Links | Quick navigation, no guessing | Files with >3 sheets |\n\n#### Help Users「Use Directly」\n\n| Feature | User Value | When to Use |\n|---------|-----------|-------------|\n| Filters | Users can explore data themselves | Exploratory analysis needs |\n| Hyperlinks | Click to navigate, no manual switching | Cross-sheet references, external sources |\n| Print-friendly Layout | Ready to print or export to PDF | Reports for sharing |\n| Formulas (not hardcoded) | Change parameters, results update | Models, forecasts, adjustable scenarios |\n| Data Validation Dropdowns | Prevent input errors | Templates requiring user input |\n\n#### Help Users「Trust the Data」\n\n| Feature | User Value | When to Use |\n|---------|-----------|-------------|\n| Data Source Attribution | Know where data comes from | All external data |\n| Generation Date | Know data freshness | Time-sensitive reports |\n| Data Time Range | Know what period is covered | Time series data |\n| Professional Formatting | Looks reliable | All external-facing files |\n| Consistent Precision | No doubts about accuracy | All numeric values |\n\n#### Help Users「Gain Insights」\n\n| Feature | User Value | When to Use |\n|---------|-----------|-------------|\n| Comparison Columns (Δ, %) | No manual calculation for comparisons | YoY, MoM, A vs B |\n| Rank Column | Position visible directly | Competitive analysis, performance |\n| Grouped Summaries | Aggregated results by dimension | Segmented analysis |\n| Trend Indicators (↑↓) | Direction clear at a glance | Change direction matters |\n| Insight Text | The \"so what\" is stated explicitly | Analytical reports |\n\n---\n\n## Part 2: Four-Layer Implementation\n\n### Layer 1: Structure (How It's Organized)\n\n**Goal**: Logical, easy to navigate, user finds what they need immediately.\n\n#### Sheet Organization\n\n| Guideline | Recommendation |\n|-----------|----------------|\n| Sheet count | 3-5 ideal, max 7 |\n| First sheet | Always \"Overview\" with summary and navigation |\n| Sheet order | General → Specific (Overview → Data → Analysis) |\n| Naming | Clear, concise (e.g., \"Revenue Data\", not \"Sheet1\") |\n\n#### Information Architecture\n\n- **Overview sheet must stand alone**: User should understand the main message without opening other sheets\n- **Progressive disclosure**: Summary first, details available for those who want to dig deeper\n- **Consistent structure across sheets**: Same layout patterns, same starting positions\n\n#### Layout Rules\n\n| Element | Position |\n|---------|----------|\n| Left margin | Column A empty (width 3) |\n| Top margin | Row 1 empty |\n| Content start | Cell B2 |\n| Section spacing | 1 empty row between sections |\n| Table spacing | 2 empty rows between tables |\n| Charts | Below all tables (2 rows gap), or right of related table |\n\n**Chart placement**:\n- Default: below all tables, left-aligned with content\n- Alternative: right of a single related table\n- Charts must never overlap each other or tables\n\n#### Standalone Text Rows\n\nFor rows with a single text cell (titles, descriptions, notes, bullet points), text will naturally extend into empty cells to the right. However, text is **clipped** if right cells contain any content (including spaces).\n\n**Decision logic**:\n\n| Condition | Action |\n|-----------|--------|\n| Right cells guaranteed empty | No action needed—text extends naturally |\n| Right cells may have content | Merge cells to content width, or wrap text |\n| Text exceeds content area width | Wrap text + set row height manually |\n\n**Technical note**: Fill and border alone do NOT block text overflow—only actual cell content (including space characters) blocks it.\n\n#### Navigation\n\nFor files with 3+ sheets, include a Sheet Index on Overview:\n\n```python\n# Sheet Index with hyperlinks\nws['B5'] = \"CONTENTS\"\nws['B5'].font = Font(name=SERIF_FONT, size=14, bold=True, color=THEME['accent'])\n\nsheets = [\"Overview\", \"Data\", \"Analysis\"]\nfor i, sheet_name in enumerate(sheets, start=6):\n    cell = ws.cell(row=i, column=2, value=sheet_name)\n    cell.hyperlink = f\"#'{sheet_name}'!A1\"\n    cell.font = Font(color=THEME['accent'], underline='single')\n```\n\n---\n\n### Layer 2: Information (What They Learn)\n\n**Goal**: Accurate, complete, insightful—user gains knowledge, not just data.\n\n#### Number Formats\n\n**Critical rules**:\n1. **Every numeric cell must have `number_format` set** — both input values AND formula results\n2. **Same column = same precision** — never mix `0.1074` and `1.0` in one column\n3. **Formula results have no default format** — they display raw precision unless explicitly formatted\n\n| Data Type | Format Code | Example |\n|-----------|-------------|---------|\n| Integer | `#,##0` | 1,234,567 |\n| Decimal (1) | `#,##0.0` | 1,234.6 |\n| Decimal (2) | `#,##0.00` | 1,234.56 |\n| Percentage | `0.0%` | 12.3% |\n| Currency | `$#,##0.00` | $1,234.56 |\n\n**Common mistake**: Setting format only for input cells, forgetting formula cells.\n\n```python\n# WRONG: Formula cell without number_format\nws['C10'] = '=C7-C9'  # Will display raw precision like 14.123456789\n\n# CORRECT: Always set number_format for formula cells\nws['C10'] = '=C7-C9'\nws['C10'].number_format = '#,##0.0'  # Displays as 14.1\n\n# Best practice: Define format by column/data type, apply to ALL cells\nfor row in range(data_start, data_end + 1):\n    cell = ws.cell(row=row, column=value_col)\n    cell.number_format = '#,##0.0'  # Applies to both values and formulas\n```\n\n#### Data Context\n\nEvery data set needs context:\n\n| Element | Location | Example |\n|---------|----------|---------|\n| Data source | Overview or sheet footer | \"Source: Company Annual Report 2024\" |\n| Time range | Near title or in subtitle | \"Data from Jan 2020 - Dec 2024\" |\n| Generation date | Overview footer | \"Generated: 2024-01-15\" |\n| Definitions | Notes section or separate sheet | \"Revenue = Net sales excluding returns\" |\n\n#### Key Insights\n\nFor analytical content, don't just present data—tell the user what it means:\n\n```python\nws['B20'] = \"KEY INSIGHTS\"\nws['B20'].font = Font(name=SERIF_FONT, size=14, bold=True, color=THEME['accent'])\n\ninsights = [\n    \"• Revenue grew 23% YoY, driven primarily by APAC expansion\",\n    \"• Top 3 customers account for 45% of total revenue\",\n    \"• Q4 showed strongest performance across all metrics\"\n]\nfor i, insight in enumerate(insights, start=21):\n    ws.cell(row=i, column=2, value=insight)\n```\n\n#### Content Completeness\n\n| Check | Action |\n|-------|--------|\n| Missing values | Show as blank or \"N/A\", never 0 unless actually zero |\n| Calculated fields | Include formula or note explaining calculation |\n| Abbreviations | Define on first use or in notes |\n| Units | Include in header (e.g., \"Revenue ($M)\") |\n\n---\n\n### Layer 3: Visual (What They See)\n\n**Goal**: Professional appearance, immediate sense of value, visuals serve content.\n\n#### Essential Setup\n\n```python\nfrom openpyxl.styles import Font, PatternFill, Alignment, Border, Side\n\n# Hide gridlines for cleaner look\nws.sheet_view.showGridLines = False\n\n# Left margin\nws.column_dimensions['A'].width = 3\n```\n\n#### Theme System\n\nChoose ONE theme per workbook. All visual elements derive from the theme color.\n\n**Available Themes** (select based on context, or let user specify):\n\n| Theme | Primary | Light | Use Case |\n|-------|---------|-------|----------|\n| **Elegant Black** | `2D2D2D` | `E5E5E5` | Luxury, fashion, premium reports (recommended default) |\n| Corporate Blue | `1F4E79` | `D6E3F0` | Finance, corporate analysis |\n| Forest Green | `2E5A4C` | `D4E5DE` | Sustainability, environmental |\n| Burgundy | `722F37` | `E8D5D7` | Luxury brands, wine industry |\n| Slate Gray | `4A5568` | `E2E8F0` | Tech, modern, minimalist |\n| Navy | `1E3A5F` | `D3DCE6` | Government, maritime, institutional |\n| Charcoal | `36454F` | `DDE1E4` | Professional, executive |\n| Deep Purple | `4A235A` | `E1D5E7` | Creative, innovation, premium tech |\n| Teal | `1A5F5F` | `D3E5E5` | Healthcare, wellness |\n| Warm Brown | `5D4037` | `E6DDD9` | Natural, organic, artisan |\n| Royal Blue | `1A237E` | `D3D5E8` | Academic, institutional |\n| Olive | `556B2F` | `E0E5D5` | Military, outdoor |\n\n**Theme Configuration**:\n\n```python\n# === THEME CONFIGURATION ===\nTHEMES = {\n    'elegant_black': {\n        'primary': '2D2D2D',\n        'light': 'E5E5E5',\n        'accent': '2D2D2D',\n        'chart_colors': ['2D2D2D', '4A4A4A', '6B6B6B', '8C8C8C', 'ADADAD', 'CFCFCF'],\n    },\n    'corporate_blue': {\n        'primary': '1F4E79',\n        'light': 'D6E3F0',\n        'accent': '1F4E79',\n        'chart_colors': ['1F4E79', '2E75B6', '5B9BD5', '9DC3E6', 'BDD7EE', 'DEEBF7'],\n    },\n    # ... other themes follow same pattern\n}\n\nTHEME = THEMES['elegant_black']  # Default\nSERIF_FONT = 'Source Serif Pro'   # or 'Georgia' as fallback\nSANS_FONT = 'Source Sans Pro'     # or 'Calibri' as fallback\n```\n\n**How Theme Colors Apply**:\n\n| Element | Color | Background |\n|---------|-------|------------|\n| Document title | `THEME['primary']` | None |\n| Section header | `THEME['primary']` | None or `THEME['light']` |\n| Table header | White | `THEME['primary']` |\n| Data cells | Black | None or alternating `F9F9F9` |\n| Chart elements | `THEME['chart_colors']` | — |\n\n#### Semantic Colors\n\nFor data meaning (independent of theme):\n\n| Semantic | Color | Use |\n|----------|-------|-----|\n| Positive | `2E7D32` | Growth, profit, success |\n| Negative | `C62828` | Decline, loss, failure |\n| Warning | `F57C00` | Caution, attention |\n\n#### Row Highlight Colors\n\nFor row-level emphasis. Use **high-lightness tints** (85-95% lightness) for subtle distinction.\n\n| Semantic | Hex | Hue | Use |\n|----------|-----|-----|-----|\n| Emphasis | `E6F3FF` | 209° | Top rated, important data |\n| Section | `FFF3E0` | 37° | Section dividers |\n| Input | `FFFDE7` | 55° | Editable cells |\n| Special | `FFF9C4` | 55° | Base case, benchmarks |\n| Success | `E8F5E9` | 125° | Passed, completed |\n| Warning | `FFCCBC` | 14° | Needs attention |\n\n**Rule**: Same semantic = same color. Different semantic = different color.\n\n```python\nHIGHLIGHT = {\n    'emphasis': 'E6F3FF',\n    'section': 'FFF3E0',\n    'input': 'FFFDE7',\n    'special': 'FFF9C4',\n    'success': 'E8F5E9',\n    'warning': 'FFCCBC',\n}\n```\n\n#### Typography\n\nUse **serif + sans-serif pairing**. Serif for hierarchy (titles, headers); sans-serif for data (tabular figures).\n\n**Font Pairings** (in preference order):\n\n| Serif (Titles) | Sans-Serif (Data) | Notes |\n|----------------|-------------------|-------|\n| Source Serif Pro | Source Sans Pro | Adobe superfamily, recommended |\n| IBM Plex Serif | IBM Plex Sans | Modern, corporate |\n| Georgia | Calibri | Pre-installed fallback |\n\n**Hierarchy**:\n\n| Element | Font | Size | Style |\n|---------|------|------|-------|\n| Document title | Serif | 18-22 | Bold, Primary color |\n| Section header | Serif | 12-14 | Bold, Primary color |\n| Table header | Serif | 10-11 | Bold, White |\n| Data cells | Sans-Serif | 11 | Regular, Black |\n| Notes | Sans-Serif | 9-10 | Italic, `666666` |\n\n```python\n# Document title\nws['B2'].font = Font(name=SERIF_FONT, size=18, bold=True, color=THEME['primary'])\n\n# Section header\nws['B6'].font = Font(name=SERIF_FONT, size=14, bold=True, color=THEME['primary'])\n\n# Table header\nheader_font = Font(name=SERIF_FONT, size=10, bold=True, color='FFFFFF')\n\n# Data cells\ndata_font = Font(name=SANS_FONT, size=11)\n\n# Notes\nnotes_font = Font(name=SANS_FONT, size=10, italic=True, color='666666')\n```\n\n#### Data Block Definition\n\nA **Data Block** is a group of continuous, non-empty rows that form a visual unit requiring borders. Data Blocks are separated by empty rows.\n\n**Identification rules**:\n1. Scan from Section Header downward\n2. Non-empty row starts a Data Block\n3. Empty row ends the current Data Block\n4. Each Data Block gets its own outer frame\n\n**Data Block types**:\n\n| Type | Structure | Example |\n|------|-----------|---------|\n| With Header | Header row + data rows | Table with column titles |\n| Without Header | Data rows only | Continuation data, sub-tables |\n\n**Example recognition**:\n\n```\nRow 5: Section Header \"INCOME STATEMENT\"   → No border (not a Data Block)\nRow 6: Empty                               → Separator\nRow 7: Header (Item, Year1, Year2...)      → Data Block 1 starts\nRow 8: Revenue, 47061, 48943...            \nRow 9: Growth Rate, 4.0%, 3.5%...          → Data Block 1 ends\nRow 10: Empty                              → Separator\nRow 11: EBITDA, 12121, 12627...            → Data Block 2 starts (no header)\nRow 12: EBITDA Margin, 25.8%, 25.8%...     → Data Block 2 ends\nRow 13: Empty                              → Separator\nRow 14: D&A, 1200, 1224...                 → Data Block 3 starts (no header)\nRow 15: EBIT, 10921, 11404...              \nRow 16: EBIT Margin, 23.2%, 23.3%...       → Data Block 3 ends\n```\n\nResult: 3 separate Data Blocks, each with its own outer frame.\n\n#### Border Rules\n\n**Recommended style: Horizontal-only** — cleaner, more modern.\n\n**Each Data Block must have**:\n\n| Border Type | Where |\n|-------------|-------|\n| **Outer frame** | All 4 sides of Data Block (top, bottom, left, right) |\n| **Header bottom** | Medium weight, theme primary color (if has header) |\n| **Internal horizontal** | Thin, between all rows |\n| **Internal vertical** | None (omit for cleaner look) |\n\n**Critical**: Every cell in the Data Block must have its border set. Do not only set header and label cells—data cells need borders too.\n\n```python\n# Border definitions\nouter_border = Side(style='thin', color='D1D1D1')\nheader_bottom = Side(style='medium', color=THEME['primary'])\ninner_horizontal = Side(style='thin', color='D1D1D1')\nno_border = Side(style=None)\n\ndef apply_data_block_borders(ws, start_row, end_row, start_col, end_col, has_header=True):\n    \"\"\"\n    Apply borders to a Data Block.\n    Every cell must be processed—not just headers and labels.\n    \"\"\"\n    for row in range(start_row, end_row + 1):\n        for col in range(start_col, end_col + 1):\n            cell = ws.cell(row=row, column=col)\n            \n            # Left/Right: outer frame\n            left = outer_border if col == start_col else no_border\n            right = outer_border if col == end_col else no_border\n            \n            # Top: outer for first row, inner horizontal for others\n            top = outer_border if row == start_row else inner_horizontal\n            \n            # Bottom: header_bottom for header, outer for last row, inner for middle\n            if has_header and row == start_row:\n                bottom = header_bottom\n            elif row == end_row:\n                bottom = outer_border\n            else:\n                bottom = inner_horizontal\n            \n            cell.border = Border(left=left, right=right, top=top, bottom=bottom)\n```\n\n**Non-Data-Block elements** (titles, section headers, standalone text, notes): No border.\n\n#### Alignment\n\n**Headers**: Center.\n\n**Data cells**:\n\n| Content | Horizontal |\n|---------|------------|\n| Short text (words) | Center |\n| Long text (sentences) | Left + `indent=1` |\n| Numbers | Right |\n| Dates, Status | Center |\n\n**Vertical**: Always `center` (including wrapped text).\n\n```python\n# Left-aligned text with padding\ncell.alignment = Alignment(horizontal='left', vertical='center', indent=1)\n\n# Numbers\ncell.alignment = Alignment(horizontal='right', vertical='center')\n\n# Wrapped text\ncell.alignment = Alignment(horizontal='left', vertical='center', wrap_text=True, indent=1)\n```\n\n#### Column Width\n\n**Calculation scope**: Only Data Block cells. Exclude standalone text rows, section headers, and notes.\n\n**Formula**: `max(max_content_length_in_data_blocks + padding, minimum)`\n\n| Column Type | Padding | Minimum | Notes |\n|-------------|---------|---------|-------|\n| Label/Text | +4 | 15 | First column usually |\n| Numbers | +6 | 14 | Extra space for formatted numbers (negative signs, commas) |\n| Long text | +4 | 20, max 40 | Wrap if exceeds max |\n\n**Design constraint**: Same column across different Data Blocks should serve similar roles. Column width is determined by the widest content across all Data Blocks in that column.\n\n**Standalone text rows**: Do NOT include in column width calculation. Let text extend naturally or use wrap/merge.\n\n```python\ndef calculate_column_width(ws, col, data_block_ranges):\n    \"\"\"\n    Calculate column width based only on Data Block content.\n    Standalone text rows are excluded.\n    \n    data_block_ranges: list of (start_row, end_row) tuples\n    \"\"\"\n    max_len = 0\n    is_numeric = True\n    \n    for start_row, end_row in data_block_ranges:\n        for row in range(start_row, end_row + 1):\n            cell = ws.cell(row=row, column=col)\n            if cell.value:\n                # Get formatted display length\n                display_value = str(cell.value)\n                max_len = max(max_len, len(display_value))\n                if not isinstance(cell.value, (int, float)):\n                    is_numeric = False\n    \n    padding = 6 if is_numeric else 4\n    minimum = 14 if is_numeric else 15\n    \n    return max(max_len + padding, minimum)\n```\n\n#### Row Height\n\nMust set manually—openpyxl does not auto-adjust.\n\n| Row Type | Height |\n|----------|--------|\n| Document title | 35 |\n| Section header | 25 |\n| Table header | 30 |\n| Standard data | 18 |\n| Wrapped text | `lines × 15 + 10` |\n\n```python\nws.row_dimensions[2].height = 35   # Title\nws.row_dimensions[5].height = 25   # Section header\nws.row_dimensions[7].height = 30   # Table header\nws.row_dimensions[8].height = 18   # Data row\n```\n\n#### Merge Cells\n\n| Element | Merge? | Span |\n|---------|--------|------|\n| Document/Sheet title | Yes | Width of content below |\n| Section header | Yes | Width of related table |\n| Multi-level header (parent) | Yes | Span child columns |\n| Long text row | Yes | Width of content area |\n\n**When to merge**: Merge when text would otherwise be clipped at the column boundary. If text fits within a single column, merging is optional.\n\nCommon cases requiring merge:\n- Titles and subtitles (usually span full content width)\n- Section headers (span width of related table)\n- KEY INSIGHTS bullet points (long sentences)\n- Notes and disclaimers (multi-sentence text)\n\n**Section header with background** — merge width must match table width:\n\n```python\n# Section header spans same width as table below\nlast_col = 8  # Must match table's last column\nws.merge_cells(f'B6:{get_column_letter(last_col)}6')\nws['B6'] = \"KEY METRICS\"\nws['B6'].font = Font(name=SERIF_FONT, size=14, bold=True, color=THEME['primary'])\nws['B6'].fill = PatternFill(start_color=THEME['light'], end_color=THEME['light'], fill_type='solid')\nws['B6'].alignment = Alignment(horizontal='left', vertical='center')\n```\n\n#### Data Visualization\n\n**Data Bars**:\n```python\nfrom openpyxl.formatting.rule import DataBarRule\n\nrule = DataBarRule(start_type='min', end_type='max', color=THEME['primary'])\nws.conditional_formatting.add('C5:C50', rule)\n```\n\n**Color Scale**:\n```python\nfrom openpyxl.formatting.rule import ColorScaleRule\n\nrule = ColorScaleRule(\n    start_type='min', start_color='FFFFFF',\n    end_type='max', end_color=THEME['primary']\n)\nws.conditional_formatting.add('D5:D50', rule)\n```\n\n**Charts**:\n```python\nfrom openpyxl.chart import BarChart, Reference\n\nchart = BarChart()\nchart.title = \"Revenue by Region\"\ndata = Reference(ws, min_col=3, min_row=4, max_row=10)\ncats = Reference(ws, min_col=2, min_row=5, max_row=10)\nchart.add_data(data, titles_from_data=True)\nchart.set_categories(cats)\n\n# Apply theme colors to chart series\nfor i, series in enumerate(chart.series):\n    series.graphicalProperties.solidFill = THEME['chart_colors'][i % len(THEME['chart_colors'])]\n\nws.add_chart(chart, \"F5\")\n```\n\n---\n\n### Layer 4: Interaction (How They Interact)\n\n**Goal**: Usable, flexible, user can explore and work with the data.\n\n#### Freeze Panes\n\nFor tables with >10 rows:\n\n```python\nws.freeze_panes = 'B5'  # Freeze below header row\n```\n\n#### Filters\n\nFor tables with >20 rows:\n\n```python\nws.auto_filter.ref = f\"B4:{get_column_letter(last_col)}{last_row}\"\n```\n\n#### Hyperlinks\n\n```python\n# Internal link\ncell.hyperlink = \"#'Data'!A1\"\ncell.font = Font(color=THEME['accent'], underline='single')\n\n# External link\ncell.hyperlink = \"https://example.com\"\ncell.font = Font(color=THEME['accent'], underline='single')\n```\n\n#### Sorting\n\nPre-sort by most meaningful dimension:\n- Rankings → by value descending\n- Time series → by date ascending\n- Alphabetical → when no clear priority\n\n```python\ndf = df.sort_values('revenue', ascending=False)\n```\n\n#### Editability\n\n- Use formulas when users may update inputs\n- Use hardcoded values when data is final\n- Keep formulas simple; document complex ones","tags":["xlsx","processing","manus","awesome","legal","skills","lawvable","agent-skills","automation","law","legal-work","workflows"],"capabilities":["skill","source-lawvable","skill-xlsx-processing-manus","topic-agent-skills","topic-automation","topic-law","topic-legal-work","topic-workflows"],"categories":["awesome-legal-skills"],"synonyms":[],"warnings":[],"endpointUrl":"https://skills.sh/lawvable/awesome-legal-skills/xlsx-processing-manus","protocol":"skill","transport":"skills-sh","auth":{"type":"none","details":{"cli":"npx skills add lawvable/awesome-legal-skills","source_repo":"https://github.com/lawvable/awesome-legal-skills","install_from":"skills.sh"}},"qualityScore":"0.605","qualityRationale":"deterministic score 0.60 from registry signals: · indexed on github topic:agent-skills · 310 github stars · SKILL.md body (22,856 chars)","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-github:v1","enrichmentVersion":1,"enrichedAt":"2026-05-02T18:53:57.244Z","embedding":null,"createdAt":"2026-04-18T22:04:47.725Z","updatedAt":"2026-05-02T18:53:57.244Z","lastSeenAt":"2026-05-02T18:53:57.244Z","tsv":"'+4':2298,2316 '+6':2304 '-01':1084 '-10':1668 '-11':1652 '-14':1644 '-15':1085 '-22':1636 '-5':567 '-95':1508 '0':937,1185,2404 '0.0':943,952,1004,1037 '0.00':948,955 '0.1074':911 '1':84,95,543,648,656,889,938,942,944,949,956,1027,1772,1856,1871,2089,2098,2219,2245,2265,2425 '1.0':913 '10':336,1651,1713,1736,1874,2509,2783,2795,2853 '10921':1917 '11':1660,1727,1878 '11404':1918 '12':1643,1889 '12.3':953 '1200':1906 '12121':1880 '1224':1907 '125':1542 '12627':1881 '13':1899 '14':829,1126,1547,1698,1903,2305,2467,2680 '14.1':1007 '14.123456789':986 '15':1915,2299,2472,2508 '16':1920 '18':1635,1682,2504,2535 '1a237e':1355 '1a5f5f':1342 '1e3':1322 '1f4e79':1295,1389,1393,1396 '2':111,537,663,672,853,870,904,947,1170,1778,1884,1896,2513,2789 '20':2317,2867 '2020':1075 '2024':1064,1077,1083 '209':1519 '21':1165 '23':1135 '23.2':1923 '23.3':1924 '234':939 '234.56':950,957 '234.6':945 '25':2498,2521 '25.8':1892,1893 '2d2d2d':1285,1373,1377,1380 '2e5':1302 '2e7':1480 '2e75':1397 '3':121,348,566,644,805,917,1143,1213,1252,1787,1910,1927,1930,2777 '3.5':1868 '30':2501,2528 '35':2495,2515 '36454f':1329 '37':1526 '4':1795,1961,2465,2780,2832 '4.0':1867 '40':2319 '45':1147 '47061':1861 '48943':1862 '4a235a':1335 '4a4a4a':1381 '4a5568':1316 '5':1833,2519,2792 '55':1531,1536 '556b2f':1360 '567':940 '5b9bd5':1399 '5d4037':1348 '6':179,847,1845,2460,2667 '666666':1670,1740 '6b6b6b':1382 '7':570,1849,2526 '722f37':1308 '8':1859,2533,2651 '85':1507 '8c8c8c':1383 '9':1667,1864 '9dc3e6':1400 'a1':861,2886 'a4c':1303 'a5f':1323 'abbrevi':1197 'abl':41 'academ':1357 'accent':834,866,1131,1376,1392,2891,2902 'account':1145 'accur':876 'accuraci':473 'across':156,626,1155,2328,2344 'action':746,752,1176 'actual':793,1187 'ad':66 'adadad':1384 'adjust':323,405,2489 'adob':1610 'aesthet':13 'aggreg':510 'align':688,1236,2203,2234,2239,2248,2256,2703,2704 'alon':600,786 'alphabet':2922 'altern':691,1461 'alway':573,988,2226 'analysi':16,367,506,515,585,838,1299 'analyt':281,534,1100 'analyz':23 'annual':1062 'apac':1140 'appear':1220 'appli':1015,1038,1434,2049,2065,2806 'architectur':595 'area':773,2573 'artisan':1352 'ascend':2921,2932 'attent':1493,1549 'attribut':430 'auto':2488 'auto-adjust':2487 'automat':245 'avail':616,1268 'b':499 'b2':653,1675 'b20':1115,1119 'b4':2872 'b5':819,822,2858 'b6':1398,1691,2661,2669,2673,2687,2702 'background':1437,2633 'bar':182,2712 'bar/column':147 'barchart':2764,2767 'base':1271,1537,2381 'bdd7ee':1401 'benchmark':1539 'best':1008 'black':1284,1371,1411,1458,1662 'blank':1181 'block':789,799,1742,1746,1764,1786,1794,1798,1805,1843,1855,1870,1883,1895,1909,1926,1933,1952,1965,1999,2051,2070,2193,2272,2289,2331,2347,2376,2385,2393,2415 'blue':1294,1354,1387 'bold':830,1127,1637,1645,1653,1683,1699,1714,2681 'bold/color':263 'border':785,1237,1762,1839,1940,1955,2003,2016,2019,2022,2044,2052,2066,2110,2117,2120,2127,2139,2175,2181,2202 'bottom':1967,1971,2029,2147,2149,2166,2168,2173,2177,2188,2189 'boundari':2587 'brand':1311 'brown':1347 'bullet':719,2619 'burden':68 'burgundi':1307 'c10':977,996,1001 'c5':2730 'c50':2731 'c62828':1486 'c7':979,998 'c7-c9':978,997 'c9':980,999 'calcul':308,314,492,1189,1196,2268,2360,2370,2378 'calibri':1428,1622 'case':1282,1538,2599 'cat':2784,2805 'categor':259 'categori':157,180,2804 'caution':1492 'cell':188,210,652,715,727,737,748,758,763,794,848,892,965,968,972,994,1018,1028,1457,1533,1656,1719,1995,2012,2014,2072,2099,2207,2273,2426,2539,2659 'cell.alignment':2238,2247,2255 'cell.border':2180 'cell.font':862,2887,2898 'cell.hyperlink':857,2884,2896 'cell.number':1035 'cell.value':2433,2441,2453 'center':2205,2213,2224,2227,2243,2252,2260,2708 'cfcfcf':1385 'chang':399,523 'charact':798 'charcoal':1328 'chart':148,159,169,668,680,698,1378,1394,1463,1466,2759,2766,2810,2820,2825,2828,2829 'chart.add':2796 'chart.series':2817 'chart.set':2803 'chart.title':2768 'check':1175 'child':2564 'choos':1255 'clariti':63 'cleaner':1242,1947,1991 'clear':30,519,587,2925 'click':370 'clip':734,2583 'code':934 'cognit':67 'col':1034,2059,2061,2091,2095,2097,2104,2112,2114,2122,2124,2374,2431,2650,2666,2776,2788,2877 'color':194,832,864,1129,1267,1379,1395,1433,1436,1467,1469,1477,1496,1554,1558,1639,1647,1685,1701,1716,1739,1976,2026,2033,2041,2683,2691,2695,2726,2733,2746,2752,2808,2821,2826,2889,2900 'colorscalerul':2739,2741 'column':190,488,501,640,852,906,916,1032,1169,1818,2103,2266,2292,2301,2327,2336,2350,2358,2371,2379,2430,2565,2586,2594,2657,2663,2874 'column/data':1013 'combin':128 'come':233,434 'comma':2313 'common':958,2598 'compani':1061 'compar':154,183 'comparison':150,193,487,494 'competit':505 'complet':877,1174,1544 'complex':2953 'concis':588 'conclus':278 'condit':239,745 'configur':1365,1368 'consist':318,468,624 'constraint':2325 'contain':738 'content':62,79,650,690,740,761,765,772,795,820,1101,1173,1227,2208,2285,2343,2386,2548,2572,2608 'context':215,1045,1050,1273 'continu':1751,1825 'core':52 'corpor':1293,1298,1386,1620 'correct':987 'count':565 'cover':455 'creat':19,90 'creation':8 'creativ':1337 'critic':887,1993 'cross':377 'cross-sheet':376 'currenc':954 'current':1792 'custom':1144 'd':1904 'd1d1d1':2027,2042 'd32':1481 'd3d5e8':1356 'd3dce6':1324 'd3e5e5':1343 'd4e5de':1304 'd5':2756 'd50':2757 'd6e3f0':1296,1391 'data':15,27,140,167,181,232,242,315,327,364,407,421,428,433,438,442,448,458,584,591,837,884,931,1023,1025,1044,1047,1054,1072,1106,1456,1471,1523,1589,1602,1655,1718,1720,1741,1745,1763,1785,1793,1797,1804,1814,1822,1826,1842,1854,1869,1882,1894,1908,1925,1932,1951,1964,1998,2013,2050,2069,2192,2206,2271,2288,2330,2346,2375,2384,2392,2414,2503,2536,2709,2711,2772,2797,2798,2801,2847,2885,2946 'databarrul':2717,2719 'date':440,1079,2222,2920 'dde1e4':1330 'dec':1076 'decim':941,946 'decis':743 'declin':1487 'decor':81 'deebf7':1402 'deep':1333 'deeper':623 'def':2048,2369 'default':682,922,1292,1412 'defin':1010,1198 'definit':1086,1743,2020 'deliv':279 'deriv':1263 'descend':2916 'descript':717 'design':2324 'detail':615 'determin':2339 'df':2928 'df.sort':2929 'differ':1555,1557,2329 'dig':622 'dimens':513,1249,2512,2518,2525,2532,2912 'direct':280,353,504,518,524 'disclaim':2625 'disclosur':612 'display':925,982,1005,2436,2438,2448 'distinct':266,1512 'distribut':203 'divid':1528 'document':1438,1632,1672,2493,2952 'document/sheet':2543 'doubt':471 'downward':1777 'driven':1137 'dropdown':409 'e.g':589,1209 'e0e5d5':1361 'e1d5e7':1336 'e2e8f0':1317 'e5e5e5':1286,1375 'e6ddd9':1349 'e6f3ff':1518,1562 'e8d5d7':1309 'e8f5e9':1541,1570 'easi':551 'ebit':1916,1921 'ebitda':1879,1890 'edit':1532,2934 'effect':197 'eleg':1283,1370,1410 'element':71,636,1051,1262,1435,1464,1628,2194,2540 'elif':2169 'els':2115,2125,2144,2176,2464,2471 'emphasi':264,1501,1517,1561 'empti':642,649,657,664,726,750,1754,1768,1781,1788,1846,1875,1900 'end':1026,1790,1872,1897,1928,2056,2060,2087,2096,2123,2171,2399,2411,2423,2694,2723,2748,2751 'enrich':54 'ensur':61 'enumer':844,1162,2816 'environment':1306 'error':412 'essenti':1228 'everi':69,890,1046,1994,2071 'exampl':935,1053,1809,1830 'example.com':2897 'exceed':771,2322 'excel':6,34,45,92,103 'exclud':1095,2274,2391 'execut':1332 'expans':1141 'explain':1195 'explicit':533,929 'explor':363,2842 'exploratori':366 'export':390 'extend':724,755,2363 'extern':380,437,465,2894 'external-fac':464 'extra':2306 'f':858,2660,2871 'f5':2830 'f57c00':1491 'f9f9f9':1462 'face':466 'failur':1489 'fallback':1421,1430,1626 'fals':1245,2458,2933 'fashion':1288 'featur':87,117,133,141,221,287,354,422,481 'ffccbc':1546,1572 'fff3e0':1525,1564 'fff9c4':1535,1568 'fffde7':1530,1566 'ffffff':1717,2747 'field':1190 'figur':1591 'file':104,305,346,467,803 'fill':783,2688,2698 'filter':360,2863 'final':2948 'financ':1297 'find':218,555 'first':234,297,571,614,1200,2131,2300 'fit':2590 'flexibl':2839 'float':2455 'focus':11 'follow':1405 'font':823,824,827,863,1120,1121,1124,1234,1414,1423,1592,1629,1676,1677,1680,1692,1693,1696,1707,1708,1711,1721,1722,1725,1730,1731,1734,2674,2675,2678,2888,2899 'footer':1059,1081 'forecast':404 'forest':1300 'forget':966 'form':1757 'format':33,320,322,460,886,896,923,930,933,961,975,991,1003,1011,1036,2309,2435 'formula':396,902,918,967,971,993,1043,1192,2282,2936,2950 'four':539 'four-lay':538 'frame':1803,1939,1959,2107 'freez':328,2848,2859 'fresh':443 'friend':384 'full':2607 'gain':48,479,880 'gap':674 'general':581 'generat':35,439,1078,1082 'georgia':1419,1621 'get':1799,2434,2662,2873 'glanc':153,164,174,256,522 'goal':37,549,875,1218,2837 'govern':1325 'gray':1315 'green':1301 'grew':1134 'gridlin':1240 'group':508,1749 'growth':1482,1865 'guarante':749 'guess':345 'guidelin':562 'hardcod':398,2943 'header':330,1208,1444,1452,1584,1641,1649,1689,1705,1706,1776,1811,1812,1821,1835,1850,1887,1913,1970,1979,2009,2028,2063,2078,2148,2151,2161,2167,2197,2204,2279,2497,2500,2523,2530,2551,2560,2611,2631,2642,2861 'healthcar':1344 'heatmap':196 'height':779,2480,2492,2514,2520,2527,2534 'help':119,137,216,283,350,417,477 'hex':1514 'hide':1239 'hierarchi':1582,1627 'high':1504 'high-light':1503 'highlight':240,1495,1560 'histor':214 'horizont':1945,1981,2037,2134,2146,2179,2209,2240,2249,2257,2705 'horizontal-on':1944 'howev':731 'hue':1515 'hunt':300 'hyperlink':369,817,2880 'ibm':1613,1616 'icon':250 'ideal':568 'identif':1770 'immedi':46,559,1221 'implement':541 'import':231,1233,1522,2716,2738,2763 'includ':741,796,807,1191,1206,2228,2356 'incom':1836 'indent':2218,2244,2264 'independ':1473 'index':339,810,815 'indic':517 'industri':1313 'inform':594,871 'inner':2036,2133,2145,2156,2178 'innov':1338 'input':411,416,899,964,1529,1565,2941 'insight':49,276,480,526,878,1098,1117,1132,1160,1163,1172,2618 'instal':1625 'institut':1327,1358 'int':2454 'integ':936 'interact':2833,2836 'intern':1980,1986,2882 'isinst':2452 'ital':1669,1737 'item':1851 'jan':1074 'keep':2949 'key':241,273,275,1097,1116,2617,2670 'know':431,441,451 'knowledg':881 'kpi':257 'label':2011,2080 'label/text':2297 'last':2154,2649,2656,2665,2876,2878 'layer':540,542,869,1212,2831 'layout':385,629,634 'learn':874 'leav':186 'left':638,687,1246,1968,2108,2182,2183,2217,2233,2241,2258,2706 'left-align':686,2232 'left/right':2105 'len':2403,2443,2446,2447,2476,2823 'length':2286,2437 'let':1275,2361 'letter':2664,2875 'level':1500,2559 'light':1280,1374,1390,1450,1505,1509,2693,2697 'like':985 'line':158,2507 'link':341,2883,2895 'list':2395 'locat':1052 'logic':550,744 'long':2214,2314,2566,2621 'look':461,1243,1992 'loss':1488 'luxuri':1287,1310 'm':1211 'magnitud':184 'main':605 'make':38 'manual':313,374,491,780,2483 'manus':4 'margin':639,646,1247,1891,1922 'maritim':1326 'match':88,124,2637,2653 'matric':201 'matter':220,525 'max':569,2283,2284,2318,2323,2402,2442,2444,2445,2474,2475,2725,2750,2781,2793 'may':759,2939 'mean':1112,1472 'meaning':74,2911 'medium':1972,2032 'merg':762,2538,2541,2576,2577,2595,2601,2634 'messag':606 'metric':274,1157,2671 'middl':2158 'militari':1362 'min':2722,2744,2775,2778,2787,2790 'minimalist':1320 'minimum':2291,2295,2466,2478 'miss':1177 'mistak':959 'mix':910 'model':403 'modern':1319,1619,1949 'mom':496 'much':57 'multi':303,2558,2627 'multi-level':2557 'multi-sent':2626 'multi-sheet':302 'must':598,699,893,1953,2000,2073,2481,2636,2652 'n':237,249 'n/a':1183 'name':586,825,842,856,860,1122,1678,1694,1709,1723,1732,2676 'natur':723,756,1350,2364 'navi':1321 'navig':343,372,553,578,801 'near':1067 'need':86,100,191,324,368,558,753,1049,1548,2015 'negat':1485,2311 'net':1093 'never':700,909,1184 'non':1753,1780,2191 'non-data-block':2190 'non-empti':1752,1779 'none':1442,1447,1459,1988,2047 'note':718,782,1087,1194,1204,1603,1663,1728,1729,2200,2281,2296,2623 'number':319,885,895,974,990,1002,2220,2246,2303,2310 'numer':189,326,475,891,2406,2457,2463,2470 'oliv':1359 'omit':1989 'one':915,1256,2954 'open':51,608 'openpyxl':2484 'openpyxl.chart':2762 'openpyxl.formatting.rule':2715,2737 'openpyxl.styles':1232 'option':2597 'order':580,1596 'organ':22,548,561,1351 'other':2136 'otherwis':2581 'outdoor':1363 'outer':1802,1938,1958,2021,2106,2109,2119,2129,2138,2152,2174 'outlier':246 'overflow':791 'overlap':701 'overview':293,574,583,596,812,836,1056,1080 'pad':2237,2290,2294,2459,2477 'page':298 'pair':136,1579,1593 'pane':329,2849,2857 'paramet':400 'parent':2561 'part':83,176,536 'part-to-whol':175 'pass':1543 'pattern':198,630,1407 'patternfil':1235,2689 'pdf':392 'per':1258 'percentag':951 'perform':507,1154 'period':453 'pie':168 'placement':681 'plex':1614,1617 'point':720,2620 'pop':199 'posit':502,633,637,1479 'possibl':59 'practic':1009 'pre':228,307,1624,2907 'pre-calcul':306 'pre-instal':1623 'pre-sort':227,2906 'precis':469,908,927,984 'prefer':1595 'premium':1289,1339 'present':25,1105 'prevent':410 'primari':268,1279,1372,1388,1441,1446,1455,1638,1646,1687,1703,1975,2035,2685,2728,2754 'primarili':1138 'principl':53 'print':383,388 'print-friend':382 'prioriti':238,2926 'pro':1417,1426,1606,1609 'problem':107 'process':3,2075 'profession':5,32,459,1219,1331 'profit':1483 'progress':611 'proport':171 'provid':115 'purpl':1334 'purpos':76 'python':813,969,1113,1230,1366,1559,1671,2018,2231,2368,2510,2640,2713,2735,2760,2855,2869,2881,2927 'q4':1151 'quick':192,342 'rang':202,450,1022,1066,2084,2093,2377,2394,2416,2420 'rank':235,500,2913 'rate':1521,1866 'raw':926,983 'readi':311,386 'recognit':1831 'recommend':563,1291,1612,1942 'refer':379,2765,2773,2785 'region':2771 'regular':1661 'relat':678,696,2555,2615 'reliabl':462 'report':282,393,447,535,1063,1290 'requir':316,414,1761,2600 'result':310,401,511,903,919,1929 'return':1096,2473 'revenu':590,1092,1133,1150,1210,1860,2769,2931 'right':127,676,692,730,736,747,757,1969,2118,2184,2185,2221,2250 'role':2335 'row':212,272,337,647,658,665,673,708,710,778,850,1020,1030,1031,1167,1494,1499,1755,1769,1782,1789,1813,1815,1823,1832,1844,1848,1858,1863,1873,1877,1888,1898,1902,1914,1919,1985,2055,2057,2082,2086,2088,2101,2102,2132,2141,2143,2155,2163,2165,2170,2172,2277,2353,2389,2398,2400,2410,2412,2418,2422,2424,2428,2429,2479,2490,2537,2568,2779,2782,2791,2794,2854,2862,2868,2879 'row-level':1498 'royal':1353 'rule':635,888,1550,1771,1941,2718,2732,2740,2758 'sale':1094 'san':1422,1425,1577,1586,1600,1608,1618,1658,1665,1724,1733 'sans-serif':1576,1585,1599,1657,1664 'save':285 'scale':195,2734 'scan':1773 'scenario':132,406 'scope':2269 'scroll':333 'secondari':270 'section':277,654,660,1088,1443,1524,1527,1563,1640,1688,1775,1834,2196,2278,2496,2522,2550,2610,2630,2641 'see':149,160,170,205,1217 'segment':514 'select':125,1270 'semant':1468,1476,1513,1552,1556 'sens':1222 'sensit':446 'sentenc':2216,2622,2628 'separ':1090,1766,1847,1876,1901,1931 'seri':166,457,2811,2814,2918 'series.graphicalproperties.solidfill':2818 'serif':826,1123,1413,1416,1575,1578,1580,1587,1597,1601,1605,1615,1634,1642,1650,1659,1666,1679,1695,1710,2677 'serv':77,1226,2333 'set':251,777,897,960,989,1048,2004,2008,2482 'setup':1229 'share':395 'sheet':294,304,338,349,378,560,564,572,579,597,610,627,806,809,814,835,841,845,855,859,1058,1091 'sheet1':593 'short':2210 'show':1152,1179 'side':1238,1962,2023,2030,2038,2045 'sign':2312 'similar':2334 'simpl':2951 'singl':209,695,713,868,2593,2893,2904 'size':828,1125,1630,1681,1697,1712,1726,1735,2679 'skill':36 'skill-xlsx-processing-manus' 'slate':1314 'solid':2700 'solv':110 'sort':229,2905,2908 'sourc':381,429,1055,1060,1415,1424,1604,1607 'source-lawvable' 'space':655,662,742,797,2307 'span':2542,2563,2606,2612,2643 'spare':262 'sparklin':204 'special':1534,1567 'specif':131,582 'specifi':1277 'spreadsheet':7,20 'stand':243,599 'standalon':706,2198,2275,2351,2387 'standard':2502 'start':632,651,846,1024,1164,1783,1857,1885,1911,2054,2058,2085,2094,2113,2142,2164,2397,2409,2421,2690,2720,2742,2745 'state':260,532 'statement':1837 'statist':317 'status':252,258,2223 'str':2440 'strongest':1153 'structur':26,544,625,1808 'style':1631,1943,2024,2031,2039,2046 'sub':1828 'sub-tabl':1827 'subtitl':1071,2604 'subtl':1511 'success':1484,1540,1569 'summari':211,271,295,309,509,576,613 'superfamili':1611 'sustain':1305 'switch':375 'system':1254 'tabl':334,661,667,671,679,685,697,705,1451,1648,1704,1816,1829,2499,2529,2556,2616,2638,2647,2654,2851,2865 'tabular':1590 'teal':1341 'tech':1318,1340 'technic':781 'tell':1107 'templat':413 'text':527,707,714,721,732,754,769,770,776,790,2199,2211,2215,2230,2235,2254,2262,2276,2315,2352,2362,2388,2506,2567,2579,2589,2629 'theme':833,865,1130,1253,1257,1266,1269,1278,1364,1367,1369,1404,1408,1409,1432,1440,1445,1449,1454,1465,1475,1686,1702,1974,2034,2684,2692,2696,2727,2753,2807,2819,2824,2890,2901 'thin':1982,2025,2040 'think':93 'threshold':247 'time':165,286,445,449,456,1065,2917 'time-sensit':444 'tint':1506 'titl':716,1068,1439,1583,1598,1633,1673,1819,2195,2494,2516,2544,2602,2799 'top':236,645,1142,1520,1966,2128,2137,2186,2187 'top/bottom':248 'topic-agent-skills' 'topic-automation' 'topic-law' 'topic-legal-work' 'topic-workflows' 'total':1149 'trend':161,206,516 'true':831,1128,1684,1700,1715,1738,2064,2263,2407,2682,2802 'trust':419 'tupl':2401 'type':932,1014,1806,1807,1956,2293,2491,2699,2721,2724,2743,2749 'typographi':1573 'underlin':867,2892,2903 'understand':139,603 'unit':1205,1760 'unless':928,1186 'updat':402,2940 'upon':50 'usabl':2838 'use':17,43,146,226,261,292,352,359,427,486,1201,1281,1478,1502,1516,1574,2366,2935,2942 'user':40,85,99,134,138,142,217,222,284,288,351,355,361,415,418,423,478,482,554,601,879,1109,1276,2840,2938 'usual':2302,2605 'valid':408 'valu':135,143,155,223,289,356,424,476,483,854,900,1033,1041,1171,1178,1224,2439,2449,2915,2930,2944 'vertic':1987,2225,2242,2251,2259,2707 'visibl':253,331,503 'visual':55,70,265,1214,1225,1261,1759,2710 'vs':498 'want':620 'warm':1346 'warn':1490,1545,1571 'weight':1973 'well':1345 'white':1453,1654 'whole':178 'widest':2342 'width':643,766,774,1251,2267,2337,2359,2372,2380,2546,2553,2570,2609,2613,2635,2639,2645 'wine':1312 'within':207,2591 'without':185,607,973,1820 'word':2212 'work':2844 'workbook':1259 'would':2580 'wrap':768,775,2229,2253,2261,2320,2505 'wrap/merge':2367 'wrong':970 'ws':818,821,976,995,1000,1114,1118,1674,1690,2053,2373,2668,2672,2686,2701,2774,2786 'ws.add':2827 'ws.auto_filter.ref':2870 'ws.cell':849,1029,1166,2100,2427 'ws.column':1248 'ws.conditional_formatting.add':2729,2755 'ws.freeze':2856 'ws.merge':2658 'ws.row':2511,2517,2524,2531 'ws.sheet_view.showgridlines':1244 'xlsx':2 'xlsx-processing-manus':1 'year1':1852 'year2':1853 'yes':2545,2552,2562,2569 'yoy':495,1136 'zero':1188 'δ':489","prices":[{"id":"4468f59a-b211-4c0f-85f9-add2ceb68f1b","listingId":"2729e2af-0b1a-4cf0-b25b-5bbea5ecab1b","amountUsd":"0","unit":"free","nativeCurrency":null,"nativeAmount":null,"chain":null,"payTo":null,"paymentMethod":"skill-free","isPrimary":true,"details":{"org":"lawvable","category":"awesome-legal-skills","install_from":"skills.sh"},"createdAt":"2026-04-18T22:04:47.725Z"}],"sources":[{"listingId":"2729e2af-0b1a-4cf0-b25b-5bbea5ecab1b","source":"github","sourceId":"lawvable/awesome-legal-skills/xlsx-processing-manus","sourceUrl":"https://github.com/lawvable/awesome-legal-skills/tree/main/skills/xlsx-processing-manus","isPrimary":false,"firstSeenAt":"2026-04-18T22:04:47.725Z","lastSeenAt":"2026-05-02T18:53:57.244Z"}],"details":{"listingId":"2729e2af-0b1a-4cf0-b25b-5bbea5ecab1b","quickStartSnippet":null,"exampleRequest":null,"exampleResponse":null,"schema":null,"openapiUrl":null,"agentsTxtUrl":null,"citations":[],"useCases":[],"bestFor":[],"notFor":[],"kindDetails":{"org":"lawvable","slug":"xlsx-processing-manus","github":{"repo":"lawvable/awesome-legal-skills","stars":310,"topics":["agent-skills","automation","law","legal-work","workflows"],"license":"other","html_url":"https://github.com/lawvable/awesome-legal-skills","pushed_at":"2026-03-03T11:25:06Z","description":"A curated list of awesome Agent Skills for automating legal work","skill_md_sha":"e750b26893acb1e45cb1172433d47bb8b3115fdc","skill_md_path":"skills/xlsx-processing-manus/SKILL.md","default_branch":"main","skill_tree_url":"https://github.com/lawvable/awesome-legal-skills/tree/main/skills/xlsx-processing-manus"},"layout":"multi","source":"github","category":"awesome-legal-skills","frontmatter":{"name":"xlsx-processing-manus","description":"Professional Excel spreadsheet creation with a focus on aesthetics and data analysis. Use when creating spreadsheets for organizing, analyzing, and presenting structured data in a clear and professional format."},"skills_sh_url":"https://skills.sh/lawvable/awesome-legal-skills/xlsx-processing-manus"},"updatedAt":"2026-05-02T18:53:57.244Z"}}