Prompt #128

Back to prompts
yoga plugin with EDA + tenant-overrides
Code Β· claude-3.7-sonnet
5/5
Variables
{'name': 'plugin_name', 'description': 'snake_case'}, {'name': 'feature', 'description': 'what + why'}
Tags
stack-aware,yoga,plugin,multi-tenant,eda,strict-separation
Source
research-2026-05-01-stack-aware-handcrafted
Use count
0
Created
2026-05-01T18:30:35.938632+00:00
Updated
2026-05-01T18:30:35.938632+00:00

Content

Add a yoga.{plugin_name} plugin in `/nvmetank1/docker/yoga/plugins/{plugin_name}/` (post-Wave-1+2 separation: yoga lives in its own repo).

Files:
1. `__init__.py` with PLUGIN dict β€” id `yoga.{plugin_name}` (yoga prefix indicates yoga-app domain)
2. `manifest.toml` mirror
3. EDA hooks: `helpers.py:register_signal_subscribers(app)` β€” subscribe to existing signals like `customer_created`, `appointment_status_changed`, `order_completed`, etc. Don't directly import other plugins; use signals.
4. `db_migrations` in PLUGIN dict for new tables (auto-applied on enable_plugin())
5. `routes_admin.py` (Authelia-protected admin UI), `routes_public.py` (tenant-public routes)
6. `tests/test_{plugin_name}.py`

Tenant-override mounts (multi-tenant feature):
- Templates: `/persistent/yoga-templates/` β†’ `/app/templates/yoga-tenant-overrides`
- Plugins: `/persistent/yoga-plugins/` β†’ `/app/plugins/yoga-tenant-plugins` (per-tenant plugin overrides)
- Images: `/persistent/yoga-images/` β†’ `/app/static/template_assets/cmoments`
- Tenant data: `/docker-yaml/config/yoga-glug-{channel}/yoga.db` (current/dev/beta channels)

If plugin needs RAG access: HTTP only (`requests.get('http://192.168.1.216:8801/api/v1/lessons/search?q=...')`). NEVER `from rag_stack import` β€” strict separation per user directive 2026-05-01.

Feature: {feature}