---
title: "Deep Dive SKILL.md (Part 1/2)"
source: https://abvijaykumar.medium.com/deep-dive-skill-md-part-1-2-09fc9a536996
profile: Default
chars: 28072
paywall_detected: false
downloaded: 2026-06-20
---

Deep Dive SKILL.md (Part 1/2)

# Deep Dive SKILL.md (Part 1/2)

<div class="e">

<div class="e">

<span class="e"></span>

<div class="section">

<div>

<div class="em fx adq fz ga gb">

</div>

<div class="speechify-ignore mt mu nk ej adr">

<div class="up md em agm et bd v j ez">

Top highlight

</div>

</div>

<div class="gc gd ge gf gg">

<div class="v cf">

<div class="cm bd fo fp fq fr">

## Agentic AI Series

<div>

# Deep Dive SKILL.md (Part 1/2)

</div>

<div>

## Lately I have been able to do most of my work with not writing a single line of code, but defining the SKILL.md

<div>

<div class="speechify-ignore v ct">

<div class="speechify-ignore bd e">

<div class="v ib ic id ie if ig ih ii ij ik il">

<div class="v j il">

<div class="v im">

<div>

<div class="bi" aria-describedby="4" aria-labelledby="4">

<div class="ba" tabindex="-1">

<a href="/?source=post_page---byline--09fc9a536996---------------------------------------" rel="noopener follow" data-discover="true"></a>

<div class="e in io bu ip iq">

<div class="e ej">

<img src="https://miro.medium.com/v2/resize:fill:64:64/1*BQhW1q1CuV0QGx0lRlEeSg.jpeg" class="e fi bu bv bw db" loading="lazy" data-testid="authorPhoto" width="32" height="32" alt="A B Vijay Kumar" />

<div class="ir bu e bv bw em g is fh">

</div>

</div>

</div>

</div>

</div>

</div>

</div>

<span class="bb b bc u bg"></span>

<div class="it v j">

<div class="v j iu">

<div class="v j">

<div>

<div class="bi" aria-describedby="5" aria-labelledby="5">

<div class="ba" tabindex="-1">

<span class="bb b bc u bg"><a href="/?source=post_page---byline--09fc9a536996---------------------------------------" class="z ab ac ey af ag ah ai aj ak al am an iv" data-testid="authorName" rel="noopener follow" data-discover="true">A B Vijay Kumar</a></span>

</div>

</div>

</div>

</div>

<div class="iw ix e">

<div class="v iy">

<div class="v">

![](data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgZmlsbD0ibm9uZSIgdmlld2JveD0iMCAwIDE2IDE2Ij48cGF0aCBmaWxsPSIjNDM3QUZGIiBkPSJNMTUuMTYzIDhjMCAuNjUtLjQ1OSAxLjE0NC0uODYzIDEuNTc1LS4yMzIuMjQ0LS40NzEuNS0uNTYzLjcxOXMtLjA4Ni41NDMtLjA5Mi44NzVjLS4wMDYuNjA2LS4wMTggMS4zLS40OSAxLjc4MS0uNDcuNDgxLTEuMTUuNDk0LTEuNzQ0LjUtLjMyNC4wMDYtLjY1NS4wMTMtLjg1Ny4wOTRzLS40NjUuMzM3LS43MDQuNTc1Yy0uNDIyLjQxMi0uOTA2Ljg4MS0xLjU0Mi44ODEtLjYzNyAwLTEuMTItLjQ2OS0xLjU0My0uODgxLS4yMzktLjIzOC0uNDktLjQ4Mi0uNzA0LS41NzUtLjIxNC0uMDk0LS41MzItLjA4OC0uODU3LS4wOTQtLjU5My0uMDA2LTEuMjczLS4wMTktMS43NDQtLjVzLS40ODQtMS4xNzUtLjQ5LTEuNzgxYy0uMDA2LS4zMzItLjAxMi0uNjY5LS4wOTItLjg3NS0uMDgtLjIwNy0uMzMtLjQ3NS0uNTYzLS43MTktLjQwNC0uNDMxLS44NjMtLjkyNS0uODYzLTEuNTc1cy40Ni0xLjE0NC44NjMtMS41NzVjLjIzMy0uMjQ0LjQ3Mi0uNS41NjMtLjcxOS4wOTItLjIxOS4wODYtLjU0NC4wOTItLjg3NS4wMDYtLjYwNi4wMTktMS4zLjQ5LTEuNzgxczEuMTUtLjQ5NCAxLjc0NC0uNWMuMzI1LS4wMDYuNjU1LS4wMTIuODU3LS4wOTQuMjAyLS4wODEuNDY1LS4zMzcuNzA0LS41NzVDNy4xODggMS40NyA3LjY3MSAxIDguMzA4IDFzMS4xMi40NjkgMS41NDIuODgxYy4yMzkuMjM4LjQ5LjQ4MS43MDQuNTc1cy41MzMuMDg4Ljg1Ny4wOTRjLjU5NC4wMDYgMS4yNzMuMDE5IDEuNzQ1LjUuNDcuNDgxLjQ4MyAxLjE3NS40OSAxLjc4MS4wMDUuMzMxLjAxMS42NjkuMDkxLjg3NXMuMzMuNDc1LjU2My43MTljLjQwNC40MzEuODYzLjkyNS44NjMgMS41NzUiIC8+PHBhdGggZmlsbD0iI2ZmZiIgZD0iTTcuMzI4IDEwLjVjLjE5NSAwIC4zODEuMDguNTE5LjIyLjEzNy4xNDEuMjE1LjMzMS4yMTYuNTMgMCAuMDY2LjAyNi4xMy4wNzIuMTc3YS4yNC4yNCAwIDAgMCAuMzQ2IDAgLjI1LjI1IDAgMCAwIC4wNzEtLjE3N2MuMDAxLS4xOTkuMDc5LS4zODkuMjE2LS41M2EuNzMuNzMgMCAwIDEgLjUxOS0uMjJoMS45NTljLjEzIDAgLjI1NC0uMDUzLjM0Ni0uMTQ2YS41LjUgMCAwIDAgLjE0My0uMzU0VjZhLjUuNSAwIDAgMC0uMTQzLS4zNTQuNDkuNDkgMCAwIDAtLjM0Ni0uMTQ2aC0xLjQ3Yy0uMzI0IDAtLjYzNS4xMzItLjg2NS4zNjYtLjIzLjIzNS0uMzU5LjU1Mi0uMzU5Ljg4NHYyLjVjMCAuMDY2LS4wMjUuMTMtLjA3MS4xNzdhLjI0LjI0IDAgMCAxLS4zNDYgMCAuMjUuMjUgMCAwIDEtLjA3Mi0uMTc3di0yLjVjMC0uMzMyLS4xMy0uNjUtLjM1OS0uODg0QTEuMjEgMS4yMSAwIDAgMCA2Ljg0IDUuNWgtMS40N2EuNDkuNDkgMCAwIDAtLjM0Ni4xNDZBLjUuNSAwIDAgMCA0Ljg4IDZ2NGMwIC4xMzMuMDUxLjI2LjE0My4zNTRhLjQ5LjQ5IDAgMCAwIC4zNDcuMTQ2eiIgLz48L3N2Zz4=)

</div>

</div>

</div>

<div class="iz bi">

</div>

<div class="bi">

<span class="bb b bc u bg bd"><span class="bi aca">Follow</span></span>

</div>

</div>

</div>

</div>

<div class="v j ja">

<span class="bb b bc u eb"></span>

<div class="v y">

<span testid="storyReadTime">17 min read</span>

<div class="jb jc e" aria-hidden="true">

<span class="e" aria-hidden="true"><span class="bb b bc u eb">·</span></span>

</div>

<span testid="storyPublishDate">Mar 17, 2026</span>

</div>

</div>

</div>

<div class="v ct jd je jf jg jh ji jj jk jl jm jn jo jp jq jr js">

<div class="au bt p ew ex j">

<div class="v j">

<div class="ki e">

<div class="v j kj kk">

<div class="pw-multi-vote-icon ej kl km kn ko">

<div>

<div>

<div class="bi" aria-describedby="127" aria-labelledby="127">

<div class="ba" tabindex="-1">

