<?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: naomie-boop</title>
    <description>The latest articles on DEV Community by naomie-boop (@naomieboop).</description>
    <link>https://dev.to/naomieboop</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.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3956933%2Fd5aa66ba-17ce-4ec5-bb51-6c0b3360d0b8.png</url>
      <title>DEV Community: naomie-boop</title>
      <link>https://dev.to/naomieboop</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/naomieboop"/>
    <language>en</language>
    <item>
      <title>We open-sourced 45 compliance skills for Claude Code</title>
      <dc:creator>naomie-boop</dc:creator>
      <pubDate>Thu, 28 May 2026 16:03:45 +0000</pubDate>
      <link>https://dev.to/naomieboop/we-open-sourced-45-compliance-skills-for-claude-code-13co</link>
      <guid>https://dev.to/naomieboop/we-open-sourced-45-compliance-skills-for-claude-code-13co</guid>
      <description>&lt;p&gt;A D2C founder I know spent her Sunday night asking Claude a simple question: "Can I sell my retinol night cream in Germany and Italy?" Claude gave her three paragraphs of hedged generalities about "consulting a local regulatory expert" and a vague mention of EU cosmetics regulations. She ended up shipping anyway, got pulled from the Amazon DE listing six weeks later for a missing Responsible Person, and lost the Q4 launch window. Total damage: about €18K in inventory, ads, and rework.&lt;/p&gt;

&lt;p&gt;That story is not unusual. It's the median experience for anyone trying to ship a regulated physical product across borders with an LLM as their first line of research.&lt;/p&gt;

&lt;p&gt;So we did something about it. This week we open-sourced &lt;a href="https://github.com/Cleo-Labs-IA/skills_library" rel="noopener noreferrer"&gt;skills_library&lt;/a&gt; — 45 production-grade compliance skills for Claude Code, MIT-licensed, no signup, no telemetry. Below is what's in it, how it works under the hood, and why we chose to give the toolkit away while charging for the regulatory data API behind it.&lt;/p&gt;

&lt;h2&gt;
  
  
  What we shipped
&lt;/h2&gt;

&lt;p&gt;Forty-five skills, organized into six verticals:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Product compliance&lt;/strong&gt; — cosmetics, food/supplements, electronics (CE, FCC), textiles, toys (EN71), medical devices&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Cross-border&lt;/strong&gt; — EU CPR/CPNP, UK post-Brexit, US FDA/FTC, Canada, Australia, Japan&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Marketplace&lt;/strong&gt; — Amazon, Shopify, TikTok Shop, Meta, Google Shopping policy alignment&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Privacy &amp;amp; data&lt;/strong&gt; — GDPR, CCPA, cookie consent, DPAs, ROPA&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Corporate &amp;amp; IP&lt;/strong&gt; — incorporation by jurisdiction, trademark filing, contracts&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Operational&lt;/strong&gt; — labeling, batch tracking, recall procedures, customs codes (HS)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Everything lives in &lt;code&gt;~/.claude/skills/comply/&lt;/code&gt; after a one-line install:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git clone https://github.com/Cleo-Labs-IA/skills_library.git ~/.claude/skills/comply
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Restart Claude Code. You now have 40 new triggers available.&lt;/p&gt;

&lt;h2&gt;
  
  
  The SKILL.md format, briefly
&lt;/h2&gt;

&lt;p&gt;If you're new to Claude Code skills, the mechanism is delightfully simple. A skill is a folder with a &lt;code&gt;SKILL.md&lt;/code&gt; at its root. The file has YAML frontmatter and a body. Claude reads the frontmatter at session start and uses the &lt;code&gt;description&lt;/code&gt; field to decide when to auto-trigger the skill.&lt;/p&gt;

&lt;p&gt;Here's a trimmed example from &lt;code&gt;comply/product-compliance/SKILL.md&lt;/code&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&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;product-compliance&lt;/span&gt;
&lt;span class="na"&gt;description&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Use&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;when&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;a&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;user&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;asks&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;whether&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;a&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;physical&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;product"&lt;/span&gt;
  &lt;span class="s"&gt;can be sold in one or more jurisdictions, what labeling or&lt;/span&gt;
  &lt;span class="s"&gt;certifications are required, or what regulatory body governs&lt;/span&gt;
  &lt;span class="s"&gt;it. Covers cosmetics, food, electronics, textiles, toys,&lt;/span&gt;
  &lt;span class="s"&gt;medical devices.&lt;/span&gt;
