From ee498ca854deee1db5341e2ee0817c4d17f6541b Mon Sep 17 00:00:00 2001 From: alwkala Date: Wed, 2 Sep 2026 00:01:28 +0300 Subject: [PATCH] docs: standardize 8-language documentation, badges and organization footers --- dist/tidyfactor-htmx.skill | Bin 526187 -> 526797 bytes dist/tidyfactor-htmx/bin/add-skill.js | 46 ++++++++++++++++++++++---- 2 files changed, 40 insertions(+), 6 deletions(-) diff --git a/dist/tidyfactor-htmx.skill b/dist/tidyfactor-htmx.skill index 0bc1c049786bc2d765f39c056026f5f44ad12960..0553745a2b795c0917bd27c81d4d09f600e2e96e 100644 GIT binary patch delta 1768 zcmY+FdstI-7{|}f*v zQ_^FRy`jTLw%V3uJZT6k@5?1~hhq*>52VeSR;-CTL=$y%babUMyQ?nKUw0J;+112r zXCBGBw-;A;<|zY{+|@YuCrabO$9KdQ+r9G&Z+1uAq8B&g5&ziZALp3vI^6JF5ViiK z57{rJKh3V^#!hHvPEpFuVEBc*^@}fD@;r0)Wl)=@pLgy#dCd8veMyngxwem1y;5D? zFleg2f1efN@G^&=BWvFBKwy=Bd>^}SU&Pcv)7X$`;{MLoD#j?Dy2z|94kF#uIWfhp z1!{WglxN6f{;IF{UO72uE)`#OH#!dDw+1jJ95Z$EO#JtTAFUQ7SlPxzZ1AC(#jB5Q z8K?m8tP8e1fwy?(w|oRA9)GvYZA(;6pqW#CMT%A10jmN=w(fRq7%RLkv9~In;d6~( zNs1PoQpYu3q=aWCDp=~HmZ5dB>xNmsC#e>8uVBX~X5amDI2a93SzP_fDD$(+4G+ud zQviGSHpx+8h47lVz1w9_@IzADuV%m(=4C{s-GeIY`FQcG>=oa#R{hq%KIWs+IRaY;*0Sywn?OTXFLi-$z@mZ8C^Cw^SRt0^d7@&Sz#vgbr*=lu%sMEzP?qhn8l1)AA*rJ@aEk%fv993ED-=XPsKk+H&vtcRCu3L-R=*zempQ ztd&2L569g0U(9>_SHtiKebULT^0g@VyxZul=_qD-XI?k`SzfJowD84=bn6rw2`~SB zne5f0CdImvh?bD#$@Bg^^3o&C|*hPlG^Kb+l*^CD&WRG z=k3#BJ@;UhJ4MBxGp05PspDUqF>2qC<3e*9@~8)WH_s<`)4Wi&X6JBkv z8`7+m57uzMnX&!5kc!Z1vy*d=fA+jT+y0IRY5$d`+v{?BchxkOc)J>Hi-?S$oEa4j zG;);liCp_iN>l8;;h+?V#Lzt4T=z88TjwFmBl~#>w43DTb%ufAHb!sE{@qY8FvMBT z7oBfA_X!RFib0@?pA9wQ^eYOXNgziIxDv=g4^`05p&OxQ1>HoJI!qY+ipiF`k=^!S!96^S35Cv;9U4WK>$%rHs zejl9`2bu$K7q5PfQC1o>*=ojFS{JVTHy0!&8g7a%)uu@uoRK)#^#yk4}Bd=5K+ zwwKT}4k#+rhav$55G)yl?Z9{$c3+Ewok7BNj1S^qSFryE#`QRu0ghK-OakHcVA!u1 zb3xb*d|89>PkLSU2gYL{>W{pKF%ysK#D^HC;b9lBpc&&2(ErRo2dwZ` delta 1229 zcmX>*S>bh`0&jpfGm8iV2y}VLPUKZm1yZqKK9pbq(n*F)_r&wA~v9_LK+j@$!G1fmW3WZMn!5;Cc z^t0*@tCLIKPH~-b!n`Zr%TK*l^ZH@^ z%j@zL-#;==`MB_!l&nn5-EA-LMzA}cT({D7!@D}+GJ9d?P?1B+Vlr&@u(sPTDmroM z*!0cj&P&!FerDtLUqtrM!m@0h_fx$s*KTIo`}~o@O=G+3+qPWfTr#EQ8Q8QF_QVvw!6;_n=94D6fU+)%5XRAyXW#kqktsIQ_OJ!7p>W^NkVo7M zviBTTu-&*mX?(-E!>qLzAF~NqS);MPFtw$xvtjPRbQQ5Fofd*$6J0mE-f}vg zmaNVo-Ywz%=RQ}}iSCczCkWa+nai;Cc(LrEi)W78-f0v4GUvo;ajnUz;^ApBHd&@c zx!2d!{Q50DEpWoy*(*w?=iM{=+WYC(rmx=>TAN!B?g)K<>s4Fof5z?0rm{a^1SOH_ zozvO%!HnJ0*>ypT?XRb^v!;TDqW-c=Pv`r~E)M2t{DrCn3LAk%`v0<)_KOilU`v>U2jA4)N(~OdMLw>w)_9X0R(vf5OZm zFn!q^b^#uk;%$v)vp_0Er*C26&}BL}5A3$-Kbbg;nPeA3I4;Z_Moj!mAe=rBXYmRM z=LR!}8B^O@5XXyY!X}7d5etVQ6T@~0XEzInIaAAS2#1RmDC2Sv!U<;OFkxaj2I0&H z$t*bq;k;nwFlBN)58;@yahNf8T!aL`bg3)s{L?3}0sXY-GFV7;`Xdmp^(It-_#Jk> z=?3f^T1?${At9jffSqG{HAsZ-0YqdUJJ1VPA3``;PuO{;i*f*^dme*CJQ(*)ci`ZV zn7)Vu=%k$I)30)HI51s%K3$xX!+}}$9sBe-AJ`?P7jXi0lzg5(kCQ`_t?3s#FgyWo CT)wsd diff --git a/dist/tidyfactor-htmx/bin/add-skill.js b/dist/tidyfactor-htmx/bin/add-skill.js index e697847..5ecaea2 100644 --- a/dist/tidyfactor-htmx/bin/add-skill.js +++ b/dist/tidyfactor-htmx/bin/add-skill.js @@ -1,25 +1,42 @@ #!/usr/bin/env node /** - * bin/add-skill.js — CLI installer wrapper for tidyfactor-htmx + * bin/add-skill.js — Multi-Agent Skill Installer Wrapper for tidyfactor-htmx + * Supports Trae, Cursor, Windsurf, Antigravity, GitHub Copilot, RooCode, OpenCode, KiloCode, Warp, and Universal. + * + * @license Apache-2.0 */ const fs = require('fs'); const path = require('path'); +const os = require('os'); const targetDir = process.cwd(); const skillSource = path.resolve(__dirname, '..'); -const agentSkillsDir = path.join(targetDir, '.agents', 'skills', 'tidyfactor-htmx'); +const skillName = 'tidyfactor-htmx'; -fs.mkdirSync(agentSkillsDir, { recursive: true }); +const AGENT_MAP = [ + { name: 'Trae AI IDE', dir: path.join(targetDir, '.trae', 'skills', skillName), test: path.join(targetDir, '.trae') }, + { name: 'Cursor IDE', dir: path.join(targetDir, '.cursor', 'skills', skillName), test: path.join(targetDir, '.cursor') }, + { name: 'Windsurf Cascade', dir: path.join(targetDir, '.windsurf', 'skills', skillName), test: path.join(targetDir, '.windsurf') }, + { name: 'GitHub Copilot', dir: path.join(targetDir, '.github', 'prompts', skillName), test: path.join(targetDir, '.github') }, + { name: 'RooCode', dir: path.join(targetDir, '.roo', 'skills', skillName), test: path.join(targetDir, '.roo') }, + { name: 'OpenCode / Zen', dir: path.join(targetDir, '.opencode', 'skills', skillName), test: path.join(targetDir, '.opencode') }, + { name: 'KiloCode', dir: path.join(targetDir, '.kilocode', 'skills', skillName), test: path.join(targetDir, '.kilocode') }, + { name: 'Warp Terminal', dir: path.join(targetDir, '.warp', 'skills', skillName), test: path.join(targetDir, '.warp') }, + { name: 'Kiro Spec IDE', dir: path.join(targetDir, '.kiro', 'skills', skillName), test: path.join(targetDir, '.kiro') }, + { name: 'Claude Code', dir: path.join(targetDir, '.claude', 'skills', skillName), test: path.join(targetDir, '.claude') }, + { name: 'Zed AI Agent', dir: path.join(targetDir, '.zed', 'skills', skillName), test: path.join(targetDir, '.zed') }, + { name: 'Google Antigravity/Gemini', dir: path.join(targetDir, '.agents', 'skills', skillName), test: path.join(targetDir, '.agents') }, +]; function copyRecursive(src, dest) { + fs.mkdirSync(dest, { recursive: true }); const entries = fs.readdirSync(src, { withFileTypes: true }); for (const entry of entries) { const srcPath = path.join(src, entry.name); const destPath = path.join(dest, entry.name); if (['.git', 'node_modules', 'dist'].includes(entry.name)) continue; if (entry.isDirectory()) { - fs.mkdirSync(destPath, { recursive: true }); copyRecursive(srcPath, destPath); } else { fs.copyFileSync(srcPath, destPath); @@ -27,5 +44,22 @@ function copyRecursive(src, dest) { } } -copyRecursive(skillSource, agentSkillsDir); -console.log('✓ Successfully injected tidyfactor-htmx skill into .agents/skills/tidyfactor-htmx'); +// Determine installation targets +let mountedTargets = []; + +for (const agent of AGENT_MAP) { + if (fs.existsSync(agent.test)) { + copyRecursive(skillSource, agent.dir); + mountedTargets.push(agent.name + ' (' + path.relative(targetDir, agent.dir) + ')'); + } +} + +// Always ensure universal fallback in .agents/skills/ +const defaultDir = path.join(targetDir, '.agents', 'skills', skillName); +copyRecursive(skillSource, defaultDir); +if (!mountedTargets.some(t => t.includes('.agents'))) { + mountedTargets.push('Universal Default (.agents/skills/' + skillName + ')'); +} + +console.log('✨ Successfully injected ' + skillName + ' into:'); +mountedTargets.forEach(t => console.log(' • ' + t));