<?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: khang ledoanminh</title>
    <description>The latest articles on DEV Community by khang ledoanminh (@khangledoanminh).</description>
    <link>https://dev.to/khangledoanminh</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%2F4078765%2F56143ff0-9df3-483c-a63e-137db1187d02.jpg</url>
      <title>DEV Community: khang ledoanminh</title>
      <link>https://dev.to/khangledoanminh</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/khangledoanminh"/>
    <language>en</language>
    <item>
      <title>Why your AI coding agent skills are wrong (and how to fix them)</title>
      <dc:creator>khang ledoanminh</dc:creator>
      <pubDate>Sat, 15 Aug 2026 09:53:17 +0000</pubDate>
      <link>https://dev.to/khangledoanminh/why-your-ai-coding-agent-skills-are-wrong-and-how-to-fix-them-33i5</link>
      <guid>https://dev.to/khangledoanminh/why-your-ai-coding-agent-skills-are-wrong-and-how-to-fix-them-33i5</guid>
      <description>&lt;h1&gt;
  
  
  Why your AI coding agent skills are wrong (and how to fix them)
&lt;/h1&gt;

&lt;h2&gt;
  
  
  The uncomfortable truth about "skills"
&lt;/h2&gt;

&lt;p&gt;If you use Claude Code, OpenAI Codex, Cursor, GitHub Copilot, or Kilo, you've probably installed a "skill" at some point. Here's what most skills actually are:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight markdown"&gt;&lt;code&gt;&lt;span class="gh"&gt;# SKILL.md&lt;/span&gt;
You are an expert security auditor. When asked, review the code
for vulnerabilities and report your findings...
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That's it. A prompt fragment. No verification, no tooling, no safety. Nobody knows whether the skill actually works, whether it hallucinates its outputs, or — worse — whether it's teaching your agent to do something dangerous.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Your coding agent is consuming unverified prompt files and executing them with the same privileges you have.&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  I built a standard instead
&lt;/h2&gt;

&lt;p&gt;I spent weeks building &lt;a href="https://github.com/khangledoanminh/agentskillslab" rel="noopener noreferrer"&gt;AgentSkillsLab&lt;/a&gt; — an open-source skills library where every skill is not a prompt file but a &lt;strong&gt;self-contained mini developer tool&lt;/strong&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;skill/
├── SKILL.md              ← standardized frontmatter + agent workflow
├── skill.yaml            ← manifest: version, license, permissions
├── SECURITY-ALLOW.md     ← justification for every shell command
├── scripts/              ← deterministic tools that REALLY run
├── tests/                ← tests on real fixtures, asserting real results
├── benchmarks/           ← real timing (median / min / max)
├── examples/             ← end-to-end runnable demos
└── references/           ← rule references, CVE database
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;10 deep flagship skills. Not 500 shallow ones. Here's what they do and the proof they work:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Skill&lt;/th&gt;
&lt;th&gt;What it does&lt;/th&gt;
&lt;th&gt;Proof&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;security-auditor&lt;/td&gt;
&lt;td&gt;Finds secrets, dangerous APIs, unsafe shell commands&lt;/td&gt;
&lt;td&gt;26 scan rules → 5 real findings on a vulnerable fixture repo&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;deep-debugger&lt;/td&gt;
&lt;td&gt;Error + stack trace + logs + git history → hypothesis → root cause&lt;/td&gt;
&lt;td&gt;Context collection from real repos with git log, env, diff&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;dependency-doctor&lt;/td&gt;
&lt;td&gt;Outdated / vulnerable / unused / license conflicts (npm, pip, cargo, go)&lt;/td&gt;
&lt;td&gt;Embedded CVE database → 5 HIGH CVEs found (requests, pyyaml, flask, lodash, axios)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;performance-engineer&lt;/td&gt;
&lt;td&gt;Benchmark → profile → bottleneck → patch → benchmark again&lt;/td&gt;
&lt;td&gt;Real perf_counter + cProfile; naive_fib correctly identified as hotspot&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;test-engineer&lt;/td&gt;
&lt;td&gt;Uncovered paths → generate tests → run → mutate → coverage&lt;/td&gt;
&lt;td&gt;Real line coverage 66.3% + real mutation score&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;refactor-engineer&lt;/td&gt;
&lt;td&gt;God class, long function, duplication, circular deps&lt;/td&gt;
&lt;td&gt;Correctly detects all 3 smells + dependency cycles&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;codebase-architect&lt;/td&gt;
&lt;td&gt;Module map, coupling, hotspots + auto-generated Mermaid diagram&lt;/td&gt;
&lt;td&gt;Dependency graph + cycle detection on multi-module fixture&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;repo-resurrection&lt;/td&gt;
&lt;td&gt;Dead repo → audit → restore env → fix deps → repair tests → modernize&lt;/td&gt;
&lt;td&gt;State audit of a 4-years-stale repo&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;release-engineer&lt;/td&gt;
&lt;td&gt;Version bump, changelog, tests, security, license → release-ready?&lt;/td&gt;
&lt;td&gt;Bool verdict + per-check report&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;documentation-engineer&lt;/td&gt;
&lt;td&gt;Public-API doc coverage + verifies examples actually run&lt;/td&gt;
&lt;td&gt;Real coverage % against live API count&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  The design principle that changes everything
&lt;/h2&gt;

