Audit websites for accessibility issues and WCAG compliance. Use when checking accessibility, fixing a11y issues, or ensuring WCAG compliance.
日本語の概要は準備中です。原文の説明を表示しています。
Answers business questions about the user's own spreadsheet or data export (CSV, TSV, XLSX from a CRM, Shopify, Stripe, QuickBooks, ad platforms, HR or payroll systems) correctly and auditably. Profiles every file first (grain, duplicate keys, embedded Grand Total rows, text-stored numbers, mixed currencies, UTC timestamps, Excel serial dates, hidden rows), states the metric definition used, computes every number in SQL or pandas instead of mental math, checks joins for fan-out, reconciles to a known total, and returns the query, filters, row counts, and rows behind the answer. Use this whenever the user says "analyze this spreadsheet", "how many...", "what's the total in this export", "which customers...", "pivot this", "revenue by month", "top 10", "what's our churn/MRR/AOV", or asks any question about their data, CSV, or Excel file, even a quick one. Also use when they ask to change values in a data file.
インストールする前に、エージェントに与えられる指示の中身を確認できます。
Business exports lie quietly. A "Grand Total" row doubles every SUM. A customer listed twice multiplies their orders through a join. EUR and USD sit in one amount column. A UTC timestamp at 02:30 on Aug 1 is a July order in New York. None of these raise an error, so an answer computed by eye or by one quick query looks right and is wrong. This skill makes every number reproducible: profile, define, compute in code, reconcile, show the evidence.
Scope: questions about the data in the file. To combine or dedupe several files into one first, use csv-excel-merger. To check whether a financial model's formulas are sound, use spreadsheet-model-auditor.
python3 scripts/profile.py path/to/*.csv path/to/book.xlsx --out sqa_out
Read sqa_out/profile.md. It reports, per file and sheet: header row, row count, candidate keys, duplicate keys, each column's type and parse rate, null %, distinct count, min/max, top values, currency and timezone hints, date ranges, embedded total/footer rows, hidden rows/columns, autofilters, merged cells, and a join-risk section predicting fan-out between files. It also drafts data_dictionary.md with open questions.
Why first: the traps above are visible only in the profile. Once a query has run, nobody rereads the raw rows. Do this even for "just give me the total": the total is the question most exposed to embedded total rows.
State the grain in one line per table ("one row = one order; key order_id") before writing a query. If no key is unique, say what one row is before counting anything.
Look up the metric in references/metric-definitions.md. If different definitions give materially different answers, list the one to three that matter, pick a stated default, and continue. Do not stall waiting for an answer. Example:
Using net revenue = paid orders minus refunds against them, in USD at the rates in fx_rates.csv, by UTC date. By refund date instead: 8,710. Gross: 9,020. Say if you want one of those.
Ask before computing only when the choice is unknowable and decisive: which of two amount columns is the real one, which currency to report in when no rates exist, or what "active" means when the file has no activity dates.
Never invent a definition silently. "Active customer", "revenue", "churn", and "conversion" each have several; the answer must name the one used.
Write a question spec (JSON steps) and run it:
python3 scripts/ask.py spec.json --out sqa_out/q1
Each step is one SQL view built on the previous ones, with a kind: clean (cast text, drop total rows), filter, join, dedupe, derive, aggregate (last step is the answer). ask.py counts rows before and after every step, fails the run when a join grows rows (fan-out) and warns when one drops rows, runs assert_zero checks (e.g. "amounts that failed to parse"), and writes answer.md, query.sql, steps.json, and rows_used.csv. Worked specs covering all of this: tests/questions/*.json. Copy the closest one.
Rules:
to_num() (handles "$1,200.00", "(35.00)", "12%") and excel_date(), and assert that nothing failed to parse. Auto-typing is how "$1,200" becomes NULL without anyone noticing.CAST(ts AS TIMESTAMPTZ) AT TIME ZONE 'America/New_York'.pip install duckdb). Without it, ask.py falls back to SQLite, which lacks timezone functions; or use pandas and print the same row counts yourself.For a one-off exploratory look, ask.py --table orders=orders.csv --sql "SELECT ..." works, but the final answer comes from a spec with the full step accounting.
Before reporting, tie the number to something independent. Add a reconcile entry to the spec:
If it does not reconcile, the answer is not ready. Find the gap (usually filters, a hidden row, a timezone edge, or a status value) and say what explains it. Filtered views are a common cause: ask which filters the user's reference number used. references/traps.md lists the usual culprits.
Lead with the number and the definition in one or two sentences, then the evidence:
Net revenue, Q3 2026: $8,260.00 (USD, paid orders minus refunds against them, UTC dates)
Evidence
- Source: orders.csv (17 rows), refunds.csv (3), fx_rates.csv (3)
- Filters: dropped 1 Grand Total row (17 -> 16); status = paid, created Jul 1-Sep 30 UTC (16 -> 13)
- Joins: FX rates (13 -> 13, all matched); refunds pre-summed per order (13 -> 13)
- Reconciled: parsed amounts = the export's own Grand Total (9,700); net = gross 9,020 - refunds 760
- Other definitions: by refund date 8,710; gross 9,020
- Caveats: one fixed FX rate per currency, not transaction-date rates
- Query and rows: sqa_out/q1/query.sql, sqa_out/q1/rows_used.csv
Show sample rows when the user asks "which" (which customers, which orders): list the rows themselves, not only a count. Keep the evidence block even when the user wants a quick answer. It is five lines and it is what lets them trust or challenge the number.
When asked to change values in a file (fix a price, update a status, correct an invoice line):
python3 scripts/diff_edit.py original.csv edited.csv --key invoice_id --allow amount --rows INV-7
It lists every changed cell and exits 1 if anything outside the allowed columns and rows changed, or if rows or columns appeared or disappeared. Show the user the diff. For .xlsx, edit with openpyxl on the specific cells so formulas and formatting survive, then run the same diff on the sheet.
python3 tests/run_tests.py rebuilds the fixtures (orders with a Grand Total row, text amounts, three currencies and UTC timestamps; customers with a duplicated key; refunds; an xlsx with a title row, serial dates, a hidden row, and a Total row), checks that the profile catches every trap, answers four questions against hand-computed values, confirms the naive join is caught, and checks the edit diff.
まだレビューはありません。使ってみた感想をお寄せください。
概要と使いどころ
Audit websites for accessibility issues and WCAG compliance. Use when checking accessibility, fixing a11y issues, or ensuring WCAG compliance.
日本語の概要は準備中です。原文の説明を表示しています。
Deploy a 2-layer parallel agent hierarchy for large, parallelizable work — big refactors, multi-file migrations, codebase-wide audits, bulk generation. A top-tier commander (Fable or Opus) orchestrates the swarms; the user picks a power level (Max Power / Heavy / Balanced / Economy) that sets the Opus/Sonnet/Haiku model mix per layer. Layer 1 is 3-50+ specialist agents, each with its own full context window; Layer 2 is 2+ sub-agents per member. Includes git safety, tiered sizing, a pre-deploy gate, phantom-completion checks, and multi-wave follow-up.
日本語の概要は準備中です。原文の説明を表示しています。
Use to test whether an AI agent, prompt, or skill actually works before or after it ships — build a small eval set, score runs, and catch regressions when the prompt or model changes. Trigger when the user asks whether a prompt is good, wants to compare models or versions, sees inconsistent agent output, or is about to put an agent in front of customers.
日本語の概要は準備中です。原文の説明を表示しています。
Deploys swarms of sub-agents for massive parallel data processing tasks. Unlike agent-army (which is for code changes), this is for DATA tasks -- processing 1000 documents, analyzing datasets, bulk content generation. Configurable swarm size, task distribution, result aggregation, progress tracking, and error recovery.
日本語の概要は準備中です。原文の説明を表示しています。
Designs and deploys custom agent teams for specific business workflows. Interactive discovery of business processes, then generates complete team configurations with specialized agent roles, tool access, communication protocols, and handoff rules.
日本語の概要は準備中です。原文の説明を表示しています。
Agent-to-Agent (A2A) communication protocol. Connect two or more Claude agents that pass messages, share context, delegate tasks, and collaborate. Implements structured handoffs, shared memory, and multi-agent conversations.
日本語の概要は準備中です。原文の説明を表示しています。