{"id":"7f152d33-bebc-4294-a354-91cf445ba56f","entityType":"agent","slug":"clawhub-ericlooi504-python-automation","name":"Python Automation","canonicalUrl":"https://www.xpersona.co/agent/clawhub-ericlooi504-python-automation","canonicalPath":"/agent/clawhub-ericlooi504-python-automation","generatedAt":"2026-10-11T07:38:49.976Z","source":"CLAWHUB","claimStatus":"UNCLAIMED","verificationTier":"NONE","summary":{"evidence":{"source":"editorial-content","verified":true,"confidence":"high","updatedAt":"2026-10-11T04:15:28.483Z","emptyReason":null},"description":"Full-stack Python automation toolkit for file processing, data extraction, PDF manipulation, Excel/workbook automation, web scraping, and system tasks. Use w... Skill: Python Automation Owner: ericlooi504 Summary: Full-stack Python automation toolkit for file processing, data extraction, PDF manipulation, Excel/workbook automation, web scraping, and system tasks. Use w... Tags: latest:1.0.0 Version history: v1.0.0 | 2026-05-06T02:47:50.314Z | user Initial release: file processing, PDF/Excel automation, web scraping, CLI tools Archive index: Archive v1.0.0: 7 files, 6816 byte","descriptionLabel":"Technical summary","evidenceSummary":"Capability contract not published. No trust telemetry is available yet. 1.2K downloads reported by the source. Last updated 10/11/2026.","installCommand":"clawhub skill install s1728b3jrtnnagbdxjy2rmpndh84mk8e:python-automation","sourceUrl":"https://clawhub.ai/ericlooi504/python-automation","homepage":"https://clawhub.ai/ericlooi504/skills/python-automation","primaryLinks":[{"label":"View on ClawHub","url":"https://clawhub.ai/ericlooi504/python-automation","kind":"source"},{"label":"Homepage","url":"https://clawhub.ai/ericlooi504/skills/python-automation","kind":"homepage"}],"safetyScore":84,"overallRank":62,"popularityScore":61,"trustScore":null,"claimedByName":null,"isOwner":false,"seoDescription":"Full-stack Python automation toolkit for file processing, data extraction, PDF manipulation, Excel/workbook automation, web scraping, and system tasks. Use w..."},"coverage":{"evidence":{"source":"public-profile","verified":false,"confidence":"medium","updatedAt":"2026-10-11T04:15:28.483Z","emptyReason":null},"protocols":[{"protocol":"OPENCLEW","label":"OpenClaw","status":"self-declared","notes":"Declared in the public agent profile."}],"capabilities":[],"verifiedCount":0,"selfDeclaredCount":1,"capabilityMatrix":{"rows":[{"key":"OPENCLEW","type":"protocol","support":"unknown","confidenceSource":"profile","notes":"Listed on profile"}],"flattenedTokens":"protocol:OPENCLEW|unknown|profile"}},"adoption":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"medium","updatedAt":"2026-10-11T04:15:28.483Z","emptyReason":null},"stars":null,"forks":null,"downloads":1163,"packageName":null,"latestVersion":"1.0.0","tractionLabel":"1.2K downloads"},"release":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"medium","updatedAt":"2026-10-11T04:15:28.415Z","emptyReason":null},"lastUpdatedAt":"2026-10-11T04:15:28.483Z","lastCrawledAt":"2026-10-11T04:15:28.415Z","lastIndexedAt":null,"nextCrawlAt":"2026-10-12T04:15:28.415Z","lastVerifiedAt":null,"highlights":[{"version":"1.0.0","createdAt":"2026-05-06T02:47:50.314Z","changelog":"Initial release: file processing, PDF/Excel automation, web scraping, CLI tools","fileCount":7,"zipByteSize":6816}]},"execution":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No published capability contract is available yet."},"installCommand":"clawhub skill install s1728b3jrtnnagbdxjy2rmpndh84mk8e:python-automation","setupComplexity":"low","setupSteps":["Setup complexity is LOW. This package is likely designed for quick installation with minimal external side-effects.","Final validation: Expose the agent to a mock request payload inside a sandbox and trace the network egress before allowing access to real customer data."],"contract":{"contractStatus":"missing","authModes":[],"requires":[],"forbidden":[],"supportsMcp":false,"supportsA2a":false,"supportsStreaming":false,"inputSchemaRef":null,"outputSchemaRef":null,"dataRegion":null,"contractUpdatedAt":null,"sourceUpdatedAt":null,"freshnessSeconds":null},"invocationGuide":{"preferredApi":{"snapshotUrl":"https://www.xpersona.co/api/v1/agents/clawhub-ericlooi504-python-automation/snapshot","contractUrl":"https://www.xpersona.co/api/v1/agents/clawhub-ericlooi504-python-automation/contract","trustUrl":"https://www.xpersona.co/api/v1/agents/clawhub-ericlooi504-python-automation/trust"},"curlExamples":["curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-ericlooi504-python-automation/snapshot\"","curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-ericlooi504-python-automation/contract\"","curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-ericlooi504-python-automation/trust\""],"jsonRequestTemplate":{"query":"summarize this repo","constraints":{"maxLatencyMs":2000,"protocolPreference":["OPENCLEW"]}},"jsonResponseTemplate":{"ok":true,"result":{"summary":"...","confidence":0.9},"meta":{"source":"CLAWHUB","generatedAt":"2026-10-11T07:38:49.975Z"}},"retryPolicy":{"maxAttempts":3,"backoffMs":[500,1500,3500],"retryableConditions":["HTTP_429","HTTP_503","NETWORK_TIMEOUT"]}},"endpoints":{"dossierUrl":"https://www.xpersona.co/api/v1/agents/clawhub-ericlooi504-python-automation/dossier","snapshotUrl":"https://www.xpersona.co/api/v1/agents/clawhub-ericlooi504-python-automation/snapshot","contractUrl":"https://www.xpersona.co/api/v1/agents/clawhub-ericlooi504-python-automation/contract","trustUrl":"https://www.xpersona.co/api/v1/agents/clawhub-ericlooi504-python-automation/trust"}},"reliability":{"evidence":{"source":"runtime-metrics","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No trust, reliability, or runtime telemetry is available."},"trust":{"status":"unavailable","handshakeStatus":"UNKNOWN","verificationFreshnessHours":null,"reputationScore":null,"p95LatencyMs":null,"successRate30d":null,"fallbackRate":null,"attempts30d":null,"trustUpdatedAt":null,"trustConfidence":"unknown","sourceUpdatedAt":null,"freshnessSeconds":null},"decisionGuardrails":{"doNotUseIf":["Contract metadata is missing or unavailable for deterministic execution."],"safeUseWhen":[],"riskFlags":["missing_or_unavailable_contract","trust_data_unavailable","schema_references_missing"],"operationalConfidence":"low"},"executionMetrics":{"observedLatencyMsP50":null,"observedLatencyMsP95":null,"estimatedCostUsd":null,"uptime30d":null,"rateLimitRpm":null,"rateLimitBurst":null,"lastVerifiedAt":null,"verificationSource":null},"runtimeMetrics":{"successRate":null,"avgLatencyMs":null,"avgCostUsd":null,"hallucinationRate":null,"retryRate":null,"disputeRate":null,"p50Latency":null,"p95Latency":null,"lastUpdated":null}},"benchmarks":{"evidence":{"source":"no-benchmark-data","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No benchmark suites or observed failure patterns are available."},"suites":[],"failurePatterns":[]},"artifacts":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"high","updatedAt":"2026-10-11T04:15:28.483Z","emptyReason":null},"readme":"Skill: Python Automation\n\nOwner: ericlooi504\n\nSummary: Full-stack Python automation toolkit for file processing, data extraction, PDF manipulation, Excel/workbook automation, web scraping, and system tasks. Use w...\n\nTags: latest:1.0.0\n\nVersion history:\n\nv1.0.0 | 2026-05-06T02:47:50.314Z | user\n\nInitial release: file processing, PDF/Excel automation, web scraping, CLI tools\n\nArchive index:\n\nArchive v1.0.0: 7 files, 6816 bytes\n\nFiles: references/pandas.md (1532b), references/pdf.md (1625b), scripts/csv_to_excel.py (2425b), scripts/rename_batch.py (2919b), skill-card.md (2117b), SKILL.md (2638b), _meta.json (136b)\n\nFile v1.0.0:SKILL.md\n\n---\nname: python-automation\ndescription: \"Full-stack Python automation toolkit for file processing, data extraction, PDF manipulation, Excel/workbook automation, web scraping, and system tasks. Use when the user needs to: (1) Process/rename/organize files in bulk, (2) Extract data from PDFs, CSVs, or web pages, (3) Generate or modify Excel reports, (4) Automate repetitive system tasks (cron, file watching), (5) Build quick CLI tools for data processing.\"\n---\n\n# Python Automation\n\n## Core Libraries Quick Reference\n\n| Task | Library | Installation |\n|------|---------|-------------|\n| File system | `pathlib`, `shutil`, `os` | stdlib |\n| CSV | `csv` | stdlib |\n| Excel | `openpyxl` | `pip install openpyxl` |\n| Excel (old) | `xlrd` / `xlwt` | `pip install xlrd xlwt` |\n| PDF text | `PyMuPDF` (fitz) | `pip install PyMuPDF` |\n| PDF tables | `camelot-py` / `tabula-py` | `pip install camelot-py` |\n| Web scraping | `requests` + `BeautifulSoup4` | `pip install requests beautifulsoup4` |\n| Browser automation | `playwright` or `selenium` | `pip install playwright` |\n| CLI | `argparse` (stdlib) or `click` | stdlib / `pip install click` |\n| Rich terminal | `rich` | `pip install rich` |\n| File watching | `watchdog` | `pip install watchdog` |\n| Scheduling | `schedule` or cron | `pip install schedule` |\n\n## Common Patterns\n\n### 1. Batch File Processing\n\n```python\nfrom pathlib import Path\n\nfor f in Path(\".\").glob(\"**/*.txt\"):\n    content = f.read_text()\n    # transform content\n    f.write_text(content)\n```\n\n### 2. CSV Read/Write\n\n```python\nimport csv\nwith open(\"input.csv\", newline=\"\") as f:\n    reader = csv.DictReader(f)\n    for row in reader:\n        print(row[\"column_name\"])\n\nwith open(\"output.csv\", \"w\", newline=\"\") as f:\n    writer = csv.writer(f)\n    writer.writerow([\"col1\", \"col2\"])\n    writer.writerow([\"val1\", \"val2\"])\n```\n\n### 3. Excel Generation\n\n```python\nfrom openpyxl import Workbook\nwb = Workbook()\nws = wb.active\nws[\"A1\"] = \"Hello\"\nws[\"B1\"] = 42\nwb.save(\"output.xlsx\")\n```\n\n### 4. Web Scraping\n\n```python\nimport requests\nfrom bs4 import BeautifulSoup\n\nresp = requests.get(\"https://example.com\", timeout=10)\nsoup = BeautifulSoup(resp.text, \"html.parser\")\nfor link in soup.select(\"a[href]\"):\n    print(link[\"href\"], link.text.strip())\n```\n\n## Scripts\n\nSee [scripts/](scripts/) for ready-to-use automation scripts:\n- `rename_batch.py` — Batch rename files with pattern matching\n- `csv_to_excel.py` — Convert CSV files to Excel workbooks\n\n## Reference Files\n\n- [references/pandas.md](references/pandas.md) — Advanced data analysis with pandas\n- [references/pdf.md](references/pdf.md) — PDF extraction patterns\n\nFile v1.0.0:_meta.json\n\n{\n  \"ownerId\": \"kn7dgh3zgw7fda0c0dp8n1r3y984nn3e\",\n  \"slug\": \"python-automation\",\n  \"version\": \"1.0.0\",\n  \"publishedAt\": 1778035670314\n}\n\nFile v1.0.0:references/pandas.md\n\n# Pandas Data Analysis Quick Reference\n\n## Setup\n```bash\npip install pandas openpyxl matplotlib\n```\n\n## Common Patterns\n\n### Reading data\n```python\nimport pandas as pd\n\ndf = pd.read_csv(\"data.csv\")\ndf = pd.read_excel(\"data.xlsx\", sheet_name=\"Sheet1\")\ndf = pd.read_json(\"data.json\")\ndf = pd.read_html(\"https://table-page.com\")[0]  # parse HTML tables\n```\n\n### Data exploration\n```python\ndf.head(10)\ndf.info()\ndf.describe()\ndf[\"column\"].value_counts()\ndf.isnull().sum()\n```\n\n### Filtering\n```python\ndf[df[\"age\"] > 30]\ndf[(df[\"city\"] == \"KL\") & (df[\"active\"] == True)]\ndf.query(\"age > 30 and city == 'KL'\")\n```\n\n### Grouping & aggregation\n```python\ndf.groupby(\"category\")[\"amount\"].sum()\ndf.groupby([\"year\", \"month\"]).agg({\"sales\": \"sum\", \"orders\": \"count\"})\ndf.pivot_table(values=\"amount\", index=\"city\", columns=\"category\", aggfunc=\"sum\")\n```\n\n### Column operations\n```python\ndf[\"total\"] = df[\"price\"] * df[\"quantity\"]\ndf[\"date\"] = pd.to_datetime(df[\"date_str\"])\ndf.rename(columns={\"old_name\": \"new_name\"}, inplace=True)\ndf.drop(columns=[\"unused\"], inplace=True)\n```\n\n### Export\n```python\ndf.to_csv(\"output.csv\", index=False)\ndf.to_excel(\"output.xlsx\", sheet_name=\"Data\", index=False)\ndf.to_json(\"output.json\", orient=\"records\")\n```\n\n### Merge / Join\n```python\npd.merge(df1, df2, on=\"key\", how=\"left\")\npd.concat([df1, df2], axis=0)  # row bind\npd.concat([df1, df2], axis=1)  # column bind\n```\n\n### Date range filtering\n```python\ndf[df[\"date\"].between(\"2024-01-01\", \"2024-12-31\")]\ndf.set_index(\"date\").resample(\"M\")[\"sales\"].sum()\n```\n\nFile v1.0.0:references/pdf.md\n\n# PDF Processing Patterns\n\n## Text Extraction\n\n### Using PyMuPDF (fitz)\n```bash\npip install PyMuPDF\n```\n\n```python\nimport fitz  # PyMuPDF\n\ndoc = fitz.open(\"document.pdf\")\nfor page_num, page in enumerate(doc):\n    text = page.get_text()\n    print(f\"--- Page {page_num + 1} ---\")\n    print(text)\n```\n\n### Using pdfplumber (better for tables)\n```bash\npip install pdfplumber\n```\n\n```python\nimport pdfplumber\n\nwith pdfplumber.open(\"document.pdf\") as pdf:\n    for page in pdf.pages:\n        text = page.extract_text()\n        tables = page.extract_tables()\n```\n\n## Table Extraction\n\n### Using camelot-py (best for well-structured tables)\n```bash\npip install camelot-py[cv]\n```\n\n```python\nimport camelot\n\ntables = camelot.read_pdf(\"document.pdf\", pages=\"1-3\")\nfor table in tables:\n    print(table.df)  # DataFrame\n    # table.to_csv(\"table.csv\")\n```\n\n## PDF Generation\n\n### Using reportlab\n```bash\npip install reportlab\n```\n\n```python\nfrom reportlab.lib.pagesizes import A4\nfrom reportlab.pdfgen import canvas\n\nc = canvas.Canvas(\"output.pdf\", pagesize=A4)\nc.drawString(100, 700, \"Hello, PDF!\")\nc.save()\n```\n\n### Using fpdf2 (simpler)\n```bash\npip install fpdf2\n```\n\n```python\nfrom fpdf import FPDF\n\npdf = FPDF()\npdf.add_page()\npdf.set_font(\"Arial\", size=12)\npdf.cell(200, 10, text=\"Hello, PDF!\", new_x=\"LMARGIN\", new_y=\"NEXT\")\npdf.output(\"output.pdf\")\n```\n\n## PDF Merge / Split\n\n```python\n# Merge PDFs\nfrom PyPDF2 import PdfWriter, PdfReader\n\nwriter = PdfWriter()\nfor pdf_file in [\"file1.pdf\", \"file2.pdf\"]:\n    reader = PdfReader(pdf_file)\n    for page in reader.pages:\n        writer.add_page(page)\n\nwriter.write(\"merged.pdf\")\n```\n\nFile v1.0.0:skill-card.md\n\n## Description:\n\nFull-stack Python automation toolkit for file processing, data extraction, PDF manipulation, Excel/workbook automation, web scraping, and system tasks.\n\nThis skill is ready for commercial/non-commercial use.\n\n## Publisher:\n\n[ericlooi504](https://clawhub.ai/user/ericlooi504)\n\n### License/Terms of Use:\n\nMIT-0\n\n## Use Case:\n\nDevelopers and engineers use this skill to plan and generate Python automation for bulk file operations, data extraction, PDF and Excel workflows, web scraping, and small CLI utilities.\n\n### Deployment Geography for Use:\n\nGlobal\n\n## Known Risks and Mitigations:\n\nRisk: File-renaming operations can move or overwrite local files when run on important or overly broad folders.\n\nMitigation: Run operations on test copies first, use dry-run preview before renaming, and avoid broad target directories.\n\nRisk: Converting untrusted CSV data to Excel can create risky spreadsheet output.\n\nMitigation: Sanitize CSV values before conversion and process untrusted data in a controlled environment.\n\nRisk: Unpinned Python dependencies can change behavior across environments.\n\nMitigation: Install dependencies in a virtual environment and pin package versions for repeatable automation runs.\n\n## Reference(s):\n\n- [Pandas Data Analysis Quick Reference](references/pandas.md)\n- [PDF Processing Patterns](references/pdf.md)\n- [ClawHub Skill Page](https://clawhub.ai/ericlooi504/skills/python-automation)\n\n## Skill Output:\n\n**Output Type(s):** [text, markdown, code, shell commands, configuration, guidance]\n\n**Output Format:** [Markdown responses with inline code blocks and command examples]\n\n**Output Parameters:** [1D]\n\n**Other Properties Related to Output:** [May include generated Python scripts, dependency installation commands, and file-processing guidance.]\n\n## Skill Version(s):\n\n1.0.0 (source: release evidence)\n\n## Ethical Considerations:\n\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment.","readmeExcerpt":"Skill: Python Automation Owner: ericlooi504 Summary: Full-stack Python automation toolkit for file processing, data extraction, PDF manipulation, Excel/workbook automation, web scraping, and system tasks. Use w... Tags: latest:1.0.0 Version history: v1.0.0 | 2026-05-06T02:47:50.314Z | user Initial release: file processing, PDF/Excel automation, web scraping, CLI tools Archive index: Archive v1.0.0: 7 files, 6816 byte","codeSnippets":[],"executableExamples":[{"language":"python","snippet":"from pathlib import Path\n\nfor f in Path(\".\").glob(\"**/*.txt\"):\n    content = f.read_text()\n    # transform content\n    f.write_text(content)"},{"language":"python","snippet":"import csv\nwith open(\"input.csv\", newline=\"\") as f:\n    reader = csv.DictReader(f)\n    for row in reader:\n        print(row[\"column_name\"])\n\nwith open(\"output.csv\", \"w\", newline=\"\") as f:\n    writer = csv.writer(f)\n    writer.writerow([\"col1\", \"col2\"])\n    writer.writerow([\"val1\", \"val2\"])"},{"language":"python","snippet":"from openpyxl import Workbook\nwb = Workbook()\nws = wb.active\nws[\"A1\"] = \"Hello\"\nws[\"B1\"] = 42\nwb.save(\"output.xlsx\")"},{"language":"python","snippet":"import requests\nfrom bs4 import BeautifulSoup\n\nresp = requests.get(\"https://example.com\", timeout=10)\nsoup = BeautifulSoup(resp.text, \"html.parser\")\nfor link in soup.select(\"a[href]\"):\n    print(link[\"href\"], link.text.strip())"},{"language":"bash","snippet":"pip install pandas openpyxl matplotlib"},{"language":"python","snippet":"import pandas as pd\n\ndf = pd.read_csv(\"data.csv\")\ndf = pd.read_excel(\"data.xlsx\", sheet_name=\"Sheet1\")\ndf = pd.read_json(\"data.json\")\ndf = pd.read_html(\"https://table-page.com\")[0]  # parse HTML tables"}],"parameters":null,"dependencies":[],"permissions":[],"extractedFiles":[{"path":"SKILL.md","content":"---\nname: python-automation\ndescription: \"Full-stack Python automation toolkit for file processing, data extraction, PDF manipulation, Excel/workbook automation, web scraping, and system tasks. Use when the user needs to: (1) Process/rename/organize files in bulk, (2) Extract data from PDFs, CSVs, or web pages, (3) Generate or modify Excel reports, (4) Automate repetitive system tasks (cron, file watching), (5) Build quick CLI tools for data processing.\"\n---\n\n# Python Automation\n\n## Core Libraries Quick Reference\n\n| Task | Library | Installation |\n|------|---------|-------------|\n| File system | `pathlib`, `shutil`, `os` | stdlib |\n| CSV | `csv` | stdlib |\n| Excel | `openpyxl` | `pip install openpyxl` |\n| Excel (old) | `xlrd` / `xlwt` | `pip install xlrd xlwt` |\n| PDF text | `PyMuPDF` (fitz) | `pip install PyMuPDF` |\n| PDF tables | `camelot-py` / `tabula-py` | `pip install camelot-py` |\n| Web scraping | `requests` + `BeautifulSoup4` | `pip install requests beautifulsoup4` |\n| Browser automation | `playwright` or `selenium` | `pip install playwright` |\n| CLI | `argparse` (stdlib) or `click` | stdlib / `pip install click` |\n| Rich terminal | `rich` | `pip install rich` |\n| File watching | `watchdog` | `pip install watchdog` |\n| Scheduling | `schedule` or cron | `pip install schedule` |\n\n## Common Patterns\n\n### 1. Batch File Processing\n\n```python\nfrom pathlib import Path\n\nfor f in Path(\".\").glob(\"**/*.txt\"):\n    content = f.read_text()\n    # transform content\n    f.write_text(content)\n```\n\n### 2. CSV Read/Write\n\n```python\nimport csv\nwith open(\"input.csv\", newline=\"\") as f:\n    reader = csv.DictReader(f)\n    for row in reader:\n        print(row[\"column_name\"])\n\nwith open(\"output.csv\", \"w\", newline=\"\") as f:\n    writer = csv.writer(f)\n    writer.writerow([\"col1\", \"col2\"])\n    writer.writerow([\"val1\", \"val2\"])\n```\n\n### 3. Excel Generation\n\n```python\nfrom openpyxl import Workbook\nwb = Workbook()\nws = wb.active\nws[\"A1\"] = \"Hello\"\nws[\"B1\"] = 42\nwb.save(\"output.xlsx\")\n```\n\n### 4. Web Scraping\n\n```python\nimport requests\nfrom bs4 import BeautifulSoup\n\nresp = requests.get(\"https://example.com\", timeout=10)\nsoup = BeautifulSoup(resp.text, \"html.parser\")\nfor link in soup.select(\"a[href]\"):\n    print(link[\"href\"], link.text.strip())\n```\n\n## Scripts\n\nSee [scripts/](scripts/) for ready-to-use automation scripts:\n- `rename_batch.py` — Batch rename files with pattern matching\n- `csv_to_excel.py` — Convert CSV files to Excel workbooks\n\n## Reference Files\n\n- [references/pandas.md](references/pandas.md) — Advanced data analysis with pandas\n- [references/pdf.md](references/pdf.md) — PDF extraction patterns"},{"path":"_meta.json","content":"{\n  \"ownerId\": \"kn7dgh3zgw7fda0c0dp8n1r3y984nn3e\",\n  \"slug\": \"python-automation\",\n  \"version\": \"1.0.0\",\n  \"publishedAt\": 1778035670314\n}"},{"path":"references/pandas.md","content":"# Pandas Data Analysis Quick Reference\n\n## Setup\n```bash\npip install pandas openpyxl matplotlib\n```\n\n## Common Patterns\n\n### Reading data\n```python\nimport pandas as pd\n\ndf = pd.read_csv(\"data.csv\")\ndf = pd.read_excel(\"data.xlsx\", sheet_name=\"Sheet1\")\ndf = pd.read_json(\"data.json\")\ndf = pd.read_html(\"https://table-page.com\")[0]  # parse HTML tables\n```\n\n### Data exploration\n```python\ndf.head(10)\ndf.info()\ndf.describe()\ndf[\"column\"].value_counts()\ndf.isnull().sum()\n```\n\n### Filtering\n```python\ndf[df[\"age\"] > 30]\ndf[(df[\"city\"] == \"KL\") & (df[\"active\"] == True)]\ndf.query(\"age > 30 and city == 'KL'\")\n```\n\n### Grouping & aggregation\n```python\ndf.groupby(\"category\")[\"amount\"].sum()\ndf.groupby([\"year\", \"month\"]).agg({\"sales\": \"sum\", \"orders\": \"count\"})\ndf.pivot_table(values=\"amount\", index=\"city\", columns=\"category\", aggfunc=\"sum\")\n```\n\n### Column operations\n```python\ndf[\"total\"] = df[\"price\"] * df[\"quantity\"]\ndf[\"date\"] = pd.to_datetime(df[\"date_str\"])\ndf.rename(columns={\"old_name\": \"new_name\"}, inplace=True)\ndf.drop(columns=[\"unused\"], inplace=True)\n```\n\n### Export\n```python\ndf.to_csv(\"output.csv\", index=False)\ndf.to_excel(\"output.xlsx\", sheet_name=\"Data\", index=False)\ndf.to_json(\"output.json\", orient=\"records\")\n```\n\n### Merge / Join\n```python\npd.merge(df1, df2, on=\"key\", how=\"left\")\npd.concat([df1, df2], axis=0)  # row bind\npd.concat([df1, df2], axis=1)  # column bind\n```\n\n### Date range filtering\n```python\ndf[df[\"date\"].between(\"2024-01-01\", \"2024-12-31\")]\ndf.set_index(\"date\").resample(\"M\")[\"sales\"].sum()\n```"},{"path":"references/pdf.md","content":"# PDF Processing Patterns\n\n## Text Extraction\n\n### Using PyMuPDF (fitz)\n```bash\npip install PyMuPDF\n```\n\n```python\nimport fitz  # PyMuPDF\n\ndoc = fitz.open(\"document.pdf\")\nfor page_num, page in enumerate(doc):\n    text = page.get_text()\n    print(f\"--- Page {page_num + 1} ---\")\n    print(text)\n```\n\n### Using pdfplumber (better for tables)\n```bash\npip install pdfplumber\n```\n\n```python\nimport pdfplumber\n\nwith pdfplumber.open(\"document.pdf\") as pdf:\n    for page in pdf.pages:\n        text = page.extract_text()\n        tables = page.extract_tables()\n```\n\n## Table Extraction\n\n### Using camelot-py (best for well-structured tables)\n```bash\npip install camelot-py[cv]\n```\n\n```python\nimport camelot\n\ntables = camelot.read_pdf(\"document.pdf\", pages=\"1-3\")\nfor table in tables:\n    print(table.df)  # DataFrame\n    # table.to_csv(\"table.csv\")\n```\n\n## PDF Generation\n\n### Using reportlab\n```bash\npip install reportlab\n```\n\n```python\nfrom reportlab.lib.pagesizes import A4\nfrom reportlab.pdfgen import canvas\n\nc = canvas.Canvas(\"output.pdf\", pagesize=A4)\nc.drawString(100, 700, \"Hello, PDF!\")\nc.save()\n```\n\n### Using fpdf2 (simpler)\n```bash\npip install fpdf2\n```\n\n```python\nfrom fpdf import FPDF\n\npdf = FPDF()\npdf.add_page()\npdf.set_font(\"Arial\", size=12)\npdf.cell(200, 10, text=\"Hello, PDF!\", new_x=\"LMARGIN\", new_y=\"NEXT\")\npdf.output(\"output.pdf\")\n```\n\n## PDF Merge / Split\n\n```python\n# Merge PDFs\nfrom PyPDF2 import PdfWriter, PdfReader\n\nwriter = PdfWriter()\nfor pdf_file in [\"file1.pdf\", \"file2.pdf\"]:\n    reader = PdfReader(pdf_file)\n    for page in reader.pages:\n        writer.add_page(page)\n\nwriter.write(\"merged.pdf\")\n```"},{"path":"skill-card.md","content":"## Description:\n\nFull-stack Python automation toolkit for file processing, data extraction, PDF manipulation, Excel/workbook automation, web scraping, and system tasks.\n\nThis skill is ready for commercial/non-commercial use.\n\n## Publisher:\n\n[ericlooi504](https://clawhub.ai/user/ericlooi504)\n\n### License/Terms of Use:\n\nMIT-0\n\n## Use Case:\n\nDevelopers and engineers use this skill to plan and generate Python automation for bulk file operations, data extraction, PDF and Excel workflows, web scraping, and small CLI utilities.\n\n### Deployment Geography for Use:\n\nGlobal\n\n## Known Risks and Mitigations:\n\nRisk: File-renaming operations can move or overwrite local files when run on important or overly broad folders.\n\nMitigation: Run operations on test copies first, use dry-run preview before renaming, and avoid broad target directories.\n\nRisk: Converting untrusted CSV data to Excel can create risky spreadsheet output.\n\nMitigation: Sanitize CSV values before conversion and process untrusted data in a controlled environment.\n\nRisk: Unpinned Python dependencies can change behavior across environments.\n\nMitigation: Install dependencies in a virtual environment and pin package versions for repeatable automation runs.\n\n## Reference(s):\n\n- [Pandas Data Analysis Quick Reference](references/pandas.md)\n- [PDF Processing Patterns](references/pdf.md)\n- [ClawHub Skill Page](https://clawhub.ai/ericlooi504/skills/python-automation)\n\n## Skill Output:\n\n**Output Type(s):** [text, markdown, code, shell commands, configuration, guidance]\n\n**Output Format:** [Markdown responses with inline code blocks and command examples]\n\n**Output Parameters:** [1D]\n\n**Other Properties Related to Output:** [May include generated Python scripts, dependency installation commands, and file-processing guidance.]\n\n## Skill Version(s):\n\n1.0.0 (source: release evidence)\n\n## Ethical Considerations:\n\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment."}],"languages":[],"docsSourceLabel":"CLAWHUB","editorialOverview":"Full-stack Python automation toolkit for file processing, data extraction, PDF manipulation, Excel/workbook automation, web scraping, and system tasks. Use w... Skill: Python Automation Owner: ericlooi504 Summary: Full-stack Python automation toolkit for file processing, data extraction, PDF manipulation, Excel/workbook automation, web scraping, and system tasks. Use w... Tags: latest:1.0.0 Version history: v1.0.0 | 2026-05-06T02:47:50.314Z | user Initial release: file processing, PDF/Excel automation, web scraping, CLI tools Archive index: Archive v1.0.0: 7 files, 6816 byte","editorialQuality":{"score":100,"threshold":65,"status":"ready","wordCount":921,"uniquenessScore":53,"reasons":[]}},"media":{"evidence":{"source":"no-media","verified":false,"confidence":"low","updatedAt":"2026-10-11T04:15:28.483Z","emptyReason":"No screenshots, media assets, or demo links are available."},"primaryImageUrl":null,"mediaAssetCount":0,"assets":[],"demoUrl":null},"ownerResources":{"evidence":{"source":"unclaimed","verified":false,"confidence":"low","updatedAt":"2026-10-11T04:15:28.483Z","emptyReason":"This page has not been claimed by the agent owner."},"hasCustomPage":false,"customPageUpdatedAt":null,"customLinks":[],"structuredLinks":{"docsUrl":null,"demoUrl":null,"supportUrl":null,"pricingUrl":null,"statusUrl":null},"customPage":null},"relatedAgents":{"evidence":{"source":"protocol-neighbors","verified":false,"confidence":"medium","updatedAt":"2026-10-11T07:38:49.976Z","emptyReason":null},"items":[{"id":"8ebccd8e-3863-4187-8355-c3f14e1f9edf","entityType":"agent","canonicalPath":"/agent/iofficeai-aionui","slug":"iofficeai-aionui","name":"AionUi","description":"Free, local, open-source 24/7 Cowork app and OpenClaw for Gemini CLI, Claude Code, Codex, OpenCode, Qwen Code, Goose CLI, Auggie, and more | 🌟 Star if you like it!","url":"https://github.com/iOfficeAI/AionUi","homepage":"https://www.aionui.com","source":"GITHUB_REPOS","protocols":["MCP","OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-10-09T19:11:12.944Z","createdAt":"2026-02-25T03:38:16.584Z","downloads":null},{"id":"b917f68a-ebff-438e-84f8-3f4b2494c0bc","entityType":"agent","canonicalPath":"/agent/activepieces-activepieces","slug":"activepieces-activepieces","name":"activepieces","description":"AI Agents & MCPs & AI Workflow Automation • (~400 MCP servers for AI agents) • AI Automation / AI Agent with MCPs • AI Workflows & AI Agents • MCPs for AI Agents","url":"https://github.com/activepieces/activepieces","homepage":"https://www.activepieces.com","source":"GITHUB_REPOS","protocols":["OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-04-15T02:22:12.426Z","createdAt":"2026-02-25T03:38:12.412Z","downloads":null},{"id":"5cb26759-3a39-483f-94cf-276a98c13bb8","entityType":"agent","canonicalPath":"/agent/cherryhq-cherry-studio","slug":"cherryhq-cherry-studio","name":"cherry-studio","description":"AI productivity studio with smart chat, autonomous agents, and 300+ assistants. Unified access to frontier LLMs","url":"https://github.com/CherryHQ/cherry-studio","homepage":"https://cherry-ai.com","source":"GITHUB_REPOS","protocols":["MCP","OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-04-11T14:38:40.986Z","createdAt":"2026-02-25T03:38:19.379Z","downloads":null},{"id":"6f6582d0-5d76-4f0f-b81d-86520247950b","entityType":"agent","canonicalPath":"/agent/copilotkit-copilotkit","slug":"copilotkit-copilotkit","name":"CopilotKit","description":"The Frontend for Agents & Generative UI. React + Angular","url":"https://github.com/CopilotKit/CopilotKit","homepage":"https://docs.copilotkit.ai","source":"GITHUB_REPOS","protocols":["OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-03-25T09:50:57.846Z","createdAt":"2026-02-25T03:39:14.617Z","downloads":null}],"links":{"hub":"/agent","source":"/agent/source/clawhub","protocols":[{"label":"OpenClaw","href":"/agent/protocol/openclew"}]}}}