<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Yash Jagtap</title>
    <description>The latest articles on DEV Community by Yash Jagtap (@0x_yasshhh_).</description>
    <link>https://dev.to/0x_yasshhh_</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F945949%2F9653e689-740a-4bf4-a860-dbef59ea6d21.jpeg</url>
      <title>DEV Community: Yash Jagtap</title>
      <link>https://dev.to/0x_yasshhh_</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/0x_yasshhh_"/>
    <language>en</language>
    <item>
      <title>Publishing a docs site with Thally: what worked, what did not</title>
      <dc:creator>Yash Jagtap</dc:creator>
      <pubDate>Wed, 21 Oct 2026 12:58:44 +0000</pubDate>
      <link>https://dev.to/0x_yasshhh_/publishing-a-docs-site-with-thally-what-worked-what-did-not-56jj</link>
      <guid>https://dev.to/0x_yasshhh_/publishing-a-docs-site-with-thally-what-worked-what-did-not-56jj</guid>
      <description>&lt;p&gt;I needed a small documentation site for a workflow I know well: building and&lt;br&gt;
debugging subgraphs on The Graph. I used &lt;a href="https://thally.io" rel="noopener noreferrer"&gt;Thally&lt;/a&gt;, an&lt;br&gt;
open-source docs engine with a managed host, and the whole thing took a bit&lt;br&gt;
under two hours including the detours. This is the path I would take if I&lt;br&gt;
had to do it again, with the detours called out so you can skip them.&lt;/p&gt;

&lt;p&gt;The result is live at&lt;br&gt;
&lt;a href="https://yashpersonal.thally.app" rel="noopener noreferrer"&gt;yashpersonal.thally.app&lt;/a&gt; and the source is&lt;br&gt;
at &lt;a href="https://github.com/yash251/yashpersonaldocs" rel="noopener noreferrer"&gt;github.com/yash251/yashpersonaldocs&lt;/a&gt;.&lt;/p&gt;
&lt;h2&gt;
  
  
  What Thally is, in one paragraph
&lt;/h2&gt;

