agentsclimarketplace

Dynamic base site

Skill jsirish/silverstripe-skills/skills/dynamic-base-site

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.From its SKILL.md

Install
npx -y skills add jsirish/silverstripe-skills --skill dynamic-base-site

Assembled from the repository path, not quoted from the project. Check it against their README if it does not work.

2 things 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.
  • runs commandsInstructs the agent to run 3 commands, including `cat vendor/dynamic/recipe-silverstripe-base-site/app/_config/base-site-config.yml` and 2 more.

SKILL.md

5.6 KB, ~1.2k tokens by cl100k_base, 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

PackagePurpose
dynamic/recipe-silverstripe-base-siteMeta-package that bundles all base-site dependencies
dynamic/silverstripe-base-siteCore page types, models, and extensions
dynamic/silverstripe-site-toolsShared 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. ViewableDataModelData).
  • SiteConfig's header nav (UtilityLinks) moves from a many_many join table (SiteConfig_UtilityLinks) to a has_many SiteTreeLink relation via silverstripe/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-linkablesilverstripe/linkfield ^5 (run the linkable data migration on SS5 with linkfield ^4 before the SS6 bump); nswdpc/silverstripe-thereisnouserform removed from the SS6 recipe (drop any UserDefinedFormPageExtension registrations in app/_config/essentials.yml or dev/build fatals); undefinedoffset/silverstripe-nocaptcha removed, 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:

ExtensionSS5 LocationNotes
TemplateDataExtensionDynamic\Base\ExtensionFor SiteConfig
ReviewContentDataExtensionDynamic\SiteTools\ExtensionFor SiteConfig
CmsDesignDataExtensionDynamic\Base\ExtensionFor SiteTree
SeoExtensionDynamic\Base\ExtensionFor SiteTree
HeaderImageExtensionDynamic\SiteTools\ExtensionFor pages needing header images
PreviewExtensionDynamic\SiteTools\ExtensionFor BlogPost
DataobjectPermissionExtensionDynamic\SiteTools\ExtensionFor UserForms
ContactDataExtensionDynamic\SiteTools\ExtensionFor 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:

  1. Check Recipe Config: View the recipe's app/_config/base-site-config.yml to understand the current version's patterns

    cat vendor/dynamic/recipe-silverstripe-base-site/app/_config/base-site-config.yml
    
  2. Verify Extension Locations: Extensions may move between modules

    grep -r "class ExtensionName" vendor/dynamic/silverstripe-*/src/
    
  3. Check for Removed Extensions: Some custom extensions get replaced by third-party modules

    • CompanyDataExtension - removed in SS5
    • IntegrationsDataExtension - removed in SS5
  4. Namespace Updates: Check for namespace changes

    • Dynamic\BaseDynamic\BaseRecipe in some classes
  5. Third-Party Replacements: Custom code often gets replaced:

    • FlexSlider → Carousel (dynamic/carousel)
    • Linkable → LinkField (silverstripe/linkfield)
    • ElementalStylings → removed (use native styles config)

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 theme
  • lekoala/silverstripe-debugbar - check for SS5 compatible version
  • fractas/elemental-stylings - use native styles config instead

What ships with it: 1 file

48 B alongside SKILL.md

Keep looking

Skills are one crate of 325,949. Ordering is by how many stacks a row turns up in, so the top of any crate is what has actually been picked rather than what has the most stars.