Token导航 LogoToken导航

Agent Skill · 前端设计

stats-module-development(统计模块开发)

stats-module-development 用于处理 GitHub 仓库、Issue、Pull Request 和代码协作信息,适合在 Codex、Claude、Cursor、Gemini CLI 中需要围绕仓库状态、代码变更或协作事项进行整理时使用。可结合来源仓库、安装命令和原始 README 继续核验具体用法。安装前建议确认权限范围、维护状态,以及是否会触发联网、命令执行或文件读写。

stats-module-development 是前端设计类 Agent Skill,可用宿主为 Codex、Claude、Cursor、Gemini CLI,通过GitHub 仓库获取,权限为只读;许可证信息还不明确,第三方扫描已通过,按安装量在前端设计类的 10,216 个 Skill 里排第 9,124。

总安装 235周安装 10GitHub Stars 公开资料未说明下载 82核验 2026-05-01

安装说明

本站只整理中文说明,不托管安装包,也不代用户安装。
GitHub
许可证
unknown

安装方式

通过对话安装

复制提示词发给支持本地命令或 Skills 的 AI 助手,先确认命令和权限,再让它执行。

请帮我安装这个 Agent Skill:stats-module-development(统计模块开发)
来源仓库:https://github.com/qloapps/agent-skills
仓库路径:skills/stats-module-development
安装命令:
npx skills add https://github.com/qloapps/agent-skills --skill stats-module-development
安装前请先检查当前环境是否支持对应 CLI,并向我确认将要执行的命令、安装目录、联网范围和文件读写权限;确认后再执行。

命令行安装

复制命令到本机终端执行。该命令会通过 npx skills 从第三方来源获取 Skill;本站只展示命令,不托管安装包,也不自动执行。

skills.shnpx skills
npx skills add https://github.com/qloapps/agent-skills --skill stats-module-development

这个 Skill 是做什么的

前端设计类 Skill 关注页面结构、视觉规范和组件写法,输出通常是可运行的界面代码。

stats-module-development 用于处理 GitHub 仓库、Issue、Pull Request 和代码协作信息。适合在 Codex、Claude、Cursor、Gemini CLI 中需要围绕仓库状态或协作事项进行整理时使用。

可通过 npx skills add 命令从指定 GitHub 仓库安装。安装前建议确认权限范围、维护状态,以及是否会触发联网或文件读写。属于前端设计类技能,侧重模块开发与界面协作支持。

来源仓库内路径:skills/stats-module-development

上手步骤

4 步
  1. 1

    确认自己的宿主工具

    公开资料标注支持 Codex、Claude、Cursor、Gemini CLI;先确认自己用的是其中之一,再按对应工具的 Skills 目录放置。

  2. 2

    拿到安装命令

    可以直接复制的命令是 npx skills add https://github.com/qloapps/agent-skills --skill stats-module-deve…;命令里的占位符换成自己的路径或密钥再执行。

  3. 3

    安装后重启宿主

    命令执行完要完全退出宿主工具再打开,让新装的 Skill 被重新扫描到,否则列表里可能看不到。

  4. 4

    按最小权限试用

    它标注为只读,先用只读任务试一次,确认行为符合预期再扩大使用范围。

常见问题

6 条

stats-module-development 怎么安装?

在终端执行 npx skills add https://github.com/qloapps/agent-skills --skill stats-module-development。装完完全退出宿主工具再打开,让它重新扫描本地 Skill。

stats-module-development 支持哪些 AI 工具?

公开资料标注支持 Codex、Claude、Cursor、Gemini CLI。其他工具只要能读取本地 Skill 目录,一般也能手动放进去,但要自己确认触发方式是否一致。

stats-module-development 需要什么权限?

权限级别是只读。该 Skill 主要提供规则、说明或参考内容,本身偏只读;真正读写文件、联网或执行命令仍取决于宿主 Agent 的任务。

stats-module-development 是免费的吗?

公开资料没有标注明确许可证,收费和商用限制都无法确认。正式使用前请到来源仓库核对授权说明。

