Skip to content
This repository was archived by the owner on Sep 11, 2026. It is now read-only.

Commit b2cf8d0

Browse files
vitaliytvclaude
andauthored
feat(plugins): фаза 5b lang-плагінів — doc-files JS-специфіка у @7n/rules-lang-js, ядро без вбудованих кодових розширень (#143)
- @7n/rules-lang-js: маніфест декларує docFiles.extensions (js/mjs/ts/vue + OKF-типи) і handler doc-files; extractFacts (факт-лист js/mjs/ts) та extractUnits (oxc AST юніт-шар) переїхали з ядра - ядро: docgen-scan/docgen-crc/docgen-gen читають розширення, типи й екстрактори лише з активних lang-плагінів; SOURCE_EXTENSIONS/EXT_TYPES/units-js/docgen-extract/units-фасад видалені - без активного lang-плагіна скан не бачить джерел (graceful тиша); тести doc-files — фейковий lang-js через installFakeLangJsPlugin Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
1 parent 7c77d05 commit b2cf8d0

39 files changed

Lines changed: 250 additions & 211 deletions

File tree

‎.claude/commands/n-doc-files.md‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
---
22
description: >-
3-
Обовʼязковий крок задачі (як lint): для кожного зміненого/нового кодового файлу (js/mjs/ts/vue/py) JS-оркестрована генерація лаконічної поведінкової української md-документації у теку docs/ поряд із кодом, зі звіркою застарілості за CRC у frontmatter
3+
Обовʼязковий крок задачі (як lint): для кожного зміненого/нового кодового файлу (розширення декларують lang-плагіни: js/mjs/ts/vue — lang-js, rs/py — lang-rust/lang-python) JS-оркестрована генерація лаконічної поведінкової української md-документації у теку docs/ поряд із кодом, зі звіркою застарілості за CRC у frontmatter
44
---
55

66
# n-doc-files

‎.claude/commands/n-taze.md‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
---
22
description: >-
3-
Оновлення версій модулів проекту (bun/npm і, якщо є Cargo.toml, Rust-крейти через cargo-edit) з аналізом major-змін і автоматичним рефакторингом несумісного коду
3+
Оновлення версій модулів проекту до останніх (усі екосистеми — JS/npm, Rust, Python тощо — через активні lang-плагіни) з аналізом major-змін і автоматичним рефакторингом несумісного коду
44
---
55

66
# n-taze

‎.cursor/skills/n-doc-files/SKILL.md‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
---
22
name: doc-files
33
description: >-
4-
Обовʼязковий крок задачі (як lint): для кожного зміненого/нового кодового файлу (js/mjs/ts/vue/py) JS-оркестрована генерація лаконічної поведінкової української md-документації у теку docs/ поряд із кодом, зі звіркою застарілості за CRC у frontmatter
4+
Обовʼязковий крок задачі (як lint): для кожного зміненого/нового кодового файлу (розширення декларують lang-плагіни: js/mjs/ts/vue — lang-js, rs/py — lang-rust/lang-python) JS-оркестрована генерація лаконічної поведінкової української md-документації у теку docs/ поряд із кодом, зі звіркою застарілості за CRC у frontmatter
55
version: '1.0'
66
---
77

@@ -95,6 +95,6 @@ preflight). Degraded — не помилка: дока існує, CRC свіж
9595

9696
- Не комітити автоматично — користувач вирішує, коли комітити згенеровану доку.
9797
- Scanner ігнорує `node_modules`, `dist`, `.git`, `__pycache__`, `coverage`, `.cursor`, `.claude`,
98-
усі теки `docs/`, а також `*.test.*` / `*.spec.*` / `*.stories.*` / `*.d.ts`. Кореневий repo `docs/` —
98+
усі теки `docs/`, а також `*.test.*` / `*.spec.*` / `*.d.ts`. Кореневий repo `docs/` —
9999
system-wide only: file-level docs туди не пишуться. Список glob-ів — `docgen-ignore.mjs`.
100100
- Агрегуюча документація (module-summary, доменні доки) — окремий скіл `doc-aggregate`, за запитом.

‎.pi/skills/n-doc-files/SKILL.md‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
---
22
name: n-doc-files
33
description: >-
4-
Обовʼязковий крок задачі (як lint): для кожного зміненого/нового кодового файлу (js/mjs/ts/vue/py) JS-оркестрована генерація лаконічної поведінкової української md-документації у теку docs/ поряд із кодом, зі звіркою застарілості за CRC у frontmatter
4+
Обовʼязковий крок задачі (як lint): для кожного зміненого/нового кодового файлу (розширення декларують lang-плагіни: js/mjs/ts/vue — lang-js, rs/py — lang-rust/lang-python) JS-оркестрована генерація лаконічної поведінкової української md-документації у теку docs/ поряд із кодом, зі звіркою застарілості за CRC у frontmatter
55
---
66

77
# n-doc-files

