<?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: jeffreytse</title>
    <description>The latest articles on DEV Community by jeffreytse (@jeffreytse).</description>
    <link>https://dev.to/jeffreytse</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%2F381413%2Feebc869c-d5a5-4866-bf85-ddeeb9a6a6c0.png</url>
      <title>DEV Community: jeffreytse</title>
      <link>https://dev.to/jeffreytse</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/jeffreytse"/>
    <language>en</language>
    <item>
      <title>I built a package manager for AI agent best practices — because knowing them and applying them are completely different problems</title>
      <dc:creator>jeffreytse</dc:creator>
      <pubDate>Mon, 20 Jul 2026 14:31:39 +0000</pubDate>
      <link>https://dev.to/jeffreytse/i-built-a-package-manager-for-ai-agent-best-practices-because-my-ai-kept-forgetting-how-to-do-7na</link>
      <guid>https://dev.to/jeffreytse/i-built-a-package-manager-for-ai-agent-best-practices-because-my-ai-kept-forgetting-how-to-do-7na</guid>
      <description>&lt;p&gt;A few years ago I started doing something embarrassing: making a list of software engineering best practices I actually knew well enough to apply.&lt;/p&gt;

&lt;p&gt;SOLID principles. Conventional commits. Blameless retrospectives. The Google SRE handbook. A handful of others.&lt;/p&gt;

&lt;p&gt;The list was shorter than I expected.&lt;/p&gt;

&lt;p&gt;Not because I was lazy. I'd read plenty. But reading about a practice and having it available when you need it — at 11pm debugging a production incident, or mid-PR-review when you're already context-switched — are completely different things. The gap between &lt;em&gt;knowing&lt;/em&gt; a practice exists and &lt;em&gt;applying it consistently in daily work&lt;/em&gt; is enormous, and most of us just quietly accept it.&lt;/p&gt;

&lt;p&gt;Then I started wondering how many practices I'd never even heard of. Architectural decision records. Pre-mortems. The Five Whys. The ABA Model Rules for legal review. Different domains — engineering, finance, law, medicine, leadership — each have decades of accumulated wisdom. Most of it is documented, cited, and public. None of it is particularly accessible.&lt;/p&gt;

&lt;p&gt;What I wanted was a master. Someone who knew every relevant practice, could surface the right one for my exact situation, and would hold me accountable for actually following it. That used to cost $800/hr. I decided to build it instead.&lt;/p&gt;

&lt;p&gt;I called it &lt;a href="https://github.com/jeffreytse/grimoire" rel="noopener noreferrer"&gt;grimoire&lt;/a&gt; 🧙 — a wizard's book of spells.&lt;/p&gt;

  




&lt;h2&gt;
  
  
  📦 What is grimoire?
&lt;/h2&gt;

&lt;p&gt;Think npm, but for AI agent best practices.&lt;/p&gt;

&lt;p&gt;You declare which skill libraries you want in a &lt;code&gt;grimoire.toml&lt;/code&gt;. Grimoire clones them from a git registry and symlinks the individual skill files into each AI agent's context directory. Skills show up as slash commands in Claude, tab-completable commands in Codex, and equivalently in other agents.&lt;/p&gt;

&lt;p&gt;Then &lt;code&gt;grimoire check&lt;/code&gt; audits your project against those installed practices — like ESLint, but for how you work, not just how you code.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Install grimoire&lt;/span&gt;
curl &lt;span class="nt"&gt;-fsSL&lt;/span&gt; https://raw.githubusercontent.com/jeffreytse/grimoire/main/scripts/install.sh | bash

&lt;span class="c"&gt;# Guided setup&lt;/span&gt;
grimoire wizard

&lt;span class="c"&gt;# Install skills to all detected agents&lt;/span&gt;
grimoire &lt;span class="nb"&gt;install&lt;/span&gt;

&lt;span class="c"&gt;# Run your first compliance check&lt;/span&gt;
grimoire check
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That's the full loop.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F474typipm4b3uhu12wef.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F474typipm4b3uhu12wef.png" alt=" " width="800" height="606"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  🚀 From install to first wow
&lt;/h2&gt;

&lt;p&gt;After &lt;code&gt;grimoire install&lt;/code&gt;, skills appear immediately as slash commands. Here's what code review looks like after installing the engineering skill library:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;User: /conduct-code-review

Claude: Reviewing staged changes against declared engineering standards...

  VERDICT: REQUEST CHANGES

  1. Missing test for the new token refresh path (auth/refresh.go:34)
     → coverage drops to 61%; your threshold is 80%

  2. Secret potentially exposed in error message (api/handler.go:89)
     → raw token value in error string; wrap before logging

  3. Breaking change undocumented
     → removeImplicitGrant() is public; needs BREAKING CHANGE footer

  File a review comment? [y/n]
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Not five bullet points. A structured verdict, with file locations and criteria, every time.&lt;/p&gt;




