<?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: Victor Kononenko</title>
    <description>The latest articles on DEV Community by Victor Kononenko (@viiko).</description>
    <link>https://dev.to/viiko</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%2F4135740%2F7a858ab4-3461-4955-b44a-0f5fa42c274c.jpeg</url>
      <title>DEV Community: Victor Kononenko</title>
      <link>https://dev.to/viiko</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/viiko"/>
    <language>en</language>
    <item>
      <title>I taught my AI agent a 1970s invention method, then graded it blind</title>
      <dc:creator>Victor Kononenko</dc:creator>
      <pubDate>Thu, 22 Oct 2026 17:53:11 +0000</pubDate>
      <link>https://dev.to/viiko/i-taught-my-ai-agent-a-1970s-invention-method-then-graded-it-blind-2i4o</link>
      <guid>https://dev.to/viiko/i-taught-my-ai-agent-a-1970s-invention-method-then-graded-it-blind-2i4o</guid>
      <description>&lt;p&gt;Ask an AI agent to fix a trade-off and watch what happens.&lt;/p&gt;

&lt;p&gt;"Our inference bill is $42k a month. Finance wants it halved. We tried a&lt;br&gt;
smaller model and wrong answers went from 3% to 9%."&lt;/p&gt;

&lt;p&gt;A typical answer: use a mid-size model, add caching, tune your prompts,&lt;br&gt;
consider fine-tuning, monitor quality. All reasonable. None of it is a plan.&lt;br&gt;
It's a compromise and a list, and the agent never says what the actual&lt;br&gt;
conflict is.&lt;/p&gt;

&lt;p&gt;I wanted my agents to do better on exactly this kind of problem, so I gave&lt;br&gt;
them TRIZ.&lt;/p&gt;
&lt;h2&gt;
  
  
  What TRIZ is, in two paragraphs
&lt;/h2&gt;

&lt;p&gt;From the 1940s on, Genrich Altshuller, a Soviet patent examiner, studied&lt;br&gt;
thousands of inventions and noticed that the hard ones share a shape:&lt;br&gt;
improving one thing makes another worse. Lighter but weaker. Faster but&lt;br&gt;
sloppier. He called that a &lt;em&gt;contradiction&lt;/em&gt;, and found that inventors kept&lt;br&gt;
solving the same contradictions with the same few tricks, across unrelated&lt;br&gt;
fields.&lt;/p&gt;

&lt;p&gt;He boiled it down to 39 engineering parameters, 40 inventive principles&lt;br&gt;
(segmentation, preliminary action, parameter changes...), and a 39x39&lt;br&gt;
&lt;em&gt;contradiction matrix&lt;/em&gt;: pick the parameter you want to improve and the one&lt;br&gt;
that gets worse, and the cell lists the principles that resolved that&lt;br&gt;
conflict most often.&lt;/p&gt;
&lt;h2&gt;
  
  
  Packaging it as an agent skill
&lt;/h2&gt;

&lt;p&gt;An &lt;a href="https://agentskills.io" rel="noopener noreferrer"&gt;Agent Skill&lt;/a&gt; is a folder with a &lt;code&gt;SKILL.md&lt;/code&gt; and&lt;br&gt;
whatever data it needs. Claude Code, Claude.ai and other agents load it&lt;br&gt;
when a task matches. The TRIZ skill makes the agent go through six stages:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Intake:&lt;/strong&gt; restate the problem, the ideal result and the resources you
already have.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Contradiction:&lt;/strong&gt; "improving X worsens Y", mapped to two of the 39
parameters.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Directions:&lt;/strong&gt; look up the matrix cell and the 40 principles.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Actions:&lt;/strong&gt; turn the principles into steps that use your resources.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Validation:&lt;/strong&gt; two Socratic questions before committing.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Plan:&lt;/strong&gt; a short plan in chat and a full one saved to &lt;code&gt;triz-plans/&lt;/code&gt;.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Every plan has three required fields: &lt;strong&gt;Resources&lt;/strong&gt; (what it uses, and&lt;br&gt;
anything new with its cost), &lt;strong&gt;Watch for&lt;/strong&gt; (the top risk, a measurable&lt;br&gt;
signal and what to do) and &lt;strong&gt;Done when&lt;/strong&gt; (a metric, a target and a date).&lt;/p&gt;

