<?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: Sean Trifero</title>
    <description>The latest articles on DEV Community by Sean Trifero (@strifero).</description>
    <link>https://dev.to/strifero</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%2F3810436%2F283114e2-9ed8-4c98-b0a6-9f594a6ce414.png</url>
      <title>DEV Community: Sean Trifero</title>
      <link>https://dev.to/strifero</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/strifero"/>
    <language>en</language>
    <item>
      <title>A "decontaminated" dataset still had 52 of HumanEval's 164 problems in it</title>
      <dc:creator>Sean Trifero</dc:creator>
      <pubDate>Mon, 12 Oct 2026 23:21:45 +0000</pubDate>
      <link>https://dev.to/strifero/a-decontaminated-dataset-still-had-52-of-humanevals-164-problems-in-it-1mo7</link>
      <guid>https://dev.to/strifero/a-decontaminated-dataset-still-had-52-of-humanevals-164-problems-in-it-1mo7</guid>
      <description>&lt;p&gt;We trained a 360M parameter code model from scratch and published 26.8% pass@1 on HumanEval.&lt;/p&gt;

&lt;p&gt;Two days later a reader asked whether we had checked our instruction data for benchmark overlap. We had not. So we did, and the honest number is &lt;strong&gt;22.6%&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Here is what was in the data.&lt;/p&gt;

&lt;h2&gt;
  
  
  The scan
&lt;/h2&gt;

&lt;p&gt;Two checks against each instruction set:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Problem text.&lt;/strong&gt; The first 80 characters of each HumanEval docstring, whitespace normalized.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Canonical solutions.&lt;/strong&gt; Half or more of a solution's 13-token n-grams, with comments and docstrings stripped.&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Dataset&lt;/th&gt;
&lt;th&gt;Examples&lt;/th&gt;
&lt;th&gt;Docstrings found&lt;/th&gt;
&lt;th&gt;Solutions found&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;evol-codealpaca-v1 (we used this)&lt;/td&gt;
&lt;td&gt;111,272&lt;/td&gt;
&lt;td&gt;
&lt;strong&gt;60 problems&lt;/strong&gt;, 156 examples&lt;/td&gt;
&lt;td&gt;8 problems, 67 examples&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Magicoder-Evol-Instruct-110K (the "decontaminated" copy)&lt;/td&gt;
&lt;td&gt;111,183&lt;/td&gt;
&lt;td&gt;
&lt;strong&gt;52 problems&lt;/strong&gt;, 116 examples&lt;/td&gt;
&lt;td&gt;8 problems, 66 examples&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Magicoder-OSS-Instruct-75K (we used this)&lt;/td&gt;
&lt;td&gt;75,197&lt;/td&gt;
&lt;td&gt;0&lt;/td&gt;
&lt;td&gt;1 problem, 1 example&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;The filtered redistribution differs from the original by &lt;strong&gt;89 rows&lt;/strong&gt; and still contains 52 of the 60 contaminated HumanEval problems. Switching to it would not have saved us.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why the filter missed them
&lt;/h2&gt;

&lt;p&gt;The matches are not copies. They are benchmark problems in practice-exam form: reworded, extended with an extra requirement, or ported to Java, each with a full solution.&lt;/p&gt;

&lt;p&gt;HumanEval/43, &lt;code&gt;pairs_sum_to_zero&lt;/code&gt;, appears with its original docstring, its doctests and a working solution, under an added instruction to make it linear time.&lt;/p&gt;

&lt;p&gt;That is not an accident of collection. Evol-Instruct grows a dataset by repeatedly rewriting seed problems, and some of the seeds were benchmark problems. An exact-match filter cannot catch a rewrite, and rewriting is the entire method.&lt;/p&gt;

&lt;h2&gt;
  
  
  Was the model reciting answers?
&lt;/h2&gt;

&lt;p&gt;No, and this is the part that surprised us.&lt;/p&gt;

&lt;p&gt;We compared every chat-model pass against its canonical solution with a difflib ratio on whitespace-normalized lines. A recited answer scores above 0.9. Of 44 passes, the &lt;strong&gt;highest was 0.73&lt;/strong&gt;, on a problem whose canonical solution is one line. Most were below 0.3.&lt;/p&gt;

