extension-data-viewer
Admin-only paginated viewer for stable canister state. Use whenever the user asks for a viewer, dashboard, debug panel, or admin browse over backend data — users, items, orders, logs, or any stable Map/Set/Array/VarArray/List/Stack/Queue. Pre-installed in every Caffeine app via the `caffeineai-data-viewer` mops package; this skill explains what it does and how to keep using it correctly.
Works with
---
name: extension-data-viewer
description: Admin-only paginated viewer for stable canister state. Use whenever the user asks for a viewer, dashboard, debug panel, or admin browse over backend data — users, items, orders, logs, or any stable Map/Set/Array/VarArray/List/Stack/Queue. Pre-installed in every Caffeine app via the `caffeineai-data-viewer` mops package; this skill explains what it does and how to keep using it correctly.
license: Apache-2.0
---
# Data Viewer
Admin-only data inspection extension for [Caffeine AI](https://caffeine.ai?utm_source=caffeine-skill&utm_medium=referral).
## 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.
```motoko filepath=src/backend/main.mo
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.More Debugging skills
diagnosing-bugs
mattpocock/skills
Diagnosis loop for hard bugs and performance regressions. Use when the user says "diagnose"/"debug this", or reports something broken/throwing/failing/slow.
explore-code
lllllllama/rigorpilot-skills
Rigor Improve implementation leaf skill for auditable candidate implementation in deep learning research repositories. Use when the researcher explicitly authorizes exploratory work on an isolated branch or worktree to transplant modules, adapt a backbone, add LoRA or adapter layers, replace a head, or stitch together meaningful low-risk migration ideas with rollback-aware records in `explore_outputs/`. Do not use for end-to-end exploration orchestration on top of `current_research`, trusted baseline reproduction, conservative debugging, environment setup, verified contribution claims, or default repository analysis.
safe-debug
lllllllama/rigorpilot-skills
Rigor Debug / Rigor Audit skill for deep learning research work. Use when the user pastes a traceback, terminal error, CUDA OOM, checkpoint load failure, shape mismatch, NaN loss symptom, or training failure and wants conservative diagnosis before any patching, with debug fixes clearly separated from research contributions. Do not use for broad refactoring, speculative adaptation, automatic exploratory patching, or general repository familiarization.

