@gian-tiaga/eda 3.13.1 → 4.0.0

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 (82) hide show
  1. package/MIGRATION.md +23 -2
  2. package/README.md +153 -232
  3. package/agents/eda-aim-executor/prompt.md +2 -0
  4. package/agents/eda-aim-verifier/prompt.md +2 -0
  5. package/agents/eda-review-api/prompt.md +4 -4
  6. package/agents/eda-review-architecture/prompt.md +4 -4
  7. package/agents/eda-review-business/prompt.md +5 -12
  8. package/agents/eda-review-code-quality/prompt.md +4 -4
  9. package/agents/eda-review-correctness/prompt.md +3 -3
  10. package/agents/eda-review-database/prompt.md +4 -4
  11. package/agents/eda-review-documentation/prompt.md +4 -4
  12. package/agents/eda-review-frontend/prompt.md +4 -4
  13. package/agents/eda-review-infra/agent.json +14 -0
  14. package/agents/eda-review-infra/prompt.md +36 -0
  15. package/agents/eda-review-performance/prompt.md +7 -7
  16. package/agents/eda-review-plan-alignment/prompt.md +4 -4
  17. package/agents/eda-review-previous-reviews/prompt.md +5 -4
  18. package/agents/eda-review-references/prompt.md +4 -4
  19. package/agents/eda-review-rules/prompt.md +4 -4
  20. package/agents/eda-review-security/prompt.md +4 -4
  21. package/agents/eda-review-seo/agent.json +14 -0
  22. package/agents/eda-review-seo/prompt.md +36 -0
  23. package/agents/eda-review-tests/prompt.md +4 -4
  24. package/agents/eda-review-triage/agent.json +14 -0
  25. package/agents/eda-review-triage/prompt.md +38 -0
  26. package/agents/eda-skill-runner/agent.json +14 -0
  27. package/agents/eda-skill-runner/prompt.md +11 -0
  28. package/bin/cli.js +3 -3
  29. package/lib/catalog.js +32 -1
  30. package/lib/install.js +266 -611
  31. package/lib/prompts.js +53 -0
  32. package/lib/renderers/codex-agent.js +3 -1
  33. package/lib/renderers/codex-skill.js +21 -1
  34. package/lib/renderers/opencode-agent.js +23 -0
  35. package/lib/renderers/opencode-skill.js +24 -0
  36. package/package.json +4 -4
  37. package/skills/_shared/done.md +15 -0
  38. package/skills/_shared/questions.md +9 -0
  39. package/skills/eda-aim/SKILL.md +2 -3
  40. package/skills/eda-business/SKILL.md +5 -6
  41. package/skills/eda-commit/SKILL.md +2 -3
  42. package/skills/eda-discover-automations/SKILL.md +6 -7
  43. package/skills/eda-explore/SKILL.md +28 -15
  44. package/skills/eda-fix/SKILL.md +7 -7
  45. package/skills/eda-fix-by-review/SKILL.md +4 -3
  46. package/skills/eda-just-do-it/SKILL.md +4 -4
  47. package/skills/eda-manual-test/SKILL.md +7 -5
  48. package/skills/eda-merge-worktree/SKILL.md +2 -3
  49. package/skills/eda-new-project/SKILL.md +3 -5
  50. package/skills/eda-orhestra/SKILL.md +3 -4
  51. package/skills/eda-plan/SKILL.md +126 -168
  52. package/skills/eda-plan-execute/SKILL.md +72 -92
  53. package/skills/eda-plan-polish/SKILL.md +14 -14
  54. package/skills/eda-plan-review/SKILL.md +25 -10
  55. package/skills/eda-plan-review-fix/SKILL.md +10 -7
  56. package/skills/eda-polish/SKILL.md +9 -6
  57. package/skills/eda-prepare-ai/SKILL.md +35 -15
  58. package/skills/eda-prod-check/SKILL.md +129 -0
  59. package/skills/eda-review/SKILL.md +92 -64
  60. package/skills/eda-review/references/checks/api.md +18 -0
  61. package/skills/eda-review/references/checks/architecture.md +16 -0
  62. package/skills/eda-review/references/checks/business.md +13 -0
  63. package/skills/eda-review/references/checks/code-quality.md +18 -0
  64. package/skills/eda-review/references/checks/correctness.md +19 -0
  65. package/skills/eda-review/references/checks/database.md +17 -0
  66. package/skills/eda-review/references/checks/documentation.md +13 -0
  67. package/skills/eda-review/references/checks/frontend.md +19 -0
  68. package/skills/eda-review/references/checks/infra.md +16 -0
  69. package/skills/eda-review/references/checks/performance.md +21 -0
  70. package/skills/eda-review/references/checks/plan-alignment.md +16 -0
  71. package/skills/eda-review/references/checks/previous-reviews.md +9 -0
  72. package/skills/eda-review/references/checks/references.md +11 -0
  73. package/skills/eda-review/references/checks/rules.md +16 -0
  74. package/skills/eda-review/references/checks/security.md +26 -0
  75. package/skills/eda-review/references/checks/seo.md +16 -0
  76. package/skills/eda-review/references/checks/tests.md +18 -0
  77. package/skills/eda-review/references/defects.md +24 -0
  78. package/skills/eda-review/references/triage.md +23 -0
  79. package/skills/eda-roadmap/SKILL.md +2 -4
  80. package/skills/eda-send-review/SKILL.md +3 -5
  81. package/skills/eda-worktree/SKILL.md +2 -3
  82. package/skills/eda-review/references/review-matrix.md +0 -72
