Repository navigation
tech-debt(naming): clarify overlapping 'plugin' and 'extension' terminology across codebase #7426
Copy link
Copy link
Closed
Labels
architecturedocumentationImprovements or additions to documentationImprovements or additions to documentationpriority: lowtech-debt
Description
Problem
The terms plugin and extension are used with at least four different meanings:
| Path | Meaning | Loader |
|---|---|---|
| `plugins/core-plugins/` (`hello-plugin`, `logger-plugin`, `mcp-wrapper-plugin`, `telemetry-prompt-middleware`, `kb-event-plugin`) | Standalone packages with `plugin.json` manifests | `autobot_shared/plugin_sdk/loader.py` |
| `autobot-backend/extensions/builtin/` (`logging_extension.py`, `secret_masking.py`, `permission_enforcement.py`) | Middleware hooks invoked at lifecycle points (`BEFORE_MESSAGE_PROCESS`, etc.) | `autobot-backend/extensions/manager.py` |
| `autobot-backend/skills/builtin/` | User-facing capabilities (calendar, code-review, github-search, web-fetch) | `autobot-backend/skills/manager.py` |
| `autobot-frontend/src/plugins/` (`api.ts`, `errorHandler.ts`, `rum.ts`) | Just three Vue plugin utility modules — not a plugin system | `main.ts` directly |
| `autobot_shared/plugin_sdk/` | The SDK that loads category #1 above | n/a |
Result: new contributors can't tell from a path alone whether they're looking at middleware, a user feature, an SDK, or a package. `extensions/` does not mean what `plugins/` means.
Proposed fix
Rename to disambiguate. Suggestion (open to alternatives):
| Current | Proposed | Rationale |
|---|---|---|
| `autobot-backend/extensions/` | `autobot-backend/middleware/` (or `hooks/`) | These are lifecycle hooks, not loadable extensions |
| `plugins/core-plugins/` | unchanged (real plugins) | |
| `autobot-backend/skills/` | unchanged (user-facing) | |
| `autobot-frontend/src/plugins/` | `autobot-frontend/src/vue-plugins/` or just inline into `main.ts` | Disambiguate from backend plugin system |
Migration:
- Rename directory + add re-export shims in old paths to keep imports working
- Update `autobot-backend/extensions/manager.py` references throughout
- One release with deprecation warning, then remove shims
Acceptance criteria
- Decision recorded in `docs/developer/plugin-vs-extension-vs-skill.md` (terminology reference)
- Renames executed with re-export shims
- All call sites updated
- Issue [Architecture] Design Extension Hooks System (22 Lifecycle Points) #658 (extension manager) doc references updated
- CLAUDE.md and `docs/developer/CLAUDE_RULES.md` updated if they reference old names
Effort
Moderate. Mostly mechanical; renames touch every Extension subclass + register call.
Related
- refactor(plugins): unify manifest contract across plugins/, extensions/, and skills/ #7369 (manifest unification — natural pairing; do this before or alongside)
- Issue [Architecture] Design Extension Hooks System (22 Lifecycle Points) #658 (extension manager origin)
- Issue feat: Implement Plugin SDK for extensible tool architecture #730 (plugin SDK origin)
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
architecturedocumentationImprovements or additions to documentationImprovements or additions to documentationpriority: lowtech-debt
Activity
tech-debt(naming): clarify plugin vs extension vs skill terminology w…
mrveiss commentedon May 16, 2026
✅ Closed with proof of implementation
Commit: 8e6dccd - tech-debt(naming): clarify plugin vs extension vs skill terminology with rename
Acceptance Criteria Met:
docs/developer/plugin-vs-extension-vs-skill.mdPR: #7869 → merged to Dev_new_gui
tech-debt(naming): clarify plugin vs extension vs skill terminology w…
fix(backend): restore correct audit_middleware import (MVA-1466) (#8901)
feat(transcriber): register extension and mount routes via feature_ro…
feat(transcriber): add transcript editing API (MVA-2173) (#9350)
refactor(dedup): eliminate code duplication via behavior-preserving e…