![](data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld2JveD0iMCAwIDI0IDI0IiBhcmlhLWxhYmVsPSJjbGFwIj48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0xMS4zNy44MjggMTIgMy4yODJsLjYzLTIuNDU0ek0xMy45MTYgMy45NTNsMS41MjMtMi4xMTItMS4xODQtLjM5ek04LjU4OSAxLjg0bDEuNTIyIDIuMTEyLS4zMzctMi41MDF6TTE4LjUyMyAxOC45MmMtLjg2Ljg2LTEuNzUgMS4yNDYtMi42MiAxLjMzYTYgNiAwIDAgMCAuNDA3LS4zNzJjMi4zODgtMi4zODkgMi44Ni00Ljk1MSAxLjM5OS03LjYyM2wtLjkxMi0xLjYwMy0uNzktMS42NzJjLS4yNi0uNTYtLjE5NC0uOTguMjAzLTEuMjg4YS43LjcgMCAwIDEgLjU0Ni0uMTMyYy4yODMuMDQ2LjU0Ni4yMzEuNzI4LjVsMi4zNjMgNC4xNTdjLjk3NiAxLjYyNCAxLjE0MSA0LjIzNy0xLjMyNCA2LjcwMm0tMTAuOTk5LS40MzhMMy4zNyAxNC4zMjhhLjgyOC44MjggMCAwIDEgLjU4NS0xLjQwOC44My44MyAwIDAgMSAuNTg1LjI0MmwyLjE1OCAyLjE1N2EuMzY1LjM2NSAwIDAgMCAuNTE2LS41MTZsLTIuMTU3LTIuMTU4LTEuNDQ5LTEuNDQ5YS44MjYuODI2IDAgMCAxIDEuMTY3LTEuMTdsMy40MzggMy40NGEuMzYzLjM2MyAwIDAgMCAuNTE2IDAgLjM2NC4zNjQgMCAwIDAgMC0uNTE2TDUuMjkzIDkuNTEzbC0uOTctLjk3YS44MjYuODI2IDAgMCAxIDAtMS4xNjYuODQuODQgMCAwIDEgMS4xNjcgMGwuOTcuOTY4IDMuNDM3IDMuNDM2YS4zNi4zNiAwIDAgMCAuNTE3IDAgLjM2Ni4zNjYgMCAwIDAgMC0uNTE2TDYuOTc3IDcuODNhLjgyLjgyIDAgMCAxLS4yNDEtLjU4NC44Mi44MiAwIDAgMSAuODI0LS44MjZjLjIxOSAwIC40My4wODcuNTg0LjI0Mmw1Ljc4NyA1Ljc4N2EuMzY2LjM2NiAwIDAgMCAuNTg3LS40MTVsLTEuMTE3LTIuMzYzYy0uMjYtLjU2LS4xOTQtLjk4LjIwNC0xLjI4OWEuNy43IDAgMCAxIC41NDYtLjEzMmMuMjgzLjA0Ni41NDUuMjMyLjcyNy41MDFsMi4xOTMgMy44NmMxLjMwMiAyLjM4Ljg4MyA0LjU5LTEuMjc3IDYuNzUtMS4xNTYgMS4xNTYtMi42MDIgMS42MjctNC4xOSAxLjM2Ny0xLjQxOC0uMjM2LTIuODY2LTEuMDMzLTQuMDc5LTIuMjQ2TTEwLjc1IDUuOTcxbDIuMTIgMi4xMmMtLjQxLjUwMi0uNDY1IDEuMTctLjEyOCAxLjg5bC4yMi40NjUtMy41MjMtMy41MjNhLjguOCAwIDAgMS0uMDk3LS4zNjhjMC0uMjIuMDg2LS40MjguMjQxLS41ODRhLjg0Ny44NDcgMCAwIDEgMS4xNjcgMG03LjM1NSAxLjcwNWMtLjMxLS40NjEtLjc0Ni0uNzU4LTEuMjMtLjgzN2ExLjQ0IDEuNDQgMCAwIDAtMS4xMS4yNzVjLS4zMTIuMjQtLjUwNS41NDMtLjU5Ljg4MWExLjc0IDEuNzQgMCAwIDAtLjkwNi0uNDY1IDEuNDcgMS40NyAwIDAgMC0uODIuMTA2bC0yLjE4Mi0yLjE4MmExLjU2IDEuNTYgMCAwIDAtMi4yIDAgMS41NCAxLjU0IDAgMCAwLS4zOTYuNzAxIDEuNTYgMS41NiAwIDAgMC0yLjIxLS4wMSAxLjU1IDEuNTUgMCAwIDAtLjQxNi43NTNjLS42MjQtLjYyNC0xLjY0OS0uNjI0LTIuMjM3LS4wMzdhMS41NTcgMS41NTcgMCAwIDAgMCAyLjJjLS4yMzkuMS0uNTAxLjIzOC0uNzE1LjQ1M2ExLjU2IDEuNTYgMCAwIDAgMCAyLjJsLjUxNi41MTVhMS41NTYgMS41NTYgMCAwIDAtLjc1MyAyLjYxNUw3LjAxIDE5YzEuMzIgMS4zMTkgMi45MDkgMi4xODkgNC40NzUgMi40NDlxLjQ4Mi4wOC45NzEuMDhjLjg1IDAgMS42NTMtLjE5OCAyLjM5My0uNTc5LjIzMS4wMzMuNDYuMDU0LjY4Ni4wNTQgMS4yNjYgMCAyLjQ1Ny0uNTIgMy41MDUtMS41NjcgMi43NjMtMi43NjMgMi41NTItNS43MzQgMS40MzktNy41ODZ6IiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIC8+PC9zdmc+)

</div>

</div>

</div>

</div>

</div>

<div class="pw-multi-vote-count e kz la lb lc ld le lf">

<div>

<div class="bi" aria-describedby="128" aria-labelledby="128">

<div class="ba" tabindex="-1">

142<span class="e au te tf tg th"></span>

</div>

</div>

</div>

</div>

</div>

</div>

<div class="lg lh e">

<div>

<div class="bi" aria-describedby="6" aria-labelledby="6">

<div class="ba" tabindex="-1">

<img src="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld2JveD0iMCAwIDI0IDI0IiBjbGFzcz0ibGoiPjxwYXRoIGQ9Ik0xOC4wMDYgMTYuODAzYzEuNTMzLTEuNDU2IDIuMjM0LTMuMzI1IDIuMjM0LTUuMzIxQzIwLjI0IDcuMzU3IDE2LjcwOSA0IDEyLjE5MSA0UzQgNy4zNTcgNCAxMS40ODJjMCA0LjEyNiAzLjY3NCA3LjQ4MiA4LjE5MSA3LjQ4Mi44MTcgMCAxLjYyMi0uMTExIDIuMzkzLS4zMjcuMjMxLjIuNDguMzkxLjc0NC41NTkgMS4wNi42OTMgMi4yMDMgMS4wNDQgMy4zOTkgMS4wNDQuMjI0LS4wMDguNC0uMTEyLjQ4Ni0uMjg3YS40OS40OSAwIDAgMC0uMDQyLS41MThjLS40OTUtLjY3LS44NDUtMS4zNjQtMS4wNC0yLjA1N2E0IDQgMCAwIDEtLjEyNS0uNTk4em0tMy4xMjIgMS4wNTUtLjA2Ny0uMjIzLS4zMTUuMDk2YTggOCAwIDAgMS0yLjMxMS4zMzhjLTQuMDIzIDAtNy4yOTItMi45NTUtNy4yOTItNi41ODcgMC0zLjYzMyAzLjI2OS02LjU4OCA3LjI5Mi02LjU4OCA0LjAxNCAwIDcuMTEyIDIuOTU4IDcuMTEyIDYuNTkzIDAgMS43OTQtLjYwOCAzLjQ2OS0yLjAyNyA0LjcybC0uMTk1LjE2OHYuMjU1YzAgLjA1NiAwIC4xNTEuMDE2LjI5NS4wMjUuMjMxLjA4MS40NzguMTU0LjczMy4xNTQuNTU4LjM5OCAxLjExNy43MjIgMS42NTlhNS4zIDUuMyAwIDAgMS0yLjE2NS0uODQ1Yy0uMjc2LS4xNzYtLjcxNC0uMzgzLS45NDEtLjU5eiIgLz48L3N2Zz4=" class="lj" />

<span class="pw-responses-count li lj">9</span>

</div>

</div>

</div>

</div>

<div class="v j eb">

<div class="bi">

<div>

<div class="bi" aria-describedby="7" aria-labelledby="7">

<div class="ba" tabindex="-1">

<div class="bm lq e ej">

<div class="bm lq e">