stats-module-development 用的人多吗?

公开数据是累计安装 235 次,近一周安装 10 次,下载 82 次。这些数字来自第三方目录统计,只能当作热度参考,不代表质量或安全性。

stats-module-development 安全吗?

第三方扫描结果为通过,但这只覆盖已知的静态检查项,不能替代自己读一遍源码和安装命令。

值得选的地方和要先想清楚的地方

值得选的地方

  • 同时适配 4 种工具,换客户端不用重新找替代品。
  • 第三方扫描已通过,常见的高风险行为没有命中。
  • 标注为只读权限,试用阶段不容易误改本地文件。

先想清楚的地方

  • 许可证没有明确标注,能不能商用、能不能再分发都不确定。
  • 第三方目录整理,版本更新和行为细节以来源仓库为准。

适不适合你

更适合

  • 已经在用 Codex,想直接扩展它能力的人。
  • 需要处理前端设计类任务、又不想每次都手写提示词的人。
  • 只想先试试效果、不希望它改动本地文件的人。

不太适合

  • 需要明确授权才能用到公司项目里的场景。
  • 需要厂商级技术支持和 SLA 的生产系统。

前端设计类 Skill 对比

6 个同类
Skill总安装GitHub 星权限许可证扫描
frontend-design

前端设计 · Codex、Claude

8,823,360126,072只读MIT通过
vercel-composition-patterns

Vercel 组合模式 · Codex、Claude

3,858,81625,893需要联网MIT通过
vercel-react-native-skills

Vercel React native skills 前端 · Codex、Claude

2,468,66425,878只读MIT通过
adapt

adapt 搜索 · Codex、Claude

2,027,04023,125操作浏览器未明确通过
bolder

bolder 分析 · Codex、Claude

2,004,28823,130只读未明确通过
stats-module-development

统计模块开发 · 本页

235—只读未明确通过

按安装量取同分类前几名;数字来自第三方目录统计,只作热度参考,不代表质量结论。

SKILL.md 原文

QloApps Stats Module Development

Create statistics modules that appear under Stats > Stats in the QloApps back office.

Quick Commands

# Stats module structure (single-file module)
modules/stats{modulename}/
├── stats{modulename}.php      # Main module class
├── config.xml                  # Module metadata
├── index.php                   # Security file (every folder)
└── logo.png                    # Module icon (optional)

Common operations:


When to Use This Skill

Applies to:

  • Creating statistics/analytics modules for the Stats dashboard
  • Building reports (occupancy, revenue, bookings, customers)
  • Creating charts and trend visualizations
  • Building complex dashboard widgets under AdminStats

When NOT to Use

  • Feature modules → module-development skill
  • Payment modules → payment-module-development skill

Critical Rules

1. Data Consistency (Non-Negotiable)

When a stats module calculates a metric that already exists in QloApps (in a KPI, dashboard widget, or another stats module), the calculation logic MUST be consistent.

Canonical source: controllers/admin/AdminStatsController.php contains 80+ static methods that serve KPIs and dashboard modules. Before writing any calculation, check if AdminStatsController already computes it.

Consistency means:

  • Same tables used
  • Same columns used
  • Same JOIN conditions
  • Same WHERE filters (e.g., is_refunded = 0, o.valid = 1)
  • Same arithmetic operations

Ideal: Reuse the exact AdminStatsController method. Acceptable: When a report needs multiple columns from a single query for performance, replicate the same logic inline. Not acceptable: Different calculation logic that produces different numbers for the same metric.

Key canonical calculations in AdminStatsController:

  • getOccupancyData() -- total rooms, booked rooms, unavailable rooms, available rooms
  • getAverageDailyRate() -- total room revenue / total booked rooms
  • getAverageOccupancyRate() -- (totalBooked / totalRooms) * 100
  • getRevenuePerAvailableRoom() -- RevPAR
  • getRoomsRevenueForDiscreteDates() -- per-night normalization: SUM(total_price_tax_excl / conversion_rate) / DATEDIFF(date_to, date_from)
  • getCancellationRate() -- cancelled bookings / total bookings
  • getAverageLengthOfStay() -- ALOS

