ultracite — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited ultracite (Rules) 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.
<h1 align="center">Criterion - Islamic Knowledge Assistant</h1>
<p align="center"> <strong>An AI-powered Da'i (invitor to Islam)</strong> bringing authentic Islamic guidance to seekers worldwide. </p>
<p align="center"> Built on the Quran and authentic Hadith. Free forever. For the sake of Allah. </p>
<p align="center"> <a href="#mission"><strong>Mission</strong></a> · <a href="#features"><strong>Features</strong></a> · <a href="#tech-stack"><strong>Tech Stack</strong></a> · <a href="#getting-started"><strong>Getting Started</strong></a> · <a href="#mcp-server"><strong>MCP Server</strong></a> · <a href="#documentation"><strong>Documentation</strong></a> </p> <br/>
Criterion exists to bring authentic Islamic knowledge to anyone seeking truth, using modern technology to make divine guidance accessible to all of humanity — freely, forever, for the sake of Allah alone.
👉 [Read the full mission and vision in MISSION.md](./MISSION.md)
Mission-Aligned:
Technical Excellence:
✅ Semantic Quran Search — Ask natural language questions, get relevant verses ✅ Semantic Hadith Search — Search authentic Hadith with grade & collection filtering ✅ Contextual Understanding — Top results include surrounding context for proper meaning ✅ Accurate Citations — Every response cites real sources with hyperlinks ✅ Multilingual Reading — English (fast) + Slovak (single JOIN <200ms) ✅ Shareable URLs — /quran/search?q=patience, /hadith/search?q=charity, and /quran/2/255 with metadata ✅ Real-time Streaming — Progressive response generation with token-by-token delivery ✅ Tool-Based RAG — LLM autonomously decides when to retrieve from Quran/Hadith
User Question
↓
XAI Grok 4 LLM (decides which tools to use)
↓
Tool Selection:
- queryQuran → 6,236 verses (top 7 for chat, top 20 for search)
- queryHadith → 21,641 hadiths from 6 collections (top 3 for chat, top 15 for search, with grade filtering)
↓
Vector Search (768-dim Gemini embeddings)
↓
Context Enhancement (top 3 get ±2 surrounding verses)
↓
LLM Generates Response with Citations
↓
Real-time Stream to User (Server-Sent Events)git clone <repo-url>
cd criterionpnpm installCreate a .env.local file:
# Database
POSTGRES_URL=postgresql://...
# AI APIs
XAI_API_KEY=xai-...
GOOGLE_GENERATIVE_AI_API_KEY=...
# Authentication (optional)
AUTH_SECRET=...pnpm db:enable-pgvectorpnpm db:migratepnpm ingest:quranThis will take 10-15 minutes to complete.
pnpm test:quranpnpm devYour app should now be running on localhost:3000.
pnpm dev # Start dev server
pnpm build # Build for production
pnpm start # Start production serverpnpm db:generate # Generate Drizzle schema
pnpm db:migrate # Run migrations
pnpm db:studio # Open Drizzle Studio (GUI)# Quran
pnpm clear:quran # Clear all Quran data
pnpm ingest:quran # Ingest Quran verses and generate embeddings
pnpm ingest:quran:slovak # Ingest Slovak translation
pnpm test:quran # Test Quran search functionality
# Hadith
pnpm clear:hadith # Clear all Hadith data
pnpm ingest:hadith # Ingest Hadith and generate embeddingsCriterion exposes its semantic search capabilities through the Model Context Protocol (MCP), allowing AI assistants like Claude Desktop and Cursor to search Quran and Hadith directly.
Quick Setup:
{
"mcpServers": {
"criterion": {
"url": "https://criterion.life/api/mcp"
}
}
}Available Tools:
search_quran — Search 6,236 Quran versessearch_hadith — Search 21,641 authentic Hadiths from 6 collectionsget_verse — Retrieve specific verse by reference (e.g., "2:255")👉 [Read full MCP documentation in MCP.md](./MCP.md)
criterion/
├── app/
│ ├── (auth)/ # Authentication routes
│ ├── (chat)/ # Chat interface and API
│ │ └── api/chat/ # Main chat endpoint
│ ├── search/ # Quran search page
│ │ └── api/ # Quran search API
│ ├── hadith/
│ │ └── search/ # Hadith search page and API
│ └── quran/ # Quran reading pages
├── lib/
│ ├── ai/
│ │ ├── embeddings.ts # Core RAG logic
│ │ ├── prompts.ts # Da'i system prompts
│ │ └── tools/
│ │ ├── query-quran.ts # Quran search tool
│ │ └── query-hadith.ts # Hadith search tool
│ └── db/
│ ├── schema.ts # Database schema
│ └── migrations/ # SQL migrations
├── components/
│ ├── chat.tsx # Main chat UI
│ ├── quran-verses.tsx # Quran display component
│ ├── hadith-narrations.tsx # Hadith carousel
│ └── hadith/
│ └── hadith-card.tsx # Reusable hadith card
├── scripts/
│ ├── ingest-quran.ts # Quran data ingestion
│ ├── ingest-hadith.ts # Hadith data ingestion
│ └── test-*.ts # Test scripts
└── data/
├── quran*.txt # Quran translations
└── *-full.json # Hadith collections| Document | Purpose |
|---|---|
| MISSION.md | Vision, values, pillars, and long-term goals |
| CRITERION_DETAILED.md | Technical architecture, database schema, components, and best practices |
| CRITERION.md | Quick start, commands, and core concepts |
| README.md | Getting started, features, and project overview |
components/
├── Chat UI (QuranVerses, HadithNarrations, MessageActions)
├── Search Pages (Quran and Hadith semantic search with filters)
├── Hadith Components (reusable HadithCard for search and chat)
├── Quran Pages (shared components for context, language selection)
└── UI Components (buttons, inputs, etc.)
lib/
├── ai/
│ ├── embeddings.ts (vector search logic)
│ ├── prompts.ts (Da'i system prompts)
│ └── tools/ (queryQuran, queryHadith, requestSuggestions)
├── db/
│ ├── schema.ts (Drizzle ORM definitions)
│ └── queries.ts (database functions)
└── monitoring/ (performance tracking)
app/
├── (chat)/api/chat (main chat endpoint)
├── quran/search/ (Quran search page and API)
├── hadith/search/ (Hadith search page and API)
├── quran/ (Quran reading pages)
└── (auth)/ (authentication)Criterion is built with these commitments:
We welcome contributions from developers, scholars, and community members who share our mission. Please see CONTRIBUTING.md for guidelines.
"Invite to the way of your Lord with wisdom and good instruction, and argue with them in a way that is best." — Quran 16:125
_May Allah accept this work and make it a means of guidance for seekers everywhere. Ameen._
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.