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
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
Install
- Works in
In your terminal, with SkillFoxx CLI
npx skillfoxx add skills/vibexDetects the agents on your machine, shows the access level and pins the version.
Other ways to install
Access and checks
How we reviewExtended 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.
Related
SkillsA skill that replaces terminal ASCII with self-contained HTML pages: diagrams, diff reviews, plan reviews, tables and slide decks
Skill that draws architecture, flowchart and sequence diagrams as hand-placed SVG in one house style
Over 150 skills for building apps on the ibl.ai platform: sign-in, agent chat, profiles, analytics, desktop and mobile builds
A CLI and skill that map services from code: diagrams, APIs and DB schemas live as repo files with a local viewer.
A skill for building on VibeCode Bitrix24: docs routing, keys and auth, Black Hole deployment and common mistakes
A Codex skill for reviewing AI-written code: explains blocks, names files and lines, checks goals against evidence.
Comparison with similar tools
Cards that share the main search query, and how they differ.
| Tool | Official | Authentication | Repository stars | Main difference |
|---|---|---|---|---|
| vibeX (this card) | no | 392 | ||
| MCP Mermaid | no | not required | 649 | an MCP server that draws Mermaid diagrams on request but does not read the project schema |
| TerraVision | no | 1,684 | draws 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`.