‎.pi/skills/n-taze/SKILL.md‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
---
22
name: n-taze
33
description: >-
4-
Оновлення версій модулів проекту (bun/npm і, якщо є Cargo.toml, Rust-крейти через cargo-edit) з аналізом major-змін і автоматичним рефакторингом несумісного коду
4+
Оновлення версій модулів проекту до останніх (усі екосистеми — JS/npm, Rust, Python тощо — через активні lang-плагіни) з аналізом major-змін і автоматичним рефакторингом несумісного коду
55
---
66

77
# n-taze

‎AGENTS.md‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -38,11 +38,11 @@ The primary development rules are stored in the Cursor rules directory:
3838
- `.cursor/skills/mdc-check/SKILL.md` — Проаналізувати правило в npm/mdc: максимум перевірюваної логіки й деталей — у check-{id}.mjs з зрозумілими коментарями/JSDoc; у .mdc залишати людинозрозумілий зміст без дублювання алгоритму перевірки
3939
- `.cursor/skills/n-adr-normalize/SKILL.md` — Ручний запуск ADR-нормалізації — обхід порогу й min-interval, прогон одного батчу чернеток через LLM, перегляд результату через git diff
4040
- `.cursor/skills/n-brainstorming/SKILL.md` — Фасилітація структурованої генерації ідей для будь-якої теми — продуктові фічі, архітектурні рішення, бізнес-стратегія, назви, маркетинг, вирішення проблем. ОБОВ'ЯЗКОВО використовуй цей skill, коли користувач каже "давай побрейнштормимо", "накидай ідей", "хочу подумати над X", "які є варіанти для...", просить допомогти придумати щось з нуля, або коли задача явно на стадії "ще не зрозуміло що робити" (на відміну від "вже зрозуміло що робити, допоможи зробити"). Не використовуй для чистого уточнення вимог до вже визначеної фічі (це просто уточнюючі питання, без техніки генерації) і не використовуй, якщо користувач вже приніс готове рішення і просить його реалізувати.
41-
- `.cursor/skills/n-doc-files/SKILL.md` — Обовʼязковий крок задачі (як lint): для кожного зміненого/нового кодового файлу (js/mjs/ts/vue/py) JS-оркестрована генерація лаконічної поведінкової української md-документації у теку docs/ поряд із кодом, зі звіркою застарілості за CRC у frontmatter
41+
- `.cursor/skills/n-doc-files/SKILL.md` — Обовʼязковий крок задачі (як lint): для кожного зміненого/нового кодового файлу (розширення декларують lang-плагіни: js/mjs/ts/vue — lang-js, rs/py — lang-rust/lang-python) JS-оркестрована генерація лаконічної поведінкової української md-документації у теку docs/ поряд із кодом, зі звіркою застарілості за CRC у frontmatter
4242
- `.cursor/skills/n-lint/SKILL.md` — Запустити дельта-лінт (npx @7n/rules lint) по змінених файлах vs origin, виправити порушення й підтвердити чистий вихід
4343
- `.cursor/skills/n-llm-patch/SKILL.md` — Підготовка самодостатнього текстового промпта для іншого Claude/Cursor-агента — read-only аналіз CWD без жодних змін у поточному репо
4444
- `.cursor/skills/n-publish-telegram/SKILL.md` — Підготовка матеріалу з поточного контексту для публікації в Telegram-каналі команди
45-
- `.cursor/skills/n-taze/SKILL.md` — Оновлення версій модулів проекту (bun/npm і, якщо є Cargo.toml, Rust-крейти через cargo-edit) з аналізом major-змін і автоматичним рефакторингом несумісного коду
45+
- `.cursor/skills/n-taze/SKILL.md` — Оновлення версій модулів проекту до останніх (усі екосистеми — JS/npm, Rust, Python тощо — через активні lang-плагіни) з аналізом major-змін і автоматичним рефакторингом несумісного коду
4646

4747
## Commands
4848

‎CLAUDE.md‎

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
Ніколи не змінюй, не видаляй і не створюй файли у цих директоріях:
66

77
- `.claude/worktrees/`
8+
- `npm/schemas/vendor/`
89

