[{"data":1,"prerenderedAt":822},["ShallowReactive",2],{"navigation":3,"docs-getting-started\u002Flifecycle":90},[4],{"title":5,"path":6,"stem":7,"children":8},"Docs","\u002Fdocs","docs",[9,12,34,40,58,76],{"title":10,"path":6,"stem":11},"Overview","docs\u002Findex",{"title":13,"path":14,"stem":15,"children":16},"CLI Reference","\u002Fdocs\u002Fcli","docs\u002Fcli\u002Findex",[17,18,22,26,30],{"title":13,"path":14,"stem":15},{"title":19,"path":20,"stem":21},"doctor","\u002Fdocs\u002Fcli\u002Fdoctor","docs\u002Fcli\u002Fdoctor",{"title":23,"path":24,"stem":25},"exec","\u002Fdocs\u002Fcli\u002Fexec","docs\u002Fcli\u002Fexec",{"title":27,"path":28,"stem":29},"init","\u002Fdocs\u002Fcli\u002Finit","docs\u002Fcli\u002Finit",{"title":31,"path":32,"stem":33},"status","\u002Fdocs\u002Fcli\u002Fstatus","docs\u002Fcli\u002Fstatus",{"title":35,"path":36,"stem":37,"children":38},"Constitution","\u002Fdocs\u002Fconstitution","docs\u002Fconstitution\u002Findex",[39],{"title":35,"path":36,"stem":37},{"title":41,"path":42,"stem":43,"children":44},"FD Guide","\u002Fdocs\u002Ffd","docs\u002Ffd\u002Findex",[45,46,50,54],{"title":41,"path":42,"stem":43},{"title":47,"path":48,"stem":49},"Closing","\u002Fdocs\u002Ffd\u002Fclosing","docs\u002Ffd\u002Fclosing",{"title":51,"path":52,"stem":53},"Creating","\u002Fdocs\u002Ffd\u002Fcreating","docs\u002Ffd\u002Fcreating",{"title":55,"path":56,"stem":57},"Reviewing","\u002Fdocs\u002Ffd\u002Freviewing","docs\u002Ffd\u002Freviewing",{"title":59,"path":60,"stem":61,"children":62},"Getting Started","\u002Fdocs\u002Fgetting-started","docs\u002Fgetting-started\u002Findex",[63,64,68,72],{"title":59,"path":60,"stem":61},{"title":65,"path":66,"stem":67},"First Feature","\u002Fdocs\u002Fgetting-started\u002Ffirst-feature","docs\u002Fgetting-started\u002Ffirst-feature",{"title":69,"path":70,"stem":71},"Installation","\u002Fdocs\u002Fgetting-started\u002Finstallation","docs\u002Fgetting-started\u002Finstallation",{"title":73,"path":74,"stem":75},"Feature Lifecycle","\u002Fdocs\u002Fgetting-started\u002Flifecycle","docs\u002Fgetting-started\u002Flifecycle",{"title":77,"path":78,"stem":79,"children":80},"SDD Guide","\u002Fdocs\u002Fsdd","docs\u002Fsdd\u002Findex",[81,82,86],{"title":77,"path":78,"stem":79},{"title":83,"path":84,"stem":85},"Executing","\u002Fdocs\u002Fsdd\u002Fexecuting","docs\u002Fsdd\u002Fexecuting",{"title":87,"path":88,"stem":89},"Generating","\u002Fdocs\u002Fsdd\u002Fgenerating","docs\u002Fsdd\u002Fgenerating",{"id":91,"title":73,"body":92,"description":816,"extension":817,"meta":818,"navigation":819,"path":74,"seo":820,"stem":75,"__hash__":821},"content\u002Fdocs\u002Fgetting-started\u002Flifecycle.md",{"type":93,"value":94,"toc":787},"minimark",[95,99,112,117,127,130,134,142,145,186,202,220,222,229,232,244,247,253,268,270,277,280,291,298,304,317,319,325,328,339,342,348,350,354,360,363,374,380,383,385,389,396,399,468,471,477,480,482,486,493,496,507,510,526,531,533,540,543,554,561,563,567,573,577,773,775,783],[96,97,73],"h1",{"id":98},"feature-lifecycle",[100,101,102,103,107,108,111],"p",{},"Every feature in Forgia follows a fixed pipeline. Humans own the design phase; agents own the execution phase. The slash commands (",[104,105,106],"code",{},"\u002Ffd-*",", ",[104,109,110],{},"\u002Fsdd-*",") are the gates that move work from one phase to the next.",[113,114,116],"h2",{"id":115},"pipeline-overview","Pipeline Overview",[118,119,124],"pre",{"className":120,"code":122,"language":123},[121],"language-text"," Idea\n  │\n  ▼\n\u002Ffd-new ──────────────► FD [planned]\n                              │\n                    ┌─────────┴──────────┐\n                    │ (optional, advised) │\n                    ▼                    ▼\n            \u002Ffd-arch-review      \u002Ffd-threat-model\n            architecture         security analysis\n            report               threat model file\n                    │                    │\n                    └─────────┬──────────┘\n                              │ findings inform\n                              ▼\n                        \u002Ffd-review\n                         │       │\n                       fail     pass\n                         │       │\n                         ▼       ▼\n                      (edit) FD [approved]\n                                 │\n                                 ▼\n                           \u002Ffd-sdd\n                     (reads arch + threat model)\n                                 │\n                    ┌────────────┼────────────┐\n                    ▼            ▼            ▼\n                 SDD-001      SDD-002      SDD-003\n                    │            │            │\n                    └────────────┴────────────┘\n                                 │\n                           \u002Fsdd-assign\n                                 │\n                                 ▼\n                         agent executes\n                         fills Work Log\n                                 │\n                           \u002Ffd-verify\n                         │           │\n                       fail         pass\n                         │           │\n                         ▼           ▼\n                   (re-assign)  \u002Ffd-close\n                                     │\n                                     ▼\n                                  Closed\n","text",[104,125,122],{"__ignoreMap":126},"",[128,129],"hr",{},[113,131,133],{"id":132},"phase-1-design-human","Phase 1 — Design (Human)",[135,136,138,141],"h3",{"id":137},"fd-new-create-a-feature-design",[104,139,140],{},"\u002Ffd-new"," — Create a Feature Design",[100,143,144],{},"The starting point. Give it a free-text description or a GitHub issue number.",[118,146,150],{"className":147,"code":148,"language":149,"meta":126,"style":126},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","\u002Ffd-new \"Add OAuth2 login\"\n# or\n\u002Ffd-new #42\n","bash",[104,151,152,171,178],{"__ignoreMap":126},[153,154,157,160,164,168],"span",{"class":155,"line":156},"line",1,[153,158,140],{"class":159},"sBMFI",[153,161,163],{"class":162},"sMK4o"," \"",[153,165,167],{"class":166},"sfazB","Add OAuth2 login",[153,169,170],{"class":162},"\"\n",[153,172,174],{"class":155,"line":173},2,[153,175,177],{"class":176},"sHwdD","# or\n",[153,179,181,183],{"class":155,"line":180},3,[153,182,140],{"class":159},[153,184,185],{"class":176}," #42\n",[100,187,188,189,192,193,196,197,201],{},"Creates ",[104,190,191],{},".forgia\u002Ffd\u002FFD-NNN-\u003Cslug>.md"," with status ",[104,194,195],{},"planned",". Claude pre-fills the template with a problem statement, candidate solutions, and a skeleton architecture — ",[198,199,200],"strong",{},"you fill in the decisions",".",[203,204,205],"blockquote",{},[100,206,207,208,212,213,216,217,201],{},"The FD is a design document for humans. The goal is to capture ",[209,210,211],"em",{},"what"," and ",[209,214,215],{},"why",", not ",[209,218,219],{},"how",[128,221],{},[135,223,225,228],{"id":224},"fd-arch-review-architecture-analysis-advisory",[104,226,227],{},"\u002Ffd-arch-review"," — Architecture Analysis (advisory)",[100,230,231],{},"Run after drafting the FD's architecture section to validate it against the codebase, design patterns, and SOLID principles.",[118,233,235],{"className":147,"code":234,"language":149,"meta":126,"style":126},"\u002Ffd-arch-review FD-001\n",[104,236,237],{"__ignoreMap":126},[153,238,239,241],{"class":155,"line":156},[153,240,227],{"class":159},[153,242,243],{"class":166}," FD-001\n",[100,245,246],{},"Produces a structured report covering:",[118,248,251],{"className":249,"code":250,"language":123},[121],"1. Pattern Analysis ......... detected patterns in the codebase vs. proposed\n2. Anti-Pattern Detection ... God Object, circular deps, missing interfaces, etc.\n3. Dependency Graph ......... import\u002Fpackage relationships\n4. SOLID Compliance ......... score per principle (S, O, L, I, D)\n5. Recommendations .......... actionable, file-specific suggestions\n",[104,252,250],{"__ignoreMap":126},[100,254,255,256,259,260,263,264,267],{},"This command is ",[198,257,258],{},"read-only and advisory"," — it does not change the FD status. Run it iteratively while authoring the architecture section. Its findings inform ",[104,261,262],{},"\u002Ffd-review"," and its recommendations are automatically picked up by ",[104,265,266],{},"\u002Ffd-sdd"," when generating SDD constraints.",[128,269],{},[135,271,273,276],{"id":272},"fd-threat-model-security-analysis-advisory",[104,274,275],{},"\u002Ffd-threat-model"," — Security Analysis (advisory)",[100,278,279],{},"Run after the architecture is stable to identify threats before implementation begins.",[118,281,283],{"className":147,"code":282,"language":149,"meta":126,"style":126},"\u002Ffd-threat-model FD-001\n",[104,284,285],{"__ignoreMap":126},[153,286,287,289],{"class":155,"line":156},[153,288,275],{"class":159},[153,290,243],{"class":166},[100,292,293,294,297],{},"Writes ",[104,295,296],{},".forgia\u002Ffd\u002FFD-001-threat-model.md"," containing:",[118,299,302],{"className":300,"code":301,"language":123},[121],"Assets ...................... what the feature protects or exposes\nThreat Actors ............... who might attack and how\nSTRIDE Analysis ............. per-component threat table\n  S — Spoofing\n  T — Tampering\n  R — Repudiation\n  I — Information Disclosure\n  D — Denial of Service\n  E — Elevation of Privilege\nSDD Recommendations ......... mitigations mapped to specific SDDs\nGuardrails Suggestions ...... proposed deny.toml additions (advisory)\n",[104,303,301],{"__ignoreMap":126},[100,305,306,307,310,311,313,314,316],{},"Also ",[198,308,309],{},"advisory and read-only"," (only creates the threat model file). If present, ",[104,312,262],{}," flags its existence and ",[104,315,266],{}," automatically injects the mitigations into each SDD's Constraints section.",[128,318],{},[135,320,322,324],{"id":321},"fd-review-gate-design-quality",[104,323,262],{}," — Gate: Design Quality",[100,326,327],{},"A mandatory review that blocks progress until the FD meets the bar.",[118,329,331],{"className":147,"code":330,"language":149,"meta":126,"style":126},"\u002Ffd-review FD-001\n",[104,332,333],{"__ignoreMap":126},[153,334,335,337],{"class":155,"line":156},[153,336,262],{"class":159},[153,338,243],{"class":166},[100,340,341],{},"The review checks five things in order:",[118,343,346],{"className":344,"code":345,"language":123},[121],"1. Problem clearly defined? .............. (what + why, not how)\n2. At least 2 solutions with pros\u002Fcons? .. (decision record)\n3. Architecture diagrams present? ........ (non-trivial)\n4. Interfaces between components defined?  (inputs, outputs, protocols)\n5. Verification criteria testable? ....... (concrete, not vague)\n\nAll pass → status: approved\nAny fail → status stays: planned  (fix and re-run)\n",[104,347,345],{"__ignoreMap":126},[128,349],{},[113,351,353],{"id":352},"phase-2-spec-bridge","Phase 2 — Spec (Bridge)",[135,355,357,359],{"id":356},"fd-sdd-generate-execution-specs",[104,358,266],{}," — Generate Execution Specs",[100,361,362],{},"Translates the approved FD into one SDD per component.",[118,364,366],{"className":147,"code":365,"language":149,"meta":126,"style":126},"\u002Ffd-sdd FD-001\n",[104,367,368],{"__ignoreMap":126},[153,369,370,372],{"class":155,"line":156},[153,371,266],{"class":159},[153,373,243],{"class":166},[118,375,378],{"className":376,"code":377,"language":123},[121],"FD-001 (approved)\n    │\n    ├──► .forgia\u002Fsdd\u002FFD-001\u002FSDD-001-auth-service.md\n    ├──► .forgia\u002Fsdd\u002FFD-001\u002FSDD-002-token-store.md\n    └──► .forgia\u002Fsdd\u002FFD-001\u002FSDD-003-login-ui.md\n",[104,379,377],{"__ignoreMap":126},[100,381,382],{},"Each SDD is a self-contained agent contract: scope, interfaces, constraints, best practices, test requirements, and acceptance criteria. An agent reading only the SDD has everything it needs to implement its component.",[128,384],{},[113,386,388],{"id":387},"phase-3-execution-agent","Phase 3 — Execution (Agent)",[135,390,392,395],{"id":391},"sdd-assign-run-an-agent",[104,393,394],{},"\u002Fsdd-assign"," — Run an Agent",[100,397,398],{},"Assigns one SDD to an agent for implementation.",[118,400,402],{"className":147,"code":401,"language":149,"meta":126,"style":126},"# Interactive (Claude Code in this session)\n\u002Fsdd-assign SDD-001 claude\n\n# Autonomous (OpenHands in Docker)\nmise run sdd .forgia\u002Fsdd\u002FFD-001\u002FSDD-001.md\n\n# Batch all SDDs for an FD in parallel\nforgia batch FD-001\n",[104,403,404,409,419,425,431,446,451,457],{"__ignoreMap":126},[153,405,406],{"class":155,"line":156},[153,407,408],{"class":176},"# Interactive (Claude Code in this session)\n",[153,410,411,413,416],{"class":155,"line":173},[153,412,394],{"class":159},[153,414,415],{"class":166}," SDD-001",[153,417,418],{"class":166}," claude\n",[153,420,421],{"class":155,"line":180},[153,422,424],{"emptyLinePlaceholder":423},true,"\n",[153,426,428],{"class":155,"line":427},4,[153,429,430],{"class":176},"# Autonomous (OpenHands in Docker)\n",[153,432,434,437,440,443],{"class":155,"line":433},5,[153,435,436],{"class":159},"mise",[153,438,439],{"class":166}," run",[153,441,442],{"class":166}," sdd",[153,444,445],{"class":166}," .forgia\u002Fsdd\u002FFD-001\u002FSDD-001.md\n",[153,447,449],{"class":155,"line":448},6,[153,450,424],{"emptyLinePlaceholder":423},[153,452,454],{"class":155,"line":453},7,[153,455,456],{"class":176},"# Batch all SDDs for an FD in parallel\n",[153,458,460,463,466],{"class":155,"line":459},8,[153,461,462],{"class":159},"forgia",[153,464,465],{"class":166}," batch",[153,467,243],{"class":166},[100,469,470],{},"The agent flow per SDD:",[118,472,475],{"className":473,"code":474,"language":123},[121],"Human: \u002Fsdd-assign SDD-001\n  │\n  ▼\nAgent reads: scope, interfaces, constraints, acceptance criteria\n  │\n  ▼\nAgent implements code\n  │\n  ▼\nAgent fills Work Log: decisions made, output produced, issues found\n  │\n  ▼\nSDD status → done\n",[104,476,474],{"__ignoreMap":126},[100,478,479],{},"The Work Log is mandatory. It records what the agent decided, what it produced, and any issues encountered.",[128,481],{},[113,483,485],{"id":484},"phase-4-close-human","Phase 4 — Close (Human)",[135,487,489,492],{"id":488},"fd-verify-gate-completion-check",[104,490,491],{},"\u002Ffd-verify"," — Gate: Completion Check",[100,494,495],{},"Before closing, verify all SDDs are done and acceptance criteria are met.",[118,497,499],{"className":147,"code":498,"language":149,"meta":126,"style":126},"\u002Ffd-verify FD-001\n",[104,500,501],{"__ignoreMap":126},[153,502,503,505],{"class":155,"line":156},[153,504,491],{"class":159},[153,506,243],{"class":166},[100,508,509],{},"Checks:",[511,512,513,520,523],"ul",{},[514,515,516,517],"li",{},"All SDDs have status ",[104,518,519],{},"done",[514,521,522],{},"All Work Logs are filled",[514,524,525],{},"Acceptance criteria from the FD pass",[100,527,528,529,201],{},"Failures send the relevant SDD back to ",[104,530,394],{},[128,532],{},[135,534,536,539],{"id":535},"fd-close-archive-the-feature",[104,537,538],{},"\u002Ffd-close"," — Archive the Feature",[100,541,542],{},"Final step. Archives the FD, updates the changelog, aggregates retrospectives.",[118,544,546],{"className":147,"code":545,"language":149,"meta":126,"style":126},"\u002Ffd-close FD-001\n",[104,547,548],{"__ignoreMap":126},[153,549,550,552],{"class":155,"line":156},[153,551,538],{"class":159},[153,553,243],{"class":166},[100,555,556,557,560],{},"Status becomes ",[104,558,559],{},"closed",". The retrospective data from all Work Logs is consolidated into the FD for future reference.",[128,562],{},[113,564,566],{"id":565},"full-lifecycle-at-a-glance","Full Lifecycle at a Glance",[118,568,571],{"className":569,"code":570,"language":123},[121],"FD status:    planned ──► approved ──► (SDDs generated)\n                 ▲              \n                 │ fail         \n              \u002Ffd-review        \n                                \nSDD status:   ready ──► in-progress ──► done\n                             ▲               │\n                             │ fail          │ pass\n                          \u002Ffd-verify ◄───────┘\n\nFD status:    (all SDDs done) ──► verified ──► closed\n",[104,572,570],{"__ignoreMap":126},[113,574,576],{"id":575},"spell-reference","Spell Reference",[578,579,580,602],"table",{},[581,582,583],"thead",{},[584,585,586,590,593,596,599],"tr",{},[587,588,589],"th",{},"Spell",[587,591,592],{},"Phase",[587,594,595],{},"Who",[587,597,598],{},"Gate?",[587,600,601],{},"Purpose",[603,604,605,624,640,657,672,690,706,723,741,756],"tbody",{},[584,606,607,612,615,618,621],{},[608,609,610],"td",{},[104,611,140],{},[608,613,614],{},"Design",[608,616,617],{},"Human",[608,619,620],{},"—",[608,622,623],{},"Create FD from idea or issue",[584,625,626,631,633,635,637],{},[608,627,628],{},[104,629,630],{},"\u002Ffd-explore",[608,632,614],{},[608,634,617],{},[608,636,620],{},[608,638,639],{},"Load FD context for editing",[584,641,642,646,648,651,654],{},[608,643,644],{},[104,645,227],{},[608,647,614],{},[608,649,650],{},"Claude",[608,652,653],{},"advisory",[608,655,656],{},"Validate architecture: patterns, SOLID, anti-patterns",[584,658,659,663,665,667,669],{},[608,660,661],{},[104,662,275],{},[608,664,614],{},[608,666,650],{},[608,668,653],{},[608,670,671],{},"STRIDE security analysis, writes threat model file",[584,673,674,678,680,682,687],{},[608,675,676],{},[104,677,262],{},[608,679,614],{},[608,681,650],{},[608,683,684],{},[198,685,686],{},"gate",[608,688,689],{},"Enforce design quality, blocks on failure",[584,691,692,696,699,701,703],{},[608,693,694],{},[104,695,266],{},[608,697,698],{},"Spec",[608,700,650],{},[608,702,620],{},[608,704,705],{},"Generate SDDs from approved FD",[584,707,708,712,715,718,720],{},[608,709,710],{},[104,711,394],{},[608,713,714],{},"Execution",[608,716,717],{},"Human\u002FAuto",[608,719,620],{},[608,721,722],{},"Assign SDD to agent",[584,724,725,729,732,734,738],{},[608,726,727],{},[104,728,491],{},[608,730,731],{},"Close",[608,733,650],{},[608,735,736],{},[198,737,686],{},[608,739,740],{},"Check all SDDs done and criteria met",[584,742,743,747,749,751,753],{},[608,744,745],{},[104,746,538],{},[608,748,731],{},[608,750,617],{},[608,752,620],{},[608,754,755],{},"Archive and consolidate",[584,757,758,763,766,768,770],{},[608,759,760],{},[104,761,762],{},"\u002Ffd-status",[608,764,765],{},"Any",[608,767,617],{},[608,769,620],{},[608,771,772],{},"Dashboard of all FDs and SDDs",[128,774],{},[100,776,777,778,782],{},"Next: dive into ",[779,780,781],"a",{"href":52},"Creating an FD"," for the full FD authoring guide.",[784,785,786],"style",{},"html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html pre.shiki code .sHwdD, html code.shiki .sHwdD{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic}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);}",{"title":126,"searchDepth":173,"depth":173,"links":788},[789,790,800,804,808,814,815],{"id":115,"depth":173,"text":116},{"id":132,"depth":173,"text":133,"children":791},[792,794,796,798],{"id":137,"depth":180,"text":793},"\u002Ffd-new — Create a Feature Design",{"id":224,"depth":180,"text":795},"\u002Ffd-arch-review — Architecture Analysis (advisory)",{"id":272,"depth":180,"text":797},"\u002Ffd-threat-model — Security Analysis (advisory)",{"id":321,"depth":180,"text":799},"\u002Ffd-review — Gate: Design Quality",{"id":352,"depth":173,"text":353,"children":801},[802],{"id":356,"depth":180,"text":803},"\u002Ffd-sdd — Generate Execution Specs",{"id":387,"depth":173,"text":388,"children":805},[806],{"id":391,"depth":180,"text":807},"\u002Fsdd-assign — Run an Agent",{"id":484,"depth":173,"text":485,"children":809},[810,812],{"id":488,"depth":180,"text":811},"\u002Ffd-verify — Gate: Completion Check",{"id":535,"depth":180,"text":813},"\u002Ffd-close — Archive the Feature",{"id":565,"depth":173,"text":566},{"id":575,"depth":173,"text":576},"How a feature moves from idea to merged code — and which spell triggers each transition.","md",{},{"title":73},{"title":73,"description":816},"o9UVEUBnzSf4JqPg---bNQR_amNdDUQ49LnzPa7USmM",1775060659112]