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 CHANGED
@@ -8,10 +8,12 @@
8
8
 
9
9
  ```bash
10
10
  npx konveyer # что это, что уже настроено и что делать дальше
11
- npx konveyer init # разложить промпты и Makefile в свой проект
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
- - **Мануал «AI-конвейер своими руками»** — [предзаказ 2 990 ](https://html5-studio.ru/manual)
46
+ - **Приложение «Конвейер тасков»** — [посмотреть, как это работает](https://html5-studio.ru/uslugi/konveyer)
45
47
  - **Настройка под ключ** — [форматы и цены](https://html5-studio.ru/uslugi/ai-konveyer-zadach)
46
48
 
47
49
  ## Обновления
48
50
 
49
- Репозиторий пополняется по мере выхода глав мануала. Нажмите **Watch** (или ⭐), чтобы получить весточку.
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(` Ранний доступ: ${accent('https://html5-studio.ru/manual')}`);
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(' 3. Промпты 2 и 3 следом. Промпт 4 когда захотите ревью');
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.0",
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 честный статус.