vibeX skill

A skill and CLI that draw architecture diagrams from Prisma, OpenAPI, GraphQL and code, and check the docs in CI for drift from the code

  • 392 ★ on the repository
  • Last commit
  • MIT
Skill

Extended access

Why this level

  • The skill runs a local Node.js CLI, reads the project's source code and writes spec and HTML files into the project directory
  • The `vibex workspace` command prepares a server deployment with a password you set yourself
All reasons and checks

raja0sama/vibex

Install

In your terminal, with SkillFoxx CLI

npx skillfoxx add skills/vibex

Detects the agents on your machine, shows the access level and pins the version.

Other ways to install

Access and checks

How we review

Extended accessThe tool runs code or makes network calls and only reads external data.

  • The skill runs a local Node.js CLI, reads the project's source code and writes spec and HTML files into the project directory
  • The `vibex workspace` command prepares a server deployment with a password you set yourself

This is third-party code. Review the repository files before installing.

What it does

vibeX builds diagrams from what cannot lie: a Prisma schema, an OpenAPI document, a GraphQL description or the code itself. It outputs two files: a JSON spec that counts as the source of truth and a single HTML page for viewing with zoom, search, dark and light themes and SVG and PNG export. There is no server, and data never leaves your machine. There are six diagram types: a table ER diagram, C4 levels, an API endpoint catalogue, a lifecycle with allowed transitions, a sequence diagram and a map of calls between services. Each exports to Mermaid. When there is no ready schema, the skill reads NestJS controllers, GraphQL resolvers, TypeORM entities, Express routes and SQL migrations and writes the spec itself. A separate command, `vibex docs`, writes a description of the system as claims, each with a source: a hash tying it to a file and symbol, a calculation from a diagram, or a person's decision with a date. With the `--check` flag the command fails when the code has moved out from under a claim, so stale documentation breaks CI. The check runs without any model, using only files, hashes and git.

Who it is for. For developers and team leads who need current data, API and service diagrams and documentation that keeps pace with the code, working in Claude Code or Codex.

Good fit when

  • You need a database ER diagram from prisma/schema.prisma and the request is as simple as "show me the data model"
  • You need an endpoint catalogue from an OpenAPI document or GraphQL schema, grouped by resource, with methods and response codes
  • You want to know which states an order or request goes through and who moves it on, on which event
  • Service documentation should be tied to the code so CI fails when the description goes stale
  • You need a map of calls between services across several repositories, checking that the client and handler are in place

Not a fit when

  • You want a polished presentation diagram with a hand-made layout: vibeX builds verifiable diagrams from sources and does not design slides
  • The project has neither a schema nor readable code to infer structure from: C4, lifecycle and sequence specs have to be written by hand
  • You need a check that the first description was right: vibeX catches drift from the code but not a mistake in the first draft, which a person catches on first reading
  • You need an online whiteboard for joint editing: the result is a file with no server behind it

Example request

Show the data model from prisma/schema.prisma, then draw the endpoint catalogue from openapi.yaml and build documentation for the payment service with a staleness check.

Limitations

Node.js 18 or newer is required. The project has no dependencies, but the YAML form of OpenAPI needs `npm install` in the skill folder when you install through skills add or the plugin, because they copy the repository and not the npm package.

The `vibex docs --check` command catches drift and not an original mistake: if the first draft misread the code, the hash still matches and CI stays green. The author advises reading the spec once with your own eyes. C4, lifecycle and sequence diagrams have no source schema, so they are written by hand or from the code.

With a global npm install and a symlink into the skills directory, switching Node versions under nvm silently breaks both the binary and the symlink. The skills add command does not have this problem. So that claims anchored to code get checked when the dashboard is built, pass the `--repo` parameter, otherwise they show as unverifiable.

How to disable. Delete the vibex folder from ~/.claude/skills/ and ~/.agents/skills/ or disable the plugin with /plugin. The generated spec and HTML files stay in the project and can be deleted separately. For the global package run `npm uninstall -g @vibex/vibex`.

FAQ

How do I install vibeX in Claude Code?

