mcpField
M
mol

mol

github.com/b-on-g开发140 次安装5 周前更新
代码仓库

关于 mol

mol 是面向 $mol 项目开发的编码 Agent 技能,提供组件查找、实现、测试和项目工作流指导。它强调先复用现有模块,并按需加载参考文档。

主要功能

  1. 01按任务加载参考文档
  2. 02查找并复用现有组件
  3. 03遵循 $mol 编码约定
  4. 04编写功能测试
  5. 05指导本地化与部署

适用场景

  1. 01在 $mol 中实现新功能
  2. 02排查空白或异常界面
  3. 03为功能编写测试
  4. 04配置本地化或 Tauri

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/b-on-g/mol_skill --skill mol

安装后在 Claude Code 中输入/mol确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

.gitattributes
.gitignore
README.md
agents/
openai.yaml
references/
STYLE.md
COMPONENTS.md
MOL_CHAT_AUTOSCROLL.md
MOL_POSITIONING.md
TAURI_SETUP.md
GIPER_BAZA.md
TROUBLESHOOTING.md
TESTS.md
VIEW_TREE.md

README 原文English

来自项目 README

README 暂无中文译文,以下为英文原文;中文介绍见上方。

$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

Порядок работы

  1. Уточни модуль, нужна ли Giper Baza и Tauri. Если запрос размытый, предложи 2–3 конкретных варианта.

  2. Найди готовое. В mol/ 246 модулей, в bog/ ещё пара десятков. Перед своим компонентом:

    ls mol | grep -i <слово>
    grep -rl '<свойство>' mol/*/*.view.tree bog/*/*/*.view.tree
    

    В $mol любое свойство любого вложенного компонента переопределяется строкой в view.tree. Форкать и копировать не нужно.

  3. Выдели общее. Повторяющийся кусок дерева = отдельный компонент в своей папке рядом с app/, не внутри. Подпапка внутри app/ тянет всё приложение к тому, кто её заимствует.

  4. Пиши по STYLE.md: snake_case, без комментариев, дерево вместо TS, стили только для отклонений.

  5. Тесты пиши вместе с фичей: сценарий пользователя через методы вида, см. TESTS.md.

  6. Сборку не запускай, если не просили. Дев-сервер обычно уже поднят человеком: curl -s localhost:9080/<модуль>/-/web.audit.js пересоберёт модуль и отдаст аудит, чини всё. Нет ответа на 9080 — попроси человека запустить npm start у себя. Сам поднимай, только если человека рядом нет, и только так, в фоне:

    sleep 100000 | npx mam
    

    Без открытого stdin сервер печатает Started и молча выходит с кодом 0.

  7. Коммить сам: $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, раздел «Как читать исходники».

评论

支持 Markdown