 {"id":520787,"date":"2026-05-21T08:39:17","date_gmt":"2026-05-21T15:39:17","guid":{"rendered":"https:\/\/jorgep.com\/blog\/?page_id=520787"},"modified":"2026-05-21T13:13:52","modified_gmt":"2026-05-21T20:13:52","slug":"skills-for-ai","status":"publish","type":"page","link":"https:\/\/jorgep.com\/blog\/skills-for-ai\/","title":{"rendered":"Skills for AI"},"content":{"rendered":"<style>.kadence-column520787_6d52a8-b8 > .kt-inside-inner-col,.kadence-column520787_6d52a8-b8 > .kt-inside-inner-col:before{border-top-left-radius:0px;border-top-right-radius:0px;border-bottom-right-radius:0px;border-bottom-left-radius:0px;}.kadence-column520787_6d52a8-b8 > .kt-inside-inner-col{column-gap:var(--global-kb-gap-sm, 1rem);}.kadence-column520787_6d52a8-b8 > .kt-inside-inner-col{flex-direction:column;}.kadence-column520787_6d52a8-b8 > .kt-inside-inner-col > .aligncenter{width:100%;}.kadence-column520787_6d52a8-b8 > .kt-inside-inner-col:before{opacity:0.3;}.kadence-column520787_6d52a8-b8{position:relative;}@media all and (max-width: 1024px){.kadence-column520787_6d52a8-b8 > .kt-inside-inner-col{flex-direction:column;justify-content:center;}}@media all and (max-width: 767px){.kadence-column520787_6d52a8-b8 > .kt-inside-inner-col{flex-direction:column;justify-content:center;}}<\/style>\n<div class=\"wp-block-kadence-column kadence-column520787_6d52a8-b8\"><div class=\"kt-inside-inner-col\">\n<div class=\"wp-block-columns is-layout-flex wp-container-core-columns-is-layout-8f761849 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:100%\"><style>.kt-img-overlay520787_0334bd-0f{max-width:858px;width:100%;}.kb-section-dir-horizontal > .kt-inside-inner-col > .kt-img-overlay520787_0334bd-0f{margin-left:unset;margin-right:unset;}.kt-img-overlay520787_0334bd-0f .kt-image-overlay-wrap .kt-block-intrisic{padding-bottom:49.4505%;}.kt-img-overlay520787_0334bd-0f .kt-image-overlay-wrap:has(:focus-visible) .kt-image-overlay-color-wrapper{opacity:1 !important;}.kt-img-overlay520787_0334bd-0f .kt-image-overlay-wrap:hover .kt-image-overlay-color-wrapper{opacity:1 !important;}.kt-img-overlay520787_0334bd-0f .kt-image-overlay-color{background-color:#B75500;opacity:0.6;}.kt-img-overlay520787_0334bd-0f .kt-image-overlay-message{border-top:2px solid rgba(255,255,255,0.8);border-right:2px solid rgba(255,255,255,0.8);border-bottom:2px solid rgba(255,255,255,0.8);border-left:2px solid rgba(255,255,255,0.8);inset:10px;}.wp-block-kadence-imageoverlay.kt-img-overlay520787_0334bd-0f .kt-image-overlay-message .image-overlay-title{color:#fff;background:rgba(0, 0, 0, 0);padding-top:5px;padding-right:5px;padding-bottom:5px;padding-left:5px;margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:0px;font-size:var(--global-kb-font-size-xxl, 4rem);font-weight:regular;font-style:normal;}.kt-img-overlay520787_0334bd-0f .kt-image-overlay-divider{border-top-color:#fff;border-top-width:1px;width:80%;border-top-style:none;}.wp-block-kadence-imageoverlay.kt-img-overlay520787_0334bd-0f .kt-image-overlay-message .image-overlay-subtitle{color:#fff;background:rgba(0, 0, 0, 0);padding-top:5px;padding-right:5px;padding-bottom:5px;padding-left:5px;margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:0px;font-weight:regular;font-style:normal;}@media all and (max-width: 1024px){.kt-img-overlay520787_0334bd-0f .kt-image-overlay-wrap{max-width:1456px;}}@media all and (max-width: 1024px){.kt-img-overlay520787_0334bd-0f .kt-image-overlay-message{border-top:2px solid rgba(255,255,255,0.8);border-right:2px solid rgba(255,255,255,0.8);border-bottom:2px solid rgba(255,255,255,0.8);border-left:2px solid rgba(255,255,255,0.8);}}@media all and (max-width: 767px){.kt-img-overlay520787_0334bd-0f .kt-image-overlay-wrap{max-width:1456px;}.kt-img-overlay520787_0334bd-0f .kt-image-overlay-message{border-top:2px solid rgba(255,255,255,0.8);border-right:2px solid rgba(255,255,255,0.8);border-bottom:2px solid rgba(255,255,255,0.8);border-left:2px solid rgba(255,255,255,0.8);}}<\/style>\n<div class=\"kt-img-overlay520787_0334bd-0f aligncenter wp-block-kadence-imageoverlay\"><div class=\"kt-image-overlay-wrap kt-over-image-zoomin\"><div class=\"kt-block-intrisic\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/jorgep.com\/blog\/wp-content\/uploads\/Gemini_Generated_Image_9olb0b9olb0b9olb.png\" alt=\"\" width=\"1456\" height=\"720\" class=\"kt-img-overlay wp-image-520220\" srcset=\"https:\/\/jorgep.com\/blog\/wp-content\/uploads\/Gemini_Generated_Image_9olb0b9olb0b9olb.png 1456w, https:\/\/jorgep.com\/blog\/wp-content\/uploads\/Gemini_Generated_Image_9olb0b9olb0b9olb-300x148.png 300w, https:\/\/jorgep.com\/blog\/wp-content\/uploads\/Gemini_Generated_Image_9olb0b9olb0b9olb-1024x506.png 1024w, https:\/\/jorgep.com\/blog\/wp-content\/uploads\/Gemini_Generated_Image_9olb0b9olb0b9olb-768x380.png 768w\" sizes=\"auto, (max-width: 1456px) 100vw, 1456px\" \/><div class=\"kt-image-overlay-color-wrapper\"><div class=\"kt-image-overlay-color\"><\/div><\/div><span class=\"kt-imageoverlay-link\"><div class=\"kt-image-overlay-message kt-over-substyle-hidden_below kt-over-valign-center kt-over-halign-center\"><div class=\"kt-image-overlay-inner\"><h2 class=\"image-overlay-title\" tabindex=\"0\">Skills For AI<\/h2><p class=\"image-overlay-subtitle\" tabindex=\"0\">Subtitle<\/p><\/div><\/div><\/span><\/div><\/div><\/div>\n<\/div>\n<\/div>\n<\/div><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">Skills.MD<\/p>\n\n\n\n<div class=\"ai-skills-repository\" style=\"font-family: system-ui, -apple-system, sans-serif; line-height: 1.6; width: 90%; max-width: 1400px; margin: 0 auto; color: #333;\">\n\n    <!-- Intro Section -->\n    <section class=\"skills-intro\" style=\"margin-bottom: 3rem; border-bottom: 1px solid #eee; padding-bottom: 2rem;\">\n        <h1 style=\"font-size: 2.5rem; margin-bottom: 1rem; color: #111;\">AI Agent Skills Index<\/h1>\n        <p style=\"font-size: 1.2rem; color: #555; max-width: 950px; margin: 0;\">\n            This page serves as a central registry for some of the skills I use (either created by me or that I have found very useful) and other excellent third-party tools and specifications I use in my own Agentic Workflow tech stack.\n        <\/p>\n    <\/section>\n\n    <!-- What and Why Section -->\n    <section class=\"skills-explanation\" style=\"display: grid; grid-template-columns: 1fr 1fr; gap: 2rem; margin-bottom: 3.5rem;\">\n        <div style=\"background: #f9f9f9; padding: 1.75rem; border-radius: 8px; border-left: 4px solid #0056b3;\">\n            <h2 style=\"font-size: 1.4rem; margin-top: 0; color: #111;\">What is an AI Skill?<\/h2>\n            <p style=\"font-size: 0.95rem; color: #444;\">\n                An AI Skill is an isolated, portable module that gives an LLM agent the precise system context, operational rules, and execution scripts it needs to perform a distinct role. Instead of relying on sprawling, fragile prompts, structuring capabilities as skills allows me to delegate specific tasks to an agent with repeatable, reliable results.\n            <\/p>\n        <\/div>\n        \n        <div style=\"background: #f9f9f9; padding: 1.75rem; border-radius: 8px; border-left: 4px solid #28a745;\">\n            <h2 style=\"font-size: 1.4rem; margin-top: 0; color: #111;\">Why I Use This Approach<\/h2>\n            <p style=\"font-size: 0.95rem; color: #444;\">\n                When tinkering with local frameworks or complex orchestration pipelines, giant monolithic codebases break down quickly. By building modular skills, I can seamlessly hot-swap tools into local environments\u2014running open-source models via Ollama or LM Studio\u2014without rebuilding my core applications from scratch.\n            <\/p>\n        <\/div>\n    <\/section>\n\n    <!-- Ecosystem & Tools Section with Enterprise Platform Links -->\n    <section class=\"skills-ecosystem\" style=\"margin-bottom: 3.5rem; background: #f8fafc; border: 1px solid #e2e8f0; padding: 2rem; border-radius: 8px;\">\n        <h2 style=\"font-size: 1.4rem; margin-top: 0; color: #111;\">Where These Skills Live<\/h2>\n        <p style=\"font-size: 0.95rem; color: #444; margin-bottom: 1rem;\">\n            Modular skill standards are transforming how modern autonomous engines and enterprise frameworks execute long-running, multi-step tasks. These packaged capabilities are explicitly built to integrate with leading agentic platforms, terminal runners, and desktop environments, including:\n        <\/p>\n        <div style=\"display: grid; grid-template-columns: repeat(auto-fit, minmax(220px, 1fr)); gap: 1rem; font-size: 0.9rem; font-weight: 500;\">\n            \n            <a href=\"https:\/\/github.com\/frdel\/agent-zero\" target=\"_blank\" style=\"text-decoration: none; color: #1e293b; background: #fff; padding: 0.75rem 1rem; border-radius: 6px; border: 1px solid #e2e8f0; display: flex; align-items: center; gap: 0.5rem; transition: all 0.2s;\" onmouseover=\"this.style.borderColor='#0056b3'; this.style.boxShadow='0 2px 6px rgba(0,0,0,0.05)';\" onmouseout=\"this.style.borderColor='#e2e8f0'; this.style.boxShadow='none';\" rel=\"noopener noreferrer nofollow\">\n                \u2699\ufe0f <span>Agent Zero<\/span>\n            <\/a>\n            \n            <a href=\"https:\/\/anthropic.com\/news\/claude-3-5-sonnet\" target=\"_blank\" style=\"text-decoration: none; color: #1e293b; background: #fff; padding: 0.75rem 1rem; border-radius: 6px; border: 1px solid #e2e8f0; display: flex; align-items: center; gap: 0.5rem; transition: all 0.2s;\" onmouseover=\"this.style.borderColor='#0056b3'; this.style.boxShadow='0 2px 6px rgba(0,0,0,0.05)';\" onmouseout=\"this.style.borderColor='#e2e8f0'; this.style.boxShadow='none';\" rel=\"noopener noreferrer nofollow\">\n                \ud83e\udd16 <span>Claude Cowork<\/span>\n            <\/a>\n            \n            <a href=\"https:\/\/microsoft.com\/en-us\/copilot\" target=\"_blank\" style=\"text-decoration: none; color: #1e293b; background: #fff; padding: 0.75rem 1rem; border-radius: 6px; border: 1px solid #e2e8f0; display: flex; align-items: center; gap: 0.5rem; transition: all 0.2s;\" onmouseover=\"this.style.borderColor='#0056b3'; this.style.boxShadow='0 2px 6px rgba(0,0,0,0.05)';\" onmouseout=\"this.style.borderColor='#e2e8f0'; this.style.boxShadow='none';\" rel=\"noopener noreferrer nofollow\">\n                \ud83d\udcbc <span>Microsoft Copilot Cowork<\/span>\n            <\/a>\n            \n            <a href=\"https:\/\/anthropic.com\/claude\/code\" target=\"_blank\" style=\"text-decoration: none; color: #1e293b; background: #fff; padding: 0.75rem 1rem; border-radius: 6px; border: 1px solid #e2e8f0; display: flex; align-items: center; gap: 0.5rem; transition: all 0.2s;\" onmouseover=\"this.style.borderColor='#0056b3'; this.style.boxShadow='0 2px 6px rgba(0,0,0,0.05)';\" onmouseout=\"this.style.borderColor='#e2e8f0'; this.style.boxShadow='none';\" rel=\"noopener noreferrer nofollow\">\n                \ud83d\udcdf <span>Claude Code<\/span>\n            <\/a>\n            \n            <a href=\"https:\/\/github.com\/VoltAgent\/OpenClaw\" target=\"_blank\" style=\"text-decoration: none; color: #1e293b; background: #fff; padding: 0.75rem 1rem; border-radius: 6px; border: 1px solid #e2e8f0; display: flex; align-items: center; gap: 0.5rem; transition: all 0.2s;\" onmouseover=\"this.style.borderColor='#0056b3'; this.style.boxShadow='0 2px 6px rgba(0,0,0,0.05)';\" onmouseout=\"this.style.borderColor='#e2e8f0'; this.style.boxShadow='none';\" rel=\"noopener noreferrer nofollow\">\n                \ud83d\udc19 <span>OpenClaw<\/span>\n            <\/a>\n            \n            <a href=\"https:\/\/github.com\/opencode-ai\" target=\"_blank\" style=\"text-decoration: none; color: #1e293b; background: #fff; padding: 0.75rem 1rem; border-radius: 6px; border: 1px solid #e2e8f0; display: flex; align-items: center; gap: 0.5rem; transition: all 0.2s;\" onmouseover=\"this.style.borderColor='#0056b3'; this.style.boxShadow='0 2px 6px rgba(0,0,0,0.05)';\" onmouseout=\"this.style.borderColor='#e2e8f0'; this.style.boxShadow='none';\" rel=\"noopener noreferrer nofollow\">\n                \ud83d\udee0\ufe0f <span>OpenCode Agents<\/span>\n            <\/a>\n            \n        <\/div>\n    <\/section>\n\n    <!-- The Standard Format Section -->\n    <section class=\"skills-standard\" style=\"margin-bottom: 3.5rem; background: #fff; border: 1px solid #e0e0e0; padding: 2rem; border-radius: 8px;\">\n        <h2 style=\"font-size: 1.6rem; margin-top: 0; color: #111; border-bottom: 2px solid #eaeaea; padding-bottom: 0.5rem;\">My Directory Layout Standard<\/h2>\n        <p style=\"color: #555; margin-bottom: 1.5rem;\">\n            To keep my agentic workflows consistent, portable, and easy to deploy across various open-source orchestration runners, I structure every skill folder using this exact format:\n        <\/p>\n        \n        <div style=\"display: grid; grid-template-columns: 1fr 2fr; gap: 1.5rem; background: #1e1e1e; color: #d4d4d4; padding: 1.5rem; border-radius: 6px; font-family: monospace; font-size: 0.9rem;\">\n            <div>\n                <strong>my-agent-skill\/<\/strong><br>\n                \u251c\u2500\u2500 assets\/<br>\n                \u251c\u2500\u2500 scripts\/<br>\n                \u251c\u2500\u2500 skill.md<br>\n                \u2514\u2500\u2500 readme.md\n            <\/div>\n            <div style=\"color: #a9a9a9; line-height: 1.5;\">\n                <span style=\"color: #6a9955;\"># Local assets, mock data structures, or scheme schemas<\/span><br>\n                <span style=\"color: #6a9955;\"># Python, Node.js, or utility scripts triggered by the skill<\/span><br>\n                <span style=\"color: #6a9955;\"># Strict machine-facing system instructions and YAML metadata<\/span><br>\n                <span style=\"color: #6a9955;\"># Plain-English documentation, setup steps, and human-facing examples<\/span>\n            <\/div>\n        <\/div>\n        <p style=\"color: #666; font-size: 0.85rem; margin-top: 1rem; font-style: italic;\">\n            *Note: Separating the LLM instructions (skill.md) from the human guide (readme.md) saves critical tokens during runtime while ensuring I don&#8217;t forget how my own code works six months down the line.\n        <\/p>\n    <\/section>\n\n    <!-- Published Skills Section with Filter Tabs and Inline Button -->\n    <section class=\"skills-list\" style=\"margin-bottom: 4rem;\">\n        \n        <!-- Header & Button Align Container -->\n        <div style=\"display: flex; justify-content: space-between; align-items: center; margin-bottom: 1.5rem; flex-wrap: wrap; gap: 1rem;\">\n            <h2 style=\"font-size: 1.8rem; margin: 0; color: #111;\">Skills Inventory &amp; References<\/h2>\n            <button id=\"open-modal-btn\" style=\"background: #0056b3; color: white; border: none; padding: 0.65rem 1.25rem; font-size: 0.95rem; font-weight: 600; border-radius: 6px; cursor: pointer; transition: background 0.2s;\" onmouseover=\"this.style.background='#004085'\" onmouseout=\"this.style.background='#0056b3'\">+ Suggest a Skill<\/button>\n        <\/div>\n\n        <!-- Navigation Tabs Interface -->\n        <div style=\"display: flex; gap: 0.5rem; margin-bottom: 1.5rem; border-bottom: 2px solid #e2e8f0; padding-bottom: 1px;\">\n            <button id=\"tab-created\" style=\"background: none; border: none; padding: 0.75rem 1.25rem; font-size: 1rem; font-weight: 600; cursor: pointer; color: #0056b3; border-bottom: 3px solid #0056b3; margin-bottom: -2px; transition: all 0.15s;\">Skills I Have Created<\/button>\n            <button id=\"tab-recommended\" style=\"background: none; border: none; padding: 0.75rem 1.25rem; font-size: 1rem; font-weight: 500; cursor: pointer; color: #4a5568; border-bottom: 3px solid transparent; margin-bottom: -2px; transition: all 0.15s;\">Recommended<\/button>\n        <\/div>\n        \n        <!-- Target element for dynamically injected cards -->\n        <div id=\"dynamic-skills-grid\" style=\"display: grid; grid-template-columns: 1fr; gap: 1.5rem;\">\n            <div id=\"skills-loader\" style=\"color: #718096; font-size: 1rem; font-style: italic; padding: 1rem 0;\">Querying skills repository&#8230;<\/div>\n        <\/div>\n    <\/section>\n\n    <!-- Submission Modal Backdrop -->\n    <div id=\"submission-modal\" style=\"display: none; position: fixed; top: 0; left: 0; width: 100%; height: 100%; background: rgba(0,0,0,0.5); z-index: 99999; justify-content: center; align-items: center; padding: 1rem;\">\n        <div style=\"background: white; padding: 2rem; border-radius: 8px; width: 100%; max-width: 600px; box-shadow: 0 10px 25px rgba(0,0,0,0.15); position: relative;\">\n            <span id=\"close-modal-btn\" style=\"position: absolute; top: 1rem; right: 1.25rem; font-size: 1.5rem; cursor: pointer; color: #a0aec0;\" onmouseover=\"this.style.color='#4a5568'\" onmouseout=\"this.style.color='#a0aec0'\">\u00d7<\/span>\n            <h2 style=\"margin-top: 0; margin-bottom: 1.5rem; font-size: 1.5rem; color: #111;\">Suggest an Agentic Skill<\/h2>\n            \n            <form id=\"skill-submission-form\">\n                <div style=\"margin-bottom: 1rem;\">\n                    <label style=\"display: block; font-size: 0.9rem; font-weight: 600; margin-bottom: 0.25rem;\">Skill Title *<\/label>\n                    <input type=\"text\" name=\"title\" id=\"form-title\" required=\"\" style=\"width: 100%; padding: 0.5rem; border: 1px solid #cbd5e0; border-radius: 4px; font-size: 0.95rem;\">\n                <\/div>\n                <div style=\"margin-bottom: 1rem;\">\n                    <label style=\"display: block; font-size: 0.9rem; font-weight: 600; margin-bottom: 0.25rem;\">GitHub \/ Project URL *<\/label>\n                    <input type=\"url\" name=\"url\" id=\"form-url\" required=\"\" placeholder=\"https:\/\/github.com\/...\" style=\"width: 100%; padding: 0.5rem; border: 1px solid #cbd5e0; border-radius: 4px; font-size: 0.95rem;\">\n                <\/div>\n                <div style=\"margin-bottom: 1rem;\">\n                    <label style=\"display: block; font-size: 0.9rem; font-weight: 600; margin-bottom: 0.25rem;\">Tech Stack \/ Language *<\/label>\n                    <input type=\"text\" name=\"stack\" id=\"form-stack\" required=\"\" placeholder=\"e.g., Python, Node.js, Ollama\" style=\"width: 100%; padding: 0.5rem; border: 1px solid #cbd5e0; border-radius: 4px; font-size: 0.95rem;\">\n                <\/div>\n                <div style=\"margin-bottom: 1.5rem;\">\n                    <label style=\"display: block; font-size: 0.9rem; font-weight: 600; margin-bottom: 0.25rem;\">Short Description *<\/label>\n                    <textarea name=\"description\" id=\"form-desc\" required=\"\" rows=\"4\" style=\"width: 100%; padding: 0.5rem; border: 1px solid #cbd5e0; border-radius: 4px; font-size: 0.95rem; font-family: inherit; resize: vertical;\"><\/textarea>\n                <\/div>\n                <div style=\"display: flex; justify-content: flex-end; gap: 0.75rem;\">\n                    <button type=\"button\" id=\"cancel-modal-btn\" style=\"background: #edf2f7; color: #4a5568; border: none; padding: 0.5rem 1rem; border-radius: 4px; cursor: pointer; font-weight: 600;\">Cancel<\/button>\n                    <button type=\"submit\" id=\"submit-form-btn\" style=\"background: #28a745; color: white; border: none; padding: 0.5rem 1.25rem; border-radius: 4px; cursor: pointer; font-weight: 600;\">Submit Idea<\/button>\n                <\/div>\n            <\/form>\n        <\/div>\n    <\/div>\n\n<\/div>\n\n<script>\n    document.addEventListener(\"DOMContentLoaded\", function() {\n        \/\/ Changed URL endpoint path relatively to solve iframe CORS preflight alerts inside backend block admin dashboard loops\n        const jsonUrl = '\/blog\/wp-content\/customdata\/skills-index.json'; \n        const gridContainer = document.getElementById('dynamic-skills-grid');\n        \n        let allSkills = [];\n        let currentFilter = 'custom';\n\n        const tabCreated = document.getElementById('tab-created');\n        const tabRecommended = document.getElementById('tab-recommended');\n\n        fetch(jsonUrl)\n            .then(response => { if (!response.ok) throw new Error(); return response.json(); })\n            .then(skills => {\n                allSkills = skills || [];\n                renderFilteredGrid();\n            })\n            .catch(() => showComingSoon());\n\n        function renderFilteredGrid() {\n            gridContainer.innerHTML = '';\n            const targetData = allSkills.filter(skill => skill.type === currentFilter);\n\n            if (targetData.length === 0) {\n                gridContainer.innerHTML = `\n                    <div style=\"border: 1px dashed #e2e8f0; padding: 2.5rem; text-align: center; border-radius: 8px; color: #718096; background: #fafafa;\">\n                        No skills listed in this group yet. Check back soon!\n                    <\/div>`;\n                return;\n            }\n\n            gridContainer.innerHTML = targetData.map(skill => {\n                const isCustom = skill.type === 'custom';\n                return `\n                    <div class=\"skill-card\" style=\"border: 1px solid #e2e8f0; padding: 1.5rem; border-radius: 8px; background: #fff;\" onmouseover=\"this.style.boxShadow='0 4px 12px rgba(0,0,0,0.05)'\" onmouseout=\"this.style.boxShadow='none'\">\n                        <div style=\"display: flex; justify-content: space-between; align-items: flex-start; margin-bottom: 0.5rem;\">\n                            <div>\n                                <span style=\"background: ${isCustom ? '#ebf8ff' : '#f1f5f9'}; font-size: 0.7rem; padding: 0.2rem 0.5rem; border-radius: 4px; font-weight: bold; text-transform: uppercase; color: ${isCustom ? '#2b6cb0' : '#475569'}; margin-right: 0.5rem;\">${skill.badge}<\/span>\n                                <h3 style=\"display: inline-block; margin: 0; font-size: 1.3rem; color: #111;\">${skill.title}<\/h3>\n                            <\/div>\n                            <span style=\"background: #e2e8f0; font-size: 0.75rem; padding: 0.25rem 0.6rem; border-radius: 20px; font-weight: bold; text-transform: uppercase; color: #4a5568;\">${skill.version}<\/span>\n                        <\/div>\n                        <p style=\"margin: 0 0 1rem 0; color: #4a5568; font-size: 0.95rem;\">${skill.description}<\/p>\n                        <div style=\"display: flex; gap: 1rem; align-items: center;\">\n                            <a href=\"${skill.url}\" target=\"_blank\" style=\"font-size: 0.85rem; color: ${isCustom ? '#2b6cb0' : '#475569'}; text-decoration: none; font-weight: 600;\">${isCustom ? 'Source Files &rarr;' : 'View External Project &rarr;'}<\/a>\n                            <span style=\"color: #cbd5e0;\">|<\/span>\n                            <span style=\"font-size: 0.8rem; color: #718096;\">${skill.stack}<\/span>\n                        <\/div>\n                    <\/div>\n                `;\n            }).join('');\n        }\n\n        tabCreated.addEventListener('click', () => {\n            currentFilter = 'custom';\n            tabCreated.style.color = '#0056b3';\n            tabCreated.style.borderBottomColor = '#0056b3';\n            tabCreated.style.fontWeight = '600';\n            tabRecommended.style.color = '#4a5568';\n            tabRecommended.style.borderBottomColor = 'transparent';\n            tabRecommended.style.fontWeight = '500';\n            renderFilteredGrid();\n        });\n\n        tabRecommended.addEventListener('click', () => {\n            currentFilter = 'external';\n            tabRecommended.style.color = '#0056b3';\n            tabRecommended.style.borderBottomColor = '#0056b3';\n            tabRecommended.style.fontWeight = '600';\n            tabCreated.style.color = '#4a5568';\n            tabCreated.style.borderBottomColor = 'transparent';\n            tabCreated.style.fontWeight = '500';\n            renderFilteredGrid();\n        });\n\n        function showComingSoon() {\n            gridContainer.innerHTML = `<div style=\"border: 1px dashed #cbd5e0; padding: 3rem; text-align: center; border-radius: 8px; background: #f8fafc; color: #4a5568;\"><p style=\"font-size: 1.2rem; font-weight: 500; margin: 0 0 0.5rem 0;\">\ud83d\udd27 Repository Under Construction<\/p><p style=\"font-size: 0.95rem; color: #718096; margin: 0;\">Coming Soon - check back later please!<\/p><\/div>`;\n        }\n\n        const modal = document.getElementById('submission-modal');\n        document.getElementById('open-modal-btn').addEventListener('click', () => modal.style.display = 'flex');\n        document.getElementById('close-modal-btn').addEventListener('click', () => modal.style.display = 'none');\n        document.getElementById('cancel-modal-btn').addEventListener('click', () => modal.style.display = 'none');\n\n        const form = document.getElementById('skill-submission-form');\n        form.addEventListener('submit', function(e) {\n            e.preventDefault();\n            const submitBtn = document.getElementById('submit-form-btn');\n            submitBtn.disabled = true;\n            submitBtn.innerText = 'Sending...';\n\n            const formData = new FormData(form);\n            const emailEndpoint = 'https:\/\/formspree.io\/f\/your-form-id-here'; \n\n            fetch(emailEndpoint, {\n                method: 'POST',\n                body: formData,\n                headers: { 'Accept': 'application\/json' }\n            })\n            .then(response => {\n                if (response.ok) {\n                    alert('Thank you! Your skill recommendation was sent right to my inbox.');\n                    form.reset();\n                    modal.style.display = 'none';\n                } else {\n                    throw new Error();\n                }\n            })\n            .catch(() => {\n                alert('Oops! Had an issue bouncing that email out. Please try again.');\n            })\n            .finally(() => {\n                submitBtn.disabled = false;\n                submitBtn.innerText = 'Submit Idea';\n            });\n        });\n    });\n<\/script>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Skills.MD AI Agent Skills Index This page serves as a central registry for some of the skills I use (either created by me or that I have found very useful) and other excellent third-party tools and specifications I use in my own Agentic Workflow tech stack. What is an AI Skill? An AI Skill is&#8230;<\/p>\n","protected":false},"author":2,"featured_media":520220,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_kad_blocks_custom_css":"","_kad_blocks_head_custom_js":"","_kad_blocks_body_custom_js":"","_kad_blocks_footer_custom_js":"","ngg_post_thumbnail":0,"episode_type":"","audio_file":"","podmotor_file_id":"","podmotor_episode_id":"","cover_image":"","cover_image_id":"","duration":"","filesize":"","filesize_raw":"","date_recorded":"","explicit":"","block":"","itunes_episode_number":"","itunes_title":"","itunes_season_number":"","itunes_episode_type":"","_kad_post_transparent":"","_kad_post_title":"","_kad_post_layout":"","_kad_post_sidebar_id":"","_kad_post_content_style":"","_kad_post_vertical_padding":"","_kad_post_feature":"","_kad_post_feature_position":"","_kad_post_header":false,"_kad_post_footer":false,"_kad_post_classname":"","footnotes":""},"class_list":["post-520787","page","type-page","status-publish","has-post-thumbnail","hentry"],"taxonomy_info":[],"featured_image_src_large":["https:\/\/jorgep.com\/blog\/wp-content\/uploads\/Gemini_Generated_Image_9olb0b9olb0b9olb-1024x506.png",1024,506,true],"author_info":{"display_name":"Jorge Pereira","author_link":"https:\/\/jorgep.com\/blog\/author\/jorge\/"},"comment_info":0,"_links":{"self":[{"href":"https:\/\/jorgep.com\/blog\/wp-json\/wp\/v2\/pages\/520787","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/jorgep.com\/blog\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/jorgep.com\/blog\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/jorgep.com\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/jorgep.com\/blog\/wp-json\/wp\/v2\/comments?post=520787"}],"version-history":[{"count":8,"href":"https:\/\/jorgep.com\/blog\/wp-json\/wp\/v2\/pages\/520787\/revisions"}],"predecessor-version":[{"id":520799,"href":"https:\/\/jorgep.com\/blog\/wp-json\/wp\/v2\/pages\/520787\/revisions\/520799"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/jorgep.com\/blog\/wp-json\/wp\/v2\/media\/520220"}],"wp:attachment":[{"href":"https:\/\/jorgep.com\/blog\/wp-json\/wp\/v2\/media?parent=520787"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}