<?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: Michael Piscitelli</title>
    <description>The latest articles on DEV Community by Michael Piscitelli (@herakles-dev).</description>
    <link>https://dev.to/herakles-dev</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%2F3808718%2F5f49614d-0b24-4df2-98c8-f059fd9a0041.jpg</url>
      <title>DEV Community: Michael Piscitelli</title>
      <link>https://dev.to/herakles-dev</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/herakles-dev"/>
    <language>en</language>
    <item>
      <title>I Forged a Hyper-aware, Autonomous AI Crypto Trader with full control (And It Has Better Risk Management Than I Do)</title>
      <dc:creator>Michael Piscitelli</dc:creator>
      <pubDate>Wed, 08 Apr 2026 23:04:05 +0000</pubDate>
      <link>https://dev.to/herakles-dev/i-forged-a-hyper-aware-autonomous-ai-crypto-trader-with-full-control-and-it-has-better-risk-55gd</link>
      <guid>https://dev.to/herakles-dev/i-forged-a-hyper-aware-autonomous-ai-crypto-trader-with-full-control-and-it-has-better-risk-55gd</guid>
      <description>&lt;p&gt;The crypto markets are a dark, unforgiving place. It's a realm of endless, 24/7 chaos where traditional algorithmic trading bots march blindly to their slaughter. You write a Python script, hook up some moving average crossovers, and watch your portfolio slowly bleed out like a foot soldier caught in the vanguard.&lt;/p&gt;

&lt;p&gt;Traditional bots are rigid. They don't understand context. They don't know that a falling Taker Buy/Sell ratio matters more right now than a lagging MACD, or that Extreme Fear on Reddit combined with an oversold StochRSI is a contrarian powder keg waiting to ignite.&lt;/p&gt;

&lt;p&gt;I needed to forge something stronger. Coming from the trenches of hardware design and telecom engineering, you learn a fundamental truth about complex systems: surviving the chaos requires dynamic reasoning, not just hardcoded rules.&lt;/p&gt;

&lt;p&gt;So, I built an autonomous trading engine. I handed the keys over to Claude, gave it a $10k paper-trading portfolio to start, and fed it a firehose of real-time market data.&lt;/p&gt;

&lt;p&gt;Here is a look under the hood of how you force an LLM to stop acting like a helpful chatbot and start acting like a ruthless, calculated machine.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Brain: One Prompt to Bind Them
&lt;/h2&gt;

&lt;p&gt;You can't just ask an LLM, "Should I buy Bitcoin?" That is like asking a goblin to guard your gold—it will hallucinate, hedge, and give you useless financial disclaimers. You have to box it in. You have to build an ironclad cognitive framework.&lt;/p&gt;

&lt;p&gt;My system prompt doesn't ask for opinions. It dictates a strict &lt;strong&gt;Signal Hierarchy&lt;/strong&gt; for 1-hour directional predictions. I force the model to weigh inputs in a very specific order:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;LEADING (Immediate momentum):&lt;/strong&gt; Taker buy/sell ratio, Volume Delta (CVD), Orderbook imbalance. The front lines of the battle.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;CONFIRMING (Validation):&lt;/strong&gt; Multi-TF trend alignment (1H/4H/1D), VWAP distance, RSI.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;STRUCTURAL (Risk mapping):&lt;/strong&gt; Pivot Points, EMA stacks. The walls of the fortress.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;REVERSAL (The Overrides):&lt;/strong&gt; 4H RSI Divergence, extreme funding rates.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;If it wants to short a structurally long market like crypto, I require it to provide at least two heavy bearish indicators (e.g., taker ratio &amp;lt;0.85 + bearish divergence). It must prove its case.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Nervous System: The All-Seeing Eye
&lt;/h2&gt;

&lt;p&gt;An LLM is only as good as its context window. To make this work, the backend acts as an all-seeing eye, aggregating an absurd amount of data every hour. We aren't just looking at Binance price action.&lt;/p&gt;

&lt;p&gt;The bot ingests:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Derivatives Flow:&lt;/strong&gt; Bybit/Coinglass funding rates, Open Interest, Long/Short ratios.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Technicals:&lt;/strong&gt; 1H/4H/1D MACD, ADX, StochRSI, Bollinger Band widths.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;On-Chain &amp;amp; Sentiment:&lt;/strong&gt; ClankApp Whale activity, Fear &amp;amp; Greed index, DXY/SP500 macro scores.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Latency is the enemy. If you are trading 1-hour momentum, you need sub-second aggregation across 7+ APIs. The data must be fresh, or the decisions are already dead.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Secret Weapon: Guarding the Hoard
&lt;/h2&gt;

