[{"data":1,"prerenderedAt":378},["ShallowReactive",2],{"navigation_docs":3,"-docs-guide-pin":145,"-docs-guide-pin-surround":373},[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":27,"body":147,"description":366,"extension":367,"links":368,"meta":369,"navigation":370,"path":28,"seo":371,"stem":29,"__hash__":372},"docs\u002Fdocs\u002F4.guide\u002F2.pin.md",{"type":148,"value":149,"toc":359},"minimark",[150,155,181,195,200,203,227,231,243,254,258,261,276,282,286,300,309,326,329,343,347,355],[151,152,154],"h2",{"id":153},"pin-a-template","Pin a template",[156,157,162],"pre",{"className":158,"code":159,"language":160,"meta":161,"style":161},"language-sh shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","spin add https:\u002F\u002Fgithub.com\u002Fexample\u002Fgo-cli-template.git\n","sh","",[163,164,165],"code",{"__ignoreMap":161},[166,167,170,174,178],"span",{"class":168,"line":169},"line",1,[166,171,173],{"class":172},"sBMFI","spin",[166,175,177],{"class":176},"sfazB"," add",[166,179,180],{"class":176}," https:\u002F\u002Fgithub.com\u002Fexample\u002Fgo-cli-template.git\n",[182,183,184,186,187,190,191,194],"p",{},[163,185,114],{}," clones the template into ",[163,188,189],{},"~\u002F.config\u002Fspin\u002Ftemplates\u002F"," and records it in ",[163,192,193],{},"~\u002F.config\u002Fspin\u002Fpinned.json",". The pin name is the repo basename.",[196,197],"img",{"alt":198,"src":199},"A recorded terminal demo of pinning a template and using it offline.","\u002Fdemos\u002Fpin.gif",[182,201,202],{},"You can also pin local paths and registry shorthand:",[156,204,206],{"className":158,"code":205,"language":160,"meta":161,"style":161},"spin add ~\u002Fcode\u002Ftemplates\u002Fgo-cli\nspin add official\u002Fgo-cli\n",[163,207,208,217],{"__ignoreMap":161},[166,209,210,212,214],{"class":168,"line":169},[166,211,173],{"class":172},[166,213,177],{"class":176},[166,215,216],{"class":176}," ~\u002Fcode\u002Ftemplates\u002Fgo-cli\n",[166,218,220,222,224],{"class":168,"line":219},2,[166,221,173],{"class":172},[166,223,177],{"class":176},[166,225,226],{"class":176}," official\u002Fgo-cli\n",[151,228,230],{"id":229},"list-pinned-templates","List pinned templates",[156,232,234],{"className":158,"code":233,"language":160,"meta":161,"style":161},"spin list\n",[163,235,236],{"__ignoreMap":161},[166,237,238,240],{"class":168,"line":169},[166,239,173],{"class":172},[166,241,242],{"class":176}," list\n",[182,244,245,246,249,250,253],{},"Use ",[163,247,248],{},"--json"," for machine-readable output and ",[163,251,252],{},"--all"," to include soft-deleted pins.",[151,255,257],{"id":256},"update-a-pinned-template","Update a pinned template",[182,259,260],{},"Refresh the on-disk cache from the upstream source:",[156,262,264],{"className":158,"code":263,"language":160,"meta":161,"style":161},"spin update go-cli-template\n",[163,265,266],{"__ignoreMap":161},[166,267,268,270,273],{"class":168,"line":169},[166,269,173],{"class":172},[166,271,272],{"class":176}," update",[166,274,275],{"class":176}," go-cli-template\n",[182,277,278,279,281],{},"Omit the name to refresh every pinned template. ",[163,280,122],{}," snapshots the old cache before refreshing and rolls back on failure.",[151,283,285],{"id":284},"remove-a-pin","Remove a pin",[156,287,289],{"className":158,"code":288,"language":160,"meta":161,"style":161},"spin remove go-cli-template\n",[163,290,291],{"__ignoreMap":161},[166,292,293,295,298],{"class":168,"line":169},[166,294,173],{"class":172},[166,296,297],{"class":176}," remove",[166,299,275],{"class":176},[182,301,302,303,305,306,308],{},"This soft-deletes the pin: it disappears from ",[163,304,118],{}," and ",[163,307,110],{},", but the cache stays on disk. To delete the cache too:",[156,310,312],{"className":158,"code":311,"language":160,"meta":161,"style":161},"spin remove go-cli-template --purge\n",[163,313,314],{"__ignoreMap":161},[166,315,316,318,320,323],{"class":168,"line":169},[166,317,173],{"class":172},[166,319,297],{"class":176},[166,321,322],{"class":176}," go-cli-template",[166,324,325],{"class":176}," --purge\n",[182,327,328],{},"You can purge a soft-deleted pin later:",[156,330,331],{"className":158,"code":311,"language":160,"meta":161,"style":161},[163,332,333],{"__ignoreMap":161},[166,334,335,337,339,341],{"class":168,"line":169},[166,336,173],{"class":172},[166,338,297],{"class":176},[166,340,322],{"class":176},[166,342,325],{"class":176},[151,344,346],{"id":345},"storage-layout","Storage layout",[156,348,353],{"className":349,"code":351,"language":352},[350],"language-text","~\u002F.config\u002Fspin\u002F\n  pinned.json          # pin records\n  templates\u002F           # cached template clones\n    go-cli-template\u002F\n","text",[163,354,351],{"__ignoreMap":161},[356,357,358],"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 .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":161,"searchDepth":219,"depth":219,"links":360},[361,362,363,364,365],{"id":153,"depth":219,"text":154},{"id":229,"depth":219,"text":230},{"id":256,"depth":219,"text":257},{"id":284,"depth":219,"text":285},{"id":345,"depth":219,"text":346},"Pin a template locally so spin new can use it by short name and work offline.","md",null,{},true,{"title":27,"description":366},"4ivUL2SwgqhyWsQexxUwidyFVlTKyYZfB7csBVDS89c",[374,376],{"title":23,"path":24,"stem":25,"description":375,"children":-1},"Create a new project from a template.",{"title":31,"path":32,"stem":33,"description":377,"children":-1},"Pinned templates are local copies. Over time the upstream source changes. spin update refreshes the cache.",1787755180240]