&lt;h2&gt;
  
  
  🧠 You don't need to know which skill to invoke
&lt;/h2&gt;

&lt;p&gt;This is my favorite part. You don't need to memorize skill names. Just describe the situation and grimoire routes to the right practice:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;User: My team keeps missing sprint goals and I don't know why.

Claude: Situation matches: plan-retrospective (engineering/project-management)

        Run a blameless retrospective (Amazon format):
        1. Timeline reconstruction — what actually happened
        2. Five whys — root causes, not symptoms
        3. Action items with owners and deadlines
        → /plan-retrospective to run the session now
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;User: We're launching in 48 hours and I'm terrified something will break.

Claude: Situation matches: apply-premortem (engineering/reliability)
        Followed by: design-slo → plan-incident-response

        → /apply-premortem to begin
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;code&gt;suggest-best-practice&lt;/code&gt; auto-classifies any situation and routes it. If the relevant skill isn't installed, it tells you exactly what to add to your &lt;code&gt;grimoire.toml&lt;/code&gt;.&lt;/p&gt;




&lt;h2&gt;
  
  
  🗂️ How skills actually work
&lt;/h2&gt;

&lt;p&gt;A skill is a single markdown file — not a prompt, more like a runbook:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight markdown"&gt;&lt;code&gt;&lt;span class="nn"&gt;---&lt;/span&gt;
&lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;conduct-code-review&lt;/span&gt;
&lt;span class="na"&gt;tags&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="pi"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;engineering&lt;/span&gt;&lt;span class="pi"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;review&lt;/span&gt;&lt;span class="pi"&gt;]&lt;/span&gt;
&lt;span class="na"&gt;description&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;Run a structured code review against declared standards.&lt;/span&gt;
&lt;span class="na"&gt;source&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;https://google.github.io/eng-practices/review/reviewer/&lt;/span&gt;
&lt;span class="nn"&gt;---&lt;/span&gt;

&lt;span class="gu"&gt;## Steps&lt;/span&gt;
&lt;span class="p"&gt;
1.&lt;/span&gt; Identify the scope — what problem does this change solve?
&lt;span class="p"&gt;2.&lt;/span&gt; Check test coverage: new code paths must have tests.
&lt;span class="p"&gt;3.&lt;/span&gt; Review naming: does it match established project conventions?
&lt;span class="p"&gt;4.&lt;/span&gt; Check for security implications: auth, input validation, secrets.
&lt;span class="p"&gt;5.&lt;/span&gt; Identify breaking changes — flag with BREAKING CHANGE if present.
&lt;span class="p"&gt;6.&lt;/span&gt; Issue a verdict: APPROVE / REQUEST CHANGES / COMMENT.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Every skill has a triggering condition, a cited source, numbered steps, and a verdict form. Not a suggestion — a procedure.&lt;/p&gt;

&lt;p&gt;Here's the part I think is clever: &lt;strong&gt;the same file that teaches the AI how to do a code review is what &lt;code&gt;grimoire check&lt;/code&gt; reads when auditing whether your project actually ran one.&lt;/strong&gt; No separate compliance schema to maintain. Update the skill and both the guidance and the compliance criteria update in one step.&lt;/p&gt;




&lt;h2&gt;
  
  
  🔍 The compliance engine — grimoire check
&lt;/h2&gt;

&lt;p&gt;&lt;code&gt;grimoire check&lt;/code&gt; is where things get interesting.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;grimoire check                     &lt;span class="c"&gt;# full project audit&lt;/span&gt;
grimoire check &lt;span class="nt"&gt;--live&lt;/span&gt;              &lt;span class="c"&gt;# watch mode: re-checks on every file save&lt;/span&gt;
grimoire check &lt;span class="nt"&gt;--scope&lt;/span&gt; changed     &lt;span class="c"&gt;# incremental — changed files only (great for large repos)&lt;/span&gt;
grimoire check &lt;span class="nt"&gt;--junit&lt;/span&gt; report.xml  &lt;span class="c"&gt;# JUnit XML for GitHub Actions / GitLab CI&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Result page:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fyvc2m70nbf7oa3gzkv3w.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fyvc2m70nbf7oa3gzkv3w.png" alt=" " width="800" height="617"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Sample output:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight console"&gt;&lt;code&gt;&lt;span class="gp"&gt;$&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;grimoire check
&lt;span class="go"&gt;
  ✓  propose-conventional-commit   100%  all 4 criteria passing
  ✓  apply-solid                    88%  7/8 criteria passing
  ✗  conduct-code-review            62%  below threshold (80%)
     └─ missing: security-checklist, breaking-change-annotation

