Before starting ANY task in this repo, ALL AI models MUST:
- Read
vault-index.md(symlink →~/KnowledgeOS/04_Projects/vijay-portfolio/index.md) - Read
vault-sessions.md(symlink →~/KnowledgeOS/04_Projects/vijay-portfolio/sessions.md) - Read
vault-past-mistakes.md(symlink →~/KnowledgeOS/04_Projects/vijay-portfolio/past-mistakes.md) - Follow all guardrails in
vault-past-mistakes.mdstrictly before touching any file
Vault Ritual: This project uses the global vault-ritual MCP protocol. Perform Session Start and Session End rituals via the vault MCP server pointing to 04_Projects/vijay-portfolio/.
Session End write contract (every task boundary):
sessions.md— alwaysindex.md— alwayspast-mistakes.md— if a lesson was learneddecisions.md— if a decision was madearchitecture.md— if project structure changed
- Vite + React 19 + TypeScript + Tailwind. Dev:
bun run dev(port 5173), build:bun run build, preview:bun run preview. - Lint/format:
bun run lint,bun run lint:fix,bun run format,bun run format:check. - Unit:
bun run test/bun run test:watch(Vitest). E2E:bun run test:e2e,bun run test:e2e:ui(Playwright). - Playwright starts dev server automatically (baseURL http://localhost:5173); config:
playwright.config.ts, tests ine2e/.
- Copy lives in
content/*.ts: personalInfo, experience, education, projects, impactMetrics, hireInfo, nowNext, skills, socialLinks, blog. Edit these, not inline strings in components. - Content/UX plan:
docs/portfolio-refresh-plan-merged.md. Portfolio = conversion-first, proof-led; no career break on site (resume only).
- E2E runs chromium, mobile (iPhone 12), tablet (iPad). Do not show "Career break" in Education UI; e2e asserts its absence.