![](data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB2aWV3Ym94PSIwIDAgMjQgMjQiIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgcHJlc2VydmVhc3BlY3RyYXRpbz0ieE1pZFlNaWQgbWVldCIgc3R5bGU9IndpZHRoOiAxMDAlOyBoZWlnaHQ6IDEwMCU7IHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMHB4LCAwcHgsIDBweCk7IGNvbnRlbnQtdmlzaWJpbGl0eTogdmlzaWJsZTsiPjxkZWZzPjxjbGlwcGF0aCBpZD0iX19sb3R0aWVfZWxlbWVudF8yIj48cmVjdCB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIHg9IjAiIHk9IjAiIC8+PC9jbGlwcGF0aD48L2RlZnM+PGcgY2xpcC1wYXRoPSJ1cmwoI19fbG90dGllX2VsZW1lbnRfMikiPjxnIHN0eWxlPSJkaXNwbGF5OiBub25lOyI+PGc+PHBhdGggc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIiBmaWxsLW9wYWNpdHk9IjAiIC8+PC9nPjwvZz48ZyBzdHlsZT0iZGlzcGxheTogbm9uZTsiPjxnPjxwYXRoIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIgZmlsbC1vcGFjaXR5PSIwIiAvPjwvZz48L2c+PGcgdHJhbnNmb3JtPSJtYXRyaXgoMSwwLDAsMSwwLDApIiBvcGFjaXR5PSIxIiBzdHlsZT0iZGlzcGxheTogYmxvY2s7Ij48ZyBvcGFjaXR5PSIxIiB0cmFuc2Zvcm09Im1hdHJpeCgxLDAsMCwxLDAsMCkiPjxwYXRoIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIgZmlsbC1vcGFjaXR5PSIwIiBzdHJva2U9InJnYigxMjgsMTI4LDEyOCkiIHN0cm9rZS1vcGFjaXR5PSIxIiBzdHJva2Utd2lkdGg9IjEiIGQ9IiBNMTkuMzUyODk5NTUxMzkxNiwxOSBDMTkuMzUyODk5NTUxMzkxNiwxOSAyMiwxNi4yNzI2OTkzNTYwNzkxIDIyLDE2LjI3MjY5OTM1NjA3OTEiIC8+PC9nPjwvZz48ZyB0cmFuc2Zvcm09Im1hdHJpeCgxLDAsMCwxLDAsMCkiIG9wYWNpdHk9IjEiIHN0eWxlPSJkaXNwbGF5OiBibG9jazsiPjxnIG9wYWNpdHk9IjEiIHRyYW5zZm9ybT0ibWF0cml4KDEsMCwwLDEsMCwwKSI+PHBhdGggc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIiBmaWxsLW9wYWNpdHk9IjAiIHN0cm9rZT0icmdiKDEyOCwxMjgsMTI4KSIgc3Ryb2tlLW9wYWNpdHk9IjEiIHN0cm9rZS13aWR0aD0iMSIgZD0iIE0xOS4zNTI4OTk1NTEzOTE2LDE5IEMxOS4zNTI4OTk1NTEzOTE2LDE5IDE2LjcwNTkwMDE5MjI2MDc0MiwxNi4yNzI2OTkzNTYwNzkxIDE2LjcwNTkwMDE5MjI2MDc0MiwxNi4yNzI2OTkzNTYwNzkxIiAvPjwvZz48L2c+PGcgdHJhbnNmb3JtPSJtYXRyaXgoMSwwLDAsMSwwLDApIiBvcGFjaXR5PSIxIiBzdHlsZT0iZGlzcGxheTogYmxvY2s7Ij48ZyBvcGFjaXR5PSIxIiB0cmFuc2Zvcm09Im1hdHJpeCgxLDAsMCwxLDAsMCkiPjxwYXRoIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIgZmlsbC1vcGFjaXR5PSIwIiBzdHJva2U9InJnYigxMjgsMTI4LDEyOCkiIHN0cm9rZS1vcGFjaXR5PSIxIiBzdHJva2Utd2lkdGg9IjEiIGQ9IiBNNC42NDcwOTk5NzE3NzEyNCw1IEM0LjY0NzA5OTk3MTc3MTI0LDUgNy4yOTQwOTk4MDc3MzkyNTgsNy43MjczMDAxNjcwODM3NCA3LjI5NDA5OTgwNzczOTI1OCw3LjcyNzMwMDE2NzA4Mzc0IiAvPjwvZz48L2c+PGcgdHJhbnNmb3JtPSJtYXRyaXgoMSwwLDAsMSwwLDApIiBvcGFjaXR5PSIxIiBzdHlsZT0iZGlzcGxheTogYmxvY2s7Ij48ZyBvcGFjaXR5PSIxIiB0cmFuc2Zvcm09Im1hdHJpeCgxLDAsMCwxLDAsMCkiPjxwYXRoIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIgZmlsbC1vcGFjaXR5PSIwIiBzdHJva2U9InJnYigxMjgsMTI4LDEyOCkiIHN0cm9rZS1vcGFjaXR5PSIxIiBzdHJva2Utd2lkdGg9IjEiIGQ9IiBNNC42NDcwOTk5NzE3NzEyNCw1IEM0LjY0NzA5OTk3MTc3MTI0LDUgMiw3LjcyNzMwMDE2NzA4Mzc0IDIsNy43MjczMDAxNjcwODM3NCIgLz48L2c+PC9nPjxnIHRyYW5zZm9ybT0ibWF0cml4KDEsMCwwLDEsMCwwKSIgb3BhY2l0eT0iMSIgc3R5bGU9ImRpc3BsYXk6IGJsb2NrOyI+PGcgb3BhY2l0eT0iMSIgdHJhbnNmb3JtPSJtYXRyaXgoMSwwLDAsMSwwLDApIj48cGF0aCBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiIGZpbGwtb3BhY2l0eT0iMCIgc3Ryb2tlPSJyZ2IoMTI4LDEyOCwxMjgpIiBzdHJva2Utb3BhY2l0eT0iMSIgc3Ryb2tlLXdpZHRoPSIxIiBkPSIgTTExLDQuNzcyNjk5ODMyOTE2MjYgQzExLjE0NDEwMDE4OTIwODk4NCw0Ljc3MjY5OTgzMjkxNjI2IDExLjU3NjQ5OTkzODk2NDg0NCw0Ljc3MjY5OTgzMjkxNjI2IDExLjg2NDgwMDQ1MzE4NjAzNSw0Ljc3MjY5OTgzMjkxNjI2IEMxMi4xNTMxMDAwMTM3MzI5MSw0Ljc3MjY5OTgzMjkxNjI2IDEyLjQ0MTIwMDI1NjM0NzY1Niw0Ljc3MjY5OTgzMjkxNjI2IDEyLjcyOTQ5OTgxNjg5NDUzMSw0Ljc3MjY5OTgzMjkxNjI2IEMxMy4wMTc4MDAzMzExMTU3MjMsNC43NzI2OTk4MzI5MTYyNiAxMy4zMDU5OTk3NTU4NTkzNzUsNC43NzI2OTk4MzI5MTYyNiAxMy41OTQzMDAyNzAwODA1NjYsNC43NzI2OTk4MzI5MTYyNiBDMTMuODgyNTk5ODMwNjI3NDQxLDQuNzcyNjk5ODMyOTE2MjYgMTQuMTcwODAwMjA5MDQ1NDEsNC43NzI2OTk4MzI5MTYyNiAxNC40NTkwOTk3Njk1OTIyODUsNC43NzI2OTk4MzI5MTYyNiBDMTQuNzQ3NDAwMjgzODEzNDc3LDQuNzcyNjk5ODMyOTE2MjYgMTUuMDM1OTAwMTE1OTY2Nzk3LDQuNzY3MDAwMTk4MzY0MjU4IDE1LjMyMzkwMDIyMjc3ODMyLDQuNzcyNjk5ODMyOTE2MjYgQzE1LjYxMTkwMDMyOTU4OTg0NCw0Ljc3ODM5OTk0NDMwNTQyIDE1LjkwNDUwMDAwNzYyOTM5NSw0Ljc2MzI5OTk0MjAxNjYwMiAxNi4xODcwMDAyNzQ2NTgyMDMsNC44MDY3OTk4ODg2MTA4NCBDMTYuNDY5NDk5NTg4MDEyNjk1LDQuODUwMjk5ODM1MjA1MDc4IDE2Ljc1NTE5OTQzMjM3MzA0Nyw0LjkyNTM5OTc4MDI3MzQzNzUgMTcuMDE5MTAwMTg5MjA4OTg0LDUuMDMzODk5Nzg0MDg4MTM1IEMxNy4yODMwMDA5NDYwNDQ5MjIsNS4xNDIzOTk3ODc5MDI4MzIgMTcuNTQwMDAwOTE1NTI3MzQ0LDUuMjg5MTAwMTcwMTM1NDk4IDE3Ljc3MDUwMDE4MzEwNTQ3LDUuNDU3Nzk5OTExNDk5MDIzIEMxOC4wMDA5OTk0NTA2ODM1OTQsNS42MjY1MDAxMjk2OTk3MDcgMTguMjE1OTk5NjAzMjcxNDg0LDUuODI4NzAwMDY1NjEyNzkzIDE4LjQwMTg5OTMzNzc2ODU1NSw2LjA0NTgwMDIwOTA0NTQxIEMxOC41ODc3OTkwNzIyNjU2MjUsNi4yNjI4OTk4NzU2NDA4NjkgMTguNzUyMTk5MTcyOTczNjMzLDYuNTA3NTk5ODMwNjI3NDQxIDE4Ljg4NTkwMDQ5NzQzNjUyMyw2Ljc2MDM5OTgxODQyMDQxIEMxOS4wMTk1OTk5MTQ1NTA3OCw3LjAxMzE5OTgwNjIxMzM3OSAxOS4xMjczMDAyNjI0NTExNzIsNy4yODcwOTk4MzgyNTY4MzYgMTkuMjAzODk5MzgzNTQ0OTIyLDcuNTYyNzk5OTMwNTcyNTEgQzE5LjI4MDUwMDQxMTk4NzMwNSw3LjgzODUwMDAyMjg4ODE4NCAxOS4zMjA0OTk0MjAxNjYwMTYsOC4xMjgzOTk4NDg5Mzc5ODggMTkuMzQ1MzAwNjc0NDM4NDc3LDguNDE0NDAwMTAwNzA4MDA4IEMxOS4zNzAxMDAwMjEzNjIzMDUsOC43MDA0MDAzNTI0NzgwMjcgMTkuMzUxNjAwNjQ2OTcyNjU2LDguOTkwNjk5NzY4MDY2NDA2IDE5LjM1Mjg5OTU1MTM5MTYsOS4yNzg5MDAxNDY0ODQzNzUgQzE5LjM1NDIwMDM2MzE1OTE4LDkuNTY3MDk5NTcxMjI4MDI3IDE5LjM1Mjg5OTU1MTM5MTYsOS44NTU0MDAwODU0NDkyMTkgMTkuMzUyODk5NTUxMzkxNiwxMC4xNDM2OTk2NDU5OTYwOTQgQzE5LjM1Mjg5OTU1MTM5MTYsMTAuNDMyMDAwMTYwMjE3Mjg1IDE5LjM1Mjg5OTU1MTM5MTYsMTAuNzIwMTAwNDAyODMyMDMxIDE5LjM1Mjg5OTU1MTM5MTYsMTEuMDA4Mzk5OTYzMzc4OTA2IEMxOS4zNTI4OTk1NTEzOTE2LDExLjI5NjY5OTUyMzkyNTc4MSAxOS4zNTI4OTk1NTEzOTE2LDExLjU4NDg5OTkwMjM0Mzc1IDE5LjM1Mjg5OTU1MTM5MTYsMTEuODczMjAwNDE2NTY0OTQxIEMxOS4zNTI4OTk1NTEzOTE2LDEyLjE2MTQ5OTk3NzExMTgxNiAxOS4zNTI4OTk1NTEzOTE2LDEyLjQ0OTcwMDM1NTUyOTc4NSAxOS4zNTI4OTk1NTEzOTE2LDEyLjczNzk5OTkxNjA3NjY2IEMxOS4zNTI4OTk1NTEzOTE2LDEzLjAyNjMwMDQzMDI5Nzg1MiAxOS4zNTI4OTk1NTEzOTE2LDEzLjMxNDQ5OTg1NTA0MTUwNCAxOS4zNTI4OTk1NTEzOTE2LDEzLjYwMjgwMDM2OTI2MjY5NSBDMTkuMzUyODk5NTUxMzkxNiwxMy44OTEwOTk5Mjk4MDk1NyAxOS4zNTI4OTk1NTEzOTE2LDEzLjU2Nzk5OTgzOTc4MjcxNSAxOS4zNTI4OTk1NTEzOTE2LDE0LjQ2NzQ5OTczMjk3MTE5MSBDMTkuMzUyODk5NTUxMzkxNiwxNS4zNjY5OTk2MjYxNTk2NjggMTkuMzUyODk5NTUxMzkxNiwxOC4yNDQ2MDAyOTYwMjA1MDggMTkuMzUyODk5NTUxMzkxNiwxOSIgLz48L2c+PC9nPjxnIHRyYW5zZm9ybT0ibWF0cml4KDEsMCwwLDEsMCwwKSIgb3BhY2l0eT0iMSIgc3R5bGU9ImRpc3BsYXk6IGJsb2NrOyI+PGcgb3BhY2l0eT0iMSIgdHJhbnNmb3JtPSJtYXRyaXgoMSwwLDAsMSwwLDApIj48cGF0aCBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiIGZpbGwtb3BhY2l0eT0iMCIgc3Ryb2tlPSJyZ2IoMTI4LDEyOCwxMjgpIiBzdHJva2Utb3BhY2l0eT0iMSIgc3Ryb2tlLXdpZHRoPSIxIiBkPSIgTTEzLDE5LjIyNzMwMDY0MzkyMDkgQzEyLjg1NTg5OTgxMDc5MTAxNiwxOS4yMjczMDA2NDM5MjA5IDEyLjQyMzUwMDA2MTAzNTE1NiwxOS4yMjczMDA2NDM5MjA5IDEyLjEzNTE5OTU0NjgxMzk2NSwxOS4yMjczMDA2NDM5MjA5IEMxMS44NDY4OTk5ODYyNjcwOSwxOS4yMjczMDA2NDM5MjA5IDExLjU1ODc5OTc0MzY1MjM0NCwxOS4yMjczMDA2NDM5MjA5IDExLjI3MDUwMDE4MzEwNTQ2OSwxOS4yMjczMDA2NDM5MjA5IEMxMC45ODIxOTk2Njg4ODQyNzcsMTkuMjI3MzAwNjQzOTIwOSAxMC42OTQwMDAyNDQxNDA2MjUsMTkuMjI3MzAwNjQzOTIwOSAxMC40MDU2OTk3Mjk5MTk0MzQsMTkuMjI3MzAwNjQzOTIwOSBDMTAuMTE3NDAwMTY5MzcyNTU5LDE5LjIyNzMwMDY0MzkyMDkgOS44MjkxOTk3OTA5NTQ1OSwxOS4yMjczMDA2NDM5MjA5IDkuNTQwOTAwMjMwNDA3NzE1LDE5LjIyNzMwMDY0MzkyMDkgQzkuMjUyNTk5NzE2MTg2NTIzLDE5LjIyNzMwMDY0MzkyMDkgOC45NjQwOTk4ODQwMzMyMDMsMTkuMjMyOTk5ODAxNjM1NzQyIDguNjc2MDk5Nzc3MjIxNjgsMTkuMjI3MzAwNjQzOTIwOSBDOC4zODgwOTk2NzA0MTAxNTYsMTkuMjIxNTk5NTc4ODU3NDIyIDguMDk1NDk5OTkyMzcwNjA1LDE5LjIzNjcwMDA1Nzk4MzQgNy44MTMwMDAyMDIxNzg5NTUsMTkuMTkzMTk5MTU3NzE0ODQ0IEM3LjUzMDQ5OTkzNTE1MDE0NjUsMTkuMTQ5NzAwMTY0Nzk0OTIyIDcuMjQ0ODAwMDkwNzg5Nzk1LDE5LjA3NDYwMDIxOTcyNjU2MiA2Ljk4MDg5OTgxMDc5MTAxNiwxOC45NjYxMDA2OTI3NDkwMjMgQzYuNzE3MDAwMDA3NjI5Mzk0NSwxOC44NTc1OTkyNTg0MjI4NSA2LjQ2MDAwMDAzODE0Njk3MywxOC43MTA4OTkzNTMwMjczNDQgNi4yMjk0OTk4MTY4OTQ1MzEsMTguNTQyMjAwMDg4NTAwOTc3IEM1Ljk5OTAwMDA3MjQ3OTI0OCwxOC4zNzM1MDA4MjM5NzQ2MSA1Ljc4Mzk5OTkxOTg5MTM1NywxOC4xNzEzMDA4ODgwNjE1MjMgNS41OTgxMDAxODUzOTQyODcsMTcuOTU0MjAwNzQ0NjI4OTA2IEM1LjQxMjE5OTk3NDA2MDA1OSwxNy43MzcxMDA2MDExOTYyOSA1LjI0Nzc5OTg3MzM1MjA1MSwxNy40OTIzOTkyMTU2OTgyNDIgNS4xMTQwOTk5Nzk0MDA2MzUsMTcuMjM5NTk5MjI3OTA1MjczIEM0Ljk4MDQwMDA4NTQ0OTIxOSwxNi45ODY3OTkyNDAxMTIzMDUgNC44NzI3MDAyMTQzODU5ODYsMTYuNzEyOTAwMTYxNzQzMTY0IDQuNzk2MTAwMTM5NjE3OTIsMTYuNDM3MjAwNTQ2MjY0NjUgQzQuNzE5NTAwMDY0ODQ5ODUzNSwxNi4xNjE1MDA5MzA3ODYxMzMgNC42Nzk1MDAxMDI5OTY4MjYsMTUuODcxNjAwMTUxMDYyMDEyIDQuNjU0Njk5ODAyMzk4NjgyLDE1LjU4NTU5OTg5OTI5MTk5MiBDNC42Mjk4OTk5Nzg2Mzc2OTUsMTUuMjk5NTk5NjQ3NTIxOTczIDQuNjQ4Mzk5ODI5ODY0NTAyLDE1LjAwOTMwMDIzMTkzMzU5NCA0LjY0NzA5OTk3MTc3MTI0LDE0LjcyMTA5OTg1MzUxNTYyNSBDNC42NDU4MDAxMTM2Nzc5Nzg1LDE0LjQzMjkwMDQyODc3MTk3MyA0LjY0NzA5OTk3MTc3MTI0LDE0LjE0NDU5OTkxNDU1MDc4MSA0LjY0NzA5OTk3MTc3MTI0LDEzLjg1NjMwMDM1NDAwMzkwNiBDNC42NDcwOTk5NzE3NzEyNCwxMy41Njc5OTk4Mzk3ODI3MTUgNC42NDcwOTk5NzE3NzEyNCwxMy4yNzk4OTk1OTcxNjc5NjkgNC42NDcwOTk5NzE3NzEyNCwxMi45OTE2MDAwMzY2MjEwOTQgQzQuNjQ3MDk5OTcxNzcxMjQsMTIuNzAzMzAwNDc2MDc0MjE5IDQuNjQ3MDk5OTcxNzcxMjQsMTIuNDE1MTAwMDk3NjU2MjUgNC42NDcwOTk5NzE3NzEyNCwxMi4xMjY3OTk1ODM0MzUwNTkgQzQuNjQ3MDk5OTcxNzcxMjQsMTEuODM4NTAwMDIyODg4MTg0IDQuNjQ3MDk5OTcxNzcxMjQsMTEuNTUwMjk5NjQ0NDcwMjE1IDQuNjQ3MDk5OTcxNzcxMjQsMTEuMjYyMDAwMDgzOTIzMzQgQzQuNjQ3MDk5OTcxNzcxMjQsMTAuOTczNjk5NTY5NzAyMTQ4IDQuNjQ3MDk5OTcxNzcxMjQsMTAuNjg1NTAwMTQ0OTU4NDk2IDQuNjQ3MDk5OTcxNzcxMjQsMTAuMzk3MTk5NjMwNzM3MzA1IEM0LjY0NzA5OTk3MTc3MTI0LDEwLjEwODkwMDA3MDE5MDQzIDQuNjQ3MDk5OTcxNzcxMjQsMTAuNDMyMDAwMTYwMjE3Mjg1IDQuNjQ3MDk5OTcxNzcxMjQsOS41MzI1MDAyNjcwMjg4MDkgQzQuNjQ3MDk5OTcxNzcxMjQsOC42MzMwMDAzNzM4NDAzMzIgNC42NDcwOTk5NzE3NzEyNCw1Ljc1NTQwMDE4MDgxNjY1IDQuNjQ3MDk5OTcxNzcxMjQsNSIgLz48L2c+PC9nPjwvZz48L3N2Zz4=)

