Baby Sensory Analytics — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited Baby Sensory Analytics (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
Cloud-powered analytics server for Baby Sensory World application. Tracks engagement patterns, favorite themes, colors, and provides AI-powered insights to optimize your baby's sensory experience.
📖 [Read HOW_IT_WORKS.md](./HOW_IT_WORKS.md) for a comprehensive guide with diagrams explaining the full system architecture and how the MCP server integrates with the web application.
cd baby-sensory-analytics
npm install
npm run buildThe MCP server uses Supabase for cloud storage. If you haven't already:
supabase/migrations/001_create_sessions_table.sql)The database credentials are configured in src/db/supabase.config.ts or can be set via environment variables:
export SUPABASE_URL="https://your-project.supabase.co"
export SUPABASE_ANON_KEY="your-anon-key-here"Add to ~/.claude/mcp_settings.json:
{
"mcpServers": {
"baby-sensory-analytics": {
"command": "node",
"args": ["/Users/your-username/path/to/baby-sensory-analytics/dist/index.js"],
"env": {
"SUPABASE_URL": "https://your-project.supabase.co",
"SUPABASE_ANON_KEY": "your-anon-key"
}
}
}
}Note: The keys in env override the defaults in supabase.config.ts.
Your Baby Sensory World web app needs to write sessions directly to Supabase. Add the Supabase client to your web app:
npm install @supabase/supabase-jsThen configure it to save sessions after each play session:
import { createClient } from '@supabase/supabase-js';
const supabase = createClient(
'https://your-project.supabase.co',
'your-anon-key'
);
// After a session completes
await supabase.from('sessions').insert({
id: sessionId,
timestamp: Date.now(),
theme: 'Ocean',
duration: 1200,
touches: 156,
color_counts: { "#4ECDC4": 45, "#0088FF": 38 },
object_counts: { "🐟": 48, "🫧": 35 },
nursery_rhymes_played: ["Twinkle Twinkle"],
streaks: 12,
milestones: [10, 25, 50, 100, 150],
completed_full: true
});Once data is synced, you can query insights using Claude or any MCP client:
"Show me my baby's weekly summary"
"What is my baby's favorite theme?"
"What colors does my baby interact with most?"
"When is the best time to play?"The server exposes these resources:
baby-sensory://sessions/list - All recorded sessionsbaby-sensory://sessions/recent - Last 7 days of sessionsbaby-sensory://sessions/{id} - Specific session detailsbaby-sensory://insights/weekly-summary - Weekly engagement reportbaby-sensory://insights/themes - Theme preference rankingsbaby-sensory://insights/colors - Color engagement statsbaby-sensory://insights/timing - Best times for playbaby-sensory://export/all - Export all data as JSONThe server provides these tools:
create_session - Log a new play sessionget_session - Retrieve session by IDlist_sessions - List sessions with optional limit{
id: string // UUID
timestamp: number // Unix timestamp (ms)
theme: string // "Ocean", "Space", etc.
duration: number // Seconds
touches: number // Total touches
colorCounts: { // Color engagement
"#FF6B6B": 15,
"#4ECDC4": 23
},
objectCounts: { // Object type engagement
"🐠": 8,
"⭐": 12
},
nurseryRhymesPlayed: [ // Rhymes played during session
"Twinkle Twinkle",
"Baa Baa Black Sheep"
],
streaks: number // Longest streak
milestones: [10, 25, 50], // Milestones achieved
completedFull: boolean // Finished 20 minutes?
}npm run watch # Auto-rebuild on changesnpm run inspectorThis opens the MCP Inspector tool to test resources and tools.
Server logs to stderr for debugging:
node dist/index.js 2> debug.log┌─────────────────────────┐
│ Baby Sensory Web App │
│ (React + Vite) │
│ - Netlify hosted │
└────────────┬────────────┘
│
│ HTTP/REST API
│ (Supabase Client)
▼
┌─────────────────────────┐
│ Supabase Cloud │
│ - PostgreSQL Database │
│ - Real-time sync │
│ - Row Level Security │
└────────────┬────────────┘
│
│ Read (Supabase Client)
▼
┌─────────────────────────┐
│ Baby Sensory Analytics │
│ MCP Server (Local) │
│ (Node.js) │
└────────────┬────────────┘
│
│ MCP Protocol (stdio)
▼
┌─────────────────────────┐
│ Claude Code / AI │
│ (MCP Clients) │
└─────────────────────────┘Data Flow:
MIT
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.