<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>How-to guides on Katalyst Documentation</title><link>https://deploy-preview-20--stately-starburst-216875.netlify.app/how-to/</link><description>Recent content in How-to guides on Katalyst Documentation</description><generator>Hugo</generator><language>en-us</language><atom:link href="https://deploy-preview-20--stately-starburst-216875.netlify.app/how-to/index.xml" rel="self" type="application/rss+xml"/><item><title>Profile an existing wiki by hand</title><link>https://deploy-preview-20--stately-starburst-216875.netlify.app/how-to/profile-an-existing-wiki-by-hand/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-20--stately-starburst-216875.netlify.app/how-to/profile-an-existing-wiki-by-hand/</guid><description>&lt;h1 id="profile-an-existing-wiki-by-hand"&gt;Profile an existing wiki by hand&lt;a class="anchor" href="#profile-an-existing-wiki-by-hand"&gt;#&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;You have a directory of markdown: a vault, a docs tree, a knowledge base,
and you want a Katalyst schema for it. Rather than guess the conventions,
&lt;code&gt;inspect&lt;/code&gt; measures them. This guide turns an existing corpus into a draft
schema &lt;strong&gt;by reading the evidence yourself&lt;/strong&gt;. To hand that judgment to an agent
instead, see &lt;a href="https://deploy-preview-20--stately-starburst-216875.netlify.app/how-to/profile-an-existing-wiki-with-an-agent/"&gt;Profile an existing wiki with an
agent&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;inspect&lt;/code&gt; reports &lt;strong&gt;evidence&lt;/strong&gt;, counts and distributions, never
recommendations. Reading the evidence and deciding the schema is your call. It
runs in &lt;strong&gt;two layers&lt;/strong&gt;: point it at a &lt;strong&gt;directory&lt;/strong&gt; to profile a raw store
(no project needed), or at a configured &lt;strong&gt;collection&lt;/strong&gt; to profile its items.
The onboarding loop uses both.&lt;/p&gt;</description></item><item><title>Profile an existing wiki with an agent</title><link>https://deploy-preview-20--stately-starburst-216875.netlify.app/how-to/profile-an-existing-wiki-with-an-agent/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-20--stately-starburst-216875.netlify.app/how-to/profile-an-existing-wiki-with-an-agent/</guid><description>&lt;h1 id="profile-an-existing-wiki-with-an-agent"&gt;Profile an existing wiki with an agent&lt;a class="anchor" href="#profile-an-existing-wiki-with-an-agent"&gt;#&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;The &lt;a href="https://deploy-preview-20--stately-starburst-216875.netlify.app/how-to/profile-an-existing-wiki-by-hand/"&gt;by-hand guide&lt;/a&gt; has
you read inspector evidence and decide the schema. This guide hands that
judgment to an agent: &lt;code&gt;inspect&lt;/code&gt; supplies the measurements, the agent supplies
the thresholds, collection-boundary decisions, and the draft. Katalyst is the
instrument; the agent is the profiler.&lt;/p&gt;
&lt;p&gt;The split is deliberate. Inspectors are deterministic and never recommend;
deciding that a field present in 94% of files should be &lt;code&gt;required&lt;/code&gt;, or that a
directory should be a collection, is the agent&amp;rsquo;s call. Keep that division
and the loop stays debuggable.&lt;/p&gt;</description></item><item><title>Configure checks for a collection</title><link>https://deploy-preview-20--stately-starburst-216875.netlify.app/how-to/configure-rules/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-20--stately-starburst-216875.netlify.app/how-to/configure-rules/</guid><description>&lt;h1 id="configure-checks-for-a-collection"&gt;Configure checks for a collection&lt;a class="anchor" href="#configure-checks-for-a-collection"&gt;#&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;You have a directory of markdown files and want Katalyst to enforce checks on
them. This guide adds a collection and attaches checks to it.&lt;/p&gt;
&lt;h2 id="1-point-a-collection-at-the-directory"&gt;1. Point a collection at the directory&lt;a class="anchor" href="#1-point-a-collection-at-the-directory"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Collections are declared inside a storage instance. In a fresh project that is
&lt;code&gt;.katalyst/storage/local.yaml&lt;/code&gt; (the default filesystem instance). Add the
collection under &lt;code&gt;collections:&lt;/code&gt;, keyed by its name; &lt;code&gt;path&lt;/code&gt; is the directory
relative to the instance root:&lt;/p&gt;</description></item><item><title>Add a schema</title><link>https://deploy-preview-20--stately-starburst-216875.netlify.app/how-to/add-a-schema/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-20--stately-starburst-216875.netlify.app/how-to/add-a-schema/</guid><description>&lt;h1 id="add-a-schema"&gt;Add a schema&lt;a class="anchor" href="#add-a-schema"&gt;#&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;JSON Schema is how Katalyst validates the &lt;em&gt;shape&lt;/em&gt; of an item&amp;rsquo;s frontmatter:
required keys, types, ranges. This guide registers a schema and binds it to a
collection.&lt;/p&gt;
&lt;h2 id="1-write-the-schema-file"&gt;1. Write the schema file&lt;a class="anchor" href="#1-write-the-schema-file"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Put a JSON Schema (draft 2020-12) under &lt;code&gt;.katalyst/schemas/&lt;/code&gt;. Its &lt;strong&gt;name&lt;/strong&gt; is
the filename stem: &lt;code&gt;book.yaml&lt;/code&gt; registers a schema named &lt;code&gt;book&lt;/code&gt;, with no
separate registration step. Schemas are written in YAML by default, the same
draft 2020-12 vocabulary as JSON:&lt;/p&gt;</description></item><item><title>Validate in CI</title><link>https://deploy-preview-20--stately-starburst-216875.netlify.app/how-to/validate-in-ci/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-20--stately-starburst-216875.netlify.app/how-to/validate-in-ci/</guid><description>&lt;h1 id="validate-in-ci"&gt;Validate in CI&lt;a class="anchor" href="#validate-in-ci"&gt;#&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;Run Katalyst in continuous integration so malformed frontmatter and
non-canonical formatting fail the build instead of reaching &lt;code&gt;main&lt;/code&gt;.&lt;/p&gt;
&lt;h2 id="exit-codes"&gt;Exit codes&lt;a class="anchor" href="#exit-codes"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Both gating commands use the same convention:&lt;/p&gt;
&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th&gt;Code&lt;/th&gt;
					&lt;th&gt;Meaning&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;code&gt;0&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;Everything passed&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;code&gt;1&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;One or more items failed (validation or formatting)&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;code&gt;2&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;Usage error (e.g. no &lt;code&gt;.katalyst/&lt;/code&gt; directory found)&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id="gate-on-validation"&gt;Gate on validation&lt;a class="anchor" href="#gate-on-validation"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;&lt;code&gt;katalyst check&lt;/code&gt; over the whole project exits non-zero if any item has a
violation:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;katalyst check&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;An item with a violation, here one missing its H1, prints the diagnostic and
the run exits 1, the non-zero status that fails the CI step:&lt;/p&gt;</description></item></channel></rss>