Installs a 3-layer Cursor-aligned agent pipeline so future agent
sessions can orient quickly and stay inside guard rails:
L1 — context for any agent reading the repo:
- AGENTS.md (top-level orientation, conventions, no-go zones)
- .cursor/rules/ (no-go-zones, api-routes, prisma, prisma-schema-map)
- .cursor/skills/ (add-api-route, add-prisma-model)
- docs/SCHEMA_MAP.md generated from prisma/schema.prisma
- scripts/generate-schema-map.ts (regenerate the map; wired up as
`npm run schema:map`)
L2 — subagent roles for the 9-stage idea-to-feature pipeline:
- .cursor/agents/role-*.md (conductor, architect, ia-architect,
design-system-auditor, implementer, reviewer, ux-reviewer,
a11y-auditor, doc-writer) with explicit multitask annotations.
L3 — pipeline scaffolding:
- .github/CODEOWNERS, PR template, and CI workflows (ci.yml,
preview-smoke.yml, visual-diff.yml, pr-health-rollup.yml).
Test job is intentionally disabled until Playwright is wired up.
- .convoys/ folder for per-feature run notes + scripts/log-convoy-event.sh.
- scripts/wt.sh worktree helper.
- src/lib/flags/index.ts simple env-driven feature flag wrapper.
- tests/smoke/app.smoke.spec.ts (Playwright smoke; excluded from
tsc until @playwright/test is installed — see tsconfig change).
Also writes .agent-context-manifest.yml so the sync-agent-context
skill can detect drift and offer selective updates from upstream.
Follow-ups (not in this commit):
- Install @playwright/test and re-enable the test job in ci.yml.
- Review .cursor/agents/role-*.md and trim any roles that don't
apply to this codebase.
Co-authored-by: Cursor <cursoragent@cursor.com>
75 lines
2.1 KiB
JSON
75 lines
2.1 KiB
JSON
{
|
|
"name": "echos-ocr",
|
|
"version": "0.1.0",
|
|
"private": true,
|
|
"scripts": {
|
|
"dev": "next dev",
|
|
"build": "npx prisma generate && next build",
|
|
"start": "next start",
|
|
"lint": "eslint",
|
|
"db:migrate": "npx prisma migrate dev",
|
|
"db:push": "npx prisma db push",
|
|
"db:studio": "npx prisma studio",
|
|
"schema:map": "npx tsx scripts/generate-schema-map.ts",
|
|
"postinstall": "npx prisma generate"
|
|
},
|
|
"dependencies": {
|
|
"@ai-sdk/gateway": "^3.0.66",
|
|
"@ai-sdk/openai-compatible": "^2.0.35",
|
|
"@auth/prisma-adapter": "^2.11.2",
|
|
"@aws-sdk/client-s3": "^3.1005.0",
|
|
"@aws-sdk/s3-request-presigner": "^3.1005.0",
|
|
"@base-ui/react": "^1.2.0",
|
|
"@getbrevo/brevo": "^5.0.4",
|
|
"@napi-rs/canvas": "^0.1.98",
|
|
"@prisma/adapter-pg": "^7.4.2",
|
|
"@prisma/client": "^7.4.2",
|
|
"@tanstack/react-table": "^8.21.3",
|
|
"@types/qrcode": "^1.5.6",
|
|
"@upstash/qstash": "^2.10.1",
|
|
"ai": "^6.0.116",
|
|
"basic-ftp": "^5.3.0",
|
|
"bcryptjs": "^3.0.3",
|
|
"class-variance-authority": "^0.7.1",
|
|
"clsx": "^2.1.1",
|
|
"cmdk": "^1.1.1",
|
|
"date-fns": "^4.1.0",
|
|
"dotenv": "^17.3.1",
|
|
"imapflow": "^1.2.18",
|
|
"lucide-react": "^0.577.0",
|
|
"mailparser": "^3.9.6",
|
|
"next": "16.1.6",
|
|
"next-auth": "^5.0.0-beta.31",
|
|
"next-themes": "^0.4.6",
|
|
"pdf-lib": "^1.17.1",
|
|
"pdfjs-dist": "^5.6.205",
|
|
"pg": "^8.20.0",
|
|
"prisma": "^7.4.2",
|
|
"qrcode": "^1.5.4",
|
|
"react": "^19.2.4",
|
|
"react-dom": "^19.2.4",
|
|
"recharts": "^3.8.1",
|
|
"rrule": "^2.8.1",
|
|
"shadcn": "^4.0.2",
|
|
"sharp": "^0.34.5",
|
|
"sonner": "^2.0.7",
|
|
"ssh2-sftp-client": "^12.1.1",
|
|
"tailwind-merge": "^3.5.0",
|
|
"tw-animate-css": "^1.4.0",
|
|
"zod": "^4.3.6"
|
|
},
|
|
"devDependencies": {
|
|
"@tailwindcss/postcss": "^4",
|
|
"@types/bcryptjs": "^2.4.6",
|
|
"@types/mailparser": "^3.4.6",
|
|
"@types/node": "^25.4.0",
|
|
"@types/pg": "^8.18.0",
|
|
"@types/react": "^19",
|
|
"@types/react-dom": "^19",
|
|
"@types/ssh2-sftp-client": "^9.0.6",
|
|
"eslint": "^9",
|
|
"eslint-config-next": "16.1.6",
|
|
"tailwindcss": "^4",
|
|
"typescript": "^5"
|
|
}
|
|
}
|