&lt;p&gt;Thally is a Next.js docs framework. Pages are MDX files in &lt;code&gt;src/content/&lt;/code&gt;,&lt;br&gt;
navigation is one JSON file, and branding is one TypeScript file. The same&lt;br&gt;
source renders HTML for people and Markdown, &lt;code&gt;llms.txt&lt;/code&gt;, and a read-only MCP&lt;br&gt;
endpoint for AI tools, without any extra configuration. Thally Cloud hosts&lt;br&gt;
the site, builds on every push to &lt;code&gt;main&lt;/code&gt;, and gives you a &lt;code&gt;*.thally.app&lt;/code&gt;&lt;br&gt;
address. The free tier allows one managed site and needs no card.&lt;/p&gt;
&lt;h2&gt;
  
  
  Prerequisites
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;A GitHub account. Thally creates the docs repository for you and needs to
install a GitHub App on your account.&lt;/li&gt;
&lt;li&gt;Node.js 20 or newer, for running checks locally. You can skip this and
edit on GitHub, but you will want the local preview.&lt;/li&gt;
&lt;li&gt;Something to document. Pick one workflow you can explain end to end. I
chose "deploy a subgraph and debug it when it fails" because I have
answered that question hundreds of times in support.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;
  
  
  Step 1: Create the site in Thally Cloud
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;Sign in at &lt;a href="https://app.thally.io" rel="noopener noreferrer"&gt;app.thally.io&lt;/a&gt; with GitHub. The
first sign-in starts a 7-day trial of the paid tier; it drops to the
free tier afterwards and your site stays up.&lt;/li&gt;
&lt;li&gt;Select &lt;strong&gt;Create a site&lt;/strong&gt;. Enter a name, an optional description, and
the &lt;code&gt;thally.app&lt;/code&gt; subdomain you want. Thally checks availability
inline.&lt;/li&gt;
&lt;li&gt;On &lt;strong&gt;Where do your docs live?&lt;/strong&gt;, choose &lt;strong&gt;Create a new docs
repository&lt;/strong&gt;.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;Detour 1: don't use "Import from a docs URL".&lt;/strong&gt; The wizard offers to&lt;br&gt;
import an existing public docs site by URL. I pointed it at&lt;br&gt;
&lt;code&gt;thegraph.com/docs/en/&lt;/code&gt; out of curiosity. It reported "0 pages imported;&lt;br&gt;
14 pages failed" and offered no per-page reason beyond "contact support".&lt;br&gt;
That site is a client-rendered Next.js app behind Cloudflare, so a crawler&lt;br&gt;
gets empty shells. Importing someone else's docs was never the right move&lt;br&gt;
for this exercise anyway, but the error message would not have helped me&lt;br&gt;
if it had been.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Install the Thally Labs GitHub App when prompted. It asks for &lt;strong&gt;All
repositories&lt;/strong&gt; with read and write access to administration, code, pull
requests, and workflows.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;Detour 2: that scope is broader than you want.&lt;/strong&gt; Thally needs&lt;br&gt;
administration access to create the repo, and GitHub only lets an App reach&lt;br&gt;
a repo it creates if it was installed on all repositories. Install it, and&lt;br&gt;
then once the site is live, go to GitHub &lt;strong&gt;Settings &amp;gt; Applications &amp;gt; Thally&lt;br&gt;
Labs &amp;gt; Configure&lt;/strong&gt; and switch to &lt;strong&gt;Only select repositories&lt;/strong&gt; with just the&lt;br&gt;
docs repo. Thally keeps working because that is the only repo it touches.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Skip &lt;strong&gt;Product sources&lt;/strong&gt; and &lt;strong&gt;Knowledge surfaces&lt;/strong&gt;. Both are for
Thally's change-tracking feature and are not needed for a first site.&lt;/li&gt;
&lt;li&gt;On &lt;strong&gt;Ready to publish&lt;/strong&gt;, check the repo name. Mine was
&lt;code&gt;yash251/yashpersonaldocs&lt;/code&gt;. Select &lt;strong&gt;Publish site&lt;/strong&gt;.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;Detour 3: the repo is created private, and you cannot change that&lt;br&gt;
here.&lt;/strong&gt; The review screen shows "New repository from the Thally template ·&lt;br&gt;
private" with an Edit button, but Edit restarts the repository step&lt;br&gt;
instead of offering a visibility toggle. I published anyway and flipped it&lt;br&gt;
afterwards:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;gh repo edit yash251/yashpersonaldocs &lt;span class="nt"&gt;--visibility&lt;/span&gt; public &lt;span class="nt"&gt;--accept-visibility-change-consequences&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The first deployment took a few minutes from pressing Publish to the&lt;br&gt;
template site responding at the &lt;code&gt;thally.app&lt;/code&gt; address.&lt;/p&gt;
&lt;h2&gt;
  
  
  Step 2: Clone and look around
