extension-data-viewer
この Skill は、AI アプリケーション向けに管理者専用のページネーション付きデータビューアを提供し、バックエンドの安定した状態変数に対してクエリインターフェースを自動生成します。これにより、開発者はユーザー、注文、ログなどのデータを迅速に閲覧・デバッグでき、複雑なクエリコードを手動で記述することなく、問題診断と管理の効率を大幅に向上させます。
npx skills add https://github.com/caffeinelabs/skills --skill extension-data-viewerBefore / After 効果比較
1 组この Skill がない場合、開発者はバックエンドの各データ構造を検査するために、カスタムのクエリエンドポイントを手動で記述するか、複雑なデータベースツールに頼る必要がありました。これは時間がかかり、エラーが発生しやすく、開発と問題診断の進行を著しく遅らせていました。
この Skill は、バックエンドの安定した変数に対して安全でページネーションされたクエリインターフェースを自動生成します。開発者は管理者インターフェースを通じてデータを即座に閲覧・デバッグでき、データ管理プロセスを大幅に簡素化し、問題解決の効率を著しく向上させます。
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 withpublic 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)
レビューを書く
レビューなし
統計データ
ユーザー評価
この Skill を評価