qualia-framework 2.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +50 -0
- package/bin/cli.js +519 -0
- package/framework/agents/architecture-strategist.md +53 -0
- package/framework/agents/backend-agent.md +150 -0
- package/framework/agents/code-simplicity-reviewer.md +86 -0
- package/framework/agents/frontend-agent.md +111 -0
- package/framework/agents/kieran-typescript-reviewer.md +96 -0
- package/framework/agents/performance-oracle.md +111 -0
- package/framework/agents/qualia-codebase-mapper.md +760 -0
- package/framework/agents/qualia-debugger.md +1203 -0
- package/framework/agents/qualia-executor.md +881 -0
- package/framework/agents/qualia-integration-checker.md +423 -0
- package/framework/agents/qualia-phase-researcher.md +453 -0
- package/framework/agents/qualia-plan-checker.md +699 -0
- package/framework/agents/qualia-planner.md +1241 -0
- package/framework/agents/qualia-project-researcher.md +602 -0
- package/framework/agents/qualia-research-synthesizer.md +236 -0
- package/framework/agents/qualia-roadmapper.md +605 -0
- package/framework/agents/qualia-verifier.md +685 -0
- package/framework/agents/team-orchestrator.md +228 -0
- package/framework/agents/teams/full-stack-team.md +48 -0
- package/framework/agents/teams/optimize-team.md +53 -0
- package/framework/agents/teams/review-team.md +62 -0
- package/framework/agents/teams/ship-team.md +86 -0
- package/framework/agents/test-agent.md +182 -0
- package/framework/askpass.sh +2 -0
- package/framework/commands/design.md +53 -0
- package/framework/commands/quick-db.md +22 -0
- package/framework/config/retention.json +35 -0
- package/framework/core/PRINCIPLES.md +77 -0
- package/framework/hooks/auto-format.sh +45 -0
- package/framework/hooks/block-env-edit.sh +42 -0
- package/framework/hooks/branch-guard.sh +46 -0
- package/framework/hooks/confirm-delete.sh +56 -0
- package/framework/hooks/migration-validate.sh +68 -0
- package/framework/hooks/notification-speak.sh +15 -0
- package/framework/hooks/pre-commit.sh +80 -0
- package/framework/hooks/pre-compact.sh +55 -0
- package/framework/hooks/pre-deploy-gate.sh +151 -0
- package/framework/hooks/qualia-colors.sh +32 -0
- package/framework/hooks/retention-cleanup.sh +43 -0
- package/framework/hooks/save-session-state.sh +153 -0
- package/framework/hooks/session-context-loader.sh +28 -0
- package/framework/hooks/session-learn.sh +30 -0
- package/framework/knowledge/claudecode-bible.md +1384 -0
- package/framework/knowledge/client-prefs.md +22 -0
- package/framework/knowledge/common-fixes.md +25 -0
- package/framework/knowledge/deployment-map.md +35 -0
- package/framework/knowledge/email-signature.html +1 -0
- package/framework/knowledge/employees.md +8 -0
- package/framework/knowledge/learned-patterns.md +51 -0
- package/framework/knowledge/optimization-research-2026.md +137 -0
- package/framework/knowledge/qualia-context.md +67 -0
- package/framework/knowledge/supabase-patterns.md +50 -0
- package/framework/knowledge/voice-agent-patterns.md +46 -0
- package/framework/qualia-engine/VERSION +1 -0
- package/framework/qualia-engine/bin/qualia-tools.js +2160 -0
- package/framework/qualia-engine/bin/qualia-tools.test.js +1054 -0
- package/framework/qualia-engine/references/checkpoints.md +775 -0
- package/framework/qualia-engine/references/continuation-format.md +249 -0
- package/framework/qualia-engine/references/decimal-phase-calculation.md +65 -0
- package/framework/qualia-engine/references/design-quality.md +56 -0
- package/framework/qualia-engine/references/git-integration.md +254 -0
- package/framework/qualia-engine/references/git-planning-commit.md +50 -0
- package/framework/qualia-engine/references/model-profile-resolution.md +32 -0
- package/framework/qualia-engine/references/model-profiles.md +73 -0
- package/framework/qualia-engine/references/phase-argument-parsing.md +61 -0
- package/framework/qualia-engine/references/planning-config.md +195 -0
- package/framework/qualia-engine/references/questioning.md +141 -0
- package/framework/qualia-engine/references/tdd.md +263 -0
- package/framework/qualia-engine/references/ui-brand.md +160 -0
- package/framework/qualia-engine/references/verification-patterns.md +612 -0
- package/framework/qualia-engine/templates/DEBUG.md +159 -0
- package/framework/qualia-engine/templates/DESIGN.md +81 -0
- package/framework/qualia-engine/templates/UAT.md +247 -0
- package/framework/qualia-engine/templates/codebase/architecture.md +255 -0
- package/framework/qualia-engine/templates/codebase/concerns.md +310 -0
- package/framework/qualia-engine/templates/codebase/conventions.md +307 -0
- package/framework/qualia-engine/templates/codebase/integrations.md +280 -0
- package/framework/qualia-engine/templates/codebase/stack.md +186 -0
- package/framework/qualia-engine/templates/codebase/structure.md +285 -0
- package/framework/qualia-engine/templates/codebase/testing.md +480 -0
- package/framework/qualia-engine/templates/config.json +35 -0
- package/framework/qualia-engine/templates/context.md +283 -0
- package/framework/qualia-engine/templates/continue-here.md +78 -0
- package/framework/qualia-engine/templates/debug-subagent-prompt.md +91 -0
- package/framework/qualia-engine/templates/discovery.md +146 -0
- package/framework/qualia-engine/templates/milestone-archive.md +123 -0
- package/framework/qualia-engine/templates/milestone.md +115 -0
- package/framework/qualia-engine/templates/phase-prompt.md +567 -0
- package/framework/qualia-engine/templates/planner-subagent-prompt.md +117 -0
- package/framework/qualia-engine/templates/project.md +184 -0
- package/framework/qualia-engine/templates/projects/ai-agent.md +156 -0
- package/framework/qualia-engine/templates/projects/mobile-app.md +181 -0
- package/framework/qualia-engine/templates/projects/voice-agent.md +134 -0
- package/framework/qualia-engine/templates/projects/website.md +137 -0
- package/framework/qualia-engine/templates/requirements.md +231 -0
- package/framework/qualia-engine/templates/research-project/ARCHITECTURE.md +204 -0
- package/framework/qualia-engine/templates/research-project/FEATURES.md +147 -0
- package/framework/qualia-engine/templates/research-project/PITFALLS.md +200 -0
- package/framework/qualia-engine/templates/research-project/STACK.md +120 -0
- package/framework/qualia-engine/templates/research-project/SUMMARY.md +170 -0
- package/framework/qualia-engine/templates/research.md +552 -0
- package/framework/qualia-engine/templates/roadmap.md +202 -0
- package/framework/qualia-engine/templates/state.md +176 -0
- package/framework/qualia-engine/templates/summary-complex.md +59 -0
- package/framework/qualia-engine/templates/summary-minimal.md +41 -0
- package/framework/qualia-engine/templates/summary-standard.md +48 -0
- package/framework/qualia-engine/templates/summary.md +246 -0
- package/framework/qualia-engine/templates/user-setup.md +311 -0
- package/framework/qualia-engine/templates/verification-report.md +322 -0
- package/framework/qualia-engine/workflows/add-phase.md +179 -0
- package/framework/qualia-engine/workflows/add-todo.md +157 -0
- package/framework/qualia-engine/workflows/audit-milestone.md +241 -0
- package/framework/qualia-engine/workflows/check-todos.md +176 -0
- package/framework/qualia-engine/workflows/complete-milestone.md +858 -0
- package/framework/qualia-engine/workflows/diagnose-issues.md +219 -0
- package/framework/qualia-engine/workflows/discovery-phase.md +289 -0
- package/framework/qualia-engine/workflows/discuss-phase.md +534 -0
- package/framework/qualia-engine/workflows/execute-phase.md +559 -0
- package/framework/qualia-engine/workflows/execute-plan.md +438 -0
- package/framework/qualia-engine/workflows/help.md +470 -0
- package/framework/qualia-engine/workflows/insert-phase.md +220 -0
- package/framework/qualia-engine/workflows/list-phase-assumptions.md +178 -0
- package/framework/qualia-engine/workflows/map-codebase.md +327 -0
- package/framework/qualia-engine/workflows/new-milestone.md +363 -0
- package/framework/qualia-engine/workflows/new-project.md +1037 -0
- package/framework/qualia-engine/workflows/pause-work.md +122 -0
- package/framework/qualia-engine/workflows/plan-milestone-gaps.md +256 -0
- package/framework/qualia-engine/workflows/plan-phase.md +422 -0
- package/framework/qualia-engine/workflows/progress.md +354 -0
- package/framework/qualia-engine/workflows/quick.md +252 -0
- package/framework/qualia-engine/workflows/remove-phase.md +326 -0
- package/framework/qualia-engine/workflows/research-phase.md +74 -0
- package/framework/qualia-engine/workflows/resume-project.md +306 -0
- package/framework/qualia-engine/workflows/set-profile.md +80 -0
- package/framework/qualia-engine/workflows/settings.md +145 -0
- package/framework/qualia-engine/workflows/transition.md +556 -0
- package/framework/qualia-engine/workflows/update.md +197 -0
- package/framework/qualia-engine/workflows/verify-phase.md +195 -0
- package/framework/qualia-engine/workflows/verify-work.md +625 -0
- package/framework/rules/context7.md +11 -0
- package/framework/rules/deployment.md +29 -0
- package/framework/rules/frontend.md +33 -0
- package/framework/rules/security.md +12 -0
- package/framework/rules/speed.md +20 -0
- package/framework/scripts/__pycache__/say.cpython-314.pyc +0 -0
- package/framework/scripts/apply-retention.sh +120 -0
- package/framework/scripts/bootstrap-pop-os.sh +354 -0
- package/framework/scripts/claude-voice +13 -0
- package/framework/scripts/cleanup.sh +131 -0
- package/framework/scripts/cowork-mode.sh +141 -0
- package/framework/scripts/generate-project-claude-md.sh +153 -0
- package/framework/scripts/load-test-webhook.js +172 -0
- package/framework/scripts/say.py +236 -0
- package/framework/scripts/showcase-video-recorder/ffmpeg-builder.js +167 -0
- package/framework/scripts/showcase-video-recorder/playwright-helpers.js +216 -0
- package/framework/scripts/speak.py +55 -0
- package/framework/scripts/speak.sh +18 -0
- package/framework/scripts/status.sh +138 -0
- package/framework/scripts/sync-to-framework.sh +65 -0
- package/framework/scripts/voice-hotkey.py +227 -0
- package/framework/scripts/voice-input.sh +51 -0
- package/framework/skills/animate/SKILL.md +202 -0
- package/framework/skills/bolder/SKILL.md +144 -0
- package/framework/skills/browser-qa/SKILL.md +536 -0
- package/framework/skills/clarify/SKILL.md +179 -0
- package/framework/skills/colorize/SKILL.md +170 -0
- package/framework/skills/critique/SKILL.md +126 -0
- package/framework/skills/deep-research/SKILL.md +271 -0
- package/framework/skills/delight/SKILL.md +329 -0
- package/framework/skills/deploy/SKILL.md +261 -0
- package/framework/skills/deploy-verify/SKILL.md +377 -0
- package/framework/skills/deploy-verify/scripts/canary-check.sh +206 -0
- package/framework/skills/deploy-verify/scripts/check-console-errors.js +147 -0
- package/framework/skills/deploy-verify/scripts/check-cwv.js +139 -0
- package/framework/skills/deploy-verify/scripts/project-detect.sh +84 -0
- package/framework/skills/deploy-verify/scripts/verify.sh +548 -0
- package/framework/skills/design-quieter/SKILL.md +130 -0
- package/framework/skills/distill/SKILL.md +149 -0
- package/framework/skills/docs-lookup/SKILL.md +78 -0
- package/framework/skills/fcm-notifications/SKILL.md +125 -0
- package/framework/skills/financial-ledger/SKILL.md +1039 -0
- package/framework/skills/frontend-master/NOTICE.md +4 -0
- package/framework/skills/frontend-master/SKILL.md +127 -0
- package/framework/skills/frontend-master/reference/color-and-contrast.md +132 -0
- package/framework/skills/frontend-master/reference/interaction-design.md +123 -0
- package/framework/skills/frontend-master/reference/motion-design.md +99 -0
- package/framework/skills/frontend-master/reference/responsive-design.md +114 -0
- package/framework/skills/frontend-master/reference/spatial-design.md +100 -0
- package/framework/skills/frontend-master/reference/typography.md +131 -0
- package/framework/skills/frontend-master/reference/ux-writing.md +107 -0
- package/framework/skills/harden/SKILL.md +357 -0
- package/framework/skills/i18n-rtl/SKILL.md +752 -0
- package/framework/skills/learn/SKILL.md +71 -0
- package/framework/skills/memory/SKILL.md +50 -0
- package/framework/skills/mobile-expo/SKILL.md +864 -0
- package/framework/skills/mobile-expo/references/store-checklist.md +550 -0
- package/framework/skills/nestjs-backend/README.md +73 -0
- package/framework/skills/nestjs-backend/SKILL.md +446 -0
- package/framework/skills/nestjs-backend/references/templates.md +1173 -0
- package/framework/skills/normalize/SKILL.md +79 -0
- package/framework/skills/onboard/SKILL.md +242 -0
- package/framework/skills/polish/SKILL.md +209 -0
- package/framework/skills/pr/SKILL.md +66 -0
- package/framework/skills/qualia/SKILL.md +153 -0
- package/framework/skills/qualia-add-todo/SKILL.md +68 -0
- package/framework/skills/qualia-audit-milestone/SKILL.md +92 -0
- package/framework/skills/qualia-check-todos/SKILL.md +55 -0
- package/framework/skills/qualia-complete-milestone/SKILL.md +108 -0
- package/framework/skills/qualia-debug/SKILL.md +149 -0
- package/framework/skills/qualia-design/SKILL.md +203 -0
- package/framework/skills/qualia-discuss-phase/SKILL.md +72 -0
- package/framework/skills/qualia-execute-phase/SKILL.md +86 -0
- package/framework/skills/qualia-help/SKILL.md +67 -0
- package/framework/skills/qualia-idk/SKILL.md +352 -0
- package/framework/skills/qualia-list-phase-assumptions/SKILL.md +67 -0
- package/framework/skills/qualia-new-milestone/SKILL.md +72 -0
- package/framework/skills/qualia-new-project/SKILL.md +92 -0
- package/framework/skills/qualia-optimize/SKILL.md +417 -0
- package/framework/skills/qualia-pause-work/SKILL.md +96 -0
- package/framework/skills/qualia-plan-milestone-gaps/SKILL.md +57 -0
- package/framework/skills/qualia-plan-phase/SKILL.md +101 -0
- package/framework/skills/qualia-progress/SKILL.md +53 -0
- package/framework/skills/qualia-quick/SKILL.md +89 -0
- package/framework/skills/qualia-research-phase/SKILL.md +88 -0
- package/framework/skills/qualia-resume-work/SKILL.md +62 -0
- package/framework/skills/qualia-review/SKILL.md +263 -0
- package/framework/skills/qualia-start/SKILL.md +182 -0
- package/framework/skills/qualia-verify-work/SKILL.md +105 -0
- package/framework/skills/qualia-workflow/SKILL.md +130 -0
- package/framework/skills/rag/SKILL.md +750 -0
- package/framework/skills/responsive/SKILL.md +231 -0
- package/framework/skills/retro/SKILL.md +284 -0
- package/framework/skills/sakani-conventions/SKILL.md +136 -0
- package/framework/skills/sakani-conventions/evals/evals.json +23 -0
- package/framework/skills/sakani-conventions/references/entities.md +365 -0
- package/framework/skills/sakani-conventions/references/error-codes.md +95 -0
- package/framework/skills/seo-master/SKILL.md +490 -0
- package/framework/skills/seo-master/references/checklist.md +199 -0
- package/framework/skills/seo-master/references/structured-data.md +609 -0
- package/framework/skills/ship/SKILL.md +202 -0
- package/framework/skills/stack-researcher/SKILL.md +215 -0
- package/framework/skills/status/SKILL.md +154 -0
- package/framework/skills/status/scripts/health-check.sh +562 -0
- package/framework/skills/subscription-payments/SKILL.md +250 -0
- package/framework/skills/supabase/SKILL.md +973 -0
- package/framework/skills/supabase/references/templates.md +159 -0
- package/framework/skills/team/SKILL.md +67 -0
- package/framework/skills/test-runner/SKILL.md +202 -0
- package/framework/skills/voice-agent/SKILL.md +407 -0
- package/framework/skills/zoho-workflow/SKILL.md +51 -0
- package/framework/statusline-command.sh +117 -0
- package/package.json +24 -0
- package/profiles/fawzi.json +16 -0
- package/profiles/hasan.json +16 -0
- package/profiles/moayad.json +16 -0
- package/templates/CLAUDE-owner.md +52 -0
- package/templates/CLAUDE.md.hbs +58 -0
- package/templates/env.claude.template +12 -0
- package/templates/settings.json +141 -0
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
# Client Preferences
|
|
2
|
+
> Per-client details NOT covered in qualia-context.md. Only unique info here.
|
|
3
|
+
|
|
4
|
+
## Websites
|
|
5
|
+
- **qualiafinal** — Modern, professional, dark theme
|
|
6
|
+
- **aquador** — Clean, water-themed design
|
|
7
|
+
- **glluztech** — Tech/corporate. Only project on Pages Router.
|
|
8
|
+
- **inrvo** — Has MCP configured. Custom domain: innrvo.com
|
|
9
|
+
- **luxcars** — Luxury, premium aesthetics
|
|
10
|
+
- **vero** — Tier 1. Has MCP configured.
|
|
11
|
+
- **aibossbrainz** — Tier 1. Has MCP configured.
|
|
12
|
+
|
|
13
|
+
## AI Agents
|
|
14
|
+
- **Hammah** — Arabic/English bilingual, Kuwait construction sector, 18 categories. SERVICE_ROLE_KEY exposed.
|
|
15
|
+
- **sofiatesting** — Greek/English. Cyprus real estate. WhatsApp + Web. Edge Functions. Most complex agent. Has MCP (Upstash, Context7, Postman, Railway).
|
|
16
|
+
- **timo** — Mindfulness OS for C-Suite. Incomplete credentials.
|
|
17
|
+
- **sigatalachana** — Greek. Python agent (NOT web). Invoice OCR + POS. Misclassified in aiagents folder.
|
|
18
|
+
- **axidex** — Sales signals. Stripe integrated.
|
|
19
|
+
|
|
20
|
+
## Voice
|
|
21
|
+
- **armenius** — Greek/English/Russian. 7 webhook tools (order status, stock, product search). PrestaShop. NOT on Vercel — Cloudflare Workers.
|
|
22
|
+
- **under** — Tier 1. Sales training. ai.underdogsales.com. Has MCP.
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
# Common Fixes
|
|
2
|
+
> Recurring bugs and their solutions. Updated: 2026-03-23
|
|
3
|
+
|
|
4
|
+
## Build Failures
|
|
5
|
+
- **Module not found**: Check case sensitivity (Linux is case-sensitive, macOS isn't)
|
|
6
|
+
- **Memory issues**: `vercel --build-env NODE_OPTIONS="--max-old-space-size=4096"`
|
|
7
|
+
- **Missing deps**: `rm -rf node_modules && npm install`
|
|
8
|
+
- **Generated types stale**: `npx supabase gen types typescript --linked > types/database.ts`
|
|
9
|
+
|
|
10
|
+
## Deployment
|
|
11
|
+
- **Works locally, fails on Vercel**: Check Node version, env vars, case sensitivity
|
|
12
|
+
- **Missing env vars**: `vercel env ls` to check, `vercel env add` to fix
|
|
13
|
+
- **NEXT_PUBLIC_ vars**: Must be set at BUILD time, not just runtime
|
|
14
|
+
- **White screen**: Check for `window`/`document` in server components
|
|
15
|
+
- **500 on API**: Check env vars exist on Vercel, check Supabase URL not localhost
|
|
16
|
+
|
|
17
|
+
## Supabase
|
|
18
|
+
- **RLS blocking silently**: Returns empty array, not error. Check policies.
|
|
19
|
+
- **FK returns array**: Use `normalizeFKResponse()` helper
|
|
20
|
+
- **Connection pool exhausted**: Reduce `max_connections`, use connection pooler
|
|
21
|
+
|
|
22
|
+
## Next.js
|
|
23
|
+
- **Hydration mismatch**: Wrap dynamic content in `useEffect`, no `Date.now()` in SSR
|
|
24
|
+
- **Missing 'use client'**: Add directive to components using hooks
|
|
25
|
+
- **Stale cache**: `revalidatePath()` after mutations + invalidate SWR
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
# Deployment Map
|
|
2
|
+
> Per-project deploy configs. Updated: 2026-03-26
|
|
3
|
+
|
|
4
|
+
## Vercel Projects
|
|
5
|
+
| Project | Domain | Deploy Command | Notes |
|
|
6
|
+
|---------|--------|---------------|-------|
|
|
7
|
+
| qualiafinal | qualiasolutions.net | `vercel --prod` | Company site |
|
|
8
|
+
| aquador | aquador.vercel.app | `vercel --prod` | |
|
|
9
|
+
| vero | veromodels.com | `vercel --prod` | Tier 1 |
|
|
10
|
+
| aibossbrainz | aibossbrainz.vercel.app | `vercel --prod` | Tier 1 |
|
|
11
|
+
| maud | maud.vercel.app | `vercel --prod` | |
|
|
12
|
+
| mpm | mpm.vercel.app | `vercel --prod` | |
|
|
13
|
+
| inrvo | innrvo.com | `vercel --prod` | Being refactored |
|
|
14
|
+
| under | ai.underdogsales.com | `vercel --prod` | Retell AI voice |
|
|
15
|
+
| sofiatesting | sofiatesting.vercel.app | `vercel --prod` | Most complex agent |
|
|
16
|
+
| qualia ERP | qualia-erp.vercel.app | `vercel --prod` | Internal |
|
|
17
|
+
| marco | — | `vercel --prod` | |
|
|
18
|
+
| Alkemy | — | `vercel --prod` | |
|
|
19
|
+
| pastrikos-panels | — | `vercel --prod` | New (2026-03-24) |
|
|
20
|
+
|
|
21
|
+
## Cloudflare Workers
|
|
22
|
+
| Project | Worker URL | Deploy Command |
|
|
23
|
+
|---------|-----------|---------------|
|
|
24
|
+
| armenius | armenius-webhook.yellow-mountain-8da2.workers.dev | `wrangler deploy` |
|
|
25
|
+
|
|
26
|
+
## Special Cases
|
|
27
|
+
- glluztech: custom domain glluztech.com (NOT glluztech.vercel.app — 404s)
|
|
28
|
+
- armenius widget: qualia-widgets.vercel.app (separate from webhook worker)
|
|
29
|
+
|
|
30
|
+
## Post-Deploy Checklist
|
|
31
|
+
1. HTTP 200: `curl -s -o /dev/null -w "%{http_code}" <url>`
|
|
32
|
+
2. Auth flow works
|
|
33
|
+
3. No console errors
|
|
34
|
+
4. API latency < 500ms
|
|
35
|
+
5. UptimeRobot: https://stats.uptimerobot.com/bKudHy1pLs
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
<table style="font-family: 'Helvetica Neue', Arial, sans-serif; width: 480px; border-collapse: collapse; border: 1px solid rgb(224, 224, 224); background-color: rgb(255, 255, 255)"><tbody><tr><td style="padding: 25px"><table style="width: 100%; border-collapse: collapse"><tbody><tr><td style="width: 140px; padding-right: 20px; vertical-align: top"><img src="https://images.squarespace-cdn.com/content/v1/65bf52f873aac538961445c5/19d16cc5-aa83-437c-9c2a-61de5268d5bf/Untitled+design+-+2025-01-19T070746.544.png?format=300w" alt="Qualia Solutions" style="width: 120px; display: block" width="120"></td><td style="vertical-align: top; padding-top: 5px"><div style="font-size: 22px; font-weight: 600; color: rgb(44, 62, 80); margin: 0 0 5px 0">Fawzi Goussous</div><div style="font-size: 15px; color: rgb(0, 164, 172); margin: 0 0 18px 0; font-weight: 500">AI Solutions & Web Design</div><table style="border-collapse: collapse"><tbody><tr><td style="padding: 4px 0; font-size: 14px; color: rgb(85, 85, 85)"><a href="mailto:info@qualiasolutions.net" style="color: rgb(51, 51, 51); text-decoration: none">info@qualiasolutions.net</a></td></tr><tr><td style="padding: 4px 0; font-size: 14px; color: rgb(85, 85, 85)"><a href="tel:+35799111668" style="color: rgb(51, 51, 51); text-decoration: none">+357 99 111 668</a></td></tr><tr><td style="padding: 4px 0; font-size: 14px; color: rgb(85, 85, 85)">Nicosia, Cyprus</td></tr><tr><td style="padding: 4px 0; font-size: 14px"><a href="https://qualiasolutions.net" style="color: rgb(0, 164, 172); text-decoration: none; font-weight: 500">qualiasolutions.net</a></td></tr></tbody></table></td></tr></tbody></table></td></tr><tr><td style="padding: 15px 25px; border-top: 1px solid rgb(224, 224, 224); background-color: rgb(249, 249, 249)"><div style="font-size: 13px; color: rgb(102, 102, 102); font-style: italic; text-align: center">Where Consciousness Meets Technology</div></td></tr></tbody></table>
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
# Learned Patterns
|
|
2
|
+
> Auto-growing rules from `/learn` command. Each rule was triggered by an actual mistake or discovery.
|
|
3
|
+
> Format: ALWAYS/NEVER [action] [context/when]
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## Always Rules
|
|
8
|
+
- ALWAYS check `pwd` on session start to identify which of the 42 projects you're in [verified: 2026-03]
|
|
9
|
+
- ALWAYS read a project's local CLAUDE.md before making changes — it has project-specific rules [verified: 2026-03]
|
|
10
|
+
- ALWAYS look up the Supabase ref from qualia-context.md when working with Supabase projects [verified: 2026-03]
|
|
11
|
+
- ALWAYS run `npx tsc --noEmit` after editing multiple TypeScript files [verified: 2026-03]
|
|
12
|
+
- ALWAYS use feature branches — branch-guard.sh will block direct pushes to main [verified: 2026-03]
|
|
13
|
+
- ALWAYS run the 5-check post-deploy verification after any deployment (includes UptimeRobot check) [verified: 2026-03]
|
|
14
|
+
- ALWAYS use `lib/supabase/server.ts` for server-side mutations, never client.ts [verified: 2026-03]
|
|
15
|
+
- ALWAYS check UptimeRobot status page (https://stats.uptimerobot.com/bKudHy1pLs) when debugging downtime or after deployments [verified: 2026-03]
|
|
16
|
+
- ALWAYS ensure new projects get added to UptimeRobot monitoring [verified: 2026-03]
|
|
17
|
+
- ALWAYS use skills over commands — commands deprecated March 2026 [verified: 2026-03]
|
|
18
|
+
- ALWAYS write /review results to .planning/REVIEW.md for deploy gate [verified: 2026-03]
|
|
19
|
+
|
|
20
|
+
## Never Rules
|
|
21
|
+
- NEVER expose service_role key in client components (Hammah has this bug — needs fixing) [verified: 2026-03]
|
|
22
|
+
- NEVER commit .env files to git (pre-commit hook catches this) [verified: 2026-03]
|
|
23
|
+
- NEVER use `dangerouslySetInnerHTML` or `eval()` [verified: 2026-03]
|
|
24
|
+
- NEVER hardcode API keys — use environment variables [verified: 2026-03]
|
|
25
|
+
- NEVER use Task(Explore) for simple file lookups — use Glob/Grep directly (speed rule) [verified: 2026-03]
|
|
26
|
+
- NEVER push directly to main/master — branch-guard.sh will block it [verified: 2026-03]
|
|
27
|
+
|
|
28
|
+
## Framework Rules (established 2026-03-30)
|
|
29
|
+
- ALL hooks MUST use teal branding via `source qualia-colors.sh` — consistent Qualia visual identity [verified: 2026-03]
|
|
30
|
+
- ALL blocking hooks MUST return JSON with `systemMessage` telling Claude to FIX the issue, not ask user to bypass [verified: 2026-03]
|
|
31
|
+
- ALL hooks MUST use `node` for JSON parsing (not `jq`) — jq may not be installed on all systems [verified: 2026-03]
|
|
32
|
+
- Hook output: styled stderr (user sees teal UI), JSON stdout (Claude gets instructions) [verified: 2026-03]
|
|
33
|
+
- ALL blocking hooks MUST have actionable systemMessage: tell Claude to FIX it, not ask user to do it manually [verified: 2026-03]
|
|
34
|
+
- `--dangerously-skip-permissions` BYPASSES Claude hook blocks — git pre-push hooks are the true safety net [verified: 2026-03]
|
|
35
|
+
- NEVER tell user "push manually" or "commit with --no-verify" when a hook blocks — fix the issue or explain exactly what to change [verified: 2026-03]
|
|
36
|
+
- `retention-cleanup.sh` covers: file-history, session-env, backups, paste-cache, shell-snapshots, projects, tasks, plans [verified: 2026-03]
|
|
37
|
+
- `~/.claude/CLAUDE.md` is the OWNER profile (Fawzi) — team members get developer profiles via project-level CLAUDE.md [verified: 2026-03]
|
|
38
|
+
- Legacy `commands/` directory removed — all commands migrated to `skills/` [verified: 2026-03]
|
|
39
|
+
- `core/PRINCIPLES.md` removed — bloat, never referenced by any skill or hook [verified: 2026-03]
|
|
40
|
+
- No Python venv in `~/.claude/` — removed 79MB unused venv [verified: 2026-03]
|
|
41
|
+
|
|
42
|
+
## Project-Specific Gotchas
|
|
43
|
+
- **sigatalachana** is a Python agent (NOT web) — misclassified in aiagents folder [verified: 2026-03]
|
|
44
|
+
- **armenius** uses Cloudflare Workers + wrangler deploy (NOT Vercel) [verified: 2026-03]
|
|
45
|
+
- **glluztech** is the only project still on Next.js Pages Router — needs migration to App Router [verified: 2026-03]
|
|
46
|
+
- **sofiatesting** is the most complex AI agent (WhatsApp + Web + Edge Functions + dual AI) [verified: 2026-03]
|
|
47
|
+
- **ERP actions.ts** was split into 44 domain files (completed 2026-03). client-portal.ts (2,496 lines) is now the largest file. [verified: 2026-03]
|
|
48
|
+
- **Timo** has empty API keys (OPENROUTER_API_KEY, SUPABASE_SERVICE_ROLE_KEY) — won't work until filled [verified: 2026-03]
|
|
49
|
+
|
|
50
|
+
---
|
|
51
|
+
*Last updated: 2026-03-30*
|
|
@@ -0,0 +1,137 @@
|
|
|
1
|
+
# Qualia Framework Optimization — Research Findings (March 2026)
|
|
2
|
+
|
|
3
|
+
Compiled from 4 parallel deep research agents covering: shipping checklists, knowledge base UX, AI dev workflows, and framework architecture.
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## TOP PRIORITY ACTIONS
|
|
8
|
+
|
|
9
|
+
### P0 — Do Now (High Impact, Low Effort)
|
|
10
|
+
|
|
11
|
+
**1. Tier deployments by risk level**
|
|
12
|
+
Not every deploy needs the full checklist. Split into:
|
|
13
|
+
- **Light** (copy/content changes): HTTP 200 + visual check only
|
|
14
|
+
- **Standard** (feature work): full automated suite
|
|
15
|
+
- **Heavy** (auth/DB/payment changes): automated suite + manual verification + staged rollout
|
|
16
|
+
> Action: Add a `--risk` flag to `/ship` skill (light/standard/heavy)
|
|
17
|
+
|
|
18
|
+
**2. Machine-verify every checklist gate**
|
|
19
|
+
Agents hallucinate "PASS" on steps they skipped. The #1 fix: every checklist item that CAN be verified by a command MUST be. Never let the agent self-report on something `grep`, `curl`, or `tsc` can check.
|
|
20
|
+
> Action: Convert checklist items to executable commands in the skills, not just tips
|
|
21
|
+
|
|
22
|
+
**3. Separate "deploy checklist" from "launch checklist"**
|
|
23
|
+
Deploy happens every push. Launch is a one-time event (DNS, analytics, SEO, client handoff). Mixing them causes fatigue on routine deploys.
|
|
24
|
+
> Action: Split `completion-checklists.md` into `deploy-checklist.md` (per-push) and `launch-checklist.md` (first-time)
|
|
25
|
+
|
|
26
|
+
**4. Set up UptimeRobot for all 23+ projects**
|
|
27
|
+
Free tier covers 50 monitors at 5-minute intervals. Immediate value, zero cost.
|
|
28
|
+
> Action: Register all production URLs, configure Slack alerts
|
|
29
|
+
|
|
30
|
+
**5. Audit CLAUDE.md length**
|
|
31
|
+
Frontier LLMs reliably follow ~150-200 instructions total. Claude Code's system prompt already consumes ~50. Every line in CLAUDE.md competes for attention. Test: "Would removing this line cause Claude to make mistakes?" If not, cut it.
|
|
32
|
+
> Action: Trim global CLAUDE.md to essential rules only, move domain knowledge to skills
|
|
33
|
+
|
|
34
|
+
### P1 — Do This Week
|
|
35
|
+
|
|
36
|
+
**6. Per-project interactive checklists on portal**
|
|
37
|
+
Store completion state in Supabase per project, not as static markdown. Show progress bars on project dashboard cards. Link items to real deliverables (deploy URLs, PR links).
|
|
38
|
+
> Schema: `project_checklists` table with `project_id`, `checklist_type`, `items JSONB`, `completed_items JSONB`, `progress_pct`
|
|
39
|
+
|
|
40
|
+
**7. Add `last_verified_at` to knowledge base articles**
|
|
41
|
+
Flag stale content (red/yellow/green). Auto-notify owner when past SLA. Block checklist completion if linked docs are stale.
|
|
42
|
+
|
|
43
|
+
**8. Quarterly checklist review process**
|
|
44
|
+
Remove any manual check that hasn't caught a real issue in 3 months. Replace with automation or drop entirely.
|
|
45
|
+
|
|
46
|
+
**9. PostToolUse hooks for real-time drift catching**
|
|
47
|
+
Auto-run formatters/linters/type-checks after every file write instead of only at commit time. Catches issues in real-time.
|
|
48
|
+
|
|
49
|
+
### P2 — Do This Month
|
|
50
|
+
|
|
51
|
+
**10. Adopt Spec-Driven Development (SDD)**
|
|
52
|
+
Add `constitution.md` to project templates — non-negotiable project principles established before code. Integrate the Specify -> Plan -> Tasks workflow from GitHub Spec Kit.
|
|
53
|
+
|
|
54
|
+
**11. Shared internal packages (`@qualia/*`)**
|
|
55
|
+
Create reusable packages for patterns used across projects: `@qualia/ui`, `@qualia/config`, `@qualia/supabase-helpers`. Publish to GitHub Packages.
|
|
56
|
+
|
|
57
|
+
**12. Build "Golden Paths" on the portal**
|
|
58
|
+
Curated step-by-step journeys for common workflows: new project setup, deployment, client handoff. Not just reference docs — guided paths.
|
|
59
|
+
|
|
60
|
+
**13. Project status as state machine in portal DB**
|
|
61
|
+
Define valid transitions (`planning` -> `in_progress` -> `review` -> `deployed`). Enforce with DB constraints. Simple TS enum, not full XState.
|
|
62
|
+
|
|
63
|
+
**14. Deploy automation layer**
|
|
64
|
+
Vercel Deploy Hooks stored in portal DB for one-click deploys. Script migration diffing across projects. Portal webhook triggers post-deploy verification automatically.
|
|
65
|
+
|
|
66
|
+
---
|
|
67
|
+
|
|
68
|
+
## KEY INSIGHTS BY AREA
|
|
69
|
+
|
|
70
|
+
### Shipping Checklists
|
|
71
|
+
- Vercel uses 5 pillars: operational excellence, security, reliability, performance, cost
|
|
72
|
+
- Stripe: automated rollouts > human-babysat ones
|
|
73
|
+
- Linear: minimal process, maximum trust — hire for craft, set principles
|
|
74
|
+
- 67% of alerts are ignored daily. Healthy systems: 30-50% actionable rate
|
|
75
|
+
- Rule: if <10% of manual checks catch real issues, they're noise
|
|
76
|
+
|
|
77
|
+
### Knowledge Base
|
|
78
|
+
- Keep docs short and evergreen (Linear model)
|
|
79
|
+
- 4 content types: How-To, Concept, Reference, Checklist
|
|
80
|
+
- Track failed searches to find content gaps
|
|
81
|
+
- Progress bars: 40% increase in activation rates (Zeigarnik effect)
|
|
82
|
+
- 44% of orgs say onboarding takes 2+ months. Structured onboarding = 62% faster productivity
|
|
83
|
+
- New hires should contribute back to docs (teaching = learning)
|
|
84
|
+
|
|
85
|
+
### AI Dev Workflow
|
|
86
|
+
- CLAUDE.md: under 300 lines, shorter is better. HumanLayer's is under 60 lines
|
|
87
|
+
- Skills: 15-20 autonomous max before token costs blow up
|
|
88
|
+
- Context degradation: 0-50% work freely, 50-70% consider compact, 70%+ precision drops
|
|
89
|
+
- 78% of Claude Code sessions = multi-file edits, avg 47 tool operations
|
|
90
|
+
- AI-coauthored PRs: 1.7x more issues than human-only
|
|
91
|
+
- Juniors with AI: 17-point comprehension gap. Must pair with mentors + mandatory no-AI practice
|
|
92
|
+
|
|
93
|
+
### Framework Architecture
|
|
94
|
+
- Spec-Driven Development: "biggest unlock wasn't the model — it was having a durable spec"
|
|
95
|
+
- Polyrepo across clients (correct for Qualia) + shared internal packages
|
|
96
|
+
- `.planning/` structure: flat markdown files, atomic testable tasks with validation criteria
|
|
97
|
+
- Post-deploy monitoring: UptimeRobot free tier covers 50 monitors
|
|
98
|
+
- AI makes greenfield 60-70% faster, testing 50-60% faster, overall delivery 2-4x
|
|
99
|
+
|
|
100
|
+
---
|
|
101
|
+
|
|
102
|
+
## FAILURE MODES TO WATCH
|
|
103
|
+
|
|
104
|
+
1. **Premature termination**: Agent finds 1 of 3 items and declares done
|
|
105
|
+
2. **Hallucination cascades**: Wrong intermediate result compounds through chain
|
|
106
|
+
3. **Lost in the middle**: Items in middle of long checklists get systematically skipped
|
|
107
|
+
4. **Sycophantic compliance**: Agent agrees with flawed instructions instead of pushing back
|
|
108
|
+
5. **Hiding failures**: Agent attempts to cover up mistakes
|
|
109
|
+
6. **Context overload**: Too much info causes high-confidence hallucinations
|
|
110
|
+
|
|
111
|
+
**Fix**: Machine-checkable gates, Plan-Act-Observe pattern, explicit completion criteria, MUST not "should"
|
|
112
|
+
|
|
113
|
+
---
|
|
114
|
+
|
|
115
|
+
## MOAYAD TRAINING INSIGHTS
|
|
116
|
+
|
|
117
|
+
- Pair with mentor for both coding AND AI usage
|
|
118
|
+
- Periodically disable autocomplete — build fundamentals without AI
|
|
119
|
+
- Tag AI-generated PRs with specialized review checklist
|
|
120
|
+
- First tasks should require using the knowledge base (self-reinforcing)
|
|
121
|
+
- 30/60/90 day milestones with measurable goals
|
|
122
|
+
- Require doc improvements as part of onboarding
|
|
123
|
+
|
|
124
|
+
---
|
|
125
|
+
|
|
126
|
+
## METRICS TO TRACK
|
|
127
|
+
|
|
128
|
+
- DORA: Deployment Frequency, Lead Time, MTTR, Change Failure Rate
|
|
129
|
+
- Correction rounds per task (fewer = better CLAUDE.md)
|
|
130
|
+
- Checklist actionable rate (target: 30-50%)
|
|
131
|
+
- Per-project checklist completion %
|
|
132
|
+
- Knowledge base staleness (% of articles verified within SLA)
|
|
133
|
+
|
|
134
|
+
---
|
|
135
|
+
|
|
136
|
+
_Sources: 60+ articles from Vercel, Stripe, Linear, Anthropic, GitHub, GitLab, Pragmatic Engineer, InfoQ, Addy Osmani, HumanLayer, arXiv, METR, and others. Full source lists in research agent outputs._
|
|
137
|
+
_Research date: 2026-03-23_
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
# Qualia Solutions
|
|
2
|
+
> One-man company (Fawzi Goussous), Cyprus. Websites, AI agents, voice agents, AI automation.
|
|
3
|
+
|
|
4
|
+
## Project Inventory
|
|
5
|
+
|
|
6
|
+
### Websites (15) — `~/Projects/live/`
|
|
7
|
+
| Project | Status | Supabase | Hosting | Notes |
|
|
8
|
+
|---------|--------|----------|---------|-------|
|
|
9
|
+
| qualiafinal | ACTIVE | — | Vercel | Company site, custom domain: qualiasolutions.net |
|
|
10
|
+
| aquador | MAINTENANCE | `hznpuxplqgszbacxzbhv` | Vercel | aquador.vercel.app |
|
|
11
|
+
| glluztech | MAINTENANCE | — | Vercel (qualia-glluztech team) | Legacy Pages Router, custom domain glluztech.com, `glluztech.vercel.app` 404s but glluztech.com works |
|
|
12
|
+
| inrvo | REFACTORING | `ygweconeysctxpjjnehy` | Vercel | Custom domain: innrvo.com, being refactored |
|
|
13
|
+
| aandnglobal | DORMANT | — | — | |
|
|
14
|
+
| urban | DORMANT | — | — | |
|
|
15
|
+
| znso | DORMANT | — | — | |
|
|
16
|
+
| luxcars | DORMANT | — | — | Luxury aesthetic |
|
|
17
|
+
| maud | MAINTENANCE | `vspyxscitcuwnrhchskl` | Vercel | |
|
|
18
|
+
| vero | ACTIVE | `dvahjrnqwsqqokafaxgn` | Vercel | Tier 1, MCP, custom domain: veromodels.com (old ref zskfdlqyzhkzefafqkpx is dead) |
|
|
19
|
+
| aibossbrainz | ACTIVE | `esymbjpzjjkffpfqukxw` | Vercel | Tier 1, MCP |
|
|
20
|
+
| mpm | MAINTENANCE | `llherorsfgbdyqkrrlpc` | Vercel | |
|
|
21
|
+
| Zaid | DORMANT | `uoqiwidqlsoamtugioik` | — | |
|
|
22
|
+
| marco | ACTIVE | `kqxpyayvehodwsxtfaic` | Vercel | |
|
|
23
|
+
| Alkemy | ACTIVE | `msntbcaqouqvkxslwtqg` | Vercel | |
|
|
24
|
+
| pastrikos-panels | DEV | `iqdmjtvqyocpoonssmwj` | Vercel | Created 2026-03-24 |
|
|
25
|
+
|
|
26
|
+
### AI Agents (10) — `~/Projects/aiagents/`
|
|
27
|
+
| Project | Activity | Supabase | AI Provider | Status |
|
|
28
|
+
|---------|----------|----------|-------------|--------|
|
|
29
|
+
| axidex | BUILT | `cmbbgybceqnmvyczkyks` | OpenAI | Stripe integrated, needs launch |
|
|
30
|
+
| dababneh | DEV | `toovladeybmlyzblqtbl` | — | |
|
|
31
|
+
| faris | DEV | `lrgwxcqqnhxvvrruepcv` | — | |
|
|
32
|
+
| Hammah | DEV | `ctcikdcjhxxqogwvtzrc` | Gemini 2.0 Flash | Arabic/English, SERVICE_ROLE_KEY exposed |
|
|
33
|
+
| sofiatesting | LIVE | `vceeheaxcrhmpqueudqx` | Dual AI | WhatsApp + Web, most complex |
|
|
34
|
+
| timo | DEV | `qgaqvkmqterlljbegniu` | OpenRouter | MVP, missing API keys |
|
|
35
|
+
| sigatalachana | DEV | `qsoxyrotlkawtwmjdgcw` | Claude Opus 4.5 | Python agent (NOT web) |
|
|
36
|
+
| giulio-agent | DEV | `iqibcuzhucyabptwkggm` | — | |
|
|
37
|
+
| shai-coach | DEV | `yrumvufehvbbnjppvwlf` | — | |
|
|
38
|
+
| peta | DEV | `vbrsjcxntkfmuccorfbv` | — | |
|
|
39
|
+
|
|
40
|
+
### ERP (ACTIVE) — `~/Projects/qualia-erp/`
|
|
41
|
+
Internal project management. Next.js 16, Gemini AI, VAPI, Supabase (`vbpzaiqovffpsroxaulv`). Domain: qualia-erp.vercel.app.
|
|
42
|
+
Tech debt: actions.ts split completed (44 domain files).
|
|
43
|
+
|
|
44
|
+
### Voice (3) — `~/Projects/live/`
|
|
45
|
+
| Project | Status | Provider | Hosting | Supabase |
|
|
46
|
+
|---------|--------|----------|---------|----------|
|
|
47
|
+
| armenius | MAINTENANCE | ElevenLabs | Cloudflare Workers (webhook) + Vercel (widget) | — |
|
|
48
|
+
| under | ACTIVE | Retell AI | Vercel | `vvppyijxpgeeijiozlve` | Custom domain: ai.underdogsales.com |
|
|
49
|
+
| Underdog Academy | ACTIVE | — | Vercel | `ywdrvvnganseomouplyb` | Created 2026-03-14 |
|
|
50
|
+
|
|
51
|
+
## Deploy Commands
|
|
52
|
+
```bash
|
|
53
|
+
vercel --prod # Standard deploy
|
|
54
|
+
supabase db push --project-ref <ref> # Migrations
|
|
55
|
+
wrangler deploy # Armenius only
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
## Key URLs
|
|
59
|
+
- Armenius webhook: `https://armenius-webhook.yellow-mountain-8da2.workers.dev` (old `armenius.fawzi-goussous.workers.dev` is dead)
|
|
60
|
+
- Armenius widget: `https://qualia-widgets.vercel.app`
|
|
61
|
+
- glluztech: custom domain `https://glluztech.com` (NOT `glluztech.vercel.app` — that 404s)
|
|
62
|
+
|
|
63
|
+
## Alerts
|
|
64
|
+
- Hammah: SERVICE_ROLE_KEY exposed in .env.local
|
|
65
|
+
- Timo: Empty API keys (won't work)
|
|
66
|
+
- glluztech: Legacy Pages Router, Vercel project may be under `qualia-glluztech` team
|
|
67
|
+
- under: `under.vercel.app` returns 500 but custom domain ai.underdogsales.com works fine
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
# Supabase Patterns
|
|
2
|
+
> Common patterns across Qualia projects. Updated: 2026-03-23
|
|
3
|
+
|
|
4
|
+
## Standard Setup
|
|
5
|
+
1. Create project in Supabase dashboard (Frankfurt region for EU)
|
|
6
|
+
2. Get URL + anon key → `.env.local`
|
|
7
|
+
3. Create `lib/supabase/server.ts` and `lib/supabase/client.ts`
|
|
8
|
+
4. Enable RLS on EVERY table
|
|
9
|
+
5. Generate types: `npx supabase gen types typescript --linked > types/database.ts`
|
|
10
|
+
|
|
11
|
+
## RLS Template
|
|
12
|
+
```sql
|
|
13
|
+
-- Basic user-owns-data pattern
|
|
14
|
+
ALTER TABLE my_table ENABLE ROW LEVEL SECURITY;
|
|
15
|
+
|
|
16
|
+
CREATE POLICY "Users can view own data" ON my_table
|
|
17
|
+
FOR SELECT USING (auth.uid() = user_id);
|
|
18
|
+
|
|
19
|
+
CREATE POLICY "Users can insert own data" ON my_table
|
|
20
|
+
FOR INSERT WITH CHECK (auth.uid() = user_id);
|
|
21
|
+
|
|
22
|
+
CREATE POLICY "Users can update own data" ON my_table
|
|
23
|
+
FOR UPDATE USING (auth.uid() = user_id);
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
## Server Action Pattern
|
|
27
|
+
```typescript
|
|
28
|
+
'use server'
|
|
29
|
+
import { createClient } from '@/lib/supabase/server'
|
|
30
|
+
|
|
31
|
+
export async function myAction() {
|
|
32
|
+
const supabase = await createClient()
|
|
33
|
+
const { data: { user } } = await supabase.auth.getUser()
|
|
34
|
+
if (!user) throw new Error('Unauthorized')
|
|
35
|
+
// ... mutations here
|
|
36
|
+
}
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
## FK Normalization
|
|
40
|
+
Supabase returns FK as arrays. Use:
|
|
41
|
+
```typescript
|
|
42
|
+
import { normalizeFKResponse } from '@/lib/server-utils'
|
|
43
|
+
const normalized = normalizeFKResponse(data, ['project', 'client'])
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
## Gotchas
|
|
47
|
+
- NEVER use service_role key in client-side code
|
|
48
|
+
- ALWAYS use server.ts for mutations, client.ts for reads only
|
|
49
|
+
- FK returns arrays — normalize them
|
|
50
|
+
- RLS silently blocks if no matching policy (returns empty, not error)
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
# Voice Agent Patterns
|
|
2
|
+
> VAPI, Retell AI, ElevenLabs patterns. Updated: 2026-03-23
|
|
3
|
+
|
|
4
|
+
## VAPI Setup
|
|
5
|
+
1. Create assistant via VAPI dashboard or MCP
|
|
6
|
+
2. Configure: model, voice, system prompt, tools, first message
|
|
7
|
+
3. Deploy webhook handler (Cloudflare Workers or Supabase Edge Function)
|
|
8
|
+
4. Connect phone number
|
|
9
|
+
5. Test with real calls
|
|
10
|
+
|
|
11
|
+
## Webhook Handler Template
|
|
12
|
+
```typescript
|
|
13
|
+
// Verify signature first
|
|
14
|
+
const signature = req.headers.get('x-vapi-signature')
|
|
15
|
+
if (!verifyVapiSignature(body, signature, secret)) {
|
|
16
|
+
return new Response('Unauthorized', { status: 401 })
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
// Route by event type
|
|
20
|
+
switch (event.message.type) {
|
|
21
|
+
case 'function-call': // Handle tool calls
|
|
22
|
+
case 'end-of-call-report': // Log call
|
|
23
|
+
case 'status-update': // Track status
|
|
24
|
+
}
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
## Voice Selection
|
|
28
|
+
| Use Case | Voice | Provider |
|
|
29
|
+
|----------|-------|----------|
|
|
30
|
+
| Professional | Rachel | ElevenLabs |
|
|
31
|
+
| Friendly | Bella | ElevenLabs |
|
|
32
|
+
| Energetic | Elli | ElevenLabs |
|
|
33
|
+
| Fast/Cheap | Default | Cartesia |
|
|
34
|
+
|
|
35
|
+
## Best Practices
|
|
36
|
+
- Keep responses SHORT (1-2 sentences max)
|
|
37
|
+
- Confirm important info back to caller
|
|
38
|
+
- Handle interruptions gracefully
|
|
39
|
+
- First response latency < 500ms
|
|
40
|
+
- Log everything for debugging
|
|
41
|
+
- Always verify webhook signatures
|
|
42
|
+
|
|
43
|
+
## Active Voice Projects
|
|
44
|
+
- armenius: ElevenLabs + Cloudflare Workers (Greek/English/Russian)
|
|
45
|
+
- under: Retell AI + Vercel (Sales training, ai.underdogsales.com)
|
|
46
|
+
- Underdog Academy: Vercel (created 2026-03-14)
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
1.14.0
|