视觉画布设计
canvas-design
基于设计原则创作静态视觉作品,用于海报与品牌图形。
report-builder将对定期报告的普通英文描述转变为真实、可重复的报告——定义指标、从连接的任何数据源中提取这些指标、提供聊天摘要加上 XLSX 工作簿,并保存定义以便随需或按计划重新运行相同报告。处理从“按地点与去年相比的销售”到 AR aging…
AI 翻译
独立 GitHub 快照 · 自动分类 · 以原作者文档为准
The owner describes a report once. You build it, run it, and save the definition so it never has to be described again.
Owners are pulling numbers out of three dashboards by hand and trying to find the story themselves. The job is to end that.
Before anything else, read reference/saved_reports.md and check whether this report already exists. Also check for a report-definitions.md in the working directory — that's where definitions land when the skill folder isn't writable (see Step 7).
If the owner says "same report as last time," "run the weekly one," or names a report you have a definition for, skip straight to Step 4 and run it. Re-interviewing someone about a report they already defined is the fastest way to make this skill feel broken.
If nothing matches, continue.
Owners describe reports loosely: "every Monday, sales by location versus last year, AR aging, and labor percent." That sentence contains four separate decisions. Resolve them into a spec using the format in reference/report_spec.md:
Infer what you reasonably can. "Sales by location vs last year" gives you the metric, the grouping, and the comparison — don't ask about those. Ask only about what's genuinely ambiguous, and ask it in one batch rather than one question at a time.
The two questions worth asking almost every time:
Getting these wrong produces a report that looks right and is quietly wrong, which is worse than asking.
Show the resolved spec back in a compact block. Ask for one confirmation, then build. Do not walk the owner through the spec field by field — they described this in one sentence and expect one answer.
If they correct something, apply it and go. Do not re-confirm a second time.
Dispatch every source call in a single parallel batch. See reference/data_sources.md for the metric-to-tool mapping.
Sources, tried simultaneously:
../../shared/connector-neutrality.md. P&L lines, revenue, expenses, AR aging, AP, class and location splits. MYOB is P&L, AR, and payables only, three financial years back. If two ledgers are connected, ask which is the source of record and take totals from that oneIf a source errors or returns nothing, record it and move on. Never block the whole report on one bad connector.
No connectors at all is a supported path, not a failure. Ask for a CSV or XLSX export, read it, and build the identical report from the file. Say so plainly: "I don't see a connected data source. Export the sales report from your system and drop it here — I'll build the same report from that." Owners with tool sprawl live in this mode, and the report is just as good.
Compute every metric named in the spec. Then check the results before showing them. Read reference/gotchas.md for the failure modes that actually happen.
The checks that catch real errors:
Two artifacts, always, in this order.
The chat summary comes first. Follow reference/output_template.md. Lead with what changed and what it means, not with a table dump. The owner asked for a report because they want a decision, not a spreadsheet.
Writing rules, same as every reporting skill in this plugin:
Then the XLSX. One tab per metric group, a summary tab first, raw pulled data on a final tab so the owner can check your math. Build it with a script rather than by hand.
Then the report page, per the owner's stored output preference — never default to a markdown file. Check the ## Business context block's Output preference (shared style guide rule, ../../shared/artifact-style.md):
Append the spec to reference/saved_reports.md with the date it was created and the cadence. This is what makes the report recurring instead of one-off.
If that file can't be written — the skill folder is read-only in most installed runtimes — write the definition to report-definitions.md in the owner's working directory instead and say where it went. A definition that silently failed to save is the same bug as never saving it.
If the owner asked for a cadence, confirm it in one line: "Saved. I'll run this the first Monday of each month." Scheduling is a property of this skill — no separate command needed.
One line: the report ran and the definition is saved. Then the single most relevant next step, with at most two others nearby:
/report-pack to wrap this in context on a cadence.business-pulse for the picture around these numbers.cash-flow-snapshot when the report raised a cash question.Max three offers. Never repeat an offer the owner declined this session.
saved_reports.md first, every time.reference/report_spec.md — the spec format, with worked examplesreference/data_sources.md — metric to connector mapping, with fallbacksreference/output_template.md — exact structure for the chat summary and the workbookreference/saved_reports.md — stored report definitions, appended to over timereference/gotchas.md — the failure modes that produce confidently wrong reportsThe connectors named in this skill are the tested paths, not a wall. If the owner wants this flow to use a tool that isn't connected or listed, offer build-connector — it checks the connector directory first and connects through Zapier otherwise, never hand-building against a raw API. Once the connection exists, the tool joins this skill like any other optional connector, under the same approval gates.