&lt;/h2&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;gh repo clone yash251/yashpersonaldocs
&lt;span class="nb"&gt;cd &lt;/span&gt;yashpersonaldocs
npm &lt;span class="nb"&gt;install
&lt;/span&gt;npx thally dev
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;The dev server runs on port 3040 and prints the local &lt;code&gt;/llms.txt&lt;/code&gt; and&lt;br&gt;
&lt;code&gt;/api/mcp&lt;/code&gt; endpoints. The files you will actually edit:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;File&lt;/th&gt;
&lt;th&gt;What it controls&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;src/content/*.mdx&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Pages. Frontmatter needs &lt;code&gt;title&lt;/code&gt; and &lt;code&gt;description&lt;/code&gt;.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;docs.json&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Tabs, sidebar groups, page order, navbar button.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;src/data/site.ts&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Site name, description, repo URL, header links, brand colours.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Everything else in the repo is the Thally runtime, synced in as a pinned&lt;br&gt;
snapshot. Leave it alone; &lt;code&gt;thally starter update&lt;/code&gt; manages it.&lt;/p&gt;

&lt;p&gt;The template ships with example pages (components, customisation, an API&lt;br&gt;
reference tab wired to an &lt;code&gt;openapi.yaml&lt;/code&gt;, three Thally guides). I deleted&lt;br&gt;
all of them. A docs site for one tool does not need a tab explaining Thally.&lt;/p&gt;
&lt;h2&gt;
  
  
  Step 3: Decide the shape before writing
&lt;/h2&gt;

&lt;p&gt;I kept it to three pages plus the changelog:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Introduction&lt;/strong&gt;, home layout: what a subgraph is, who the site is for,
two cards pointing at the other pages.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Quickstart&lt;/strong&gt;: install the Graph CLI, create a subgraph in Subgraph
Studio, scaffold with &lt;code&gt;graph init&lt;/code&gt;, build, deploy, and verify with a
query. One concrete contract (Gravity on mainnet) so the steps are
reproducible and the result is checkable.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Guide: Debug a failed subgraph&lt;/strong&gt;: how to query the index node for
status, a table mapping error messages to causes, a fix for each, and a
troubleshooting accordion for the cases that look like failures but are
not.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The quickstart ends by linking to the guide. The guide assumes the&lt;br&gt;
quickstart. That is the whole journey.&lt;/p&gt;
&lt;h2&gt;
  
  
  Step 4: Write the content
&lt;/h2&gt;

&lt;p&gt;One thing about writing MDX for Thally that is worth knowing up front.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The components are good and you do not need many.&lt;/strong&gt; &lt;code&gt;&amp;lt;Steps&amp;gt;&lt;/code&gt;/&lt;code&gt;&amp;lt;Step&amp;gt;&lt;/code&gt;&lt;br&gt;
for sequences, &lt;code&gt;&amp;lt;Tabs&amp;gt;&lt;/code&gt;/&lt;code&gt;&amp;lt;Tab&amp;gt;&lt;/code&gt; for npm-vs-yarn, &lt;code&gt;&amp;lt;Note type="warning"&amp;gt;&lt;/code&gt;&lt;br&gt;
for the thing that will bite people, &lt;code&gt;&amp;lt;Accordion&amp;gt;&lt;/code&gt; for detail most readers&lt;br&gt;
can skip, &lt;code&gt;&amp;lt;CardGroup&amp;gt;&lt;/code&gt; on the home page. Plain Markdown tables render well&lt;br&gt;
and I used them for prompt-to-answer mappings and error-to-cause lookups.&lt;br&gt;
The icon names on &lt;code&gt;&amp;lt;Card&amp;gt;&lt;/code&gt; are Lucide names (&lt;code&gt;rocket&lt;/code&gt;, &lt;code&gt;bug&lt;/code&gt;, &lt;code&gt;book-open&lt;/code&gt;).&lt;/p&gt;

&lt;p&gt;Here is the navigation for the finished site:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"navbar"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"primary"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"label"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Deploy your first subgraph"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"href"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"/quickstart"&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"tabs"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"tab"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Get started"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"groups"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[{&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"group"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Get started"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"pages"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;"introduction"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"quickstart"&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;}]&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"tab"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Guides"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"groups"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[{&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"group"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Operate"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"pages"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;"guides/debug-a-failed-subgraph"&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;}]&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"tab"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Changelog"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"href"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"/changelog"&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;And the only part of &lt;code&gt;src/data/site.ts&lt;/code&gt; that matters:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight typescript"&gt;&lt;code&gt;&lt;span class="k"&gt;export&lt;/span&gt; &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;siteConfig&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;SiteConfig&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="p"&gt;...&lt;/span&gt;&lt;span class="nx"&gt;templateSiteConfig&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Subgraph Handbook&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="na"&gt;description&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;A practical guide to building, deploying, and debugging subgraphs on The Graph.&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="na"&gt;repoUrl&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;https://github.com/yash251/yashpersonaldocs&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="na"&gt;links&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;
    &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;label&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Quickstart&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="na"&gt;href&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;/quickstart&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt; &lt;span class="p"&gt;},&lt;/span&gt;
    &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;label&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Debug a failed subgraph&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="na"&gt;href&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;/guides/debug-a-failed-subgraph&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt; &lt;span class="p"&gt;},&lt;/span&gt;
    &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;label&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;GitHub&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="na"&gt;href&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;https://github.com/yash251/yashpersonaldocs&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt; &lt;span class="p"&gt;},&lt;/span&gt;
    &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;label&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Changelog&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="na"&gt;href&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;/changelog&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt; &lt;span class="p"&gt;},&lt;/span&gt;
  &lt;span class="p"&gt;],&lt;/span&gt;
&lt;span class="p"&gt;};&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Step 5: Check before you push
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npx thally check
npm run build
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;code&gt;thally check&lt;/code&gt; lints frontmatter, validates every link and every page&lt;br&gt;
referenced from &lt;code&gt;docs.json&lt;/code&gt;, and scores the site for AI readability. It&lt;br&gt;
caught nothing on my content, which I take as a sign the rules are&lt;br&gt;
sensible rather than that I am perfect. &lt;code&gt;npm run build&lt;/code&gt; is the real test;&lt;br&gt;
an MDX syntax error only shows up here.&lt;/p&gt;

&lt;p&gt;While the dev server is running, &lt;code&gt;curl localhost:3040/api/agent-readiness&lt;/code&gt;&lt;br&gt;
returns a scored JSON report. Mine said 98 out of 100, with the one&lt;br&gt;
deduction being a changelog description under 50 characters. I fixed it.&lt;br&gt;
That report is a nice touch: it tells you exactly which page and why.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 6: Publish
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git add &lt;span class="nt"&gt;-A&lt;/span&gt;
git commit &lt;span class="nt"&gt;-m&lt;/span&gt; &lt;span class="s2"&gt;"docs: replace template with Subgraph Handbook"&lt;/span&gt;
git push origin main
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That is the whole publishing step. Thally Cloud builds on push to &lt;code&gt;main&lt;/code&gt;,&lt;br&gt;
and the dashboard's Deployments page shows the build. Confirm the live&lt;br&gt;
site before you call it done; a successful push is not a successful&lt;br&gt;
deploy.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Detour 4: the dashboard name wins, and renaming it does not take.&lt;/strong&gt; I&lt;br&gt;
set &lt;code&gt;name: "Subgraph Handbook"&lt;/code&gt; in &lt;code&gt;src/data/site.ts&lt;/code&gt;, and that is what my&lt;br&gt;
local build showed. The live site showed "yashpersonal", the name I typed&lt;br&gt;
into the wizard. Thally Cloud serves the dashboard's site name and&lt;br&gt;
description over whatever is in the repo, and nothing in the file or the&lt;br&gt;
docs says so. The comment above the block reads "Managed by Thally Cloud&lt;br&gt;
onboarding", which in hindsight is the hint. I renamed the site in &lt;strong&gt;Site&lt;br&gt;
settings&lt;/strong&gt;, which says the change goes live on the next publish. I then&lt;br&gt;
tried Redeploy from the Deployments page and a fresh push to &lt;code&gt;main&lt;/code&gt;; both&lt;br&gt;
built successfully and both still served the old name. At the time of&lt;br&gt;
writing the header still says "yashpersonal". If you care about the name,&lt;br&gt;
get it right in the wizard.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Detour 5: Renovate.&lt;/strong&gt; Shortly after the repo was created, a bot opened a&lt;br&gt;
"Configure Renovate" pull request. It comes with the template. It is&lt;br&gt;
harmless, but if you are watching CI for your own commit it is confusing&lt;br&gt;
to see a run against a branch you did not push.&lt;/p&gt;

&lt;h2&gt;
  
  
  What I'd tell a colleague
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Budget 15 minutes for the wizard and GitHub App, 10 minutes to delete
the template content, and the rest for writing. The tool gets out of the
way quickly.&lt;/li&gt;
&lt;li&gt;Write the quickstart against one real, verifiable example. "Replace with
your contract" is not a quickstart.&lt;/li&gt;
&lt;li&gt;Run &lt;code&gt;npm run build&lt;/code&gt; locally before every push. The content check is
fast but it is not a compile.&lt;/li&gt;
&lt;li&gt;Narrow the GitHub App scope as soon as the site is live.&lt;/li&gt;
&lt;li&gt;Keep the page count low. The template invites you to fill tabs; resist.&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>documentation</category>
      <category>devrel</category>
      <category>thegraph</category>
      <category>tutorial</category>
    </item>
  </channel>
</rss>