&lt;span class="na"&gt;triggers&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;can&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;I&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;sell"&lt;/span&gt;
  &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;regulatory&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;requirements"&lt;/span&gt;
  &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;CE&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;marking"&lt;/span&gt;
  &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;FDA"&lt;/span&gt;
&lt;span class="nn"&gt;---&lt;/span&gt;

&lt;span class="c1"&gt;# Product compliance&lt;/span&gt;

&lt;span class="s"&gt;When invoked, you MUST&lt;/span&gt;&lt;span class="err"&gt;:&lt;/span&gt;

&lt;span class="s"&gt;1. Identify the product category (cosmetic, food, electronic, etc.)&lt;/span&gt;
&lt;span class="s"&gt;2. Identify all target jurisdictions&lt;/span&gt;
&lt;span class="s"&gt;3. For each (category, jurisdiction) pair, call the Cleo Legal&lt;/span&gt;
   &lt;span class="s"&gt;API tool `get_regulation` to retrieve current obligations&lt;/span&gt;
&lt;span class="na"&gt;4. Return a structured table with&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;regulation, authority,&lt;/span&gt;
   &lt;span class="s"&gt;required documents, estimated cost, timeline&lt;/span&gt;
&lt;span class="s"&gt;5. Never invent regulation numbers. If a regulation is not&lt;/span&gt;
   &lt;span class="s"&gt;returned by the API, say so explicitly.&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The triggers are not hard rules. Claude weighs the description plus the user's prompt to decide. In practice, our descriptions are tight enough that the right skill fires 90%+ of the time.&lt;/p&gt;

&lt;h2&gt;
  
  
  How the MCP integration layer works
&lt;/h2&gt;

&lt;p&gt;Skills give Claude a procedure. They don't give it data. For that, the skills call out to the &lt;a href="https://legaldata-public.cleolabs.co" rel="noopener noreferrer"&gt;Cleo Legal API&lt;/a&gt; over MCP.&lt;/p&gt;

&lt;p&gt;Setup is one line:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;claude mcp add cleo-legal-api &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--url&lt;/span&gt; https://legaldata-public.cleolabs.co/mcp &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--header&lt;/span&gt; &lt;span class="s2"&gt;"Authorization: Bearer &lt;/span&gt;&lt;span class="nv"&gt;$CLEO_LEGAL_KEY&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The API exposes tools like &lt;code&gt;get_regulation&lt;/code&gt;, &lt;code&gt;list_authorities&lt;/code&gt;, &lt;code&gt;search_signals&lt;/code&gt;, and &lt;code&gt;get_signal&lt;/code&gt;. Each skill knows which tools to call and how to format the output. You can use the skills without the API key — they'll degrade to "I don't have current regulatory data, here's the procedure you'd follow" — but the value lift with the API is significant: real regulation IDs, real fee schedules, real signal feeds from authorities like ANSM, BfArM, FDA, MHRA.&lt;/p&gt;

&lt;p&gt;A skill calling into MCP looks like this in the body of &lt;code&gt;SKILL.md&lt;/code&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight markdown"&gt;&lt;code&gt;For each jurisdiction, invoke:

  mcp__cleo-legal-api__get_regulation(
    product_category: &lt;span class="nt"&gt;&amp;lt;category&amp;gt;&lt;/span&gt;,
    country: &lt;span class="nt"&gt;&amp;lt;ISO-3166-1&lt;/span&gt; &lt;span class="na"&gt;alpha-2&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;,
    include: ["fees", "documents", "timeline"]
  )

If the response includes &lt;span class="sb"&gt;`signal_ids`&lt;/span&gt;, follow up with
&lt;span class="sb"&gt;`get_signal(id)`&lt;/span&gt; for each one and surface any active alerts
to the user before the summary table.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That's it. No orchestration framework, no agent graph. The skill is a procedure, the MCP server is the knowledge, Claude is the runtime.&lt;/p&gt;

&lt;h2&gt;
  
  
  Multi-agent: parallel jurisdiction scans
&lt;/h2&gt;

&lt;p&gt;One of my favorite skills in the bundle is &lt;code&gt;multi-jurisdiction-scan&lt;/code&gt;. Given a product and a list of target markets, it dispatches one sub-agent per market in parallel, each running the &lt;code&gt;product-compliance&lt;/code&gt; skill scoped to its jurisdiction, then merges results into a single table sorted by go-to-market difficulty.&lt;/p&gt;

