[{"data":1,"prerenderedAt":811},["ShallowReactive",2],{"navigation:en":3,"\u002Fdocs\u002Ffireskills\u002Fgetting-started\u002Fstep-validate: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":192,"body":313,"description":805,"extension":806,"meta":807,"navigation":808,"path":193,"seo":809,"stem":194,"__hash__":810},"docs\u002Fdocs\u002F2.fireskills\u002F1.getting-started\u002F07.step-validate.md",{"type":314,"value":315,"toc":794},"minimark",[316,344,349,352,356,366,373,377,577,592,596,671,681,707,713,720,765,769,779,783,790],[317,318,319,323,324,328,329,332,333,336,337,340,341],"p",{},[320,321,322],"strong",{},"Skill:"," ",[325,326,327],"code",{},"fireskill-04-validate"," · ",[320,330,331],{},"Asks questions:"," only if it must go back to the backlog · ",[320,334,335],{},"Changes:"," the header and section 13 of ",[325,338,339],{},"spec.md","; moves the spec to ",[325,342,343],{},"specs\u002Fdefined\u002F",[345,346,348],"h2",{"id":347},"when-to-use-it","When to use it",[317,350,351],{},"The spec is written and you want to know whether it is ready to be planned. The flow reaches this step by itself after Step 3.",[345,353,355],{"id":354},"what-to-type","What to type",[357,358,364],"pre",{"className":359,"code":361,"language":362,"meta":363},[360],"language-text","Use $fireskill-04-validate para auditar specs\u002F\u003Cestado>\u002F\u003CNNNN>-\u003Cslug>\u002Fspec.md, seu research\u002F e os gates antes das tarefas. Orquestre transições automáticas com anúncio, execução e retomada na mesma conversa.\n","text","",[325,365,361],{"__ignoreMap":363},[317,367,368,369,372],{},"Replace the path, for example ",[325,370,371],{},"specs\u002Fdraft\u002F0001-convite-de-membros-por-e-mail\u002Fspec.md",".",[345,374,376],{"id":375},"what-the-agent-does","What the agent does",[378,379,380,394,454,480,490],"ol",{},[381,382,383,384,387,388,390,391,372],"li",{},"Confirms the format (",[325,385,386],{},"Formato: Specsfy\u002F2.0","), the three acts in order, the slug equal to the directory, and that the package holds only ",[325,389,339],{}," and an optional ",[325,392,393],{},"research\u002F",[381,395,396,397],{},"Runs the structural validator of the skill:",[357,398,402],{"className":399,"code":400,"language":401,"meta":363,"style":363},"language-bash shiki shiki-themes material-theme-lighter github-light github-dark monokai","node fireskills\u002Fskills\u002Ffireskill-04-validate\u002Fscripts\u002Fvalidate_spec.mjs specs\u002Fdraft\u002F\u003CNNNN>-\u003Cslug>\u002Fspec.md --allow-draft\n","bash",[325,403,404],{"__ignoreMap":363},[405,406,409,413,417,420,424,427,431,434,437,439,442,445,447,450],"span",{"class":407,"line":408},"line",1,[405,410,412],{"class":411},"sR7ES","node",[405,414,416],{"class":415},"sLACW"," fireskills\u002Fskills\u002Ffireskill-04-validate\u002Fscripts\u002Fvalidate_spec.mjs",[405,418,419],{"class":415}," specs\u002Fdraft\u002F",[405,421,423],{"class":422},"sGXK2","\u003C",[405,425,426],{"class":415},"NNN",[405,428,430],{"class":429},"ss--_","N",[405,432,433],{"class":422},">",[405,435,436],{"class":415},"-",[405,438,423],{"class":422},[405,440,441],{"class":415},"slu",[405,443,444],{"class":429},"g",[405,446,433],{"class":422},[405,448,449],{"class":415},"\u002Fspec.md",[405,451,453],{"class":452},"sFhLe"," --allow-draft\n",[381,455,456,457,460,461,464,465,468,469,472,473,476,477,372],{},"Does a ",[320,458,459],{},"semantic review",": compares research, requirements, BDD, technical plan, data model, contracts, TDD, matrix and tasks. It confirms at least three distinct ",[325,462,463],{},"AC"," for the feature and for each ",[325,466,467],{},"US",", ",[325,470,471],{},"FR"," and ",[325,474,475],{},"NFR",". For a screen it requires section 10 to be complete; a CRUD without screens and forms is a ",[325,478,479],{},"BLOCKER",[381,481,482,483,486,487,372],{},"If the definition changes stack or persistence, it requires the Definition of Done to cite ",[325,484,485],{},".fireskills\u002FSTACK.md"," or ",[325,488,489],{},".fireskills\u002FDATABASE.md",[381,491,492,493],{},"Returns exactly one result:",[494,495,496,512],"table",{},[497,498,499],"thead",{},[500,501,502,506,509],"tr",{},[503,504,505],"th",{},"Result",[503,507,508],{},"Meaning",[503,510,511],{},"What happens",[513,514,515,544],"tbody",{},[500,516,517,523,528],{},[518,519,520],"td",{},[325,521,522],{},"READY",[518,524,525,526],{},"no structural failure and no unresolved ",[325,527,479],{},[518,529,530,468,533,536,537,540,541],{},[325,531,532],{},"Definition Gate: Passed",[325,534,535],{},"Status: Defined",", then ",[325,538,539],{},"bun run fireskill transition \u003Cid> defined",", then hand-off to ",[325,542,543],{},"$fireskill-05-tasks",[500,545,546,551,556],{},[518,547,548],{},[325,549,550],{},"NOT READY",[518,552,553,554],{},"a structural failure or a ",[325,555,479],{},[518,557,558,468,561,564,565,568,569,572,573,576],{},[325,559,560],{},"Definition Gate: Failed",[325,562,563],{},"Status: Draft","; goes back to ",[325,566,567],{},"$fireskill-02-backlog"," if a decision is missing, or to ",[325,570,571],{},"$fireskill-03-specify","\u002F",[325,574,575],{},"$fireskill-update-spec"," if the fix is already decided",[317,578,579,580,583,584,587,588,372],{},"The same skill also closes the delivery at the end of the flow: in ",[325,581,582],{},"specs\u002Freview\u002F",", with the Delivery Gate passed, it moves the spec to ",[325,585,586],{},"completed",". See ",[589,590,591],"a",{"href":205},"Step 7",[345,593,595],{"id":594},"two-validators-two-jobs","Two validators, two jobs",[494,597,598,611],{},[497,599,600],{},[500,601,602,605,608],{},[503,603,604],{},"Command",[503,606,607],{},"What it is",[503,609,610],{},"Checks",[513,612,613,636],{},[500,614,615,621,630],{},[518,616,617,620],{},[325,618,619],{},"validate_spec.mjs"," (the skill)",[518,622,623,626,627,372],{},[320,624,625],{},"The gate."," Used by ",[325,628,629],{},"$fireskill-04-validate",[518,631,632,633,635],{},"Format, acts and sections, IDs, coverage of at least three ",[325,634,463],{}," per requirement, interface contract, research index",[500,637,638,644,650],{},[518,639,640,643],{},[325,641,642],{},"bun run fireskill validate \u003Cid> [--strict]"," (the CLI)",[518,645,646,649],{},[320,647,648],{},"A quick linter"," you can run yourself.",[518,651,652,655,656,468,659,662,663,666,667,670],{},[325,653,654],{},"Effort"," between 1 and 10, ",[325,657,658],{},"Effort rationale",[325,660,661],{},"Status","; five sections found by heading (context\u002Fproblem, actors\u002Frequirements\u002Fscope, BDD scenarios, tasks, tests\u002Fevidence); a BDD scenario; a task list. Placeholders such as ",[325,664,665],{},"[TODO]"," are warnings; ",[325,668,669],{},"--strict"," turns warnings into errors.",[317,672,673,674,677,678,680],{},"The CLI linter does ",[320,675,676],{},"not"," count ",[325,679,463],{},", does not check the interface contract, does not change the gates and does not move the spec. Passing it is not the Definition Gate.",[357,682,684],{"className":399,"code":683,"language":401,"meta":363,"style":363},"bun run fireskill validate 0001 --strict\n",[325,685,686],{"__ignoreMap":363},[405,687,688,691,694,697,700,704],{"class":407,"line":408},[405,689,690],{"class":411},"bun",[405,692,693],{"class":415}," run",[405,695,696],{"class":415}," fireskill",[405,698,699],{"class":415}," validate",[405,701,703],{"class":702},"sYThS"," 0001",[405,705,706],{"class":452}," --strict\n",[357,708,711],{"className":709,"code":710,"language":362,"meta":363},[360],"Status: VALID (Passed spec linter)\nErrors: 0 | Warnings: 0\n",[325,712,710],{"__ignoreMap":363},[345,714,716,719],{"id":715},"transition-does-not-check-gates",[325,717,718],{},"transition"," does not check gates",[317,721,722,725,726,729,730,729,733,729,736,729,739,729,742,744,745,747,748,750,751,753,754,756,757,760,761,764],{},[325,723,724],{},"bun run fireskill transition \u003Cid> \u003Cfolder>"," moves the spec one step (",[325,727,728],{},"draft"," ↔ ",[325,731,732],{},"defined",[325,734,735],{},"planned",[325,737,738],{},"in-progress",[325,740,741],{},"review",[325,743,586],{},") and updates ",[325,746,661],{},". It does ",[320,749,676],{}," read the gates: a jump such as ",[325,752,732],{}," → ",[325,755,738],{}," is refused (",[325,758,759],{},"invalid transition","), but nothing stops you from moving a spec whose gate is ",[325,762,763],{},"Pending",". Let the skills do the moves; they only do it after their gate has passed.",[345,766,768],{"id":767},"optional-attack-the-spec-first","Optional: attack the spec first",[317,770,771,772,775,776,372],{},"For a high-effort or risky spec (Effort 7 or more), ask for an adversarial review before approving. See ",[325,773,774],{},"$fireskill-the-fool"," in ",[589,777,778],{"href":217},"Other entry points",[345,780,782],{"id":781},"next","Next",[317,784,785,787,788,372],{},[325,786,522],{}," → automatic: ",[589,789,196],{"href":197},[791,792,793],"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 pre.shiki code .sFhLe, html code.shiki .sFhLe{--shiki-light:#91B859;--shiki-default:#005CC5;--shiki-dark:#79B8FF;--shiki-sepia:#AE81FF}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 .sYThS, html code.shiki .sYThS{--shiki-light:#F76D47;--shiki-default:#005CC5;--shiki-dark:#79B8FF;--shiki-sepia:#AE81FF}",{"title":363,"searchDepth":795,"depth":795,"links":796},2,[797,798,799,800,801,803,804],{"id":347,"depth":795,"text":348},{"id":354,"depth":795,"text":355},{"id":375,"depth":795,"text":376},{"id":594,"depth":795,"text":595},{"id":715,"depth":795,"text":802},"transition does not check gates",{"id":767,"depth":795,"text":768},{"id":781,"depth":795,"text":782},"Prove the definition is complete and pass the Definition Gate.","md",{},{"title":192},{"title":192,"description":805},"H4_P8V6DXK8xm0wMt8RjaghDh5BvlLQytF3zKz3_F-g",1790707494231]