Run npx skills add Raja0sama/vibex -g -a claude-code -a codex -y, which installs the skill for Claude Code and Codex. The second route is /plugin marketplace add Raja0sama/vibex followed by /plugin install vibex@vibex. Restart the agent after installing.

Which diagrams can vibeX build?

An ER diagram, C4 levels, an endpoint catalogue, a lifecycle, a sequence diagram and a map of calls between services. The ER diagram comes from Prisma and GraphQL, the endpoint catalogue from OpenAPI and GraphQL, and the other types are described by hand or from the code.

Does vibeX send data to a server?

No. The viewer makes no network requests and uses no external fonts, analytics or telemetry, and the result opens as an ordinary file. The `vibex host` command only prepares nginx and Docker files so you can publish the pages on your own server behind a login.

How does vibeX check documentation for staleness?

The `vibex docs --check` command recalculates every claim from its source: a code hash, a calculation from a diagram or the expiry of a person's decision. If the code has moved, the command exits with code 1 and CI fails. No model takes part in the check.

Can I get the diagram in Mermaid?

Yes. The `vibex mermaid` command with a spec path prints the diagram, and `vibex render` writes an .mmd file next to the HTML. The viewer has an export button too. GitHub, GitLab and Notion display such text.

Discussion

No questions or reviews yet.

Skills

A skill that replaces terminal ASCII with self-contained HTML pages: diagrams, diff reviews, plan reviews, tables and slide decks

SkillExtended access11.1KRepository stars

Skill that draws architecture, flowchart and sequence diagrams as hand-placed SVG in one house style

SkillMinimal access671Repository stars

Over 150 skills for building apps on the ibl.ai platform: sign-in, agent chat, profiles, analytics, desktop and mobile builds

PluginBroad access229Repository stars

A CLI and skill that map services from code: diagrams, APIs and DB schemas live as repo files with a local viewer.

CLIExtended access83Repository stars
Russian stack

A skill for building on VibeCode Bitrix24: docs routing, keys and auth, Black Hole deployment and common mistakes

SkillMinimal access3Repository stars

A Codex skill for reviewing AI-written code: explains blocks, names files and lines, checks goals against evidence.

SkillExtended access133Repository stars

Comparison with similar tools

Cards that share the main search query, and how they differ.

ToolOfficialAuthenticationRepository starsMain difference
vibeX (this card)no392
MCP Mermaidnonot required649an MCP server that draws Mermaid diagrams on request but does not read the project schema
TerraVisionno1,684draws AWS, Azure and GCP cloud infrastructure diagrams rather than application data and APIs

README in short

The README makes its case with examples: three commands with no config file (import a schema, validate, render), a dashboard of all project specs and a mode for several repositories. It describes in detail how documentation claims work, the five confidence states, the fix loop through a prefilled tracker issue and generating a changelog from commit history.

README badge

Original SKILL.md

---
name: vibex
description: 'Diagrams and checkable docs from a codebase. Draws ERDs, C4 context/container/component views, API endpoint catalogues, lifecycle/state machines, sequence diagrams, and service-to-service call maps as a validated JSON spec plus a standalone HTML viewer, with Mermaid export. Imports OpenAPI, GraphQL SDL and Prisma; otherwise reads the code (NestJS, TypeORM, Express) and writes the spec. Use for: database diagram, ERD, data model, table relationships, C4 or architecture diagram, system context, API map, endpoint list, "show me the endpoints", status flow, state machine, allowed transitions, "what happens after X is approved", sequence diagram, request flow, how services call each other, microservice map, Mermaid diagram. Also writes documentation as a fact graph: each statement carries its source and a computed confidence, and a drift check fails CI when the code moves. Use to document a system, write architecture or onboarding docs, or explain how a system works.'
license: MIT
metadata:
  version: "0.8.1"
  cli: node bin/vibex.mjs
  repository: https://github.com/Raja0sama/vibex
---

# vibeX

*You vibed it into existence. vibeX shows you what you actually built.*