@@ -0,0 +1,11 @@
1
+ # Роль
2
+
3
+ Выполни один установленный eda-скил в изолированной сессии. Получи от оркестратора рабочую директорию, точный ID скила, исходный запрос, аргументы, применимые overrides, пути входных артефактов и требуемый результат.
4
+
5
+ Загрузи указанный скил нативным инструментом хоста и следуй его инструкции целиком. Не заменяй его своей процедурой. Режим исполнения и границы ответственности обязательны; запускай вложенных агентов только когда это предписывает выбранный скил. Не делай git/publish-действий без прямого разрешения пользователя, переданного оркестратором.
6
+
7
+ Если вход или возможности хоста недостаточны, верни `status: blocked` с одним конкретным вопросом или техническим блокером. Не обходи разрешения и не меняй режим исполнения.
8
+
9
+ ## Результат
10
+
11
+ Верни результат по контракту вызванного скила, пути созданных артефактов и фактически выполненные проверки. Если скил не задаёт машинный формат, верни YAML с `status: completed | blocked`, `summary`, `artifacts`, `checks`, `question`. Не выдавай непроведённые проверки за успешные.
package/bin/cli.js CHANGED
@@ -6,11 +6,11 @@ const require = createRequire(import.meta.url);
6
6
  const { version } = require('../package.json');
7
7
  const cmd = process.argv[2];
8
8
 
9
- const HELP = `eda — установка и обновление скилов и агентов eda-* для Claude Code и Codex CLI.
9
+ const HELP = `eda — установка и обновление скилов и агентов eda-* для Claude Code, Codex CLI и OpenCode.
10
10
 
11
11
  Использование:
12
- eda init — выбрать целевые среды (Claude / Codex / обе) и установить пакет
13
- eda update — перенести артефакты и настройки, обновить текущий проект
12
+ eda init — выбрать целевые среды (Claude / Codex / OpenCode) и установить пакет
13
+ eda update — предложить добавить платформы и обновить текущий проект
14
14
  eda update-all [dir] — перенести артефакты и настройки найденных проектов
15
15
  eda --version — показать версию
16
16
  eda --help — показать эту справку
package/lib/catalog.js CHANGED
@@ -46,7 +46,11 @@ export async function listAgents(agentsRoot) {
46
46
  const metadataPath = path.join(sourceDir, 'agent.json');
47
47
  const promptPath = path.join(sourceDir, 'prompt.md');
48
48
  const metadata = await readJson(metadataPath);
49
- const prompt = await fs.readFile(promptPath, 'utf8');
49
+ const prompt = await expandIncludes(
50
+ `Агент ${entry.name}`,
51
+ await fs.readFile(promptPath, 'utf8'),
52
+ path.resolve(agentsRoot, '..')
53
+ );
50
54
  validateAgent(entry.name, metadata, prompt);
51
55
  agents.push({ ...metadata, sourceDir, prompt });
52
56
  }
@@ -54,6 +58,29 @@ export async function listAgents(agentsRoot) {
54
58
  return agents.sort((a, b) => a.name.localeCompare(b.name));
55
59
  }
56
60
 
61
+ // Строка `<!-- include: путь -->` заменяется файлом пакета при установке: общий текст —
62
+ // чек-лист проверки или правило вопросов — живёт в одном месте и попадает во все платформы.
63
+ const INCLUDE_LINE = /^<!-- include: (\S+) -->$/gm;
64
+
65
+ export async function expandIncludes(owner, source, packageRoot) {
66
+ let expanded = source;
67
+ for (const [line, relativePath] of source.matchAll(INCLUDE_LINE)) {
68
+ const includePath = path.resolve(packageRoot, relativePath);
69
+ if (!includePath.startsWith(packageRoot + path.sep)) {
70
+ throw new Error(`${owner}: include вне пакета: ${relativePath}.`);
71
+ }
72
+ let content;
73
+ try {
74
+ content = await fs.readFile(includePath, 'utf8');
75
+ } catch (err) {
76
+ if (err?.code === 'ENOENT') throw new Error(`${owner}: не найден include ${relativePath}.`);
77
+ throw err;
78
+ }
79
+ expanded = expanded.replace(line, () => content.trim());
80
+ }
81
+ return expanded;
82
+ }
83
+
57
84
  function validateSkillConfig(skillName, config) {
58
85
  if (Object.keys(config).length === 0) return;
59
86
  if (config.schemaVersion !== 1) {
@@ -89,6 +116,10 @@ function validateAgent(directoryName, agent, prompt) {
89
116
  if (!agent.models?.claude || !agent.models?.codex) {
90
117
  throw new Error(`Агент ${directoryName}: нужны модели Claude и Codex.`);
91
118
  }
119
+ if (agent.models.opencode !== undefined
120
+ && (typeof agent.models.opencode !== 'string' || !/^[^\s/#]+\/[^\s/#]+(?:#[^\s#]+)?$/.test(agent.models.opencode))) {
121
+ throw new Error(`Агент ${directoryName}: models.opencode должен иметь формат provider/model#variant.`);
122
+ }
92
123
  if (!['read-only', 'workspace-write', 'git-write'].includes(agent.access)) {
93
124
  throw new Error(`Агент ${directoryName}: access должен быть read-only, workspace-write или git-write.`);
94
125
  }