fimo 0.12.0-staging.1 → 0.12.0-staging.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/assets/skills/fimo/SKILL.md +7 -5
- package/assets/skills/fimo-cli/SKILL.md +8 -16
- package/assets/skills/fimo-cli/references/agent-setup.md +13 -13
- package/assets/skills/fimo-cli/references/assets.md +2 -2
- package/assets/skills/fimo-cli/references/content.md +10 -10
- package/assets/skills/fimo-cli/references/forms.md +6 -6
- package/assets/skills/fimo-cli/references/init.md +1 -1
- package/assets/skills/fimo-cli/references/labels.md +3 -3
- package/assets/skills/fimo-cli/references/locales.md +1 -1
- package/assets/skills/fimo-code/SKILL.md +2 -2
- package/assets/skills/fimo-studio/SKILL.md +3 -1
- package/assets/skills/fimo-studio/references/ai-chat.md +1 -1
- package/assets/skills/fimo-studio/references/command-palette.md +31 -0
- package/dist/build/vite/plugins/content-sync.js +1 -1
- package/dist/cli/bundle.json +1 -1
- package/dist/cli/index.js +167 -58
- package/dist/runtime/labels/core.d.ts +18 -0
- package/dist/runtime/labels/core.js +15 -0
- package/dist/runtime/labels/fetch.d.ts +7 -0
- package/dist/runtime/labels/fetch.js +41 -0
- package/dist/runtime/next/client.d.ts +11 -3
- package/dist/runtime/next/client.js +9 -2
- package/dist/runtime/next/facade.d.ts +8 -0
- package/dist/runtime/next/facade.js +34 -0
- package/dist/runtime/next/labels.d.ts +7 -0
- package/dist/runtime/next/labels.js +9 -0
- package/dist/runtime/next/{Text.d.ts → primitives/Text.d.ts} +1 -1
- package/dist/runtime/next/{Text.js → primitives/Text.js} +1 -1
- package/dist/runtime/next/primitives/server.d.ts +9 -0
- package/dist/runtime/next/primitives/server.js +46 -0
- package/dist/runtime/next/provider.d.ts +5 -2
- package/dist/runtime/next/provider.js +18 -5
- package/dist/runtime/next/server.d.ts +8 -1
- package/dist/runtime/next/server.js +5 -1
- package/dist/runtime/primitives/index.d.ts +10 -10
- package/dist/runtime/primitives/index.js +10 -10
- package/dist/runtime/primitives/lib/image-optimization.d.ts +10 -1
- package/dist/runtime/primitives/lib/image-optimization.js +12 -12
- package/dist/runtime/primitives/lib/index.d.ts +0 -1
- package/dist/runtime/primitives/lib/index.js +0 -1
- package/dist/runtime/react/primitives/contracts.d.ts +56 -0
- package/dist/runtime/react/primitives/contracts.js +1 -0
- package/dist/runtime/react/primitives/editable/Boolean.d.ts +5 -0
- package/dist/runtime/react/primitives/editable/Boolean.js +11 -0
- package/dist/runtime/react/primitives/editable/Date.d.ts +4 -0
- package/dist/runtime/react/primitives/editable/Date.js +12 -0
- package/dist/runtime/react/primitives/editable/Image.d.ts +4 -0
- package/dist/runtime/react/primitives/editable/Image.js +10 -0
- package/dist/runtime/react/primitives/editable/Json.d.ts +5 -0
- package/dist/runtime/react/primitives/editable/Json.js +11 -0
- package/dist/runtime/react/primitives/editable/RichText.d.ts +4 -0
- package/dist/runtime/react/primitives/editable/RichText.js +11 -0
- package/dist/runtime/{primitives/components → react/primitives/editable}/Text.d.ts +3 -6
- package/dist/runtime/{primitives/components → react/primitives/editable}/Text.js +2 -1
- package/dist/runtime/react/primitives/editable/Video.d.ts +4 -0
- package/dist/runtime/react/primitives/editable/Video.js +10 -0
- package/dist/runtime/react/primitives/renderers/DateRenderer.d.ts +11 -0
- package/dist/runtime/react/primitives/renderers/DateRenderer.js +14 -0
- package/dist/runtime/react/primitives/renderers/ImageRenderer.d.ts +8 -0
- package/dist/runtime/react/primitives/renderers/ImageRenderer.js +50 -0
- package/dist/runtime/react/primitives/renderers/RichTextRenderer.d.ts +11 -0
- package/dist/runtime/{primitives/components/RichText.js → react/primitives/renderers/RichTextRenderer.js} +4 -6
- package/dist/runtime/{primitives/components → react/primitives/renderers}/StaticImage.d.ts +2 -11
- package/dist/runtime/{primitives/components → react/primitives/renderers}/StaticImage.js +5 -3
- package/dist/runtime/react/primitives/renderers/VideoRenderer.d.ts +8 -0
- package/dist/runtime/react/primitives/renderers/VideoRenderer.js +10 -0
- package/dist/runtime/{primitives/lib → react}/useFimoLiveValue.d.ts +3 -3
- package/dist/runtime/{primitives/lib → react}/useFimoLiveValue.js +3 -3
- package/dist/runtime/vite/primitives/Images.d.ts +4 -0
- package/dist/runtime/vite/primitives/Images.js +12 -0
- package/dist/runtime/{primitives → vite}/translations.d.ts +1 -1
- package/dist/runtime/{primitives → vite}/translations.js +1 -1
- package/dist/scripts/sync-schemas.d.ts +2 -1
- package/dist/scripts/sync-schemas.js +119 -67
- package/package.json +2 -1
- package/templates/react-router/AGENTS.md +4 -2
- package/templates/react-router/package.json +1 -1
- package/dist/runtime/primitives/components/Boolean.d.ts +0 -29
- package/dist/runtime/primitives/components/Boolean.js +0 -33
- package/dist/runtime/primitives/components/Date.d.ts +0 -30
- package/dist/runtime/primitives/components/Date.js +0 -43
- package/dist/runtime/primitives/components/Image.d.ts +0 -72
- package/dist/runtime/primitives/components/Image.js +0 -108
- package/dist/runtime/primitives/components/Json.d.ts +0 -25
- package/dist/runtime/primitives/components/Json.js +0 -29
- package/dist/runtime/primitives/components/RichText.d.ts +0 -9
- package/dist/runtime/primitives/components/Video.d.ts +0 -31
- package/dist/runtime/primitives/components/Video.js +0 -34
- package/dist/runtime/primitives/components/index.d.ts +0 -6
- package/dist/runtime/primitives/components/index.js +0 -5
|
@@ -2,15 +2,15 @@
|
|
|
2
2
|
name: fimo
|
|
3
3
|
description: >-
|
|
4
4
|
Working in or with a Fimo project (a content + media + forms + analytics
|
|
5
|
-
platform for React websites). Load the
|
|
6
|
-
|
|
5
|
+
platform for React websites). Load the current Fimo skills on demand through
|
|
6
|
+
the `fimo` CLI before doing Fimo work — writing schema-driven
|
|
7
7
|
code, running CLI/deploy workflows, using the dashboard, or migrating a site.
|
|
8
8
|
---
|
|
9
9
|
|
|
10
10
|
# Fimo
|
|
11
11
|
|
|
12
|
-
Fimo ships its skills through its CLI
|
|
13
|
-
|
|
12
|
+
Fimo ships its skills through its CLI. `fimo-code` resolves from the project's installed `fimo` package;
|
|
13
|
+
workflow skills resolve from the CLI you run. This file is only a pointer — fetch the real skill when needed.
|
|
14
14
|
|
|
15
15
|
When you are about to do Fimo work:
|
|
16
16
|
|
|
@@ -25,7 +25,9 @@ Pick by task:
|
|
|
25
25
|
|
|
26
26
|
- Writing code — schema-driven JSX, schemas/forms JSON, `t()` labels, `fimo/ui` media → `fimo-code`
|
|
27
27
|
- CLI commands and workflows — push, deploy, sync, labels, domains, analytics → `fimo-cli`
|
|
28
|
-
-
|
|
28
|
+
- Fimo agents — create, configure, validate, deploy, run, or inspect them → `fimo-cli` (`references/agents.md`)
|
|
29
|
+
- AI agent setup — connect Claude Code, Codex, Cursor, or another agent → `fimo-cli` (`references/agent-setup.md`)
|
|
30
|
+
- Project MCP setup — configure `fimo mcp` for a local agent → `fimo-cli` (`references/mcp.md`)
|
|
29
31
|
- The Fimo Studio dashboard / web app UI → `fimo-studio`
|
|
30
32
|
- Migrating an existing site into Fimo → `fimo-migration`
|
|
31
33
|
|
|
@@ -1,23 +1,15 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: fimo-cli
|
|
3
3
|
description: >-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
check site traffic/analytics, inspect or restore project history, invite collaborators, inspect AI credits,
|
|
9
|
-
connect an AI coding client to a Fimo project through MCP,
|
|
10
|
-
report a failing or slow Fimo API, rejected documented argument,
|
|
11
|
-
undocumented workaround, missing capability that blocks work, forces a
|
|
12
|
-
fragile or heavily manual workaround, or would materially accelerate a
|
|
13
|
-
recurring workflow, or other Fimo platform problem to support, log in or
|
|
14
|
-
switch organizations, or set up Fimo for their AI tool. Most "do X with
|
|
15
|
-
Fimo" tasks go through this skill.
|
|
4
|
+
Use the `fimo` CLI to create or operate a Fimo project: content, forms,
|
|
5
|
+
media, labels/locales, deploys, environments, domains, analytics,
|
|
6
|
+
integrations, Fimo agents, collaboration, accounts, and credits. Also use
|
|
7
|
+
for AI agent or MCP setup and confirmed Fimo platform blockers.
|
|
16
8
|
---
|
|
17
9
|
|
|
18
10
|
# Fimo CLI
|
|
19
11
|
|
|
20
|
-
The `fimo` CLI is the workflow surface for Fimo. Fimo is a content + media + forms + analytics platform for React websites with a CMS dashboard. The CLI handles project creation,
|
|
12
|
+
The `fimo` CLI is the workflow surface for Fimo. Fimo is a content + media + forms + analytics platform for React websites with a CMS dashboard. The CLI handles project creation, content / forms / media / labels / locale workflows, deploys, collaboration, account management, Fimo agents, and AI agent setup.
|
|
21
13
|
|
|
22
14
|
This skill describes **what the CLI does and the workflows it drives**. For the package surface used IN code (component props, generated hooks, JSON shapes, code-side rules), load the `fimo-code` skill on demand with `npx fimo@latest skills get fimo-code`.
|
|
23
15
|
|
|
@@ -107,9 +99,9 @@ Load the matching reference when the user's request fires its trigger. Recipes t
|
|
|
107
99
|
- "Invite a collaborator / add Marc / share with client" → `references/invite.md`
|
|
108
100
|
- "Login / log out / who am I / switch organization" → `references/account.md` — note: switching **org** is `fimo orgs switch`; bare `fimo switch` switches **env** (see `references/branches.md`)
|
|
109
101
|
- "Create / scaffold / run / validate an agent / agent bundle / wire or enable its triggers / list agent templates / view agent runs, reports, or logs (`fimo agents *`)" → `references/agents.md`
|
|
110
|
-
- "Install Fimo for my
|
|
111
|
-
- "Connect an
|
|
112
|
-
- "Refresh / update installed Fimo skills / fimo skills sync / agent missing the latest
|
|
102
|
+
- "Install Fimo for my agent / fimo skills install / set up Claude Code, Codex, or Cursor for Fimo" → `references/agent-setup.md`
|
|
103
|
+
- "Connect an agent to a Fimo project through MCP / configure `fimo mcp` / expose Fimo tools to a local MCP client" → `references/mcp.md`
|
|
104
|
+
- "Refresh / update installed Fimo skills / fimo skills sync / agent missing the latest Fimo conventions" → `references/agent-setup.md`
|
|
113
105
|
- "Report a Fimo problem or blocking feature request / contact Fimo support / a Fimo API or command keeps failing / a documented argument is rejected / a supported operation needs an undocumented workaround / a Fimo API is abnormally slow / a confirmed missing capability blocks completion or forces a fragile or heavily manual workaround" → `references/support.md`
|
|
114
106
|
- "Regenerate rule files / I edited AGENTS.md / fimo rules sync" → `references/agent-setup.md`
|
|
115
107
|
- "Show analytics / visitor stats / traffic / pageviews / how is my site performing / top pages / where do visitors come from" → `references/analytics.md` (7-day preview free for all; longer ranges require paid)
|
|
@@ -2,12 +2,12 @@
|
|
|
2
2
|
|
|
3
3
|
> **Run via `npx fimo@latest <command>`** — always the latest CLI, no install needed.
|
|
4
4
|
|
|
5
|
-
Fimo
|
|
5
|
+
Fimo connects agents in two layers:
|
|
6
6
|
|
|
7
|
-
1. **One global bootstrap skill** — a tiny, generic `fimo` skill installed once per user, machine-wide (symlinked into each agent's global skills
|
|
8
|
-
2. **Per-project rule files** — `AGENTS.md` (universal) and `CLAUDE.md` ship in the project template. `fimo rules sync`
|
|
7
|
+
1. **One global bootstrap skill** — a tiny, generic `fimo` skill installed once per user, machine-wide (symlinked into each agent's global skills directory). It contains no workflow content; it routes the agent to skills fetched through `fimo skills get`.
|
|
8
|
+
2. **Per-project rule files** — `AGENTS.md` (universal) and `CLAUDE.md` ship in the project template. `fimo rules sync` generates other agents' variants (`.cursor/rules/fimo.mdc`, `.windsurfrules`, `GEMINI.md`) from `AGENTS.md`.
|
|
9
9
|
|
|
10
|
-
The rich skills (`fimo-code`, `fimo-cli`, `fimo-studio`, `fimo-migration`) are **never installed as files**. They
|
|
10
|
+
The rich skills (`fimo-code`, `fimo-cli`, `fimo-studio`, `fimo-migration`) are **never installed as files**. They are served on demand and never land in the project. `fimo-code` resolves from the project's installed package; the others resolve from the CLI being run:
|
|
11
11
|
|
|
12
12
|
```bash
|
|
13
13
|
npx fimo@latest skills list # what's available
|
|
@@ -40,15 +40,15 @@ fimo skills sync # re-ensure the bootstrap + clean
|
|
|
40
40
|
fimo skills uninstall # remove the global bootstrap
|
|
41
41
|
```
|
|
42
42
|
|
|
43
|
-
`fimo skills install` installs the single global `fimo` bootstrap skill for the selected agents (symlinked into each agent's global skills
|
|
43
|
+
`fimo skills install` installs the single global `fimo` bootstrap skill for the selected agents (symlinked into each agent's global skills directory; it transparently falls back to a copy when a symlink can't be created, e.g. under `npx`). It writes **nothing** into your project — the working tree stays clean.
|
|
44
44
|
|
|
45
|
-
Once installed, the agent discovers everything else through the bootstrap: it runs `fimo skills get <name>` to load the
|
|
45
|
+
Once installed, the agent discovers everything else through the bootstrap: it runs `fimo skills get <name>` to load the skill for the task at hand.
|
|
46
46
|
|
|
47
|
-
**`fimo skills sync`** re-ensures the global bootstrap for whichever agents already have it, and cleans up stale global skills that older CLI versions used to copy in (`fimo-cli`, `fimo-studio`, `fimo-migration`, and legacy migration skills). You rarely need it: the bootstrap is a symlink, so it
|
|
47
|
+
**`fimo skills sync`** re-ensures the global bootstrap for whichever agents already have it, and cleans up stale global skills that older CLI versions used to copy in (`fimo-cli`, `fimo-studio`, `fimo-migration`, and legacy migration skills). You rarely need it: the bootstrap is a symlink, so it tracks the running CLI, and the real skills are fetched fresh via `fimo skills get`. Run it after upgrading from an old CLI to clear leftovers.
|
|
48
48
|
|
|
49
49
|
**`fimo skills uninstall`** removes the global bootstrap for the selected agents.
|
|
50
50
|
|
|
51
|
-
## `fimo rules sync` — rule files only
|
|
51
|
+
## `fimo rules sync` — agent rule files only
|
|
52
52
|
|
|
53
53
|
`fimo init` scaffolds `AGENTS.md` (the universal-spec file) and `CLAUDE.md` from the template. Other agents' variants are generated on demand:
|
|
54
54
|
|
|
@@ -60,7 +60,7 @@ Once installed, the agent discovers everything else through the bootstrap: it ru
|
|
|
60
60
|
| gemini-cli | `GEMINI.md` |
|
|
61
61
|
| codex / opencode / aider / others | none — they read `AGENTS.md` natively |
|
|
62
62
|
|
|
63
|
-
`fimo rules sync`
|
|
63
|
+
`fimo rules sync` generates these variants from the current `AGENTS.md`. Use it when:
|
|
64
64
|
|
|
65
65
|
- You edited `AGENTS.md` and want variants refreshed (delete the variant first — see below).
|
|
66
66
|
- You added an agent that needs its own rule file generated.
|
|
@@ -81,15 +81,15 @@ Every command that takes agents accepts the same selection inputs:
|
|
|
81
81
|
- `--agents=claude-code,cursor` — comma-separated list (headless)
|
|
82
82
|
- `-a claude-code -a cursor` — repeatable short form
|
|
83
83
|
- No flag → interactive multi-select. The picker has two sections:
|
|
84
|
-
- **Universal** — agents that read `AGENTS.md` natively (
|
|
84
|
+
- **Universal** — agents that read `AGENTS.md` natively (Codex, OpenCode, Aider, …). Always covered, not toggleable.
|
|
85
85
|
- **Additional** — agents that get the global bootstrap skill installed. The 6 popular ones (`claude-code`, `cursor`, `codex`, `opencode`, `windsurf`, `gemini-cli`) appear at the top of an 8-item scrollable viewport; the full list of 50+ supported agents is below the fold. Agents already set up on the machine are pre-checked.
|
|
86
86
|
- `--agents=none` (only `fimo init`) — skip the global skill entirely.
|
|
87
87
|
|
|
88
|
-
In headless contexts (CI,
|
|
88
|
+
In headless contexts (CI, agent-spawned commands), pass the flag explicitly. Env-var detection (only Claude Code's `CLAUDECODE` / `CLAUDE_CODE_ENTRYPOINT`) silently targets `claude-code` if the flag is omitted; every other agent must be named explicitly with `--agents` in a headless shell, or the command exits with "No agents detected and no --agents flag passed."
|
|
89
89
|
|
|
90
90
|
## Always current, never stale
|
|
91
91
|
|
|
92
|
-
Because the only installed artifact is a generic pointer,
|
|
92
|
+
Because the only installed artifact is a generic pointer, the agent fetches current instructions with `fimo skills get`. `fimo-code` resolves from the project's installed package; the workflow skills resolve from the CLI being run. Re-run `fimo skills get <name>` any time to refresh them.
|
|
93
93
|
|
|
94
94
|
## When to use which
|
|
95
95
|
|
|
@@ -98,4 +98,4 @@ Because the only installed artifact is a generic pointer, and the real skills ar
|
|
|
98
98
|
- "Clean up skills left by an old CLI version" → `fimo skills sync`
|
|
99
99
|
- "I edited `AGENTS.md` and want variants regenerated" → delete the stale variant + `fimo rules sync`
|
|
100
100
|
- "I'm done with Fimo on this machine" → `fimo skills uninstall`
|
|
101
|
-
- For a fresh project, `fimo init` installs the global skill for the
|
|
101
|
+
- For a fresh project, `fimo init` installs the global skill for the agents you select at scaffold time.
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
> **Run via `npx fimo@latest <command>`** — always the latest CLI, no install needed.
|
|
4
4
|
|
|
5
|
-
>
|
|
5
|
+
> Package contract: run `npx fimo@latest skills get fimo-code --ref assets` for `FimoMedia`, and `--ref ui` for component integration.
|
|
6
6
|
> For **generating** new images / videos with AI, see **`references/media.md`** for the task commands and recipes.
|
|
7
7
|
|
|
8
8
|
This file covers the **CLI workflow** for media that already exists: uploading files, browsing the library, opening an asset to inspect it, moving / deleting items.
|
|
@@ -129,4 +129,4 @@ fimo assets delete <asset-id>
|
|
|
129
129
|
|
|
130
130
|
1. Upload with `fimo assets upload` or generate with a task command such as `fimo image generate`.
|
|
131
131
|
2. Keep the returned `url` (for direct use) or `id` (to attach to a `media` content-type field).
|
|
132
|
-
3. To use in JSX,
|
|
132
|
+
3. To use in JSX, load the `fimo-code` UI reference — schema media → `<Image>` / `<Video>`, hardcoded URLs → `<StaticImage>`. **Never** use raw `<img src={asset.url}>`.
|
|
@@ -2,15 +2,15 @@
|
|
|
2
2
|
|
|
3
3
|
> **Run via `npx fimo@latest <command>`** — always the latest CLI, no install needed.
|
|
4
4
|
|
|
5
|
-
>
|
|
5
|
+
> Package contract: run `npx fimo@latest skills get fimo-code --ref content` for the JSON shape, field types, Tiptap nodes, slug rules, and generated React Query hooks.
|
|
6
6
|
|
|
7
7
|
This file covers the **CLI workflow** for content. Use it when the user wants to add a content type (blog, products, pages) or manage Singles and entries.
|
|
8
8
|
|
|
9
9
|
## Flow
|
|
10
10
|
|
|
11
|
-
1. Write `src/schemas/{Uid}.json` — PascalCase filename (e.g. `BlogPost.json`). For the JSON shape and field types, load `fimo
|
|
11
|
+
1. Write `src/schemas/{Uid}.json` — PascalCase filename (e.g. `BlogPost.json`). For the JSON shape and field types, load the `fimo-code` content reference.
|
|
12
12
|
2. Run `fimo schemas push {Uid}`. It generates `src/schemas/{Uid}.types.ts` and `src/schemas/{Uid}.ts`, then registers the schema with Fimo. It does not run whole-project validation.
|
|
13
|
-
3. App code imports the generated client from `@/schemas/{Uid}`, not from `.types.ts` directly. See `fimo
|
|
13
|
+
3. App code imports the generated client from `@/schemas/{Uid}`, not from `.types.ts` directly. See the `fimo-code` content reference for the hook API.
|
|
14
14
|
4. Seed collections via `fimo entries create`, or update one-off content via `fimo singles update`. Generate cover images first with `fimo image generate` if needed (see `media.md` / `assets.md`).
|
|
15
15
|
5. Write React pages that import from `@/schemas/{Uid}` and render with `fimo/ui` components.
|
|
16
16
|
|
|
@@ -34,7 +34,7 @@ The command is `fimo schemas` (plural). There is no singular `fimo schema` alias
|
|
|
34
34
|
|
|
35
35
|
All commands accept `-C, --cwd <dir>` to point at a different project directory.
|
|
36
36
|
|
|
37
|
-
Blocks schemas support at most 7 nested `blocks` levels, 40 variants in one `schema.oneOf`, and `min` or `max` values up to 200 items per blocks field. Load `fimo
|
|
37
|
+
Blocks schemas support at most 7 nested `blocks` levels, 40 variants in one `schema.oneOf`, and `min` or `max` values up to 200 items per blocks field. Load the `fimo-code` content reference for the complete blocks JSON shape.
|
|
38
38
|
|
|
39
39
|
Schema transitions are automatic. Adding optional fields and changing labels preserve content. A new required field backfills its `default` only where existing values need it; the push fails safely when no default can satisfy existing content. Removing a nested field or block variant removes only those values. `string` and `text` preserve values in both directions. Other primitive changes convert safe values and reject unsafe ones without changing the schema or entries. Lowering block `max` trims from the end; raising `min` fills from the blocks `default` templates. A reference target change clears its connections. Use repeatable `--rename old.path=new.path` arguments when a field moved by name so the one-time migration preserves its values; the operation is not stored in schema JSON. Collection-to-Single removes that type's entries and cleans inbound references; Single-to-collection preserves its entry. Run `fimo validate` after pushing.
|
|
40
40
|
|
|
@@ -76,7 +76,7 @@ fimo entries bulk-update <TypeName> (--file <path> | --stdin)
|
|
|
76
76
|
fimo entries bulk-delete <TypeName> (--ids <id1>,<id2> | --where '<json>') [--locale es]
|
|
77
77
|
```
|
|
78
78
|
|
|
79
|
-
`--body` is a **required** option on `create` and `update`. Its JSON shape (where `slug` goes, how `media` fields look, Tiptap richtext format) lives in `fimo
|
|
79
|
+
`--body` is a **required** option on `create` and `update`. Its JSON shape (where `slug` goes, how `media` fields look, Tiptap richtext format) lives in the `fimo-code` content reference. **Always read that first before constructing an entry payload — slug must be inside `data`, media has a specific shape, richtext must be Tiptap JSONContent.**
|
|
80
80
|
|
|
81
81
|
`entries list` accepts the same read query surface as generated hooks:
|
|
82
82
|
|
|
@@ -100,7 +100,7 @@ Reference filters take the target `id` string (`{"author":"750e..."}`). On a to-
|
|
|
100
100
|
|
|
101
101
|
Polymorphic references declare `targets: ["Post", "Product"]` instead of `target` (never both) and their values carry both parts: `{ "contentType": "Post", "id": "..." }`. Populate returns mixed full entries, and generated hooks expose `$type` on each populated value to branch on. `--where` on polymorphic fields is not supported yet and fails with a clear error.
|
|
102
102
|
|
|
103
|
-
In generated React code, the equivalent is `populate: ['author', 'contributors'] as const` in the schema hook/query params. Let hooks infer the result when possible; if a named TypeScript shape is needed, use the generated `BlogPostResult<TFields, TPopulate>` type documented in `fimo
|
|
103
|
+
In generated React code, the equivalent is `populate: ['author', 'contributors'] as const` in the schema hook/query params. Let hooks infer the result when possible; if a named TypeScript shape is needed, use the generated `BlogPostResult<TFields, TPopulate>` type documented in the `fimo-code` content reference. Writes use the separate generated `BlogPostInput` type.
|
|
104
104
|
|
|
105
105
|
### Read-only SQL
|
|
106
106
|
|
|
@@ -191,7 +191,7 @@ fimo entries bulk-delete BlogPost --where '{"archived":true}'
|
|
|
191
191
|
|
|
192
192
|
Each bulk request handles at most 1,000 entries. Missing requested IDs do not fail valid work: the CLI prints a warning, and `--json` includes both a top-level `warnings` array and the exact IDs in `data.meta.missing`. Bulk writes use the same validation, locale, reference, and content-change paths as singular entry writes. They apply entries one at a time. Recoverable create and update errors report how many earlier entries were already changed.
|
|
193
193
|
|
|
194
|
-
For reference schema JSON and entry value shape, load `fimo
|
|
194
|
+
For reference schema JSON and entry value shape, load the `fimo-code` content reference § Reference fields. The short version:
|
|
195
195
|
|
|
196
196
|
```json
|
|
197
197
|
{
|
|
@@ -257,13 +257,13 @@ Use `"isSingleton": true` for a Single with exactly one set of content. Generate
|
|
|
257
257
|
|
|
258
258
|
## "Add a blog" recipe
|
|
259
259
|
|
|
260
|
-
1. Load `fimo
|
|
260
|
+
1. Load the `fimo-code` content reference for the JSON shape and field types.
|
|
261
261
|
2. Write `src/schemas/BlogPost.json` with fields `title`, `body` (richtext), `coverImage` (media), etc. Do NOT declare a `slug` field — `slug` (and `id`, `entryId`, `documentId`, `locale`, `createdAt`, `updatedAt`, `__fimo`) is reserved entry metadata and will be rejected; every entry gets a `slug` for free.
|
|
262
262
|
3. Run `fimo schemas push BlogPost`.
|
|
263
263
|
4. Generate cover images: `fimo image generate --prompt "..." --aspect-ratio 16:9` (see `media.md`).
|
|
264
264
|
5. Seed entries: `fimo entries create BlogPost --body '{"data": {"slug": "first-post", "title": "...", "coverImage": {...}}}'`.
|
|
265
|
-
6. Load `fimo
|
|
266
|
-
7. Load `fimo
|
|
265
|
+
6. Load the `fimo-code` UI reference for the `<Text>`, `<Image>`, `<RichText>` components.
|
|
266
|
+
7. Load the `fimo-code` labels reference for wrapping labels in `t()`.
|
|
267
267
|
8. Write the React page using the generated `useGet()` hook from `@/schemas/BlogPost`.
|
|
268
268
|
|
|
269
269
|
## When to run sync manually
|
|
@@ -2,15 +2,15 @@
|
|
|
2
2
|
|
|
3
3
|
> **Run via `npx fimo@latest <command>`** — always the latest CLI, no install needed.
|
|
4
4
|
|
|
5
|
-
>
|
|
5
|
+
> Package contract: run `npx fimo@latest skills get fimo-code --ref forms` for the JSON spec, generated Zod schema, submit helper, and React usage.
|
|
6
6
|
|
|
7
7
|
This file covers the **CLI workflow** for forms. Use it when the user wants to add a contact form, signup, feedback form, etc.
|
|
8
8
|
|
|
9
9
|
## Flow
|
|
10
10
|
|
|
11
|
-
1. Write `src/forms/{name}.json` — kebab-case filename (e.g. `contact-us.json`). For the JSON spec and field types, load `fimo
|
|
11
|
+
1. Write `src/forms/{name}.json` — kebab-case filename (e.g. `contact-us.json`). For the JSON spec and field types, load the `fimo-code` forms reference.
|
|
12
12
|
2. Register with `fimo forms push {name}` — creates the form, obtains its `id`, patches it back into the JSON file.
|
|
13
|
-
3. Pre-build generates `src/forms/{name}.ts` (Zod schema + `submitX` helper). See `fimo
|
|
13
|
+
3. Pre-build generates `src/forms/{name}.ts` (Zod schema + `submitX` helper). See the `fimo-code` forms reference for the generated API.
|
|
14
14
|
4. Write a React component that imports from `@/forms/{name}`.
|
|
15
15
|
|
|
16
16
|
Steps 1, 3, and 4 reference the `fimo-code` skill (`npx fimo@latest skills get fimo-code`). Step 2 is the CLI command.
|
|
@@ -45,11 +45,11 @@ Use this when the user asks "who filled out the contact form?", "how many signup
|
|
|
45
45
|
|
|
46
46
|
## "Add a contact form" recipe
|
|
47
47
|
|
|
48
|
-
1. Load `fimo
|
|
48
|
+
1. Load the `fimo-code` forms reference for the JSON spec.
|
|
49
49
|
2. Write `src/forms/contact-us.json` with the required fields.
|
|
50
50
|
3. Run `fimo forms push contact-us` — the `id` is patched back into the JSON automatically.
|
|
51
|
-
4. Load `fimo
|
|
52
|
-
5. Load `fimo
|
|
51
|
+
4. Load the `fimo-code` forms reference for the generated `submitContactUs` + `ContactUsSchema` API.
|
|
52
|
+
5. Load the `fimo-code` labels reference for wrapping form labels in `t()`.
|
|
53
53
|
6. Write the React form component that imports from `@/forms/contact-us`.
|
|
54
54
|
|
|
55
55
|
**Register BEFORE writing app code that depends on the form** — otherwise the generated `.ts` doesn't exist and the runtime fetch 404s.
|
|
@@ -120,7 +120,7 @@ After `fimo init` completes, the project root has `AGENTS.md` (universal) and `C
|
|
|
120
120
|
1. `cd <project-dir>` — switch into the new project.
|
|
121
121
|
2. `Read` the project rules file: `AGENTS.md` (or `CLAUDE.md` if you're Claude Code).
|
|
122
122
|
3. Load the code skill on demand: `npx fimo@latest skills get fimo-code`.
|
|
123
|
-
4.
|
|
123
|
+
4. Load only the `fimo-code` references needed for the first task, using `npx fimo@latest skills get fimo-code --ref <doc>`.
|
|
124
124
|
|
|
125
125
|
Once those are in context, generation respects the project's conventions (schemas, `t()`, `fimo/ui` components, asset handling).
|
|
126
126
|
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
> **Run via `npx fimo@latest <command>`** — always the latest CLI, no install needed.
|
|
4
4
|
|
|
5
|
-
>
|
|
5
|
+
> Package contract: run `npx fimo@latest skills get fimo-code --ref labels` for `t()`, `useLabels()`, key naming, and wrapping rules.
|
|
6
6
|
> For locale configuration and route-prefix validation, see **`references/locales.md`**.
|
|
7
7
|
|
|
8
8
|
This file covers the **CLI workflow** for labels: static UI copy such as nav items, buttons, headings, placeholders, alt text, and SEO strings.
|
|
@@ -61,9 +61,9 @@ Prefer `fimo validate` — this primitive is for narrow debugging/test use.
|
|
|
61
61
|
|
|
62
62
|
## Workflow
|
|
63
63
|
|
|
64
|
-
1. Write JSX with `t('key')` calls. Load `fimo
|
|
64
|
+
1. Write JSX with `t('key')` calls. Load the `fimo-code` labels reference for the rules.
|
|
65
65
|
2. Run `fimo validate`.
|
|
66
66
|
3. Add missing values with `fimo labels set` or `fimo labels set-many`.
|
|
67
67
|
4. Editors can now change copy in the Fimo admin without code changes.
|
|
68
68
|
|
|
69
|
-
For the helper signatures, hooks, and code patterns, **always** load `fimo
|
|
69
|
+
For the helper signatures, hooks, and code patterns, **always** load the `fimo-code` labels reference before writing code that uses `t()`.
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
> **Run via `npx fimo@latest <command>`** — always the latest CLI, no install needed.
|
|
4
4
|
|
|
5
|
-
This file covers CLI-side locale configuration and validation. For code helpers such as `fimoRoutes()` and `FimoLink`,
|
|
5
|
+
This file covers CLI-side locale configuration and validation. For code helpers such as `fimoRoutes()` and `FimoLink`, run `npx fimo@latest skills get fimo-code --ref locales`.
|
|
6
6
|
|
|
7
7
|
## Configure Locales
|
|
8
8
|
|
|
@@ -27,9 +27,9 @@ This is the load-bearing rule for every code change. **Fimo's whole point is tha
|
|
|
27
27
|
|
|
28
28
|
If you find yourself about to hardcode anything user-facing, **stop and use the appropriate Fimo primitive instead.** For pushing the schema/form/asset to the backend, that's CLI territory — see the `fimo-cli` skill.
|
|
29
29
|
|
|
30
|
-
##
|
|
30
|
+
## Load only the references the task needs
|
|
31
31
|
|
|
32
|
-
|
|
32
|
+
Each reference defines one package contract. Fetch it when the task reaches that surface; do not batch-load unrelated references:
|
|
33
33
|
|
|
34
34
|
- `references/content.md` — schema JSON shape, field types, Tiptap nodes, generated React Query hooks
|
|
35
35
|
- `references/forms.md` — form JSON spec, generated Zod + `submitX` helper
|
|
@@ -7,7 +7,8 @@ description: >-
|
|
|
7
7
|
"how do I X in the UI", or screenshots of the dashboard. Topics
|
|
8
8
|
covered: dashboard content and CMS, publishing from the dashboard,
|
|
9
9
|
dashboard SEO/domain settings, schedules and run history, outbound webhooks,
|
|
10
|
-
visual editing, version history UI, dashboard sharing/billing,
|
|
10
|
+
visual editing, version history UI, dashboard sharing/billing, dashboard chat,
|
|
11
|
+
and the command palette. Never describe
|
|
11
12
|
UI locations, buttons, or panels from memory — always read the relevant
|
|
12
13
|
reference file first.
|
|
13
14
|
---
|
|
@@ -30,6 +31,7 @@ Read the relevant reference file when the user's question matches a topic.
|
|
|
30
31
|
|
|
31
32
|
| Topic | Reference | When to read |
|
|
32
33
|
| ------------------------ | --------------------------------------- | ----------------------------------------------------- |
|
|
34
|
+
| Command Palette | references/command-palette.md | "What can I open with Cmd+K?", "Quick actions" |
|
|
33
35
|
| Publish & Deploy | references/publish-and-deploy.md | "How do I publish?", "How do I make my site live?" |
|
|
34
36
|
| Custom Domains | references/custom-domains.md | "How do I use my own domain?", "DNS setup" |
|
|
35
37
|
| Content Management (CMS) | references/cms.md | "How does the CMS work?", "How do I add blog posts?" |
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
## Where to Find It
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
On desktop, the AI chat opens docked on the left by default. You can make it floating or dock it on either side from the project menu's **Chat position** submenu (Floating / Left / Right). Toggle the chat open or closed by clicking the **chat (speech-bubble) icon** in the header, or press **Cmd+Shift+H** (Mac) / **Ctrl+Shift+H** (Windows/Linux).
|
|
4
4
|
|
|
5
5
|
## Sending a Message
|
|
6
6
|
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
# Command Palette
|
|
2
|
+
|
|
3
|
+
Press **Cmd+K** on macOS or **Ctrl+K** on Windows and Linux to open the command palette from any authenticated Studio screen. Start typing to filter the available commands.
|
|
4
|
+
|
|
5
|
+
## What You Can Open
|
|
6
|
+
|
|
7
|
+
The palette includes the destinations you are allowed to use:
|
|
8
|
+
|
|
9
|
+
- Organizations, projects, and the main Studio workspaces
|
|
10
|
+
- Preview pages
|
|
11
|
+
- CMS Collections, Singles, Forms, Labels, and content types
|
|
12
|
+
- Agent runs, definitions, and individual agents
|
|
13
|
+
- Project settings sections
|
|
14
|
+
- Asset folders and code files
|
|
15
|
+
|
|
16
|
+
You can also open documentation, feedback, account actions, project history, invitations, and the Publish review flow. Use **Escape** to return from a searchable subpage to the main command list, then press it again to close the palette.
|
|
17
|
+
|
|
18
|
+
## Actions for the Current Page
|
|
19
|
+
|
|
20
|
+
Studio adds commands that are relevant to the page you are viewing. Depending on the page and your permissions, these can include:
|
|
21
|
+
|
|
22
|
+
- Refreshing Preview or opening it in a new tab
|
|
23
|
+
- Creating a CMS entry or changing the content locale
|
|
24
|
+
- Uploading an asset, creating a folder, or generating an image
|
|
25
|
+
- Opening a code file or toggling the code sidebar
|
|
26
|
+
- Running an agent, opening its Preview result, or resolving proposed changes
|
|
27
|
+
- Adding a language, secret, schedule, or webhook
|
|
28
|
+
|
|
29
|
+
## Permissions and Confirmations
|
|
30
|
+
|
|
31
|
+
The palette follows the same permissions, plan availability, and feature flags as Studio's visible navigation and buttons. Publishing and other reviewed flows open their normal dialog instead of acting immediately. If a command is unavailable on the page or for your role, it is not shown.
|
|
@@ -29,7 +29,7 @@ export default function contentSyncPlugin() {
|
|
|
29
29
|
return;
|
|
30
30
|
}
|
|
31
31
|
if (file.startsWith(schemasGlob)) {
|
|
32
|
-
syncSchemas({ cwd: rootDir, verbose: false });
|
|
32
|
+
syncSchemas({ cwd: rootDir, framework: 'vite', verbose: false });
|
|
33
33
|
return;
|
|
34
34
|
}
|
|
35
35
|
if (file.startsWith(formsGlob)) {
|