Dynamic base site
Agent skills for Silverstripe CMS development — version upgrades, Elemental, the Essentials stack, and deployment workflows
npx -y skills add jsirish/silverstripe-skills --skill dynamic-base-siteAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
One thing to look at
- 1 stars1 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
What its author says it does
Copied from the file, not written here
Reference for Dynamic's Silverstripe base-site stack - the dynamic/silverstripe-base-site module set, per-version namespaces (SS4 through SS6), extension locations, and upgrade checklist. Use when working in a project that requires dynamic/silverstripe-base-site, when resolving "class not found" or namespace errors in a Dynamic base-site project, or when planning an upgrade of a base-site project. Triggers on "base-site", "base site stack", "Dynamic base site", or unfamiliar dynamic/* module questions.
SKILL.md
5.6 KB, as published. Nobody here has run it
Dynamic Silverstripe Base-Site Stack
This skill documents the Dynamic base-site module ecosystem used in Silverstripe projects.
Core Modules
| Package | Purpose |
|---|---|
dynamic/recipe-silverstripe-base-site | Meta-package that bundles all base-site dependencies |
dynamic/silverstripe-base-site | Core page types, models, and extensions |
dynamic/silverstripe-site-tools | Shared utilities, extensions, and helper classes |
Namespace Changes by Version
Silverstripe 6 (dynamic/silverstripe-base-site:^8, branch 8)
- Namespaces are unchanged from SS5:
Dynamic\Base\*(page types, models),Dynamic\SiteTools\*(extensions, utilities). No PSR-4 migration needed for base-site's own classes - only SS6 core framework classes moved (see version-map-ss6.md for the core class renames, e.g.ViewableData→ModelData). SiteConfig's header nav (UtilityLinks) moves from amany_manyjoin table (SiteConfig_UtilityLinks) to ahas_many SiteTreeLinkrelation viasilverstripe/linkfield ^5- same data-migration pattern as the general SS5→SS6 LinkField conversion. See data-migration-tasks.md ("UtilityLinks" section) for the migration task.- SS6-relevant deprecations that hit base-site projects specifically:
sheadawson/silverstripe-linkable→silverstripe/linkfield ^5(run the linkable data migration on SS5 with linkfield^4before the SS6 bump);nswdpc/silverstripe-thereisnouserformremoved from the SS6 recipe (drop anyUserDefinedFormPageExtensionregistrations inapp/_config/essentials.ymlordev/buildfatals);undefinedoffset/silverstripe-nocaptcharemoved, no replacement.
Silverstripe 5 (dynamic/silverstripe-base-site:^7)
- Namespace:
Dynamic\BaseRecipe\*(some classes) - Namespace:
Dynamic\Base\*(page types, models) - Namespace:
Dynamic\SiteTools\*(extensions, utilities)
Silverstripe 4 (dynamic/silverstripe-base-site:^4)
- Namespace:
Dynamic\Base\*(all classes)
Common Extensions
Extensions may move between silverstripe-base-site and silverstripe-site-tools in major versions:
| Extension | SS5 Location | Notes |
|---|---|---|
TemplateDataExtension | Dynamic\Base\Extension | For SiteConfig |
ReviewContentDataExtension | Dynamic\SiteTools\Extension | For SiteConfig |
CmsDesignDataExtension | Dynamic\Base\Extension | For SiteTree |
SeoExtension | Dynamic\Base\Extension | For SiteTree |
HeaderImageExtension | Dynamic\SiteTools\Extension | For pages needing header images |
PreviewExtension | Dynamic\SiteTools\Extension | For BlogPost |
DataobjectPermissionExtension | Dynamic\SiteTools\Extension | For UserForms |
ContactDataExtension | Dynamic\SiteTools\Extension | For CompanyAddress |
Configuration Patterns
base-site-config.yml (project)
Should closely mirror the recipe's version. Contains:
- SiteConfig extensions
- SiteTree extensions
- Page type configurations (elemental, etc.)
mysite.yml (project)
Contains project-specific customizations:
- Project-specific extensions (FlexSlider, etc.)
- Custom element configurations
- Third-party module configs
Upgrade Checklist
When upgrading major versions:
-
Check Recipe Config: View the recipe's
app/_config/base-site-config.ymlto understand the current version's patternscat vendor/dynamic/recipe-silverstripe-base-site/app/_config/base-site-config.yml -
Verify Extension Locations: Extensions may move between modules
grep -r "class ExtensionName" vendor/dynamic/silverstripe-*/src/ -
Check for Removed Extensions: Some custom extensions get replaced by third-party modules
CompanyDataExtension- removed in SS5IntegrationsDataExtension- removed in SS5
-
Namespace Updates: Check for namespace changes
Dynamic\Base→Dynamic\BaseRecipein some classes
-
Third-Party Replacements: Custom code often gets replaced:
- FlexSlider → Carousel (
dynamic/carousel) - Linkable → LinkField (
silverstripe/linkfield) - ElementalStylings → removed (use native styles config)
- FlexSlider → Carousel (
Common Upgrade Issues
Missing Extension Errors
InvalidArgumentException: ClassName references nonexistent Extension in 'extensions'
Solution: Check if extension moved to different module or was removed. Search vendor:
grep -r "class ExtensionName" vendor/dynamic/
has_many Relation Errors
No has_one found on class 'X', the has_many relation from 'Y' to 'X' requires a has_one
Solution: Add reciprocal has_one via config in mysite.yml:
Namespace\ClassName:
has_one:
ParentClass: Namespace\ParentClass
Deprecated Packages
ryanpotter/silverstripe-cms-theme- SS5 has built-in CMS themelekoala/silverstripe-debugbar- check for SS5 compatible versionfractas/elemental-stylings- use nativestylesconfig instead