Getting it into your agent
One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.
npx agentmods add skills/guiziweb/guiziweb-plugins/add-grid-exportnpx skills add Guiziweb/guiziweb-plugins --skill add-grid-exportgit clone --depth 1 https://github.com/Guiziweb/guiziweb-pluginsWrote this? Show the measurements
A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.
[](https://agentmods.dev/skills/guiziweb/guiziweb-plugins/add-grid-export)<a href="https://agentmods.dev/skills/guiziweb/guiziweb-plugins/add-grid-export"><img src="https://agentmods.dev/badge/skills/guiziweb/guiziweb-plugins/add-grid-export.svg" alt="Measured on agentmods" height="20"></a>What it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5 | $0.00015 | $0.01660 |
| Opus 5 | $0.00008 | $0.00830 |
| Sonnet 5 | $0.00003 | $0.00332 |
| Haiku 4.5 | $0.00002 | $0.00166 |
Grade A, and why
add-grid-export scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 5d ago.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Nothing flagged
None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.
How it starts
The opening of the file, as written. The whole thing — 246 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Add a Grid Export — Sylius Stack
Ask the user for the ModelName if not provided.
Prerequisite: The resource, its grid and an
Indexoperation must already exist. Run/sylius-stack:add-resource,/sylius-stack:add-gridthen/sylius-stack:add-operation Indexfirst if needed.
1. Install league/csv
composer require league/csv
2. Create the Responder
Create src/Responder/ExportGridToCsvResponder.php:
<?php
declare(strict_types=1);
namespace App\Responder;
use League\Csv\Writer;
use Pagerfanta\PagerfantaInterface;
use Sylius\Component\Grid\Definition\Field;
use Sylius\Component\Grid\Renderer\GridRendererInterface;
use Sylius\Component\Grid\View\GridViewInterface;
use Sylius\Resource\Context\Context;
use Sylius\Resource\Metadata\Operation;
use Sylius\Resource\State\ResponderInterface;
use Symfony\Component\DependencyInjection\Attribute\Autowire;
use Symfony\Component\HttpFoundation\StreamedResponse;
use Symfony\Contracts\Translation\TranslatorInterface;
use Webmozart\Assert\Assert;
final readonly class ExportGridToCsvResponder implements ResponderInterface
{
public function __construct(
#[Autowire(service: 'sylius.grid.renderer')]
private GridRendererInterface $gridRenderer,
private TranslatorInterface $translator,
) {
}
/**
* @param GridViewInterface $data
*/
public function respond(mixed $data, Operation $operation, Context $context): mixed
{
Assert::isInstanceOf($data, GridViewInterface::class);
$response = new StreamedResponse(function () use ($data) {
$output = fopen('php://output', 'w');
if (false === $output) {
throw new \RuntimeException('Unable to open output stream.');
}
$writer = Writer::from($output);
$fields = $this->sortFields($data->getDefinition()->getFields());
$this->writeHeaders($writer, $fields);
$this->writeRows($writer, $fields, $data);
});
$response->headers->set('Content-Type', 'text/csv; charset=UTF-8');
$response->headers->set('Content-Disposition', 'attachment; filename="export.csv"');
return $response;
}
/**
* @param Field[] $fields
*/
private function writeHeaders(Writer $writer, array $fields): void
{
$labels = array_map(fn (Field $field) => $this->translator->trans($field->getLabel()), $fields);
$writer->insertOne($labels);
}
/**
* @param Field[] $fields
*/
private function writeRows(Writer $writer, array $fields, GridViewInterface $gridView): void
{
/** @var PagerfantaInterface $paginator */
$paginator = $gridView->getData();
Assert::isInstanceOf($paginator, PagerfantaInterface::class);
for ($currentPage = 1; $currentPage <= $paginator->getNbPages(); ++$currentPage) {
$paginator->setCurrentPage($currentPage);
$this->writePageResults($writer, $fields, $gridView, $paginator->getCurrentPageResults());
}
}
/**
* @param Field[] $fields
* @param iterable<object> $pageResults
*/
private function writePageResults(Writer $writer, array $fields, GridViewInterface $gridView, iterable $pageResults): void
{
foreach ($pageResults as $resource) {
$rows = [];
foreach ($fields as $field) {
$rows[] = $this->getFieldValue($gridView, $field, $resource);
}
$writer->insertOne($rows);
}
}
private function getFieldValue(GridViewInterface $gridView, Field $field, object $data): string
{
$renderedData = $this->gridRenderer->renderField($gridView, $field, $data);
$renderedData = str_replace(\PHP_EOL, '', $renderedData);
return trim(strip_tags($renderedData));
}
/**
* @param Field[] $fields
*
* @return Field[]
*/
private function sortFields(array $fields): array
{
$sortedFields = $fields;
uasort($sortedFields, fn (Field $fieldA, Field $fieldB) => $fieldA->getPosition() <=> $fieldB->getPosition());
return $sortedFields;
}
}
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- 5d ago First seen · 246 lines · 15 tokens per session scan A c53597df9519
add-grid-export is a skill published in the GitHub repository Guiziweb/guiziweb-plugins (4 stars, last pushed 1mo ago), licensed MIT. It adds 15 tokens to every session and 1,660 once invoked, about $0.0001 per session on Opus 5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-31.
Other skills, from other repositories
dcf-model
Build discounted cash flow valuation workbooks in Excel.
audit-xls
Audit a spreadsheet for formula accuracy, errors, and common mistakes. Scopes to a selected range, a single sheet, or the entire model (including financial-model integrity checks like BS balance, cash tie-out, and logic sanity). Triggers on "audit this sheet", "check my formulas", "find formula errors", "QA this…
google-drive-sheets
Find, read, export, edit, and manage the user's Google Drive, Docs, Sheets, and Slides through per-user OAuth.
feishu
Work with Feishu or Lark bots, docs, sheets, bitables, approval flows, and OpenAPI/MCP setup without hardcoding credentials.
excel-basic-statistics-and-routing
Skill "excel-basic-statistics-and-routing" from OpenSenseNova/SenseNova-Skills, covering skill steps, 保存区间提取与汇总结果 and 保存筛选与统计结果.
dynamic-percentage-and-large-file-analysis
根据文件行数动态切换大文件处理策略(Parquet转换),通过逐行扫描或列匹配提取关键指标并计算占比、均值等统计量,最终输出结构化Excel报告及可视化图表。.