diff --git a/.claude/skills/web-publish/SKILL.md b/.claude/skills/web-publish/SKILL.md
index 69234080..11f07aa8 100644
--- a/.claude/skills/web-publish/SKILL.md
+++ b/.claude/skills/web-publish/SKILL.md
@@ -84,6 +84,10 @@ powershell.exe -NoProfile -File "${CLAUDE_SKILL_DIR}/scripts/web-publish.ps1" <
3. Если нужно протестировать сервис — помоги составить запрос
4. Если база не зарегистрирована — предложи `/db-list add`
+Публикуются и сервисы расширений — по `publishExtensionsByDefault` в дескрипторе. Если сервис
+расширения всё же отдаёт 404 (HTTP) или 500 «Сервис не найден» (SOAP), расширение не применено
+к базе данных: `/db-update -Extension <имя>`.
+
## Примеры
```powershell
diff --git a/.claude/skills/web-publish/scripts/web-publish.ps1 b/.claude/skills/web-publish/scripts/web-publish.ps1
index a3b1f770..0a4165d3 100644
--- a/.claude/skills/web-publish/scripts/web-publish.ps1
+++ b/.claude/skills/web-publish/scripts/web-publish.ps1
@@ -1,4 +1,4 @@
-# web-publish v1.4 — Publish 1C infobase via Apache
+# web-publish v1.5 — Publish 1C infobase via Apache
# Source: https://github.com/Nikolay-Shirokov/cc-1c-skills
<#
.SYNOPSIS
@@ -280,8 +280,8 @@ $vrdContent = @"
base="/$AppName"
ib="$ibString">
-
-
+
+
"@
diff --git a/.claude/skills/web-publish/scripts/web-publish.py b/.claude/skills/web-publish/scripts/web-publish.py
index 1fb440fb..35a5826e 100644
--- a/.claude/skills/web-publish/scripts/web-publish.py
+++ b/.claude/skills/web-publish/scripts/web-publish.py
@@ -1,5 +1,5 @@
#!/usr/bin/env python3
-# web-publish v1.4 — Publish 1C infobase via Apache
+# web-publish v1.5 — Publish 1C infobase via Apache
# Source: https://github.com/Nikolay-Shirokov/cc-1c-skills
"""
@@ -299,8 +299,8 @@ def main():
base="/{app_name}"
ib="{ib_string}">
-
-
+
+
'''
with open(vrd_path, 'wb') as f:
diff --git a/docs/web-spec.md b/docs/web-spec.md
index 577cdbe9..0ee25ec8 100644
--- a/docs/web-spec.md
+++ b/docs/web-spec.md
@@ -16,8 +16,8 @@
base="/appname"
ib="connection-string">
-
-
+
+
```
@@ -62,6 +62,22 @@ URL: `/{AppName}/ws/{WebServiceName}?wsdl`
Публикация HTTP-сервисов. `publishByDefault="true"` публикует все сервисы из конфигурации.
URL: `/{AppName}/hs/{RootUrl}/...`
+#### Сервисы расширений — `publishExtensionsByDefault`
+
+Атрибут `publishExtensionsByDefault="true"` на `` и `` публикует сервисы,
+поставляемые **расширениями** конфигурации. По умолчанию платформа их не публикует: без атрибута
+HTTP-сервис расширения отдаёт **404**, web-сервис — **500 «Сервис не найден»**. Атрибуты
+`pointEnableCommon` / `publishByDefault` на сервисы расширений не распространяются.
+
+Проверено E2E на 8.3.24: A/B на одном и том же дескрипторе — с атрибутами `/hs/...` и `/ws/...?wsdl`
+отдают 200, без них 404/500. Перезапуск Apache для смены дескриптора не нужен, vrd читается на запрос.
+
+> Расширение должно быть применено к базе данных (`/db-update -Extension <имя>`), иначе его сервисы
+> недоступны независимо от дескриптора.
+
+> **Побочный эффект.** Атрибут действует на все подключённые расширения: любое расширение,
+> загруженное в ИБ, автоматически выставляет свои сервисы наружу.
+
### Расположение
`{ApachePath}/publish/{AppName}/default.vrd`