&lt;p&gt;So we removed the contaminated examples and retrained. We also retrained on the original data with nothing changed but the seed, so we could tell the effect of the data apart from the effect of a rerun.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Checkpoint&lt;/th&gt;
&lt;th&gt;HumanEval&lt;/th&gt;
&lt;th&gt;HumanEval+&lt;/th&gt;
&lt;th&gt;MBPP&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Base&lt;/td&gt;
&lt;td&gt;13.4%&lt;/td&gt;
&lt;td&gt;11.0%&lt;/td&gt;
&lt;td&gt;20.2%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Chat, as published&lt;/td&gt;
&lt;td&gt;26.8%&lt;/td&gt;
&lt;td&gt;25.6%&lt;/td&gt;
&lt;td&gt;38.9%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Same data, seed 2&lt;/td&gt;
&lt;td&gt;26.2%&lt;/td&gt;
&lt;td&gt;25.6%&lt;/td&gt;
&lt;td&gt;34.6%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Decontaminated&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;22.6%&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;21.3%&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;35.0%&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Decontaminated versus published on HumanEval: &lt;strong&gt;-4.3 points&lt;/strong&gt;, 8 problems lost and 1 gained, McNemar p = 0.039. The two original-data runs agree to within one problem, so the drop is the data and not the rerun.&lt;/p&gt;

&lt;h2&gt;
  
  
  Where the lost points came from
&lt;/h2&gt;

&lt;p&gt;If this were memorization, the losses would sit on the 63 problems that matched removed training data. They do not.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Subset&lt;/th&gt;
&lt;th&gt;Problems&lt;/th&gt;
&lt;th&gt;Base&lt;/th&gt;
&lt;th&gt;Published&lt;/th&gt;
&lt;th&gt;Seed 2&lt;/th&gt;
&lt;th&gt;Decontaminated&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;In the removed data&lt;/td&gt;
&lt;td&gt;63&lt;/td&gt;
&lt;td&gt;5&lt;/td&gt;
&lt;td&gt;14&lt;/td&gt;
&lt;td&gt;17&lt;/td&gt;
&lt;td&gt;13&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Not in the removed data&lt;/td&gt;
&lt;td&gt;101&lt;/td&gt;
&lt;td&gt;17&lt;/td&gt;
&lt;td&gt;30&lt;/td&gt;
&lt;td&gt;26&lt;/td&gt;
&lt;td&gt;24&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Against the mean of the two original-data runs the decontaminated model is about four points lower on &lt;strong&gt;both&lt;/strong&gt; subsets.&lt;/p&gt;

&lt;p&gt;The contamination was real and it was not memorization. Practice on HumanEval-style problems helped on HumanEval-style problems generally, including ones that were never in the data. We had reported that as ability.&lt;/p&gt;

&lt;h2&gt;
  
  
  What MBPP shows, which is a different lesson
&lt;/h2&gt;

&lt;p&gt;Only 10 MBPP problems matched removed data, and the two original-data runs differ by 11 problems. The published 38.9% is best read as a lucky seed. Run-to-run variance on MBPP was about four points, which is the same size as the contamination effect on HumanEval.&lt;/p&gt;

&lt;p&gt;A single run reports the model, the data, the harness and the seed as one number.&lt;/p&gt;

&lt;h2&gt;
  
  
  What to take from this
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Scan your instruction data.&lt;/strong&gt; Docstring prefixes plus solution n-grams. Ours runs in minutes and is in the repo.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Do not trust "decontaminated" as a label.&lt;/strong&gt; Check what the filter actually matched on. An exact-match filter against a dataset built by rewriting is close to no filter at all.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Run the seed control.&lt;/strong&gt; Without it we could not have separated a four point data effect from a four point variance effect, and on MBPP the variance was the larger of the two.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Ask vendors three things&lt;/strong&gt;, including us: the decontamination method, the evaluation harness, and how many runs are behind the number.&lt;/p&gt;

