<?xml version="1.0" encoding="UTF-8"?><rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Bingo | Blog</title><description/><link>https://create.bingo/</link><language>en</language><item><title>Bingo is Early Adopter Ready</title><link>https://create.bingo/blog/bingo-is-early-adopter-ready/</link><guid isPermaLink="true">https://create.bingo/blog/bingo-is-early-adopter-ready/</guid><description>Hello, world! 💝 &amp;lt;br /&amp;gt; &amp;lt;br /&amp;gt; Bingo is a new repository template framework. It allows you to build delightful templates for web repositories with built-in support for friendly CLIs, type-safe options, and fully testable templates. After half a year of early development, I&apos;m happy to announce that Bingo is &quot;early adopter ready&quot;. &amp;lt;br /&amp;gt; &amp;lt;br /&amp;gt; What&apos;s Bingo, you ask? What does early adoption mean? Great questions - read on to learn more!

</description><pubDate>Mon, 14 Apr 2025 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Hello, world! 💝&lt;/p&gt;
&lt;p&gt;Bingo is a new repository template framework.
It allows you to build delightful templates for web repositories with built-in support for friendly CLIs, type-safe options, and fully testable templates.&lt;/p&gt;
&lt;p&gt;After half a year of early development, I’m happy to announce that Bingo is &lt;em&gt;“early adopter ready”&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;What’s Bingo, you ask?
What does early adoption mean?
Great questions - read on to learn more!&lt;/p&gt;
&lt;div&gt;&lt;h2 id=&quot;why-a-template-framework&quot;&gt;Why a Template Framework?&lt;/h2&gt;&lt;/div&gt;
&lt;p&gt;Building web templates like &lt;a href=&quot;https:/github.com/JoshuaKGoldberg&quot;&gt;create-typescript-app&lt;/a&gt; are surprisingly difficult to create and maintain.
Templates need to do more than just copy and paste static files into a new Git repository.
Popular templates generally at least:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Provide configurable options such as what framework(s) or language to include&lt;/li&gt;
&lt;li&gt;Prompt for details such as repository name from the running user&lt;/li&gt;
&lt;li&gt;Substitute in those details into the appropriate files based on selected options&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Plus, many teams need to configure more than just the files in their repositories.
GitHub repository settings such as branch rulesets and labels are often must-haves for many teams.
Those can be painstaking to configure manually, especially for settings such as required status checks that can be different depending on the script(s) used in a repository.&lt;/p&gt;
&lt;div&gt;&lt;h2 id=&quot;bingo&quot;&gt;Bingo?&lt;/h2&gt;&lt;/div&gt;
&lt;p&gt;Bingo is a framework for delightful web repository templates.
It provides rich scaffolding for flexible repository templates that describe the files and settings for projects.&lt;/p&gt;
&lt;p&gt;You can think of Bingo as a framework the same way that Express.js or React are frameworks.
Instead of giving it a description of a UI (à la React) or an HTTP server (à la Express), Bingo takes in a description of how to create the files to scaffold a repository.&lt;/p&gt;
&lt;aside aria-label=&quot;Tip&quot;&gt;&lt;p aria-hidden=&quot;true&quot;&gt;Tip&lt;/p&gt;&lt;div&gt;&lt;p&gt;The closest equivalents to Bingo are &lt;a href=&quot;https://plopjs.com&quot;&gt;Plop&lt;/a&gt; and &lt;a href=&quot;https://yeoman.io&quot;&gt;Yeoman&lt;/a&gt;.
See &lt;a href=&quot;https://www.create.bingo/faqs/#ecosystem-comparisons&quot;&gt;FAQs &gt; Ecosystem Comparisons&lt;/a&gt; to learn how Bingo compares with other tools.&lt;/p&gt;&lt;/div&gt;&lt;/aside&gt;
&lt;p&gt;Templates built with Bingo can do as little as define a small set of files and as much as describe the API calls and shell scripts that must be run with initializing a new repository and/or migrating it to a newer version of its Bingo template.&lt;/p&gt;
&lt;p&gt;A straightforward Bingo template will generally at least define: an &lt;code dir=&quot;auto&quot;&gt;option&lt;/code&gt; schema describing what configurable options they take in, along with a &lt;code dir=&quot;auto&quot;&gt;produce()&lt;/code&gt; function to turn those options into files.
Files are represented as in-memory strings.&lt;/p&gt;
&lt;p&gt;This template defines &lt;code dir=&quot;auto&quot;&gt;owner&lt;/code&gt; and &lt;code dir=&quot;auto&quot;&gt;repository&lt;/code&gt; options that are turned into &lt;code dir=&quot;auto&quot;&gt;package.json&lt;/code&gt; and &lt;code dir=&quot;auto&quot;&gt;README.md&lt;/code&gt; files:&lt;/p&gt;
&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;import&lt;/span&gt;&lt;span&gt; { createTemplate } &lt;/span&gt;&lt;span&gt;from&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;&quot;&lt;/span&gt;&lt;span&gt;bingo&lt;/span&gt;&lt;span&gt;&quot;&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;import&lt;/span&gt;&lt;span&gt; { z } &lt;/span&gt;&lt;span&gt;from&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;&quot;&lt;/span&gt;&lt;span&gt;zod&lt;/span&gt;&lt;span&gt;&quot;&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;export&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;default&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;createTemplate&lt;/span&gt;&lt;span&gt;({&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span&gt;options: {&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;owner: z&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;string&lt;/span&gt;&lt;span&gt;(),&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;repository: z&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;string&lt;/span&gt;&lt;span&gt;(),&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span&gt;},&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;  &lt;/span&gt;&lt;span&gt;produce&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;&lt;span&gt;{ &lt;/span&gt;&lt;span&gt;options&lt;/span&gt;&lt;span&gt; }&lt;/span&gt;&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;    &lt;/span&gt;&lt;span&gt;return&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;&lt;/span&gt;&lt;span&gt;package.json&lt;/span&gt;&lt;span&gt;&quot;&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;JSON&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;stringify&lt;/span&gt;&lt;span&gt;({&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span&gt;name: options&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;name&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span&gt;repository: &lt;/span&gt;&lt;span&gt;`&lt;/span&gt;&lt;span&gt;github:&lt;/span&gt;&lt;span&gt;${&lt;/span&gt;&lt;span&gt;options&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;owner&lt;/span&gt;&lt;span&gt;}&lt;/span&gt;&lt;span&gt;/&lt;/span&gt;&lt;span&gt;${&lt;/span&gt;&lt;span&gt;options&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;repository&lt;/span&gt;&lt;span&gt;}&lt;/span&gt;&lt;span&gt;`&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span&gt;}),&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;      &lt;/span&gt;&lt;span&gt;&quot;&lt;/span&gt;&lt;span&gt;README.md&lt;/span&gt;&lt;span&gt;&quot;&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;`&lt;/span&gt;&lt;span&gt;# &lt;/span&gt;&lt;span&gt;${&lt;/span&gt;&lt;span&gt;options&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;repository&lt;/span&gt;&lt;span&gt;}&lt;/span&gt;&lt;span&gt;\n\n&lt;/span&gt;&lt;span&gt;Hello, world!&lt;/span&gt;&lt;span&gt;`&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;};&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span&gt;},&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;});&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;&lt;/div&gt;
&lt;p&gt;That’s all you have to do define your first Bingo template! ✨&lt;/p&gt;
&lt;p&gt;Bingo templates can onboard many more features, including:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://create.bingo/build/concepts/creations&quot;&gt;Additionally defining network requests and/or shell scripts&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://create.bingo/engines/handlebars/about&quot;&gt;Defining files with Handlebars templates&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://create.bingo/engines/stratum/about&quot;&gt;Presets of configurable, swappable “Blocks” of features&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://create.bingo/build/packages/bingo-testers&quot;&gt;Unit testing template creations&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;aside aria-label=&quot;Tip&quot;&gt;&lt;p aria-hidden=&quot;true&quot;&gt;Tip&lt;/p&gt;&lt;div&gt;&lt;p&gt;For more examples of templates built with Bingo, see: &lt;a href=&quot;https://github.com/bingo-examples&quot;&gt;bingo-examples&lt;/a&gt;.&lt;/p&gt;&lt;/div&gt;&lt;/aside&gt;
&lt;div&gt;&lt;h2 id=&quot;early-adopter-ready&quot;&gt;Early Adopter Ready?&lt;/h2&gt;&lt;/div&gt;
&lt;p&gt;Bingo is ready for you to use.&lt;/p&gt;
&lt;p&gt;The 2.x version of &lt;a href=&quot;https://github.com/JoshuaKGoldberg/create-typescript-app&quot;&gt;create-typescript-app&lt;/a&gt; (“CTA”) has used Bingo in production for several months.
CTA’s 2.x graduated from beta to stable last month.
It was able to do so because Bingo is generally stable at runtime: it does not crash in common usage scenarios and its APIs are documented.&lt;/p&gt;
&lt;p&gt;However, keep in mind that Bingo is still early stage and pre-1.x.
It hasn’t been used by any other projects beyond CTA.
Some APIs will likely change over the next year as early adopters put Bingo through its paces.
There will likely be many bugs, documentation issues, and important features to be resolved before Bingo stabilizes.&lt;/p&gt;
&lt;p&gt;The benefit of being an early adopter is that you’ll get hands-on support from me, the creator, as you try Bingo out.
Bugs and missing features you discover will be prioritized early on so you can have as great a repository template as possible built on Bingo.&lt;/p&gt;
&lt;div&gt;&lt;h2 id=&quot;getting-started&quot;&gt;Getting Started&lt;/h2&gt;&lt;/div&gt;
&lt;p&gt;The Bingo framework is a huge step forward in how to define repository frameworks.
I hope you’ll join me in trying it out.
&lt;a href=&quot;https://create.bingo/blog/your-first-bingo-template&quot;&gt;Your First Bingo Template&lt;/a&gt; will walk you through building your first template with Bingo.&lt;/p&gt;
&lt;p&gt;Please, try Bingo out and give feedback:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://discord.gg/SFsnbpWqpU&quot;&gt;Bingo’s Discord&lt;/a&gt;: Join if you’d like to chat about Bingo and/or get help with templates&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/bingo-js/bingo&quot;&gt;github.com/bingo-js/bingo&lt;/a&gt; is always open for bug reports, documentation suggestions, and feature requests&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Thanks for reading, and I look forward to seeing what you build with Bingo! 💝&lt;/p&gt;</content:encoded></item><item><title>Your First Bingo Template</title><link>https://create.bingo/blog/your-first-bingo-template/</link><guid isPermaLink="true">https://create.bingo/blog/your-first-bingo-template/</guid><description>Bingo is a framework for delightful web repository templates. This guide will walk you through creating your first template with Bingo. You&apos;ll see how to define a template that creates a single file, run that template locally with a Bingo CLI, and give that template its own CLI.

