I'm your specialized design systems assistant. Ask me about components, tokens, patterns, and best practices.
Drift inferred · capture-to-capture
No drift recorded — single capability capture; advisories appear once its surface changes.
transport — counts 5 tools · 0 res
· 0 prompts
permission surface via code analysis
tools
-
browse_by_category
-
browse_by_tag
-
get_all_tags
-
search_chunks
-
search_design_knowledge
evidence-backed
findings quoted directly from the published source artifact — not inferred
code files: 53
filesystem 27
- fs (weak) southleft-design-systems-mcp-eca371b/scripts/build-staged-agentui.ts :14
import { mkdirSync, writeFileSync } from 'node:fs'; - fs (weak) southleft-design-systems-mcp-eca371b/scripts/build-staged-aids.ts :9
import { mkdirSync, writeFileSync } from 'node:fs'; - fs (weak) southleft-design-systems-mcp-eca371b/scripts/build-staged-aifollowup.ts :9
import { mkdirSync, writeFileSync } from 'node:fs'; - fs (weak) southleft-design-systems-mcp-eca371b/scripts/build-staged-aitools.ts :8
import { mkdirSync, writeFileSync } from 'node:fs'; - fs (weak) southleft-design-systems-mcp-eca371b/scripts/build-staged-docs.ts :11
import { mkdirSync, writeFileSync } from 'node:fs'; - fs (weak) southleft-design-systems-mcp-eca371b/scripts/build-staged-foundations.ts :10
import { mkdirSync, writeFileSync } from 'node:fs'; - fs (weak) southleft-design-systems-mcp-eca371b/scripts/build-staged-periphery.ts :11
import { mkdirSync, writeFileSync } from 'node:fs'; - fs (weak) southleft-design-systems-mcp-eca371b/scripts/build-staged-prototyping.ts :9
import { mkdirSync, writeFileSync } from 'node:fs'; - fs (weak) southleft-design-systems-mcp-eca371b/scripts/build-staged-sot.ts :6
import { mkdirSync, writeFileSync } from 'node:fs'; - fs (weak) southleft-design-systems-mcp-eca371b/scripts/build-staged-southleft.ts :9
import { mkdirSync, writeFileSync } from 'node:fs'; - fs (weak) southleft-design-systems-mcp-eca371b/scripts/build/generate-manifest.ts :9
import fs from 'fs'; - fs (weak) southleft-design-systems-mcp-eca371b/scripts/check-duplicates.ts :7
import * as fs from 'fs';
show 15 more
- fs (weak) southleft-design-systems-mcp-eca371b/scripts/clean-content.ts :13
import fs from 'fs'; - fs (weak) southleft-design-systems-mcp-eca371b/scripts/clean-staged-nav.ts :13
import { readdirSync, readFileSync, writeFileSync } from 'node:fs'; - fs (weak) southleft-design-systems-mcp-eca371b/scripts/cleanup-corpus.ts :29
import { mkdirSync, writeFileSync } from 'node:fs'; - fs (weak) southleft-design-systems-mcp-eca371b/scripts/crawl-to-staged.ts :27
import { mkdirSync, readFileSync, writeFileSync } from 'node:fs'; - fs (weak) southleft-design-systems-mcp-eca371b/scripts/dedupe-entries.ts :24
import { writeFileSync, mkdirSync } from 'node:fs'; - fs (weak) southleft-design-systems-mcp-eca371b/scripts/ingest-staged.ts :29
import { readdirSync, readFileSync } from 'node:fs'; - fs (weak) southleft-design-systems-mcp-eca371b/scripts/ingest-url-direct.ts :12
import * as fs from 'fs'; - fs (weak) southleft-design-systems-mcp-eca371b/scripts/ingestion/crawl-website.ts :9
import * as fs from 'fs'; - fs (weak) southleft-design-systems-mcp-eca371b/scripts/ingestion/csv-url-parser.ts :5
import * as fs from 'fs'; - fs (weak) southleft-design-systems-mcp-eca371b/scripts/ingestion/ingest-csv.ts :9
import * as fs from 'fs'; - fs (weak) southleft-design-systems-mcp-eca371b/scripts/ingestion/ingest.ts :9
import * as fs from 'node:fs/promises'; - fs (weak) southleft-design-systems-mcp-eca371b/scripts/ingestion/pdf-parser.ts :106
// const fs = require('fs').promises; - fs (weak) southleft-design-systems-mcp-eca371b/scripts/ingestion/website-crawler.ts :8
import * as fs from 'fs'; - fs (weak) southleft-design-systems-mcp-eca371b/scripts/repair-damaged-entries.ts :31
import { mkdirSync, writeFileSync } from 'node:fs'; - fs (weak) southleft-design-systems-mcp-eca371b/scripts/setup-supabase.ts :7
import { readFileSync, writeFileSync, existsSync } from 'fs';
shell / exec 3
- shell (weak) southleft-design-systems-mcp-eca371b/scripts/ingestion/crawl-website.ts :257
const { exec } = require('child_process'); - shell (weak) southleft-design-systems-mcp-eca371b/scripts/ingestion/ingest-csv.ts :10
import { exec } from 'child_process'; - shell (weak) southleft-design-systems-mcp-eca371b/scripts/setup-supabase.ts :6
import { execSync } from 'child_process';
network 9
- net (weak) southleft-design-systems-mcp-eca371b/scripts/backfill-cf-embeddings.ts :49
const res = await fetch(ENDPOINT, { - net (weak) southleft-design-systems-mcp-eca371b/scripts/crawl-to-staged.ts :142
const response = await fetch(row.url, { - net (weak) southleft-design-systems-mcp-eca371b/scripts/eval-mcp.ts :102
const res = await fetch(BASE, { method: 'POST', headers, body: JSON.stringify(payload) }); - net (weak) southleft-design-systems-mcp-eca371b/scripts/ingestion/url-fetcher.ts :30
const response = await fetch(url, { - net (weak) southleft-design-systems-mcp-eca371b/scripts/ingestion/website-crawler.ts :327
const response = await fetch(robotsUrl); - net (weak) southleft-design-systems-mcp-eca371b/scripts/repair-damaged-entries.ts :118
const response = await fetch(entry.source_location, { - net southleft-design-systems-mcp-eca371b/src/index.ts :848
async fetch(request: Request, env: Env, ctx: ExecutionContext) { - net southleft-design-systems-mcp-eca371b/src/lib/content-loader.ts :82
const response = await fetch(`/content/entries/${filename}`); - net southleft-design-systems-mcp-eca371b/src/sse-session.ts :56
async fetch(request: Request): Promise<Response> {
secrets 18
- secrets (weak) southleft-design-systems-mcp-eca371b/scripts/backfill-cf-embeddings.ts :26
const SECRET = process.env.CF_EMBED_SECRET; - secrets (weak) southleft-design-systems-mcp-eca371b/scripts/backfill-embeddings.ts :24
const supabaseKey = process.env.SUPABASE_SERVICE_KEY; - secrets (weak) southleft-design-systems-mcp-eca371b/scripts/check-prod-connection.ts :13
const prodKey = process.env.SUPABASE_PROD_SERVICE_KEY; - secrets (weak) southleft-design-systems-mcp-eca371b/scripts/cleanup-corpus.ts :40
const supabaseKey = process.env.SUPABASE_SERVICE_KEY; - secrets (weak) southleft-design-systems-mcp-eca371b/scripts/compare-search-quality.ts :132
SUPABASE_SERVICE_KEY: process.env.SUPABASE_SERVICE_KEY, - secrets (weak) southleft-design-systems-mcp-eca371b/scripts/crawl-to-staged.ts :50
const supabaseKey = process.env.SUPABASE_SERVICE_KEY; - secrets (weak) southleft-design-systems-mcp-eca371b/scripts/dedupe-entries.ts :31
const key = process.env.SUPABASE_SERVICE_KEY; - secrets (weak) southleft-design-systems-mcp-eca371b/scripts/ingest-staged.ts :45
const supabaseKey = process.env.SUPABASE_SERVICE_KEY; - secrets (weak) southleft-design-systems-mcp-eca371b/scripts/ingest-url-direct.ts :20
process.env.SUPABASE_SERVICE_KEY! - secrets (weak) southleft-design-systems-mcp-eca371b/scripts/ingest-vectors.ts :74
if (!process.env.SUPABASE_URL || !process.env.SUPABASE_ANON_KEY) { - secrets (weak) southleft-design-systems-mcp-eca371b/scripts/repair-damaged-entries.ts :45
const supabaseKey = process.env.SUPABASE_SERVICE_KEY; - secrets (weak) southleft-design-systems-mcp-eca371b/scripts/sync-db-compare.ts :31
const prodKey = process.env.SUPABASE_PROD_SERVICE_KEY || process.env.SUPABASE_SERVICE_KEY;
show 6 more
- secrets (weak) southleft-design-systems-mcp-eca371b/scripts/sync-db-pull.ts :27
const prodKey = process.env.SUPABASE_PROD_SERVICE_KEY || process.env.SUPABASE_SERVICE_KEY; - secrets (weak) southleft-design-systems-mcp-eca371b/scripts/sync-db-push.ts :29
const prodKey = process.env.SUPABASE_PROD_SERVICE_KEY || process.env.SUPABASE_SERVICE_KEY; - secrets (weak) southleft-design-systems-mcp-eca371b/scripts/validate-ingestion.ts :27
const supabaseKey = process.env.SUPABASE_SERVICE_KEY || process.env.SUPABASE_ANON_KEY; - secrets southleft-design-systems-mcp-eca371b/src/lib/search-handler.ts :188
const supabaseKey = env?.SUPABASE_SERVICE_KEY || process.env.SUPABASE_SERVICE_KEY || env?.SUPABASE_ANON_KEY || process.env.SUPABASE_ANON_KEY; - secrets southleft-design-systems-mcp-eca371b/src/lib/supabase-catalog.ts :37
process.env.SUPABASE_SERVICE_KEY || - secrets southleft-design-systems-mcp-eca371b/src/lib/vector-ingestion.ts :33
const supabaseKey = process.env.SUPABASE_SERVICE_KEY || process.env.SUPABASE_ANON_KEY;
tool registrations 5
- search_design_knowledge southleft-design-systems-mcp-eca371b/src/sse-session.ts :330
- search_chunks southleft-design-systems-mcp-eca371b/src/sse-session.ts :359
- browse_by_category southleft-design-systems-mcp-eca371b/src/sse-session.ts :378
- get_all_tags southleft-design-systems-mcp-eca371b/src/sse-session.ts :393
- browse_by_tag southleft-design-systems-mcp-eca371b/src/sse-session.ts :402
declared dependencies 13
- @modelcontextprotocol/sdk@^1.29.0
- @supabase/supabase-js@^2.82.0
- openai@^4.67.3
- zod@^3.23.8
- @biomejs/biome@^2.0.4
- @types/node@^22.10.2
- @types/pdf-parse@^1.1.5
- cheerio@^1.1.0
- dotenv@^17.2.1
- pdf-parse@^1.1.1
- tsx@^4.19.2
- typescript@^5.7.2
show 1 more
- wrangler@4.42.0
obfuscation 1
- dynamic require()/import() southleft-design-systems-mcp-eca371b/src/lib/content-loader.ts :38
const contentModule = await import(`../../content/entries/${filename}`);