[{"data":1,"prerenderedAt":787},["ShallowReactive",2],{"navigation:en":3,"\u002Fdocs\u002Ffireskills\u002Fgetting-started\u002Fstep-tasks: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":196,"body":313,"description":781,"extension":782,"meta":783,"navigation":784,"path":197,"seo":785,"stem":198,"__hash__":786},"docs\u002Fdocs\u002F2.fireskills\u002F1.getting-started\u002F08.step-tasks.md",{"type":314,"value":315,"toc":774},"minimark",[316,344,349,360,364,374,378,732,742,746,757,761,770],[317,318,319,323,324,328,329,332,333,336,337,340,341],"p",{},[320,321,322],"strong",{},"Skill:"," ",[325,326,327],"code",{},"fireskill-05-tasks"," · ",[320,330,331],{},"Asks questions:"," no (goes back to the backlog if a decision is missing) · ",[320,334,335],{},"Changes:"," sections 14 and 15 of ",[325,338,339],{},"spec.md","; moves the spec to ",[325,342,343],{},"specs\u002Fplanned\u002F",[345,346,348],"h2",{"id":347},"when-to-use-it","When to use it",[317,350,351,352,355,356,359],{},"The spec has ",[325,353,354],{},"Definition Gate: Passed"," and sits in ",[325,357,358],{},"specs\u002Fdefined\u002F",". The flow gets here by itself after Step 4.",[345,361,363],{"id":362},"what-to-type","What to type",[365,366,372],"pre",{"className":367,"code":369,"language":370,"meta":371},[368],"language-text","Use $fireskill-05-tasks para preencher tarefas rastreáveis com checklist PREP\u002FEXECUTE\u002FVERIFY\u002FVISUAL\u002FEVIDENCE\u002FIMPROVE em specs\u002F\u003Cestado>\u002F\u003CNNNN>-\u003Cslug>\u002Fspec.md. Orquestre transições automáticas com anúncio, execução e retomada na mesma conversa.\n","text","",[325,373,369],{"__ignoreMap":371},[345,375,377],{"id":376},"what-the-agent-does","What the agent does",[379,380,381,403,424,484,526,613,703],"ol",{},[382,383,384,385,388,389,391,392,395,396,388,399,402],"li",{},"Requires ",[325,386,387],{},"Formato: Specsfy\u002F2.0",", ",[325,390,354],{}," and ",[325,393,394],{},"Status: Defined",". It runs the context monitor and inspects the real stack, commands and paths (",[325,397,398],{},"layers\u002F*",[325,400,401],{},"apps\u002F*",") before it writes anything.",[382,404,405,406,409,410,391,413,416,417,419,420,423],{},"Replaces ",[320,407,408],{},"only"," sections ",[325,411,412],{},"14. Tarefas",[325,414,415],{},"15. Ordem de execução"," of the same ",[325,418,339],{},". It never creates ",[325,421,422],{},"tasks.md",".",[382,425,426,427,448,451,452,455,456,388,459,388,462,388,465,388,468,388,471,474,475,478,479,481,482,423],{},"Writes each task in this format:",[365,428,432],{"className":429,"code":430,"language":431,"meta":371,"style":371},"language-markdown shiki shiki-themes material-theme-lighter github-light github-dark monokai","- [ ] T001 [TEST] [TDD] [US-001] Derivar teste Vitest do BDD da spec em layers\u002Fteams\u002Fshared\u002Futils\u002Fabilities.test.ts — Refs: FR-002, AC-003 — Depends: none\n- [ ] T002 [CODE] [US-001] Implementar validação em layers\u002Fteams\u002Fserver\u002Ftrpc\u002Fteams.ts — Refs: FR-002, AC-003 — Depends: T001\n","markdown",[325,433,434,442],{"__ignoreMap":371},[435,436,439],"span",{"class":437,"line":438},"line",1,[435,440,441],{},"- [ ] T001 [TEST] [TDD] [US-001] Derivar teste Vitest do BDD da spec em layers\u002Fteams\u002Fshared\u002Futils\u002Fabilities.test.ts — Refs: FR-002, AC-003 — Depends: none\n",[435,443,445],{"class":437,"line":444},2,[435,446,447],{},"- [ ] T002 [CODE] [US-001] Implementar validação em layers\u002Fteams\u002Fserver\u002Ftrpc\u002Fteams.ts — Refs: FR-002, AC-003 — Depends: T001\n",[449,450],"br",{},"Allowed tags after the ID: ",[325,453,454],{},"[P]"," (can run in parallel), ",[325,457,458],{},"[TEST]",[325,460,461],{},"[TDD]",[325,463,464],{},"[CODE]",[325,466,467],{},"[DOC]",[325,469,470],{},"[OPS]",[325,472,473],{},"[US-NNN]",", and ",[325,476,477],{},"[MIGRATION]"," together with ",[325,480,464],{}," or ",[325,483,470],{},[382,485,486,487],{},"Gives every task the same checklist, in this order:",[365,488,490],{"className":429,"code":489,"language":431,"meta":371,"style":371},"  - [ ] **PREP**: Confirmar escopo, IDs, dependências e baseline.\n  - [ ] **EXECUTE**: Produzir a entrega no caminho declarado.\n  - [ ] **VERIFY**: Executar a verificação focal adequada.\n  - [ ] **VISUAL**: Conferir bordas, espaçamentos, margens, padding e tipografia do sistema; se não houver interface, registrar `Não aplicável` e o motivo.\n  - [ ] **EVIDENCE**: Registrar comando, resultado e IDs nas seções 11–13.\n  - [ ] **IMPROVE**: Registrar melhoria aplicada ou ausência justificada.\n",[325,491,492,497,502,508,514,520],{"__ignoreMap":371},[435,493,494],{"class":437,"line":438},[435,495,496],{},"  - [ ] **PREP**: Confirmar escopo, IDs, dependências e baseline.\n",[435,498,499],{"class":437,"line":444},[435,500,501],{},"  - [ ] **EXECUTE**: Produzir a entrega no caminho declarado.\n",[435,503,505],{"class":437,"line":504},3,[435,506,507],{},"  - [ ] **VERIFY**: Executar a verificação focal adequada.\n",[435,509,511],{"class":437,"line":510},4,[435,512,513],{},"  - [ ] **VISUAL**: Conferir bordas, espaçamentos, margens, padding e tipografia do sistema; se não houver interface, registrar `Não aplicável` e o motivo.\n",[435,515,517],{"class":437,"line":516},5,[435,518,519],{},"  - [ ] **EVIDENCE**: Registrar comando, resultado e IDs nas seções 11–13.\n",[435,521,523],{"class":437,"line":522},6,[435,524,525],{},"  - [ ] **IMPROVE**: Registrar melhoria aplicada ou ausência justificada.\n",[382,527,528,529],{},"Applies the rules that come from the spec:",[530,531,532,546,573,587],"ul",{},[382,533,534,535,538,539,542,543,545],{},"one ",[325,536,537],{},"[TEST] [TDD]"," task per ",[325,540,541],{},"AC",", and every ",[325,544,464],{}," task depends on its TDD predecessor with a valid RED;",[382,547,548,549,552,553,556,557,560,561,564,565,568,569,572],{},"a separate ",[325,550,551],{},"[CODE] [MIGRATION]"," task whenever the schema changes, pointing at a versioned file in ",[325,554,555],{},"apps\u002Ffunctions\u002Fsrc\u002Fdatabase\u002Fmigrations\u002F"," (generated by ",[325,558,559],{},"drizzle-kit generate","). Its ",[325,562,563],{},"VERIFY"," records two commands approved by ",[325,566,567],{},"check_database_safety.mjs",": one applies the migration to the ",[320,570,571],{},"test"," database, one queries the migration state;",[382,574,575,576,578,579,582,583,586],{},"a ",[325,577,467],{}," task for ",[325,580,581],{},".fireskills\u002FSTACK.md"," when manifests or structure change, and for ",[325,584,585],{},".fireskills\u002FDATABASE.md"," when the database changes;",[382,588,589,590,593,594,597,598,601,602,605,606,609,610,423],{},"for a screen: tasks for each screen, menus, forms and actions, in a subsection ",[325,591,592],{},"#### Fase de interface",", and a task that updates ",[325,595,596],{},".fireskills\u002FINTERFACE.md",". Every task that writes a ",[325,599,600],{},".vue"," with ",[325,603,604],{},"U*"," components lists ",[325,607,608],{},"$fireskill-specialist-nuxt-ui"," in ",[325,611,612],{},"PREP",[382,614,615,616,700,702],{},"Validates:",[365,617,621],{"className":618,"code":619,"language":620,"meta":371,"style":371},"language-bash shiki shiki-themes material-theme-lighter github-light github-dark monokai","node fireskills\u002Fskills\u002Ffireskill-05-tasks\u002Fscripts\u002Fvalidate_tasks.mjs specs\u002Fdefined\u002F\u003CNNNN>-\u003Cslug>\u002Fspec.md --allow-draft\nnode fireskills\u002Fskills\u002Ffireskill-05-tasks\u002Fscripts\u002Fvalidate_interface_tasks.mjs specs\u002Fdefined\u002F\u003CNNNN>-\u003Cslug>\u002Fspec.md\n","bash",[325,622,623,670],{"__ignoreMap":371},[435,624,625,629,633,636,640,643,647,650,653,655,658,661,663,666],{"class":437,"line":438},[435,626,628],{"class":627},"sR7ES","node",[435,630,632],{"class":631},"sLACW"," fireskills\u002Fskills\u002Ffireskill-05-tasks\u002Fscripts\u002Fvalidate_tasks.mjs",[435,634,635],{"class":631}," specs\u002Fdefined\u002F",[435,637,639],{"class":638},"sGXK2","\u003C",[435,641,642],{"class":631},"NNN",[435,644,646],{"class":645},"ss--_","N",[435,648,649],{"class":638},">",[435,651,652],{"class":631},"-",[435,654,639],{"class":638},[435,656,657],{"class":631},"slu",[435,659,660],{"class":645},"g",[435,662,649],{"class":638},[435,664,665],{"class":631},"\u002Fspec.md",[435,667,669],{"class":668},"sFhLe"," --allow-draft\n",[435,671,672,674,677,679,681,683,685,687,689,691,693,695,697],{"class":437,"line":444},[435,673,628],{"class":627},[435,675,676],{"class":631}," fireskills\u002Fskills\u002Ffireskill-05-tasks\u002Fscripts\u002Fvalidate_interface_tasks.mjs",[435,678,635],{"class":631},[435,680,639],{"class":638},[435,682,642],{"class":631},[435,684,646],{"class":645},[435,686,649],{"class":638},[435,688,652],{"class":631},[435,690,639],{"class":638},[435,692,657],{"class":631},[435,694,660],{"class":645},[435,696,649],{"class":638},[435,698,699],{"class":631},"\u002Fspec.md\n",[449,701],{},"The second one runs when the delivery has a screen. Up to three fix cycles.",[382,704,705,706,709,710,609,713,716,717,721,722,388,725,728,729,423],{},"While ",[325,707,708],{},"Plan Gate: Pending",", it hands off to ",[325,711,712],{},"$fireskill-06-tdd-bdd",[325,714,715],{},"prepare"," mode to write the first failing test (see ",[718,719,720],"a",{"href":201},"Step 6","), then resumes: ",[325,723,724],{},"Plan Gate: Passed",[325,726,727],{},"Status: Planned",", result written to section 13, and ",[325,730,731],{},"bun run fireskill transition \u003Cid> planned",[317,733,734,735,601,738,741],{},"If validation fails, the spec stays ",[325,736,737],{},"Defined",[325,739,740],{},"Plan Gate: Failed",", and the agent reports what blocks it.",[345,743,745],{"id":744},"result","Result",[317,747,748,749,609,751,754,755,423],{},"A ",[325,750,339],{},[325,752,753],{},"specs\u002Fplanned\u002F\u003CNNNN>-\u003Cslug>\u002F"," with the full task list, ordered by dependency, and ",[325,756,724],{},[345,758,760],{"id":759},"next","Next",[317,762,763,764,766,767,769],{},"Automatic: ",[718,765,204],{"href":205},", after the failing tests of ",[718,768,720],{"href":201}," exist.",[771,772,773],"style",{},"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 .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 pre.shiki code .sFhLe, html code.shiki .sFhLe{--shiki-light:#91B859;--shiki-default:#005CC5;--shiki-dark:#79B8FF;--shiki-sepia:#AE81FF}",{"title":371,"searchDepth":444,"depth":444,"links":775},[776,777,778,779,780],{"id":347,"depth":444,"text":348},{"id":362,"depth":444,"text":363},{"id":376,"depth":444,"text":377},{"id":744,"depth":444,"text":745},{"id":759,"depth":444,"text":760},"Break the defined spec into traceable tasks inside spec.md and pass the Plan Gate.","md",{},{"title":196},{"title":196,"description":781},"pUasJVXRFH_csAGrkVaSK6cfmx0PlbvHAUbNA-mw5Dc",1790707494345]