[{"data":1,"prerenderedAt":468},["ShallowReactive",2],{"navigation_docs_en":3,"-en-development-ai-workflow-agents":191,"-en-development-ai-workflow-agents-surround":463},[4,61,127,171],{"title":5,"icon":6,"path":7,"stem":8,"children":9,"page":60},"Guide","i-lucide-book-open","\u002Fen\u002Fguide","en\u002F1.guide",[10,15,20,25,30,35,40,45,50,55],{"title":11,"path":12,"stem":13,"icon":14},"Introduction","\u002Fen\u002Fguide\u002Fintroduction","en\u002F1.guide\u002F01.introduction","i-lucide-house",{"title":16,"path":17,"stem":18,"icon":19},"Install the App","\u002Fen\u002Fguide\u002Finstallation","en\u002F1.guide\u002F02.installation","i-lucide-smartphone",{"title":21,"path":22,"stem":23,"icon":24},"Authentication","\u002Fen\u002Fguide\u002Fauth","en\u002F1.guide\u002F03.auth","i-lucide-lock",{"title":26,"path":27,"stem":28,"icon":29},"Wallets","\u002Fen\u002Fguide\u002Fwallets","en\u002F1.guide\u002F04.wallets","i-lucide-wallet",{"title":31,"path":32,"stem":33,"icon":34},"Categories","\u002Fen\u002Fguide\u002Fcategories","en\u002F1.guide\u002F05.categories","i-lucide-tags",{"title":36,"path":37,"stem":38,"icon":39},"Transactions","\u002Fen\u002Fguide\u002Ftransactions","en\u002F1.guide\u002F06.transactions","i-lucide-receipt",{"title":41,"path":42,"stem":43,"icon":44},"Transfers","\u002Fen\u002Fguide\u002Ftransfers","en\u002F1.guide\u002F07.transfers","i-lucide-arrow-left-right",{"title":46,"path":47,"stem":48,"icon":49},"Statistics","\u002Fen\u002Fguide\u002Fstatistics","en\u002F1.guide\u002F08.statistics","i-lucide-bar-chart-3",{"title":51,"path":52,"stem":53,"icon":54},"Theme","\u002Fen\u002Fguide\u002Ftheme","en\u002F1.guide\u002F09.theme","i-lucide-palette",{"title":56,"path":57,"stem":58,"icon":59},"Settings","\u002Fen\u002Fguide\u002Fsettings","en\u002F1.guide\u002F10.settings","i-lucide-settings",false,{"title":62,"icon":63,"path":64,"stem":65,"children":66,"page":60},"Development","i-lucide-code","\u002Fen\u002Fdevelopment","en\u002F2.development",[67,72,77,82,87,92,97,102,122],{"title":68,"path":69,"stem":70,"icon":71},"Installation","\u002Fen\u002Fdevelopment\u002Finstallation","en\u002F2.development\u002F01.installation","i-lucide-download",{"title":73,"path":74,"stem":75,"icon":76},"Codebase Graph","\u002Fen\u002Fdevelopment\u002Funderstand-anything","en\u002F2.development\u002F02.understand-anything","i-lucide-network",{"title":78,"path":79,"stem":80,"icon":81},"Offline & PWA","\u002Fen\u002Fdevelopment\u002Foffline","en\u002F2.development\u002F03.offline","i-lucide-wifi-off",{"title":83,"path":84,"stem":85,"icon":86},"Data Migration History","\u002Fen\u002Fdevelopment\u002Fmigration","en\u002F2.development\u002F04.migration","i-lucide-database",{"title":88,"path":89,"stem":90,"icon":91},"Deployment","\u002Fen\u002Fdevelopment\u002Fdeployment","en\u002F2.development\u002F05.deployment","i-lucide-rocket",{"title":93,"path":94,"stem":95,"icon":96},"Testing","\u002Fen\u002Fdevelopment\u002Ftesting","en\u002F2.development\u002F06.testing","i-lucide-flask-conical",{"title":98,"path":99,"stem":100,"icon":101},"Date Utilities","\u002Fen\u002Fdevelopment\u002Fdate-utilities","en\u002F2.development\u002F07.date-utilities","i-lucide-calendar",{"title":103,"path":104,"stem":105,"children":106,"page":60},"Ai Workflow","\u002Fen\u002Fdevelopment\u002Fai-workflow","en\u002F2.development\u002F08.ai-workflow",[107,112,117],{"title":108,"path":109,"stem":110,"icon":111},"Overview","\u002Fen\u002Fdevelopment\u002Fai-workflow\u002Foverview","en\u002F2.development\u002F08.ai-workflow\u002F01.overview","i-lucide-bot",{"title":113,"path":114,"stem":115,"icon":116},"Agents","\u002Fen\u002Fdevelopment\u002Fai-workflow\u002Fagents","en\u002F2.development\u002F08.ai-workflow\u002F02.agents","i-lucide-users",{"title":118,"path":119,"stem":120,"icon":121},"Skills","\u002Fen\u002Fdevelopment\u002Fai-workflow\u002Fskills","en\u002F2.development\u002F08.ai-workflow\u002F03.skills","i-lucide-lightbulb",{"title":123,"path":124,"stem":125,"icon":126},"Troubleshooting","\u002Fen\u002Fdevelopment\u002Ftroubleshooting","en\u002F2.development\u002F09.troubleshooting","i-lucide-life-buoy",{"title":128,"icon":129,"path":130,"stem":131,"children":132,"page":60},"Reference","i-lucide-file-code","\u002Fen\u002Freference","en\u002F3.reference",[133,138,142,147,152,156,161,166],{"title":134,"path":135,"stem":136,"icon":137},"Architecture","\u002Fen\u002Freference\u002Farchitecture","en\u002F3.reference\u002F01.architecture","i-lucide-boxes",{"title":139,"path":140,"stem":141,"icon":44},"Transaction Types","\u002Fen\u002Freference\u002Ftransaction-types","en\u002F3.reference\u002F02.transaction-types",{"title":143,"path":144,"stem":145,"icon":146},"Sync","\u002Fen\u002Freference\u002Fsync","en\u002F3.reference\u002F03.sync","i-lucide-refresh-cw",{"title":148,"path":149,"stem":150,"icon":151},"Offline-first","\u002Fen\u002Freference\u002Foffline-first","en\u002F3.reference\u002F04.offline-first","i-lucide-list-ordered",{"title":153,"path":154,"stem":155,"icon":121},"Technical Decisions","\u002Fen\u002Freference\u002Ftech-decisions","en\u002F3.reference\u002F05.tech-decisions",{"title":157,"path":158,"stem":159,"icon":160},"Validation Strategy","\u002Fen\u002Freference\u002Fvalidation-strategy","en\u002F3.reference\u002F06.validation-strategy","i-lucide-shield-check",{"title":162,"path":163,"stem":164,"icon":165},"What Changed Since Firebase","\u002Fen\u002Freference\u002Ffirebase-migration","en\u002F3.reference\u002F07.firebase-migration","i-lucide-hamburger",{"title":167,"path":168,"stem":169,"icon":170},"Performance","\u002Fen\u002Freference\u002Fperformance","en\u002F3.reference\u002F08.performance","i-lucide-gauge",{"title":172,"icon":173,"path":174,"stem":175,"children":176,"page":60},"Premium","i-lucide-star","\u002Fen\u002Fpremium","en\u002F4.premium",[177,181,186],{"title":108,"path":178,"stem":179,"icon":180},"\u002Fen\u002Fpremium\u002Foverview","en\u002F4.premium\u002F01.overview","i-lucide-layers",{"title":182,"path":183,"stem":184,"icon":185},"Telegram Bot","\u002Fen\u002Fpremium\u002Ftelegram-bot","en\u002F4.premium\u002F02.telegram-bot","i-lucide-send",{"title":187,"path":188,"stem":189,"icon":190},"AI Chat","\u002Fen\u002Fpremium\u002Fai-chat","en\u002F4.premium\u002F03.ai-chat","i-lucide-sparkles",{"id":192,"title":113,"body":193,"description":454,"extension":455,"links":456,"meta":457,"navigation":458,"path":114,"seo":459,"stem":115,"__hash__":462},"docs_en\u002Fen\u002F2.development\u002F08.ai-workflow\u002F02.agents.md",{"type":194,"value":195,"toc":442},"minimark",[196,201,210,214,218,229,232,237,272,286,292,295,298,304,307,311,328,334,339,341,344,351,354,359,383,392,394,397,405,408,413,431,437],[197,198,200],"h2",{"id":199},"what-are-agents","What Are Agents",[202,203,204,205,209],"p",{},"Agents are specialized subprocesses that Claude delegates tasks to. Each agent has a focused role, specific tools it can use, and a model it runs on. They live in ",[206,207,208],"code",{},".claude\u002Fagents\u002F",".",[197,211,213],{"id":212},"available-agents","Available Agents",[215,216,217],"h3",{"id":217},"typescript-reviewer",[202,219,220,224,225,228],{},[221,222,223],"strong",{},"Model:"," Sonnet | ",[221,226,227],{},"Tools:"," Read, Grep, Glob, Bash",[202,230,231],{},"Reviews TypeScript code for type safety, async correctness, and Vue 3 patterns.",[202,233,234],{},[221,235,236],{},"Checks:",[238,239,240,247,254,257,263,266,269],"ul",{},[241,242,243,246],"li",{},[206,244,245],{},"any"," usage without justification",[241,248,249,250,253],{},"Non-null assertion abuse (",[206,251,252],{},"value!",")",[241,255,256],{},"Unhandled promise rejections",[241,258,259,262],{},[206,260,261],{},"shallowRef"," direct mutation (will not trigger reactivity)",[241,264,265],{},"Computed with side effects",[241,267,268],{},"Reactive destructuring (loses reactivity)",[241,270,271],{},"Missing return types on exports",[202,273,274,277,278,281,282,285],{},[221,275,276],{},"Runs first:"," ",[206,279,280],{},"vue-tsc --noEmit"," and ",[206,283,284],{},"pnpm lint",". Stops if either fails.",[202,287,288,291],{},[221,289,290],{},"When to use:"," after writing or modifying TypeScript or Vue files.",[293,294],"hr",{},[215,296,297],{"id":297},"code-reviewer",[202,299,300,224,302,228],{},[221,301,223],{},[221,303,227],{},[202,305,306],{},"General code review covering security, quality, Vue and Nuxt patterns, PowerSync\u002FSupabase patterns.",[202,308,309],{},[221,310,236],{},[238,312,313,316,319,322,325],{},[241,314,315],{},"Security: secrets, auth checks, input validation",[241,317,318],{},"Code quality: function size, nesting depth, dead code",[241,320,321],{},"Vue patterns: computed purity, reactive destructuring, Lazy prefix",[241,323,324],{},"PowerSync\u002FSupabase patterns: RLS policies + sync rules, client-generated UUID ids, optimistic write + rollback",[241,326,327],{},"Performance: bundle size, N+1 queries",[202,329,330,333],{},[221,331,332],{},"Output format:"," findings grouped by severity (CRITICAL, HIGH, MEDIUM, LOW) with a summary table and verdict (APPROVE, WARNING, BLOCK).",[202,335,336,338],{},[221,337,290],{}," after finishing a feature or before opening a PR.",[293,340],{},[215,342,343],{"id":343},"build-error-resolver",[202,345,346,224,348,350],{},[221,347,223],{},[221,349,227],{}," Read, Write, Edit, Bash, Grep, Glob",[202,352,353],{},"Fixes build and TypeScript errors with minimal diffs. No refactoring, no architecture changes.",[202,355,356],{},[221,357,358],{},"Handles:",[238,360,361,364,367,373,380],{},[241,362,363],{},"Type inference errors, missing types",[241,365,366],{},"Import and module resolution",[241,368,369,370,253],{},"Nuxt auto-import issues (",[206,371,372],{},"npx nuxi prepare",[241,374,375,376,379],{},"PowerSync schema mismatches (",[206,377,378],{},"AppSchema.ts",") + Supabase migration errors",[241,381,382],{},"Vue template type errors",[202,384,385,387,388,391],{},[221,386,290],{}," build broke, ",[206,389,390],{},"vue-tsc"," failing, need a quick fix.",[293,393],{},[215,395,396],{"id":396},"planner",[202,398,399,401,402,404],{},[221,400,223],{}," Opus | ",[221,403,227],{}," Read, Grep, Glob",[202,406,407],{},"Creates detailed implementation plans for complex features.",[202,409,410],{},[221,411,412],{},"Plan structure:",[414,415,416,419,422,425,428],"ol",{},[241,417,418],{},"Requirements analysis",[241,420,421],{},"Architecture review (affected components, stores, Supabase\u002FPowerSync data flow)",[241,423,424],{},"Step breakdown with file paths, dependencies, risks",[241,426,427],{},"Phased implementation (backend, store, UI)",[241,429,430],{},"Testing strategy",[202,432,433,436],{},[221,434,435],{},"Finapp specifics:"," considers offline support, optimistic UI, client-generated UUIDs, shallowRef stores, Supabase migrations + PowerSync sync rules, i18n, premium layer impact.",[202,438,439,441],{},[221,440,290],{}," before starting any non-trivial feature or refactoring.",{"title":443,"searchDepth":444,"depth":444,"links":445},"",2,[446,447],{"id":199,"depth":444,"text":200},{"id":212,"depth":444,"text":213,"children":448},[449,451,452,453],{"id":217,"depth":450,"text":217},3,{"id":297,"depth":450,"text":297},{"id":343,"depth":450,"text":343},{"id":396,"depth":450,"text":396},"Specialized AI subagents for code review, TypeScript review, planning, and build fixing.","md",null,{},{"icon":116},{"title":460,"description":461},"AI Agents","Claude Code agents configured for Finapp. TypeScript reviewer, code reviewer, build error resolver, planner.","fSbGKRbjvoPwFlgubJFhRG9EAMnFeLhzEO0noY72MaA",[464,466],{"title":108,"path":109,"stem":110,"description":465,"icon":111,"children":-1},"How Claude Code is configured for the Finapp project, agents and skills.",{"title":118,"path":119,"stem":120,"description":467,"icon":121,"children":-1},"On-demand guides for security review, TDD, Nuxt 4 patterns, and E2E testing.",1782114345791]