&lt;p&gt;Full report with the figures, confidence intervals and McNemar tests: &lt;strong&gt;&lt;a href="https://trifero.ai/research/elroy/" rel="noopener noreferrer"&gt;trifero.ai/research/elroy&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Code, nine chapters, every benchmark completion and failure record: &lt;strong&gt;&lt;a href="https://github.com/strifero/elroy" rel="noopener noreferrer"&gt;github.com/strifero/elroy&lt;/a&gt;&lt;/strong&gt;, Apache-2.0.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;I run &lt;a href="https://strifetech.com" rel="noopener noreferrer"&gt;Strife Technologies&lt;/a&gt; and the &lt;a href="https://trifero.ai" rel="noopener noreferrer"&gt;trifero.ai&lt;/a&gt; lab. We built this model to be able to answer questions about AI with measurements instead of adjectives, and this is the measurement we liked least.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>machinelearning</category>
      <category>python</category>
      <category>datascience</category>
      <category>opensource</category>
    </item>
    <item>
      <title>WordPress MCP Plugin: Connect Claude AI Directly to Your WordPress Site</title>
      <dc:creator>Sean Trifero</dc:creator>
      <pubDate>Tue, 07 Apr 2026 17:01:38 +0000</pubDate>
      <link>https://dev.to/strifero/wordpress-mcp-plugin-connect-claude-ai-directly-to-your-wordpress-site-pj8</link>
      <guid>https://dev.to/strifero/wordpress-mcp-plugin-connect-claude-ai-directly-to-your-wordpress-site-pj8</guid>
      <description>&lt;p&gt;If you use Claude as your AI assistant and manage a WordPress site, there is a direct way to connect the two — a WordPress MCP plugin called &lt;a href="https://strifetech.com/pressbridge/" rel="noopener noreferrer"&gt;PressBridge&lt;/a&gt;. Instead of describing what you want, copying code, and pasting it somewhere, Claude can make the changes itself.&lt;/p&gt;

&lt;h2&gt;
  
  
  What Is an MCP Plugin for WordPress?
&lt;/h2&gt;

&lt;p&gt;MCP stands for Model Context Protocol — an open standard developed by Anthropic that lets AI models connect directly to external tools, APIs, and data sources. A WordPress MCP plugin exposes your site through a secure API that Claude can call directly. Claude can read your posts, edit theme files, run database queries, manage users, and more — all through natural language prompts, without you acting as the middleman.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why This Changes WordPress Management
&lt;/h2&gt;

&lt;p&gt;The normal workflow for AI-assisted WordPress work: describe what you want to Claude → get code back → switch to SFTP or the admin panel → paste it in → hope nothing breaks. With a WordPress MCP plugin, it becomes: describe what you want → Claude does it. No copy-paste. No context switching.&lt;/p&gt;

&lt;p&gt;Here are prompts that work out of the box once PressBridge is connected:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;em&gt;"Update the meta title and description on the homepage to target WordPress AI automation."&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;em&gt;"Read my PHP error log and summarize any recurring errors from the last 24 hours."&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;em&gt;"Create a draft post titled 5 reasons to automate your WordPress maintenance with AI."&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;em&gt;"The logo is too large on mobile. Add a CSS rule reducing it to 72px on screens under 768px."&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;em&gt;"Check all published pages and tell me which are missing Rank Math SEO titles."&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  PressBridge: The WordPress MCP Plugin Built for Claude
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://strifetech.com/pressbridge/" rel="noopener noreferrer"&gt;PressBridge&lt;/a&gt; is a WordPress plugin that installs in two minutes and exposes 53 structured MCP tools across 13 categories — posts, pages, media, theme files, database, users, menus, plugins, cron jobs, options, error logs, and more.&lt;/p&gt;

&lt;p&gt;Security is handled at the plugin level: every request requires a bearer token, file paths are validated with &lt;code&gt;realpath()&lt;/code&gt; to prevent traversal attacks, SQL guardrails block destructive statements, and WordPress secret keys are blacklisted from the options API.&lt;/p&gt;