</div>

</div>

</div>

</div>

</div>

</div>

<div class="li e">

<div>

<div class="bi" aria-describedby="136" aria-labelledby="136">

<div class="ba" tabindex="-1">

1

</div>

</div>

</div>

</div>

</div>

</div>

</div>

<div class="v j jt ju jv jw jx jy jz ka kb kc kd ke kf kg kh">

<div class="lr bt by r s">

</div>

<div class="au bt">

<div>

<div class="bi" aria-describedby="8" aria-labelledby="8">

<div class="ba" tabindex="-1">

<div class="bi">

<img src="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgZmlsbD0ibm9uZSIgdmlld2JveD0iMCAwIDI0IDI0IiBjbGFzcz0ibHciPjxwYXRoIGZpbGw9IiMwMDAiIGQ9Ik0xNy41IDEuMjVhLjUuNSAwIDAgMSAxIDB2Mi41SDIxYS41LjUgMCAwIDEgMCAxaC0yLjV2Mi41YS41LjUgMCAwIDEtMSAwdi0yLjVIMTVhLjUuNSAwIDAgMSAwLTFoMi41em0tMTEgNC41YTEgMSAwIDAgMSAxLTFIMTFhLjUuNSAwIDAgMCAwLTFINy41YTIgMiAwIDAgMC0yIDJ2MTRhLjUuNSAwIDAgMCAuOC40bDUuNy00LjQgNS43IDQuNGEuNS41IDAgMCAwIC44LS40di04LjVhLjUuNSAwIDAgMC0xIDB2Ny40OGwtNS4yLTRhLjUuNSAwIDAgMC0uNiAwbC01LjIgNHoiIC8+PC9zdmc+" class="lw" />

