[{"data":1,"prerenderedAt":960},["ShallowReactive",2],{"navigation:en":3,"\u002Fdocs\u002Ffireskills\u002Fgetting-started\u002Fstep-implement:en":311},[4],{"title":5,"path":6,"stem":7,"children":8,"icon":10},"Nuxfire Docs","\u002Fdocs","docs\u002F0.index",[9,11,152],{"title":5,"path":6,"stem":7,"icon":10},"i-lucide-layout-grid",{"title":12,"path":13,"stem":14,"children":15,"icon":151},"SaaS Starter Kit","\u002Fdocs\u002Fsaas-starter-kit","docs\u002F1.saas-starter-kit\u002F0.index",[16,19,63,129],{"title":17,"path":13,"stem":14,"icon":18},"What is the SaaS Starter Kit?","i-lucide-info",{"title":20,"icon":21,"hide":22,"path":23,"stem":24,"children":25,"page":62},"Getting Started","i-lucide-play",true,"\u002Fdocs\u002Fsaas-starter-kit\u002Fgetting-started","docs\u002F1.saas-starter-kit\u002F1.getting-started",[26,30,34,38,42,46,50,54,58],{"title":27,"path":28,"stem":29},"Quick Start","\u002Fdocs\u002Fsaas-starter-kit\u002Fgetting-started\u002Fquick-start","docs\u002F1.saas-starter-kit\u002F1.getting-started\u002F0.quick-start",{"title":31,"path":32,"stem":33},"Installation","\u002Fdocs\u002Fsaas-starter-kit\u002Fgetting-started\u002Finstallation","docs\u002F1.saas-starter-kit\u002F1.getting-started\u002F1.installation",{"title":35,"path":36,"stem":37},"Cloudflare Access","\u002Fdocs\u002Fsaas-starter-kit\u002Fgetting-started\u002Fcloudflare-access","docs\u002F1.saas-starter-kit\u002F1.getting-started\u002F2.cloudflare-access",{"title":39,"path":40,"stem":41},"Configuration","\u002Fdocs\u002Fsaas-starter-kit\u002Fgetting-started\u002Fconfiguration","docs\u002F1.saas-starter-kit\u002F1.getting-started\u002F3.configuration",{"title":43,"path":44,"stem":45},"Secrets","\u002Fdocs\u002Fsaas-starter-kit\u002Fgetting-started\u002Fsecrets","docs\u002F1.saas-starter-kit\u002F1.getting-started\u002F4.secrets",{"title":47,"path":48,"stem":49},"Environment Variables","\u002Fdocs\u002Fsaas-starter-kit\u002Fgetting-started\u002Fenvironment-variables","docs\u002F1.saas-starter-kit\u002F1.getting-started\u002F5.environment-variables",{"title":51,"path":52,"stem":53},"Deploy","\u002Fdocs\u002Fsaas-starter-kit\u002Fgetting-started\u002Fdeploy","docs\u002F1.saas-starter-kit\u002F1.getting-started\u002F6.deploy",{"title":55,"path":56,"stem":57},"Local Development","\u002Fdocs\u002Fsaas-starter-kit\u002Fgetting-started\u002Flocal-development","docs\u002F1.saas-starter-kit\u002F1.getting-started\u002F7.local-development",{"title":59,"path":60,"stem":61},"Project Structure","\u002Fdocs\u002Fsaas-starter-kit\u002Fgetting-started\u002Fproject-structure","docs\u002F1.saas-starter-kit\u002F1.getting-started\u002F8.project-structure",false,{"title":64,"icon":65,"hide":22,"path":66,"stem":67,"children":68,"page":62},"Features","i-lucide-box","\u002Fdocs\u002Fsaas-starter-kit\u002Ffeatures","docs\u002F1.saas-starter-kit\u002F2.features",[69,73,77,81,85,89,93,97,101,105,109,113,117,121,125],{"title":70,"path":71,"stem":72},"Authentication","\u002Fdocs\u002Fsaas-starter-kit\u002Ffeatures\u002Fauth","docs\u002F1.saas-starter-kit\u002F2.features\u002F1.auth",{"title":74,"path":75,"stem":76},"Rate Limiting","\u002Fdocs\u002Fsaas-starter-kit\u002Ffeatures\u002Frate-limiting","docs\u002F1.saas-starter-kit\u002F2.features\u002F10.rate-limiting",{"title":78,"path":79,"stem":80},"WebSockets","\u002Fdocs\u002Fsaas-starter-kit\u002Ffeatures\u002Fwebsockets","docs\u002F1.saas-starter-kit\u002F2.features\u002F11.websockets",{"title":82,"path":83,"stem":84},"Blog","\u002Fdocs\u002Fsaas-starter-kit\u002Ffeatures\u002Fblog","docs\u002F1.saas-starter-kit\u002F2.features\u002F14.blog",{"title":86,"path":87,"stem":88},"Documentation","\u002Fdocs\u002Fsaas-starter-kit\u002Ffeatures\u002Fdocumentation","docs\u002F1.saas-starter-kit\u002F2.features\u002F15.documentation",{"title":90,"path":91,"stem":92},"Analytics","\u002Fdocs\u002Fsaas-starter-kit\u002Ffeatures\u002Fanalytics","docs\u002F1.saas-starter-kit\u002F2.features\u002F16.analytics",{"title":94,"path":95,"stem":96},"Platform Admin Console","\u002Fdocs\u002Fsaas-starter-kit\u002Ffeatures\u002Fplatform-admin","docs\u002F1.saas-starter-kit\u002F2.features\u002F17.platform-admin",{"title":98,"path":99,"stem":100},"Database","\u002Fdocs\u002Fsaas-starter-kit\u002Ffeatures\u002Fdatabase","docs\u002F1.saas-starter-kit\u002F2.features\u002F2.database",{"title":102,"path":103,"stem":104},"Payments & Billing","\u002Fdocs\u002Fsaas-starter-kit\u002Ffeatures\u002Fpayments","docs\u002F1.saas-starter-kit\u002F2.features\u002F3.payments",{"title":106,"path":107,"stem":108},"Emails","\u002Fdocs\u002Fsaas-starter-kit\u002Ffeatures\u002Femails","docs\u002F1.saas-starter-kit\u002F2.features\u002F4.emails",{"title":110,"path":111,"stem":112},"Notifications","\u002Fdocs\u002Fsaas-starter-kit\u002Ffeatures\u002Fnotifications","docs\u002F1.saas-starter-kit\u002F2.features\u002F5.notifications",{"title":114,"path":115,"stem":116},"Role-Based Access Control","\u002Fdocs\u002Fsaas-starter-kit\u002Ffeatures\u002Frbac","docs\u002F1.saas-starter-kit\u002F2.features\u002F6.rbac",{"title":118,"path":119,"stem":120},"Async Jobs","\u002Fdocs\u002Fsaas-starter-kit\u002Ffeatures\u002Fasync-jobs","docs\u002F1.saas-starter-kit\u002F2.features\u002F7.async-jobs",{"title":122,"path":123,"stem":124},"Storage","\u002Fdocs\u002Fsaas-starter-kit\u002Ffeatures\u002Fstorage","docs\u002F1.saas-starter-kit\u002F2.features\u002F8.storage",{"title":126,"path":127,"stem":128},"Internationalization","\u002Fdocs\u002Fsaas-starter-kit\u002Ffeatures\u002Finternationalization","docs\u002F1.saas-starter-kit\u002F2.features\u002F9.internationalization",{"title":130,"icon":131,"path":132,"stem":133,"children":134,"page":62},"Concepts","i-lucide-graduation-cap","\u002Fdocs\u002Fsaas-starter-kit\u002Fconcepts","docs\u002F1.saas-starter-kit\u002F3.concepts",[135,139,143,147],{"title":136,"path":137,"stem":138},"Technology Stack","\u002Fdocs\u002Fsaas-starter-kit\u002Fconcepts\u002Ftech-stack","docs\u002F1.saas-starter-kit\u002F3.concepts\u002F0.tech-stack",{"title":140,"path":141,"stem":142},"SST.dev","\u002Fdocs\u002Fsaas-starter-kit\u002Fconcepts\u002Fsst","docs\u002F1.saas-starter-kit\u002F3.concepts\u002F1.sst",{"title":144,"path":145,"stem":146},"NuxtHub","\u002Fdocs\u002Fsaas-starter-kit\u002Fconcepts\u002Fnuxt-hub","docs\u002F1.saas-starter-kit\u002F3.concepts\u002F2.nuxt-hub",{"title":148,"path":149,"stem":150},"Design System & Branding","\u002Fdocs\u002Fsaas-starter-kit\u002Fconcepts\u002Fdesign-system","docs\u002F1.saas-starter-kit\u002F3.concepts\u002F3.design-system","i-lucide-zap",{"title":153,"path":154,"stem":155,"children":156,"icon":159},"Fireskills","\u002Fdocs\u002Ffireskills","docs\u002F2.fireskills\u002F0.index",[157,160,219,249,275,293],{"title":158,"path":154,"stem":155,"icon":159},"What is Fireskills?","i-lucide-flame",{"title":20,"icon":21,"hide":22,"path":161,"stem":162,"children":163,"page":62},"\u002Fdocs\u002Ffireskills\u002Fgetting-started","docs\u002F2.fireskills\u002F1.getting-started",[164,167,171,175,179,183,187,191,195,199,203,207,211,215],{"title":27,"path":165,"stem":166},"\u002Fdocs\u002Ffireskills\u002Fgetting-started\u002Fquick-start","docs\u002F2.fireskills\u002F1.getting-started\u002F00.quick-start",{"title":168,"path":169,"stem":170},"Workflow & Governance","\u002Fdocs\u002Ffireskills\u002Fgetting-started\u002Fworkflow","docs\u002F2.fireskills\u002F1.getting-started\u002F01.workflow",{"title":172,"path":173,"stem":174},"Project Context","\u002Fdocs\u002Ffireskills\u002Fgetting-started\u002Fproject-context","docs\u002F2.fireskills\u002F1.getting-started\u002F02.project-context",{"title":176,"path":177,"stem":178},"Step 0: Setup","\u002Fdocs\u002Ffireskills\u002Fgetting-started\u002Fstep-setup","docs\u002F2.fireskills\u002F1.getting-started\u002F03.step-setup",{"title":180,"path":181,"stem":182},"Step 1: Inbox","\u002Fdocs\u002Ffireskills\u002Fgetting-started\u002Fstep-inbox","docs\u002F2.fireskills\u002F1.getting-started\u002F04.step-inbox",{"title":184,"path":185,"stem":186},"Step 2: Backlog","\u002Fdocs\u002Ffireskills\u002Fgetting-started\u002Fstep-backlog","docs\u002F2.fireskills\u002F1.getting-started\u002F05.step-backlog",{"title":188,"path":189,"stem":190},"Step 3: Specify","\u002Fdocs\u002Ffireskills\u002Fgetting-started\u002Fstep-specify","docs\u002F2.fireskills\u002F1.getting-started\u002F06.step-specify",{"title":192,"path":193,"stem":194},"Step 4: Validate","\u002Fdocs\u002Ffireskills\u002Fgetting-started\u002Fstep-validate","docs\u002F2.fireskills\u002F1.getting-started\u002F07.step-validate",{"title":196,"path":197,"stem":198},"Step 5: Tasks","\u002Fdocs\u002Ffireskills\u002Fgetting-started\u002Fstep-tasks","docs\u002F2.fireskills\u002F1.getting-started\u002F08.step-tasks",{"title":200,"path":201,"stem":202},"Step 6: TDD\u002FBDD","\u002Fdocs\u002Ffireskills\u002Fgetting-started\u002Fstep-tdd-bdd","docs\u002F2.fireskills\u002F1.getting-started\u002F09.step-tdd-bdd",{"title":204,"path":205,"stem":206},"Step 7: Implement","\u002Fdocs\u002Ffireskills\u002Fgetting-started\u002Fstep-implement","docs\u002F2.fireskills\u002F1.getting-started\u002F10.step-implement",{"title":208,"path":209,"stem":210},"Step 8: Documentator","\u002Fdocs\u002Ffireskills\u002Fgetting-started\u002Fstep-documentator","docs\u002F2.fireskills\u002F1.getting-started\u002F11.step-documentator",{"title":212,"path":213,"stem":214},"Late Changes","\u002Fdocs\u002Ffireskills\u002Fgetting-started\u002Flate-changes","docs\u002F2.fireskills\u002F1.getting-started\u002F12.late-changes",{"title":216,"path":217,"stem":218},"Other Entry Points","\u002Fdocs\u002Ffireskills\u002Fgetting-started\u002Fother-entry-points","docs\u002F2.fireskills\u002F1.getting-started\u002F13.other-entry-points",{"title":220,"icon":221,"hide":22,"path":222,"stem":223,"children":224,"page":62},"Methodology","i-lucide-git-branch","\u002Fdocs\u002Ffireskills\u002Fmethodology","docs\u002F2.fireskills\u002F2.methodology",[225,229,233,237,241,245],{"title":226,"path":227,"stem":228},"The Three Acts","\u002Fdocs\u002Ffireskills\u002Fmethodology\u002Fthree-acts","docs\u002F2.fireskills\u002F2.methodology\u002F0.three-acts",{"title":230,"path":231,"stem":232},"The Three Gates","\u002Fdocs\u002Ffireskills\u002Fmethodology\u002Fthree-gates","docs\u002F2.fireskills\u002F2.methodology\u002F1.three-gates",{"title":234,"path":235,"stem":236},"The Canonical Spec","\u002Fdocs\u002Ffireskills\u002Fmethodology\u002Fcanonical-spec","docs\u002F2.fireskills\u002F2.methodology\u002F2.canonical-spec",{"title":238,"path":239,"stem":240},"Lifecycle States","\u002Fdocs\u002Ffireskills\u002Fmethodology\u002Flifecycle-states","docs\u002F2.fireskills\u002F2.methodology\u002F3.lifecycle-states",{"title":242,"path":243,"stem":244},"Effort Scale","\u002Fdocs\u002Ffireskills\u002Fmethodology\u002Feffort-scale","docs\u002F2.fireskills\u002F2.methodology\u002F4.effort-scale",{"title":246,"path":247,"stem":248},"Milestones & Governance","\u002Fdocs\u002Ffireskills\u002Fmethodology\u002Fgovernance-and-milestones","docs\u002F2.fireskills\u002F2.methodology\u002F5.governance-and-milestones",{"title":250,"icon":251,"hide":22,"path":252,"stem":253,"children":254,"page":62},"Skills","i-lucide-layers","\u002Fdocs\u002Ffireskills\u002Fskills","docs\u002F2.fireskills\u002F3.skills",[255,259,263,267,271],{"title":256,"path":257,"stem":258},"Catalog","\u002Fdocs\u002Ffireskills\u002Fskills\u002Fcatalog","docs\u002F2.fireskills\u002F3.skills\u002F0.catalog",{"title":260,"path":261,"stem":262},"Act I: Define","\u002Fdocs\u002Ffireskills\u002Fskills\u002Fact-1-define","docs\u002F2.fireskills\u002F3.skills\u002F1.act-1-define",{"title":264,"path":265,"stem":266},"Act II: Design & Prove","\u002Fdocs\u002Ffireskills\u002Fskills\u002Fact-2-design-prove","docs\u002F2.fireskills\u002F3.skills\u002F2.act-2-design-prove",{"title":268,"path":269,"stem":270},"Act III: Deliver","\u002Fdocs\u002Ffireskills\u002Fskills\u002Fact-3-deliver","docs\u002F2.fireskills\u002F3.skills\u002F3.act-3-deliver",{"title":272,"path":273,"stem":274},"Governance & Decisions","\u002Fdocs\u002Ffireskills\u002Fskills\u002Fgovernance-and-decisions","docs\u002F2.fireskills\u002F3.skills\u002F4.governance-and-decisions",{"title":276,"icon":277,"hide":22,"path":278,"stem":279,"children":280,"page":62},"Specialists","i-lucide-sparkles","\u002Fdocs\u002Ffireskills\u002Fspecialists","docs\u002F2.fireskills\u002F4.specialists",[281,285,289],{"title":282,"path":283,"stem":284},"Overview","\u002Fdocs\u002Ffireskills\u002Fspecialists\u002Foverview","docs\u002F2.fireskills\u002F4.specialists\u002F0.overview",{"title":286,"path":287,"stem":288},"Nuxfire Stack","\u002Fdocs\u002Ffireskills\u002Fspecialists\u002Fnuxfire-stack","docs\u002F2.fireskills\u002F4.specialists\u002F1.nuxfire-stack",{"title":290,"path":291,"stem":292},"Engineering Specialists","\u002Fdocs\u002Ffireskills\u002Fspecialists\u002Fengineering-specialists","docs\u002F2.fireskills\u002F4.specialists\u002F2.engineering-specialists",{"title":294,"icon":295,"hide":22,"path":296,"stem":297,"children":298,"page":62},"CLI & Tooling","i-lucide-terminal","\u002Fdocs\u002Ffireskills\u002Fcli","docs\u002F2.fireskills\u002F5.cli",[299,303,307],{"title":300,"path":301,"stem":302},"CLI Overview","\u002Fdocs\u002Ffireskills\u002Fcli\u002Foverview","docs\u002F2.fireskills\u002F5.cli\u002F0.overview",{"title":304,"path":305,"stem":306},"Commands","\u002Fdocs\u002Ffireskills\u002Fcli\u002Fcommands","docs\u002F2.fireskills\u002F5.cli\u002F1.commands",{"title":308,"path":309,"stem":310},"Safety Scripts","\u002Fdocs\u002Ffireskills\u002Fcli\u002Fgovernance-scripts","docs\u002F2.fireskills\u002F5.cli\u002F2.governance-scripts",{"id":312,"title":204,"body":313,"description":954,"extension":955,"meta":956,"navigation":957,"path":205,"seo":958,"stem":206,"__hash__":959},"docs\u002Fdocs\u002F2.fireskills\u002F1.getting-started\u002F10.step-implement.md",{"type":314,"value":315,"toc":946},"minimark",[316,348,353,364,368,378,382,387,507,513,661,677,681,684,808,817,829,858,861,903,907,930,934,942],[317,318,319,323,324,328,329,332,333,336,337,340,341,344,345],"p",{},[320,321,322],"strong",{},"Skill:"," ",[325,326,327],"code",{},"fireskill-07-implement"," · ",[320,330,331],{},"Asks questions:"," no (goes to ",[325,334,335],{},"$fireskill-update-spec"," if scope changes) · ",[320,338,339],{},"Changes:"," production code, tests, the checklists and evidence of ",[325,342,343],{},"spec.md",", ",[325,346,347],{},".fireskills\u002F*",[349,350,352],"h2",{"id":351},"when-to-use-it","When to use it",[317,354,355,356,359,360,363],{},"The spec is in ",[325,357,358],{},"specs\u002Fplanned\u002F"," with ",[325,361,362],{},"Plan Gate: Passed"," and failing tests exist. Type the prompt again for each next task, or let the agent keep going.",[349,365,367],{"id":366},"what-to-type","What to type",[369,370,376],"pre",{"className":371,"code":373,"language":374,"meta":375},[372],"language-text","Use $fireskill-07-implement para executar o próximo item do checklist em specs\u002F\u003Cestado>\u002F\u003CNNNN>-\u003Cslug>\u002Fspec.md com BDD, TDD e evidência. Orquestre transições automáticas com anúncio, execução e retomada na mesma conversa.\n","text","",[325,377,373],{"__ignoreMap":375},[349,379,381],{"id":380},"what-the-agent-does","What the agent does",[317,383,384],{},[320,385,386],{},"Before the first change",[388,389,390,412,430,437,451],"ol",{},[391,392,393,394,397,398,344,401,404,405,407,408,411],"li",{},"Requires ",[325,395,396],{},"Status: Planned"," or ",[325,399,400],{},"Implementing",[325,402,403],{},"Definition Gate: Passed"," and ",[325,406,362],{},". If a gate or a RED is missing, it goes back to ",[325,409,410],{},"$fireskill-05-tasks"," and does not touch production.",[391,413,414,415,418,419,422,423,359,426,429],{},"If there is a screen, it checks that the plan has tasks for screens, menus, forms, actions and ",[325,416,417],{},"@nuxt\u002Fui"," components, and it loads ",[325,420,421],{},"$fireskill-specialist-nuxt-ui"," before writing any ",[325,424,425],{},".vue",[325,427,428],{},"U*"," components.",[391,431,432,433,436],{},"Checks the base test command with ",[325,434,435],{},"check_database_safety.mjs","; without a separate test database it runs no test that touches the database.",[391,438,439,440,344,443,446,447,450],{},"Sets ",[325,441,442],{},"Status: Implementing",[325,444,445],{},"Delivery Gate: In Progress"," and runs ",[325,448,449],{},"bun run fireskill transition \u003Cid> in-progress",".",[391,452,453,454],{},"Picks the next ready task:",[369,455,459],{"className":456,"code":457,"language":458,"meta":375,"style":375},"language-bash shiki shiki-themes material-theme-lighter github-light github-dark monokai","node fireskills\u002Fskills\u002Ffireskill-07-implement\u002Fscripts\u002Fnext_task.mjs specs\u002Fin-progress\u002F\u003CNNNN>-\u003Cslug>\u002Fspec.md\n","bash",[325,460,461],{"__ignoreMap":375},[462,463,466,470,474,477,481,484,488,491,494,496,499,502,504],"span",{"class":464,"line":465},"line",1,[462,467,469],{"class":468},"sR7ES","node",[462,471,473],{"class":472},"sLACW"," fireskills\u002Fskills\u002Ffireskill-07-implement\u002Fscripts\u002Fnext_task.mjs",[462,475,476],{"class":472}," specs\u002Fin-progress\u002F",[462,478,480],{"class":479},"sGXK2","\u003C",[462,482,483],{"class":472},"NNN",[462,485,487],{"class":486},"ss--_","N",[462,489,490],{"class":479},">",[462,492,493],{"class":472},"-",[462,495,480],{"class":479},[462,497,498],{"class":472},"slu",[462,500,501],{"class":486},"g",[462,503,490],{"class":479},[462,505,506],{"class":472},"\u002Fspec.md\n",[317,508,509,512],{},[320,510,511],{},"For each task"," (checked off one item at a time, never in a batch at the end)",[388,514,515,521,568,586,597,612,621,638,655],{},[391,516,517,520],{},[325,518,519],{},"PREP",": confirms ID, type, references, dependencies, files.",[391,522,523,524,527,528,531,532,344,534,537,538,541,542,545,546,549,550,553,554,557,558,531,561,564,565,450],{},"Loads the ",[320,525,526],{},"specialist of the area"," before touching code: ",[325,529,530],{},"nuxt-ui"," for ",[325,533,425],{},[325,535,536],{},"nuxt"," for pages and middleware, ",[325,539,540],{},"trpc"," for routers, ",[325,543,544],{},"drizzle"," for schema and migrations, ",[325,547,548],{},"nuxt-authorization"," for permissions, ",[325,551,552],{},"openauth"," for login, ",[325,555,556],{},"cloudflare-workers"," for Workers, ",[325,559,560],{},"sst",[325,562,563],{},"infra\u002F",". The table is in ",[325,566,567],{},"fireskills\u002FSKILL.md",[391,569,570,573,574,577,578,581,582,585],{},[325,571,572],{},"EXECUTE",": the smallest change that turns the TDD test green. A ",[325,575,576],{},"[CODE]"," task without its RED predecessor stops. For ",[325,579,580],{},"[MIGRATION]",", it creates the versioned file first, applies it to the ",[320,583,584],{},"test"," database and queries the state.",[391,587,588,589,592,593,596],{},"Runs the context monitor; ",[325,590,591],{},"PENDING"," blocks the task. Reviews ",[325,594,595],{},".fireskills\u002FPROJECT.md"," on any application change.",[391,598,599,600,602,603,606,607,611],{},"After each ",[325,601,576],{}," task, hands off to ",[325,604,605],{},"$fireskill-documentator"," (see ",[608,609,610],"a",{"href":209},"Step 8",").",[391,613,614,617,618,450],{},[325,615,616],{},"VERIFY",": focal test, related suite and static checks, only after the command is ",[325,619,620],{},"SAFE",[391,622,623,626,627,404,630,633,634,637],{},[325,624,625],{},"VISUAL",": for a screen, compares the rendered result with ",[325,628,629],{},".fireskills\u002FDESIGNSYSTEM.MD",[325,631,632],{},".fireskills\u002FINTERFACE.md",": borders, spacing, margins, padding, typography, alignment, overflow, focus, short and long content, in the relevant viewports. Without a screen it writes ",[325,635,636],{},"Não aplicável"," and the concrete reason.",[391,639,640,643,644,647,648,651,652,611],{},[325,641,642],{},"EVIDENCE",": records command, result and IDs in sections 11–13 (and the ",[325,645,646],{},"specsfy:evidence"," JSON comment when ",[325,649,650],{},"Evidence Contract: 1",", checked by ",[325,653,654],{},"verify_evidence.mjs",[391,656,657,660],{},[325,658,659],{},"IMPROVE",": one safe improvement, or \"nenhuma melhoria necessária\" with the reason.",[317,662,663,666,667,670,671,673,674,450],{},[320,664,665],{},"If scope changes"," (behavior not in the spec, contradiction of an ",[325,668,669],{},"AC",", public interface, data or security): it stops, announces, and loads ",[325,672,335],{},". See ",[608,675,676],{"href":213},"Late changes",[349,678,680],{"id":679},"the-completion-gate","The completion gate",[317,682,683],{},"When every task in section 14 is checked, the agent runs, and you can run the same:",[369,685,687],{"className":456,"code":686,"language":458,"meta":375,"style":375},"# tests of the whole repository (from the repository root)\nbun run test\n\n# types (from apps\u002Fapp)\ncd apps\u002Fapp\nbun run typecheck\nbunx vue-tsc --noEmit -p server\u002Ftsconfig.json\ncd ..\u002F..\n\n# copy of the context and documentation checks\nnode fireskills\u002Fskills\u002Ffireskill-setup\u002Fscripts\u002Fmonitor_context.mjs --project . --check\nnode fireskills\u002Fskills\u002Ffireskill-documentator\u002Fscripts\u002Fbuild_documentation.mjs --project . --check\n",[325,688,689,695,707,713,719,729,739,758,766,771,777,794],{"__ignoreMap":375},[462,690,691],{"class":464,"line":465},[462,692,694],{"class":693},"ss7Ak","# tests of the whole repository (from the repository root)\n",[462,696,698,701,704],{"class":464,"line":697},2,[462,699,700],{"class":468},"bun",[462,702,703],{"class":472}," run",[462,705,706],{"class":472}," test\n",[462,708,710],{"class":464,"line":709},3,[462,711,712],{"emptyLinePlaceholder":22},"\n",[462,714,716],{"class":464,"line":715},4,[462,717,718],{"class":693},"# types (from apps\u002Fapp)\n",[462,720,722,726],{"class":464,"line":721},5,[462,723,725],{"class":724},"sMLJd","cd",[462,727,728],{"class":472}," apps\u002Fapp\n",[462,730,732,734,736],{"class":464,"line":731},6,[462,733,700],{"class":468},[462,735,703],{"class":472},[462,737,738],{"class":472}," typecheck\n",[462,740,742,745,748,752,755],{"class":464,"line":741},7,[462,743,744],{"class":468},"bunx",[462,746,747],{"class":472}," vue-tsc",[462,749,751],{"class":750},"sFhLe"," --noEmit",[462,753,754],{"class":750}," -p",[462,756,757],{"class":472}," server\u002Ftsconfig.json\n",[462,759,761,763],{"class":464,"line":760},8,[462,762,725],{"class":724},[462,764,765],{"class":472}," ..\u002F..\n",[462,767,769],{"class":464,"line":768},9,[462,770,712],{"emptyLinePlaceholder":22},[462,772,774],{"class":464,"line":773},10,[462,775,776],{"class":693},"# copy of the context and documentation checks\n",[462,778,780,782,785,788,791],{"class":464,"line":779},11,[462,781,469],{"class":468},[462,783,784],{"class":472}," fireskills\u002Fskills\u002Ffireskill-setup\u002Fscripts\u002Fmonitor_context.mjs",[462,786,787],{"class":750}," --project",[462,789,790],{"class":472}," .",[462,792,793],{"class":750}," --check\n",[462,795,797,799,802,804,806],{"class":464,"line":796},12,[462,798,469],{"class":468},[462,800,801],{"class":472}," fireskills\u002Fskills\u002Ffireskill-documentator\u002Fscripts\u002Fbuild_documentation.mjs",[462,803,787],{"class":750},[462,805,790],{"class":472},[462,807,793],{"class":750},[317,809,810,813,814,450],{},[325,811,812],{},"bun run typecheck"," does not exist at the repository root: it is a script of ",[325,815,816],{},"apps\u002Fapp",[317,818,819,820,344,822,344,825,828],{},"Then it compares every ",[325,821,669],{},[325,823,824],{},"FR",[325,826,827],{},"NFR"," and Definition of Done item with current evidence, looks for open tasks, placeholders and skipped tests, and only then:",[388,830,831,843,852],{},[391,832,833,344,836,839,840,450],{},[325,834,835],{},"Delivery Gate: Passed",[325,837,838],{},"Status: Reviewing",", and ",[325,841,842],{},"bun run fireskill transition \u003Cid> review",[391,844,845,848,849,450],{},[325,846,847],{},"$fireskill-04-validate"," does the final acceptance and moves the spec to ",[325,850,851],{},"specs\u002Fcompleted\u002F",[391,853,854,857],{},[325,855,856],{},"$fireskill-progress"," shows the global picture.",[317,859,860],{},"To get a summary you can paste in a PR (it only prints, it writes no file):",[369,862,864],{"className":456,"code":863,"language":458,"meta":375,"style":375},"node fireskills\u002Fskills\u002Ffireskill-07-implement\u002Fscripts\u002Frender_delivery.mjs specs\u002Freview\u002F\u003CNNNN>-\u003Cslug>\u002Fspec.md --format markdown\n",[325,865,866],{"__ignoreMap":375},[462,867,868,870,873,876,878,880,882,884,886,888,890,892,894,897,900],{"class":464,"line":465},[462,869,469],{"class":468},[462,871,872],{"class":472}," fireskills\u002Fskills\u002Ffireskill-07-implement\u002Fscripts\u002Frender_delivery.mjs",[462,874,875],{"class":472}," specs\u002Freview\u002F",[462,877,480],{"class":479},[462,879,483],{"class":472},[462,881,487],{"class":486},[462,883,490],{"class":479},[462,885,493],{"class":472},[462,887,480],{"class":479},[462,889,498],{"class":472},[462,891,501],{"class":486},[462,893,490],{"class":479},[462,895,896],{"class":472},"\u002Fspec.md",[462,898,899],{"class":750}," --format",[462,901,902],{"class":472}," markdown\n",[349,904,906],{"id":905},"things-it-will-not-do-alone","Things it will not do alone",[908,909,910,927],"ul",{},[391,911,912,915,916,397,919,922,923,926],{},[325,913,914],{},"bun run deploy",". For changes in ",[325,917,918],{},"apps\u002Ffunctions",[325,920,921],{},"layers",", a real ",[325,924,925],{},"sst deploy"," is the check that matters, and it needs your explicit authorization.",[391,928,929],{},"Run a test against the development database, or any destructive database command.",[349,931,933],{"id":932},"next","Next",[317,935,936,938,939,450],{},[608,937,208],{"href":209}," (runs automatically), then progress with ",[325,940,941],{},"bun run fireskill progress",[943,944,945],"style",{},"html pre.shiki code .sR7ES, html code.shiki .sR7ES{--shiki-light:#E2931D;--shiki-default:#6F42C1;--shiki-dark:#B392F0;--shiki-sepia:#A6E22E}html pre.shiki code .sLACW, html code.shiki .sLACW{--shiki-light:#91B859;--shiki-default:#032F62;--shiki-dark:#9ECBFF;--shiki-sepia:#E6DB74}html pre.shiki code .sGXK2, html code.shiki .sGXK2{--shiki-light:#39ADB5;--shiki-default:#D73A49;--shiki-dark:#F97583;--shiki-sepia:#F92672}html pre.shiki code .ss--_, html code.shiki .ss--_{--shiki-light:#90A4AE;--shiki-default:#24292E;--shiki-dark:#E1E4E8;--shiki-sepia:#F8F8F2}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html .sepia .shiki span {color: var(--shiki-sepia);background: var(--shiki-sepia-bg);font-style: var(--shiki-sepia-font-style);font-weight: var(--shiki-sepia-font-weight);text-decoration: var(--shiki-sepia-text-decoration);}html.sepia .shiki span {color: var(--shiki-sepia);background: var(--shiki-sepia-bg);font-style: var(--shiki-sepia-font-style);font-weight: var(--shiki-sepia-font-weight);text-decoration: var(--shiki-sepia-text-decoration);}html pre.shiki code .ss7Ak, html code.shiki .ss7Ak{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#6A737D;--shiki-default-font-style:inherit;--shiki-dark:#6A737D;--shiki-dark-font-style:inherit;--shiki-sepia:#88846F;--shiki-sepia-font-style:inherit}html pre.shiki code .sMLJd, html code.shiki .sMLJd{--shiki-light:#6182B8;--shiki-default:#005CC5;--shiki-dark:#79B8FF;--shiki-sepia:#66D9EF}html pre.shiki code .sFhLe, html code.shiki .sFhLe{--shiki-light:#91B859;--shiki-default:#005CC5;--shiki-dark:#79B8FF;--shiki-sepia:#AE81FF}",{"title":375,"searchDepth":697,"depth":697,"links":947},[948,949,950,951,952,953],{"id":351,"depth":697,"text":352},{"id":366,"depth":697,"text":367},{"id":380,"depth":697,"text":381},{"id":679,"depth":697,"text":680},{"id":905,"depth":697,"text":906},{"id":932,"depth":697,"text":933},"Write the production code task by task, with evidence, and pass the Delivery Gate.","md",{},{"title":204},{"title":204,"description":954},"YPRvyE-lVeYDp4RUotAL-7l1OmmYRN2-WutJ5HjDWEg",1790707494558]