devtronic 1.2.0 → 1.2.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.
- package/README.md +22 -2
- package/dist/index.js +19 -21
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -35,11 +35,31 @@ The CLI analyzes your project (framework, architecture, stack) and generates per
|
|
|
35
35
|
|
|
36
36
|
- **AGENTS.md** — Universal AI context personalized to your stack
|
|
37
37
|
- **Architecture rules** — IDE-specific format (`.claude/rules/`, `.cursor/rules/`, etc.)
|
|
38
|
-
- **Skills** (19 core + 9 addon
|
|
39
|
-
- **Agents** (
|
|
38
|
+
- **Skills** (19 core + 12 design + 9 addon) — Reusable workflows (`/devtronic:brief`, `/devtronic:spec`, `/devtronic:create-plan`, `/devtronic:summary`, `/devtronic:audit`, etc.)
|
|
39
|
+
- **Agents** (15) — Specialized subagents (code-reviewer, quality-runner, etc.)
|
|
40
40
|
- **Hooks** (5) — Automated workflow (lint-on-save, checkpoint, etc.)
|
|
41
41
|
- **thoughts/** — Structured directory for AI working documents
|
|
42
42
|
|
|
43
|
+
## Addons
|
|
44
|
+
|
|
45
|
+
Three optional addon packs extend the core toolkit. Select them during `init` or manage them at any time:
|
|
46
|
+
|
|
47
|
+
```bash
|
|
48
|
+
npx devtronic addon list # See available addons and status
|
|
49
|
+
npx devtronic addon enable orchestration # Install
|
|
50
|
+
npx devtronic addon enable design-best-practices
|
|
51
|
+
npx devtronic addon enable auto-devtronic
|
|
52
|
+
npx devtronic addon disable <name> # Uninstall
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
| Addon | Skills | Description |
|
|
56
|
+
|-------|--------|-------------|
|
|
57
|
+
| `orchestration` | `briefing`, `recap`, `handoff` | Pre-planning alignment, session recaps, context rotation for multi-session work |
|
|
58
|
+
| `design-best-practices` | `design-init`, `design-review`, `design-refine`, `design-system`, `design-harden` | Frontend design quality: typography, color, layout, accessibility, motion, UX writing |
|
|
59
|
+
| `auto-devtronic` | `auto-devtronic`, `validate-task-afk` | Autonomous engineering loop — takes a GitHub issue, runs spec → tests → plan → implement → PR, self-corrects via failing tests |
|
|
60
|
+
|
|
61
|
+
During `npx devtronic init` (Claude Code only), a multiselect prompt lets you enable any combination of addons upfront.
|
|
62
|
+
|
|
43
63
|
## Supported IDEs
|
|
44
64
|
|
|
45
65
|
| IDE | Config Format | Features |
|
package/dist/index.js
CHANGED
|
@@ -453,10 +453,16 @@ async function promptForAgentsMd() {
|
|
|
453
453
|
initialValue: true
|
|
454
454
|
});
|
|
455
455
|
}
|
|
456
|
-
async function
|
|
457
|
-
|
|
458
|
-
|
|
459
|
-
|
|
456
|
+
async function promptForAddons() {
|
|
457
|
+
const options = Object.values(ADDONS).map((addon) => ({
|
|
458
|
+
value: addon.name,
|
|
459
|
+
label: addon.label,
|
|
460
|
+
hint: addon.description
|
|
461
|
+
}));
|
|
462
|
+
return p.multiselect({
|
|
463
|
+
message: "Enable optional addon packs? (space to toggle, enter to confirm)",
|
|
464
|
+
options,
|
|
465
|
+
required: false
|
|
460
466
|
});
|
|
461
467
|
}
|
|
462
468
|
|
|
@@ -1368,25 +1374,12 @@ Valid addons: ${validAddons.join(", ")}`);
|
|
|
1368
1374
|
}
|
|
1369
1375
|
}
|
|
1370
1376
|
if (selectedIDEs.includes("claude-code") && !options.addon && !options.yes && !options.preset && !options.preview) {
|
|
1371
|
-
const
|
|
1372
|
-
if (p3.isCancel(
|
|
1373
|
-
p3.cancel("Operation cancelled");
|
|
1374
|
-
process.exit(0);
|
|
1375
|
-
}
|
|
1376
|
-
if (wantOrchestration) {
|
|
1377
|
-
enabledAddons.push("orchestration");
|
|
1378
|
-
}
|
|
1379
|
-
const wantDesign = await p3.confirm({
|
|
1380
|
-
message: "Enable design best practices? (design-init \u2192 design-review \u2192 design-refine \u2192 design-harden)",
|
|
1381
|
-
initialValue: false
|
|
1382
|
-
});
|
|
1383
|
-
if (p3.isCancel(wantDesign)) {
|
|
1377
|
+
const selectedAddons = await promptForAddons();
|
|
1378
|
+
if (p3.isCancel(selectedAddons)) {
|
|
1384
1379
|
p3.cancel("Operation cancelled");
|
|
1385
1380
|
process.exit(0);
|
|
1386
1381
|
}
|
|
1387
|
-
|
|
1388
|
-
enabledAddons.push("design-best-practices");
|
|
1389
|
-
}
|
|
1382
|
+
enabledAddons = selectedAddons;
|
|
1390
1383
|
}
|
|
1391
1384
|
if (enabledAddons.length > 0) {
|
|
1392
1385
|
projectConfig.enabledAddons = enabledAddons;
|
|
@@ -2393,8 +2386,11 @@ async function updateCommand(options) {
|
|
|
2393
2386
|
}
|
|
2394
2387
|
}
|
|
2395
2388
|
const removedFromTemplate = [];
|
|
2389
|
+
const pluginPathPrefix = manifest.pluginPath ? manifest.pluginPath + "/" : null;
|
|
2396
2390
|
for (const [relativePath, fileInfo] of Object.entries(manifest.files)) {
|
|
2397
2391
|
if (fileInfo.ignored) continue;
|
|
2392
|
+
if (pluginPathPrefix && relativePath.startsWith(pluginPathPrefix)) continue;
|
|
2393
|
+
if (manifest.pluginPath && relativePath.startsWith(".claude-plugins/") && relativePath.endsWith("marketplace.json")) continue;
|
|
2398
2394
|
let foundInAnyTemplate = false;
|
|
2399
2395
|
for (const ide of manifest.selectedIDEs) {
|
|
2400
2396
|
const templateDir = join11(TEMPLATES_DIR, IDE_TEMPLATE_MAP[ide]);
|
|
@@ -4678,11 +4674,13 @@ async function removeFileBasedAddon(targetDir, addonName, _options) {
|
|
|
4678
4674
|
}
|
|
4679
4675
|
function getAddonListInfo(targetDir) {
|
|
4680
4676
|
const config = readAddonConfig(targetDir);
|
|
4677
|
+
const manifest = readManifest(targetDir);
|
|
4678
|
+
const manifestAddons = manifest?.projectConfig?.enabledAddons ?? [];
|
|
4681
4679
|
return getAvailableAddons().map((addon) => ({
|
|
4682
4680
|
name: addon.name,
|
|
4683
4681
|
label: addon.label,
|
|
4684
4682
|
description: addon.description,
|
|
4685
|
-
installed: !!config.installed[addon.name],
|
|
4683
|
+
installed: !!config.installed[addon.name] || manifestAddons.includes(addon.name),
|
|
4686
4684
|
agents: config.installed[addon.name] ? config.agents : void 0
|
|
4687
4685
|
}));
|
|
4688
4686
|
}
|
package/package.json
CHANGED