feat(skill): add lampa-plugin-builder skill with template
This commit is contained in:
40
skills/lampa-plugin-builder/SKILL.md
Normal file
40
skills/lampa-plugin-builder/SKILL.md
Normal file
@@ -0,0 +1,40 @@
|
||||
---
|
||||
name: lampa-plugin-builder
|
||||
description: Создание и доработка плагинов для приложения Lampa (JS plugin URL). Использовать, когда нужно: (1) создать новый плагин Lampa с нуля, (2) добавить/исправить хуки Lampa.Listener или расширения Lampa.* прототипов, (3) подготовить плагин к публикации по прямому URL .js, (4) проверить безопасную инициализацию (app ready + защита от двойного старта).
|
||||
---
|
||||
|
||||
# Lampa Plugin Builder
|
||||
|
||||
1. Уточнить цель плагина и критерий готовности:
|
||||
- что именно должен менять плагин в Lampa;
|
||||
- где это должно срабатывать (карточки, меню, источники, фильтры и т.д.);
|
||||
- как пользователь проверит результат.
|
||||
|
||||
2. Создать каркас плагина по шаблону из `references/plugin-template.js`:
|
||||
- IIFE + `use strict`;
|
||||
- `window.<flag>` защита от повторной инициализации;
|
||||
- запуск через `window.appready` или `Lampa.Listener.follow('app', ...)`.
|
||||
|
||||
3. Реализовать логику через API Lampa:
|
||||
- подписки на события через `Lampa.Listener.follow(...)`;
|
||||
- отправка событий через `Lampa.Listener.send(...)` (если нужно);
|
||||
- точечные патчи прототипов только при необходимости и с guard-проверками.
|
||||
|
||||
4. Добавить безопасные ограничения:
|
||||
- не ломать стандартный UX;
|
||||
- не вызывать бесконечные циклы/повторные хуки;
|
||||
- не переопределять методы без сохранения оригинального поведения.
|
||||
|
||||
5. Проверить готовность плагина:
|
||||
- файл один, самодостаточный `.js`;
|
||||
- нет синтаксических ошибок;
|
||||
- повторное подключение не дублирует эффекты;
|
||||
- есть короткая инструкция установки (URL файла плагина).
|
||||
|
||||
6. Выдать результат в формате:
|
||||
- `plugin-name.js`;
|
||||
- кратко: что делает;
|
||||
- как подключить в Lampa (URL плагина);
|
||||
- быстрый чек-лист тестирования.
|
||||
|
||||
Если нужна генерация с нуля — брать шаблон `references/plugin-template.js` и адаптировать его под задачу.
|
||||
37
skills/lampa-plugin-builder/references/plugin-template.js
Normal file
37
skills/lampa-plugin-builder/references/plugin-template.js
Normal file
@@ -0,0 +1,37 @@
|
||||
(function () {
|
||||
'use strict';
|
||||
|
||||
var FLAG = 'lampa_plugin_template_started';
|
||||
|
||||
function start() {
|
||||
if (window[FLAG]) return;
|
||||
window[FLAG] = true;
|
||||
|
||||
// TODO: основная логика плагина
|
||||
// Пример подписки на события:
|
||||
// Lampa.Listener.follow('app', function (e) {
|
||||
// if (e.type === 'ready') {
|
||||
// console.log('[lampa-plugin] app ready');
|
||||
// }
|
||||
// });
|
||||
|
||||
// Пример расширения карточки (осторожно с переопределениями):
|
||||
// if (window.Lampa && Lampa.Card && Lampa.Card.prototype) {
|
||||
// var original = Lampa.Card.prototype.build;
|
||||
// if (typeof original === 'function') {
|
||||
// Lampa.Card.prototype.build = function () {
|
||||
// original.apply(this, arguments);
|
||||
// // TODO: post-build логика
|
||||
// };
|
||||
// }
|
||||
// }
|
||||
}
|
||||
|
||||
if (window.appready) {
|
||||
start();
|
||||
} else if (window.Lampa && Lampa.Listener) {
|
||||
Lampa.Listener.follow('app', function (event) {
|
||||
if (event.type === 'ready') start();
|
||||
});
|
||||
}
|
||||
})();
|
||||
Reference in New Issue
Block a user