[{"data":1,"prerenderedAt":626},["ShallowReactive",2],{"navigation_docs":3,"-docs-registries-anatomy":145,"-docs-registries-anatomy-surround":621},[4,8,12,16,51,81,103],{"title":5,"path":6,"stem":7},"Introduction","\u002Fdocs\u002Fintroduction","docs\u002F1.introduction",{"title":9,"path":10,"stem":11},"Getting started","\u002Fdocs\u002Fgetting-started","docs\u002F2.getting-started",{"title":13,"path":14,"stem":15},"Environment variables","\u002Fdocs\u002Fenvironment-variables","docs\u002F3.environment-variables",{"title":17,"icon":18,"path":19,"stem":20,"children":21,"page":50},"Guide","i-lucide-book-open","\u002Fdocs\u002Fguide","docs\u002F4.guide",[22,26,30,34,38,42,46],{"title":23,"path":24,"stem":25},"Scaffold a project","\u002Fdocs\u002Fguide\u002Fscaffold","docs\u002F4.guide\u002F1.scaffold",{"title":27,"path":28,"stem":29},"Pin and manage templates","\u002Fdocs\u002Fguide\u002Fpin","docs\u002F4.guide\u002F2.pin",{"title":31,"path":32,"stem":33},"Update pinned templates","\u002Fdocs\u002Fguide\u002Fupdating","docs\u002F4.guide\u002F3.updating",{"title":35,"path":36,"stem":37},"Find templates","\u002Fdocs\u002Fguide\u002Fsearch","docs\u002F4.guide\u002F4.search",{"title":39,"path":40,"stem":41},"Manage registries","\u002Fdocs\u002Fguide\u002Fregistry","docs\u002F4.guide\u002F5.registry",{"title":43,"path":44,"stem":45},"Troubleshooting","\u002Fdocs\u002Fguide\u002Ftroubleshooting","docs\u002F4.guide\u002F6.troubleshooting",{"title":47,"path":48,"stem":49},"Build your first template","\u002Fdocs\u002Fguide\u002Fcreate-template","docs\u002F4.guide\u002F7.create-template",false,{"title":52,"icon":53,"path":54,"stem":55,"children":56,"page":50},"Templates","i-lucide-layout-template","\u002Fdocs\u002Ftemplates","docs\u002F5.templates",[57,61,65,69,73,77],{"title":58,"path":59,"stem":60},"Template anatomy","\u002Fdocs\u002Ftemplates\u002Fanatomy","docs\u002F5.templates\u002F1.anatomy",{"title":62,"path":63,"stem":64},"Template params","\u002Fdocs\u002Ftemplates\u002Fparams","docs\u002F5.templates\u002F2.params",{"title":66,"path":67,"stem":68},"Template rendering","\u002Fdocs\u002Ftemplates\u002Ftemplate-rendering","docs\u002F5.templates\u002F3.template-rendering",{"title":70,"path":71,"stem":72},"Hooks","\u002Fdocs\u002Ftemplates\u002Fhooks","docs\u002F5.templates\u002F4.hooks",{"title":74,"path":75,"stem":76},"Publish a template","\u002Fdocs\u002Ftemplates\u002Fpublish","docs\u002F5.templates\u002F5.publish",{"title":78,"path":79,"stem":80},"spin.toml","\u002Fdocs\u002Ftemplates\u002Fspin-toml","docs\u002F5.templates\u002F6.spin-toml",{"title":82,"icon":83,"path":84,"stem":85,"children":86,"page":50},"Registries","i-lucide-database","\u002Fdocs\u002Fregistries","docs\u002F6.registries",[87,91,95,99],{"title":88,"path":89,"stem":90},"Registry anatomy","\u002Fdocs\u002Fregistries\u002Fanatomy","docs\u002F6.registries\u002F1.anatomy",{"title":92,"path":93,"stem":94},"Template metadata file","\u002Fdocs\u002Fregistries\u002Ftemplate-metadata","docs\u002F6.registries\u002F2.template-metadata",{"title":96,"path":97,"stem":98},"Run a registry","\u002Fdocs\u002Fregistries\u002Frun","docs\u002F6.registries\u002F3.run",{"title":100,"path":101,"stem":102},"registry.toml","\u002Fdocs\u002Fregistries\u002Fregistry-toml","docs\u002F6.registries\u002F4.registry-toml",{"title":104,"icon":105,"path":106,"stem":107,"children":108,"page":50},"Commands","i-lucide-terminal","\u002Fdocs\u002Fcommands","docs\u002F7.commands",[109,113,117,121,125,129,133,137,141],{"title":110,"path":111,"stem":112},"spin new","\u002Fdocs\u002Fcommands\u002Fnew","docs\u002F7.commands\u002F1.new",{"title":114,"path":115,"stem":116},"spin add","\u002Fdocs\u002Fcommands\u002Fadd","docs\u002F7.commands\u002F2.add",{"title":118,"path":119,"stem":120},"spin list","\u002Fdocs\u002Fcommands\u002Flist","docs\u002F7.commands\u002F3.list",{"title":122,"path":123,"stem":124},"spin update","\u002Fdocs\u002Fcommands\u002Fupdate","docs\u002F7.commands\u002F4.update",{"title":126,"path":127,"stem":128},"spin remove","\u002Fdocs\u002Fcommands\u002Fremove","docs\u002F7.commands\u002F5.remove",{"title":130,"path":131,"stem":132},"spin search","\u002Fdocs\u002Fcommands\u002Fsearch","docs\u002F7.commands\u002F6.search",{"title":134,"path":135,"stem":136},"spin registry","\u002Fdocs\u002Fcommands\u002Fregistry","docs\u002F7.commands\u002F7.registry",{"title":138,"path":139,"stem":140},"spin init","\u002Fdocs\u002Fcommands\u002Finit","docs\u002F7.commands\u002F8.init",{"title":142,"path":143,"stem":144},"spin version","\u002Fdocs\u002Fcommands\u002Fversion","docs\u002F7.commands\u002F9.version",{"id":146,"title":88,"body":147,"description":614,"extension":615,"links":616,"meta":617,"navigation":618,"path":89,"seo":619,"stem":90,"__hash__":620},"docs\u002Fdocs\u002F6.registries\u002F1.anatomy.md",{"type":148,"value":149,"toc":607},"minimark",[150,155,166,169,274,286,290,293,470,488,492,513,554,557,561,585,588,603],[151,152,154],"h2",{"id":153},"directory-layout","Directory layout",[156,157,162],"pre",{"className":158,"code":160,"language":161},[159],"language-text","my-registry\u002F\n  registry.toml\n  templates\u002F\n    go-cli.toml\n    go-api.toml\n    rust-cli.toml\n","text",[163,164,160],"code",{"__ignoreMap":165},"",[151,167,100],{"id":168},"registrytoml",[156,170,174],{"className":171,"code":172,"language":173,"meta":165,"style":165},"language-toml shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","id = \"official\"\nname = \"Official spin templates\"\ndescription = \"Curated templates maintained by the spin team\"\nhomepage = \"https:\u002F\u002Fgithub.com\u002Fexample\u002Fspin-registry\"\nmaintainer = \"Example Team\"\nlicense = \"MIT\"\n","toml",[163,175,176,199,214,229,244,259],{"__ignoreMap":165},[177,178,181,185,189,192,196],"span",{"class":179,"line":180},"line",1,[177,182,184],{"class":183},"sTEyZ","id ",[177,186,188],{"class":187},"sMK4o","=",[177,190,191],{"class":187}," \"",[177,193,195],{"class":194},"sfazB","official",[177,197,198],{"class":187},"\"\n",[177,200,202,205,207,209,212],{"class":179,"line":201},2,[177,203,204],{"class":183},"name ",[177,206,188],{"class":187},[177,208,191],{"class":187},[177,210,211],{"class":194},"Official spin templates",[177,213,198],{"class":187},[177,215,217,220,222,224,227],{"class":179,"line":216},3,[177,218,219],{"class":183},"description ",[177,221,188],{"class":187},[177,223,191],{"class":187},[177,225,226],{"class":194},"Curated templates maintained by the spin team",[177,228,198],{"class":187},[177,230,232,235,237,239,242],{"class":179,"line":231},4,[177,233,234],{"class":183},"homepage ",[177,236,188],{"class":187},[177,238,191],{"class":187},[177,240,241],{"class":194},"https:\u002F\u002Fgithub.com\u002Fexample\u002Fspin-registry",[177,243,198],{"class":187},[177,245,247,250,252,254,257],{"class":179,"line":246},5,[177,248,249],{"class":183},"maintainer ",[177,251,188],{"class":187},[177,253,191],{"class":187},[177,255,256],{"class":194},"Example Team",[177,258,198],{"class":187},[177,260,262,265,267,269,272],{"class":179,"line":261},6,[177,263,264],{"class":183},"license ",[177,266,188],{"class":187},[177,268,191],{"class":187},[177,270,271],{"class":194},"MIT",[177,273,198],{"class":187},[275,276,277,278,281,282,285],"p",{},"Only ",[163,279,280],{},"id"," and ",[163,283,284],{},"name"," are required.",[151,287,289],{"id":288},"templatestoml","templates\u002F*.toml",[275,291,292],{},"Each file describes one template:",[156,294,296],{"className":171,"code":295,"language":173,"meta":165,"style":165},"id = \"go-cli\"\nname = \"Go CLI\"\ndescription = \"Minimal Go CLI starter\"\nsource = \"https:\u002F\u002Fgithub.com\u002Fexample\u002Fgo-cli-template.git\"\ntags = [\"go\", \"cli\"]\nauthors = [\"Example Team\"]\nlicense = \"MIT\"\ntype = \"cli\"\nlanguage = \"go\"\nversion = \"0.1.0\"\nupdated_at = \"2026-01-01\"\n",[163,297,298,311,324,337,351,382,399,412,426,440,455],{"__ignoreMap":165},[177,299,300,302,304,306,309],{"class":179,"line":180},[177,301,184],{"class":183},[177,303,188],{"class":187},[177,305,191],{"class":187},[177,307,308],{"class":194},"go-cli",[177,310,198],{"class":187},[177,312,313,315,317,319,322],{"class":179,"line":201},[177,314,204],{"class":183},[177,316,188],{"class":187},[177,318,191],{"class":187},[177,320,321],{"class":194},"Go CLI",[177,323,198],{"class":187},[177,325,326,328,330,332,335],{"class":179,"line":216},[177,327,219],{"class":183},[177,329,188],{"class":187},[177,331,191],{"class":187},[177,333,334],{"class":194},"Minimal Go CLI starter",[177,336,198],{"class":187},[177,338,339,342,344,346,349],{"class":179,"line":231},[177,340,341],{"class":183},"source ",[177,343,188],{"class":187},[177,345,191],{"class":187},[177,347,348],{"class":194},"https:\u002F\u002Fgithub.com\u002Fexample\u002Fgo-cli-template.git",[177,350,198],{"class":187},[177,352,353,356,358,361,364,367,369,372,374,377,379],{"class":179,"line":246},[177,354,355],{"class":183},"tags ",[177,357,188],{"class":187},[177,359,360],{"class":187}," [",[177,362,363],{"class":187},"\"",[177,365,366],{"class":194},"go",[177,368,363],{"class":187},[177,370,371],{"class":187},",",[177,373,191],{"class":187},[177,375,376],{"class":194},"cli",[177,378,363],{"class":187},[177,380,381],{"class":187},"]\n",[177,383,384,387,389,391,393,395,397],{"class":179,"line":261},[177,385,386],{"class":183},"authors ",[177,388,188],{"class":187},[177,390,360],{"class":187},[177,392,363],{"class":187},[177,394,256],{"class":194},[177,396,363],{"class":187},[177,398,381],{"class":187},[177,400,402,404,406,408,410],{"class":179,"line":401},7,[177,403,264],{"class":183},[177,405,188],{"class":187},[177,407,191],{"class":187},[177,409,271],{"class":194},[177,411,198],{"class":187},[177,413,415,418,420,422,424],{"class":179,"line":414},8,[177,416,417],{"class":183},"type ",[177,419,188],{"class":187},[177,421,191],{"class":187},[177,423,376],{"class":194},[177,425,198],{"class":187},[177,427,429,432,434,436,438],{"class":179,"line":428},9,[177,430,431],{"class":183},"language ",[177,433,188],{"class":187},[177,435,191],{"class":187},[177,437,366],{"class":194},[177,439,198],{"class":187},[177,441,443,446,448,450,453],{"class":179,"line":442},10,[177,444,445],{"class":183},"version ",[177,447,188],{"class":187},[177,449,191],{"class":187},[177,451,452],{"class":194},"0.1.0",[177,454,198],{"class":187},[177,456,458,461,463,465,468],{"class":179,"line":457},11,[177,459,460],{"class":183},"updated_at ",[177,462,188],{"class":187},[177,464,191],{"class":187},[177,466,467],{"class":194},"2026-01-01",[177,469,198],{"class":187},[275,471,472,473,475,476,479,480,483,484,487],{},"The ",[163,474,280],{}," field must match the file basename (without ",[163,477,478],{},".toml","). ",[163,481,482],{},"source"," is the git URL or local path ",[163,485,486],{},"spin"," uses to scaffold the template.",[151,489,491],{"id":490},"source-chaining","Source chaining",[275,493,494,495,497,498,501,502,504,505,508,509,512],{},"A template's ",[163,496,482],{}," can be another ",[163,499,500],{},"\u003Calias>\u002F\u003Cid>"," shorthand. ",[163,503,486],{}," follows at most one redirect, so a chain like ",[163,506,507],{},"official\u002Fgo-cli"," → ",[163,510,511],{},"upstream\u002Fgo-cli"," → final git URL or local path is allowed:",[156,514,516],{"className":171,"code":515,"language":173,"meta":165,"style":165},"id = \"go-cli\"\nname = \"Go CLI\"\nsource = \"upstream\u002Fgo-cli\"\n",[163,517,518,530,542],{"__ignoreMap":165},[177,519,520,522,524,526,528],{"class":179,"line":180},[177,521,184],{"class":183},[177,523,188],{"class":187},[177,525,191],{"class":187},[177,527,308],{"class":194},[177,529,198],{"class":187},[177,531,532,534,536,538,540],{"class":179,"line":201},[177,533,204],{"class":183},[177,535,188],{"class":187},[177,537,191],{"class":187},[177,539,321],{"class":194},[177,541,198],{"class":187},[177,543,544,546,548,550,552],{"class":179,"line":216},[177,545,341],{"class":183},[177,547,188],{"class":187},[177,549,191],{"class":187},[177,551,511],{"class":194},[177,553,198],{"class":187},[275,555,556],{},"Chains longer than two shorthand hops, including cycles, are rejected.",[151,558,560],{"id":559},"register-the-registry","Register the registry",[156,562,566],{"className":563,"code":564,"language":565,"meta":165,"style":165},"language-sh shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","spin registry add official https:\u002F\u002Fgithub.com\u002Fexample\u002Fspin-registry.git\n","sh",[163,567,568],{"__ignoreMap":165},[177,569,570,573,576,579,582],{"class":179,"line":180},[177,571,486],{"class":572},"sBMFI",[177,574,575],{"class":194}," registry",[177,577,578],{"class":194}," add",[177,580,581],{"class":194}," official",[177,583,584],{"class":194}," https:\u002F\u002Fgithub.com\u002Fexample\u002Fspin-registry.git\n",[275,586,587],{},"Then search it:",[156,589,591],{"className":563,"code":590,"language":565,"meta":165,"style":165},"spin search go\n",[163,592,593],{"__ignoreMap":165},[177,594,595,597,600],{"class":179,"line":180},[177,596,486],{"class":572},[177,598,599],{"class":194}," search",[177,601,602],{"class":194}," go\n",[604,605,606],"style",{},"html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}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 .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 pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}",{"title":165,"searchDepth":201,"depth":201,"links":608},[609,610,611,612,613],{"id":153,"depth":201,"text":154},{"id":168,"depth":201,"text":100},{"id":288,"depth":201,"text":289},{"id":490,"depth":201,"text":491},{"id":559,"depth":201,"text":560},"A registry is a collection of templates that spin search can read. It is a directory with registry.toml and a templates\u002F directory.","md",null,{},true,{"title":88,"description":614},"ynUGYgD9cKYEta3RT4lfzV61fvlqCcqjli7o-LGLUJA",[622,624],{"title":78,"path":79,"stem":80,"description":623,"children":-1},"spin.toml lives at the root of every template. It describes the template and tells spin new what questions to ask and what files to render.",{"title":92,"path":93,"stem":94,"description":625,"children":-1},"Each template in a registry is described by a file under templates\u002F\u003Cid>.toml.",1787755180240]