Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Invoke this skill when: - Starting work on any Empathy Ledger feature - Need quick reference to project patterns
.claude/skills/aiskillstore-empathy-ledger-dev/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-05 | ✗→✓ | ▲ Improved | 21% | 0% |
| case-06 | ✗→✓ | ▲ Improved | -39% | 0% |
| case-02 | ✗→✓ | ▲ Improved | 16% | 0% |
| case-04 | ✗→✓ | ▲ Improved | -7% | 0% |
| case-07 | ✗→✓ | ▲ Improved | -45% | 0% |
This skill provides comprehensive context for developing the Empathy Ledger v2 platform - a multi-tenant storytelling platform for Indigenous communities with cultural safety protocols.
src/
├── app/ # Next.js 15 App Router
│ ├── api/ # API routes
│ ├── vault/ # Story Vault dashboard
│ └── stories/ # Story pages
├── components/ # React components
│ ├── ui/ # shadcn/ui base
│ ├── vault/ # Story Vault components
│ └── cultural/ # Cultural protocol UI
├── lib/ # Utilities and services
│ ├── services/ # Business logic services
│ ├── hooks/ # React hooks
│ └── ai/ # AI integration
└── types/ # TypeScript types
└── database/ # Supabase types by domainOCAP Principles (Indigenous Data Sovereignty):
Multi-Tenant Architecture:
tenant_id for isolationCultural Sensitivity Levels:
standard - General sharing allowedmedium - Community context requiredhigh - Elder review recommendedsacred - Elder approval mandatory, no external sharingAPI Route Authentication:
typescriptconst supabase = createRouteHandlerClient({ cookies }) const { data: { user }, error } = await supabase.auth.getUser() if (error || !user) { return NextResponse.json({ error: 'Unauthorized' }, { status: 401 }) }
Story Ownership Check:
typescriptconst isOwner = story.author_id === user.id || story.storyteller_id === user.id
Cultural Color Palette:
clay-* - Primary, storyteller elementssage-* - Community, elder approvalsky-* - Organization, trustember-* - Warnings, sensitivity| Domain | File | Contents | |--------|------|----------| | User/Profile | user-profile.ts | Profiles, preferences | | Organization | organization-tenant.ts | Tenants, memberships | | Projects | project-management.ts | Projects, milestones | | Content | content-media.ts | Stories, media | | Cultural | cultural-protocols.ts | Sensitivity, approvals | | Legal | consent-legal.ts | Consent, GDPR | | Story Ownership | story-ownership.ts | Distributions, embeds |
EmbedService - Manage story embeds with domain restrictionsDistributionService - Track external sharesRevocationService - Cascade revocationGDPRService - Anonymization, data exportAuditService - Action logging/design-component [description] - Create React component/database-migration [description] - Create Supabase migration/review-cultural [code/feature] - Cultural sensitivity review/review-security [code/endpoint] - Security audit/generate-e2e-test [feature] - Create Playwright test/api-endpoint [description] - Create API routefrontend-designer - UI/UX with cultural designdatabase-architect - Supabase/PostgreSQLcultural-reviewer - OCAP compliancesecurity-auditor - GDPR and securitytesting-automation - Playwright E2EInvoke this skill when:
The following files provide detailed context:
CLAUDE.md - Project instructions.claude/agents/*.md - Specialized agent prompts.claude/commands/*.md - Slash command definitionssrc/types/database/ - Database type definitions| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-05 | fail→pass | 17,985 | 16,425 | -9% | 1 | 1 | 0% | 3,922 | 4,763 | +21% | 0 | 0 | — |
case-06 | fail→pass | 11,685 | 2,133 | -82% | 1 | 1 | 0% | 2,117 | 1,294 | -39% | 0 | 0 | — |
case-11 | pass→pass | 9,213 | 2,289 | -75% | 1 | 1 | 0% | 1,426 | 1,287 | -10% | 0 | 0 | — |
case-12 | pass→pass | 9,106 | 1,368 | -85% | 1 | 1 | 0% | 1,353 | 1,178 | -13% | 0 | 0 | — |
case-01 | fail→fail | 13,665 | 14,000 | +2% | 1 | 1 | 0% | 3,059 | 3,892 | +27% | 0 | 0 | — |
case-02 | fail→pass | 28,467 | 26,640 | -6% | 1 | 1 | 0% | 6,189 | 7,154 | +16% | 0 | 0 | — |
case-03 | fail→fail | 20,433 | 18,809 | -8% | 1 | 1 | 0% | 4,262 | 5,170 | +21% | 0 | 0 | — |
case-04 | fail→pass | 10,473 | 4,218 | -60% | 1 | 1 | 0% | 1,848 | 1,719 | -7% | 0 | 0 | — |
case-07 | fail→pass | 13,674 | 1,898 | -86% | 1 | 1 | 0% | 2,239 | 1,233 | -45% | 0 | 0 | — |
case-08 | pass→pass | 10,385 | 2,333 | -78% | 1 | 1 | 0% | 1,789 | 1,266 | -29% | 0 | 0 | — |
case-09 | fail→pass | 12,126 | 2,207 | -82% | 1 | 1 | 0% | 1,753 | 1,290 | -26% | 0 | 0 | — |
case-10 | fail→pass | 10,165 | 2,527 | -75% | 1 | 1 | 0% | 1,579 | 1,312 | -17% | 0 | 0 | — |
case-13 | fail→pass | 8,510 | 1,552 | -82% | 1 | 1 | 0% | 1,274 | 1,160 | -9% | 0 | 0 | — |
case-14 | fail→pass | 8,601 | 1,817 | -79% | 1 | 1 | 0% | 1,299 | 1,299 | 0% | 0 | 0 | — |
case-15 | fail→pass | 6,675 | 1,635 | -76% | 1 | 1 | 0% | 1,061 | 1,192 | +12% | 0 | 0 | — |
case-16 | fail→pass | 5,562 | 1,689 | -70% | 1 | 1 | 0% | 869 | 1,208 | +39% | 0 | 0 | — |
case-17 | pass→pass | 11,907 | 1,743 | -85% | 1 | 1 | 0% | 1,868 | 1,253 | -33% | 0 | 0 | — |
case-18 | pass→pass | 8,311 | 1,789 | -78% | 1 | 1 | 0% | 1,293 | 1,181 | -9% | 0 | 0 | — |
case-19 | pass→pass | 6,399 | 2,485 | -61% | 1 | 1 | 0% | 1,076 | 1,312 | +22% | 0 | 0 | — |
case-20 | pass→pass | 13,774 | 13,442 | -2% | 1 | 1 | 0% | 2,690 | 3,638 | +35% | 0 | 0 | — |
case-21 | pass→fail | 5,019 | 4,277 | -15% | 1 | 1 | 0% | 832 | 1,623 | +95% | 0 | 0 | — |
case-22 | pass→pass | 13,026 | 8,192 | -37% | 1 | 1 | 0% | 2,596 | 2,729 | +5% | 0 | 0 | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 22 cases were attempted. The headline lift of +45 percentage points is the difference between those two pass rates over the 22 comparable cases. 1 case got worse with the skill loaded, and it is included in that figure.
Without the skill loaded, the model failed this case. With it loaded, the same prompt on the same model passed. This is one improved case from the latest verified run; every case, including any that regressed, is in the table above.
Other measured skills in the registry, with their headline benchmark lift.