首页/AI 系统可观测与 SRE/extension-data-viewer
E

extension-data-viewer

by @caffeinelabsv
4.5(120)

此技能为AI应用提供管理员专用的分页数据查看器,自动为后端稳定状态变量生成查询接口。它能帮助开发者快速浏览、调试用户、订单、日志等数据,极大提升问题诊断和管理效率,无需手动编写复杂的查询代码。

data-viewerdebuggingobservabilitybackend-dataadmin-toolGitHub
安装方式
npx skills add https://github.com/caffeinelabs/skills --skill extension-data-viewer
compare_arrows

Before / After 效果对比

1 组
使用前

在没有这个技能之前,开发者需要手动为每个需要查看的后端数据结构编写定制化的查询接口,或者依赖复杂的数据库工具进行数据检查,这耗时且容易出错,严重拖慢了开发和问题诊断的进度。

使用后

此技能自动为后端稳定变量生成安全的、分页的查询接口,开发者可以立即通过管理员界面查看和调试数据,极大地简化了数据管理流程,显著提升了问题排查效率。

SKILL.md

Data Viewer

Admin-only data inspection extension for Caffeine AI.

Overview

Every Caffeine app ships with the caffeineai-data-viewer mops package and the moc --generate-view-queries flag enabled. Together with include MixinViews() in the actor, the compiler auto-exposes a controller-only __<var> query for every stable variable of a supported type:

  • Map.Map<K, V> — (?K, ?Nat) -> [(K, V)]
  • Set.Set<K> — (?K, ?Nat) -> [K]
  • [V], [var V], List.List<V>, Stack.Stack<V>, Queue.Queue<V> — (?Nat, ?Nat) -> [V]

A null cursor starts at the beginning; a null count returns everything from the cursor. Each generated query traps on any non-controller caller — they exist for admin dashboards and debug viewers, not user-facing endpoints.

Backend

The package and include are already wired into the template. You don't need to add or edit anything for the viewer to work — declare a stable variable of a supported type and the __<var> query appears automatically.

import Map "mo:core/Map";
import Principal "mo:core/Principal";
import MixinViews "mo:caffeineai-data-viewer/MixinViews";

actor {
  include MixinViews();

  let users = Map.empty<Principal, Text>();

  // Generated automatically: __users : (ko : ?Principal, count : ?Nat) -> [(Principal, Text)] query
};

Lintoko rule include-mixin-views (shipped with the package) errors if the actor body is missing include MixinViews();. Keep the include — removing it disables every auto-generated viewer.

Rules

  • NEVER use the generated __<var> queries as a substitute for user-facing endpoints — they trap for any non-controller caller. Public list/feed/search methods still need to be written normally with public query func listX(...).
  • NEVER declare an actor member whose name starts with __ — it either collides with an auto-generated query or hits a reserved prefix.
  • Pure (immutable) collections (pure/Map, pure/Set, pure/List, pure/Queue) are not supported. The viewer is mutable-only by design; pure collection field access is a deprecated pattern in Caffeine projects anyway.

用户评价 (0)

发表评价

效果
易用性
文档
兼容性

暂无评价

统计数据

安装量9.9K
评分4.5 / 5.0
版本
更新日期2026年8月5日
对比案例1 组

用户评分

4.5(120)
5
37%
4
43%
3
13%
2
5%
1
2%

为此 Skill 评分

0.0

兼容平台

🤖claude-code

时间线

创建2026年6月25日
最后更新2026年8月5日
🎁 Agent 知识卡片
调研问卷