cimplify
CLI

cimplify introspect

One-shot snapshot of the current storefront (auth, project link, brand, mock seed, env keys, git) in one structured envelope. Pure local: zero API calls, runs in milliseconds, designed for agents that need to orient in a fresh directory.

introspect is the first command an agent should run when it lands in a Cimplify project. Today an agent typically reads .cimplify/project.json, package.json, lib/brand.ts, next.config.ts, and .env.local separately to figure out what's in front of it. introspect collapses all of that into one call.

It does no remote API calls: every field comes from the local filesystem and ~/.config/cimplify/auth.json. For verdicts and remediation hints, use cimplify doctor instead.

Usage

cimplify introspect           # human-readable summary
cimplify introspect --json    # structured envelope for agents

No flags beyond the globals (--json, --yes).

Human output

Cimplify

  CLI         0.2.9
  Auth        ✓ dev@example.com (biz_abc)
  Project     ✓ proj_xyz
              last deploy: preview · abcdef0 · dep_01H…
  Package     my-store · @cimplify/sdk ^0.45.4
              scripts: dev, build, check
  Brand       ✓ Currents Electronics (Store) lib/brand.ts
  Theme       ✓ app/globals.css
  Next        ✓ ISR Previous Model (cacheComponents off) next.config.ts
  Mock        seed: retail
  Env         .env.local: 4 keys · .env.example: 4 keys
  Git         main · clean

JSON envelope

{
  "ok": true,
  "data": {
    "cwd": "/path/to/store",
    "cli": { "version": "0.2.9" },
    "auth": {
      "logged_in": true,
      "account_id": "act_…",
      "business_id": "biz_…",
      "email": "dev@example.com",
      "api_base_url": "https://api.cimplify.io"
    },
    "project": {
      "linked": true,
      "id": "proj_…",
      "remote_url": "git@…",
      "default_branch": "main",
      "framework": "nextjs-app",
      "last_deployment": {
        "id": "dep_…",
        "sha": "abcdef0…",
        "environment": "preview",
        "at": "2026-05-13T12:00:00Z"
      }
    },
    "package": {
      "found": true,
      "name": "my-store",
      "sdk_pin": "^0.45.4",
      "scripts": ["dev", "build", "check"]
    },
    "brand": {
      "found": true,
      "path": "lib/brand.ts",
      "name": "Currents Electronics",
      "schema_type": "Store"
    },
    "theme": { "globals_css_path": "app/globals.css", "has_theme_block": true },
    "next_config": { "path": "next.config.ts", "cache_components": true },
    "mock": { "seed": "retail" },
    "env_files": [
      { "file": ".env.local", "keys": ["NEXT_PUBLIC_CIMPLIFY_PUBLIC_KEY", "…"] },
      { "file": ".env.example", "keys": ["…"] }
    ],
    "git": { "branch": "main", "sha": "abcdef0…", "dirty": false }
  }
}

What it inspects

FieldSource
cli.versionBundled into the CLI binary at build time.
auth~/.config/cimplify/auth.json (XDG-compliant).
project.cimplify/project.json + .cimplify/state.json (the latter for the last-deployment summary).
package./package.json: name, scripts, @cimplify/sdk pin.
brand./lib/brand.ts (or ./src/lib/brand.ts): regex-extracts name: and schemaType:. No code execution.
theme./app/globals.css: detects presence of the @theme block (Tailwind v4).
next_config./next.config.{ts,mjs,js}: detects cacheComponents (should be off / absent for CF Workers compatibility) and output: "standalone".
mock.seedThe --seed <name> flag inside package.json scripts.dev.
env_filesLists key names (not values) from .env.local, .env.example, .env.production.
gitbranch, short sha, and dirty flag (via git status --porcelain).

Exit codes

introspect is reportive; it never fails because state is missing. Unauthed, unlinked, or non-Next directories simply show logged_in: false, linked: false, etc.

Exit code is always 0 unless the CLI itself is misconfigured (e.g., INTERNAL).

Compared to doctor

introspectdoctor
Output styleSnapshotVerdicts
Remote callsNeverTwo pings (skippable with --offline)
Exit codeAlways 01 if any check fails
Use caseOrientPre-flight before deploy

Run introspect to know what's there. Run doctor to know what's broken.

On this page