From 3536646896c2dae8e5660ba520a6f45fa370695d Mon Sep 17 00:00:00 2001 From: alwkala Date: Wed, 2 Sep 2026 00:02:44 +0300 Subject: [PATCH] docs: standardize 8-language documentation, badges and organization footers --- dist/tidyfactor-next.skill | Bin 1193546 -> 1194155 bytes dist/tidyfactor-next/bin/add-skill.js | 46 ++++++++++++++++++++++---- 2 files changed, 40 insertions(+), 6 deletions(-) diff --git a/dist/tidyfactor-next.skill b/dist/tidyfactor-next.skill index 9f5cf9326c512146ec6d250f93a45851a9b48326..04e0b0ae605bf5c5e053b30a2656fe193a144227 100644 GIT binary patch delta 2647 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 diff --git a/dist/tidyfactor-next/bin/add-skill.js b/dist/tidyfactor-next/bin/add-skill.js index 7af2f35..9785d07 100644 --- a/dist/tidyfactor-next/bin/add-skill.js +++ b/dist/tidyfactor-next/bin/add-skill.js @@ -1,25 +1,42 @@ #!/usr/bin/env node /** - * bin/add-skill.js — CLI installer wrapper for tidyfactor-next + * bin/add-skill.js — Multi-Agent Skill Installer Wrapper for tidyfactor-next + * 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-next'); +const skillName = 'tidyfactor-next'; -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-next skill into .agents/skills/tidyfactor-next'); +// 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));