[{"data":1,"prerenderedAt":519},["ShallowReactive",2],{"navigation_docs":3,"-guide-codebase-formatting-linting":168,"-guide-codebase-formatting-linting-surround":515},[4,146],{"title":5,"icon":6,"path":7,"stem":8,"children":9,"page":36},"Guide","i-lucide-book-open","\u002Fguide","1.guide",[10,14,37,55,59,63,67,71,75,79,83,87,109,134,138,142],{"title":11,"path":12,"stem":13},"What is Agent Zero?","\u002Fguide\u002Fintroduction","1.guide\u002F1.introduction",{"title":15,"icon":16,"path":17,"stem":18,"children":19,"page":36},"API","i-lucide-plug","\u002Fguide\u002Fapi","1.guide\u002F10.api",[20,24,28,32],{"title":21,"path":22,"stem":23},"API overview","\u002Fguide\u002Fapi\u002Foverview","1.guide\u002F10.api\u002F1.overview",{"title":25,"path":26,"stem":27},"Define endpoints","\u002Fguide\u002Fapi\u002Fdefine-endpoints","1.guide\u002F10.api\u002F2.define-endpoints",{"title":29,"path":30,"stem":31},"Use the API from a client","\u002Fguide\u002Fapi\u002Fuse-from-client","1.guide\u002F10.api\u002F3.use-from-client",{"title":33,"path":34,"stem":35},"Protect endpoints","\u002Fguide\u002Fapi\u002Fprotect-endpoints","1.guide\u002F10.api\u002F4.protect-endpoints",false,{"title":38,"icon":39,"path":40,"stem":41,"children":42,"page":36},"Authentication","i-lucide-lock","\u002Fguide\u002Fauthentication","1.guide\u002F11.authentication",[43,47,51],{"title":44,"path":45,"stem":46},"Authentication overview","\u002Fguide\u002Fauthentication\u002Foverview","1.guide\u002F11.authentication\u002F1.overview",{"title":48,"path":49,"stem":50},"GitHub OAuth","\u002Fguide\u002Fauthentication\u002Foauth","1.guide\u002F11.authentication\u002F2.oauth",{"title":52,"path":53,"stem":54},"Permissions","\u002Fguide\u002Fauthentication\u002Fpermissions","1.guide\u002F11.authentication\u002F3.permissions",{"title":56,"path":57,"stem":58},"Organizations","\u002Fguide\u002Forganizations","1.guide\u002F12.organizations",{"title":60,"path":61,"stem":62},"Frontend","\u002Fguide\u002Ffrontend","1.guide\u002F13.frontend",{"title":64,"path":65,"stem":66},"Mails","\u002Fguide\u002Fmails","1.guide\u002F14.mails",{"title":68,"path":69,"stem":70},"Internationalization","\u002Fguide\u002Finternationalization","1.guide\u002F15.internationalization",{"title":72,"path":73,"stem":74},"Deployment","\u002Fguide\u002Fdeployment","1.guide\u002F16.deployment",{"title":76,"path":77,"stem":78},"Tech stack","\u002Fguide\u002Ftech-stack","1.guide\u002F2.tech-stack",{"title":80,"path":81,"stem":82},"Installation","\u002Fguide\u002Finstallation","1.guide\u002F3.installation",{"title":84,"path":85,"stem":86},"Environment variables","\u002Fguide\u002Fenvironment-variables","1.guide\u002F4.environment-variables",{"title":88,"icon":89,"path":90,"stem":91,"children":92,"page":36},"Codebase","i-lucide-folder-tree","\u002Fguide\u002Fcodebase","1.guide\u002F5.codebase",[93,97,101,105],{"title":94,"path":95,"stem":96},"Codebase structure","\u002Fguide\u002Fcodebase\u002Fstructure","1.guide\u002F5.codebase\u002F1.structure",{"title":98,"path":99,"stem":100},"Dependencies","\u002Fguide\u002Fcodebase\u002Fdependencies","1.guide\u002F5.codebase\u002F2.dependencies",{"title":102,"path":103,"stem":104},"Formatting and linting","\u002Fguide\u002Fcodebase\u002Fformatting-linting","1.guide\u002F5.codebase\u002F3.formatting-linting",{"title":106,"path":107,"stem":108},"Agent Skills","\u002Fguide\u002Fcodebase\u002Fagent-skills","1.guide\u002F5.codebase\u002F4.agent-skills",{"title":110,"icon":111,"path":112,"stem":113,"children":114,"page":36},"Architecture","i-lucide-layers","\u002Fguide\u002Farchitecture","1.guide\u002F6.architecture",[115,118,122,126,130],{"title":110,"path":116,"stem":117},"\u002Fguide\u002Farchitecture\u002Foverview","1.guide\u002F6.architecture\u002F1.overview",{"title":119,"path":120,"stem":121},"State machine","\u002Fguide\u002Farchitecture\u002Fstate-machine","1.guide\u002F6.architecture\u002F2.state-machine",{"title":123,"path":124,"stem":125},"Execution boundary","\u002Fguide\u002Farchitecture\u002Fexecution-boundary","1.guide\u002F6.architecture\u002F3.execution-boundary",{"title":127,"path":128,"stem":129},"Issue-to-PR workflow","\u002Fguide\u002Farchitecture\u002Fissue-to-pr","1.guide\u002F6.architecture\u002F4.issue-to-pr",{"title":131,"path":132,"stem":133},"Adding a capability","\u002Fguide\u002Farchitecture\u002Fadding-a-capability","1.guide\u002F6.architecture\u002F5.adding-a-capability",{"title":135,"path":136,"stem":137},"Repository policy","\u002Fguide\u002Fconfiguration","1.guide\u002F7.configuration",{"title":139,"path":140,"stem":141},"Safety model","\u002Fguide\u002Fsafety","1.guide\u002F8.safety",{"title":143,"path":144,"stem":145},"Database","\u002Fguide\u002Fdatabase","1.guide\u002F9.database",{"title":147,"icon":148,"path":149,"stem":150,"children":151,"page":36},"Reference","i-lucide-book-marked","\u002Freference","2.reference",[152,156,160,164],{"title":153,"path":154,"stem":155},"CLI","\u002Freference\u002Fcli","2.reference\u002F1.cli",{"title":157,"path":158,"stem":159},"Model providers","\u002Freference\u002Fmodel-providers","2.reference\u002F2.model-providers",{"title":161,"path":162,"stem":163},"Source-control providers","\u002Freference\u002Fsource-control-providers","2.reference\u002F3.source-control-providers",{"title":165,"path":166,"stem":167},"Sandbox providers","\u002Freference\u002Fsandbox-providers","2.reference\u002F4.sandbox-providers",{"id":169,"title":102,"body":170,"description":176,"extension":509,"links":510,"meta":511,"navigation":512,"path":103,"seo":513,"stem":104,"__hash__":514},"docs\u002F1.guide\u002F5.codebase\u002F3.formatting-linting.md",{"type":171,"value":172,"toc":503},"minimark",[173,177,182,303,306,354,358,449,453,463,484,488,491,499],[174,175,176],"p",{},"Oxfmt owns formatting and Oxlint owns linting. ESLint and Prettier are deliberately absent — do not add them.",[178,179,181],"h2",{"id":180},"commands","Commands",[183,184,189],"pre",{"className":185,"code":186,"language":187,"meta":188,"style":188},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","aube run format          # format the repository with Oxfmt\naube run format:check    # verify formatting without writing\naube run lint            # type-aware Oxlint across the workspace\naube run lint:fix        # type-aware Oxlint across the workspace, applying fixes\naube run knip            # find unused files, exports, and dependencies\naube run lint:ci         # format:check + lint + knip, the CI gate\naube run typecheck       # TypeScript checks across the project graph\naube run check:repo      # community files and Agent Skills conventions\n","bash","",[190,191,192,212,225,238,251,264,277,290],"code",{"__ignoreMap":188},[193,194,197,201,205,208],"span",{"class":195,"line":196},"line",1,[193,198,200],{"class":199},"sBMFI","aube",[193,202,204],{"class":203},"sfazB"," run",[193,206,207],{"class":203}," format",[193,209,211],{"class":210},"sHwdD","          # format the repository with Oxfmt\n",[193,213,215,217,219,222],{"class":195,"line":214},2,[193,216,200],{"class":199},[193,218,204],{"class":203},[193,220,221],{"class":203}," format:check",[193,223,224],{"class":210},"    # verify formatting without writing\n",[193,226,228,230,232,235],{"class":195,"line":227},3,[193,229,200],{"class":199},[193,231,204],{"class":203},[193,233,234],{"class":203}," lint",[193,236,237],{"class":210},"            # type-aware Oxlint across the workspace\n",[193,239,241,243,245,248],{"class":195,"line":240},4,[193,242,200],{"class":199},[193,244,204],{"class":203},[193,246,247],{"class":203}," lint:fix",[193,249,250],{"class":210},"        # type-aware Oxlint across the workspace, applying fixes\n",[193,252,254,256,258,261],{"class":195,"line":253},5,[193,255,200],{"class":199},[193,257,204],{"class":203},[193,259,260],{"class":203}," knip",[193,262,263],{"class":210},"            # find unused files, exports, and dependencies\n",[193,265,267,269,271,274],{"class":195,"line":266},6,[193,268,200],{"class":199},[193,270,204],{"class":203},[193,272,273],{"class":203}," lint:ci",[193,275,276],{"class":210},"         # format:check + lint + knip, the CI gate\n",[193,278,280,282,284,287],{"class":195,"line":279},7,[193,281,200],{"class":199},[193,283,204],{"class":203},[193,285,286],{"class":203}," typecheck",[193,288,289],{"class":210},"       # TypeScript checks across the project graph\n",[193,291,293,295,297,300],{"class":195,"line":292},8,[193,294,200],{"class":199},[193,296,204],{"class":203},[193,298,299],{"class":203}," check:repo",[193,301,302],{"class":210},"      # community files and Agent Skills conventions\n",[174,304,305],{},"Use the smallest relevant check while iterating, then run the complete set before opening a pull request:",[183,307,309],{"className":185,"code":308,"language":187,"meta":188,"style":188},"aube run check:repo\naube run lint:ci\naube run typecheck\naube test\naube run build\n",[190,310,311,320,329,338,345],{"__ignoreMap":188},[193,312,313,315,317],{"class":195,"line":196},[193,314,200],{"class":199},[193,316,204],{"class":203},[193,318,319],{"class":203}," check:repo\n",[193,321,322,324,326],{"class":195,"line":214},[193,323,200],{"class":199},[193,325,204],{"class":203},[193,327,328],{"class":203}," lint:ci\n",[193,330,331,333,335],{"class":195,"line":227},[193,332,200],{"class":199},[193,334,204],{"class":203},[193,336,337],{"class":203}," typecheck\n",[193,339,340,342],{"class":195,"line":240},[193,341,200],{"class":199},[193,343,344],{"class":203}," test\n",[193,346,347,349,351],{"class":195,"line":253},[193,348,200],{"class":199},[193,350,204],{"class":203},[193,352,353],{"class":203}," build\n",[178,355,357],{"id":356},"tools","Tools",[359,360,361,379,435],"ul",{},[362,363,364,374,375,378],"li",{},[365,366,367],"strong",{},[368,369,373],"a",{"href":370,"rel":371},"https:\u002F\u002Foxc.rs",[372],"nofollow","Oxfmt"," formats every source and markdown file, configured by ",[190,376,377],{},"tooling\u002Foxc\u002F.oxfmtrc.json",". Avoid unrelated formatting churn in pull requests.",[362,380,381,387,388,391,392,395,396,399,400,395,403,406,407,410,411,414,415,422,423,430,431,434],{},[365,382,383],{},[368,384,386],{"href":370,"rel":385},[372],"Oxlint"," runs with type-aware checks, configured by ",[190,389,390],{},"tooling\u002Foxc\u002Fbase.oxlintrc.json"," (shared rules) and extended per workspace scope by ",[190,393,394],{},"tooling\u002Foxc\u002Fpackages.oxlintrc.json"," (adds the ",[190,397,398],{},"node"," plugin) and ",[190,401,402],{},"tooling\u002Foxc\u002Fapps.oxlintrc.json",[190,404,405],{},"vue"," plugin); both extend the base and are referenced from each package's own ",[190,408,409],{},"lint","\u002F",[190,412,413],{},"lint:fix"," scripts. The base config is extended with ",[368,416,419],{"href":417,"rel":418},"https:\u002F\u002Fgithub.com\u002Fe18e\u002Feslint-plugin",[372],[190,420,421],{},"@e18e\u002Feslint-plugin"," for modernization, module-replacement, and performance rules, plus the vendored ",[368,424,427],{"href":425,"rel":426},"https:\u002F\u002Fgithub.com\u002Fdmmulroy\u002Fanti-slop",[372],[190,428,429],{},"anti-slop"," rules under ",[190,432,433],{},"tools\u002Foxlint\u002Fanti-slop"," for low-evidence TypeScript patterns.",[362,436,437,444,445,448],{},[365,438,439],{},[368,440,443],{"href":441,"rel":442},"https:\u002F\u002Fknip.dev",[372],"Knip"," detects unused files, exports, and dependencies; per-workspace entry points are declared in ",[190,446,447],{},"knip.jsonc",".",[178,450,452],{"id":451},"git-hooks","Git hooks",[174,454,455,458,459,462],{},[190,456,457],{},"aube install"," installs Git hooks through the ",[190,460,461],{},"prepare"," script (skipped in CI and production):",[359,464,465,475],{},[362,466,467,470,471,474],{},[365,468,469],{},"pre-commit"," runs ",[190,472,473],{},"nano-staged",", which formats staged files with Oxfmt and re-stages them. If it fails, fix the reported error and commit again; formatting fixes are applied automatically.",[362,476,477,470,480,483],{},[365,478,479],{},"commit-msg",[190,481,482],{},"commitlint",", which enforces Conventional Commit messages.",[178,485,487],{"id":486},"conventional-commits","Conventional Commits",[174,489,490],{},"Use Conventional Commit-style messages and pull-request titles:",[183,492,497],{"className":493,"code":495,"language":496,"meta":188},[494],"language-text","feat(cli): add machine-readable doctor output\nfix(runner): reject paths outside the checkout\ndocs(contributing): document release verification\ntest(agent): cover failed verification transition\n","text",[190,498,495],{"__ignoreMap":188},[500,501,502],"style",{},"html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}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":188,"searchDepth":214,"depth":214,"links":504},[505,506,507,508],{"id":180,"depth":214,"text":181},{"id":356,"depth":214,"text":357},{"id":451,"depth":214,"text":452},{"id":486,"depth":214,"text":487},"md",null,{},true,{"title":102,"description":176},"ecHqpePpn_6i0F71DTZ0a8_8w9uW6bzwmIvHl23acZ8",[516,517],{"title":98,"path":99,"stem":100,"description":188,"children":-1},{"title":106,"path":107,"stem":108,"description":518,"children":-1},"Task-specific Agent Skills give coding agents (and humans) focused guidance for safety-sensitive or convention-heavy work. They live in .skills\u002F — one directory per skill, each with a SKILL.md — and are exposed to coding agents through .agents\u002Fskills\u002F, managed by skilld.",1787482153936]