konveyer 0.1.0 → 0.1.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 +5 -3
- package/bin/cli.js +35 -3
- package/package.json +2 -1
- package/templates/CLAUDE-jira.md +17 -0
package/README.md
CHANGED
|
@@ -8,10 +8,12 @@
|
|
|
8
8
|
|
|
9
9
|
```bash
|
|
10
10
|
npx konveyer # что это, что уже настроено и что делать дальше
|
|
11
|
-
npx konveyer init #
|
|
11
|
+
npx konveyer init # положить регламент, промпты и Makefile в свой проект
|
|
12
12
|
npx konveyer prompt 1 # напечатать промпт (| pbcopy — сразу в буфер)
|
|
13
13
|
```
|
|
14
14
|
|
|
15
|
+
`init` кладёт в проект регламент работы с Jira (`CLAUDE.md`), четыре промпта и `Makefile`.
|
|
16
|
+
Существующие файлы не перезаписываются: чужой `CLAUDE.md` дополняется разделом, остальное пропускается.
|
|
15
17
|
Глобально ничего не ставится, зависимостей у пакета нет — `npx` отрабатывает мгновенно.
|
|
16
18
|
|
|
17
19
|
## Что внутри
|
|
@@ -41,11 +43,11 @@ npx konveyer prompt 1 # напечатать промпт (| pbcopy — сраз
|
|
|
41
43
|
|
|
42
44
|
Этот репозиторий — уровень 1: одна задача за раз. Полный конвейер, на котором мы разрабатываем [CHATBOSS.PRO](https://chatboss.pro), — это эпики и волны, git worktree на каждую задачу, два AI-ревьюера (код + архитектура) и staged deploy:
|
|
43
45
|
|
|
44
|
-
-
|
|
46
|
+
- **Приложение «Конвейер тасков»** — [посмотреть, как это работает](https://html5-studio.ru/uslugi/konveyer)
|
|
45
47
|
- **Настройка под ключ** — [форматы и цены](https://html5-studio.ru/uslugi/ai-konveyer-zadach)
|
|
46
48
|
|
|
47
49
|
## Обновления
|
|
48
50
|
|
|
49
|
-
Репозиторий пополняется по мере
|
|
51
|
+
Репозиторий пополняется по мере развития конвейера. Нажмите **Watch** (или ⭐), чтобы получить весточку.
|
|
50
52
|
|
|
51
53
|
Вопросы: Telegram [@paul_cop](https://t.me/paul_cop) · [html5-studio.ru](https://html5-studio.ru)
|
package/bin/cli.js
CHANGED
|
@@ -67,7 +67,7 @@ function promo() {
|
|
|
67
67
|
console.log('git worktree на каждую задачу, два AI-ревьюера (код и архитектура),');
|
|
68
68
|
console.log('приёмка волн и деплой. Несколько агентов работают параллельно и');
|
|
69
69
|
console.log('не мешают друг другу.');
|
|
70
|
-
console.log(`
|
|
70
|
+
console.log(` Как это работает: ${accent('https://html5-studio.ru/uslugi/konveyer')}`);
|
|
71
71
|
console.log(` Вопросы автору: ${accent('https://t.me/paul_cop')}`);
|
|
72
72
|
}
|
|
73
73
|
|
|
@@ -99,6 +99,35 @@ function welcome() {
|
|
|
99
99
|
console.log('');
|
|
100
100
|
}
|
|
101
101
|
|
|
102
|
+
/**
|
|
103
|
+
* Регламент работы с Jira в CLAUDE.md — память Claude Code между сессиями.
|
|
104
|
+
* Раньше его записывал промпт №2; теперь кладём сразу, чтобы после одной
|
|
105
|
+
* команды у человека были и правила, и промпты.
|
|
106
|
+
*
|
|
107
|
+
* Чужой CLAUDE.md не перезаписываем никогда: в проекте человека это его
|
|
108
|
+
* файл с его правилами — дописываем раздел в конец и только если его нет.
|
|
109
|
+
*/
|
|
110
|
+
const CLAUDE_SECTION = '## Работа с Jira';
|
|
111
|
+
|
|
112
|
+
function ensureClaudeMd() {
|
|
113
|
+
const target = path.join(process.cwd(), 'CLAUDE.md');
|
|
114
|
+
const section = fs.readFileSync(path.join(ROOT, 'templates', 'CLAUDE-jira.md'), 'utf8');
|
|
115
|
+
|
|
116
|
+
if (!fs.existsSync(target)) {
|
|
117
|
+
fs.writeFileSync(target, `# Правила проекта\n\n${section}`);
|
|
118
|
+
console.log(` ${ok('✓')} CLAUDE.md — регламент работы с Jira`);
|
|
119
|
+
return true;
|
|
120
|
+
}
|
|
121
|
+
const current = fs.readFileSync(target, 'utf8');
|
|
122
|
+
if (current.includes(CLAUDE_SECTION)) {
|
|
123
|
+
console.log(` ${dim('•')} CLAUDE.md ${dim('— раздел «Работа с Jira» уже есть, не трогаю')}`);
|
|
124
|
+
return false;
|
|
125
|
+
}
|
|
126
|
+
fs.appendFileSync(target, `${current.endsWith('\n') ? '' : '\n'}\n${section}`);
|
|
127
|
+
console.log(` ${ok('✓')} CLAUDE.md — дописал раздел «Работа с Jira»`);
|
|
128
|
+
return true;
|
|
129
|
+
}
|
|
130
|
+
|
|
102
131
|
/** Копирование без перезаписи: чужой файл в проекте человека — не наша вещь. */
|
|
103
132
|
function copyIfAbsent(from, to, label) {
|
|
104
133
|
if (fs.existsSync(to)) {
|
|
@@ -116,6 +145,7 @@ function init() {
|
|
|
116
145
|
console.log(bold(` Раскладываю конвейер в ${cwd}`));
|
|
117
146
|
console.log('');
|
|
118
147
|
|
|
148
|
+
ensureClaudeMd();
|
|
119
149
|
copyIfAbsent(path.join(ROOT, 'prompts'), path.join(cwd, 'prompts'), 'prompts/ — четыре промпта');
|
|
120
150
|
copyIfAbsent(path.join(ROOT, 'Makefile'), path.join(cwd, 'Makefile'), 'Makefile — make task / pr / done');
|
|
121
151
|
|
|
@@ -136,8 +166,10 @@ function init() {
|
|
|
136
166
|
console.log('');
|
|
137
167
|
console.log(bold(' Дальше:'));
|
|
138
168
|
console.log(` 1. Токен Jira: ${accent('https://id.atlassian.com')} → Security → Create API token`);
|
|
139
|
-
console.log(` 2. ${accent('npx konveyer prompt 1')} → вставьте в Claude Code
|
|
140
|
-
console.log(
|
|
169
|
+
console.log(` 2. ${accent('npx konveyer prompt 1')} → вставьте в Claude Code, впишите доступы`);
|
|
170
|
+
console.log(` 3. ${bold('«возьми в работу KAN-1»')} — регламент уже в CLAUDE.md`);
|
|
171
|
+
console.log(dim(' Промпт №2 можно пропустить: регламент положила эта команда.'));
|
|
172
|
+
console.log(dim(' Промпт №4 — когда захотите отдельного AI-ревьюера.'));
|
|
141
173
|
console.log('');
|
|
142
174
|
console.log(warn(' Не забудьте: .env — в .gitignore. В нём токен доступа к вашей Jira.'));
|
|
143
175
|
console.log('');
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "konveyer",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.2",
|
|
4
4
|
"description": "AI-конвейер задач: ИИ берёт тикет из Jira, пишет код, проходит AI-ревью и закрывает задачу. Промпты для Claude Code.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"jira",
|
|
@@ -28,6 +28,7 @@
|
|
|
28
28
|
"files": [
|
|
29
29
|
"bin/",
|
|
30
30
|
"prompts/",
|
|
31
|
+
"templates/",
|
|
31
32
|
"Makefile",
|
|
32
33
|
"README.md",
|
|
33
34
|
"LICENSE"
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
## Работа с Jira
|
|
2
|
+
|
|
3
|
+
- Доступы — в `.env` (`JIRA_BASE_URL`, `JIRA_EMAIL`, `JIRA_API_TOKEN`,
|
|
4
|
+
`JIRA_PROJECT`). Токен не выводить в чат, логи и код. `.env` должен быть
|
|
5
|
+
в `.gitignore`.
|
|
6
|
+
- Команда «возьми в работу {ключ}» — это полный цикл задачи:
|
|
7
|
+
1. Прочитать задачу. Нет критерия приёмки — сформулировать и показать мне
|
|
8
|
+
до старта.
|
|
9
|
+
2. Перевести в работу на доске.
|
|
10
|
+
3. Сделать в коде проекта.
|
|
11
|
+
4. Отдать отдельному субагенту-ревьюеру: приёмка, ошибки, крайние случаи,
|
|
12
|
+
стиль. Замечания исправить до закрытия.
|
|
13
|
+
5. Закрыть задачу (через Review/Testing, если такие колонки есть)
|
|
14
|
+
с комментарием: что сделано, какие файлы затронуты.
|
|
15
|
+
- Крупную задачу — сначала предложить разбить на подзадачи и дождаться
|
|
16
|
+
моего «ок».
|
|
17
|
+
- «Стоп» — аккуратно завершить шаг и записать в Jira честный статус.
|