Skip to content

feat(framework): capability-extension + skill SPI (#190)#205

Merged
suleimansh merged 1 commit into
mainfrom
feat/framework-extension-spi
Jul 4, 2026
Merged

feat(framework): capability-extension + skill SPI (#190)#205
suleimansh merged 1 commit into
mainfrom
feat/framework-extension-spi

Conversation

@suleimansh

Copy link
Copy Markdown
Member

Makes The Framework modular (#190). Installed capability packages self-register and compose into a run instead of the CLI hardcoding the list. All agnostic, nothing framework-gated.

What changed

  • defineFrameworkExtension (ai-autopilot): a capability (auth, data, rbac, crud, shell) that self-registers, matched by signal (a dep is present) or opt-in, framing the agent with its personas. An extension supersedes the neutral default persona of the same capability (so framework-data replaces the default ORM modeler, no conflicting personas).
  • defineSkill: a doc pointer (an llms.txt), the shared unit with Open Loop: customizable prompts + flows, domain presets, marketplace #204. A framework is a skill, not an adapter package. Vike now rides the seam as https://vike.dev/llms.txt.
  • ExtensionRegistry / SkillRegistry, composePersonas, skillInstructions, and loadExtensionsFromModules for discovering installed framework-* packages.
  • run.ts composes matched extensions + skills through the registry, dropping the hardcoded vikeExtensionPersonas list and the compose gate.
  • The CLI reads the project's real signals (from package.json) and discovers installed framework-* capability packages, resolved from the user's workspace. Bad or missing packages are reported, not thrown.

Proof (scope checklist)

  • FrameworkExtension SPI (defineFrameworkExtension)
  • Skill unit (llms.txt pointer) + registration
  • Discovery: find + register installed framework-* packages, plus opt-in
  • Compose matched extensions in run.ts, drop the hardcoded list / gate
  • Built-ins (auth, data, rbac, crud, shell) ship as extensions and Vike as a skill through the same seam
  • Docs: authoring a framework-* extension (README)

The publish-safe default (hand-rolled + Prisma) is unchanged; --compose-extensions still opts every built-in in.

Tests: new coverage for define/registry/compose/discovery in ai-autopilot, plus framework-level tests that Vike arrives as a skill and a registered extension auto-activates by signal. Repo typecheck + both suites green (339 tests).

Closes #190.

@suleimansh suleimansh added enhancement New feature or request priority: high Should be addressed soon labels Jul 4, 2026
@suleimansh suleimansh self-assigned this Jul 4, 2026
…dcoded (#190)

The Framework's composition was pinned in run.ts (a fixed vikeExtensionPersonas
list swapped in behind --compose-extensions), so no third party could publish a
framework-* package and have it auto-compose. Add the agnostic extension SPI:

- defineFrameworkExtension: a capability (auth/data/rbac/crud/shell) that
  self-registers, matched by signal or opt-in, framing the agent with personas.
  An extension supersedes the neutral default persona of the same capability.
- defineSkill: a doc pointer (an llms.txt), the shared unit with #204. A
  framework is a skill, not an adapter: Vike rides the seam as vike.dev/llms.txt.
- ExtensionRegistry / SkillRegistry, composePersonas, skillInstructions, and
  loadExtensionsFromModules for discovering installed framework-* packages.

run.ts composes matched extensions + skills through the registry; the CLI reads
the project's real signals and discovers installed framework-* packages
(resolved from the user workspace, failures reported not thrown). The built-in
vike-* composers ship as extensions and Vike as a skill, proving the seam. The
publish-safe default (hand-rolled + Prisma) is unchanged. Closes #190.
@suleimansh suleimansh force-pushed the feat/framework-extension-spi branch from a9947b8 to ffb3e66 Compare July 4, 2026 16:39
@suleimansh suleimansh merged commit de37e7e into main Jul 4, 2026
2 checks passed
@suleimansh suleimansh deleted the feat/framework-extension-spi branch July 4, 2026 16:41
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancement New feature or request priority: high Should be addressed soon

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Make The Framework modular (Vike-style extensions)

1 participant