<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Tooling on Narasimha Karthik J</title><link>https://jnk234.github.io/tags/tooling/</link><description>Recent content in Tooling on Narasimha Karthik J</description><generator>Hugo</generator><language>en</language><lastBuildDate>Wed, 28 Oct 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://jnk234.github.io/tags/tooling/index.xml" rel="self" type="application/rss+xml"/><item><title>job-hunt-kit</title><link>https://jnk234.github.io/projects/job-hunt-kit/</link><pubDate>Wed, 28 Oct 2026 00:00:00 +0000</pubDate><guid isPermaLink="false">https://jnk234.github.io/projects/job-hunt-kit/#full</guid><description>&lt;p&gt;&lt;a href="https://github.com/JNK234/job-hunt-kit" target="_blank" rel="noreferrer"&gt;Code on GitHub&lt;/a&gt;&lt;/p&gt;
&lt;h2 id="what-it-is" class="relative group"&gt;What it is &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#what-it-is" aria-label="Anchor"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;A Claude Code plugin with nine skills that cover a job search from start to finish: set up a profile, build master resumes from job-description research, tailor a resume to one posting, draft application answers, find the right person on the team, and write outreach.&lt;/p&gt;
&lt;p&gt;Everything lives in plain text and LaTeX files in a &lt;code&gt;job-hunt/&lt;/code&gt; folder that you own. The kit drafts. It never sends an email or submits a form.&lt;/p&gt;
&lt;h2 id="how-it-works" class="relative group"&gt;How it works &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#how-it-works" aria-label="Anchor"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;One source of truth.&lt;/strong&gt; &lt;code&gt;profile.md&lt;/code&gt; holds every fact about you. Resumes, answers and emails may only state what is in it.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Live form schemas.&lt;/strong&gt; &lt;code&gt;ats.py&lt;/code&gt; reads the exact application form from the public Ashby, Greenhouse and Lever APIs, because the pages are rendered client-side and scraping returns only a title. It checks a posting is live by its presence on the job board, since Ashby returns HTTP 200 for any path. It flags field titles worth a human look: inverted sponsorship questions, export-control questions, and decoy prompts addressed to an LLM.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;A cheap gate, then a judge.&lt;/strong&gt; &lt;code&gt;gate.py&lt;/code&gt; is a deterministic check for stock phrases, compliance claims (HIPAA, SOC 2 and so on) that the profile never mentions, numbers absent from the profile, and leftover placeholders. &lt;code&gt;judge.py&lt;/code&gt; then asks yes/no rubric questions about each email or answer, and returns a fix for every NO.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Claim checking per sentence.&lt;/strong&gt; The judge splits a draft into sentences and asks, for each one, whether its background facts are supported by the profile and resume text.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Resumable pipeline.&lt;/strong&gt; &lt;code&gt;pipeline.py&lt;/code&gt; tracks roles through sourcing, verification and drafting so a long batch can stop and pick up again.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="whats-notable" class="relative group"&gt;What&amp;rsquo;s notable &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#whats-notable" aria-label="Anchor"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;The claim-check threshold was set on planted true and false claims: false claims scored at most 0.21 and true ones at least 0.40, so the cutoff sits at 0.3. Each exemption in the deterministic gate is commented with the false positive that caused it.&lt;/p&gt;</description></item><item><title>claude-kit</title><link>https://jnk234.github.io/projects/claude-kit/</link><pubDate>Thu, 15 Oct 2026 00:00:00 +0000</pubDate><guid isPermaLink="false">https://jnk234.github.io/projects/claude-kit/#full</guid><description>&lt;p&gt;&lt;a href="https://github.com/JNK234/claude-kit" target="_blank" rel="noreferrer"&gt;Code on GitHub&lt;/a&gt;&lt;/p&gt;
&lt;h2 id="what-it-is" class="relative group"&gt;What it is &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#what-it-is" aria-label="Anchor"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;A plugin marketplace for Claude Code that bundles the skills, slash commands, agents and workflows I use every day. It has six bundles:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;writing&lt;/strong&gt;: outreach email, LinkedIn and X posts, research blog posts.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;research-vault&lt;/strong&gt;: decode papers into Obsidian notes, extract atomic zettels, build synthesis pages.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;explainer-videos&lt;/strong&gt;: narrated Manim explainer videos from a spec.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;netlogo&lt;/strong&gt;: build and review NetLogo models.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;dev-tools&lt;/strong&gt;: GitHub operations, a timed take-home helper, planning and implementation commands, and coder and tester agents.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;life&lt;/strong&gt;: Vedic astrology charts and PDF invoices.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="how-it-works" class="relative group"&gt;How it works &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#how-it-works" aria-label="Anchor"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;&lt;code&gt;install.sh&lt;/code&gt; clones the repo, adds the marketplace, installs the chosen bundles, writes a small env file with the vault paths, and copies the workflows into &lt;code&gt;~/.claude/workflows/&lt;/code&gt; with those paths filled in. It skips workflows that already exist unless you set &lt;code&gt;FORCE=1&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;The seven workflows coordinate several agents. For example, &lt;code&gt;feature-build&lt;/code&gt; has a coder implement a task, an implementation-blind tester try to break it, and the coder repair the cited failures, for up to three rounds.&lt;/p&gt;
&lt;h2 id="whats-notable" class="relative group"&gt;What&amp;rsquo;s notable &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#whats-notable" aria-label="Anchor"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;netlogo-review&lt;/strong&gt; checks a model in layers ordered by cost: style and config checks, then the headless NetLogo compiler as a blocking gate, then known &lt;code&gt;.nlogox&lt;/code&gt; traps. An LLM judge is opt-in, and a live provider call is required when a change touches a provider. It ships with self-test fixtures.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;making-explainer-videos&lt;/strong&gt; includes scripts that check every on-screen word traces back to the approved spec, and falls back to macOS &lt;code&gt;say&lt;/code&gt; when no ElevenLabs key is set.&lt;/li&gt;
&lt;li&gt;The research-vault skills use &lt;a href="https://jnk234.github.io/projects/zettelkasten-automation/"&gt;zettelkasten-auto&lt;/a&gt; for semantic search over notes.&lt;/li&gt;
&lt;/ul&gt;</description></item></channel></rss>