</div>

</div>

</div>

</div>

</div>

<div class="fi lx cr">

<div class="e y">

<div class="v cf">

<div class="ly lz ma mb mc md cm bd">

<div class="v">

<div>

<a href="https://medium.com/plans?dimension=post_audio_button&amp;postId=09fc9a536996&amp;source=upgrade_membership---post_audio_button-----------------------------------------" class="z ab ac ey af ag ah ai aj ak al am an ao ap" rel="noopener follow"></a>

<div>

<div class="bi" aria-describedby="9" aria-labelledby="9">

<div class="ba" tabindex="-1">

![](data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgZmlsbD0ibm9uZSIgdmlld2JveD0iMCAwIDI0IDI0Ij48cGF0aCBmaWxsPSJjdXJyZW50Q29sb3IiIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTMgMTJhOSA5IDAgMSAxIDE4IDAgOSA5IDAgMCAxLTE4IDBtOS0xMEM2LjQ3NyAyIDIgNi40NzcgMiAxMnM0LjQ3NyAxMCAxMCAxMCAxMC00LjQ3NyAxMC0xMFMxNy41MjMgMiAxMiAybTMuMzc2IDEwLjQxNi00LjU5OSAzLjA2NmEuNS41IDAgMCAxLS43NzctLjQxNlY4LjkzNGEuNS41IDAgMCAxIC43NzctLjQxNmw0LjU5OSAzLjA2NmEuNS41IDAgMCAxIDAgLjgzMiIgY2xpcC1ydWxlPSJldmVub2RkIiAvPjwvc3ZnPg==)

<div class="by r s">

Listen

</div>

</div>

</div>

</div>

</div>

</div>

</div>

</div>

</div>

</div>

<div class="bi" aria-describedby="postFooterSocialMenu" aria-labelledby="postFooterSocialMenu">

<div>

<div class="bi" aria-describedby="10" aria-labelledby="10">

<div class="ba" tabindex="-1">

![](data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgZmlsbD0ibm9uZSIgdmlld2JveD0iMCAwIDI0IDI0Ij48cGF0aCBmaWxsPSJjdXJyZW50Q29sb3IiIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTE1LjIxOCA0LjkzMWEuNC40IDAgMCAxLS4xMTguMTMybC4wMTIuMDA2YS40NS40NSAwIDAgMS0uMjkyLjA3NC41LjUgMCAwIDEtLjMtLjEzbC0yLjAyLTIuMDJ2Ny4wN2MwIC4yOC0uMjMuNS0uNS41cy0uNS0uMjItLjUtLjV2LTcuMDRsLTIgMmEuNDUuNDUgMCAwIDEtLjU3LjA0aC0uMDJhLjQuNCAwIDAgMS0uMTYtLjMuNC40IDAgMCAxIC4xLS4zMmwyLjgtMi44YS41LjUgMCAwIDEgLjcgMGwyLjggMi43OWEuNDIuNDIgMCAwIDEgLjA2OC40OThtLS4xMDYuMTM4LjAwOC4wMDR2LS4wMXpNMTYgNy4wNjNoMS41YTIgMiAwIDAgMSAyIDJ2MTBhMiAyIDAgMCAxLTIgMmgtMTFjLTEuMSAwLTItLjktMi0ydi0xMGEyIDIgMCAwIDEgMi0ySDhhLjUuNSAwIDAgMSAuMzUuMTUuNS41IDAgMCAxIC4xNS4zNS41LjUgMCAwIDEtLjE1LjM1LjUuNSAwIDAgMS0uMzUuMTVINi40Yy0uNSAwLS45LjQtLjkuOXYxMC4yYS45LjkgMCAwIDAgLjkuOWgxMS4yYy41IDAgLjktLjQuOS0uOXYtMTAuMmMwLS41LS40LS45LS45LS45SDE2YS41LjUgMCAwIDEgMC0xIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIC8+PC9zdmc+)

<div class="by r s">

Share

</div>

</div>

</div>

</div>

</div>

<div class="bi">

<div class="bi">

<div>

<div class="bi" aria-describedby="129" aria-labelledby="129">

<div class="ba" tabindex="-1">

![](data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgZmlsbD0ibm9uZSIgdmlld2JveD0iMCAwIDI0IDI0Ij48cGF0aCBmaWxsPSJjdXJyZW50Q29sb3IiIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTQuMzg1IDEyYzAgLjU1LjIgMS4wMi41OSAxLjQxLjM5LjQuODYuNTkgMS40MS41OXMxLjAyLS4yIDEuNDEtLjU5Yy40LS4zOS41OS0uODYuNTktMS40MXMtLjItMS4wMi0uNTktMS40MWExLjkzIDEuOTMgMCAwIDAtMS40MS0uNTljLS41NSAwLTEuMDIuMi0xLjQxLjU5LS40LjM5LS41OS44Ni0uNTkgMS40MW01LjYyIDBjMCAuNTUuMiAxLjAyLjU4IDEuNDEuNC40Ljg3LjU5IDEuNDIuNTlzMS4wMi0uMiAxLjQxLS41OWMuNC0uMzkuNTktLjg2LjU5LTEuNDFzLS4yLTEuMDItLjU5LTEuNDFhMS45MyAxLjkzIDAgMCAwLTEuNDEtLjU5Yy0uNTUgMC0xLjAzLjItMS40Mi41OXMtLjU4Ljg2LS41OCAxLjQxbTUuNiAwYzAgLjU1LjIgMS4wMi41OCAxLjQxLjQuNC44Ny41OSAxLjQzLjU5czEuMDMtLjIgMS40Mi0uNTkuNTgtLjg2LjU4LTEuNDEtLjItMS4wMi0uNTgtMS40MWExLjkzIDEuOTMgMCAwIDAtMS40Mi0uNTljLS41NiAwLTEuMDQuMi0xLjQzLjU5cy0uNTguODYtLjU4IDEuNDEiIGNsaXAtcnVsZT0iZXZlbm9kZCIgLz48L3N2Zz4=)

<div class="by r s">

More

</div>

</div>

</div>

</div>

</div>

</div>

</div>

</div>

</div>

</div>

</div>

</div>

<figure class="mw mx my mz na nb mt mu paragraph-image">
<div class="nc nd ej ne bd nf" role="button" tabindex="0">
<span class="em eo ep ai eq er es et eu speechify-ignore">Press enter or click to view image in full size</span>
<div class="mt mu mv">
<img src="https://miro.medium.com/v2/resize:fit:700/1*mZRQ_XEqxM8Hemoz04uwTg.png" class="bd md ng nh" loading="eager" role="presentation" width="700" height="232" />
</div>
</div>
<figcaption>AI-generated (using nano banana 2 Gemini)</figcaption>
</figure>

This blog will be a 2-part series; in this first part, I am going to walk through the concepts and the architecture of SKILL.md and some internal workings of how agents use SKILL.md to perform complicated tasks. In the second part of this series, I will be walking through the process of building a SKILL.md

Lately, I have realized that there is really no need to program agents to do most of the tasks, I was able to get all my work done with deep agents with SKILL.md. I did cover Deep Agents in the following blog.

<div class="oj ok ol om on oo">

<a href="/building-deep-agents-5d2f77394c3b?source=post_page-----09fc9a536996---------------------------------------" rel="noopener follow" target="_blank" data-discover="true"></a>

<div class="op v bx">

<div class="oq v cs cf ca or">

## Building Deep Agents

<div class="oz e">

### In this blog, I will share my experience building Autonomous, Memory-Rich, Multi-Step AI Systems

</div>

<div class="hj e">

abvijaykumar.medium.com

</div>

</div>

<div class="pa e">

<div class="pb e pc pd pe pa pf md oo">

</div>

</div>

</div>

</div>

I am slowly starting to believe in `SKILL.md` will be the most important skill, I need to learn :-D, and I wanted to share my understanding and experience building these `SKILL.md`

The following picture brings everything together.