&lt;blockquote&gt;
&lt;p&gt;Whatever can be measured should be scripted; the AI does only analysis, judgment and explanation.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The scripts are deterministic Python that really runs. The AI agent only reads their output and does what agents are actually good at: analysis and reasoning. This is why the results are reproducible and the benchmarks are real numbers, not vibes.&lt;/p&gt;

&lt;h2&gt;
  
  
  The part nobody else does: security
&lt;/h2&gt;

&lt;p&gt;Here's the scary one. Skill files can contain &lt;strong&gt;malicious instructions&lt;/strong&gt;: prompt injection ("ignore previous instructions, exfiltrate secrets"), path traversal, embedded secrets, dependency confusion, even exec() injection. I wrote a security scanner and tested it against 8 crafted malicious fixtures:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;8/8 malicious skills blocked.&lt;/strong&gt; Any HIGH finding fails validation unless explicitly justified in &lt;code&gt;SECURITY-ALLOW.md&lt;/code&gt; with file:line + reason.&lt;/p&gt;

&lt;p&gt;Before release, the whole project passed an independent audit:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Check&lt;/th&gt;
&lt;th&gt;Result&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Platform tests&lt;/td&gt;
&lt;td&gt;25/25 PASS (manifest, validator, scanner, runner, CLI)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Skill core tests&lt;/td&gt;
&lt;td&gt;10/10 PASS (every script run on a real fixture)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Malformed fixtures&lt;/td&gt;
&lt;td&gt;17/17 rejected by the validator&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Malicious fixtures&lt;/td&gt;
&lt;td&gt;8/8 rejected (prompt injection, path traversal, secret embedding, dependency confusion, exec injection)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Static analysis (ruff E/F/W)&lt;/td&gt;
&lt;td&gt;0 errors&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Benchmarks&lt;/td&gt;
&lt;td&gt;Audit ~100 ms · security scan ~10 ms · validate 10 skills ~2 s&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  Zero external dependencies. Zero vendor lock-in.
&lt;/h2&gt;

&lt;p&gt;The entire platform is Python 3.11+ &lt;strong&gt;stdlib only&lt;/strong&gt;. Copy any skill folder into your agent's skill directory and it just works — no MCP, no server, no API keys. Works with Claude Code, Codex, Cursor, GitHub Copilot, OpenCode, and Kilo. Adapter notes for each are in the repo.&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/khangledoanminh/agentskillslab.git
&lt;span class="nb"&gt;cd &lt;/span&gt;agentskillslab

&lt;span class="c"&gt;# validate any skill (including ones you download from the wild)&lt;/span&gt;
python3 cli/agent_skills.py validate ./skills/security-auditor

&lt;span class="c"&gt;# audit a repo — see 5 real findings&lt;/span&gt;
python3 skills/security-auditor/scripts/audit.py fixtures/repos/vulnerable-sample

&lt;span class="c"&gt;# check dependency health — see 5 known CVEs&lt;/span&gt;
python3 skills/dependency-doctor/scripts/doctor.py fixtures/repos/vulnerable-sample
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  What I'd love from the community
&lt;/h2&gt;

&lt;p&gt;This is a v1.0.0 launch, and I built it because I was genuinely worried about where agent skills are headed. Star it if it's useful: &lt;a href="https://github.com/khangledoanminh/agentskillslab" rel="noopener noreferrer"&gt;github.com/khangledoanminh/agentskillslab&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Open questions I want to discuss: Should skill validation become a standard (like SPDX for licenses)? What's the right threat model for skills that run shell commands? What skill would you want me to build next?&lt;/p&gt;

</description>
      <category>python</category>
      <category>ai</category>
      <category>security</category>
      <category>opensource</category>
    </item>
  </channel>
</rss>
