Shared AI assets for webhub GmbH — guidelines, Skills, and slash-commands used across our Laravel and Craft CMS projects, and uploaded to our claude.ai Team workspace.
cd into your dev directory first (~/reps, ~/code, whatever you use), then run:
[ -d ai ] || git clone https://github.com/webhubworks/ai.git && cd ai && git pull && ./bootstrap.shClones webhubworks/ai into the current directory if it isn't already there, pulls the latest, then runs bootstrap.sh to wire commands and guidelines into ~/.claude. Safe to re-run any time — it's the update path too.
ai/
├── bootstrap.sh # One-shot installer that links this repo into ~/.claude
├── guidelines/ # Plain-markdown guidelines
│ ├── README.md
│ ├── webhub.md # stack-agnostic webhub baseline
│ ├── webhub-laravel.md # Laravel/PHP
│ └── webhub-craft-cms.md # Craft CMS (scaffold)
├── skills/ # claude.ai Skills (each subfolder zips up into one Skill)
│ ├── laravel/
│ │ └── SKILL.md
│ └── craft-cms/
│ └── SKILL.md
└── commands/ # Slash-commands for Claude Code
├── laravel/ # → /webhub:laravel:<name>
│ ├── commit-and-simplify.md
│ └── simplify.md
├── plan-issue.md # → /webhub:plan-issue
└── security-review.md # → /webhub:security-review
See the one-liner above. What bootstrap.sh does, idempotently:
- Symlinks
commands/into~/.claude/commands/webhub/, so every slash-command in this repo is available as/webhub:<name>(subdirs add namespace segments — e.g./webhub:laravel:simplify). - Appends an
@<path>import for the stack-agnosticwebhub.mdto~/.claude/CLAUDE.md, so the webhub baseline applies to every session regardless of stack. Existing content in~/.claude/CLAUDE.mdis left untouched.
Stack-specific guidelines (webhub-laravel.md, webhub-craft-cms.md) are intentionally not loaded globally — they're pulled into each project repo by their starter packages (laravel-starter's webhub:post-autoload hook, future craft-starter, …) and committed there. That way Claude only sees Laravel rules in Laravel work and Craft rules in Craft work.
To update: re-run the one-liner from the directory above the clone, or cd into the clone and run git pull && ./bootstrap.sh. Symlinks pick up new commands automatically; re-running bootstrap.sh is only required when new globally-imported guidelines are added.
From inside your clone of this repo, same effect by hand:
ln -sfn "$PWD/commands" ~/.claude/commands/webhub
echo "@$PWD/guidelines/webhub.md" >> ~/.claude/CLAUDE.mdPlain markdown files consumed by AI tooling in our projects.
- User-level (this repo, via
bootstrap.sh): imports the full set into~/.claude/CLAUDE.md. - Project-level: Laravel apps pull
webhub-laravel.md(+ spatie'slaravel-php-ai-guidelines.md) into.ai/guidelines/automatically — bothphp artisan webhub:installandwebhub:updatedo this, and thewebhub:post-autoloadhook keeps them fresh on everycomposer dump-autoload. - Raw URL pattern:
https://raw.githubusercontent.com/webhubworks/ai/main/guidelines/<file>— keepmainstable.
To add a new guideline file, drop it into guidelines/ and:
- Add it to the
GUIDELINES=( … )array inbootstrap.shif it should apply user-level. - Add a
curlline inlaravel-starter'spublishCustomAiGuidelines()if it should land in every Laravel project.
Each subfolder under skills/ is one Skill. Upload to claude.ai as a .zip with SKILL.md at the root of the zip (not nested inside a folder):
cd skills/laravel && zip ../laravel.zip SKILL.md && cd -
cd skills/craft-cms && zip ../craft-cms.zip SKILL.md && cd -Then in claude.ai: Settings → Skills → Organization skills → + Add → pick the .zip. Only the org owner can publish org-wide skills.
When a skill grows extra files (examples, scripts, reference docs), zip the contents of its folder — siblings of SKILL.md at the root, no wrapper directory.
- Edit the file here.
- Commit + push.
- Consumers re-pull:
- User-level (
~/.claude/…):git -C ~/reps/ai pull— symlinks update commands automatically; new guidelines need a re-run ofbootstrap.sh. - Laravel projects:
php artisan webhub:update(or justcomposer dump-autoloadthanks to thewebhub:post-autoloadhook). - claude.ai Skills: re-zip and re-upload via the admin UI.
- User-level (