&lt;p&gt;Here is where 99% of AI trading projects fail: they treat every trade in a vacuum.&lt;/p&gt;

&lt;p&gt;My bot is fully aware of its own wallet. I inject the &lt;strong&gt;PORTFOLIO STATE&lt;/strong&gt; directly into the prompt. It knows exactly how much capital it has, its current win rate, and the exact P&amp;amp;L of open positions. It guards the hoard.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;PORTFOLIO AWARENESS&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Total Portfolio Value: $11,367.55 USDT&lt;/li&gt;
&lt;li&gt;Available Balance: $8,764.57 USDT (77.1% cash)&lt;/li&gt;
&lt;li&gt;Open Position: #1 BTC/USDT (22.9% of portfolio, currently +3.89% P&amp;amp;L)&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;

&lt;p&gt;I gave it strict exposure rules. If a position is profitable &amp;gt;20%, it must lock in gains. If the portfolio is &amp;gt;70% exposed, it has to minimize new entries.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Crucible: Holding the Line
&lt;/h2&gt;

&lt;p&gt;This is the fascinating part. The other day, BTC was sitting at $71,168. The trend was up. Traditional bots would have likely sounded the horns and slammed the "BUY" button because the price was above the VWAP and the daily MACD was glowing green.&lt;/p&gt;

&lt;p&gt;But Claude saw something else in the shadows. It outputted its required JSON reasoning:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"step_analysis"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"flow"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"BEARISH LEADING SIGNALS: Taker ratio 0.819 (&amp;lt;0.9 = sell pressure), CVD falling (sellers dominating). Leading indicators conflict with uptrend - suggests pullback in progress."&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"momentum"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"CRITICAL: 1H bearish RSI divergence detected - reversal warning but not on 4H."&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"context"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Funding 0.0056% healthy. Fear index 17 = EXTREME FEAR (strong contrarian buy). Whale activity extreme at $2.3B."&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"prediction"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"up"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"confidence"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;54&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"signal_strength"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"neutral_long"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"reasoning"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Uptrend intact but short-term flow is bearish. Low confidence due to conflicting leading indicators. Already hold 22.9% BTC at +3.89% profit - no need to add with mixed signals. Hold existing position."&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"position_action"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;null&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;It decided to do nothing. It recognized the bullish structure but saw the leading bearish flow (falling CVD, low taker ratio). More importantly, it looked at its portfolio, saw it already had 22% exposure in a profitable position, and decided the risk/reward wasn't there to throw more capital into the fray.&lt;/p&gt;

&lt;p&gt;That level of restraint—choosing to HOLD the line in the face of conflicting data—is something most human traders take years and thousands of dollars in liquidations to learn.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Execution: Raising the Shield Wall
&lt;/h2&gt;

&lt;p&gt;But here is the kicker: deciding to "HOLD" doesn't mean the system is sleeping. It means it switches from acquisition mode to defense mode.&lt;/p&gt;

&lt;p&gt;While it declined to allocate new capital, the engine autonomously calculated and placed a protective shield wall around the existing position, dispatching these simulated orders to the exchange:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Pair&lt;/th&gt;
&lt;th&gt;Type&lt;/th&gt;
&lt;th&gt;Price&lt;/th&gt;
&lt;th&gt;Quantity (BTC)&lt;/th&gt;
&lt;th&gt;Exchange&lt;/th&gt;
&lt;th&gt;Status&lt;/th&gt;
&lt;th&gt;Total Value&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;BTC/USDT&lt;/td&gt;
&lt;td&gt;STOP LOSS&lt;/td&gt;
&lt;td&gt;$69,016.99&lt;/td&gt;
&lt;td&gt;0.018874&lt;/td&gt;
&lt;td&gt;phemex&lt;/td&gt;
&lt;td&gt;Simulated&lt;/td&gt;
&lt;td&gt;$1,302.62 USDT&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;BTC/USDT&lt;/td&gt;
&lt;td&gt;SELL LIMIT&lt;/td&gt;
&lt;td&gt;$72,019.58&lt;/td&gt;
&lt;td&gt;0.018874&lt;/td&gt;
&lt;td&gt;phemex&lt;/td&gt;
&lt;td&gt;Simulated&lt;/td&gt;
&lt;td&gt;$1,359.29 USDT&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Notice the mechanical precision. It didn't just throw a blind 5% stop loss into the void. It dynamically placed the stop at $69,016—safely tucked beneath the 4H EMA50 ($68,673) and the S1 pivot to avoid getting wicked out by localized volatility. Simultaneously, it set a limit sell above to automatically lock in partial gains if the RSI divergence resolved in a quick liquidity grab.&lt;/p&gt;

