@every-env/compound-plugin 2.36.1 → 2.36.3
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.
- package/CHANGELOG.md +14 -0
- package/package.json +1 -1
- package/plugins/compound-engineering/skills/ce-plan/SKILL.md +7 -9
- package/plugins/compound-engineering/skills/deepen-plan/SKILL.md +3 -5
- package/src/targets/droid.ts +3 -2
- package/src/targets/gemini.ts +3 -2
- package/src/targets/opencode.ts +2 -2
- package/src/targets/qwen.ts +3 -10
- package/src/utils/files.ts +15 -0
package/CHANGELOG.md
CHANGED
|
@@ -7,6 +7,20 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
7
7
|
|
|
8
8
|
Release numbering now follows the repository `v*` tag line. Starting at `v2.34.0`, the root CLI package and this changelog stay on that shared version stream. Older entries below retain the previous `0.x` CLI numbering.
|
|
9
9
|
|
|
10
|
+
## [2.36.3](https://github.com/EveryInc/compound-engineering-plugin/compare/v2.36.2...v2.36.3) (2026-03-13)
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
### Bug Fixes
|
|
14
|
+
|
|
15
|
+
* **targets:** nest colon-separated command names into directories ([a84682c](https://github.com/EveryInc/compound-engineering-plugin/commit/a84682cd35e94b0408f6c6a990af0732c2acf03f)), closes [#226](https://github.com/EveryInc/compound-engineering-plugin/issues/226)
|
|
16
|
+
|
|
17
|
+
## [2.36.2](https://github.com/EveryInc/compound-engineering-plugin/compare/v2.36.1...v2.36.2) (2026-03-13)
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
### Bug Fixes
|
|
21
|
+
|
|
22
|
+
* **plan:** remove deprecated /technical_review references ([0ab9184](https://github.com/EveryInc/compound-engineering-plugin/commit/0ab91847f278efba45477462d8e93db5f068e058)), closes [#244](https://github.com/EveryInc/compound-engineering-plugin/issues/244)
|
|
23
|
+
|
|
10
24
|
## [2.36.1](https://github.com/EveryInc/compound-engineering-plugin/compare/v2.36.0...v2.36.1) (2026-03-13)
|
|
11
25
|
|
|
12
26
|
|
package/package.json
CHANGED
|
@@ -579,17 +579,15 @@ After writing the plan file, use the **AskUserQuestion tool** to present these o
|
|
|
579
579
|
**Options:**
|
|
580
580
|
1. **Open plan in editor** - Open the plan file for review
|
|
581
581
|
2. **Run `/deepen-plan`** - Enhance each section with parallel research agents (best practices, performance, UI)
|
|
582
|
-
3. **
|
|
583
|
-
4. **
|
|
584
|
-
5. **
|
|
585
|
-
6. **Start `/ce:work
|
|
586
|
-
7. **
|
|
587
|
-
8. **Create Issue** - Create issue in project tracker (GitHub/Linear)
|
|
582
|
+
3. **Review and refine** - Improve the document through structured self-review
|
|
583
|
+
4. **Share to Proof** - Upload to Proof for collaborative review and sharing
|
|
584
|
+
5. **Start `/ce:work`** - Begin implementing this plan locally
|
|
585
|
+
6. **Start `/ce:work` on remote** - Begin implementing in Claude Code on the web (use `&` to run in background)
|
|
586
|
+
7. **Create Issue** - Create issue in project tracker (GitHub/Linear)
|
|
588
587
|
|
|
589
588
|
Based on selection:
|
|
590
589
|
- **Open plan in editor** → Run `open docs/plans/<plan_filename>.md` to open the file in the user's default editor
|
|
591
590
|
- **`/deepen-plan`** → Call the /deepen-plan command with the plan file path to enhance with research
|
|
592
|
-
- **`/technical_review`** → Call the /technical_review command with the plan file path
|
|
593
591
|
- **Review and refine** → Load `document-review` skill.
|
|
594
592
|
- **Share to Proof** → Upload the plan to Proof:
|
|
595
593
|
```bash
|
|
@@ -608,7 +606,7 @@ Based on selection:
|
|
|
608
606
|
|
|
609
607
|
**Note:** If running `/ce:plan` with ultrathink enabled, automatically run `/deepen-plan` after plan creation for maximum depth and grounding.
|
|
610
608
|
|
|
611
|
-
Loop back to options after Simplify or Other changes until user selects `/ce:work` or
|
|
609
|
+
Loop back to options after Simplify or Other changes until user selects `/ce:work` or another action.
|
|
612
610
|
|
|
613
611
|
## Issue Creation
|
|
614
612
|
|
|
@@ -638,6 +636,6 @@ When user selects "Create Issue", detect their project tracker from CLAUDE.md:
|
|
|
638
636
|
|
|
639
637
|
5. **After creation:**
|
|
640
638
|
- Display the issue URL
|
|
641
|
-
- Ask if they want to proceed to `/ce:work`
|
|
639
|
+
- Ask if they want to proceed to `/ce:work`
|
|
642
640
|
|
|
643
641
|
NEVER CODE! Just research and write the plan.
|
|
@@ -480,14 +480,12 @@ After writing the enhanced plan, use the **AskUserQuestion tool** to present the
|
|
|
480
480
|
|
|
481
481
|
**Options:**
|
|
482
482
|
1. **View diff** - Show what was added/changed
|
|
483
|
-
2. **
|
|
484
|
-
3. **
|
|
485
|
-
4. **
|
|
486
|
-
5. **Revert** - Restore original plan (if backup exists)
|
|
483
|
+
2. **Start `/ce:work`** - Begin implementing this enhanced plan
|
|
484
|
+
3. **Deepen further** - Run another round of research on specific sections
|
|
485
|
+
4. **Revert** - Restore original plan (if backup exists)
|
|
487
486
|
|
|
488
487
|
Based on selection:
|
|
489
488
|
- **View diff** → Run `git diff [plan_path]` or show before/after
|
|
490
|
-
- **`/technical_review`** → Call the /technical_review command with the plan file path
|
|
491
489
|
- **`/ce:work`** → Call the /ce:work command with the plan file path
|
|
492
490
|
- **Deepen further** → Ask which sections need more research, then re-run those agents
|
|
493
491
|
- **Revert** → Restore from git or backup
|
package/src/targets/droid.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import path from "path"
|
|
2
|
-
import { copyDir, ensureDir, writeText } from "../utils/files"
|
|
2
|
+
import { copyDir, ensureDir, resolveCommandPath, writeText } from "../utils/files"
|
|
3
3
|
import type { DroidBundle } from "../types/droid"
|
|
4
4
|
|
|
5
5
|
export async function writeDroidBundle(outputRoot: string, bundle: DroidBundle): Promise<void> {
|
|
@@ -9,7 +9,8 @@ export async function writeDroidBundle(outputRoot: string, bundle: DroidBundle):
|
|
|
9
9
|
if (bundle.commands.length > 0) {
|
|
10
10
|
await ensureDir(paths.commandsDir)
|
|
11
11
|
for (const command of bundle.commands) {
|
|
12
|
-
await
|
|
12
|
+
const dest = await resolveCommandPath(paths.commandsDir, command.name, ".md")
|
|
13
|
+
await writeText(dest, command.content + "\n")
|
|
13
14
|
}
|
|
14
15
|
}
|
|
15
16
|
|
package/src/targets/gemini.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import path from "path"
|
|
2
|
-
import { backupFile, copyDir, ensureDir, pathExists, readJson, writeJson, writeText } from "../utils/files"
|
|
2
|
+
import { backupFile, copyDir, ensureDir, pathExists, readJson, resolveCommandPath, writeJson, writeText } from "../utils/files"
|
|
3
3
|
import type { GeminiBundle } from "../types/gemini"
|
|
4
4
|
|
|
5
5
|
export async function writeGeminiBundle(outputRoot: string, bundle: GeminiBundle): Promise<void> {
|
|
@@ -20,7 +20,8 @@ export async function writeGeminiBundle(outputRoot: string, bundle: GeminiBundle
|
|
|
20
20
|
|
|
21
21
|
if (bundle.commands.length > 0) {
|
|
22
22
|
for (const command of bundle.commands) {
|
|
23
|
-
await
|
|
23
|
+
const dest = await resolveCommandPath(paths.commandsDir, command.name, ".toml")
|
|
24
|
+
await writeText(dest, command.content + "\n")
|
|
24
25
|
}
|
|
25
26
|
}
|
|
26
27
|
|
package/src/targets/opencode.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import path from "path"
|
|
2
|
-
import { backupFile, copyDir, ensureDir, pathExists, readJson, writeJson, writeText } from "../utils/files"
|
|
2
|
+
import { backupFile, copyDir, ensureDir, pathExists, readJson, resolveCommandPath, writeJson, writeText } from "../utils/files"
|
|
3
3
|
import type { OpenCodeBundle, OpenCodeConfig } from "../types/opencode"
|
|
4
4
|
|
|
5
5
|
// Merges plugin config into existing opencode.json. User keys win on conflict. See ADR-002.
|
|
@@ -75,7 +75,7 @@ export async function writeOpenCodeBundle(outputRoot: string, bundle: OpenCodeBu
|
|
|
75
75
|
}
|
|
76
76
|
|
|
77
77
|
for (const commandFile of bundle.commandFiles) {
|
|
78
|
-
const dest =
|
|
78
|
+
const dest = await resolveCommandPath(openCodePaths.commandDir, commandFile.name, ".md")
|
|
79
79
|
const cmdBackupPath = await backupFile(dest)
|
|
80
80
|
if (cmdBackupPath) {
|
|
81
81
|
console.log(`Backed up existing command file to ${cmdBackupPath}`)
|
package/src/targets/qwen.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import path from "path"
|
|
2
|
-
import { backupFile, copyDir, ensureDir, writeJson, writeText } from "../utils/files"
|
|
2
|
+
import { backupFile, copyDir, ensureDir, resolveCommandPath, writeJson, writeText } from "../utils/files"
|
|
3
3
|
import type { QwenBundle, QwenExtensionConfig } from "../types/qwen"
|
|
4
4
|
|
|
5
5
|
export async function writeQwenBundle(outputRoot: string, bundle: QwenBundle): Promise<void> {
|
|
@@ -31,15 +31,8 @@ export async function writeQwenBundle(outputRoot: string, bundle: QwenBundle): P
|
|
|
31
31
|
const commandsDir = qwenPaths.commandsDir
|
|
32
32
|
await ensureDir(commandsDir)
|
|
33
33
|
for (const commandFile of bundle.commandFiles) {
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
if (parts.length > 1) {
|
|
37
|
-
const nestedDir = path.join(commandsDir, ...parts.slice(0, -1))
|
|
38
|
-
await ensureDir(nestedDir)
|
|
39
|
-
await writeText(path.join(nestedDir, `${parts[parts.length - 1]}.md`), commandFile.content + "\n")
|
|
40
|
-
} else {
|
|
41
|
-
await writeText(path.join(commandsDir, `${commandFile.name}.md`), commandFile.content + "\n")
|
|
42
|
-
}
|
|
34
|
+
const dest = await resolveCommandPath(commandsDir, commandFile.name, ".md")
|
|
35
|
+
await writeText(dest, commandFile.content + "\n")
|
|
43
36
|
}
|
|
44
37
|
|
|
45
38
|
// Copy skills
|
package/src/utils/files.ts
CHANGED
|
@@ -75,6 +75,21 @@ export async function walkFiles(root: string): Promise<string[]> {
|
|
|
75
75
|
return results
|
|
76
76
|
}
|
|
77
77
|
|
|
78
|
+
/**
|
|
79
|
+
* Resolve a colon-separated command name into a filesystem path.
|
|
80
|
+
* e.g. resolveCommandPath("/commands", "ce:plan", ".md") -> "/commands/ce/plan.md"
|
|
81
|
+
* Creates intermediate directories as needed.
|
|
82
|
+
*/
|
|
83
|
+
export async function resolveCommandPath(dir: string, name: string, ext: string): Promise<string> {
|
|
84
|
+
const parts = name.split(":")
|
|
85
|
+
if (parts.length > 1) {
|
|
86
|
+
const nestedDir = path.join(dir, ...parts.slice(0, -1))
|
|
87
|
+
await ensureDir(nestedDir)
|
|
88
|
+
return path.join(nestedDir, `${parts[parts.length - 1]}${ext}`)
|
|
89
|
+
}
|
|
90
|
+
return path.join(dir, `${name}${ext}`)
|
|
91
|
+
}
|
|
92
|
+
|
|
78
93
|
export async function copyDir(sourceDir: string, targetDir: string): Promise<void> {
|
|
79
94
|
await ensureDir(targetDir)
|
|
80
95
|
const entries = await fs.readdir(sourceDir, { withFileTypes: true })
|