</description><pubDate>Thu, 20 Feb 2025 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Bingo is a framework for delightful web repository templates.
This guide will walk you through creating your first template with Bingo.
You’ll see how to define a template that creates a single file, run that template locally with a Bingo CLI, and give that template its own CLI.&lt;/p&gt;
&lt;div&gt;&lt;h2 id=&quot;requirements&quot;&gt;Requirements&lt;/h2&gt;&lt;/div&gt;
&lt;p&gt;Bingo requires &lt;a href=&quot;https://nodejs.org&quot;&gt;Node.js LTS&lt;/a&gt;.
As long as you can run &lt;code dir=&quot;auto&quot;&gt;npm install&lt;/code&gt; or an equivalent, you can develop with Bingo.&lt;/p&gt;
&lt;div&gt;&lt;h2 id=&quot;getting-started&quot;&gt;Getting Started&lt;/h2&gt;&lt;/div&gt;
&lt;p&gt;Bingo templates can be defined in as little as two files:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;a href=&quot;#1-template-file&quot;&gt;Template File&lt;/a&gt;: defining the logic for the template&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#2-runner-file&quot;&gt;Runner File&lt;/a&gt;: script file to run on the CLI&lt;/li&gt;
&lt;/ol&gt;
&lt;aside aria-label=&quot;Tip&quot;&gt;&lt;p aria-hidden=&quot;true&quot;&gt;Tip&lt;/p&gt;&lt;div&gt;&lt;p&gt;For example Bingo template repositories, see:&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/bingo-js/create-example-minimal&quot;&gt;create-example-minimal&lt;/a&gt;: The barest bones template as created by this docs page&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/bingo-js/create-example&quot;&gt;create-example&lt;/a&gt;: A larger template with more options and tests&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;&lt;a href=&quot;https://github.com/bingo-examples&quot;&gt;github.com/bingo-examples&lt;/a&gt; contains more examples of Bingo templates.&lt;/p&gt;&lt;/div&gt;&lt;/aside&gt;
&lt;div&gt;&lt;h3 id=&quot;1-template-file&quot;&gt;1. Template File&lt;/h3&gt;&lt;/div&gt;
&lt;p&gt;In a new empty directory, create a &lt;code dir=&quot;auto&quot;&gt;package.json&lt;/code&gt;, install &lt;code dir=&quot;auto&quot;&gt;bingo&lt;/code&gt; as a dependency, then create a &lt;code dir=&quot;auto&quot;&gt;template.js&lt;/code&gt; file:&lt;/p&gt;
&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;span&gt;package.json&lt;/span&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;{&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;  &lt;/span&gt;&lt;span&gt;&quot;name&quot;&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;&quot;&lt;/span&gt;&lt;span&gt;my-template&lt;/span&gt;&lt;span&gt;&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;  &lt;/span&gt;&lt;span&gt;&quot;version&quot;&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;&quot;&lt;/span&gt;&lt;span&gt;0.0.0&lt;/span&gt;&lt;span&gt;&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;  &lt;/span&gt;&lt;span&gt;&quot;type&quot;&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;&quot;&lt;/span&gt;&lt;span&gt;module&lt;/span&gt;&lt;span&gt;&quot;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;&lt;/div&gt;
&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;span&gt;&lt;/span&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;npm&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;i&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;bingo&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;&lt;/div&gt;
&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;span&gt;template.js&lt;/span&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;import&lt;/span&gt;&lt;span&gt; { createTemplate } &lt;/span&gt;&lt;span&gt;from&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;&quot;&lt;/span&gt;&lt;span&gt;bingo&lt;/span&gt;&lt;span&gt;&quot;&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;const &lt;/span&gt;&lt;span&gt;template&lt;/span&gt;&lt;span&gt; = &lt;/span&gt;&lt;span&gt;createTemplate&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;{&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;  &lt;/span&gt;&lt;span&gt;produce&lt;/span&gt;&lt;span&gt;()&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;return {&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span&gt;files: {&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;        &lt;/span&gt;&lt;span&gt;&quot;&lt;/span&gt;&lt;span&gt;README.md&lt;/span&gt;&lt;span&gt;&quot;&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;&quot;&lt;/span&gt;&lt;span&gt;# Hello, world!&lt;/span&gt;&lt;span&gt;&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span&gt;},&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span&gt;};&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span&gt;},&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;}&lt;/span&gt;&lt;span&gt;);&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;export&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;default&lt;/span&gt;&lt;span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;template&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;export const { &lt;/span&gt;&lt;span&gt;createConfig&lt;/span&gt;&lt;span&gt; } = &lt;/span&gt;&lt;span&gt;&lt;span&gt;template&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;&lt;/div&gt;
&lt;p&gt;You can then provide the path to that file to the &lt;a href=&quot;https://create.bingo/build/cli&quot;&gt;&lt;code dir=&quot;auto&quot;&gt;bingo&lt;/code&gt; CLI&lt;/a&gt; to create a &lt;code dir=&quot;auto&quot;&gt;README.md&lt;/code&gt; file in a &lt;code dir=&quot;auto&quot;&gt;generated/&lt;/code&gt; directory:&lt;/p&gt;
&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;span&gt;&lt;/span&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;npx&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;bingo&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;template.js&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;--directory&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;generated&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;&lt;/div&gt;
&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;┌  ✨ bingo@... ✨&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;│&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;◇  Imported ./template.js&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;│&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;◇  Running with mode --setup&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;│&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;◇  Inferred default options from system&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;│&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;▲  Running in local-only mode. Add string-like options.owner and options.repository schemas to enable creating a repository on GitHub.&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;│&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;◇  Ran the bingo template.js template&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;│&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;◇  Prepared local Git repository&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;│&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;│  You&apos;ve got a new repository ready to use in:&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;│    ./generated&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;│&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;└  Thanks for using bingo! 💝&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;&lt;/div&gt;
&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;span&gt;generated/README.md&lt;/span&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;# Hello, world!&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;&lt;/div&gt;
&lt;p&gt;🥳 Congratulations!
You just built and ran your first template with Bingo.&lt;/p&gt;
&lt;div&gt;&lt;h3 id=&quot;2-runner-file&quot;&gt;2. Runner File&lt;/h3&gt;&lt;/div&gt;
&lt;p&gt;Bingo templates provide their own CLI to use instead of &lt;code dir=&quot;auto&quot;&gt;bingo&lt;/code&gt;.
That way end-users don’t need to install any Bingo dependencies, just the template.&lt;/p&gt;
&lt;p&gt;Create an &lt;code dir=&quot;auto&quot;&gt;index.js&lt;/code&gt; file with the following content:&lt;/p&gt;
&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;span&gt;index.js&lt;/span&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;#!/usr/bin/env node&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;import&lt;/span&gt;&lt;span&gt; { runTemplateCLI } &lt;/span&gt;&lt;span&gt;from&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;&quot;&lt;/span&gt;&lt;span&gt;bingo&lt;/span&gt;&lt;span&gt;&quot;&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;import&lt;/span&gt;&lt;span&gt; template &lt;/span&gt;&lt;span&gt;from&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;&quot;&lt;/span&gt;&lt;span&gt;./template.js&lt;/span&gt;&lt;span&gt;&quot;&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;process&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;exitCode&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;await&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;runTemplateCLI&lt;/span&gt;&lt;span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;template&lt;/span&gt;&lt;span&gt;);&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;&lt;/div&gt;
&lt;p&gt;Then, add a &lt;code dir=&quot;auto&quot;&gt;bin&lt;/code&gt; entry for the &lt;code dir=&quot;auto&quot;&gt;index.js&lt;/code&gt; file to your &lt;code dir=&quot;auto&quot;&gt;package.json&lt;/code&gt;:&lt;/p&gt;
&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;span&gt;package.json&lt;/span&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;{&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;  &lt;/span&gt;&lt;span&gt;&quot;name&quot;&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;&quot;&lt;/span&gt;&lt;span&gt;my-template&lt;/span&gt;&lt;span&gt;&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;  &lt;/span&gt;&lt;span&gt;&quot;version&quot;&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;&quot;&lt;/span&gt;&lt;span&gt;0.0.0&lt;/span&gt;&lt;span&gt;&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;  &lt;/span&gt;&lt;span&gt;&quot;type&quot;&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;&quot;&lt;/span&gt;&lt;span&gt;module&lt;/span&gt;&lt;span&gt;&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;  &lt;/span&gt;&lt;span&gt;&quot;bin&quot;&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;&quot;&lt;/span&gt;&lt;span&gt;index.js&lt;/span&gt;&lt;span&gt;&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;  &lt;/span&gt;&lt;span&gt;&quot;dependencies&quot;&lt;/span&gt;&lt;span&gt;: { &lt;/span&gt;&lt;span&gt;...&lt;/span&gt;&lt;span&gt; },&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;&lt;/div&gt;
&lt;p&gt;You and your template’s users will now be able to run your template with &lt;code dir=&quot;auto&quot;&gt;npx&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Try it out locally with:&lt;/p&gt;
&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;span&gt;&lt;/span&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;npx&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;--directory&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;generated&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;&lt;/div&gt;
&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;┌  ✨ my-template@0.0.0 ✨&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;│&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;◇  Running with mode --transition&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;│&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;◇  Ran my-template&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;│&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;└  Done. Enjoy your updated repository! 💝&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;&lt;/div&gt;
&lt;p&gt;🥳 Congratulations!
You just built and ran your first Bingo template CLI.&lt;/p&gt;
&lt;div&gt;&lt;h2 id=&quot;learning-more&quot;&gt;Learning More&lt;/h2&gt;&lt;/div&gt;
&lt;p&gt;Here are the main concepts you’ll want to understand:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://create.bingo/build/concepts/creations&quot;&gt;Creations&lt;/a&gt;&lt;/strong&gt;: how the pieces of a repository are described by templates in-memory&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://create.bingo/build/concepts/modes&quot;&gt;Modes&lt;/a&gt;&lt;/strong&gt;: the ways Bingo can be run to create a new repository or migrate an existing one&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://create.bingo/build/concepts/templates&quot;&gt;Templates&lt;/a&gt;&lt;/strong&gt;: describing how to setup or transition a repository given a set of options&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;See also API documentation for the functions referenced on this page:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://create.bingo/build/apis/create-template&quot;&gt;&lt;code dir=&quot;auto&quot;&gt;createTemplate&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://create.bingo/build/apis/run-template-cli&quot;&gt;&lt;code dir=&quot;auto&quot;&gt;runTemplateCLI&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</content:encoded></item></channel></rss>