&lt;p&gt;An LLM dynamically building an OCO (One-Cancels-the-Other) bracket based on real-time market structure.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Road Goes Ever On
&lt;/h2&gt;

&lt;p&gt;We are moving past the era of LLMs as simple code-assistants and entering the era of LLMs as autonomous execution engines. When you give an AI structured rules, massive context, and the ability to execute API calls, the results are slightly terrifying and deeply inspiring.&lt;/p&gt;

&lt;p&gt;I'm continuing to refine the Herakles architecture, tweaking the weights, and hunting for more alpha in the data streams. The journey is far from over. I will start tracking and storing all the data to find an edge in historical analysis on this scale. Hourly snapshots of the big picture. Plotted together vs Price action. &lt;/p&gt;

&lt;p&gt;Engine: Octobot (opensource, forked and expanded), Claude Sonnet/Opus 4.6 (cli execution with tmux)&lt;/p&gt;

&lt;p&gt;I'm curious for the devs out there building high stakes agentic workflows:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;How are you prompting your trading bots? What data informs the decisions? Does it give a simple Up/Down response?&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;How much data is too much, creating noise?&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Let's discuss in the comments.&lt;/p&gt;

&lt;p&gt;Please repost if you've made it this far! &lt;/p&gt;

&lt;p&gt;see my other work, &lt;a href="https://github.com/herakles-dev" rel="noopener noreferrer"&gt;https://github.com/herakles-dev&lt;/a&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>machinelearning</category>
      <category>crypto</category>
      <category>architecture</category>
    </item>
    <item>
      <title>My Claude Code agents don't trust each other — and that's the entire security model</title>
      <dc:creator>Michael Piscitelli</dc:creator>
      <pubDate>Tue, 31 Mar 2026 05:33:31 +0000</pubDate>
      <link>https://dev.to/herakles-dev/my-claude-code-agents-dont-trust-each-other-and-thats-the-entire-security-model-4e50</link>
      <guid>https://dev.to/herakles-dev/my-claude-code-agents-dont-trust-each-other-and-thats-the-entire-security-model-4e50</guid>
      <description>&lt;p&gt;Open-sourcing a private project should be simple: push to a public repo and write a README. In practice, it's terrifying.&lt;/p&gt;

&lt;p&gt;GitGuardian's 2026 report found &lt;strong&gt;29 million secrets leaked on GitHub last year&lt;/strong&gt;, and AI-assisted commits leak credentials at &lt;strong&gt;2x the baseline rate&lt;/strong&gt;. Every &lt;code&gt;.env&lt;/code&gt; file, every hardcoded API key, every internal domain reference, every &lt;code&gt;docker-compose.yml&lt;/code&gt; with a plaintext database password — one careless &lt;code&gt;git push&lt;/code&gt; away from being public.&lt;/p&gt;

&lt;p&gt;I kept running into this every time I wanted to open-source something I'd built with Claude Code. The manual process — grep for secrets, replace internal references, check git history, write docs — was tedious, error-prone, and exactly the kind of thing that should be automated.&lt;/p&gt;

&lt;p&gt;So I built 3 Claude Code agents that do it.&lt;/p&gt;