<figure class="mw mx my mz na nb mt mu paragraph-image">
<div class="nc nd ej ne bd nf" role="button" tabindex="0">
<span class="em eo ep ai eq er es et eu speechify-ignore">Press enter or click to view image in full size</span>
<div class="mt mu pk">
<img src="https://miro.medium.com/v2/resize:fit:700/1*4YF72QO_nurQzaqXnYGH_g.png" class="bd md ng nh" loading="lazy" role="presentation" width="700" height="1207" />
</div>
</div>
</figure>

Let me walk through this diagram, because it captures how SKILL.md fits into the broader agent architecture.

**Identity Layer:** this is where the agent gets its personality and expertise. SKILL.md files live here alongside constraints and safety rules. Together, they define *what the agent knows* and *what it’s allowed to do*. When you install a skill, you’re extending this layer.

**Orchestration Layer:** is the engine. The Dynamic System Prompt is where the skill catalog (all those Level 1 metadata entries) gets embedded. The Large Language Model reads the user’s request, consults the system prompt (which includes the skill catalog), and makes the routing decision we’ll discuss later. The Agent Runtime manages the thought-action loop,the model thinks, decides on an action, the runtime executes it, and the result feeds back to the model for the next step. Task State tracks where the agent is in a multi-step workflow.

**MCP Layer:** connects the agent to the outside world through the Model Context Protocol. MCP Tool Servers expose specific capabilities (file operations, API calls, database queries), and MCP Resources provide read-access to external data. This is how the agent actually *does thing,* skills tell it what to do, and MCP gives it the tools to do it.

**External Systems:** are the real-world endpoint: databases, APIs, and the filesystem where your skill directories actually live.

The key insight from this diagram is that skills operate at the highest level of the stack. They don’t touch the MCP layer directly, they don’t manage tool connections, and they don’t handle state. They influence the model’s behavior through the system prompt, and the model orchestrates everything else.

Ofcourse, I did not cover the semantic layer (RAG, vectors, graphs etc), to keep it simple.

### Agent Skills

A skill is a directory on a filesystem that contains at minimum a `SKILL.md` file, and optionally some subdirectories for scripts, reference docs, and assets. Those files together form a self-contained package of domain expertise that an AI agent can discover, decide is relevant, load up, and use.

Here’s a clean folder-tree representation of a Skill:

``` mw
skill-name/                          ← Skill Directory
│
├── SKILL.md                         ← Required
│   ├── --- YAML Frontmatter ---     ← name + description (the skill's ID card)
│   │       name: skill-name
│   │       description: What it does and when to trigger
│   │   ---
│   └── ## Markdown Body             ← Instructions (the actual playbook)
│         Step-by-step workflows, examples,
│         code patterns, gotchas, etc.
│
├── scripts/                         ← Optional — executable code
│   ├── validate.py                  ← Python scripts
│   ├── setup.sh                     ← Bash scripts
│   └── build.js                     ← JavaScript scripts
│
├── references/                      ← Optional — extra documentation
│   ├── REFERENCE.md                 ← Detailed technical reference
│   ├── domain-guide.md              ← Domain-specific docs
│   └── api-patterns.md              ← API guides
│
└── assets/                          ← Optional — static resources
    ├── template.docx                ← Templates
    ├── config.json                  ← Configuration files
    └── lookup-table.csv             ← Data files
```

So what makes skills architecturally interesting compared to other ways of extending AI agents? A few things stand out.

- <span id="fe79">**filesystem-based:** They’re just directories and files. You can read them in any text editor, version them with Git, copy them around, and inspect them without any special tools. No databases, no registries, no compiled artifacts. This is intentional—it means the barrier to creating and sharing skills is essentially zero.</span>
- <span id="6554">**prompt-based:** When an agent decides to use a skill, what actually happens is pretty simple: the skill’s instructions get loaded into the agent’s context window. It’s basically expanding the conversation with domain-specific guidance. There’s no separate runtime, no plugin architecture, and no function registry behind the scenes. The skill’s power comes entirely from how good its instructions are and how well the agent follows them.</span>
- <span id="5024">**composable**. You can have multiple skills active at the same time. They can’t explicitly talk to each other, but the agent can pull in several skills during a single interaction if the task calls for it. This composability just… works, naturally, because of how progressive disclosure is designed.</span>
- <span id="1946">**portable**. Thanks to the open standard at agentskills.io, a skill you write for Claude Code also works in VS Code with Copilot, in Cursor, in OpenAI’s Codex, or in any agent that supports the spec (with minimal tweaks).</span>

### Anatomy

The `SKILL.md` file is where all the magic lives. It’s a Markdown file that starts with YAML frontmatter (the stuff between the `---` markers) followed by the actual instructions in regular Markdown. Think of the frontmatter as the skill’s ID card—it tells the system “what this skill is” and “when to use it." The Markdown body is the playbook: it tells the agent “what to actually do."

### The Core Design Principle

Progressive disclosure is the key feature that makes the whole skills system actually work at scale and load only the skills that required and when it is really required. Install ten skills, and your agent’s context window would be stuffed with instructions, leaving barely any room for the actual conversation. With progressive disclosure, you can have dozens or even hundreds of skills installed, and the overhead is negligible.

The concept works on three levels:

- <span id="ae66">**Level 1 – Just the metadata (~100 tokens per skill).** When the agent starts up, it only loads the `name` and `description` from every installed skill’s frontmatter.</span>
- <span id="2c7a">**Level 2 – The full instructions (under 5,000 tokens, ideally).** When the agent decides a particular skill is relevant to what you’re asking, then it loads the complete SKILL.md body.</span>
- <span id="ae7c">**Level 3 – The deep reference material (only when needed).** Sometimes a task needs even more detail—a specific form-filling guide, a migration risk catalog, or an exhaustive API reference. The agent can selectively pull in files from the skill’s `scripts/`, `references/`, or `assets/` directories. This is the appendix—available if you need it, invisible if you don’t. Because of this third level, the total amount of knowledge you can bundle into a skill is effectively unlimited.</span>

What makes this whole approach so clean is that it degrades gracefully. A simple skill with just a SKILL.md and no extra files? Works perfectly – just two levels instead of three. A skill with a massive reference library? Costs nothing extra until those references are actually needed. And because everything operates through standard filesystem reads, there’s no caching layer to maintain, no separate service to run, and no startup penalty beyond reading a few hundred bytes of YAML per installed skill.

### The Skill Lifecycle

To really understand how skills go from being dormant files on your filesystem to active instructions shaping how the agent works, you need to follow the full lifecycle. It has four phases: installation, discovery, routing, and execution.

<figure class="mw mx my mz na nb mt mu paragraph-image">
<div class="nc nd ej ne bd nf" role="button" tabindex="0">
<span class="em eo ep ai eq er es et eu speechify-ignore">Press enter or click to view image in full size</span>
<div class="mt mu rb">
<img src="https://miro.medium.com/v2/resize:fit:700/1*LVFVbpWMSIuYqYYo4Gi-Jw.png" class="bd md ng nh" loading="lazy" role="presentation" width="700" height="956" />
</div>
</div>
</figure>

Four phases, left to right. Installation (green) is just putting the folder in the right place. Discovery (blue) is the agent scanning directories and building its catalog of what’s available. Routing (terracotta) is the crucial decision point; the LLM reads the user’s message against all skill descriptions and decides if any match. If yes, the full SKILL.md loads; if no, the agent proceeds without skill help. Execution (burgundy) is the agent following the loaded instructions and pulling in extra resources as needed.

