beadloom 0.1.0__tar.gz

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 (68) hide show
  1. beadloom-0.1.0/.beadloom/_graph/services.yml +67 -0
  2. beadloom-0.1.0/.claude/CLAUDE.md +274 -0
  3. beadloom-0.1.0/.claude/commands/checkpoint.md +182 -0
  4. beadloom-0.1.0/.claude/commands/coordinator.md +195 -0
  5. beadloom-0.1.0/.claude/commands/dev.md +323 -0
  6. beadloom-0.1.0/.claude/commands/epic-init.md +150 -0
  7. beadloom-0.1.0/.claude/commands/review.md +136 -0
  8. beadloom-0.1.0/.claude/commands/templates.md +444 -0
  9. beadloom-0.1.0/.claude/commands/test.md +260 -0
  10. beadloom-0.1.0/.claude/development/PRD.md +462 -0
  11. beadloom-0.1.0/.claude/development/RFC.md +1273 -0
  12. beadloom-0.1.0/.claude/development/docs/features/BDL-001/CONTEXT.md +97 -0
  13. beadloom-0.1.0/.claude/development/docs/features/BDL-001/PLAN.md +333 -0
  14. beadloom-0.1.0/.gitattributes +3 -0
  15. beadloom-0.1.0/.github/workflows/ci.yml +36 -0
  16. beadloom-0.1.0/.github/workflows/pypi-publish.yml +74 -0
  17. beadloom-0.1.0/.gitignore +32 -0
  18. beadloom-0.1.0/CONTRIBUTING.md +254 -0
  19. beadloom-0.1.0/LICENSE +21 -0
  20. beadloom-0.1.0/PKG-INFO +233 -0
  21. beadloom-0.1.0/README.md +199 -0
  22. beadloom-0.1.0/SECURITY.md +90 -0
  23. beadloom-0.1.0/docs/architecture.md +73 -0
  24. beadloom-0.1.0/docs/cli-reference.md +148 -0
  25. beadloom-0.1.0/docs/context-oracle.md +85 -0
  26. beadloom-0.1.0/docs/getting-started.md +75 -0
  27. beadloom-0.1.0/docs/graph-format.md +66 -0
  28. beadloom-0.1.0/docs/mcp-server.md +109 -0
  29. beadloom-0.1.0/docs/sync-engine.md +61 -0
  30. beadloom-0.1.0/pyproject.toml +109 -0
  31. beadloom-0.1.0/src/beadloom/__init__.py +3 -0
  32. beadloom-0.1.0/src/beadloom/cache.py +96 -0
  33. beadloom-0.1.0/src/beadloom/cli.py +731 -0
  34. beadloom-0.1.0/src/beadloom/code_indexer.py +133 -0
  35. beadloom-0.1.0/src/beadloom/context_builder.py +379 -0
  36. beadloom-0.1.0/src/beadloom/db.py +146 -0
  37. beadloom-0.1.0/src/beadloom/doc_indexer.py +183 -0
  38. beadloom-0.1.0/src/beadloom/doctor.py +111 -0
  39. beadloom-0.1.0/src/beadloom/graph_loader.py +143 -0
  40. beadloom-0.1.0/src/beadloom/mcp_server.py +276 -0
  41. beadloom-0.1.0/src/beadloom/onboarding.py +199 -0
  42. beadloom-0.1.0/src/beadloom/py.typed +0 -0
  43. beadloom-0.1.0/src/beadloom/reindex.py +272 -0
  44. beadloom-0.1.0/src/beadloom/sync_engine.py +137 -0
  45. beadloom-0.1.0/tests/__init__.py +0 -0
  46. beadloom-0.1.0/tests/conftest.py +20 -0
  47. beadloom-0.1.0/tests/test_cache.py +82 -0
  48. beadloom-0.1.0/tests/test_cli_ctx.py +240 -0
  49. beadloom-0.1.0/tests/test_cli_graph.py +104 -0
  50. beadloom-0.1.0/tests/test_cli_hooks.py +86 -0
  51. beadloom-0.1.0/tests/test_cli_mcp.py +92 -0
  52. beadloom-0.1.0/tests/test_cli_reindex.py +238 -0
  53. beadloom-0.1.0/tests/test_cli_status.py +89 -0
  54. beadloom-0.1.0/tests/test_cli_sync_auto.py +81 -0
  55. beadloom-0.1.0/tests/test_cli_sync_check.py +130 -0
  56. beadloom-0.1.0/tests/test_cli_sync_update.py +116 -0
  57. beadloom-0.1.0/tests/test_code_indexer.py +250 -0
  58. beadloom-0.1.0/tests/test_context_builder.py +426 -0
  59. beadloom-0.1.0/tests/test_db.py +319 -0
  60. beadloom-0.1.0/tests/test_doc_indexer.py +210 -0
  61. beadloom-0.1.0/tests/test_doctor.py +134 -0
  62. beadloom-0.1.0/tests/test_graph_loader.py +277 -0
  63. beadloom-0.1.0/tests/test_integration.py +678 -0
  64. beadloom-0.1.0/tests/test_mcp_server.py +269 -0
  65. beadloom-0.1.0/tests/test_onboarding.py +180 -0
  66. beadloom-0.1.0/tests/test_reindex.py +398 -0
  67. beadloom-0.1.0/tests/test_sync_engine.py +183 -0
  68. beadloom-0.1.0/uv.lock +1325 -0
