Skip to content

tech-debt(naming): clarify overlapping 'plugin' and 'extension' terminology across codebase #7426

Closed

Description

@mrveiss

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:

  1. Rename directory + add re-export shims in old paths to keep imports working
  2. Update `autobot-backend/extensions/manager.py` references throughout
  3. 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

Activity

  1. mrveiss commented on May 16, 2026

    @mrveiss
    OwnerAuthor

    ✅ Closed with proof of implementation

    Commit: 8e6dccd - tech-debt(naming): clarify plugin vs extension vs skill terminology with rename

    Acceptance Criteria Met:

    • ✅ Terminology clearly defined: Middleware (lifecycle hooks), Skill (user-facing capabilities), Plugin (standalone packages)
    • ✅ Extensions migrated to middleware/ with backward-compat re-export shim
    • ✅ 3 core call sites updated (session_handler, llm_handler, lifespan)
    • ✅ Deprecation timeline documented (v1: shim works, v2: remove shim + rename classes)
    • ✅ Decision document: docs/developer/plugin-vs-extension-vs-skill.md

    PR: #7869 → merged to Dev_new_gui

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions