@every-env/compound-plugin 0.9.0 → 2.34.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (121) hide show
  1. package/.claude-plugin/marketplace.json +3 -3
  2. package/.github/workflows/publish.yml +20 -10
  3. package/.releaserc.json +31 -0
  4. package/AGENTS.md +6 -1
  5. package/CHANGELOG.md +76 -0
  6. package/CLAUDE.md +16 -3
  7. package/README.md +83 -16
  8. package/bun.lock +977 -0
  9. package/docs/plans/2026-02-14-feat-auto-detect-install-and-gemini-sync-plan.md +360 -0
  10. package/docs/plans/2026-02-25-feat-windsurf-global-scope-support-plan.md +627 -0
  11. package/docs/plans/2026-03-01-feat-ce-command-aliases-backwards-compatible-deprecation-plan.md +261 -0
  12. package/docs/plans/2026-03-01-fix-setup-skill-non-claude-llm-fallback-plan.md +140 -0
  13. package/docs/plans/2026-03-03-feat-sync-claude-mcp-all-supported-providers-plan.md +639 -0
  14. package/docs/plans/feature_opencode-commands-as-md-and-config-merge.md +574 -0
  15. package/docs/solutions/adding-converter-target-providers.md +693 -0
  16. package/docs/solutions/plugin-versioning-requirements.md +7 -3
  17. package/docs/specs/windsurf.md +477 -0
  18. package/package.json +10 -4
  19. package/plans/landing-page-launchkit-refresh.md +2 -2
  20. package/plugins/compound-engineering/.claude-plugin/plugin.json +2 -2
  21. package/plugins/compound-engineering/CHANGELOG.md +82 -1
  22. package/plugins/compound-engineering/CLAUDE.md +14 -7
  23. package/plugins/compound-engineering/README.md +10 -7
  24. package/plugins/compound-engineering/agents/research/git-history-analyzer.md +1 -1
  25. package/plugins/compound-engineering/agents/research/learnings-researcher.md +1 -1
  26. package/plugins/compound-engineering/agents/review/code-simplicity-reviewer.md +1 -1
  27. package/plugins/compound-engineering/commands/ce/brainstorm.md +145 -0
  28. package/plugins/compound-engineering/commands/ce/compound.md +240 -0
  29. package/plugins/compound-engineering/commands/ce/plan.md +636 -0
  30. package/plugins/compound-engineering/commands/ce/review.md +525 -0
  31. package/plugins/compound-engineering/commands/ce/work.md +470 -0
  32. package/plugins/compound-engineering/commands/create-agent-skill.md +1 -1
  33. package/plugins/compound-engineering/commands/deepen-plan.md +6 -6
  34. package/plugins/compound-engineering/commands/deploy-docs.md +1 -1
  35. package/plugins/compound-engineering/commands/feature-video.md +15 -6
  36. package/plugins/compound-engineering/commands/heal-skill.md +1 -1
  37. package/plugins/compound-engineering/commands/lfg.md +3 -3
  38. package/plugins/compound-engineering/commands/slfg.md +3 -3
  39. package/plugins/compound-engineering/commands/test-xcode.md +2 -2
  40. package/plugins/compound-engineering/commands/workflows/brainstorm.md +4 -123
  41. package/plugins/compound-engineering/commands/workflows/compound.md +4 -234
  42. package/plugins/compound-engineering/commands/workflows/plan.md +4 -562
  43. package/plugins/compound-engineering/commands/workflows/review.md +4 -522
  44. package/plugins/compound-engineering/commands/workflows/work.md +4 -448
  45. package/plugins/compound-engineering/skills/brainstorming/SKILL.md +3 -3
  46. package/plugins/compound-engineering/skills/create-agent-skills/workflows/add-workflow.md +6 -0
  47. package/plugins/compound-engineering/skills/create-agent-skills/workflows/create-new-skill.md +6 -0
  48. package/plugins/compound-engineering/skills/document-review/SKILL.md +1 -1
  49. package/plugins/compound-engineering/skills/file-todos/SKILL.md +1 -1
  50. package/plugins/compound-engineering/skills/git-worktree/SKILL.md +5 -5
  51. package/plugins/compound-engineering/skills/proof/SKILL.md +185 -0
  52. package/plugins/compound-engineering/skills/resolve-pr-parallel/SKILL.md +1 -1
  53. package/plugins/compound-engineering/skills/setup/SKILL.md +8 -2
  54. package/src/commands/convert.ts +101 -24
  55. package/src/commands/install.ts +102 -45
  56. package/src/commands/sync.ts +43 -62
  57. package/src/converters/claude-to-openclaw.ts +240 -0
  58. package/src/converters/claude-to-opencode.ts +12 -10
  59. package/src/converters/claude-to-qwen.ts +238 -0
  60. package/src/converters/claude-to-windsurf.ts +205 -0
  61. package/src/index.ts +2 -1
  62. package/src/parsers/claude-home.ts +55 -3
  63. package/src/sync/codex.ts +38 -62
  64. package/src/sync/commands.ts +198 -0
  65. package/src/sync/copilot.ts +14 -36
  66. package/src/sync/droid.ts +50 -9
  67. package/src/sync/gemini.ts +135 -0
  68. package/src/sync/json-config.ts +47 -0
  69. package/src/sync/kiro.ts +49 -0
  70. package/src/sync/mcp-transports.ts +19 -0
  71. package/src/sync/openclaw.ts +18 -0
  72. package/src/sync/opencode.ts +10 -30
  73. package/src/sync/pi.ts +12 -36
  74. package/src/sync/qwen.ts +66 -0
  75. package/src/sync/registry.ts +141 -0
  76. package/src/sync/skills.ts +21 -0
  77. package/src/sync/windsurf.ts +59 -0
  78. package/src/targets/index.ts +60 -1
  79. package/src/targets/openclaw.ts +96 -0
  80. package/src/targets/opencode.ts +76 -10
  81. package/src/targets/qwen.ts +64 -0
  82. package/src/targets/windsurf.ts +104 -0
  83. package/src/types/kiro.ts +3 -1
  84. package/src/types/openclaw.ts +52 -0
  85. package/src/types/opencode.ts +7 -8
  86. package/src/types/qwen.ts +51 -0
  87. package/src/types/windsurf.ts +35 -0
  88. package/src/utils/codex-agents.ts +1 -1
  89. package/src/utils/detect-tools.ts +37 -0
  90. package/src/utils/files.ts +14 -0
  91. package/src/utils/resolve-output.ts +50 -0
  92. package/src/utils/secrets.ts +24 -0
  93. package/src/utils/symlink.ts +4 -6
  94. package/tests/claude-home.test.ts +46 -0
  95. package/tests/cli.test.ts +180 -0
  96. package/tests/converter.test.ts +43 -10
  97. package/tests/detect-tools.test.ts +119 -0
  98. package/tests/openclaw-converter.test.ts +200 -0
  99. package/tests/opencode-writer.test.ts +142 -5
  100. package/tests/qwen-converter.test.ts +238 -0
  101. package/tests/resolve-output.test.ts +131 -0
  102. package/tests/sync-codex.test.ts +64 -0
  103. package/tests/sync-copilot.test.ts +60 -4
  104. package/tests/sync-droid.test.ts +44 -4
  105. package/tests/sync-gemini.test.ts +160 -0
  106. package/tests/sync-kiro.test.ts +83 -0
  107. package/tests/sync-openclaw.test.ts +51 -0
  108. package/tests/sync-qwen.test.ts +75 -0
  109. package/tests/sync-windsurf.test.ts +89 -0
  110. package/tests/windsurf-converter.test.ts +573 -0
  111. package/tests/windsurf-writer.test.ts +359 -0
  112. package/docs/css/docs.css +0 -675
  113. package/docs/css/style.css +0 -2886
  114. package/docs/index.html +0 -1046
  115. package/docs/js/main.js +0 -225
  116. package/docs/pages/agents.html +0 -649
  117. package/docs/pages/changelog.html +0 -534
  118. package/docs/pages/commands.html +0 -523
  119. package/docs/pages/getting-started.html +0 -582
  120. package/docs/pages/mcp-servers.html +0 -409
  121. package/docs/pages/skills.html +0 -611
