Home/AI System Observability & SRE/extension-data-viewer
E

extension-data-viewer

by @caffeinelabsv
4.5(120)

This skill provides an admin-only paginated data viewer for AI applications, automatically generating query interfaces for stable backend state variables. It enables developers to quickly browse and debug data such as users, orders, or logs, significantly improving problem diagnosis and management efficiency without manually writing complex query code.

data-viewerdebuggingobservabilitybackend-dataadmin-toolGitHub
Installation
npx skills add https://github.com/caffeinelabs/skills --skill extension-data-viewer
compare_arrows

Before / After Comparison

1 组
Before

Before this skill, developers had to manually write custom query endpoints for each backend data structure they needed to inspect, or rely on complex database tools. This was time-consuming, error-prone, and significantly slowed down development and issue diagnosis.

After

This skill automatically generates secure, paginated query interfaces for stable backend variables. Developers can instantly view and debug data via the admin interface, greatly simplifying data management and significantly accelerating troubleshooting.

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.

User Reviews (0)

Write a Review

Effect
Usability
Docs
Compatibility

No reviews yet

Statistics

Installs9.9K
Rating4.5 / 5.0
Version
Updated2026年8月5日
Comparisons1

User Rating

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

Rate this Skill

0.0

Compatible Platforms

🤖claude-code

Timeline

Created2026年6月25日
Last Updated2026年8月5日
🎁 Agent Knowledge Cards
Survey