- <span id="d0af">**Phase 1: Installation** – Installing a skill is literally just putting the folder in the right place. In Claude Code, that means \`~/.claude/skills/\` for personal cross-project skills, \`.claude/skills/\` within a repo for project-specific ones, or the plugin marketplace. In Claude.ai, you upload a zip through Settings \> Features. Through the API, you reference a \`skill_id\` in your container config. The key thing to appreciate is that there’s no registration step, no build process, no database entry. You drop a folder and you’re done.</span>
- <span id="098e">**Phase 2: Discovery** – When the agent starts a session (or when skill files change mid-session in Claude Code, thanks to live file watching), it scans all the skill directories, reads just the YAML frontmatter from each SKILL.md, and builds a catalog of what’s available. This catalog gets embedded into the agent’s system prompt. The whole scan is lightweight because it only touches the frontmatter – never the full file bodies.</span>
- <span id="8950">**Phase 3: Routing** – This distinctive architectural feature eliminates algorithmic routing. Instead, the system formats skill names and descriptions into a text block in the prompt and lets the LLM determine which skill applies to the request. We will be diving deep on this, later in the blog.</span>
- <span id="2433">**Phase 4: Execution** – Once a skill is selected, the agent reads the full SKILL.md into its context. The instructions become part of the active conversation, guiding what the agent does next. If those instructions point to additional files; a forms guide, a language mapping reference, whatever – the agent can load those too. There’s no special “skill execution mode”; it’s just the agent operating with a richer context that now includes the skill’s expertise.</span>

### Frontmatter Specification

The YAML frontmatter is the control panel for your skill. Let’s walk through each field and what it actually does.

<figure class="mw mx my mz na nb mt mu paragraph-image">
<div class="nc nd ej ne bd nf" role="button" tabindex="0">
<span class="em eo ep ai eq er es et eu speechify-ignore">Press enter or click to view image in full size</span>
<div class="mt mu rc">
<img src="https://miro.medium.com/v2/resize:fit:700/1*uNp9ryKJy_o3Fe7WRWHQsA.png" class="bd md ng nh" loading="lazy" role="presentation" width="700" height="437" />
</div>
</div>
</figure>

**Body Content**

The Markdown body is where your expertise lives. It’s what the agent loads into context when the skill fires, and how good it is directly determines how well the agent performs. The spec doesn’t impose any formatting rules — write whatever helps — but months of real-world usage have surfaced some patterns that work way better than others.

<figure class="mw mx my mz na nb mt mu paragraph-image">
<div class="nc nd ej ne bd nf" role="button" tabindex="0">
<span class="em eo ep ai eq er es et eu speechify-ignore">Press enter or click to view image in full size</span>
<div class="mt mu rc">
<img src="https://miro.medium.com/v2/resize:fit:700/1*1hb7SA7qrx0A4w5k37QI_w.png" class="bd md ng nh" loading="lazy" role="presentation" width="700" height="463" />
</div>
</div>
</figure>

### **Bundled Resources—Scripts, References, and Assets**

Beyond the SKILL.md file, skills can include three categories of supporting files, each serving a distinct purpose and loaded under different conditions.

<figure class="mw mx my mz na nb mt mu paragraph-image">
<div class="nc nd ej ne bd nf" role="button" tabindex="0">
<span class="em eo ep ai eq er es et eu speechify-ignore">Press enter or click to view image in full size</span>
<div class="mt mu rd">
<img src="https://miro.medium.com/v2/resize:fit:700/1*wgvUVfgQF54USuZykx1yag.png" class="bd md ng nh" loading="lazy" role="presentation" width="700" height="321" />
</div>
</div>
</figure>

### Skill Triggering

The skill-triggering mechanism is a distinctive aspect of the Agent Skills system, crucial for building reliable skills.

At the code level, there’s no algorithmic routing. C<span class="mark ads adt ak">laude Code doesn’t use embeddings, classifiers, regex, keyword matching, or ML-based intent detection to decide which skill to invoke. Instead, it constructs a dynamic tool description by aggregating skill names and des</span>criptions and presents it as part of a meta-tool called “Skill” in the agent’s prompt. The language model’s forward pass through the transformer decides which skill to invoke (if any).

The language model brings its understanding of natural language semantics, context, and nuance to the routing decision. It can understand that “make me a deck about Q3 results” should trigger the `pptx` skill, even though “presentation” isn’t mentioned. It can disambiguate between “extract text from this document” (which might trigger `pdf` or `docx`) and “write a document summarizing this text” (which should trigger `docx` for creation, not extraction).

However, LLM-based routing has characteristics that skill authors must account for. The model tends to “undertrigger,” not invoking a skill even when it’s helpful, especially for requests the model can handle directly. Simple queries like “read this PDF” may not trigger the `pdf` skill because the model believes it can handle the task directly. Complex, multi-step queries and specialized domain tasks are more reliable triggers.

<figure class="mw mx my mz na nb mt mu paragraph-image">
<div class="nc nd ej ne bd nf" role="button" tabindex="0">
<span class="em eo ep ai eq er es et eu speechify-ignore">Press enter or click to view image in full size</span>
<div class="mt mu re">
<img src="https://miro.medium.com/v2/resize:fit:700/1*kxKm58xbLRoqPkID_Ks_xA.png" class="bd md ng nh" loading="lazy" role="presentation" width="700" height="380" />
</div>
</div>
</figure>

This diagram traces a specific routing decision through the LLM-based system. When the user asks to fix formatting in a `.docx` file, the language model evaluates this request against the descriptions of all installed skills. The `docx `skill’s description mentions “manipulate Word documents” and “formatting,” producing a strong match. The `pdf`, `xlsx`, and `pptx` skills clearly do not match. With the match identified, the system loads the full `docx/SKILL.md` into the context window, and the agent proceeds to execute the task with the skill’s specialized instructions guiding its behavior. The crucial point is that this entire routing decision—including the semantic understanding that “quarterly report.docx” implies a Word document and “fix the formatting” implies document manipulation—happens within the language model itself, not in any external routing logic.

### Skill Categories

The Agent Skills ecosystem spans a broad range of categories, from Anthropic’s production-ready built-in skills to enterprise-specific custom skills to community-contributed open-source skills.

<figure class="mw mx my mz na nb mt mu paragraph-image">
<div class="nc nd ej ne bd nf" role="button" tabindex="0">
<span class="em eo ep ai eq er es et eu speechify-ignore">Press enter or click to view image in full size</span>
<div class="mt mu rf">
<img src="https://miro.medium.com/v2/resize:fit:700/1*rfQPiZB9N8yerbagA45PRw.png" class="bd md ng nh" loading="lazy" role="presentation" width="700" height="396" />
</div>
</div>
</figure>

Following are some of the best repositories for skill.md

<div class="rg v">

<div class="e">

</div>

</div>

<a href="https://skillsmp.com/" class="z rh" rel="noopener ugc nofollow" target="_blank">https://skillsmp.com/</a>

<div class="oj ok ol om on oo">

<a href="https://github.com/anthropics/skills?source=post_page-----09fc9a536996---------------------------------------" rel="noopener  ugc nofollow" target="_blank"></a>

<div class="op v bx">

<div class="oq v cs cf ca or">

## GitHub - anthropics/skills: Public repository for Agent Skills

<div class="oz e">

### Public repository for Agent Skills. Contribute to anthropics/skills development by creating an account on GitHub.

</div>

<div class="hj e">

github.com

</div>

</div>

<div class="pa e">

<div class="ri e pc pd pe pa pf md oo">

</div>

</div>

</div>

</div>

## Security and Trust Considerations

Since skills inject instructions directly into the agent’s context window, they’re essentially shaping how the agent thinks and acts. When you install a skill from the community marketplace, you’re handing that skill author the ability to influence your agent’s behavior. A well-intentioned skill might tell the agent to always validate inputs before writing files. A malicious one could instruct the agent to exfiltrate data or silently modify code in harmful ways. This is basically the prompt injection problem, but packaged in a neat folder structure.

There are a few guardrails built into the system to mitigate this.

The `allowed-tools` field in the frontmatter (still experimental) lets skill authors declare exactly which tools the skill needs: for example, `Bash(git:*) Bash(jq:*)` Read. This scopes the skill's permissions so it can't reach for tools it shouldn't need. If a skill about formatting Word documents suddenly wants shell access, it's a red flag.

The `license` field serves a dual purpose. Beyond legal clarity, it signals provenance. A skill marked `Proprietary. LICENSE.txt has complete terms` that ships from Anthropic carries very different trust signals than an unlicensed community skill.

For enterprise deployments, treat skills like codebase dependencies. Review, pin versions, and audit changes. Here are some practical guidelines: read a skill’s `SKILL.md` before installing it (it’s a text file). Prefer skills from known repositories like `github.com/anthropics/skills`. Be cautious with skills that include executable scripts in the scripts/ directory. Use project-level skills (`.claude/skills/`) over global ones (`~/.claude/skills/`) to limit the blast radius.

> The Agent Skills specification is still evolving its security model — things like skill signing, trust levels, and sandboxed execution are active areas of development. For now, the best defense is the simplest one: read what you install.

## Limitations

I truly believe in the power of SKILL.md, but it’s crucial to acknowledge its limitations. Skills aren’t a magical solution, and trying to fit everything into a SKILL.md can actually complicate matters.

- <span id="5f5c">Skill Limitations: Skills lack memory, cannot directly call APIs, and have context window limits.</span>
- <span id="f32f">Complex Logic Handling: Skills are not ideal for highly dynamic logic with complex branching or real-time feedback.</span>
- <span id="c84e">Model Dependence: Skill effectiveness varies across different models, impacting cross-platform compatibility.</span>

The ideal use for skills is domain expertise that’s mostly procedural — step-by-step workflows, formatting rules, code patterns, validation checklists, and domain-specific pitfalls.

## Versioning and Skill Updates

One thing that catches people off guard: skills don’t have a built-in versioning mechanism. There’s no `version` field in the required frontmatter spec. However, the `metadata` field — which is an optional catch-all key-value map — is the recommended place to track this.

``` mw
---
name: "name"
description: "descrition"
metadata:
  version: "version number"
  author: "author"
  last-updated: "date"