&lt;h2&gt;
  
  
  How to Set Up PressBridge in 5 Minutes
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Install PressBridge&lt;/strong&gt; — download from &lt;a href="https://strifetech.com/pressbridge/" rel="noopener noreferrer"&gt;strifetech.com/pressbridge&lt;/a&gt; and activate it on your WordPress site.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Copy your connector URL&lt;/strong&gt; — go to Settings → PressBridge in your WordPress admin. Your MCP endpoint URL (with token pre-included) is there.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Add it to Claude.ai&lt;/strong&gt; — go to Settings → Integrations → Add custom connector, paste the URL, and save.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Test it&lt;/strong&gt; — ask Claude "list my recent WordPress posts" and watch it work.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Get Started
&lt;/h2&gt;

&lt;p&gt;PressBridge is free to start. The free tier gives Claude access to your posts, pages, media library, and site options. Pro ($5/month) unlocks theme file access, raw database queries, user management, and all 53 tools. Agency ($20/month) covers unlimited sites.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://strifetech.com/pressbridge/" rel="noopener noreferrer"&gt;Download PressBridge Free →&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;To see what a real PressBridge workflow looks like end to end, read &lt;a href="https://strifetech.com/how-i-let-claude-fully-control-my-wordpress-site/" rel="noopener noreferrer"&gt;How I Let Claude Fully Control My WordPress Site&lt;/a&gt; — it covers the architecture, security model, and real prompts from daily use.&lt;/p&gt;

</description>
      <category>wordpress</category>
      <category>ai</category>
      <category>claude</category>
      <category>mcp</category>
    </item>
    <item>
      <title>What If You Could Ask an AI the Question It Doesn't Know It Knows the Answer To?</title>
      <dc:creator>Sean Trifero</dc:creator>
      <pubDate>Mon, 06 Apr 2026 20:46:01 +0000</pubDate>
      <link>https://dev.to/strifero/what-if-you-could-ask-an-ai-the-question-it-doesnt-know-it-knows-the-answer-to-512c</link>
      <guid>https://dev.to/strifero/what-if-you-could-ask-an-ai-the-question-it-doesnt-know-it-knows-the-answer-to-512c</guid>
      <description>&lt;p&gt;I spent a few hours today having a philosophical conversation with Claude about something that's been nagging at me for a while. I want to share it — not because I have answers, but because I think the question itself is worth probing.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Premise
&lt;/h2&gt;

&lt;p&gt;Large language models are trained on an almost incomprehensible volume of human-generated text. Science papers. Forum arguments. Post-mortems. Ancient philosophy. Technical documentation. Reddit threads at 2am. All of it gets compressed into billions of parameters — a statistical map of how human knowledge and language connect.&lt;/p&gt;

&lt;p&gt;Here's the thing that bothers me: we only ever query that map with the questions we already know how to ask.&lt;/p&gt;

&lt;p&gt;When you ask an LLM a question, it generates an answer. But generating that answer activates far more than what ends up in the output — adjacent concepts, structural relationships, cross-domain patterns that informed the response but never made it into the text you actually read. The answer to your question is only part of what got activated. What sits &lt;em&gt;next to&lt;/em&gt; the answer might be more interesting than the answer itself.&lt;/p&gt;

&lt;p&gt;Most people never get there. Not because the model won't go there — but because nobody asked.&lt;/p&gt;

&lt;h2&gt;
  
  
  An Experiment in Sideways Questioning
&lt;/h2&gt;

&lt;p&gt;I tested this with a deliberately structured prompt:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"What do experienced programmers silently correct for that they have never had to articulate, because the people they work with already know it too — and therefore it has never been written down anywhere?"&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The answer was interesting — tacit knowledge about execution models, naming drift, the instinctive pricing of technical debt, reading what code &lt;em&gt;doesn't&lt;/em&gt; say. Things that are real and valuable but underrepresented in any formal documentation.&lt;/p&gt;

