Skills DirectorySkills Directory
SkillsLearnSecurityCategoriesDocsCommunityBlog
Sign InSubmit Skill
Skills Directory

Security-tested agent skills for Claude, coding agents, and AI workflows.

Directory

  • Browse Skills
  • All Skills A–Z
  • Claude Skills
  • Claude Code Skills
  • Agent Skills
  • Categories
  • Submit a Skill

Learn

  • Learn Hub
  • Install Claude Skills
  • Write SKILL.md
  • Skills vs MCP
  • Directories Compared

Security

  • Security
  • Methodology
  • Secure Claude Skills
  • Security Badges

Company

  • About
  • Community
  • Blog
  • API Docs
  • Advertise

2026 Skills Directory. All rights reserved.

Back to skills

Iblai Vibe Org Metadata

CSecurity

Store custom organization-wide settings for your app on the ibl.ai platform — app name, welcome message, support URL, the default agent, any per-org configuration — in the org's metadata object with a GET-merge-PUT helper that never drops the OS's own keys, plus where branding (name, logos, support email, help center) lives instead. Use when the user mentions organization settings, org-level config, per-organization settings, white-label, app settings for the whole org, or a setting every mem...

15 stars
0 votes
0 copies
0 views
Added 9/20/2026
developmentpythongogitapidatabase

Works with

cliapi

Security Analysis

C67/100
mediumUses curl or wget to download content
criticalDownloads and executes remote scripts — classic supply chain attack

Scanned 9/20/2026

Install to Claude Code

$npx -y skills add iblai/vibe --skill iblai-vibe-org-metadata --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Iblai Vibe Org Metadata?

Add the live security badge to your README — it updates automatically with every re-scan.

