mooxphp/moox/add-moox-package
Claude Code and agent skill by mooxphp/moox
- community
Checking that the SKILL.md file is still in the repository.
Add, enable, or start using a package in a monorepo-consuming Laravel project — both Moox monorepo packages (moox/*) and the project's own packages. Use this skill whenever the user wants to "add a package", "enable moox/X", "use the X package", "pull in X from the monorepo", "neues Package hinzufügen", "Package aktivieren", or references wanting a new moox/* or own package available in the app. It performs the full, error-prone sequence (devlink config, composer.json path entry WITH the required versions option, package list export, composer update, verification, commit) so the dev doesn't do it by hand and doesn't hit the dev-dev/route-cache pitfalls. Trigger this proactively even if the user only names a package and an intent to use it.
Install
npx vskill@latest install mooxphp/moox/add-moox-packageSKILL.md
Add a package to this monorepo-consuming project
This project consumes moox/* packages directly from the monorepo (mooxphp/moox) via Composer path repositories — no Packagist, no release. This skill performs the complete sequence to add one, avoiding the pitfalls that otherwise cause CI/deploy failures.
This skill ships with thedevlinkpackage (resources/boost/skills/add-moox-package/) and is installed via Laravel Boost. Background and rationale live in the devlink docs. This skill is the actionable checklist.
Step 0 — Identify which kind of package
Two cases, different steps. Determine which before doing anything:
- A Moox monorepo package (
moox/<name>) — lives in themooxphp/mooxmonorepo, fetched/symlinked intopackages/. Managed viaconfig/devlink.php. Most common case. - The project's own package (a
local/committed package, e.g.acme/<name>) — committed in this repo underpackages/, not from the monorepo.
If unclear, ask the user. Also confirm the exact package name and the folder name (they can differ, e.g. a package acme/components may live in folder components or acme-components).
Case A — Add a Moox monorepo package
A1. Activate it in config/devlink.php
Find the package's entry under 'packages' (the array key is the folder name, e.g. 'address'). Set it active:
If the entry doesn't exist, the package may not be a public monorepo package — stop and confirm with the user.
A2. Symlink it locally
This adds a path entry to composer.json — but only with `symlink: true`, without the `versions` option. The next step adds the missing piece.
A3. Add/fix the composer.json entries
This is the critical step. Two parts:
`require` — add the package on *:
`repositories` — the path entry MUST include versions forcing dev-main. moox:devlink does not add this, so add it manually:
Why `versions` is non-negotiable: without it, Composer derives the version from the surrounding project branch (dev) →dev-dev, but the monorepo packages require each other asdev-main, so resolution fails with... requires moox/core dev-main ... do not match your constraint. Theversionsoption forcesdev-main. Add it for every moox path entry; if other entries are missing it, add it there too (start withmoox/core).
A4. Regenerate the package list
This rewrites .github/moox-packages.txt from the active type: public packages in config/devlink.php. CI and the deploy script read this file. Confirm the new package now appears in it.
A5. Resolve
Expect a clean resolution. If you see dev-dev errors, a versions option is missing (go back to A3). If you see "could not find package", the folder isn't in packages/ (was A2 run? is the folder name correct?).
A6. Verify the app still boots (catches deploy-time failures early)
optimize runs route:cache, view:cache, config:cache — the same steps the deploy runs. These surface problems invisible in normal local dev:
Unable to prepare route [...] Another route has already been assigned name [...]→ duplicate route name (often in the new package); find withgrep -rn "<name>" packages/ app/ routes/and make one unique.Unable to locate a class or view for component [...]→ a referenced component/class from a package that isn't registered/installed.
Resolve any failure here before committing — otherwise the deploy fails at this step.
A7. Commit
Commit exactly these (do not commit the packages/<folder> contents — moox packages are gitignored):
Suggested message style: feat: use moox/<name> or chore: add moox/<name> package.
Case B — Add the project's own package
Own packages (a local/committed package, e.g. acme/<name>) are committed in this repo, not fetched from the monorepo.
B1. .gitignore exception
packages/* is ignored; re-include the own package so it's versioned:
B2. composer.json entries
`require`:
`repositories` — path entry with versions (use the branch the package actually develops on, usually dev-main):
Confirm the package name frompackages/<folder>/composer.json(grep '"name"' packages/<folder>/composer.json) — it can differ from the folder name.requireuses the name, thepathurl uses the folder.
B3. Resolve, verify, commit
Note: for own packages you do commit the packages/<folder> contents (unlike moox packages).
Important rules (apply to both cases)
- Never edit package code in `packages/` or `vendor/` on a server — it's overwritten on deploy. Moox package code is edited in the monorepo; own package code is edited in
packages/<folder>locally and committed. - `--no-dev` on deploy: consumed packages must be in
require, notrequire-dev. Only dev-only tooling (moox/devlink,moox/devtools) belongs inrequire-dev. - Folder name vs package name differ for some packages — keep
require(name) andpath/list (folder) straight. - Don't run `moox:deploy` in this project — it would strip the path setup.
- If
php artisan moox:devlink-exportreports an empty or wrong list, check that the package isactive: trueANDtype: publicinconfig/devlink.php(bundles,private,localare intentionally excluded).
Done
After committing, the package is available locally, and on the next CI run / deploy the sparse checkout will fetch it (moox) or the committed files will be present (own). Remind the user to push so CI/deploy pick it up.
Security
- Security scanPassed, 100 of 100Pattern checks on the skill's files.
- Model reviewNot runA model review is scheduled for the next rescan.
Quality evaluation
- Task evaluationNot runNo evaluation yet. Run one in Skill Studio.
Source
- SKILL.md in the repositoryCheckingpackages/devlink/resources/boost/skills/add-moox-package/SKILL.md
Popularity
- Repository stars
- 156
- Repository forks
- 16
- 7-day trend score
- 25
Stars and forks are for the whole GitHub repository, not this skill alone. Not refreshed yet.
Works with
Any agent vskill installs to: 56 targets in all. These 39 have a page on this site.
- Claude Code
- Cursor
- GitHub Copilot
- Windsurf
- Codex
- Gemini CLI
- Cline
- Amp
- Roo Code
- Goose
- Continue
- Kilo Code
- Junie
- Trae
- OpenHands
- Qwen Code
- AI Agent
- Tabnine Chat
- Sourcegraph Cody
- Amazon Q
- Firebase Genkit
- Sweep
- Devin
- Phind
- Mentat
- Claude Desktop
- Aider
- GPT Pilot
- Plandex
- bolt.new
- v0
- Replit Agent
- Anse
- TypingMind
- BetterChatGPT
- LibreChat
- Warp AI
- Pieces
- Fig AI
Embed badge
[](https://verified-skill.com/skills/mooxphp/moox/add-moox-package)