{"id":50587857,"url":"https://github.com/stellarwp/foundation","last_synced_at":"2026-06-08T10:00:42.248Z","repository":{"id":362143472,"uuid":"1256451902","full_name":"stellarwp/foundation","owner":"stellarwp","description":"Foundation is a StellarWP monorepo with common PHP packages/components for building libraries and plugins","archived":false,"fork":false,"pushed_at":"2026-06-05T22:52:19.000Z","size":228,"stargazers_count":0,"open_issues_count":1,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-06-06T08:08:18.055Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"PHP","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/stellarwp.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":"AGENTS.md","dco":null,"cla":null}},"created_at":"2026-06-01T19:43:48.000Z","updated_at":"2026-06-02T20:33:29.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/stellarwp/foundation","commit_stats":null,"previous_names":["stellarwp/foundation"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/stellarwp/foundation","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/stellarwp%2Ffoundation","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/stellarwp%2Ffoundation/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/stellarwp%2Ffoundation/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/stellarwp%2Ffoundation/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/stellarwp","download_url":"https://codeload.github.com/stellarwp/foundation/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/stellarwp%2Ffoundation/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34014821,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-07T02:00:07.652Z","response_time":124,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2026-06-05T07:30:57.727Z","updated_at":"2026-06-07T09:01:02.397Z","avatar_url":"https://github.com/stellarwp.png","language":"PHP","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Foundation\n\nFoundation is a StellarWP Composer monorepo for reusable PHP packages intended for libraries and WordPress plugin ecosystems.\n\n\u003e [!NOTE]\n\u003e This monorepo splits each package out into their own sub-repository, if you only need a specific component you can install only that specific one.\n\n## Repositories\n- [stellarwp/foundation-container](https://github.com/stellarwp/foundation-container)\n- [stellarwp/foundation-pipeline](https://github.com/stellarwp/foundation-pipeline)\n- [stellarwp/foundation-log](https://github.com/stellarwp/foundation-log)\n- [stellarwp/foundation-wpcli](https://github.com/stellarwp/foundation-wpcli)\n\n## Installation\n\n```shell\ncomposer require stellarwp/foundation\n```\n## ‍💻 Developer / Contributing Documentation\n\n### ✅ Development requirements\n- PHP 8.3+\n\n### 🧪 Automated testing\n\nRun all tests:\n\n```bash\ncomposer test\n```\n\nRun just the unit test suite:\n\n```bash\ncomposer test:unit\n```\n\nRun just the feature test suite:\n\n```bash\ncomposer test:feature\n```\n\nGenerate the test coverage HTML dashboard (XDEBUG required to be enabled on your machine):\n\n```bash\ncomposer test:coverage-html\n```\n\n### Code Quality\n\nCheck your code style:\n\n```bash\ncomposer lint\n```\n\nAutomatically fix your code style:\n\n```bash\ncomposer format\n```\n\nStatic analysis:\n\n```bash\ncomposer analyze\n```\n\n### 🥳 Releasing a new version\n\nBefore drafting the release, run the monorepo maintenance commands that apply to the release:\n\n| Situation                                                                                                                                                                                                                                                                                     | Command | Why |\n|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| --- | --- |\n| You are planning a major version release, for example `2.0` to `3.0`. You should run this so any Foundation packages that depend on each other require the new major line, such as `^3.0`. You may also run it for a minor release if one package must require APIs added in that new minor version. | `composer monorepo bump-interdependency \u003cversion\u003e` | Updates package-to-package dependency constraints. Use the new minimum Composer constraint, such as `^3.0` or `^1.2`. |\n| The `dev-main` branch alias needs to move to a new development line, usually after a minor or major release. For example, after releasing `1.1.0`, update the alias from `1.1.x-dev` to `1.2.x-dev`. Do not run this before every patch release if the existing alias is still correct. | `composer monorepo package-alias` | Updates each package's `extra.branch-alias` using the format configured in `monorepo-builder.php`. |\n| Neither of the above changed.                                                                                                                                                                                                                                                                 | No monorepo maintenance command is needed. | Continue to drafting the release. |\n\nAfter any needed command, commit the updated `composer.json` files. Then draft a new release on [GitHub](https://github.com/stellarwp/foundation/releases/new), following [semver](https://semver.org/) closely.\n\nThe [monorepo split GitHub workflow](./.github/workflows/monorepo-split.yml) will deploy each project's code to their sub-repository.\n\nAdding a new split package is usually a minor [semver](https://semver.org/) release because it adds new functionality without breaking existing packages. Use a major release only if the change also breaks an existing public API or package contract.\n\n### Monorepo\n\nThis uses [Symplify's Monorepo Builder](https://github.com/symplify/monorepo-builder). There is a shortcut composer script you can\nrun to access their CLI: `composer monorepo list` to see the available commands.\n\n#### Adding a New Package\n\n1. Run the package creation command:\n\n```bash\ncomposer run foundation -- package:create \u003cPackage\u003e\n```\n\nThe package argument can be a new package component such as `WPCli`, an existing package directory, short package name, or Composer package name, for example `Log`, `foundation-log`, or `stellarwp/foundation-log`.\n\nIf the package does not exist yet, the command asks whether to create the local scaffold in `src/\u003cPackage\u003e` and asks for the Composer package name with a default such as `stellarwp/foundation-wpcli`. The scaffold includes the required `composer.json`, `README.md`, `.gitattributes`, `.gitignore`, and `close-pull-request.yml` files. After scaffolding, the command runs `composer monorepo merge` so the root `composer.json` includes the new package.\n\nThe command runs as a dry run by default. It validates the required split package files, prints the target repository name and description, and shows the GitHub CLI commands it will run.\n\n2. Add source code, tests, and any package-specific dependencies to the new package.\n\n3. Once you've added the specific dependencies your package needs to its composer.json, run `composer monorepo merge` again and then `composer update` and commit the changes. This will merge the dependency changes into the root composer.json.\n\n4. Create and configure the read-only split repository:\n\n```bash\ncomposer run foundation -- package:create \u003cPackage\u003e --apply\n```\n\nThe command creates the `stellarwp/foundation-\u003cpackage\u003e` repository with the standard `[READ ONLY]` description, disables issues, wiki, and projects, and relies on the package's `close-pull-request.yml` workflow to close pull requests.\n\n## License\n\nCopyright © 2026 Nexcess Corp.\n\nLicensed under the GNU General Public License v2.0 or later.\nSee [LICENSE](./LICENSE) for details.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fstellarwp%2Ffoundation","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fstellarwp%2Ffoundation","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fstellarwp%2Ffoundation/lists"}