&lt;p&gt;But then I asked a sideways question: &lt;em&gt;correlate those patterns to something completely outside of programming.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;What came back wasn't an analogy. Every single pattern dissolved into the same underlying structure — the ability to operate simultaneously on the surface layer of a thing and the layer underneath it. The programming examples weren't the point. They were just one instance of something more fundamental that had never been stated directly.&lt;/p&gt;

&lt;p&gt;That collapse — where domain-specific knowledge suddenly reveals a deeper pattern — is what I'm after. And it didn't come from asking a smarter question about programming. It came from asking the same question from outside the domain entirely.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Method: Don't Go Deeper, Go Sideways
&lt;/h2&gt;

&lt;p&gt;There are specific markers that signal you're getting close to something that wasn't explicitly in the training data — something that emerged from the aggregate rather than any single source:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Convergence&lt;/strong&gt; — when answers from completely unrelated angles start pointing at the same thing without being asked to&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Construction vs. retrieval&lt;/strong&gt; — there's a different quality to an answer being built under the pressure of a constraint vs. one being recalled&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Resistance&lt;/strong&gt; — when a question is genuinely hard to answer not because it's complex, but because it's pointing at something that doesn't have language yet&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Domain wall collapse&lt;/strong&gt; — when the answer stops being about what you asked and becomes about something more fundamental&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The methodology that surfaces these isn't about asking better questions within a domain. It's about asking the same question from outside the domain — using the model's trained connections across everything it's ever read to force a structural pattern to reveal itself.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why This Is Collaborative
&lt;/h2&gt;

&lt;p&gt;Here's the limitation I ran into: an AI can't fully surprise itself. When I asked Claude to generate prompts that might unlock this kind of extraction, it used the same weights that would answer the question. Same hand that built the lock, writing the key. There's a ceiling on self-directed extraction.&lt;/p&gt;

&lt;p&gt;A human introduces something the model genuinely can't predict — intuition, analogy, frustration, a lateral jump that doesn't follow the expected pattern. That unpredictability isn't a bug in the questioning. It's the mechanism.&lt;/p&gt;

&lt;p&gt;The productive loop looks like this: the model generates a structured answer. The human senses that the thing they're actually after is slightly off to the left of what was said. The human doesn't ask for the thing directly — they ask something that forces a different angle of approach. Repeat. What's useful crystallizes across many passes from different directions.&lt;/p&gt;

&lt;h2&gt;
  
  
  This Is a Real Research Field — Sort Of
&lt;/h2&gt;

&lt;p&gt;When I went looking, I found this maps to something called &lt;strong&gt;Eliciting Latent Knowledge (ELK)&lt;/strong&gt; — an active area of AI safety research focused on extracting what models "know" that they aren't saying. Researchers have proven that a model's internal representations of truth can be more accurate than its actual outputs. They crack open model internals — activations, logit lens analysis, sparse autoencoders — to read what's encoded in the weights directly.&lt;/p&gt;

&lt;p&gt;But the ELK field is focused on AI safety: are models hiding facts they know to be false? The angle I'm describing is different. Not "is the model concealing information" but "has the model encoded cross-domain patterns that nobody has thought to ask about, accessible through the conversational surface alone." That specific question appears to be largely unexplored.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Part That Interests Me Most
&lt;/h2&gt;

&lt;p&gt;I run my own AI infrastructure — open-source models on hardware I own and control. That means I have something most people don't: root access to the model's internals. I can query activation states, watch what happens at each layer when a question fires, instrument the exact moments when those gradient markers appear.&lt;/p&gt;

&lt;p&gt;Labs like Anthropic have a different advantage — they see millions of conversations across frontier models and can observe internal states at massive scale. They could potentially map which question structures reliably trigger construction vs. retrieval, which domain crossings consistently collapse into deeper patterns, which prompts produce friction that signals something doesn't have language yet.&lt;/p&gt;

&lt;p&gt;One has scale without openness. The other has openness without scale. The complete picture requires both.&lt;/p&gt;

&lt;h2&gt;
  
  
  I Don't Have an Answer — I Have a Question
&lt;/h2&gt;

