|
161 | 161 | } |
162 | 162 |
|
163 | 163 | /* ── Link ── */ |
| 164 | + .bundle-link { |
| 165 | + color: #818cf8; |
| 166 | + text-decoration: none; |
| 167 | + font-weight: 500; |
| 168 | + } |
| 169 | + |
164 | 170 | .card-link { |
165 | 171 | display: inline-flex; |
166 | 172 | align-items: center; |
|
191 | 197 | <div class="badge">Skills Catalog</div> |
192 | 198 | <h1>Claude Security Skills</h1> |
193 | 199 | <p class="subtitle">Security-focused code-generation skills for Claude Code assistants</p> |
| 200 | + <p class="subtitle"><a class="bundle-link" href="skills.zip" target="_blank" rel="noopener noreferrer">Download the bundle</a></p> |
194 | 201 | </header> |
195 | 202 |
|
196 | 203 | <div style="text-align:center"> |
197 | 204 | <span class="skill-count"> |
198 | | - <strong><xsl:value-of select="count(available_skills/skill)"/></strong> skills available (<a href="skills.zip">download the bundle</a>) |
| 205 | + <strong><xsl:value-of select="count(available_skills/skill)"/></strong> skills available. |
199 | 206 | </span> |
200 | 207 | </div> |
201 | | - |
202 | 208 |
|
203 | 209 | <div class="grid"> |
204 | 210 | <xsl:apply-templates select="available_skills/skill"/> |
205 | 211 | </div> |
206 | 212 |
|
207 | 213 | <footer> |
208 | | - Generated from <code>skills_catalog.xml</code> · |
209 | | - <xsl:value-of select="count(available_skills/skill)"/> entries |
| 214 | + Generated from <a class="bundle-link" href="https://github.com/righettod/code-assistant-skills-security-utils/blob/main/skills_catalog.xml">skills_catalog.xml</a>· |
210 | 215 | </footer> |
211 | 216 | </body> |
212 | 217 | </html> |
|
217 | 222 | ═══════════════════════════════════════════════ --> |
218 | 223 | <xsl:template match="skill"> |
219 | 224 | <!-- Pick an emoji icon based on the skill name keywords --> |
220 | | - <xsl:variable name="name" select="normalize-space(n)"/> |
| 225 | + <xsl:variable name="skname" select="normalize-space(name)"/> |
221 | 226 |
|
222 | 227 | <div class="card"> |
223 | 228 | <div class="card-header"> |
224 | 229 | <div class="icon"> |
225 | 230 | <xsl:choose> |
226 | | - <xsl:when test="contains($name,'xml')">📄</xsl:when> |
227 | | - <xsl:when test="contains($name,'pdf')">📑</xsl:when> |
228 | | - <xsl:when test="contains($name,'digest') or contains($name,'hash')">🔑</xsl:when> |
229 | | - <xsl:when test="contains($name,'log')">📋</xsl:when> |
230 | | - <xsl:when test="contains($name,'image')">🖼️</xsl:when> |
231 | | - <xsl:when test="contains($name,'email')">✉️</xsl:when> |
232 | | - <xsl:when test="contains($name,'csv')">📊</xsl:when> |
233 | | - <xsl:when test="contains($name,'archive')">🗜️</xsl:when> |
| 231 | + <xsl:when test="contains($skname,'xml')">📄</xsl:when> |
| 232 | + <xsl:when test="contains($skname,'pdf')">📑</xsl:when> |
| 233 | + <xsl:when test="contains($skname,'digest') or contains($skname,'hash')">🔑</xsl:when> |
| 234 | + <xsl:when test="contains($skname,'log')">📋</xsl:when> |
| 235 | + <xsl:when test="contains($skname,'image')">🖼️</xsl:when> |
| 236 | + <xsl:when test="contains($skname,'email')">✉️</xsl:when> |
| 237 | + <xsl:when test="contains($skname,'csv')">📊</xsl:when> |
| 238 | + <xsl:when test="contains($skname,'archive')">📦</xsl:when> |
234 | 239 | <xsl:otherwise>🛡️</xsl:otherwise> |
235 | 240 | </xsl:choose> |
236 | 241 | </div> |
237 | 242 | <div> |
238 | | - <div class="card-title"><xsl:value-of select="$name"/></div> |
| 243 | + <div class="card-title"><xsl:value-of select="$skname"/></div> |
239 | 244 | <div class="card-subtitle">skill</div> |
240 | 245 | </div> |
241 | 246 | </div> |
|
0 commit comments