package/docs/js/main.js DELETED
@@ -1,225 +0,0 @@
1
- /**
2
- * Compounding Engineering Documentation
3
- * Main JavaScript functionality
4
- */
5
-
6
- document.addEventListener('DOMContentLoaded', () => {
7
- initMobileNav();
8
- initSmoothScroll();
9
- initCopyCode();
10
- initThemeToggle();
11
- });
12
-
13
- /**
14
- * Mobile Navigation Toggle
15
- */
16
- function initMobileNav() {
17
- const mobileToggle = document.querySelector('[data-mobile-toggle]');
18
- const navigation = document.querySelector('[data-navigation]');
19
-
20
- if (!mobileToggle || !navigation) return;
21
-
22
- mobileToggle.addEventListener('click', () => {
23
- navigation.classList.toggle('open');
24
- mobileToggle.classList.toggle('active');
25
-
26
- // Update aria-expanded
27
- const isOpen = navigation.classList.contains('open');
28
- mobileToggle.setAttribute('aria-expanded', isOpen);
29
- });
30
-
31
- // Close menu when clicking outside
32
- document.addEventListener('click', (event) => {
33
- if (!mobileToggle.contains(event.target) && !navigation.contains(event.target)) {
34
- navigation.classList.remove('open');
35
- mobileToggle.classList.remove('active');
36
- mobileToggle.setAttribute('aria-expanded', 'false');
37
- }
38
- });
39
-
40
- // Close menu when clicking a nav link
41
- navigation.querySelectorAll('.nav-link').forEach(link => {
42
- link.addEventListener('click', () => {
43
- navigation.classList.remove('open');
44
- mobileToggle.classList.remove('active');
45
- mobileToggle.setAttribute('aria-expanded', 'false');
46
- });
47
- });
48
- }
49
-
50
- /**
51
- * Smooth Scroll for Anchor Links
52
- */
53
- function initSmoothScroll() {
54
- document.querySelectorAll('a[href^="#"]').forEach(anchor => {
55
- anchor.addEventListener('click', function(e) {
56
- const targetId = this.getAttribute('href');
57
- if (targetId === '#') return;
58
-
59
- const targetElement = document.querySelector(targetId);
60
- if (!targetElement) return;
61
-
62
- e.preventDefault();
63
-
64
- const navHeight = document.querySelector('.nav-container')?.offsetHeight || 0;
65
- const targetPosition = targetElement.getBoundingClientRect().top + window.pageYOffset - navHeight - 24;
66
-
67
- window.scrollTo({
68
- top: targetPosition,
69
- behavior: 'smooth'
70
- });
71
-
72
- // Update URL without jumping
73
- history.pushState(null, null, targetId);
74
- });
75
- });
76
- }
77
-
78
- /**
79
- * Copy Code Functionality
80
- */
81
- function initCopyCode() {
82
- document.querySelectorAll('.card-code-block').forEach(block => {
83
- // Create copy button
84
- const copyBtn = document.createElement('button');
85
- copyBtn.className = 'copy-btn';
86
- copyBtn.innerHTML = '<i class="fa-regular fa-copy"></i>';
87
- copyBtn.setAttribute('aria-label', 'Copy code');
88
- copyBtn.setAttribute('title', 'Copy to clipboard');
89
-
90
- // Style the button
91
- copyBtn.style.cssText = `
92
- position: absolute;
93
- top: 8px;
94
- right: 8px;
95
- padding: 6px 10px;
96
- background: rgba(255, 255, 255, 0.1);
97
- border: none;
98
- border-radius: 6px;
99
- color: #94a3b8;
100
- cursor: pointer;
101
- opacity: 0;
102
- transition: all 0.2s ease;
103
- font-size: 14px;
104
- `;
105
-
106
- // Make parent relative for positioning
107
- block.style.position = 'relative';
108
- block.appendChild(copyBtn);
109
-
110
- // Show/hide on hover
111
- block.addEventListener('mouseenter', () => {
112
- copyBtn.style.opacity = '1';
113
- });
114
-
115
- block.addEventListener('mouseleave', () => {
116
- copyBtn.style.opacity = '0';
117
- });
118
-
119
- // Copy functionality
120
- copyBtn.addEventListener('click', async () => {
121
- const code = block.querySelector('code');
122
- if (!code) return;
123
-
124
- try {
125
- await navigator.clipboard.writeText(code.textContent);
126
- copyBtn.innerHTML = '<i class="fa-solid fa-check"></i>';
127
- copyBtn.style.color = '#34d399';
128
-
129
- setTimeout(() => {
130
- copyBtn.innerHTML = '<i class="fa-regular fa-copy"></i>';
131
- copyBtn.style.color = '#94a3b8';
132
- }, 2000);
133
- } catch (err) {
134
- console.error('Failed to copy:', err);
135
- copyBtn.innerHTML = '<i class="fa-solid fa-xmark"></i>';
136
- copyBtn.style.color = '#f87171';
137
-
138
- setTimeout(() => {
139
- copyBtn.innerHTML = '<i class="fa-regular fa-copy"></i>';
140
- copyBtn.style.color = '#94a3b8';
141
- }, 2000);
142
- }
143
- });
144
- });
145
- }
146
-
147
- /**
148
- * Theme Toggle (Light/Dark)
149
- */
150
- function initThemeToggle() {
151
- // Check for saved theme preference or default to dark
152
- const savedTheme = localStorage.getItem('theme') || 'dark';
153
- document.documentElement.className = `theme-${savedTheme}`;
154
-
155
- // Create theme toggle button if it doesn't exist
156
- const existingToggle = document.querySelector('[data-theme-toggle]');
157
- if (existingToggle) {
158
- existingToggle.addEventListener('click', toggleTheme);
159
- updateThemeToggleIcon(existingToggle, savedTheme);
160
- }
161
- }
162
-
163
- function toggleTheme() {
164
- const html = document.documentElement;
165
- const currentTheme = html.classList.contains('theme-dark') ? 'dark' : 'light';
166
- const newTheme = currentTheme === 'dark' ? 'light' : 'dark';
167
-
168
- html.className = `theme-${newTheme}`;
169
- localStorage.setItem('theme', newTheme);
170
-
171
- const toggle = document.querySelector('[data-theme-toggle]');
172
- if (toggle) {
173
- updateThemeToggleIcon(toggle, newTheme);
174
- }
175
- }
176
-
177
- function updateThemeToggleIcon(toggle, theme) {
178
- const icon = toggle.querySelector('i');
179
- if (icon) {
180
- icon.className = theme === 'dark' ? 'fa-solid fa-sun' : 'fa-solid fa-moon';
181
- }
182
- }
183
-
184
- /**
185
- * Intersection Observer for Animation on Scroll
186
- */
187
- function initScrollAnimations() {
188
- const observerOptions = {
189
- threshold: 0.1,
190
- rootMargin: '0px 0px -50px 0px'
191
- };
192
-
193
- const observer = new IntersectionObserver((entries) => {
194
- entries.forEach(entry => {
195
- if (entry.isIntersecting) {
196
- entry.target.classList.add('visible');
197
- observer.unobserve(entry.target);
198
- }
199
- });
200
- }, observerOptions);
201
-
202
- document.querySelectorAll('.agent-card, .command-card, .skill-card, .mcp-card, .stat-card').forEach(card => {
203
- card.style.opacity = '0';
204
- card.style.transform = 'translateY(20px)';
205
- card.style.transition = 'opacity 0.5s ease, transform 0.5s ease';
206
- observer.observe(card);
207
- });
208
- }
209
-
210
- // Add visible class styles
211
- const style = document.createElement('style');
212
- style.textContent = `
213
- .agent-card.visible,
214
- .command-card.visible,
215
- .skill-card.visible,
216
- .mcp-card.visible,
217
- .stat-card.visible {
218
- opacity: 1 !important;
219
- transform: translateY(0) !important;
220
- }
221
- `;
222
- document.head.appendChild(style);
223
-
224
- // Initialize scroll animations after a short delay
225
- setTimeout(initScrollAnimations, 100);