2. No Queries Inside Loops (Non-Negotiable)

Never execute database queries inside foreach, for, or while loops. Use JOINs, subqueries, or batch queries instead.

3. Do Not Recreate Built-in Features

The stats dashboard already provides:

FeatureHow to Access
Date range picker$this->getDate() or ModuleGraph::getDateBetween()
Pagination$this->_start, $this->_limit (ModuleGrid)
Sorting$this->_sort, $this->_direction (ModuleGrid)
CSV export$this->csvExport($engine_params)
Hotel filterHotelBranchInformation::addHotelRestriction()

Never create custom date pickers, pagination controls, sorting logic, or CSV generation code.

4. hookAdminStatsModules() Must Return a String

Never echo. The controller expects a return value.

5. SQL Security

  • Strings: pSQL()
  • Integers: (int) cast
  • Column/table names in ORDER BY: bqSQL() with Validate::IsName() check
  • Never use $_GET/$_POST directly

Module Types

TypeBase ClassUse WhenRenderingReference
ModuleGridModuleGridTabular data (lists, rankings, reports)Automatic via grid enginemodule-grid-pattern.md
ModuleGraphModuleGraphCharts (line, column, pie)Automatic via graph enginemodule-graph-pattern.md
ModuleModuleComplex dashboards, multiple views, custom formsManual HTMLmodules/statsforecast/statsforecast.php

Decision: If the output is rows and columns, use ModuleGrid. If it is a chart, use ModuleGraph. Use plain Module only when neither fits.


Skill Components

Reference guides for each area:

  • module-grid-pattern.md -- ModuleGrid class, columns, getData(), hookAdminStatsModules(), CSV export, rendering pipeline
  • module-graph-pattern.md -- ModuleGraph class, graph types, setDateGraph() callback pattern, setOption(), multi-graph modules
  • query-patterns.md -- Hotel restriction, revenue normalization, occupancy calculation, date filtering, SQL security, data consistency examples
  • ui-performance.md -- UI layout order, hotel selector pattern, terminology, performance optimization, no-queries-in-loops patterns

Rendering Pipeline

ModuleGrid

hookAdminStatsModules() --> engine() --> iframe HTML
--> grider.php (AJAX) --> create() --> getData() --> render() --> JSON
--> JavaScript populates table

ModuleGraph

hookAdminStatsModules() --> engine() --> AJAX HTML
--> drawer.php --> create() --> getData() --> draw() --> JSON
--> NVD3 renders chart

Plain Module

hookAdminStatsModules() --> return custom HTML string directly

The grid/graph engines handle all rendering. Your module only implements getData() and hookAdminStatsModules().


Quick Reference

Module Creation Checklist

  • Determine module type (ModuleGrid / ModuleGraph / Module)
  • Check AdminStatsController for existing calculation logic
  • Create module file extending correct base class
  • Set $this->tab = 'analytics_stats' and $this->need_instance = 0
  • Register hook: $this->registerHook('AdminStatsModules')
  • Implement getData() with date filtering and hotel restriction
  • Set $this->_values and $this->_totalCount (ModuleGrid)
  • Return HTML string from hookAdminStatsModules()
  • Create config.xml
  • Add index.php security file
  • Verify no queries inside loops
  • Verify data consistency with AdminStatsController

Constructor Pattern (All Types)

$this->name = 'stats{modulename}';       // lowercase, alphanumeric
$this->tab = 'analytics_stats';           // always this value
$this->version = '1.0.0';
$this->author = '{author}';
$this->need_instance = 0;

parent::__construct();

$this->displayName = $this->l('Module Name');
$this->description = $this->l('Description.');

config.xml Template

