@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.
- package/MIGRATION.md +23 -2
- package/README.md +153 -232
- package/agents/eda-aim-executor/prompt.md +2 -0
- package/agents/eda-aim-verifier/prompt.md +2 -0
- package/agents/eda-review-api/prompt.md +4 -4
- package/agents/eda-review-architecture/prompt.md +4 -4
- package/agents/eda-review-business/prompt.md +5 -12
- package/agents/eda-review-code-quality/prompt.md +4 -4
- package/agents/eda-review-correctness/prompt.md +3 -3
- package/agents/eda-review-database/prompt.md +4 -4
- package/agents/eda-review-documentation/prompt.md +4 -4
- package/agents/eda-review-frontend/prompt.md +4 -4
- package/agents/eda-review-infra/agent.json +14 -0
- package/agents/eda-review-infra/prompt.md +36 -0
- package/agents/eda-review-performance/prompt.md +7 -7
- package/agents/eda-review-plan-alignment/prompt.md +4 -4
- package/agents/eda-review-previous-reviews/prompt.md +5 -4
- package/agents/eda-review-references/prompt.md +4 -4
- package/agents/eda-review-rules/prompt.md +4 -4
- package/agents/eda-review-security/prompt.md +4 -4
- package/agents/eda-review-seo/agent.json +14 -0
- package/agents/eda-review-seo/prompt.md +36 -0
- package/agents/eda-review-tests/prompt.md +4 -4
- package/agents/eda-review-triage/agent.json +14 -0
- package/agents/eda-review-triage/prompt.md +38 -0
- package/agents/eda-skill-runner/agent.json +14 -0
- package/agents/eda-skill-runner/prompt.md +11 -0
- package/bin/cli.js +3 -3
- package/lib/catalog.js +32 -1
- package/lib/install.js +266 -611
- package/lib/prompts.js +53 -0
- package/lib/renderers/codex-agent.js +3 -1
- package/lib/renderers/codex-skill.js +21 -1
- package/lib/renderers/opencode-agent.js +23 -0
- package/lib/renderers/opencode-skill.js +24 -0
- package/package.json +4 -4
- package/skills/_shared/done.md +15 -0
- package/skills/_shared/questions.md +9 -0
- package/skills/eda-aim/SKILL.md +2 -3
- package/skills/eda-business/SKILL.md +5 -6
- package/skills/eda-commit/SKILL.md +2 -3
- package/skills/eda-discover-automations/SKILL.md +6 -7
- package/skills/eda-explore/SKILL.md +28 -15
- package/skills/eda-fix/SKILL.md +7 -7
- package/skills/eda-fix-by-review/SKILL.md +4 -3
- package/skills/eda-just-do-it/SKILL.md +4 -4
- package/skills/eda-manual-test/SKILL.md +7 -5
- package/skills/eda-merge-worktree/SKILL.md +2 -3
- package/skills/eda-new-project/SKILL.md +3 -5
- package/skills/eda-orhestra/SKILL.md +3 -4
- package/skills/eda-plan/SKILL.md +126 -168
- package/skills/eda-plan-execute/SKILL.md +72 -92
- package/skills/eda-plan-polish/SKILL.md +14 -14
- package/skills/eda-plan-review/SKILL.md +25 -10
- package/skills/eda-plan-review-fix/SKILL.md +10 -7
- package/skills/eda-polish/SKILL.md +9 -6
- package/skills/eda-prepare-ai/SKILL.md +35 -15
- package/skills/eda-prod-check/SKILL.md +129 -0
- package/skills/eda-review/SKILL.md +92 -64
- package/skills/eda-review/references/checks/api.md +18 -0
- package/skills/eda-review/references/checks/architecture.md +16 -0
- package/skills/eda-review/references/checks/business.md +13 -0
- package/skills/eda-review/references/checks/code-quality.md +18 -0
- package/skills/eda-review/references/checks/correctness.md +19 -0
- package/skills/eda-review/references/checks/database.md +17 -0
- package/skills/eda-review/references/checks/documentation.md +13 -0
- package/skills/eda-review/references/checks/frontend.md +19 -0
- package/skills/eda-review/references/checks/infra.md +16 -0
- package/skills/eda-review/references/checks/performance.md +21 -0
- package/skills/eda-review/references/checks/plan-alignment.md +16 -0
- package/skills/eda-review/references/checks/previous-reviews.md +9 -0
- package/skills/eda-review/references/checks/references.md +11 -0
- package/skills/eda-review/references/checks/rules.md +16 -0
- package/skills/eda-review/references/checks/security.md +26 -0
- package/skills/eda-review/references/checks/seo.md +16 -0
- package/skills/eda-review/references/checks/tests.md +18 -0
- package/skills/eda-review/references/defects.md +24 -0
- package/skills/eda-review/references/triage.md +23 -0
- package/skills/eda-roadmap/SKILL.md +2 -4
- package/skills/eda-send-review/SKILL.md +3 -5
- package/skills/eda-worktree/SKILL.md +2 -3
- 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
|
|
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
|
|
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
|
}
|