From vibiz
Detect the local project's brand URL and match it to an existing vibiz, or create one if none matches.
How this skill is triggered — by the user, by Claude, or both
Slash command
/vibiz:project-matchThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Whenever the user asks for a Vibiz tool that needs a `target.vibiz`, you should match the **current local project** against their existing vibizes — and only ask them which one to use if matching is ambiguous. This skill describes how.
Whenever the user asks for a Vibiz tool that needs a target.vibiz, you should match the current local project against their existing vibizes — and only ask them which one to use if matching is ambiguous. This skill describes how.
Try in order, stop at the first one that yields a public, parseable URL:
package.json — read the homepage field. (Skip repository — that's a git URL, not a brand URL.)pyproject.toml — [project].urls.Homepage or [tool.poetry].homepage.Cargo.toml — [package].homepage.README.md / README.mdx — first 100 lines, find the first link of the form https?://<host> that is NOT:
shields.io, img.shields.io, badge.fury.io, flat.badgen.net)readthedocs.io, gitbook.com, docs.rs)[![ (markdown badge image)git remote get-url origin. If it's a GitHub repo, do NOT use it as the brand URL; instead ask the user "what's the public website for this project?" (Enter to skip.)Refuse private/local URLs: localhost, 127.0.0.1, *.local, *.internal, *.test. Tell the user the brand kit needs a public website.
Both sides (the detected URL + each vibiz's websiteUrl) get the same treatment:
1. lowercase
2. strip leading 'http://' or 'https://'
3. strip leading 'www.'
4. strip trailing '/'
5. take the host + first path segment only (drop query strings, hashes, deep paths)
Examples:
https://www.Stripe.com/ → stripe.comhttps://stripe.com/payments → stripe.com (we keep just the host for top-level brand sites)https://shop.example.com → shop.example.com (subdomains DO matter — different brand)list_vibizCall list_vibiz (returns [{ name, slug, websiteUrl, logoUrl }]). Apply the same normalization to each vibiz's websiteUrl. Compare strings.
Outcomes:
Exactly one match → tell the user "Matched this project to vibiz " and use target: { vibiz: "<slug>" } from then on. Do NOT ask them to pick.
Multiple matches (rare — same URL across vibizes) → list them and ask which one.
Zero matches → the project hasn't been onboarded. Offer:
I don't see a vibiz for
<url>yet. Want me to create one? (yes / no / use a different vibiz)
If yes → call vibiz_create_from_url({ websiteUrl }) (see /vibiz:onboard for the full flow).
Once you've matched, remember the slug for the rest of the session — don't re-detect on every command. (You can't write to a file from a slash command, but you can keep it in conversation context: state "using vibiz <slug> for this session" once, and reference it on later calls.)
name (free-form) — match on websiteUrl (canonical). Names collide; URLs don't.Provides UI/UX resources: 50+ styles, color palettes, font pairings, guidelines, charts for web/mobile across React, Next.js, Vue, Svelte, Tailwind, React Native, Flutter. Aids planning, building, reviewing interfaces.
Fetches up-to-date documentation from Context7 for libraries and frameworks like React, Next.js, Prisma. Use for setup questions, API references, and code examples.
npx claudepluginhub vibiz-ai/vibiz-claude-plugin --plugin vibiz