&lt;p&gt;The matrix and principles are JSON and CSV files with a small Python lookup&lt;br&gt;
script (standard library only). Agents that can't run scripts read the files&lt;br&gt;
directly.&lt;/p&gt;
&lt;h2&gt;
  
  
  The inference bill, with the skill
&lt;/h2&gt;

&lt;p&gt;Same problem. The agent asks one question ("What can't change?": wrong&lt;br&gt;
answers stay at or below 3%, no new vendor), then names the conflict:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Improving serving cost (23, Loss of substance) worsens answer reliability&lt;br&gt;
(27, Reliability). Physically: the model must be small, to be cheap, and&lt;br&gt;
large, to be right.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The matrix gives #35 &lt;em&gt;Parameter changes&lt;/em&gt; and #11 &lt;em&gt;Beforehand cushioning&lt;/em&gt;.&lt;br&gt;
"Small and large at the same time" also points to &lt;em&gt;separation on&lt;br&gt;
condition&lt;/em&gt;: large only for the chats that need it. The labelled eval set the&lt;br&gt;
team already had showed that 70% of chats (order status, returns, password&lt;br&gt;
resets) score the same on the small model. So:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Route those ticket types to the small model (#35: the model's size changes
per request). Bill falls to about $15k.&lt;/li&gt;
&lt;li&gt;If a small-model answer cites no help-center article, or the customer says
it's wrong, re-run it on the large model (#11: a fallback prepared in
advance). Adds about 5%.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;And the plan ends like this:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Watch for:&lt;/strong&gt; wrong-answer rate on the small-model route above 4% for a&lt;br&gt;
week, then move that ticket tag back to the large model.&lt;br&gt;
&lt;strong&gt;Done when:&lt;/strong&gt; monthly bill at or below $21k with wrong answers at or&lt;br&gt;
below 3% for 4 weeks in a row, within 8 weeks.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;That's the difference I was after: a named conflict, a fix that removes it&lt;br&gt;
instead of splitting it, and a finish line you can check.&lt;br&gt;
(&lt;a href="https://github.com/magery-ai/triz-skill/blob/main/skills/triz/examples/software-model-router.md" rel="noopener noreferrer"&gt;Full example&lt;/a&gt;)&lt;/p&gt;
&lt;h2&gt;
  
  
  Does it actually help? Blind evals
&lt;/h2&gt;

&lt;p&gt;I didn't want to trust my own impression, so I built evals:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;13 cases&lt;/strong&gt; across software, business, engineering and personal
problems, three of them in autonomous mode (no human in the loop).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;3 runs per case per arm&lt;/strong&gt;, with and without the skill: 78 conversations.
For each run, a fresh agent played both the assistant and a persona user
from the case file; the persona only answered what it was asked. The baseline couldn't see the repository.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Blind grading:&lt;/strong&gt; a separate agent saw each pair as A and B in random
order, checked them against case-specific items, and said which plan it
would act on.&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;&lt;/th&gt;
&lt;th&gt;With the skill&lt;/th&gt;
&lt;th&gt;Without&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Grader would act on this plan&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;38 of 39&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;1 of 39&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Names the root conflict&lt;/td&gt;
&lt;td&gt;39 of 39&lt;/td&gt;
&lt;td&gt;25 of 39&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Dated, measurable target&lt;/td&gt;
&lt;td&gt;39 of 39&lt;/td&gt;
&lt;td&gt;4 of 39&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Risk signal with a threshold&lt;/td&gt;
&lt;td&gt;39 of 39&lt;/td&gt;
&lt;td&gt;6 of 39&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Median user replies&lt;/td&gt;
&lt;td&gt;6&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;What surprised me: &lt;strong&gt;without the skill, the core idea was often just as&lt;br&gt;
good.&lt;/strong&gt; Both arms usually found the same main fix. What the baseline lacked&lt;br&gt;
was everything around it: a target with a date, a signal that tells you it's&lt;br&gt;
failing, owners for the next steps.&lt;/p&gt;