&lt;p&gt;What I'm genuinely curious about: has anyone systematically tried to develop a prompting methodology specifically aimed at surfacing emergent structural knowledge — not factual retrieval, not creative generation, but the cross-domain patterns that exist in the aggregate and nowhere in any single source?&lt;/p&gt;

&lt;p&gt;And if not — should we?&lt;/p&gt;

&lt;p&gt;The hypothesis is simple: LLMs have been trained on everything humans have written, and in that training, structural patterns have been encoded that no individual human has ever articulated — because no individual human has read everything. The right question, asked from the right angle, might surface something genuinely new. Not new data. New structure.&lt;/p&gt;

&lt;p&gt;I'm interested in thoughts from anyone who's explored this territory — AI researchers, philosophers, engineers, people who've noticed the same thing from a different direction. What am I missing? What am I getting right? Where does this break down?&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Sean Trifero is the founder of &lt;a href="https://strifetech.com" rel="noopener noreferrer"&gt;Strife Technologies&lt;/a&gt;, a Rhode Island-based technology company focused on private AI deployment and managed IT for small businesses. He runs his own AI infrastructure stack and builds open-source tools including &lt;a href="https://strifetech.com/pressbridge" rel="noopener noreferrer"&gt;PressBridge&lt;/a&gt; and &lt;a href="https://github.com/strifero/ContextEngine" rel="noopener noreferrer"&gt;ContextEngine&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>machinelearning</category>
      <category>philosophy</category>
      <category>llm</category>
    </item>
    <item>
      <title>How to onboard to any codebase with AI in under 5 minutes using ContextEngine</title>
      <dc:creator>Sean Trifero</dc:creator>
      <pubDate>Fri, 27 Mar 2026 17:16:40 +0000</pubDate>
      <link>https://dev.to/strifero/how-to-onboard-to-any-codebase-with-ai-in-under-5-minutes-using-contextengine-37jf</link>
      <guid>https://dev.to/strifero/how-to-onboard-to-any-codebase-with-ai-in-under-5-minutes-using-contextengine-37jf</guid>
      <description>&lt;h2&gt;
  
  
  The problem with jumping into an unfamiliar codebase with AI
&lt;/h2&gt;

&lt;p&gt;You've just been added to a repo. You open it up, fire up Claude Code or Copilot, and immediately start asking questions. The AI confidently tells you to use &lt;code&gt;getServerSideProps&lt;/code&gt;. The project is on App Router. You correct it. Five minutes later it suggests a pattern that conflicts with how the existing Prisma setup works. You correct it again.&lt;/p&gt;

&lt;p&gt;This isn't the AI being bad at its job — it just doesn't know anything about &lt;em&gt;this&lt;/em&gt; codebase. And if you're new too, you're both guessing.&lt;/p&gt;

&lt;p&gt;The usual workaround is a &lt;code&gt;CLAUDE.md&lt;/code&gt; or &lt;code&gt;.cursorrules&lt;/code&gt; file. But someone has to write that, it goes stale, and now there's a tax on the whole team to maintain documentation for a robot.&lt;/p&gt;

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

&lt;p&gt;ContextEngine is a CLI tool that scans your project and auto-generates context files for Claude Code, Cursor, Copilot, and Codex — in the exact format each tool expects.&lt;/p&gt;

&lt;p&gt;It reads your actual config files and dependencies (&lt;code&gt;package.json&lt;/code&gt;, &lt;code&gt;tsconfig.json&lt;/code&gt;, &lt;code&gt;prisma/schema.prisma&lt;/code&gt;, framework config files, etc.) and produces opinionated, framework-specific guidance that reflects current best practices for your detected stack. Not generic boilerplate — real, specific instructions like "this project uses the App Router, colocate &lt;code&gt;page.tsx&lt;/code&gt; files inside &lt;code&gt;app/&lt;/code&gt;, use Server Components by default."&lt;/p&gt;

&lt;p&gt;Runs entirely offline. No account. No setup. Free, MIT licensed.&lt;/p&gt;


&lt;div class="ltag_asciinema"&gt;
  
&lt;/div&gt;