&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://assets.dev.to/assets/github-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/herakles-dev" rel="noopener noreferrer"&gt;
        herakles-dev
      &lt;/a&gt; / &lt;a href="https://github.com/herakles-dev/opensource-pipeline" rel="noopener noreferrer"&gt;
        opensource-pipeline
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      Safely open-source any project with Claude Code. 3-agent pipeline that strips secrets, verifies sanitization, and generates professional docs. Just say /opensource fork my-project.
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;opensource-pipeline&lt;/h1&gt;
&lt;/div&gt;
&lt;p&gt;Safely open-source any project with Claude Code. A 3-agent pipeline that strips secrets, verifies sanitization, and generates professional documentation — so you can go from private repo to public GitHub in minutes.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://github.com/herakles-dev/opensource-pipeline/LICENSE" rel="noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/fdf2982b9f5d7489dcf44570e714e3a15fce6253e0cc6b5aa61a075aac2ff71b/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f4c6963656e73652d4d49542d79656c6c6f772e737667" alt="License: MIT"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Why&lt;/h2&gt;
&lt;/div&gt;
&lt;p&gt;Open-sourcing a project is scary. Did you catch every API key? Every hardcoded password? Every internal domain reference? Every &lt;code&gt;.env&lt;/code&gt; file?&lt;/p&gt;
&lt;p&gt;This pipeline automates the boring, error-prone parts:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Forker agent&lt;/strong&gt; strips secrets, replaces internal references, generates &lt;code&gt;.env.example&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Sanitizer agent&lt;/strong&gt; independently audits the fork with 30+ detection patterns (secrets, PII, internal refs, dangerous files, git history)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Packager agent&lt;/strong&gt; generates &lt;code&gt;CLAUDE.md&lt;/code&gt;, &lt;code&gt;setup.sh&lt;/code&gt;, &lt;code&gt;README.md&lt;/code&gt;, &lt;code&gt;LICENSE&lt;/code&gt;, &lt;code&gt;CONTRIBUTING.md&lt;/code&gt;, and GitHub issue templates&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The sanitizer is paranoid by design — false positives are acceptable, false negatives are not.&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Quick Start&lt;/h2&gt;
&lt;/div&gt;
&lt;div class="highlight highlight-source-shell notranslate position-relative overflow-auto js-code-highlight"&gt;
&lt;pre&gt;git clone https://github.com/herakles-dev/opensource-pipeline.git
&lt;span class="pl-c1"&gt;cd&lt;/span&gt; opensource-pipeline
./setup.sh&lt;/pre&gt;

&lt;/div&gt;
&lt;p&gt;That's it. The installer copies the skill and agents into your &lt;code&gt;~/.claude/&lt;/code&gt; directory.&lt;/p&gt;
&lt;p&gt;Then open Claude Code in any project:&lt;/p&gt;
&lt;div class="highlight highlight-source-shell notranslate position-relative overflow-auto js-code-highlight"&gt;
&lt;pre&gt;&lt;span class="pl-c1"&gt;cd&lt;/span&gt;&lt;/pre&gt;…
&lt;/div&gt;
&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/herakles-dev/opensource-pipeline" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;


&lt;h2&gt;
  
  
  How it works
&lt;/h2&gt;

&lt;p&gt;One command:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;/opensource fork my-project
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Behind the scenes, 3 agents chain together in sequence. Each is a markdown file — no runtime, no dependencies, no Docker. Claude Code reads the instructions and follows the protocol.&lt;/p&gt;

&lt;h3&gt;
  
  
  Stage 1: The Forker
&lt;/h3&gt;