&lt;p&gt;And the cost is real: about five more replies from you, because the skill&lt;br&gt;
asks before it commits.&lt;/p&gt;
&lt;h2&gt;
  
  
  What I got wrong first
&lt;/h2&gt;

&lt;p&gt;The first eval round, one run per arm, lost both engineering cases in&lt;br&gt;
autonomous mode. The skill passed every check, but the grader preferred the&lt;br&gt;
baseline's deeper engineering detail: where the CI minutes actually go,&lt;br&gt;
which tests are slowest. A 400-word cap on autonomous output was cutting&lt;br&gt;
exactly that. I removed it and added a metric breakdown, levers ordered&lt;br&gt;
cheapest first and a verify-before-switch step. In the 3-run eval the skill&lt;br&gt;
won all 9 autonomous comparisons.&lt;/p&gt;
&lt;h2&gt;
  
  
  The honest caveats
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;The users were simulated, and the same model family played the assistant,
the user and the grader. Blind A/B order helps; it doesn't remove that.&lt;/li&gt;
&lt;li&gt;Some graded items (dated target, risk threshold) are things the skill's
template always asks for, so they favour its format. The grader's overall
preference is the fairest number.&lt;/li&gt;
&lt;li&gt;Public copies of the contradiction matrix disagree. I cross-checked three:
1,492 of 1,521 cells agree, the other 29 are flagged as disputed, and the
agent shows both values. They haven't been checked against the 1997 book
yet.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;
  
  
  Try it
&lt;/h2&gt;

&lt;p&gt;Claude Code:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;/plugin marketplace add magery-ai/triz-skill
/plugin install triz@triz-skill
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Claude.ai: download the zip from the&lt;br&gt;
&lt;a href="https://github.com/magery-ai/triz-skill/releases/latest" rel="noopener noreferrer"&gt;latest release&lt;/a&gt;&lt;br&gt;
and upload it under Settings &amp;gt; Capabilities &amp;gt; Skills. Other agents:&lt;br&gt;
&lt;code&gt;npx skills add magery-ai/triz-skill --skill triz&lt;/code&gt;, or copy &lt;code&gt;AGENTS.md&lt;/code&gt;&lt;br&gt;
into your project for Cursor, Copilot and others.&lt;/p&gt;

&lt;p&gt;Then give it a problem where improving one thing makes another worse.&lt;/p&gt;

&lt;p&gt;The repo is MIT licensed:&lt;br&gt;
&lt;strong&gt;&lt;a href="https://github.com/magery-ai/triz-skill" rel="noopener noreferrer"&gt;github.com/magery-ai/triz-skill&lt;/a&gt;&lt;/strong&gt;.&lt;br&gt;
If you try it on a real problem, I'd love to see the plan, good or bad, in&lt;br&gt;
&lt;a href="https://github.com/magery-ai/triz-skill/discussions" rel="noopener noreferrer"&gt;Discussions&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>claude</category>
      <category>productivity</category>
      <category>opensource</category>
    </item>
    <item>
      <title>Forge can now hand your audit straight to a coding agent — and share the report with a link</title>
      <dc:creator>Victor Kononenko</dc:creator>
      <pubDate>Tue, 20 Oct 2026 12:05:40 +0000</pubDate>
      <link>https://dev.to/viiko/forge-can-now-hand-your-audit-straight-to-a-coding-agent-and-share-the-report-with-a-link-124d</link>
      <guid>https://dev.to/viiko/forge-can-now-hand-your-audit-straight-to-a-coding-agent-and-share-the-report-with-a-link-124d</guid>
      <description>&lt;p&gt;Forge is a security-audit tool I built for people who ship code with AI agents and don't have a security team. Two releases this week closed the loop between finding a problem and fixing it. Here's what changed.&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%2Frc9riisne636nj496c7f.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%2Frc9riisne636nj496c7f.png" alt="Audit interface with a " width="738" height="466"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  0.30 — Copy an audit's findings as a prompt.