Security grade badge for Iblai Vibe Org Metadata
[![Security: C — Skills Directory](https://www.skillsdirectory.com/api/skills/iblai-iblai-vibe-org-metadata/badge)](https://www.skillsdirectory.com/skills/iblai-iblai-vibe-org-metadata)

More formats (shields.io, HTML) on the badges page.

Download Zip
Files
SKILL.md
---
name: iblai-vibe-org-metadata
description: Store custom organization-wide settings for your app on the ibl.ai platform — app name, welcome message, support URL, the default agent, any per-org configuration — in the org's metadata object with a GET-merge-PUT helper that never drops the OS's own keys, plus where branding (name, logos, support email, help center) lives instead. Use when the user mentions organization settings, org-level config, per-organization settings, white-label, app settings for the whole org, or a setting every member should see. For per-user data see /iblai-vibe-user-metadata; for the SDK Organization tab see /iblai-vibe-account.
globs:
alwaysApply: false
metadata:
  core: true
  kind: ui
---

# /iblai-vibe-org-metadata

> **First time here?** If `iblai.env` has no `ARCHITECTURE=`, run `/iblai-vibe-start` first (four questions; two minutes) — it decides single-org / multi-org / headless and who signs in, and every skill reads the answer.

Every organization has **one public metadata object**. The ibl.ai OS keeps
its own settings there (default agent, help center URL, chat width, feature
toggles, the sign-in page branding), and your app can keep its own keys
beside them. It is how an app remembers org-level choices — which agent the
home page uses, what the app is called, a welcome message — without a
database.

![App settings form on /admin/organization](https://raw.githubusercontent.com/iblai/vibe/refs/heads/main/skills/organizations/iblai-vibe-org-metadata/iblai-vibe-org-metadata-1-settings.png)

> **Common setup (brand, conventions, env files, verification):** see [docs/skill-setup.md](https://raw.githubusercontent.com/iblai/vibe/refs/heads/main/docs/skill-setup.md).

## The two rules

1. **PUT replaces the whole object.** `PUT …/orgs/{org}/metadata/` with only
   your keys silently deletes `overall_default_mentor`, `help_center_url`,
   `auth_web_mentorai`, every toggle — and breaks the OS for that org. The
   helper in this skill always **GET → merge → PUT**, re-reading right before
   it writes.
2. **It is a public read.** `GET …/orgs/{org}/metadata/` needs no auth. Never
   store a secret, a token, a price you do not want visible, or a person's
   data there. Ids and display strings only.

Writes need an org admin; the platform answers `403` otherwise.

## What you get

- `useOrgSettings<T>()` in `lib/iblai/metadata.ts` (installed by
  `/iblai-vibe-user-metadata`; the two share the file) — typed read/merge
  under `metadata.apps.<slug>`, GET-merge-PUT on write.
- `OrgSettingsForm` — an admin card (app name, welcome message, support URL)
  for `/admin/organization`.
- vibe-starter's `/setup` stores `defaultAgentId`, `appName`, and
  `setupCompletedAt` here; the home page reads `defaultAgentId` when
  `NEXT_PUBLIC_DEFAULT_AGENT_ID` is empty.

## Where branding lives instead

| Setting | Where | Skill |
|---|---|---|
| Org display name, light/dark logos, support email, Help Center toggle + URL | SDK `Account` → **Organization** tab (`OrganizationTab`) | `/iblai-vibe-account` |
| Default agent, Help/Accessibility menus, Community Agents, Report content, Chat History Export | SDK `Account` → **Advanced** tab — these are the OS's keys in this same object | `/iblai-vibe-account` |
| Sign-in page title, logo, headline, footer credit, policy links (`auth_web_*`) | written by `/iblai-vibe-auth` Step 2 | `/iblai-vibe-auth` |
| Your app's own settings | `apps.<slug>` via this skill | here |

## Step 1: Install

`useOrgSettings` ships in `lib/iblai/metadata.ts` — run
`/iblai-vibe-user-metadata` Step 2 if the app does not have it. Then render
`assets/org-settings.tsx.j2` → `components/settings/org-settings.tsx` (needs
shadcn `card`, `input`, `label`).

## Step 2: Use it

```tsx
"use client";

import { useOrgSettings } from "@/lib/iblai/metadata";

type MyOrgSettings = { welcomeMessage?: string; supportUrl?: string };

export function Welcome() {
  const { settings } = useOrgSettings<MyOrgSettings>({ welcomeMessage: "", supportUrl: "" });
  return settings.welcomeMessage ? <p>{settings.welcomeMessage}</p> : null;
}
```

Admins save with `update({ welcomeMessage: "…" })`; every member reads it.
Mount `<OrgSettingsForm />` on an admin-only page (`/iblai-vibe-admin`).

## Step 3: Add your own keys

Extend `OrgSettings` in `lib/iblai/metadata.ts` and the form. Keep values
JSON-serializable and small; this object is fetched by every ibl.ai front
end that opens the org.

## Verify

1. `pnpm typecheck && pnpm test`.
2. Before and after saving, compare
   `curl -s https://api.$DOMAIN/dm/api/core/orgs/$PLATFORM/metadata/ | python3 -m json.tool` —
   only `metadata.apps.<slug>` changed; `overall_default_mentor` and the
   `auth_web_*` blocks are intact.
3. A non-admin's save fails with a toast, not a crash.

## Platform data

| Hook / call | Purpose |
|---|---|
| `useGetTenantMetadataQuery([{ org }])` | the object (public) |
| `useUpdateTenantMetadataMutation()` → `([{ org, requestBody: { metadata } }])` | PUT (replace — always merge first) |
| `useTenantMetadata()` (`web-utils`) | the SDK's cached view of the same object |
| `GET/PUT https://api.<domain>/dm/api/core/orgs/{org}/metadata/` | REST |

REST reference: [iblai-api-org](https://raw.githubusercontent.com/iblai/vibe/refs/heads/main/skills/organizations/iblai-api-org/SKILL.md).

## Related skills

- `/iblai-vibe-user-metadata` — per-user twin
- `/iblai-vibe-account`, `/iblai-vibe-admin` — where to mount the form
- `/iblai-vibe-auth` — the sign-in page branding keys

Attribution

iblaiiblai
View sourceMore from iblai →
SSkills DirectorySkills Directory

Know which skills are safe — weekly.

Best new skills + every skill we flagged as malicious. From the team that scanned 103,619.

Join free

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments (0)

No comments yet. Be the first to comment!

SSkills DirectorySkills Directory

Know which skills are safe — weekly.

Best new skills + every skill we flagged as malicious. From the team that scanned 103,619.

Join free

Related Skills

Browser Extension Developer

Use this skill when developing or maintaining browser extension code in the `browser/` directory, including Chrome/Firefox/Edge compatibility, content scripts, background scripts, or i18n updates.

281612 votes

Seo Optimizer

SEO optimization with keyword analysis, readability assessment, technical validation, content quality. Use for search rankings, blog posts, content audits, or encountering keyword density, readability scores, meta tags, schema markup errors.

2132 votes

Google Official Seo Guide

Official Google SEO guide covering search optimization, best practices, Search Console, crawling, indexing, and improving website search visibility based on official Google documentation

1862 votes

Tanstack Start

Build a full-stack TanStack Start app on Cloudflare Workers from scratch — SSR, file-based routing, server functions, D1+Drizzle, better-auth, Tailwind v4+shadcn/ui. Use whenever the user mentions TanStack Start, asks to scaffold a full-stack Cloudflare app with SSR, wants an SSR dashboard, or asks for a React 19 + Cloudflare Workers app with file-based routing and server functions — even if they don't name TanStack Start specifically. No template repo — Claude generates every file fresh per ...

9881 votes

Pentest

PTES-aligned adversarial security audit for backend, frontend, and mobile applications. Produces a CVSS-scored Hacker Report with verified PoCs and phased remediation.

5491 votes
View all in development →