<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
    <id>https://nova.cbnventures.io/blog/</id>
    <title>Nova Blog</title>
    <updated>2026-02-10T00:00:00.000Z</updated>
    <generator>https://github.com/jpmonette/feed</generator>
    <link rel="alternate" href="https://nova.cbnventures.io/blog/"/>
    <subtitle>Release notes, tooling insights, and automation patterns for JavaScript and TypeScript monorepos.</subtitle>
    <icon>https://nova.cbnventures.io/./favicon.ico</icon>
    <rights>Copyright © 2025-2026 CBN Ventures LLC. All Rights Reserved.</rights>
    <entry>
        <title type="html"><![CDATA[Why We Started Building Our Own ESLint Rules]]></title>
        <id>https://nova.cbnventures.io/blog/eslint-rules-we-built/</id>
        <link href="https://nova.cbnventures.io/blog/eslint-rules-we-built/"/>
        <updated>2026-02-10T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Off-the-shelf ESLint rules cover the common cases. But when you need to enforce project-specific patterns, the gaps become obvious — and that's when you start writing your own.]]></summary>
        <author>
            <name>Jacky Liang</name>
            <uri>https://www.mrjackyliang.com</uri>
        </author>
        <category label="nova" term="nova"/>
        <category label="eslint" term="eslint"/>
        <category label="rules" term="rules"/>
        <category label="typescript" term="typescript"/>
        <category label="code-quality" term="code-quality"/>
        <category label="linting" term="linting"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Composable ESLint Presets: Layers Instead of Inheritance]]></title>
        <id>https://nova.cbnventures.io/blog/composable-eslint-presets/</id>
        <link href="https://nova.cbnventures.io/blog/composable-eslint-presets/"/>
        <updated>2025-09-22T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[How Nova's ESLint presets use independent layers — language, environment, and framework — to replace brittle config inheritance with predictable composition.]]></summary>
        <author>
            <name>Jacky Liang</name>
            <uri>https://www.mrjackyliang.com</uri>
        </author>
        <category label="nova" term="nova"/>
        <category label="eslint" term="eslint"/>
        <category label="presets" term="presets"/>
        <category label="typescript" term="typescript"/>
        <category label="monorepo" term="monorepo"/>
        <category label="configuration" term="configuration"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Introducing Nova: Stop Configuring, Start Building]]></title>
        <id>https://nova.cbnventures.io/blog/introducing-nova/</id>
        <link href="https://nova.cbnventures.io/blog/introducing-nova/"/>
        <updated>2025-04-15T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Nova is a batteries-included toolkit for JavaScript and TypeScript monorepos that replaces config grind with composable presets, guided CLI tooling, and importable utilities.]]></summary>
        <author>
            <name>Jacky Liang</name>
            <uri>https://www.mrjackyliang.com</uri>
        </author>
        <category label="release" term="release"/>
        <category label="nova" term="nova"/>
        <category label="monorepo" term="monorepo"/>
        <category label="typescript" term="typescript"/>
        <category label="eslint" term="eslint"/>
        <category label="tooling" term="tooling"/>
    </entry>
</feed>