&lt;/h2&gt;

&lt;p&gt;The core audit UI now has a "Copy as prompt" button. It takes every failed check, pairs each finding with its fix, and turns the whole thing into a single ready-made prompt. Paste it into Claude Code, Codex, or any agent that works on your codebase, and it can start fixing the issues directly.&lt;/p&gt;

&lt;p&gt;Two things matter here. Checks that already passed are left out, so the prompt is only the work that's actually left. And the prompt is generated in English regardless of what language you read the site in — because that's the language coding agents follow most reliably.&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%2Ff2qkm0vin7e5y2c9emz1.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%2Ff2qkm0vin7e5y2c9emz1.png" alt="Copied prompt pasted into the Cody/Claude Code terminal" width="799" height="693"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  0.31 — Share an audit report with a link.
&lt;/h2&gt;

&lt;p&gt;You can now open an audit and press "Copy link" to get a URL anyone can open without signing in. They see that one report and nothing else of yours. The link lives for 24 hours — and copying it again within that window extends the same link another 24 hours.&lt;/p&gt;

&lt;p&gt;The bigger win: "Copy as prompt" now includes that link too. So when you hand the prompt to an agent, the agent can also read the full report behind it, not just the compressed list of fixes.&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%2Fqrigt0n3mnak64gniws1.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%2Fqrigt0n3mnak64gniws1.png" alt="A link-sharing dialogue — for example, a report opened via a link by another person, or an agent reading a report via a link" width="768" height="1390"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Why this matters for VibeCoders.&lt;/p&gt;

&lt;p&gt;The old flow for a solo dev or VibeCoder was: find a scanner, get raw output you can't read, figure out what's real, fix it by hand. Forge now collapses that into: run an audit, copy the prompt, let your agent fix it, and share the report link with someone who needs to see it. No codebase access required — Forge works as a black box and simulates a real attacker, so you never hand the tool your source.&lt;/p&gt;

&lt;p&gt;Both features are live now and free while Forge is in beta. Would love feedback from anyone shipping fast without a security team.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>webdev</category>
      <category>security</category>
      <category>mcp</category>
    </item>
    <item>
      <title>Magery Forge — security audits for shipped code (built for VibeCoders)</title>
      <dc:creator>Victor Kononenko</dc:creator>
      <pubDate>Mon, 21 Sep 2026 12:23:15 +0000</pubDate>
      <link>https://dev.to/viiko/magery-forge-security-audits-for-shipped-code-built-for-vibecoders-4290</link>
      <guid>https://dev.to/viiko/magery-forge-security-audits-for-shipped-code-built-for-vibecoders-4290</guid>
      <description>&lt;p&gt;I ship fast with AI agents and I don't have a security team — so every time I deployed, I had no idea if I'd just pushed a hole to real users.&lt;/p&gt;

&lt;p&gt;Raw scanner output ("Missing Strict-Transport-Security header") means nothing to me. So I built Forge to turn that noise into plain-English risks with a fix for each, delivered as a weekly report to my inbox.&lt;/p&gt;

&lt;p&gt;Key things:&lt;/p&gt;

&lt;p&gt;• Add a domain, run a check, read results in plain English — no security background needed.&lt;br&gt;
• Every finding ships with a concrete fix, not just a red flag.&lt;br&gt;
• Passive checks (DNS, SSL/TLS, headers, SEO) run instantly; active checks (crawling, forms, secret leaks) unlock after domain verification.&lt;br&gt;
• Exposed over MCP, so my agent (Cursor, Copilot, Claude, OpenClaw) runs the audit and reads the report — I barely open the UI.&lt;/p&gt;

&lt;p&gt;Free while in beta. Built in public — honest feedback welcome: what's the first thing you'd want a tool like this to catch?&lt;/p&gt;

</description>
      <category>security</category>
      <category>vibecoding</category>
      <category>webdev</category>
      <category>ai</category>
    </item>
  </channel>
</rss>