2 passed · 1 failed · exit 1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You can gate CI on this. Declare a threshold in &lt;code&gt;grimoire.toml&lt;/code&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight toml"&gt;&lt;code&gt;&lt;span class="nn"&gt;[standards]&lt;/span&gt;
&lt;span class="py"&gt;threshold&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;80&lt;/span&gt;  &lt;span class="c"&gt;# fail CI below 80% compliance&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The difference from other linters: ESLint checks whether your code is valid JavaScript. &lt;code&gt;grimoire check&lt;/code&gt; checks whether your project actually &lt;em&gt;follows&lt;/em&gt; the practices you declared. Did the last five commits use conventional commit format? Does the new auth module have adequate test coverage against your standards? Did the PR include a security checklist? Those are semantic questions — existing linters don't answer them.&lt;/p&gt;




&lt;h2&gt;
  
  
  🖥️ Editor integration (LSP)
&lt;/h2&gt;

&lt;p&gt;&lt;code&gt;grimoire lsp&lt;/code&gt; implements the Language Server Protocol. Point any LSP-capable editor at it and you get compliance diagnostics in the gutter on every file save.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Neovim:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight lua"&gt;&lt;code&gt;&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="ow"&gt;not&lt;/span&gt; &lt;span class="n"&gt;configs&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;grimoire&lt;/span&gt; &lt;span class="k"&gt;then&lt;/span&gt;
  &lt;span class="n"&gt;configs&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;grimoire&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="n"&gt;default_config&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="n"&gt;cmd&lt;/span&gt;      &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="s1"&gt;'grimoire'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'lsp'&lt;/span&gt; &lt;span class="p"&gt;},&lt;/span&gt;
      &lt;span class="n"&gt;filetypes&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="s1"&gt;'go'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'python'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'javascript'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'typescript'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'rust'&lt;/span&gt; &lt;span class="p"&gt;},&lt;/span&gt;
      &lt;span class="n"&gt;root_dir&lt;/span&gt;  &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;lspconfig&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;util&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;root_pattern&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'grimoire.toml'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'.git'&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="k"&gt;end&lt;/span&gt;
&lt;span class="n"&gt;lspconfig&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;grimoire&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;setup&lt;/span&gt; &lt;span class="p"&gt;{}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Helix:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight toml"&gt;&lt;code&gt;&lt;span class="nn"&gt;[[language-server]]&lt;/span&gt;
&lt;span class="py"&gt;name&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s"&gt;"grimoire"&lt;/span&gt;
&lt;span class="py"&gt;command&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s"&gt;"grimoire"&lt;/span&gt;
&lt;span class="py"&gt;args&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s"&gt;"lsp"&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;No plugin required beyond a one-time language client config. VSCode is supported too.&lt;/p&gt;




&lt;h2&gt;
  
  
  🤖 MCP server — let the AI manage itself
&lt;/h2&gt;

&lt;p&gt;&lt;code&gt;grimoire mcp serve&lt;/code&gt; exposes all grimoire operations as MCP tools. Claude Desktop, Cursor, or Windsurf can manage their own skill library mid-conversation:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;grimoire mcp serve   &lt;span class="c"&gt;# start the MCP server&lt;/span&gt;
grimoire mcp config  &lt;span class="c"&gt;# write config file to your editor&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The AI can call &lt;code&gt;grimoire_install&lt;/code&gt;, &lt;code&gt;grimoire_update&lt;/code&gt;, &lt;code&gt;grimoire_check&lt;/code&gt; as tool calls — detect a missing skill, install it, and immediately apply it, without you touching the terminal.&lt;/p&gt;




&lt;h2&gt;
  
  
  🌍 It's not just for engineering
&lt;/h2&gt;

&lt;p&gt;This is the thing I keep having to say out loud: grimoire-core ships &lt;strong&gt;1000+ skills across 27 domains&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Engineering. Architecture. Product management. Technical writing. Legal review. Financial analysis. Health. Leadership. Sales. Cooking.&lt;/p&gt;

&lt;p&gt;The same infrastructure that enforces code review standards can enforce legal document review, financial due diligence, clinical protocol compliance, or onboarding documentation quality. The mechanism is identical — only the skills change.&lt;/p&gt;

