mcpField
M
mol

mol

github.com/b-on-g開発140 回インストール5 週間前に更新
リポジトリ

mol について

mol は、$mol プロジェクト開発向けのコーディングエージェント用スキルです。既存モジュールの再利用を重視し、必要な参考資料を読み込みながら、実装やテスト、開発手順を案内します。

主な機能

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

コメント