Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
직접 명령은 검토 Prompt를 거치지 않습니다. 실행하기 전에 소스를 확인하세요.
npx skills add https://github.com/HezaoHezao/poirot --skill data-analysis명령은 한 줄로 유지됩니다. 복사하기 전에 가로로 스크롤해 전체 내용을 확인하세요.
로컬 사본을 원하시나요? SkillsMP에서 현재 제공할 수 있는 파일을 다운로드하세요.
SOC 직업 분류 기준
SKILL.md 표시 중
| name | data-analysis |
| description | Analyze Excel/CSV files with DuckDB SQL via bash. |
| allowed-tools | ["bash","read_file","write_file"] |
| enabled | true |
| related-skills | ["consulting-analysis"] |
| license | MIT |
| author | Adapted from deer-flow (Bytedance, MIT) |
Analyzes user-provided Excel (.xlsx/.xls) or CSV files using DuckDB — an in-process analytical SQL engine. Supports schema inspection, SQL querying, statistical summaries, and result export.
Poirot note: The original deer-flow skill uses a bundled
scripts/analyze.pyhelper. Poirot doesn't bundle that script, so this version usesbashwithpython3+duckdbdirectly. Install duckdb first:pip install duckdb.
# Install duckdb if not present
pip install duckdb openpyxl
python3 -c "
import duckdb
con = duckdb.connect()
# For CSV
result = con.execute(\"DESCRIBE SELECT * FROM read_csv_auto('data.csv')\").fetchall()
for col in result:
print(f'{col[0]:30s} {col[1]}')
# For Excel (each sheet = a table)
result = con.execute(\"SELECT * FROM st_read('data.xlsx', layer='Sheet1') LIMIT 0\").fetchall()
# Row count
count = con.execute(\"SELECT COUNT(*) FROM read_csv_auto('data.csv')\").fetchone()[0]
print(f'Rows: {count}')
"
python3 -c "
import duckdb
con = duckdb.connect()
# Describe statistics
print(con.execute(\"SUMMARIZE SELECT * FROM read_csv_auto('data.csv')\").df().to_string())
"
python3 -c "
import duckdb
con = duckdb.connect()
# Aggregation
result = con.execute('''
SELECT category, COUNT(*) as count, AVG(price) as avg_price
FROM read_csv_auto('data.csv')
GROUP BY category
ORDER BY count DESC
''').fetchall()
for row in result:
print(row)
# Join two files
result = con.execute('''
SELECT a.id, a.name, b.amount
FROM read_csv_auto('orders.csv') a
JOIN read_csv_auto('payments.csv') b ON a.id = b.order_id
''').fetchall()
"
python3 -c "
import duckdb
con = duckdb.connect()
# Export to CSV
con.execute(\"COPY (SELECT * FROM read_csv_auto('data.csv') WHERE amount > 100) TO 'filtered.csv' (HEADER, DELIMITER ',')\")
# Export to JSON
con.execute(\"COPY (SELECT * FROM read_csv_auto('data.csv')) TO 'output.json' (FORMAT JSON)\")
"
SELECT
product,
SUM(CASE WHEN month = 'Jan' THEN amount ELSE 0 END) AS jan,
SUM(CASE WHEN month = 'Feb' THEN amount ELSE 0 END) AS feb,
SUM(CASE WHEN month = 'Mar' THEN amount ELSE 0 END) AS mar
FROM read_csv_auto('sales.csv')
GROUP BY product
SELECT
percentile_cont(0.5) WITHIN GROUP (ORDER BY price) AS median,
percentile_cont(0.95) WITHIN GROUP (ORDER BY price) AS p95
FROM read_csv_auto('data.csv')
python3 -c "
import duckdb
con = duckdb.connect()
# List sheets
sheets = con.execute(\"SELECT table_name FROM st_geometry_tables()\").fetchall()
# Query specific sheet
result = con.execute(\"SELECT * FROM st_read('data.xlsx', layer='Sheet2') LIMIT 10\").fetchall()
"
pip install duckdb openpyxl firstSUMMARIZE on very
large datasets may be slow. Sample first: SELECT * FROM ... TABLESAMPLE 10%read_csv_auto options.strptime parsing.st_read reads cell values, not formula results. Use
openpyxl directly if you need computed values.