&lt;p&gt;That's the bigger bet: AI gives everyone comprehension. Grimoire gives everyone practice. The senior lawyer's review checklist, the experienced engineer's PR process, the McKinsey consultant's structuring framework — not proprietary, just previously inaccessible. Grimoire makes them installable.&lt;/p&gt;




&lt;h2&gt;
  
  
  📦 Declaring dependencies
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight toml"&gt;&lt;code&gt;&lt;span class="c"&gt;# grimoire.toml — commit this to your repo&lt;/span&gt;
&lt;span class="nn"&gt;[package]&lt;/span&gt;
&lt;span class="py"&gt;name&lt;/span&gt;    &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s"&gt;"my-project"&lt;/span&gt;
&lt;span class="py"&gt;version&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s"&gt;"0.1.0"&lt;/span&gt;

&lt;span class="nn"&gt;[dependencies]&lt;/span&gt;
&lt;span class="py"&gt;"jeffreytse/grimoire-core"&lt;/span&gt;             &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s"&gt;"*"&lt;/span&gt;   &lt;span class="c"&gt;# all 1000+ skills&lt;/span&gt;
&lt;span class="py"&gt;"jeffreytse/grimoire-core:engineering"&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s"&gt;"*"&lt;/span&gt;   &lt;span class="c"&gt;# one domain only&lt;/span&gt;
&lt;span class="py"&gt;"jeffreytse/grimoire-core@0.1.0"&lt;/span&gt;       &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s"&gt;"*"&lt;/span&gt;   &lt;span class="c"&gt;# pinned release&lt;/span&gt;
&lt;span class="py"&gt;"mycompany/internal-skills"&lt;/span&gt;            &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s"&gt;"*"&lt;/span&gt;   &lt;span class="c"&gt;# your team's private practices&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Any git repo is a valid package. Your company's internal engineering standards, a fintech-specific library, a jurisdiction-specific legal practices set — all install identically. Versions are locked in &lt;code&gt;grimoire.lock&lt;/code&gt; (yes, it's exactly what you think it is).&lt;/p&gt;




&lt;h2&gt;
  
  
  ✍️ Publish your own skills
&lt;/h2&gt;

&lt;p&gt;If you've spent years mastering something, your practice belongs here.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Validate your skill files&lt;/span&gt;
grimoire validate

&lt;span class="c"&gt;# AI-powered auto-fix for conformance issues&lt;/span&gt;
grimoire validate &lt;span class="nt"&gt;--fix&lt;/span&gt;

&lt;span class="c"&gt;# Preview before writing&lt;/span&gt;
grimoire validate &lt;span class="nt"&gt;--fix&lt;/span&gt; &lt;span class="nt"&gt;--dry-run&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;Write skill markdown files (name, tags, description, source, steps)&lt;/li&gt;
&lt;li&gt;Push to any git repo&lt;/li&gt;
&lt;li&gt;Others install with &lt;code&gt;grimoire install yourgithub/yourpackage&lt;/code&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Naming convention: &lt;code&gt;yourorg/grimoire-fintech&lt;/code&gt;, &lt;code&gt;yourorg/grimoire-legal-us&lt;/code&gt;, &lt;code&gt;yourorg/grimoire-medical&lt;/code&gt;. Private repos work fine — install is identical.&lt;/p&gt;




&lt;h2&gt;
  
  
  🏁 Try it
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;curl &lt;span class="nt"&gt;-fsSL&lt;/span&gt; https://raw.githubusercontent.com/jeffreytse/grimoire/main/scripts/install.sh | bash
grimoire wizard
grimoire check
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;GitHub:&lt;/strong&gt; &lt;a href="https://github.com/jeffreytse/grimoire" rel="noopener noreferrer"&gt;https://github.com/jeffreytse/grimoire&lt;/a&gt; ⭐&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Skills library:&lt;/strong&gt; &lt;a href="https://github.com/jeffreytse/grimoire-core" rel="noopener noreferrer"&gt;https://github.com/jeffreytse/grimoire-core&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Website:&lt;/strong&gt; &lt;a href="https://grimoire.jeffreytse.net" rel="noopener noreferrer"&gt;https://grimoire.jeffreytse.net&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It's free, open source (MIT), and the wizard gets you to a first compliance check in about two minutes.&lt;/p&gt;




&lt;p&gt;I'd love to know: what practices does your team currently enforce through system prompts or manual checklists? That's exactly the kind of thing that should probably be a grimoire skill.&lt;/p&gt;

&lt;p&gt;Drop a comment or open an issue — especially if you want to contribute skills from your domain. 👇&lt;/p&gt;

</description>
      <category>ai</category>
      <category>opensource</category>
      <category>claude</category>
      <category>devtools</category>
    </item>
  </channel>
</rss>