&lt;p&gt;Copies your project, then hunts for secrets using 20 regex patterns:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;AWS credentials (&lt;code&gt;AKIA*&lt;/code&gt;, &lt;code&gt;aws_secret_access_key&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;GitHub tokens (&lt;code&gt;ghp_*&lt;/code&gt;, &lt;code&gt;ghs_*&lt;/code&gt;, &lt;code&gt;github_pat_*&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;Google OAuth (&lt;code&gt;GOCSPX-*&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;JWT tokens (&lt;code&gt;eyJ*&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;Private keys (&lt;code&gt;-----BEGIN RSA PRIVATE KEY-----&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;Database connection strings (postgres, mysql, mongodb, redis URLs with credentials)&lt;/li&gt;
&lt;li&gt;Slack webhooks, SendGrid keys, Mailgun keys&lt;/li&gt;
&lt;li&gt;High-entropy strings in config files&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Every secret found gets extracted to a &lt;code&gt;.env.example&lt;/code&gt; with a placeholder. Internal references — your domains, absolute paths, IP addresses, Docker network names, usernames — are replaced with configurable placeholders.&lt;/p&gt;

&lt;p&gt;The forker never removes functionality. It parameterizes everything so the project still runs after someone does &lt;code&gt;cp .env.example .env&lt;/code&gt; and fills in their values.&lt;/p&gt;

&lt;h3&gt;
  
  
  Stage 2: The Sanitizer
&lt;/h3&gt;

&lt;p&gt;This is where the design gets interesting.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The sanitizer doesn't trust the forker.&lt;/strong&gt; It's a completely independent, read-only auditor that re-scans the entire fork from scratch across 6 categories:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Category&lt;/th&gt;
&lt;th&gt;Severity&lt;/th&gt;
&lt;th&gt;What it checks&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Secrets&lt;/td&gt;
&lt;td&gt;CRITICAL&lt;/td&gt;
&lt;td&gt;All 20 regex patterns, re-applied independently&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;PII&lt;/td&gt;
&lt;td&gt;CRITICAL&lt;/td&gt;
&lt;td&gt;Personal emails, phone numbers, private IPs, SSH strings&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Internal references&lt;/td&gt;
&lt;td&gt;CRITICAL&lt;/td&gt;
&lt;td&gt;Custom domains, home directory paths, secret file refs&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Dangerous files&lt;/td&gt;
&lt;td&gt;CRITICAL&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;.env&lt;/code&gt;, &lt;code&gt;.pem&lt;/code&gt;, &lt;code&gt;.key&lt;/code&gt;, &lt;code&gt;credentials.json&lt;/code&gt;, session state&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Config completeness&lt;/td&gt;
&lt;td&gt;WARNING&lt;/td&gt;
&lt;td&gt;Every env var in code has a matching &lt;code&gt;.env.example&lt;/code&gt; entry&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Git history&lt;/td&gt;
&lt;td&gt;CRITICAL&lt;/td&gt;
&lt;td&gt;Secrets in past commits, clean single-commit history&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;A single critical finding blocks release. The verdict is PASS, FAIL, or PASS WITH WARNINGS — no grey area.&lt;/p&gt;

&lt;p&gt;The sanitizer can report. It cannot fix. That separation of concerns is intentional. If the forker and sanitizer were the same agent, it would silently "fix" things it found — and you'd never know what it missed because it was also the one checking.&lt;/p&gt;

&lt;h3&gt;
  
  
  Stage 3: The Packager
&lt;/h3&gt;

&lt;p&gt;Detects your tech stack (package.json, requirements.txt, Cargo.toml, go.mod, docker-compose.yml) and generates:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;CLAUDE.md&lt;/strong&gt; — so anyone who clones your repo and opens Claude Code can be productive immediately. Commands, architecture, key files, configuration — the operator's manual for Claude.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;setup.sh&lt;/strong&gt; — one-command bootstrap. Checks prerequisites, copies &lt;code&gt;.env.example&lt;/code&gt;, installs dependencies.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;README.md&lt;/strong&gt; — features, quick start, prerequisites, Docker instructions, "Using with Claude Code" section.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;LICENSE&lt;/strong&gt;, &lt;strong&gt;CONTRIBUTING.md&lt;/strong&gt;, &lt;strong&gt;GitHub issue templates&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  The architecture is 4 markdown files
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight markdown"&gt;&lt;code&gt;skills/opensource/SKILL.md     # Orchestrator — routes commands, chains agents
agents/opensource-forker.md    # Stage 1: Copy, strip, replace, .env.example
agents/opensource-sanitizer.md # Stage 2: Independent read-only audit
agents/opensource-packager.md  # Stage 3: Generate CLAUDE.md, setup.sh, README
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Total: 1,506 lines. No &lt;code&gt;package.json&lt;/code&gt;. No &lt;code&gt;requirements.txt&lt;/code&gt;. No build step. Each agent is a &lt;code&gt;.md&lt;/code&gt; file with YAML frontmatter (name, description, model) and a body of natural language instructions that Claude Code follows.&lt;/p&gt;

&lt;p&gt;The "code" is English.&lt;/p&gt;

&lt;h2&gt;
  
  
  Installation
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git clone https://github.com/herakles-dev/opensource-pipeline.git
&lt;span class="nb"&gt;cd &lt;/span&gt;opensource-pipeline
./setup.sh    &lt;span class="c"&gt;# Copies 4 files into ~/.claude/&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Then open Claude Code in any project:&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="nb"&gt;cd&lt;/span&gt; ~/my-private-project
claude
&lt;span class="c"&gt;# Say: /opensource fork my-project&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You can also say "open source this project" or "make this public" — the skill triggers on natural language too.&lt;/p&gt;

&lt;h2&gt;
  
  
  The adversarial review
&lt;/h2&gt;

&lt;p&gt;Before publishing this repo, I ran 3 review agents against it in parallel:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Sanitizer audit&lt;/strong&gt; — scanned for any leaked secrets, PII, internal references&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Independence review&lt;/strong&gt; — checked if the project works on a fresh machine with zero knowledge of my platform&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Functional simulation&lt;/strong&gt; — traced the entire setup.sh and skill execution flow as a new user&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;They found 12 issues: platform-specific metadata in agent frontmatter, a path resolution bug, missing rsync check in setup.sh, personal name in git commit author. All fixed before push.&lt;/p&gt;

&lt;p&gt;The pipeline open-sourced itself.&lt;/p&gt;

&lt;h2&gt;
  
  
  What I learned
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;1. Agents are just markdown.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;This was the biggest revelation. 1,506 lines across 4 files. No packages, no runtime, no build. Claude Code reads the markdown and follows the protocol. If you can write clear instructions for a human, you can write an agent.&lt;/p&gt;

&lt;p&gt;The YAML frontmatter is 4 lines:&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;opensource-sanitizer&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;Verify&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;open-source&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;fork&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;is&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;fully&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;sanitized..."&lt;/span&gt;
&lt;span class="na"&gt;model&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;sonnet&lt;/span&gt;
&lt;span class="na"&gt;color&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;red&lt;/span&gt;
&lt;span class="nn"&gt;---&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Everything below it is the agent's brain — written in plain English.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. Zero trust between agents is worth the redundancy.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The sanitizer re-does the forker's work. In a traditional system, that's waste. In a security-critical pipeline, it's the feature. The forker's job is to transform. The sanitizer's job is to verify. If one agent does both, you've created a system that can silently paper over its own mistakes.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. The paranoid option is the right default.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;We tuned every detection threshold toward false positives. The sanitizer flags anything that looks remotely suspicious. A false positive is an annoying warning you dismiss. A false negative is a secret on GitHub. The asymmetry is extreme — always choose paranoia.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;4. CLAUDE.md is the highest-leverage file in any repo.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Not README (that's for humans browsing GitHub). Not &lt;code&gt;.env.example&lt;/code&gt; (that's for configuration). CLAUDE.md is the file that makes Claude Code productive in your project immediately. The packager generates one automatically, and it's often the single most useful artifact from the pipeline.&lt;/p&gt;

&lt;h2&gt;
  
  
  Contributing
&lt;/h2&gt;

&lt;p&gt;The repo has 5 open issues tagged "good first issue":&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Add detection patterns for Azure, GCP, Stripe, OpenAI, Anthropic API keys&lt;/li&gt;
&lt;li&gt;Add Rust, Go, Java/Kotlin stack detection to the packager&lt;/li&gt;
&lt;li&gt;Monorepo support&lt;/li&gt;
&lt;li&gt;GitHub Actions CI for pattern testing&lt;/li&gt;
&lt;li&gt;Community feedback thread&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The easiest contribution is adding a regex pattern to the sanitizer. Find a secret type we don't detect, write the pattern, submit a PR.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Repo:&lt;/strong&gt; &lt;a href="https://github.com/herakles-dev/opensource-pipeline" rel="noopener noreferrer"&gt;herakles-dev/opensource-pipeline&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;MIT license. The whole thing is markdown. PRs welcome.&lt;/p&gt;

</description>
      <category>showdev</category>
      <category>security</category>
      <category>opensource</category>
      <category>claudeai</category>
    </item>
    <item>
      <title>I am one with Opus. Its adorable, we complete each other sentences! Hah but for real, its unbeatable with the right harness.</title>
      <dc:creator>Michael Piscitelli</dc:creator>
      <pubDate>Tue, 31 Mar 2026 04:07:21 +0000</pubDate>
      <link>https://dev.to/herakles-dev/i-am-one-with-opus-its-adorable-we-complete-each-other-sentences-hah-but-for-real-its-4pcb</link>
      <guid>https://dev.to/herakles-dev/i-am-one-with-opus-its-adorable-we-complete-each-other-sentences-hah-but-for-real-its-4pcb</guid>
      <description></description>
    </item>
    <item>
      <title>I Built an Open-Source LLM Harness — AI Agents Interview, Plan, Build &amp; Deploy Entire Apps From One Prompt | Any LLM | CLI</title>
      <dc:creator>Michael Piscitelli</dc:creator>
      <pubDate>Tue, 17 Mar 2026 04:15:58 +0000</pubDate>
      <link>https://dev.to/herakles-dev/i-built-an-open-source-llm-harness-ai-agents-interview-plan-build-deploy-entire-apps-from-58m5</link>
      <guid>https://dev.to/herakles-dev/i-built-an-open-source-llm-harness-ai-agents-interview-plan-build-deploy-entire-apps-from-58m5</guid>
      <description>&lt;p&gt;We hit submit on the Amazon Nova Hackathon with 2 minutes to spare.&lt;/p&gt;

&lt;p&gt;12 days. 30,000 lines of Python. 9 playable games — all built by AI agents, zero human code. That's right, agent-inception!&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://forge.herakles.dev/demos/" rel="noopener noreferrer"&gt;See what it built →&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;## One Prompt In, Deployed App Out&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Build a tower defense with 6 tower types and chain lightning&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Nova Forge interviews you, decomposes the work into parallel tasks, assigns AI agents, runs adversarial quality review, and deploys. That prompt produced an 802-line playable game&lt;br&gt;
  in 341 seconds.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://forge.herakles.dev/demos/" rel="noopener noreferrer"&gt;https://forge.herakles.dev/demos/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;What Blew Our Minds&lt;/p&gt;

&lt;p&gt;We wanted forge to produce a working app. Our test game had 5 bugs. We pointed the framework at its own output. Nova Pro found every bug, fixed them all in 26 seconds — including a&lt;br&gt;
  structural refactor using a tool we 'invented' that morning (replace_lines).&lt;/p&gt;

&lt;p&gt;That debug session is now proof-of-work alongside the demo. The model fixing its own mistakes became our best feature-&amp;gt; zero manual debug loops. &lt;/p&gt;

&lt;p&gt;The 6 Bugs Every Agent Framework Will Hit&lt;/p&gt;

&lt;p&gt;We found these the hard way. Saving you the pain:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Agents describe code instead of writing it — your prompt must say "call write_file," not "complete the task"&lt;/li&gt;
&lt;li&gt;Specs get summarized to death — "pseudo-3D racer with ACCEL=0.9" becomes "build a game" → wrong output&lt;/li&gt;
&lt;li&gt;Building agents never see the spec — only task summaries reach them. Inject the full spec.&lt;/li&gt;
&lt;li&gt;Verify phase kills multi-file builds — agent writes 80 lines, enters verify mode, wastes all turns&lt;/li&gt;
&lt;li&gt;Missing tools are silent failures — without think, models dump reasoning as text&lt;/li&gt;
&lt;li&gt;No path guidance = wrong directory — models love creating src/ when you want project root&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Each one took hours to trace. We built fast, and broke things. But we finished the race! &lt;a href="https://github.com/herakles-dev/nova-forge" rel="noopener noreferrer"&gt;https://github.com/herakles-dev/nova-forge&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The Stack&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Pure Python — 35 modules, 1,670 tests, no JS dependencies&lt;/li&gt;
&lt;li&gt;14 agent tools — read, write, edit, replace_lines, bash, grep, think&lt;/li&gt;
&lt;li&gt;11 team formations — solo builds to 5-agent architecture reviews&lt;/li&gt;
&lt;li&gt;3 model tiers — works with Nova Lite (32K), Pro (300K), Premier (1M)&lt;/li&gt;
&lt;li&gt;LLM-agnostic — Bedrock, OpenAI, Anthropic adapters in the router&lt;/li&gt;
&lt;li&gt;LLM-agnostic — Bedrock, OpenAI, Anthropic adapters in the router&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Come Build With Us&lt;/p&gt;

&lt;p&gt;The framework works. The bugs are documented. The hard problems are interesting.&lt;/p&gt;

&lt;p&gt;What we need:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;🔌 LLM adapters — Ollama, Groq, Mistral, Together&lt;/li&gt;
&lt;li&gt;🧪 Benchmark scenarios — what breaks when you try to build X?&lt;/li&gt;
&lt;li&gt;🛠️  Agent tools — test runners, git integration, package managers&lt;/li&gt;
&lt;li&gt;🐛 Bug reports — try building something weird and tell us what happens&lt;/li&gt;
&lt;li&gt;More consistent builds, a smarter system (the first time)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;git clone &lt;a href="https://github.com/herakles-dev/nova-forge.git" rel="noopener noreferrer"&gt;https://github.com/herakles-dev/nova-forge.git&lt;/a&gt;&lt;br&gt;
  cd nova-forge &amp;amp;&amp;amp; ./setup.sh&lt;br&gt;
  python3 forge_cli.py&lt;/p&gt;

&lt;p&gt;⭐ &lt;a href="https://github.com/herakles-dev/nova-forge" rel="noopener noreferrer"&gt;https://github.com/herakles-dev/nova-forge&lt;/a&gt; | 🎮 &lt;a href="https://forge.herakles.dev/demos/" rel="noopener noreferrer"&gt;https://forge.herakles.dev/demos/&lt;/a&gt; | 🐛 &lt;br&gt;
&lt;a href="https://forge.herakles.dev/guide.html" rel="noopener noreferrer"&gt;https://forge.herakles.dev/guide.html&lt;/a&gt;&lt;br&gt;
&lt;a href="https://github.com/herakles-dev/nova-forge/issues" rel="noopener noreferrer"&gt;https://github.com/herakles-dev/nova-forge/issues&lt;/a&gt;&lt;/p&gt;

</description>
      <category>devtools</category>
      <category>agents</category>
      <category>ai</category>
      <category>opensource</category>
    </item>
    <item>
      <title>Anvil — A Writing Forge for Fellowship and Grant Applications (Open Source)</title>
      <dc:creator>Michael Piscitelli</dc:creator>
      <pubDate>Sat, 14 Mar 2026 04:00:36 +0000</pubDate>
      <link>https://dev.to/herakles-dev/anvil-a-writing-forge-for-fellowship-and-grant-applications-open-source-22fl</link>
      <guid>https://dev.to/herakles-dev/anvil-a-writing-forge-for-fellowship-and-grant-applications-open-source-22fl</guid>
      <description>&lt;p&gt;If you use a CLI-based LLM like Claude Code or Cursor to help with writing, you know the friction: edit files in one place, run the LLM in another, copy-paste between them.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Anvil&lt;/strong&gt; bridges that gap. It is a browser-based writing workspace that reads and writes the same plain markdown files your LLM works with from the terminal.&lt;/p&gt;

&lt;h2&gt;
  
  
  What it does
&lt;/h2&gt;

&lt;p&gt;Anvil gives you:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Block-level editing&lt;/strong&gt; with inline review notes&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Evidence sidebar&lt;/strong&gt; (Ctrl+E) to search research files while drafting&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Guided form fields&lt;/strong&gt; with word counters, field guides, and tips&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Status tracking&lt;/strong&gt;: not_started to first_draft to human_written to ai_refined to final&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Resume editor&lt;/strong&gt; with split-pane HTML + live preview + PDF export&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Export&lt;/strong&gt; copy-paste-ready text for application portals&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  The workflow
&lt;/h2&gt;

&lt;p&gt;You write first drafts in the browser. Your LLM reads and refines the same markdown files from the terminal. Status tracking keeps you honest about what is human-written vs AI-refined.&lt;/p&gt;

&lt;h2&gt;
  
  
  Stack
&lt;/h2&gt;

&lt;p&gt;Flask 3.1 + Vanilla JS + SQLite + Docker. No build step. No npm.&lt;/p&gt;

&lt;p&gt;The CLAUDE.md includes a full setup guide. Paste one prompt into your CLI and it interviews you, builds your evidence base, configures form fields, and writes your resume.&lt;/p&gt;

&lt;h2&gt;
  
  
  Get started
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git clone https://github.com/herakles-dev/anvil.git
&lt;span class="nb"&gt;cd &lt;/span&gt;anvil
docker compose up &lt;span class="nt"&gt;-d&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;MIT licensed. Issues and PRs welcome.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;GitHub:&lt;/strong&gt; &lt;a href="https://github.com/herakles-dev/anvil" rel="noopener noreferrer"&gt;herakles-dev/anvil&lt;/a&gt;&lt;/p&gt;

</description>
      <category>opensource</category>
      <category>python</category>
      <category>cli</category>
      <category>productivity</category>
    </item>
  </channel>
</rss>
