Назад към всички

codebase-explorer

// Explore and understand the Empathy Ledger codebase architecture, data flows, database schema, services, and how components connect. Use when you need to understand where things are, how data flows, or how different parts of the system relate to each other.

$ git log --oneline --stat
stars:194
forks:37
updated:March 4, 2026
SKILL.mdreadonly
SKILL.md Frontmatter
namecodebase-explorer
descriptionExplore and understand the Empathy Ledger codebase architecture, data flows, database schema, services, and how components connect. Use when you need to understand where things are, how data flows, or how different parts of the system relate to each other.

Codebase Explorer Skill

Explore and document the Empathy Ledger codebase architecture, data flows, and system relationships.

Instructions

When this skill is invoked, help the user understand:

  1. Database Schema - Tables, relationships, migrations
  2. Data Flow - Supabase → Services → API Routes → Components
  3. Service Layer - Business logic patterns
  4. API Routes - Endpoints and their purposes
  5. Type Definitions - Where to find types for each domain
  6. Multi-Tenant Architecture - How tenant isolation works

Quick Reference Files

Database & Types

DomainTypes FileKey Tables
Users/Profilessrc/types/database/user-profile.tsprofiles, profile_settings
Organizationssrc/types/database/organization-tenant.tsorganisations, organization_members, tenants
Projectssrc/types/database/project-management.tsprojects, project_participants
Stories/Contentsrc/types/database/content-media.tsstories, transcripts, media_assets
Distributionsrc/types/database/story-ownership.tsstory_distributions, consent_proofs
Cultural Safetysrc/types/database/cultural-sensitivity.tscultural_safety_moderation
Locationssrc/types/database/location-events.tslocations, events
Analysissrc/types/database/analysis-support.tstranscript_analysis, themes, quotes

Supabase Clients

ClientFileUsage
Browsersrc/lib/supabase/client.tsReact components
Server SSRsrc/lib/supabase/client-ssr.tsAPI routes, server components
Service Rolesrc/lib/supabase/service-role-client.tsAdmin operations (bypasses RLS)

Core Services (src/lib/services/)

ServicePurpose
consent.service.tsGDPR consent proof system
distribution.service.tsStory distribution with policy enforcement
revocation.service.tsRevoke distributed content
embed.service.tsEmbedded story tokens
organization.service.tsOrg management and metrics
audit.service.tsCompliance logging
gdpr.service.tsData privacy operations
webhook.service.tsEvent distribution to partners

API Routes (src/app/api/)

RoutePurpose
/api/storiesStory CRUD
/api/stories/[id]/consentConsent management
/api/stories/[id]/distributionsDistribution tracking
/api/stories/[id]/revokeRevocation
/api/storytellersStoryteller profiles
/api/projectsProject management
/api/projects/[id]/transcriptsTranscript access
/api/embed/stories/[id]Embedded content
/api/admin/*Admin operations

Data Flow Pattern

User Action (React Component)
    ↓
fetch('/api/endpoint')
    ↓
API Route (src/app/api/*)
    ↓
Service Layer (src/lib/services/*)
    ↓
Supabase Client (RLS enforced)
    ↓
PostgreSQL (supabase/migrations/*)

Multi-Tenant Isolation

Every query filters by tenant:

// In API route
const profile = await supabase.from('profiles').select('tenant_id').eq('id', user.id).single()
query = query.eq('tenant_id', profile.tenant_id)

Role Hierarchy (highest → lowest)

  1. elder (100) - Cultural authority
  2. cultural_keeper (90) - Knowledge preservation
  3. admin (70) - System management
  4. project_leader (60) - Project management
  5. storyteller (50) - Content creation
  6. community_member (40) - Participant
  7. guest (10) - Read-only

Common Exploration Commands

# Find all services
ls src/lib/services/

# Find API routes for a feature
ls src/app/api/stories/

# Check database types
cat src/types/database/index.ts

# View latest migration
ls -la supabase/migrations/ | tail -5

# Find where a table is used
grep -r "from('stories')" src/

# Find component for a feature
ls src/components/stories/

Output Format

When exploring, provide:

  1. File locations with clickable links
  2. Key relationships between tables/services
  3. Code snippets showing patterns
  4. Diagrams using ASCII or markdown tables

When to Use This Skill

Invoke when:

  • Asking "where is X located?"
  • Asking "how does X connect to Y?"
  • Needing to understand data relationships
  • Looking for the right service or API route
  • Understanding the database schema
  • Finding component or type definitions

Reference Documentation

For comprehensive documentation with full code examples, see:


Trigger: User asks about codebase structure, data flow, or "how does X connect to Y"