TYPO3

@webship.co/workspace-typo3 1.0.7 · github.com/webship/workspace-typo3 · npm

TYPO3 for the Webship Workspace dashboard: a builder that makes a real TYPO3 site in a container, a typo3 console tool for the sites it built, the default accounts, the TYPO3 step pack wired into the workspace's testing setup, and two AI agents that know all of it.

The workspace is container-based (DDEV by default): a TYPO3 project is a row like any other, so the row menus the core draws (start, stop, launch, backup, clone, remove, tests) work on it unchanged.

It is made from the reference platform plugin, @webship.co/workspace-wordpress.

Use it

cd ~/workspace
bash core/scripts/plugins.sh --require github:webship/workspace-typo3   # npm install into the dashboard
bash core/scripts/plugins.sh --activate typo3                            # plugins.typo3 in settings.yml
bash core/scripts/plugins.sh --install typo3                             # commands, functions, args, agents
bash core/scripts/plugins.sh --configure typo3                           # nothing to configure: it has no settings file

The same four steps are buttons on the dashboard's Settings → Plugins page. --install is idempotent. --uninstall removes what it placed; an agent you edited stays.

The commands land in the sites folders that are in the workspace (dev, test, sandboxes, demos); the agents land in the AI Agents folder (ai-agents/) when the workspace has one, and are installed into ~/.claude/agents from there like any other agent.

It needs a Webship Workspace 1.0.7 or later.

What the package holds

Path What it is
commands/cmd-typo3-project.sh The builder, in the Build list as TYPO3 (13.4 LTS), installed into every sites folder
commands/cmd-tools-typo3-cli.sh The typo3 console for one project: what the site is, a command, updates, caches, the default accounts
scripts/functions/fun-typo3.sh The bash functions behind both, sourced by bootstrap once installed; the names the core's tools look for (set_typo3_users, add_typo3_users, cancel_typo3_users, testing_configure_typo3)
scripts/args/arg-typo3.sh, arg-typo3-cli.sh Their argparse; the Build form draws the builder's flags from the first
testing/site.feature The first feature a TYPO3 project gets when testing is set up
agents/typo3-site-builder.md The agent that builds and maintains TYPO3 sites with these commands
agents/typo3-tester.md The agent that writes and runs scenarios with the TYPO3 step pack
src/index.ts register(api): what the assistant is told about TYPO3 here
features/typo3.feature Scenarios for the dashboard's own browser suite

The workspacePlugin block in package.json is the manifest the installer reads.

The commands

Run them from a sites folder. --help is safe on both.

Build a site

cd ~/workspace/dev
bash cmd-typo3-project.sh mysite --install --add-users
Flag What it does
--version <x> The release to create the project from, as a Composer constraint of typo3/cms-base-distribution: ^13.4 (the default, TYPO3 13.4 LTS), or a number such as 13.4.20
--install Set the site up, with the workspace account as its administrator, and add the official Introduction package: a site with pages, content and a search
--add-users With --install: add the default accounts, an administrator and an editor
--bare With --install: leave the Introduction package out (a backend, and no site or page yet)
--php-version <x> The PHP of the project container (8.3)
--launch Open the site when it is ready

The site answers at https://mysite.ddev.site, the backend at /typo3. The build runs ddev config --project-type=typo3 with the docroot public and the Node.js of the workspace (24), creates the project with Composer in the container (typo3/cms-base-distribution), and sets it up with TYPO3's own setup command. The setup is given the container's database values (db / db / db), the same in every project, and nothing personal. A project of the same name is deleted first.

The Introduction package (typo3/cms-introduction, on the Bootstrap Package theme) is the site the step pack is written for; with it the build also runs the upgrade wizard its search content needs and points the search results at the templates of Indexed Search.

TYPO3 asks for an administrator password of 8 characters or more, with an upper and a lower case letter, a digit and a sign: the setup stops when the workspace account's does not pass.

Work on a site

bash cmd-tools-typo3-cli.sh mysite                                    # version, address, sites, backend accounts
bash cmd-tools-typo3-cli.sh mysite --run "extension:list --active"
bash cmd-tools-typo3-cli.sh mysite --run "list"                       # every command of the console
bash cmd-tools-typo3-cli.sh mysite --flush                            # flush every cache
bash cmd-tools-typo3-cli.sh mysite --update                           # Composer packages, extension setup, caches
bash cmd-tools-typo3-cli.sh mysite --add-users                        # the default accounts
bash cmd-tools-typo3-cli.sh mysite --cancel-users                     # delete them

The default accounts

Account Role Handle in the tests
administrator administrator (not a system maintainer: the Extensions module and the Admin Tools stay with the workspace account) admin
editor the backend group "Advanced editors" (from the Introduction package) editor

Each has the address <account>@example.com and the password of the workspace's other default lists. They are for local sites and for tests; the site's own administrator is the workspace account and is never written into a test. The row's Users menu (Add the test users), bash cmd-tools-add-users.sh mysite typo3 and bash cmd-tools-cancel-users.sh mysite typo3 add and remove the same list. On a site without the Introduction package the editor is created without a group.

Test a site

bash cmd-tools-testing.sh mysite                 # webship-js, the step pack, the users registry, a first feature
bash cmd-tools-testing.sh mysite --run           # run the suite in the container
bash cmd-tools-testing.sh mysite --run --path tests/features/site.feature

cmd-tools-testing.sh is the workspace's own. For a TYPO3 project it also adds @webship-js/typo3-steps to package.json, lists its step definitions in cucumber.js after webship-js's own, writes the users registry (the handles above, overridable with TYPO3_<HANDLE>_USER and TYPO3_<HANDLE>_PASS), places tests/features/site.feature when the project has none, and makes sure the default accounts are on the site. Run it again and it adds what is missing and keeps what you changed.

The agents

Agent Use it to
typo3-site-builder Build, update, maintain or remove a TYPO3 site with the commands above, in containers only
typo3-tester Set the testing stack up, look at the site in the Playwright MCP browser first, write scenarios from the pack's steps and run them; it never creates an account in a suite and never writes a platform name into a step phrase

After --install they are in the AI Agents folder of the dashboard; Install there puts one into ~/.claude/agents, or from the command line:

cd ~/workspace/ai-agents
bash cmd-tools-ai-items.sh typo3-tester --install

Develop it

npm install     # builds dist/ (TypeScript)
npm run lint
npm test        # the manifest, the commands, the agents, the functions against a scaffolded project