<?xml version="1.0" encoding="UTF-8" ?>
<module>
    <name>stats{modulename}</name>
    <displayName><![CDATA[Module Name]]></displayName>
    <version><![CDATA[1.0.0]]></version>
    <description><![CDATA[Description.]]></description>
    <author><![CDATA[{author}]]></author>
    <tab><![CDATA[analytics_stats]]></tab>
    <is_configurable>0</is_configurable>
    <need_instance>0</need_instance>
</module>

Required Include for Hotel Data

// At top of module file (NOT inside getData)
require_once _PS_MODULE_DIR_.'hotelreservationsystem/define.php';

Common Pitfalls

  1. Creating custom date pickers -- Use $this->getDate(). The system already provides a global date range picker.
  2. Queries inside loops -- Use JOINs and subqueries. See ui-performance.md.
  3. Inconsistent calculations -- Check AdminStatsController before writing metric logic. See query-patterns.md.
  4. Echo instead of return -- hookAdminStatsModules() must return a string.
  5. Missing hotel restriction -- Hotel-specific data must use HotelBranchInformation::addHotelRestriction().
  6. Missing _DB_PREFIX_ -- All table names must use _DB_PREFIX_ constant.
  7. Forgetting $this->_values / $this->_totalCount -- ModuleGrid requires both in getData().
  8. Wrong hook name -- Must be AdminStatsModules (or alias displayAdminStatsModules).

Reference Modules

ModuleTypeKey Concepts
modules/statsbestproducts/ModuleGridComplex subqueries, revenue normalization, available rooms
modules/statsbestcustomers/ModuleGridCustomer rankings, hotel restriction EXISTS pattern
modules/statssales/ModuleGraphsetOption(), multi-graph, setDateGraph() callbacks
modules/statsvisits/ModuleGraphSimple line chart, layers
modules/statsforecast/ModuleComplex dashboard, time granularity, conversion funnel
modules/statscheckup/ModuleConfiguration thresholds, color scoring, multiple tabs

Core files:

  • classes/module/ModuleGrid.php -- Base grid class with getData(), engine(), create()
  • classes/module/ModuleGraph.php -- Base graph class with setDateGraph(), setOption()
  • controllers/admin/AdminStatsController.php -- Canonical calculation engine (80+ methods)
  • controllers/admin/AdminStatsTabController.php -- Stats page controller, date picker, module loading
  • adminhtl/grider.php -- AJAX entry point for grid rendering
  • adminhtl/drawer.php -- AJAX entry point for graph rendering

Development Workflow

  1. Plan -- Determine module type, identify data sources, check AdminStatsController for existing calculations
  2. Setup -- Create module directory, main file, config.xml, index.php
  3. Implement -- Write getData() with proper date filtering, hotel restriction, and SQL security
  4. Validate -- Verify data matches AdminStatsController calculations, no queries in loops, proper escaping
  5. Test -- Install module, verify in Stats dashboard, test date range changes, CSV export, sorting/pagination

Troubleshooting

  1. Module not showing in sidebar -- Verify registerHook('AdminStatsModules') in install(), reinstall module, clear cache/class_index.php.
  2. Grid shows empty -- Check $this->_values is set in getData(), verify SQL returns data, check browser console for AJAX errors.
  3. Graph not rendering -- Verify graphnvd3 module is installed and active, check $this->_values array structure.
  4. CSV export broken -- Ensure $engine_params in csvExport() matches the ones passed to engine().

Additional Resources

平台分布

Codex

35.66%
按下载量换算29

Claude

28.91%
按下载量换算24

Cursor

18.81%
按下载量换算15

Gemini CLI

9.59%
按下载量换算8

安全审计

Gen Agent Trust Hub

通过

Socket

通过

Snyk

通过

权限和风险

只读

该 Skill 主要提供规则、说明或参考内容,本身偏只读;真正读写文件、联网或执行命令仍取决于宿主 Agent 的任务。

安装前确认

本站仅展示第三方公开信息,不托管安装包,不提供自动安装或运行环境。安装前应自行审查源码、依赖和命令行为。目前只有一个公开来源,建议同时核对源仓库。

继续浏览同类 Skills