# Host, Package, Or App Code

Use this page before adding a feature, guide, command, or extension point. Capell stays maintainable when each change lands where it is owned.

## Decision Table

| If the change...                                                                                                                        | Put it in...                              |
| --------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------- |
| Changes sites, pages, layouts, themes, media contracts, package discovery, install/upgrade primitives, or shared settings support       | `capell-4/packages/core`                  |
| Changes the Filament panel, admin resources, dashboards, permissions, settings UI, admin bridges, or editor workflows                   | `capell-4/packages/admin`                 |
| Changes public request resolution, page rendering, render hooks, frontend settings, public HTML safety, or frontend package integration | `capell-4/packages/frontend`              |
| Changes installer screens, install cleanup, or browser installer flow                                                                   | `capell-4/packages/installer`             |
| Changes Marketplace browsing, account linking, package acquisition, or install authorization records                                    | `capell-4/packages/marketplace`           |
| Adds a product feature that can be installed, disabled, versioned, or sold independently                                                | `../capell-packages-4/packages/<package>` |
| Adds one-off project glue for a client app                                                                                              | the consuming Laravel app                 |
| Documents a feature owned by a companion package                                                                                        | that companion package docs               |
| Documents public marketing, brand, or sales copy                                                                                        | `/Users/ben/Sites/packages/capell/docs`   |

## Package Is The Default For Features

Create or update a package when the feature has its own:

- routes, commands, jobs, events, or settings;
- Filament resources, pages, widgets, or admin tools;
- public frontend output;
- migrations or package-owned data model;
- install command or Marketplace surface;
- tests and release cadence.

Do not hide optional feature behavior in Core, Admin, or Frontend just because those packages expose the extension point.

## Host Repo Owns Contracts

The host repo should document contracts that packages consume:

- admin bridges and admin surface contributions;
- schema extenders and lifecycle events;
- render hooks and frontend asset registration;
- cache invalidation and static export hooks;
- public HTML safety rules;
- package discovery, manifests, and installer contracts.

The package repo should document the package feature itself.

## Next

- [Package authoring](../packages/README.md)
- [Extension point chooser](../packages/extension-point-chooser.md)
- [Docs ownership](docs-ownership.md)