&lt;p&gt;The pattern:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight markdown"&gt;&lt;code&gt;When invoked with N jurisdictions:
&lt;span class="p"&gt;
1.&lt;/span&gt; Dispatch N parallel Task agents, one per jurisdiction.
&lt;span class="p"&gt;2.&lt;/span&gt; Each agent runs the product-compliance procedure for its
   single market and returns a structured JSON block.
&lt;span class="p"&gt;3.&lt;/span&gt; Wait for all N to complete.
&lt;span class="p"&gt;4.&lt;/span&gt; Merge into one comparison table with columns:
   jurisdiction | regulations | est. cost | est. timeline |
   blockers | recommendation
&lt;span class="p"&gt;5.&lt;/span&gt; Highlight the easiest 3 markets to launch in first.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Running this against 8 EU countries takes about 90 seconds end-to-end. The same task with a regulatory consultant: two weeks and €15K.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why open source it
&lt;/h2&gt;

&lt;p&gt;The honest version of the answer: it's the cheapest, most defensible distribution we can build right now.&lt;/p&gt;

&lt;p&gt;Compliance is not a category most developers go looking for. Nobody Googles "compliance skill for Claude Code." But every D2C founder, every Shopify agency, every solo operator running ads on Meta hits the same wall the moment they try to expand to a second country. If our skills are the default thing that comes up when an AI agent encounters that wall, we win — even if 95% of users never pay us a cent. The 5% who do pay (for the API, the Pro plan, the regulatory signals feed) more than cover the engineering cost of maintaining the skills.&lt;/p&gt;

&lt;p&gt;There's also a quality argument. Open-sourcing forces us to write skills that are legible, auditable, and correct. A black-box SaaS can hide behind "trust us." A public MIT repo cannot. If we ship a skill that says "Germany requires a TÜV mark for textile imports" (it does not), someone will open an issue and roast us in public. That accountability is good for us.&lt;/p&gt;

&lt;h2&gt;
  
  
  What's next
&lt;/h2&gt;

&lt;p&gt;A few things are queued up:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;More verticals.&lt;/strong&gt; Pet products, alcohol, CBD, supplements with novel ingredients. Each one is two to four new skills.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Signal subscriptions.&lt;/strong&gt; A skill that subscribes to regulatory updates for a product and pings you when something changes. Already half-built.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Localized output.&lt;/strong&gt; Right now everything outputs in English. French, German, Spanish, Italian are next — the regulations themselves are obviously in local language.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Community skills.&lt;/strong&gt; We want pull requests. If you've shipped a product in a jurisdiction we don't cover, write the skill and submit it.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  How to contribute
&lt;/h2&gt;

&lt;p&gt;The repo has a &lt;code&gt;CONTRIBUTING.md&lt;/code&gt; with the skill authoring checklist. The short version:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;No vague language. "May require certification" is banned. Either it does or it doesn't.&lt;/li&gt;
&lt;li&gt;Cite the actual regulation. EU 2017/745 not "EU medical device rules."&lt;/li&gt;
&lt;li&gt;Include cost ranges in EUR. We'd rather be wrong by 30% than absent.&lt;/li&gt;
&lt;li&gt;Test on real product cases. Each skill folder has an &lt;code&gt;examples/&lt;/code&gt; directory.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Open an issue first if you're proposing a new vertical. We'll help scope it.&lt;/p&gt;

&lt;h2&gt;
  
  
  CTAs, since you read this far
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Star and clone the repo: &lt;a href="https://github.com/Cleo-Labs-IA/skills_library" rel="noopener noreferrer"&gt;github.com/Cleo-Labs-IA/skills_library&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Get an API key for live regulatory data: &lt;a href="https://legaldata-public.cleolabs.co" rel="noopener noreferrer"&gt;legaldata-public.cleolabs.co&lt;/a&gt; (€349/mo, free 7-day trial)&lt;/li&gt;
&lt;li&gt;More context on what we're building at &lt;a href="https://cleolabs.co" rel="noopener noreferrer"&gt;cleolabs.co&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you build something with the skills, I want to see it. Drop a comment, open a discussion on the repo, or email me directly. Especially interested in what breaks — every reported failure is a sharper skill in the next release.&lt;/p&gt;

&lt;p&gt;— Naomie Halioua, founder, Cleo Labs&lt;/p&gt;

</description>
      <category>claudecode</category>
      <category>ai</category>
      <category>opensource</category>
      <category>compliance</category>
    </item>
  </channel>
</rss>