@@ -0,0 +1,67 @@
1
+ nodes:
2
+ - ref_id: beadloom
3
+ kind: service
4
+ summary: "Beadloom CLI + MCP server — Context Oracle + Doc Sync Engine"
5
+ source: src/beadloom/
6
+ docs:
7
+ - docs/architecture.md
8
+ - docs/getting-started.md
9
+
10
+ - ref_id: context-oracle
11
+ kind: domain
12
+ summary: "Context bundle building via BFS graph traversal"
13
+ docs:
14
+ - docs/context-oracle.md
15
+
16
+ - ref_id: doc-sync
17
+ kind: domain
18
+ summary: "Doc-code synchronization tracking and stale detection"
19
+ docs:
20
+ - docs/sync-engine.md
21
+
22
+ - ref_id: mcp-server
23
+ kind: service
24
+ summary: "MCP stdio server with 5 tools for AI agents"
25
+ docs:
26
+ - docs/mcp-server.md
27
+
28
+ - ref_id: cli
29
+ kind: service
30
+ summary: "Click-based CLI with 11 commands"
31
+ docs:
32
+ - docs/cli-reference.md
33
+
34
+ - ref_id: graph-format
35
+ kind: domain
36
+ summary: "YAML graph format specification and loader"
37
+ docs:
38
+ - docs/graph-format.md
39
+
40
+ edges:
41
+ - src: context-oracle
42
+ dst: beadloom
43
+ kind: part_of
44
+ - src: doc-sync
45
+ dst: beadloom
46
+ kind: part_of
47
+ - src: mcp-server
48
+ dst: beadloom
49
+ kind: part_of
50
+ - src: cli
51
+ dst: beadloom
52
+ kind: part_of
53
+ - src: graph-format
54
+ dst: beadloom
55
+ kind: part_of
56
+ - src: mcp-server
57
+ dst: context-oracle
58
+ kind: uses
59
+ - src: cli
60
+ dst: context-oracle
61
+ kind: uses
62
+ - src: cli
63
+ dst: doc-sync
64
+ kind: uses
65
+ - src: cli
66
+ dst: graph-format
67
+ kind: uses
@@ -0,0 +1,274 @@
1
+ # CLAUDE.md — Ядро мультиагентной разработки
2
+
3
+ > **Версия:** 3.0 (Optimized)
4
+ > **Интеграция:** steveyegge/beads CLI
5
+ > **Skills:** `/epic-init`, `/dev`, `/review`, `/test`, `/coordinator`, `/templates`, `/checkpoint`
6
+
7
+ ---
8
+
9
+ ## 0. КРИТИЧЕСКИЕ ПРАВИЛА
10
+
11
+ > **ЧИТАТЬ ПЕРВЫМ. ВЫПОЛНЯТЬ ВСЕГДА.**
12
+
13
+ ### ПЕРЕД любой работой
14
+
15
+ ```bash
16
+ # 1. Проверить доступные задачи
17
+ bd ready
18
+
19
+ # 2. Взять задачу
20
+ bd update <bead-id> --status in_progress --claim
21
+
22
+ # 3. Прочитать контекст
23
+ # .claude/development/docs/features/{ISSUE-KEY}/CONTEXT.md
24
+ # .claude/development/docs/features/{ISSUE-KEY}/ACTIVE.md
25
+
26
+ # 4. Подтвердить пользователю понимание состояния
27
+ ```
28
+
29
+ ### ВО ВРЕМЯ работы
30
+
31
+ ```bash
32
+ # Checkpoint каждые 30 мин или 5 шагов
33
+ bd comments add <bead-id> "CHECKPOINT: [что сделано]"
34
+
35
+ # Обновлять ACTIVE.md после каждого значимого действия
36
+ ```
37
+
38
+ ### ПРИ ЗАВЕРШЕНИИ bead
39
+
40
+ ```bash
41
+ # 1. Тесты проходят
42
+ uv run pytest
43
+
44
+ # 2. Финальный checkpoint
45
+ bd comments add <bead-id> "ЗАВЕРШЕНО: [результаты]"
46
+
47
+ # 3. Закрыть bead
48
+ bd close <bead-id>
49
+ ```
50
+
51
+ ---
52
+
53
+ ## 0.1 Проект: Beadloom
54
+
55
+ - **Стек:** Python 3.10+, SQLite (WAL), Click + Rich (CLI), tree-sitter, MCP (stdio)
56
+ - **Дистрибуция:** PyPI (`uv tool install beadloom`)
57
+ - **Тесты:** pytest + pytest-cov (≥80% покрытие)
58
+ - **Линтер/форматтер:** ruff (lint + format)
59
+ - **Типизация:** mypy --strict
60
+ - **Документация проекта:** `.claude/development/PRD.md`, `.claude/development/RFC.md`
61
+ - **Фазы:** 0-Onboarding → 1-Context Oracle → 2-MCP → 3-Doc Sync → 4-Polish
62
+
63
+ ---
64
+
65
+ ## 1. Skills — Динамическая загрузка
66
+
67
+ | Ситуация | Команда | Описание |
68
+ |----------|---------|----------|
69
+ | Новый эпик/фича | `/epic-init` | Сетап, стандарты, согласование |
70
+ | Разработка кода | `/dev` | TDD, паттерны, workflow |
71
+ | Code review | `/review` | Чеклисты качества |
72
+ | Написание тестов | `/test` | AAA pattern, покрытие |
73
+ | Параллельная работа | `/coordinator` | Распределение, синхронизация |
74
+ | Нужны шаблоны | `/templates` | PRD, RFC, CONTEXT, PLAN |
75
+ | Создать checkpoint | `/checkpoint` | Формат, правила |
76
+
77
+ **Правило:** Вызывай skill когда нужна детальная инструкция.
78
+
79
+ ---
80
+
81
+ ## 2. Beads CLI — Essentials
82
+
83
+ ```bash
84
+ # Доступные задачи (без блокеров)
85
+ bd ready
86
+
87
+ # Все задачи
88
+ bd list
89
+
90
+ # Детали + история
91
+ bd show <id>
92
+ bd comments <id>
93
+
94
+ # Взять задачу
95
+ bd update <id> --status in_progress --claim
96
+
97
+ # Добавить checkpoint (НЕ перетирает описание)
98
+ bd comments add <id> "текст checkpoint"
99
+
100
+ # Закрыть задачу
101
+ bd close <id>
102
+
103
+ # Граф зависимостей
104
+ bd graph --all
105
+
106
+ # Добавить зависимость
107
+ bd dep add <id> <depends-on-id>
108
+ ```
109
+
110
+ **ВАЖНО:**
111
+ - `bd comments add` — для checkpoints (сохраняет историю)
112
+ - `bd update --append-notes` — для заметок
113
+ - НИКОГДА не работай над задачей без `--claim`
114
+ - ВСЕГДА закрывай через `bd close`
115
+
116
+ ---
117
+
118
+ ## 3. Файловая память (защита от автокомпакта)
119
+
120
+ ```
121
+ .claude/development/docs/features/{ISSUE-KEY}/
122
+ ├── CONTEXT.md ← ЯДРО: состояние, решения, стандарты
123
+ ├── ACTIVE.md ← ФОКУС: текущая работа, прогресс
124
+ ├── RFC.md ← АРХИТЕКТУРА: техническое решение
125
+ ├── PLAN.md ← DAG: beads и зависимости
126
+ └── PRD.md ← ТРЕБОВАНИЯ: бизнес-цели
127
+ ```
128
+
129
+ | Приоритет | Файл | Когда читать |
130
+ |-----------|------|--------------|
131
+ | **P0** | CONTEXT.md | Всегда в начале |
132
+ | **P0** | ACTIVE.md | Всегда в начале |
133
+ | **P1** | beads comments | При возобновлении работы |
134
+
135
+ **Правило:** НИКОГДА не полагаться на "память" из чата. Читать файлы!
136
+
137
+ ---
138
+
139
+ ## 4. Роли агентов
140
+
141
+ | Роль | Skill | Когда использовать |
142
+ |------|-------|-------------------|
143
+ | **Разработчик** | `/dev` | Реализация beads |
144
+ | **Ревьювер** | `/review` | Проверка качества |
145
+ | **Тестировщик** | `/test` | Написание тестов |
146
+ | **Координатор** | `/coordinator` | Мультиагентная работа |
147
+
148
+ ### Один агент
149
+ Используй `/dev` для разработки, `/checkpoint` для сохранения прогресса.
150
+
151
+ ### Мультиагентный режим
152
+ Координатор использует `/coordinator` для распределения.
153
+ Субагенты используют соответствующие роли.
154
+
155
+ ---
156
+
157
+ ## 5. DAG и приоритеты
158
+
159
+ | Приоритет | Описание | Правило |
160
+ |-----------|----------|---------|
161
+ | **P0** | Critical, блокирует другие | Выполнять первым |
162
+ | **P1** | High, важно | После P0 |
163
+ | **P2** | Medium, улучшения | Когда есть время |
164
+ | **P3** | Low, nice-to-have | В последнюю очередь |
165
+
166
+ **Правила:**
167
+ - Брать только из `bd ready`
168
+ - НЕ брать bead с невыполненными зависимостями
169
+ - НЕ брать P2/P3 пока есть P0/P1
170
+
171
+ ---
172
+
173
+ ## 6. Git
174
+
175
+ ```
176
+ Формат коммитов:
177
+ [{ISSUE-KEY}] <type>: <описание на русском>
178
+
179
+ Типы: feat, fix, refactor, docs, test, chore
180
+
181
+ Пример:
182
+ [MCP-001] feat: добавлен health endpoint
183
+ ```
184
+
185
+ ---
186
+
187
+ ## 7. Антипаттерны (НИКОГДА)
188
+
189
+ ### Планирование
190
+ - Начинать без согласованного плана
191
+ - Брать bead с незавершёнными зависимостями
192
+ - Менять DAG без уведомления пользователя
193
+
194
+ ### Работа
195
+ - Начинать без чтения CONTEXT.md
196
+ - Полагаться на память чата
197
+ - Работать над несколькими beads одновременно
198
+ - Игнорировать checkpoints
199
+
200
+ ### Завершение
201
+ - Завершать bead без `bd comments add`
202
+ - Завершать без `bd close`
203
+ - Коммитить с падающими тестами
204
+
205
+ ### Код
206
+ - Использовать `Any` / `# type: ignore` без причины
207
+ - Оставлять `print()` / `breakpoint()`
208
+ - Писать код без теста (нарушение TDD)
209
+ - Голый `except:` без указания типа исключения
210
+ - `import *`
211
+ - Мутабельные аргументы по умолчанию (`def f(x=[]):`)
212
+
213
+ ---
214
+
215
+ ## 8. Quick Reference
216
+
217
+ ### Старт сессии
218
+ ```bash
219
+ bd ready
220
+ bd update <id> --status in_progress --claim
221
+ # Читать CONTEXT.md, ACTIVE.md
222
+ # Подтвердить пользователю
223
+ ```
224
+
225
+ ### Во время работы
226
+ ```bash
227
+ # Каждые 30 мин
228
+ bd comments add <id> "CHECKPOINT: ..."
229
+ # Обновить ACTIVE.md
230
+ ```
231
+
232
+ ### Завершение bead
233
+ ```bash
234
+ uv run pytest
235
+ bd comments add <id> "ЗАВЕРШЕНО: ..."
236
+ bd close <id>
237
+ bd ready # что разблокировалось?
238
+ ```
239
+
240
+ ### Новый эпик
241
+ ```
242
+ /epic-init
243
+ ```
244
+
245
+ ### Нужны шаблоны
246
+ ```
247
+ /templates
248
+ ```
249
+
250
+ ---
251
+
252
+ ## 9. Чеклист агента
253
+
254
+ ### При старте
255
+ - [ ] `bd ready` → выбрал задачу
256
+ - [ ] `bd update <id> --status in_progress --claim`
257
+ - [ ] Прочитал CONTEXT.md и ACTIVE.md
258
+ - [ ] Подтвердил понимание пользователю
259
+
260
+ ### Во время работы
261
+ - [ ] Обновляю ACTIVE.md
262
+ - [ ] Checkpoint в beads каждые 30 мин
263
+ - [ ] Следую TDD (если код)
264
+
265
+ ### При завершении
266
+ - [ ] Тесты проходят
267
+ - [ ] `bd comments add` — финальный checkpoint
268
+ - [ ] `bd close <id>`
269
+ - [ ] ACTIVE.md очищен
270
+
271
+ ---
272
+
273
+ > **Нужна детальная инструкция?** Вызови соответствующий skill:
274
+ > `/epic-init` | `/dev` | `/review` | `/test` | `/coordinator` | `/templates` | `/checkpoint`
@@ -0,0 +1,182 @@
1
+ # /checkpoint — Создание чекпоинта
2
+
3
+ > **Вызывать:** каждые 30 мин, после 5 шагов, при завершении bead
4
+ > **Цель:** защита от автокомпакта, сохранение прогресса
5
+
6
+ ---
7
+
8
+ ## Когда создавать checkpoint
9
+
10
+ | Триггер | Обязательность |
11
+ |---------|----------------|
12
+ | Завершён bead | **ОБЯЗАТЕЛЬНО** |
13
+ | Выполнено 5+ шагов | ОБЯЗАТЕЛЬНО |
14
+ | Прошло 30+ минут | ОБЯЗАТЕЛЬНО |
15
+ | Перед переключением задачи | ОБЯЗАТЕЛЬНО |
16
+ | Принято архитектурное решение | Рекомендуется |
17
+ | Обнаружена проблема | Рекомендуется |
18
+
19
+ ---
20
+
21
+ ## Checkpoint в beads (основной способ)
22
+
23
+ ```bash
24
+ bd comments add <bead-id> "$(cat <<'EOF'
25
+ ═══ CHECKPOINT: YYYY-MM-DD HH:MM ═══
26
+
27
+ ВЫПОЛНЕНО:
28
+ - Шаг 1
29
+ - Шаг 2
30
+ - Шаг 3
31
+
32
+ РЕШЕНИЯ:
33
+ - Решение X: причина Y
34
+
35
+ ИЗМЕНЁННЫЕ ФАЙЛЫ:
36
+ - src/path/file1.py — что изменено
37
+ - src/path/file2.py — что изменено
38
+
39
+ СЛЕДУЮЩИЕ ШАГИ:
40
+ 1. Шаг A
41
+ 2. Шаг B
42
+
43
+ БЛОКЕРЫ: [нет | описание]
44
+ EOF
45
+ )"
46
+ ```
47
+
48
+ ---
49
+
50
+ ## Checkpoint при завершении bead
51
+
52
+ ```bash
53
+ bd comments add <bead-id> "$(cat <<'EOF'
54
+ ═══ BEAD ЗАВЕРШЁН: YYYY-MM-DD HH:MM ═══
55
+
56
+ ЧТО СДЕЛАНО:
57
+ - Пункт 1
58
+ - Пункт 2
59
+ - Пункт 3
60
+
61
+ РЕШЕНИЯ В ПРОЦЕССЕ:
62
+ - Решение X: причина Y
63
+ - Решение Z: причина W
64
+
65
+ ИЗВЕСТНЫЕ ОГРАНИЧЕНИЯ/TODO:
66
+ - TODO 1
67
+ - Ограничение 1
68
+
69
+ ТЕСТЫ:
70
+ - Unit: XX passed
71
+ - Integration: XX passed
72
+ - Покрытие: XX%
73
+
74
+ ФАЙЛЫ:
75
+ - src/new-file.py — новый модуль
76
+ - src/updated.py — обновлён
77
+ EOF
78
+ )"
79
+
80
+ # Затем закрыть
81
+ bd close <bead-id>
82
+ ```
83
+
84
+ ---
85
+
86
+ ## Обновление ACTIVE.md
87
+
88
+ Параллельно с beads checkpoint, обновить ACTIVE.md:
89
+
90
+ ```markdown
91
+ ## Заметки по ходу работы
92
+
93
+ ### [HH:MM] CHECKPOINT
94
+ **Выполнено:**
95
+ - Шаг 1
96
+ - Шаг 2
97
+
98
+ **Решения:**
99
+ - Решение X
100
+
101
+ **Следующие шаги:**
102
+ 1. Шаг A
103
+ 2. Шаг B
104
+ ```
105
+
106
+ ---
107
+
108
+ ## Checkpoint в чат (для пользователя)
109
+
110
+ ```
111
+ ═══════════════════════════════════════════════════════
112
+ CHECKPOINT: {ISSUE-KEY} | BEAD-XX | YYYY-MM-DD HH:MM
113
+ ═══════════════════════════════════════════════════════
114
+
115
+ ## Состояние
116
+ - Фаза: Development
117
+ - Bead: BEAD-XX (In Progress)
118
+
119
+ ## Выполнено
120
+ 1. [действие 1]
121
+ 2. [действие 2]
122
+
123
+ ## Ключевые решения
124
+ - [решение]: [причина]
125
+
126
+ ## Изменённые файлы
127
+ - `path/to/file.py` — [что]
128
+
129
+ ## Следующие шаги
130
+ 1. [шаг 1]
131
+ 2. [шаг 2]
132
+
133
+ ## Команда для продолжения
134
+ "Продолжи работу над {ISSUE-KEY}"
135
+
136
+ ═══════════════════════════════════════════════════════
137
+ ```
138
+
139
+ ---
140
+
141
+ ## Защита от автокомпакта
142
+
143
+ **Проблема:** При длительной работе Claude сжимает ранний контекст.
144
+
145
+ **Решение:** Вся критическая информация в файлах:
146
+
147
+ | Информация | Где хранится |
148
+ |------------|--------------|
149
+ | Текущее состояние | CONTEXT.md |
150
+ | План и прогресс | ACTIVE.md |
151
+ | Детали работы | `bd comments <bead-id>` |
152
+ | Архитектура | RFC.md |
153
+ | DAG | PLAN.md + beads |
154
+
155
+ **Правило:** Никогда не полагаться на "память" из чата. Всегда читать файлы при возобновлении работы.
156
+
157
+ ---
158
+
159
+ ## Восстановление после автокомпакта
160
+
161
+ Если контекст был сжат:
162
+
163
+ ```bash
164
+ # 1. Прочитать состояние из beads
165
+ bd show <bead-id>
166
+ bd comments <bead-id>
167
+
168
+ # 2. Прочитать файлы
169
+ # - CONTEXT.md
170
+ # - ACTIVE.md
171
+
172
+ # 3. Продолжить с последнего checkpoint
173
+ ```
174
+
175
+ ---
176
+
177
+ ## Чеклист checkpoint
178
+
179
+ - [ ] Добавлен comment в beads: `bd comments add`
180
+ - [ ] ACTIVE.md обновлён (заметки, прогресс)
181
+ - [ ] CONTEXT.md обновлён (если были решения)
182
+ - [ ] Пользователь информирован (checkpoint в чат)