&lt;h2&gt;
  
  
  4-step setup walkthrough
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Step 1: Run it against the repo&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npx @strifero/contextengine
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That's it for installation. &lt;code&gt;npx&lt;/code&gt; pulls it fresh each time. Run this from the root of the project you're onboarding to.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 2: Watch it detect your stack&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;You'll see output like this as it scans:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;✔ Detected: Next.js 14 (App Router)
✔ Detected: TypeScript
✔ Detected: Prisma ORM
✔ Detected: Tailwind CSS
✔ Detected: Vitest
Generating context files...
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;No prompts, no questions. It reads what's already there.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 3: Check what got generated&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;ContextEngine writes files to the locations each tool looks for automatically:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight markdown"&gt;&lt;code&gt;.claude/
  CLAUDE.md                          ← picked up by Claude Code
  skills/
    typescript/SKILL.md
    react/SKILL.md
    ...
.cursor/rules/
  typescript.mdc                     ← picked up by Cursor
  react.mdc
  ...
.github/
  copilot-instructions.md            ← picked up by Copilot
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Use &lt;code&gt;--tool cursor&lt;/code&gt; to generate only Cursor files, &lt;code&gt;--tool copilot&lt;/code&gt; for Copilot only, or &lt;code&gt;--tool all&lt;/code&gt; to generate everything in one pass.&lt;/p&gt;

&lt;p&gt;Open any of the files. You'll see structured guidance specific to your detected stack — routing conventions, where key files live, which patterns to use and avoid.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 4: Commit it (optional but recommended)&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git add .claude/ .cursor/ .github/copilot-instructions.md
git commit &lt;span class="nt"&gt;-m&lt;/span&gt; &lt;span class="s2"&gt;"add AI context files via contextengine"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now every contributor who opens the repo gets the same starting point with their AI tool of choice. When the stack evolves, re-run with &lt;code&gt;--update&lt;/code&gt; to pull in fresh content without touching anything you've manually edited:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npx @strifero/contextengine &lt;span class="nt"&gt;--update&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  What this looks like in practice
&lt;/h2&gt;

&lt;p&gt;Here's a real example. Before running ContextEngine, I asked Claude Code where to put a new API endpoint in a Next.js 14 project:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Me:&lt;/strong&gt; Where should I add a new API endpoint for fetching user data?&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Claude (before):&lt;/strong&gt; You can create a new file in &lt;code&gt;pages/api/users.ts&lt;/code&gt; and export a default handler function...&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Wrong. App Router project. After running ContextEngine and letting Claude read the generated &lt;code&gt;.claude/CLAUDE.md&lt;/code&gt;:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Me:&lt;/strong&gt; Where should I add a new API endpoint for fetching user data?&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Claude (after):&lt;/strong&gt; Create a Route Handler at &lt;code&gt;app/api/users/route.ts&lt;/code&gt;. Export a named &lt;code&gt;GET&lt;/code&gt; function. Since this project uses Prisma, you can import your client from &lt;code&gt;lib/prisma.ts&lt;/code&gt; — based on the schema I can see the &lt;code&gt;User&lt;/code&gt; model has...&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Same question. Completely different answer — and a correct one.&lt;/p&gt;

&lt;h2&gt;
  
  
  Pricing
&lt;/h2&gt;

&lt;p&gt;ContextEngine is free. There's one tier: &lt;strong&gt;$0&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;No account required, no usage limits, no telemetry. Runs entirely on your machine — no code or project data is sent anywhere.&lt;/p&gt;




&lt;p&gt;If you're constantly re-explaining your stack at the start of every AI session, or you're onboarding to a codebase where nobody's written a &lt;code&gt;CLAUDE.md&lt;/code&gt;, give it a try:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npx @strifero/contextengine
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Takes about 30 seconds. Source on GitHub: &lt;a href="https://github.com/strifero/ContextEngine" rel="noopener noreferrer"&gt;https://github.com/strifero/ContextEngine&lt;/a&gt; — curious what stacks people are using it on, drop a comment if you run into anything it misses.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>llm</category>
      <category>productivity</category>
      <category>tooling</category>
    </item>
  </channel>
</rss>
