Bundles are how platforms integrate content-scope-scripts, they're often used within a context and so serve a distinct purpose. There is a cost to serving multiple bundles within the web page context so that should be avoided.
To add a new bundle to the Content Scope Scripts build system:
File: injected/scripts/entry-points.js
Add your bundle to the builds object:
'my-new-bundle': {
    input: 'entry-points/my-entry.js',
    output: ['../build/my-platform/myScript.js'],
},
File: injected/src/globals.d.ts
Add the bundle name to the injectName union type:
injectName?:
    | 'firefox'
    | 'apple'
    | 'my-new-bundle'  // Add here
File: injected/src/features.js
If creating a platform-specific bundle, add feature configuration:
'my-platform': [
    'cookie',
    ...baseFeatures,
    'mySpecificFeature',
],
Directory: injected/entry-points/
Create your entry point file (e.g., my-entry.js) that imports and configures the required features for your bundle.
Entry points are the main files that define the implementation of a build. These should only be added if absolutely required.
Inject Name is a condition that can then be used in the config.
Example: Target specific bundles in feature configuration:
{
    "features": {
        "myFeature": {
            "state": "enabled",
            "settings": {
                "something": "hello",
                "conditionalChanges": [
                    {
                        "condition": {
                            "injectName": "android-adsjs"
                        },
                        "patchSettings": [
                            {
                                "op": "replace",
                                "path": "/something",
                                "value": "else"
                            }
                        ]
                    }
                ]
            }
        }
    }
}
This allows the same feature to have different behavior depending on which bundle it's running in.