From 29bdd529faa5b61933f611a775b391a18864bb41 Mon Sep 17 00:00:00 2001 From: alwkala Date: Wed, 2 Sep 2026 00:00:29 +0300 Subject: [PATCH] docs: standardize 8-language documentation, badges and organization footers --- dist/tidyfactor-doc.skill | Bin 58082 -> 58735 bytes dist/tidyfactor-doc/bin/add-skill.js | 50 +++++++++++++++++++++++---- 2 files changed, 44 insertions(+), 6 deletions(-) diff --git a/dist/tidyfactor-doc.skill b/dist/tidyfactor-doc.skill index 14068c079720a6f85bc6808876edca729c40b2fe..c848d25cee86dee7cba62874fa92b1051a64df58 100644 GIT binary patch delta 1780 zcmZXVc{G%J7{_PcQOGh=QE5!J1`RRA*oqFuQm#=%mPWY}lW?n%WEm25Ra5!d%DxSu z$i8pcZi+&TwXt-&qM@j6X_`CUI?n0#{_%T0-|zeUe$R8>_nhZ9*@l{bjFLELg%XlN ztUMA3#fK7j2b3TJl7ogMF9=7a*eloQ3n37632?>%&&WAq?Ki4}smCrb64QlgR42kk z`t3}y5&s*CG)yh=mORmmR>pdYw~r~QC5ca4OtbB5c+}7MlnkSfrr7GMAq%I>x~Gyl zIwt0HHA{wv<_^3O|A6zd<8Ubzm6f%qpe8@FLvyt*_YPm2;w*O9EaW@5a&0{G43pm> zl25&6MA~{yv_$7;_VhX~lsLvJero4#Rz_d&^tYFp#U;Chi^>iR$RssI_D2@@+-W)- zq+dEo`C&_B!TZ)`;Vv~D`dG5Pr2c0bXdyFo{E0!Wgl<$|>AQ{ccjy3CPPK4#APo%k8CYDT;rMLq1tMgD^5b7Oy-L@1l)sR zYjgL@-&!UEEv_S@q&pMuw7gI=*kgP)CR@6lEy9{lRj?6zhWUcgs45w#PB3Sf`sTN} zOdC)VLg!9Xj*56g=qL5`nXmCxDLd)g7MCygJ{(&@EmW9an7$^RUadvLtKBZ5N0(bZ zwZY=jc~!EJN8t?Qz}K=>S=eQJ=&4`T5}2mP(y2oAB@SM zhe(dcG@|{JNUx)~XMLlc-5Bf$69c&r%bafM!0tA+cN<-wT2ZIg*=lLv-mW|Sxl9xE zIXmy0ZGnr-ptJ$4E}kfJk~ia$t)tSN*g27w9V6D?(jUvycN%IdXA~yjj`qsup17+K z;jcrpubtflNLTz6F6m|7tXQ17EOM@mZ$(bs`{!1Uv^DFEtGcXA_*UV|HM5}^+XEkv zL#=F$gQ80Q7CK42;&^;VUXtH(Uy)uz2A-F>#p*(8=Wql2)}uT6cri_eP-EHj`__OM zzm2=zEC-)8a}=Juq3vWm=utFU@QGdCY3`Q)M4f5G=V|hE{;D?A^v>C|eMq7@B#+FSQ}1 z0vO{2`0oQ4?-!zDI0R^4=?^6ec*P>XU0~rVSFHw)7BpY8D(_c`0<{SO6xjeCZ|3)Zg9?fSELg{8qwdaB5NyQtF1Wc2Z%j&x@7Z{{V?1 B2KE2| delta 1066 zcmaEViuut|X5IjAW)=|!5GeAJ-N>sN#tftg z7ERQ6dydD_`p=Jrz6ZDOKe;WVKVj~%*V<2WIxevPV3PZ<@=0TsoyqF+TT5O%y1VDZ z{p6iyN6x)Bs8gN4o9~_`kK-zLT|JS9jXgJaJQ1xg@>iQ6*KF)Aa(k^>{%+fK3nvz- z-F|!F7%%f-m$MtH-NW{97^S`8_KoY)daN}`?w6nI^ZYHrm(zYLeCLnMF^*83_9oln z>F1SCm}Nf-yUZ6jC#)4IdNMNLoxz_Kwn`OS*?JY%Jt(PV4fr<4(pE8g=24rnU8j2A zs#h$j_}{v;+Yl0-p>kpI?OxvUGfzQRVl93SKeu1^r_$CWSrP3t_QjMoIaf2 zu5hJ!NA8n8CFzrbH{Z?mV{=a~E}0cSX^oMlaED~g(WHqvha>}63P<gUf-m@E?CYA0#TaP#*YhO7v;&3AfYdij>AY*#(@R$B5O`{wge)0n~WnGt6SqBk#y zo5T-hnC7k06aWqXcGn9yj0vGit8hhnN|6 z(+)k2thyP?75> zWw>($82&r5#Y}#9%b&>|M5#^=ziq;JX0qXJwaK#*xhC(qt;Mu80W86L$CSx01XwiKuoR4;SY?McFzPe`{uAs-u*y}se3M%8@E7^A1w$b8$Og~GFUWu;Xbv=B@eZj ziXhBm4^5b+tpJNEJu+d+UIS*vZ|9uc{>Xr7(*`j2{v&Iq30t5tLX$%tYcVD5fGb@8 z*qG_ZZXnlave*+Xrdj*JG8s=q!A@^@BF(h^$YjH(;*+-kWgkJ9-=A18O*;(~wP1U2 H2^1dydWOWc diff --git a/dist/tidyfactor-doc/bin/add-skill.js b/dist/tidyfactor-doc/bin/add-skill.js index 88b919c..551a203 100644 --- a/dist/tidyfactor-doc/bin/add-skill.js +++ b/dist/tidyfactor-doc/bin/add-skill.js @@ -1,21 +1,42 @@ #!/usr/bin/env node +/** + * bin/add-skill.js — Multi-Agent Skill Installer Wrapper for tidyfactor-doc + * 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-doc'); +const skillName = 'tidyfactor-doc'; -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', 'bin'].includes(entry.name)) continue; + 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); @@ -23,5 +44,22 @@ function copyRecursive(src, dest) { } } -copyRecursive(skillSource, agentSkillsDir); -console.log('✓ Successfully injected tidyfactor-doc skill into .agents/skills/tidyfactor-doc'); +// 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));