关于 mol
mol 是面向 $mol 项目开发的编码 Agent 技能,提供组件查找、实现、测试和项目工作流指导。它强调先复用现有模块,并按需加载参考文档。
主要功能
- 01按任务加载参考文档
- 02查找并复用现有组件
- 03遵循 $mol 编码约定
- 04编写功能测试
- 05指导本地化与部署
适用场景
- 01在 $mol 中实现新功能
- 02排查空白或异常界面
- 03为功能编写测试
- 04配置本地化或 Tauri
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ b-on-g/ mol_skill --skill mol安装后在 Claude Code 中输入/mol确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
.gitattributes.gitignoreREADME.mdagents/openai.yamlreferences/STYLE.mdCOMPONENTS.mdMOL_CHAT_AUTOSCROLL.mdMOL_POSITIONING.mdTAURI_SETUP.mdGIPER_BAZA.mdTROUBLESHOOTING.mdTESTS.mdVIEW_TREE.mdREADME 原文English
来自项目 READMEREADME 暂无中文译文,以下为英文原文;中文介绍见上方。
$mol / MAM
Грузи из references/ только то, что нужно задаче.
| Файл | Когда |
|---|---|
STYLE.md | Перед любым кодом. Всегда. |
VIEW_TREE.md | Синтаксис дерева, биндинги, реактивность, грабли |
TROUBLESHOOTING.md | Экран пустой или не тот, ошибок нет |
COMPONENTS.md | Прежде чем писать свой компонент, как читать исходники mol/ |
TESTS.md | Когда пишешь или чинишь тесты |
GIPER_BAZA.md | Данные, права, синк |
TAURI_SETUP.md | Десктоп и мобилки |
MOL_CHAT_AUTOSCROLL.md | Только автоскролл к новым элементам |
MOL_POSITIONING.md | Только сравнение $mol с React/Vue/shadcn |
Порядок работы
-
Уточни модуль, нужна ли Giper Baza и Tauri. Если запрос размытый, предложи 2–3 конкретных варианта.
-
Найди готовое. В
mol/246 модулей, вbog/ещё пара десятков. Перед своим компонентом:ls mol | grep -i <слово> grep -rl '<свойство>' mol/*/*.view.tree bog/*/*/*.view.treeВ $mol любое свойство любого вложенного компонента переопределяется строкой в view.tree. Форкать и копировать не нужно.
-
Выдели общее. Повторяющийся кусок дерева = отдельный компонент в своей папке рядом с
app/, не внутри. Подпапка внутриapp/тянет всё приложение к тому, кто её заимствует. -
Пиши по
STYLE.md: snake_case, без комментариев, дерево вместо TS, стили только для отклонений. -
Тесты пиши вместе с фичей: сценарий пользователя через методы вида, см.
TESTS.md. -
Сборку не запускай, если не просили. Дев-сервер обычно уже поднят человеком:
curl -s localhost:9080/<модуль>/-/web.audit.jsпересоберёт модуль и отдаст аудит, чини всё. Нет ответа на 9080 — попроси человека запуститьnpm startу себя. Сам поднимай, только если человека рядом нет, и только так, в фоне:sleep 100000 | npx mamБез открытого stdin сервер печатает
Startedи молча выходит с кодом 0. -
Коммить сам:
$bog_myapp_part: что изменилось, см.STYLE.md.
Файлы модуля
bog/myapp/app/
index.html
app.view.tree разметка и биндинги
app.view.ts логика, только если дерева не хватило
app.view.css.ts стили, только отклонения от темы
app.view.css raw CSS: @keyframes, content, значения css-переменных
app.test.ts тесты
app.meta.tree мета, если нужна
index.html:
<!doctype html>
<html mol_view_root>
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
</head>
<body mol_view_root>
<div mol_view_root="$bog_myapp_app"></div>
<script src="web.js"></script>
</body>
</html>
Имя класса = путь: $bog_myapp_app живёт в bog/myapp/app/. Подчёркивание всегда папка, поэтому имена папок без _. Короткое глобально уникальное имя работает везде: в коде, в CSS-атрибуте, в коммите.
Новый проект
npm create view-tree-lsp@latest bog/myapp -- --no-docker --no-tauri
Флаги --no-docker, --no-baza, --no-tauri. Всегда предлагай это вместо ручного создания файлов.
Локализация
@ \Текст в дереве попадает в <модуль>/-view.tree/*.locale=en.json. Переводы кладутся рядом: <модуль>/<имя>.locale=<lang>.json, ключ = полное имя свойства. Один файл на всё приложение разложить по модулям:
npx view-tree-lsp locale bog/myapp/app/- --exclude=mol --update
--include/--exclude по куску пути, --update дописывает, --dry показывает план. Переводчику удобнее $yuf_localizer.
NPM-пакеты
require('pkg') внутри метода, MAM установит сам. Бандлится весь пакет. Для тяжёлого $mol_import.script(url) / $mol_import.module(url). Ручной package.json в модуле мержится с автоматическим.
SEO
SPA без пререндера индексируется пустым. После mam_build, перед деплоем:
- uses: b-on-g/mol-prerender-action@main
with:
base-url: "https://example.github.io/app/"
screens: |
campaign
shop
Генерит HTML на экран, sitemap.xml, robots.txt. route-format: #! или ?.
Tauri в CI
- uses: b-on-g/tauri-mol-workflow-template@master
with:
module: "bog/myapp/app"
platform: desktop
Или reusable workflow tauri_reusable.yml@master с mam_module_path. Остальное в TAURI_SETUP.md.
Ответ пользователю
Минимальные рабочие правки в целевом модуле, точные пути и команды. Пример = пара view.tree + view.ts.
На вопрос «как» порядок такой: сначала концепт $mol своими словами (это hint, это свойство, это override), потом ссылка на страницу smalljs https://b-on-g.github.io/smalljs/#!section=docs/page=<slug>, потом код. Страницы: mental-model, troubleshooting, testing, data, views, state, rosetta, cookbook. Оглавление всей доки с аннотациями лежит в https://b-on-g.github.io/smalljs/llms.txt, читать его, когда не знаешь, на какую страницу сослаться.
Если спрашивают про свойство чужого компонента, показать, как ты его нашёл: путь к .view.tree и строку из него, а не только ответ. Порядок поиска в COMPONENTS.md, раздел «Как читать исходники».