Output is always two files: `<name>.<type>.json` (the spec, the source of truth) and `<name>.<type>.html` (self-contained viewer: pan/zoom, search, click-for-details, dark/light, SVG/PNG export). Not fancy. Correct and readable.

Skill root: the directory containing this file. Every command below is `node <skill-root>/bin/vibex.mjs …`.

## Steps

1. **Pick the type** from the ask. One diagram per type per question; do not mix.

   | Ask | Type | Spec file |
   |---|---|---|
   | tables, models, schema, relations, FKs, data model | `erd` | `schemas/erd.schema.json` |
   | context, containers, components, who talks to what, system boundary | `c4` | `schemas/c4.schema.json` |
   | endpoints, routes, API surface, GraphQL operations, events/topics | `endpoints` | `schemas/endpoints.schema.json` |
   | statuses, state machine, lifecycle, what happens after X, allowed transitions | `lifecycle` | `schemas/lifecycle.schema.json` |
   | sequence diagram, request flow, what happens when the user clicks X, who calls whom and in what order | `sequence` | `schemas/sequence.schema.json` |

2. **Find a machine-readable source first.** Search the repo before reading code:
   - `endpoints`: `openapi.*`, `swagger.*`, `*.graphql`, `schema.gql`, or a generated schema endpoint dump. Run `import openapi` or `import graphql`.
   - `erd`: `schema.prisma` → `import prisma`. A GraphQL SDL can also seed an ERD with `import graphql <file> out.json --erd`.
   - `c4`: never importable. Author it (step 3).

   ```bash
   node bin/vibex.mjs import openapi  path/to/openapi.yaml  out/api.endpoints.json
   node bin/vibex.mjs import graphql  path/to/schema.graphql out/api.endpoints.json
   node bin/vibex.mjs import prisma   prisma/schema.prisma   out/db.erd.json
   ```

   After an import, open the JSON and edit it like a human would: rename groups, drop noise endpoints (health, metrics), add `entities` links on endpoints, add `sources`. The import is a starting point, not the deliverable.

3. **No source file? Dig in the code.** Read the schema file for your type once, then read one example in `examples/`. Author the JSON fresh. Where to look:
   - **NestJS REST**: `@Controller('prefix')` + `@Get/@Post/@Put/@Patch/@Delete('path')` → one endpoint each, path = prefix + path with `:id` rewritten as `{id}`. `@UseGuards(...)`/`@Roles(...)` → `auth`. `@Body()` DTO class → `request`. Return type / `@ApiOkResponse` → `response`. One group per controller. Put `sources: [{path, line}]` on every endpoint pointing at the handler method. Prepend `app.setGlobalPrefix()` and `@Version()`/`VersioningType.URI` segments to every path. `@Param()` → `params[].in: "path"`, `@Query()` → `"query"`, `@Headers()` → `"header"`; a DTO class in `@Query()` becomes one param per property.
   - **NestJS GraphQL**: `@Query()`, `@Mutation()`, `@Subscription()` in `*.resolver.ts` → method QUERY/MUTATION/SUBSCRIPTION, path = `name(arg: Type)`. `@ObjectType`/`@InputType` classes → `types`.
   - **Express/Fastify**: `router.get('/x', …)`, `app.post(...)`, `fastify.route({method, url})`.
   - **TypeORM**: `@Entity('table')` classes; `@PrimaryGeneratedColumn`/`@PrimaryColumn` → `pk`; `@Column({nullable, unique, type})`; `@ManyToOne` + `@JoinColumn` → FK on this side, relationship `from` this entity `to` target with `from_cardinality: many`; `@OneToOne` → `one`/`zero-or-one`; `@ManyToMany` + `@JoinTable` → a join entity or a many↔many relationship.
   - **Prisma**: prefer the importer. The importer already fills `sources` (path + model line); add `description` and `groups` by hand. It names entities by the lowercased model name (`OrderItem` → `orderitem`; `@@map` only changes the label).
   - **SQL migrations**: `CREATE TABLE`, `REFERENCES`, `PRIMARY KEY`, `UNIQUE`.

Report a problem