910
@.cursor/rules/conftest.mdc
1011
@.cursor/rules/dev-dep.mdc
@@ -51,13 +52,13 @@
5152
Команда: `/n-adr-normalize`
5253
- `.cursor/skills/n-brainstorming/SKILL.md` — Фасилітація структурованої генерації ідей для будь-якої теми — продуктові фічі, архітектурні рішення, бізнес-стратегія, назви, маркетинг, вирішення проблем. ОБОВ'ЯЗКОВО використовуй цей skill, коли користувач каже "давай побрейнштормимо", "накидай ідей", "хочу подумати над X", "які є варіанти для...", просить допомогти придумати щось з нуля, або коли задача явно на стадії "ще не зрозуміло що робити" (на відміну від "вже зрозуміло що робити, допоможи зробити"). Не використовуй для чистого уточнення вимог до вже визначеної фічі (це просто уточнюючі питання, без техніки генерації) і не використовуй, якщо користувач вже приніс готове рішення і просить його реалізувати.
5354
Команда: `/n-brainstorming`
54-
- `.cursor/skills/n-doc-files/SKILL.md` — Обовʼязковий крок задачі (як lint): для кожного зміненого/нового кодового файлу (js/mjs/ts/vue/py) JS-оркестрована генерація лаконічної поведінкової української md-документації у теку docs/ поряд із кодом, зі звіркою застарілості за CRC у frontmatter
55+
- `.cursor/skills/n-doc-files/SKILL.md` — Обовʼязковий крок задачі (як lint): для кожного зміненого/нового кодового файлу (розширення декларують lang-плагіни: js/mjs/ts/vue — lang-js, rs/py — lang-rust/lang-python) JS-оркестрована генерація лаконічної поведінкової української md-документації у теку docs/ поряд із кодом, зі звіркою застарілості за CRC у frontmatter
5556
Команда: `/n-doc-files`
5657
- `.cursor/skills/n-lint/SKILL.md` — Запустити дельта-лінт (npx @7n/rules lint) по змінених файлах vs origin, виправити порушення й підтвердити чистий вихід
5758
Команда: `/n-lint`
5859
- `.cursor/skills/n-llm-patch/SKILL.md` — Підготовка самодостатнього текстового промпта для іншого Claude/Cursor-агента — read-only аналіз CWD без жодних змін у поточному репо
5960
Команда: `/n-llm-patch`
6061
- `.cursor/skills/n-publish-telegram/SKILL.md` — Підготовка матеріалу з поточного контексту для публікації в Telegram-каналі команди
6162
Команда: `/n-publish-telegram`
62-
- `.cursor/skills/n-taze/SKILL.md` — Оновлення версій модулів проекту (bun/npm і, якщо є Cargo.toml, Rust-крейти через cargo-edit) з аналізом major-змін і автоматичним рефакторингом несумісного коду
63+
- `.cursor/skills/n-taze/SKILL.md` — Оновлення версій модулів проекту до останніх (усі екосистеми — JS/npm, Rust, Python тощо — через активні lang-плагіни) з аналізом major-змін і автоматичним рефакторингом несумісного коду
6364
Команда: `/n-taze`

‎npm/.changes/260719-0948.md‎

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
bump: minor
3+
section: Changed
4+
---
5+
doc-files: ядро без вбудованих кодових розширень (фаза 5b spec lang-plugins-extraction) — перелік розширень, OKF-типи та мовні екстрактори (факти/юніти) приходять лише з декларацій активних lang-плагінів (contributes.docFiles.extensions + handler doc-files); JS-специфіка (extractFacts, units-js, мапа типів js/mjs/ts/vue) переїхала у @7n/rules-lang-js; без активного lang-плагіна скан не бачить джерел (graceful тиша)

‎npm/rules/doc-files/docgen-crc/docs/main.md‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ type: JS Module
33
title: main.mjs
44
resource: npm/rules/doc-files/docgen-crc/main.mjs
55
docgen:
6-
crc: c10183ef
6+
crc: 8976f6f8
77
model: omlx/gemma-4-e4b-it-OptiQ-4bit
88
score: 100
99
issues: judge:inaccurate:0.99

‎npm/rules/doc-files/docgen-crc/main.mjs‎

Lines changed: 5 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -67,24 +67,17 @@ export function parseDocFrontmatter(md) {
6767
/** Максимум кодів issues у frontmatter — це маркер, а не повний лог. */
6868
const MAX_ISSUE_CODES = 8
6969

70-
/** OKF type для вбудованих розширень; мовні (`.rs`, `.py`) декларують lang-плагіни. */
71-
const EXT_TYPES = {
72-
'.js': 'JS Module',
73-
'.mjs': 'JS Module',
74-
'.cjs': 'JS Module',
75-
'.ts': 'TS Module',
76-
'.vue': 'Vue Component'
77-
}
78-
7970
/**
80-
* OKF `type` для файлу-джерела за розширенням (вбудовані + декларації
81-
* активних lang-плагінів).
71+
* OKF `type` для файлу-джерела за розширенням — лише з декларацій активних
72+
* lang-плагінів (`contributes.docFiles.extensions`: js/mjs/ts/vue — lang-js,
73+
* `.rs`/`.py` — lang-rust/lang-python); вбудованих типів у ядрі немає
74+
* (фаза 5b spec lang-plugins-extraction). Невідоме розширення → 'Source File'.
8275
* @param {string} sourcePath відносний шлях джерела
8376
* @returns {string} тип концепту
8477
*/
8578
function typeForSource(sourcePath) {
8679
const ext = extname(sourcePath).toLowerCase()
87-
return EXT_TYPES[ext] ?? pluginDocFilesExtensions(process.cwd())[ext] ?? 'Source File'
80+
return pluginDocFilesExtensions(process.cwd())[ext] ?? 'Source File'
8881
}
8982

9083
/**

0 commit comments

Comments
 (0)