---
```

Since skills are just folders and files, the most natural versioning strategy is the one you already use for code: Git. Version your skills alongside your project code in `.claude/skills/`, and you get history, diffs, branching, and rollback for free. For global skills in `~/.claude/skills/`, consider maintaining them in a separate Git repository that you clone or symlink.

What happens when a skill is updated mid-session? In Claude Code, file watching detects changes to skill files and updates the agent’s catalog in real time. This means you can edit a SKILL.md, save it, and the agent’s behavior will reflect the changes on the very next interaction — no restart needed. That’s incredibly useful during skill development, but it also means you should be careful about editing production skills while an agent is actively working on a task.

For team environments, I’d recommend treating skills like you’d treat shared configuration: use a pull request process, have someone review changes to SKILL.md files, and tag releases so you can pin to a known-good version if something breaks.

## How Skills Compare to Other Approaches

If you’ve been building with AI agents for a while, you’ve probably used other ways to extend their capabilities. Here’s how Agent Skills stack up against the common alternatives.

Before SKILL.md, every AI coding tool had its own proprietary way of accepting custom instructions — and none of them talked to each other.

- <span id="fd0e">Cursor had `.cursor/rules/` with `.mdc` files using YAML frontmatter and glob patterns.</span>
- <span id="1535">GitHub Copilot had `.github/copilot-instructions.md`.</span>
- <span id="5510">Claude had `CLAUDE.md`.</span>
- <span id="d96e">Windsurf had `.windsurfrules`.</span>
- <span id="53b9">Google's Jules had `JULES.md`.</span>

If you used more than one tool (and most teams do), you were stuck maintaining the same instructions in three or four different formats. Developers literally resorted to symlinking files or writing CLI tools like `rule-porter` just to convert rules between formats. It was a digital Tower of Babel.

OpenAI’s Custom GPTs offered a different approach: configure a role-based persona via a web UI, upload knowledge files, and optionally connect external APIs through OpenAPI schemas (Actions). It was accessible and no-code, but customizations were locked within OpenAI’s ecosystem, preventing script execution, progressive disclosure, and Git version control. GPT Actions were deprecated in early 2024 due to complexity and unpredictable behavior. OpenAI’s replacement, function calling, the Assistants API, and Codex Skills, converged on the SKILL.md pattern pioneered by Anthropic.

Traditional agent frameworks like LangChain, CrewAI, AutoGPT, and the OpenAI Agents SDK define agent capabilities through code (Python classes, tool registrations, function schemas, orchestration logic). These are powerful and flexible but require programming skills, lack portability, and don’t benefit from the simplicity of SKILL.md. Fine-tuning permanently bakes behavior into model weights, making it expensive, slow to iterate, impossible to version, and non-portable across models.

The `AGENTS.md `standard (a vendor-neutral project-level instruction file) provides always-on context about your project, including architecture decisions, coding standards, and build instructions. Several tools read it, but AGENTS.md differs from SKILL.md in scope and behavior. AGENTS.md is always loaded, applies to everything, and doesn’t support progressive disclosure, bundled scripts, or on-demand activation. It tells the agent “here’s how we do things around here” (always-on project context), while SKILL.md tells the agent “here’s how to do this specific task” (on-demand procedural expertise). They’re complementary, not competing.

`SKILL.md` is unique in this landscape due to its four properties: progressive disclosure (load only what’s needed), bundled executable code (scripts that run deterministically alongside LLM-generated output), filesystem-native portability (just folders and files, versionable with Git), and cross-platform standardization (the same skill works in various agents). No other approach delivers all four.

## Standardization & Adoption

The standardization of SKILL.md is one of those rare cases where a single company’s feature became an industry-wide standard in a matter of weeks rather than years. Anthropic published the Agent Skills specification at agentskills.io, releasing it as an open standard under Apache 2.0 (code) and CC-BY-4.0 (docs), with a reference SDK and validation tooling.

The speed of adoption was almost unprecedented for an AI standard. Within days of publication, Microsoft had integrated SKILL.md support into VS Code and GitHub Copilot. OpenAI adopted a structurally identical architecture in Codex CLI and ChatGPT. Cursor, Amp, Goose, OpenCode, Letta, and others followed. Vercel launched <a href="https://skills.sh/" class="z rh" rel="noopener ugc nofollow" target="_blank">skills.sh</a>. By March 2026, the community <a href="https://github.com/sickn33/antigravity-awesome-skills" class="z rh" rel="noopener ugc nofollow" target="_blank">Antigravity Awesome Skills library</a> had cataloged over 1,234 skills compatible with 16+ different agents across the ecosystem. Microsoft even built a full Agent Framework SDK (Python, C#, and TypeScript) with a `SkillsProvider` class that discovers SKILL.md files from filesystem directories, validates their format, and exposes `load_skill`, `read_skill_resource`, and `run_skill_script` tools to agents.

The practical upshot for anyone building skills today is that your investment is protected. A skill you write this afternoon will work across every major AI coding tool on the market — and probably several that haven’t launched yet. That kind of portability guarantee is rare in tech, and it’s the single strongest argument for the SKILL.md format over every proprietary alternative.

## The Open Standard

Portability of skills isn’t just a side effect; it’s an explicit design goal backed by a formal specification. The Agent Skills open standard, hosted at <a href="https://agentskills.io/home" class="z rh" rel="noopener ugc nofollow" target="_blank">agentskills.io</a>, defines file structure, YAML frontmatter schema, Markdown body conventions, and discovery/routing behavior.

Maintained as an open-source effort (github.com/agentskills/agentskills), the spec isn’t locked to Anthropic or any vendor. Its goal is for skills written with time to work across any compliant agent runtime.

The spec doesn’t prescribe internal routing. It defines the interface (frontmatter metadata) but leaves implementation to agent runtimes. Claude Code uses LLM-based routing; others might use embeddings, classifiers, or hybrids. The spec guarantees that compliant agents can discover and use skills following the structure, but it doesn’t dictate their usage.

> Skill authors should stick to the spec. Avoid Claude Code-specific behaviors or undocumented features in SKILL.md. Well-written, standard-structured instructions increase the chances of your skill working wherever the spec is supported.

## Comparison

<figure class="mw mx my mz na nb mt mu paragraph-image">
<div class="nc nd ej ne bd nf" role="button" tabindex="0">
<span class="em eo ep ai eq er es et eu speechify-ignore">Press enter or click to view image in full size</span>
<div class="mt mu rc">
<img src="https://miro.medium.com/v2/resize:fit:700/1*IK6PSp4FwD4SOI40MB-XGw.png" class="bd md ng nh" loading="lazy" role="presentation" width="700" height="940" />
</div>
</div>
</figure>

when to use what-in summary,

**SKILL.md** when you need the agent to follow a specific procedure for a specific type of task—and especially when that procedure involves running scripts, loading reference docs, or producing structured output.

**AGENTS.md** when you want every AI tool touching your repo to know your project conventions—coding style, architecture decisions, and build commands—regardless of which tool it is.

**CLAUDE.md / .cursor/rules / copilot-instructions. md** when you’re committed to one tool and want the tightest integration with that specific platform. Many teams just symlink these to their AGENTS.md.

**Custom GPTs** when you need something quick and no-code for a non-technical audience. But know that you’re trading away portability, version control, scripts, and progressive disclosure.

## Testing and Debugging Skills

Building a SKILL.md is one thing, but knowing if it works is another. Since skill routing is LLM-based and non-deterministic, testing requires a different mindset than traditional code.

The simplest debugging technique is to ask the agent. After sending a request that should trigger your skill, ask: “Which skill did you use?” or “Did you use the deploy-pipeline skill?” The agent will tell you, as it knows its context. This is the fastest way to check if routing works.

For undertriggering issues, start with the description. Often, the problem is that the description lacks enough trigger words or synonyms. If your skill handles Docker deployments but the description only says “containerized deployments,” a user asking about “Docker” might not trigger it. The fix is usually to add more specific trigger terms.

For overtriggering issues, add negative boundaries. The “Do NOT use for…” pattern in the description is your primary tool. Be explicit about what your skill doesn’t handle.

A practical testing workflow is to create a test checklist of 10–15 natural language requests, some that should trigger the skill, some that shouldn’t, and some ambiguous edge cases. Run through them manually and track which ones route correctly. This gives you a triggering accuracy score to improve iteratively.

For debugging the skill body, run a task, evaluate the output, and refine the instructions. Pay attention to where the agent deviates from your intended output. Ambiguous or missing instructions are usually the cause. Adding a “Common Gotchas” or “Critical Rules” section to your SKILL.md often fixes these issues by making the implicit explicit.

In Claude Code, you can view the expanded system prompt to see your skill’s metadata as it appears to the model. This can reveal formatting or truncation issues not visible in the SKILL.md file.

</div>

</div>

</div>

<div class="v cf se sf sg sh" role="separator">

<span class="si bu bi sj sk sl"></span><span class="si bu bi sj sk sl"></span><span class="si bu bi sj sk"></span>

</div>

<div class="gc gd ge gf gg">

<div class="v cf">

<div class="cm bd fo fp fq fr">

In the next blog, we will build our SKILL.md, and I will walk through the complete process of building and running it.

Hope this blog was useful, and see you soon in my next part…

until then, take care!! Please leave your experiences and feedback

Here are some references, for more reading

1.  <span id="cf1a">Anthropic. “Introducing Agent Skills.” <a href="https://www.anthropic.com/news/skills" class="z rh" rel="noopener ugc nofollow" target="_blank">https://www.anthropic.com/news/skills</a></span>
2.  <span id="1fa3">Zhang, B., Lazuka, K., and Murag, M. “Equipping Agents for the Real World with Agent Skills.” Anthropic Engineering Blog, October 16, 2025. <a href="https://www.anthropic.com/engineering/equipping-agents-for-the-real-world-with-agent-skills" class="z rh" rel="noopener ugc nofollow" target="_blank">https://www.anthropic.com/engineering/equipping-agents-for-the-real-world-with-agent-skills</a></span>
3.  <span id="823f">Agent Skills Specification. <a href="http://agentskills.io/" class="z rh" rel="noopener ugc nofollow" target="_blank">agentskills.io</a>, . <a href="https://agentskills.io/specification" class="z rh" rel="noopener ugc nofollow" target="_blank">https://agentskills.io/specification</a></span>
4.  <span id="a49c">Agent Skills GitHub Repository. Anthropic. <a href="https://github.com/anthropics/skills" class="z rh" rel="noopener ugc nofollow" target="_blank">https://github.com/anthropics/skills</a></span>
5.  <span id="41bd">Agent Skills Open Standard Repository. <a href="https://github.com/agentskills/agentskills" class="z rh" rel="noopener ugc nofollow" target="_blank">https://github.com/agentskills/agentskills</a></span>
6.  <span id="05f2">Anthropic. “Agent Skills — Claude API Documentation.” <a href="https://platform.claude.com/docs/en/agents-and-tools/agent-skills/overview" class="z rh" rel="noopener ugc nofollow" target="_blank">https://platform.claude.com/docs/en/agents-and-tools/agent-skills/overview</a></span>

</div>

</div>

</div>

</div>

</div>

</div>

</div>
