fimo 0.11.0-staging.1 → 0.11.0-staging.11

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.
Files changed (81) hide show
  1. package/assets/agent-templates/_default/config.yaml +2 -0
  2. package/assets/agent-templates/content-translator/GOAL.md +3 -3
  3. package/assets/agent-templates/seo-audit/config.yaml +1 -1
  4. package/assets/skills/fimo/SKILL.md +1 -0
  5. package/assets/skills/fimo-cli/SKILL.md +12 -7
  6. package/assets/skills/fimo-cli/references/agents.md +71 -23
  7. package/assets/skills/fimo-cli/references/branches.md +2 -2
  8. package/assets/skills/fimo-cli/references/content.md +2 -0
  9. package/assets/skills/fimo-cli/references/credits.md +1 -1
  10. package/assets/skills/fimo-cli/references/deploy.md +1 -1
  11. package/assets/skills/fimo-cli/references/describe.md +1 -1
  12. package/assets/skills/fimo-cli/references/history.md +1 -1
  13. package/assets/skills/fimo-cli/references/init.md +51 -16
  14. package/assets/skills/fimo-cli/references/integrations/firecrawl.md +12 -3
  15. package/assets/skills/fimo-cli/references/integrations.md +15 -3
  16. package/assets/skills/fimo-cli/references/invite.md +1 -1
  17. package/assets/skills/fimo-cli/references/labels.md +1 -1
  18. package/assets/skills/fimo-cli/references/locales.md +4 -4
  19. package/assets/skills/fimo-cli/references/mcp.md +85 -0
  20. package/assets/skills/fimo-cli/references/project-vars-and-secrets.md +1 -1
  21. package/assets/skills/fimo-cli/references/projects.md +7 -7
  22. package/assets/skills/fimo-code/references/content.md +1 -0
  23. package/assets/skills/fimo-code/references/labels.md +2 -2
  24. package/assets/skills/fimo-code/references/locales.md +5 -5
  25. package/assets/skills/fimo-code/references/setup-plain-vite.md +12 -11
  26. package/assets/skills/fimo-code/references/setup-react-router.md +10 -5
  27. package/assets/skills/fimo-code/references/ui.md +1 -1
  28. package/assets/skills/fimo-migration/references/workflow.md +1 -1
  29. package/assets/skills/fimo-migration/scripts/build-canonical-manifest.mjs +32 -3
  30. package/assets/skills/fimo-studio/references/ai-chat.md +8 -2
  31. package/assets/skills/fimo-studio/references/custom-domains.md +1 -1
  32. package/assets/skills/fimo-studio/references/preview-and-responsive.md +1 -1
  33. package/assets/skills/fimo-studio/references/publish-and-deploy.md +2 -1
  34. package/assets/starters/fimo-site/manifest.json +64 -0
  35. package/assets/starters/fimo-site/template/.fimo/agents/content-guide/GOAL.md +8 -0
  36. package/assets/starters/fimo-site/template/.fimo/agents/content-guide/capabilities.yaml +2 -0
  37. package/assets/starters/fimo-site/template/.fimo/agents/content-guide/config.yaml +9 -0
  38. package/assets/starters/fimo-site/template/.fimo/agents/site-review/GOAL.md +14 -0
  39. package/assets/starters/fimo-site/template/.fimo/agents/site-review/capabilities.yaml +4 -0
  40. package/assets/starters/fimo-site/template/.fimo/agents/site-review/config.yaml +9 -0
  41. package/assets/starters/fimo-site/template/src/forms/contact.json +14 -0
  42. package/assets/starters/fimo-site/template/src/forms/contact.ts +46 -0
  43. package/assets/starters/fimo-site/template/src/pages/Contact.tsx +193 -0
  44. package/assets/starters/fimo-site/template/src/pages/Index.tsx +27 -0
  45. package/assets/starters/fimo-site/template/src/pages/SiteContent.tsx +191 -0
  46. package/assets/starters/fimo-site/template/src/schemas/HomePage.json +28 -0
  47. package/assets/starters/fimo-site/template/src/schemas/HomePage.ts +29 -0
  48. package/assets/starters/fimo-site/template/src/schemas/HomePage.types.ts +64 -0
  49. package/dist/build/vite/index.d.ts +3 -3
  50. package/dist/build/vite/index.js +12 -3
  51. package/dist/build/vite/plugins/fimo-config.d.ts +2 -2
  52. package/dist/build/vite/plugins/fimo-config.js +5 -5
  53. package/dist/build/vite/plugins/robots.d.ts +1 -1
  54. package/dist/build/vite/plugins/robots.js +3 -3
  55. package/dist/build/vite/plugins/server-config.js +1 -1
  56. package/dist/build/vite/plugins/sitemap.js +2 -2
  57. package/dist/build/vite/plugins/translations.js +14 -10
  58. package/dist/cli/bundle.json +1 -1
  59. package/dist/cli/index.js +147 -135
  60. package/dist/runtime/app/FimoProviders.js +18 -8
  61. package/dist/runtime/app/prefetch.d.ts +1 -1
  62. package/dist/runtime/app/prefetch.js +2 -2
  63. package/dist/runtime/content/client/internal.js +3 -3
  64. package/dist/runtime/paths/get-fimo-paths.d.ts +1 -1
  65. package/dist/runtime/paths/get-fimo-paths.js +5 -5
  66. package/dist/runtime/paths/types.d.ts +1 -1
  67. package/dist/runtime/project-layout.d.ts +14 -0
  68. package/dist/runtime/project-layout.js +57 -0
  69. package/dist/runtime/seo/resolver.d.ts +1 -1
  70. package/dist/runtime/seo/resolver.js +1 -1
  71. package/dist/runtime/shared/fimo-config.server.d.ts +2 -0
  72. package/dist/runtime/shared/fimo-config.server.js +17 -4
  73. package/dist/runtime/templates.d.ts +4 -4
  74. package/dist/runtime/templates.js +11 -6
  75. package/dist/scripts/validate-route-metadata.js +8 -6
  76. package/package.json +9 -3
  77. package/templates/react-router/AGENTS.md +1 -1
  78. package/templates/react-router/package.json +1 -1
  79. package/templates/react-router/src/vite-env.d.ts +1 -1
  80. package/templates/react-router/vite.config.ts +1 -1
  81. /package/templates/react-router/{fimo-config.json → .fimo/config.json} +0 -0
@@ -2,3 +2,5 @@
2
2
  # See https://fimo.dev/docs/agents/bundle for the full reference.
3
3
  version: 1
4
4
  description: 'A new Fimo agent. Edit this tagline to describe what it does.'
5
+ triggers:
6
+ - type: manual
@@ -1,7 +1,7 @@
1
1
  # Content translator
2
2
 
3
3
  Translate CMS entries and DB-backed labels from the project's default
4
- locale into every non-default locale declared in `fimo-config.json`.
4
+ locale into every non-default locale declared in `.fimo/config.json`.
5
5
  Writes go through Fimo's content and label APIs. Do not create locale
6
6
  JSON files or put translated values in source code.
7
7
 
@@ -9,7 +9,7 @@ JSON files or put translated values in source code.
9
9
 
10
10
  - The list of CMS entries that have a non-empty default-locale field
11
11
  but an empty translation for any non-default locale.
12
- - The configured target locales (read from `fimo-config.json`).
12
+ - The configured target locales (read from `.fimo/config.json`).
13
13
 
14
14
  ## What to do
15
15
 
@@ -31,4 +31,4 @@ For each entry:
31
31
 
32
32
  Cloud-time activation of this agent requires
33
33
  `agents.notifications.email_recipients` to be non-empty (per ADR-0009).
34
- Add at least one address before running `fimo agents activate`.
34
+ Add at least one address before deploying, or the cloud trigger stays unwired.
@@ -7,7 +7,7 @@ data_sources:
7
7
  - main
8
8
 
9
9
  # Manual-only in v1. Add a schedule trigger when you're ready to run
10
- # this nightly — make sure fimo.config.json has
10
+ # this nightly — make sure .fimo/config.json has
11
11
  # `agents.notifications.email_recipients` set before activating.
12
12
  triggers:
13
13
  - type: manual
@@ -25,6 +25,7 @@ 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
+ - Project MCP setup — configure `fimo mcp` for a local AI client → `fimo-cli` (`references/mcp.md`)
28
29
  - The Fimo Studio dashboard / web app UI → `fimo-studio`
29
30
  - Migrating an existing site into Fimo → `fimo-migration`
30
31
 
@@ -6,6 +6,7 @@ description: >-
6
6
  (schemas, entries, forms, media, labels/locales), deploy a site, manage
7
7
  custom domains, configure outbound webhooks and event-driven integrations,
8
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,
9
10
  report a failing or slow Fimo API, rejected documented argument,
10
11
  undocumented workaround, missing capability that blocks work, forces a
11
12
  fragile or heavily manual workaround, or would materially accelerate a
@@ -43,9 +44,9 @@ Branch on `error.code`, never on `error.message`. The envelope shape is versione
43
44
 
44
45
  For shell composition use plain pretty mode (`cd $(fimo …)`); for structured parsing use `--json`. JSON mode disables interactive prompts — commands that need a confirmation will fail fast with `NON_INTERACTIVE_REFUSAL` unless every required arg is on the command line (`--yes`, `--org`, etc.).
45
46
 
46
- ## Critical: `.fimo.settings.json` is the project link
47
+ ## Critical: `.fimo/project.json` is the project link
47
48
 
48
- A Fimo project is identified by `.fimo.settings.json` at its root, written once by `fimo init`. This file connects the local directory to the remote Fimo project. **Never edit it manually.** Most CLI commands look at this file in the cwd to know which project they operate on.
49
+ A Fimo project is identified by `.fimo/project.json`, written by `fimo init`. This file connects the local directory to the remote Fimo project. **Never edit it manually.** Most CLI commands find it by walking up from the cwd.
49
50
 
50
51
  ## Critical: commands target the env of the current git branch
51
52
 
@@ -57,6 +58,7 @@ A project can have multiple **envs** — each is a git branch _plus_ its own DB,
57
58
  npx fimo@latest login # authenticate via browser
58
59
  npx fimo@latest skills install # install the global Fimo skill for your AI tools
59
60
  npx fimo@latest init my-site --org <id> # one-stop setup: sign in, create/link a project, install deps + skills. Use the org **id** from `fimo orgs list`, NOT the slug.
61
+ npx fimo@latest init my-site --starter fimo-site@1 --org <id> --yes --no-skills # opt-in content-led starter for a new project
60
62
  npx fimo@latest init --project-id <id> my-site # link an EXISTING project instead of creating one
61
63
  npx fimo@latest clone # interactively choose an existing project to clone locally
62
64
  cd my-site # then load skills on demand: npx fimo@latest skills get fimo-code
@@ -70,13 +72,13 @@ npx fimo@latest deploy --publish # ON-DEMAND: publish live (only w
70
72
 
71
73
  The working loop is local: run the app with the project's package-manager `dev` script (`pnpm dev` / `npm run dev` / `yarn dev` / `bun dev` — match the lockfile), ask the developer what they want, edit, and iterate against the live localhost server. `fimo deploy` is **not** a required final step — reach for it only when the developer wants a hosted preview, a shareable link, or to go live, and only on their signal (see `references/deploy.md`).
72
74
 
73
- `fimo validate` is the single entrypoint for "prove this project is ready" — it covers schema/form codegen, route metadata checks, lint, and missing label checks for `i18n.defaultLocale` from `fimo-config.json` (fallback: `en`). Use `fimo labels set` / `set-many` to create or update label values in the DB. The underlying phases are also available individually under the hidden `fimo scripts` namespace for advanced/debug use.
75
+ `fimo validate` is the single entrypoint for "prove this project is ready" — it covers schema/form codegen, route metadata checks, lint, and missing label checks for `i18n.defaultLocale` from `.fimo/config.json` (fallback: `en`). Use `fimo labels set` / `set-many` to create or update label values in the DB. The underlying phases are also available individually under the hidden `fimo scripts` namespace for advanced/debug use.
74
76
 
75
77
  ## Decision Tree
76
78
 
77
79
  Load the matching reference when the user's request fires its trigger. Recipes that involve writing code also need the `fimo-code` skill's package references — they're called out where relevant.
78
80
 
79
- - "Create a new Fimo project / scaffold a site / start a new website / link an existing project locally" → `references/init.md`
81
+ - "Create a new Fimo project / scaffold a site / start a new website / add the opt-in content starter / link an existing project locally" → `references/init.md`
80
82
  - "Add a content type / blog / products / pages / CMS" → `references/content.md` (workflow) **+ load `fimo-code/references/content.md` for the JSON shape and React hooks**
81
83
  - "Add a contact / signup / feedback / newsletter form" → `references/forms.md` (workflow) **+ load `fimo-code/references/forms.md` for the JSON spec and generated client**
82
84
  - "View form submissions / who filled out the contact form / inspect what users sent / how many signups" → `references/forms.md` § Reading submissions
@@ -102,8 +104,9 @@ Load the matching reference when the user's request fires its trigger. Recipes t
102
104
  - "Modify the URL of the website / change my project's address / connect a custom domain (e.g. blog.example.com) / rename the Fimo-provided `*.fimo.site` subdomain / buy a new domain through Fimo / set up a domain" → `references/domains.md`
103
105
  - "Invite a collaborator / add Marc / share with client" → `references/invite.md`
104
106
  - "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`)
105
- - "Create / scaffold / run / validate / activate / deactivate an agent / agent bundle / list agent templates / view agent runs, reports, or logs (`fimo agents *`)" → `references/agents.md`
107
+ - "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`
106
108
  - "Install Fimo for my AI tool / fimo skills install / set up Claude Code or Cursor for Fimo / add an agent to this project" → `references/agent-setup.md`
109
+ - "Connect an AI coding client to a Fimo project through MCP / configure `fimo mcp` / expose Fimo tools to a local MCP client" → `references/mcp.md`
107
110
  - "Refresh / update installed Fimo skills / fimo skills sync / agent missing the latest fimo conventions" → `references/agent-setup.md`
108
111
  - "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`
109
112
  - "Regenerate rule files / I edited AGENTS.md / fimo rules sync" → `references/agent-setup.md`
@@ -128,16 +131,18 @@ These fire at specific moments in the project lifecycle. **Surface them proactiv
128
131
 
129
132
  ## Anti-Patterns
130
133
 
131
- - **Editing `.fimo.settings.json`** — read-only; it's the link between local and remote project. Treat as a generated file.
134
+ - **Editing `.fimo/project.json`** — read-only; it's the link between local and remote project. Treat as a generated file.
132
135
  - **Treating `fimo deploy` as the working loop or a required final step** — the loop is local (`pnpm dev` etc.). Deploy commits + pushes + round-trips the sandbox; it's for hosted previews / going live, on-demand. Iterate locally and deploy at logical breakpoints. See `references/deploy.md`.
133
136
  - **Deploying without the developer asking or confirming** — offer, then wait for their yes. Don't auto-deploy after finishing an edit.
134
137
  - **Running `fimo deploy` just to get a fresh preview URL** — that's a commit + push + sandbox sync for what should be a sub-second read. Use `fimo preview url` instead. See `references/preview.md`.
135
138
  - **Using `fimo deploy --publish` casually** — `--publish` makes the site live to the public. Plain `fimo deploy` (preview) is the default. Use `--publish` only when the user says "ship it" / "go live" / "publish".
136
139
  - **Bare `fimo init` in a non-interactive shell** — will hang. Always pass `[dir]`, `--no-install` (or `--install`), `--no-skills` (or `--skills`), and `--org`/`--agents` as needed explicitly when scripted.
140
+ - **Using a starter on an existing project** — `--starter` is create-new only. Keep `--project-id` flows blank and use explicit content/form/label commands when changing an existing project.
141
+ - **Treating a starter as a permanent demo tenant** — starters are opt-in seed data in the new project, not a global default. Keep starter agents manual-only; do not add schedules or webhooks unless the project owner explicitly asks for automation.
137
142
  - **Hardcoding content / strings / images in code** — that's what schemas, `t()`, and the media library are for. See the `fimo-code` skill's anti-patterns.
138
143
  - **Adding another deploy tool (Vercel, Netlify, Cloudflare Pages)** — Fimo handles deploys; don't bolt another platform on.
139
144
  - **Committing secrets** — hidden values use `fimo secrets`; public browser-safe values use `fimo vars`. Local env files are ignored and must not become deploy inputs.
140
145
  - **Hardcoding tokens in flags** — use the credentials written by `fimo login` (one file per backend at `~/.config/fimo/credentials/<host>-<hash>.json`).
141
146
  - **Treating the daily allowance as extra credits** — `fimo credits` already includes spendable daily free credits in "Available now"; the allowance section is accounting context, not an amount to add.
142
147
  - **Trying to refill credits from the CLI** — `fimo credits` is read-only. Buying/refilling credits belongs in the billing UI for now.
143
- - **`fimo agents activate` / `run` to push bundle changes** — they don't. The bundle reaches the server through `fimo deploy` (it lives in git, not the DB). `activate` only writes activation rows; `run` dispatches the _deployed_ version. Deploy first. See `references/agents.md`.
148
+ - **`fimo agents run` to push bundle changes** — it doesn't. The bundle reaches the server through `fimo deploy` (it lives in git, not the DB), and that push to `main` is also what wires the declared triggers. `run` dispatches the _deployed_ version. Deploy first. There is no `activate` command. See `references/agents.md`.
@@ -2,27 +2,26 @@
2
2
 
3
3
  > **Run via `npx fimo@latest <command>`** — always the latest CLI, no install needed.
4
4
 
5
- The `fimo agents` namespace authors and operates **agent bundles** — multi-file definitions under `<project>/agents/<name>/` (a `config.yaml`, a `GOAL.md`, optional `capabilities.yaml`, etc.).
5
+ The `fimo agents` namespace authors and operates **agent bundles** — multi-file definitions under `<project>/.fimo/agents/<name>/` (a `config.yaml`, a `GOAL.md`, optional `capabilities.yaml`, etc.). Legacy projects keep using root `agents/<name>/`.
6
6
 
7
7
  ## Mental model
8
8
 
9
9
  The namespace splits cleanly in two:
10
10
 
11
- - **Bundle authoring** — `create`, `list-templates`, `list`, `validate`, `secrets add/remove/list`. Local config editing, no API call except the project-level validation path. Operates on the files under `agents/<name>/`.
12
- - **Cloud ops** — `run`, `activate`, `deactivate`, `runs`, `report`, `logs`. Env-aware, talk to the server. Default `--env` is `main`; `--project` defaults to the `projectId` in `.fimo.settings.json`.
11
+ - **Bundle authoring** — `create`, `list-templates`, `list`, `validate`, `secrets add/remove/list`. Local config editing, no API call except the project-level validation path. Operates on the files under `.fimo/agents/<name>/` (or root `agents/<name>/` for legacy projects).
12
+ - **Cloud ops** — `run`, `runs`, `report`, `logs`. Env-aware, talk to the server. Default `--env` is `main`; `--project` defaults to the linked project in `.fimo/project.json` or legacy `.fimo.settings.json`.
13
13
 
14
- The bundle lives in **git** (`agents/<name>/`), not the database. The DB only holds **activations** (which triggers are wired on which env) and **run sessions**. So the bundle reaches the server through `fimo deploy`, not through `activate`/`run`.
14
+ The bundle lives in **git** (`.fimo/agents/<name>/`, or legacy root `agents/<name>/`), not the database. The DB only mirrors what `config.yaml` declares on `main` (which triggers are wired) plus **run sessions**. So the bundle reaches the server through `fimo deploy` — and that push to `main` is also what wires its triggers. There is no activate command: deploying IS the enablement act, and removing a trigger from `config.yaml` tears it down on the next deploy.
15
15
 
16
16
  Typical flow:
17
17
 
18
18
  ```
19
- fimo agents create <name> # scaffold agents/<name>/ from a template (local)
19
+ fimo agents create <name> # scaffold .fimo/agents/<name>/ from a template (local)
20
20
  fimo agents secrets add <name> FIRECRAWL_API_KEY # request a project secret in config.yaml
21
21
  fimo secrets add FIRECRAWL_API_KEY --stdin # store the hidden value in Fimo
22
22
  fimo agents validate <name> # parse + policy + composition + requested secrets
23
23
  fimo validate # project build and codegen checks
24
- fimo deploy # push the bundle to the env's git branch
25
- fimo agents activate <name> # wire its triggers on the env (DB row)
24
+ fimo deploy # push to main — this also wires the declared triggers
26
25
  fimo agents run <name> # trigger a manual run → sessionId
27
26
  fimo agents runs <name> # see past sessions
28
27
  fimo agents report <name> # print a run's report (the agent's final message)
@@ -42,45 +41,94 @@ fimo agents secrets remove <name> <KEY> [-C <dir>]
42
41
  ```
43
42
 
44
43
  - **`list-templates`** — list the bundled starter templates with the first line of each template's `GOAL.md` as a summary. Ships with the CLI binary; no API call. The five bundled templates are `_default`, `seo-audit`, `content-translator`, `broken-link-sweeper`, `post-deploy-check`.
45
- - **`create <name>`** — scaffold `agents/<name>/` from a template (default `_default`, a minimal valid bundle). `--description <text>` writes a one-line tagline into the scaffolded `config.yaml` (surfaces in the dashboard's agents list). When run **without** `-C`, it requires the cwd to be inside a real Fimo project (walks up for `.fimo.settings.json`) and errors out cleanly otherwise, so it never leaks `agents/<name>/` into a stray cwd. If the template declares capabilities, an install-consent flow runs after the copy (`--quiet` skips it; critical caps still abort).
46
- - **`list`** — list the agents declared under `<project>/agents/`, with each one's trigger types and capability count. Local — the bundle list is the source of truth even if the project isn't linked yet.
47
- - **`validate [name]`** — run the full validation pipeline: parse → capability vocabulary → composition (cycle / missing sub-agents / invalid grants) → semantic + `fimo.config.json` policy checks. Omit `name` to validate every bundle. `--json` emits a structured `ValidationReport` for CI; exit code is non-zero on any failure.
48
- - **`secrets add/remove/list`** — edit or inspect the agent's requested secret names in `agents/<name>/config.yaml`. These commands do not create, rotate, or reveal secret values. Store values with `fimo secrets add`; run `fimo agents validate` to check that required requested secrets exist in the project. See `references/project-vars-and-secrets.md`.
49
- - **`integrations <name>`** — preview the agent's `integrations` allowlist from `agents/<name>/config.yaml` and, when linked, overlay project integration status. See `references/integrations.md`.
44
+ - **`create <name>`** — scaffold `.fimo/agents/<name>/` from a template (default `_default`, a minimal valid bundle with a manual trigger). `--description <text>` writes a one-line tagline into the scaffolded `config.yaml` (surfaces in the dashboard's agents list). When run **without** `-C`, it requires the cwd to be inside a real Fimo project (walks up for `.fimo/project.json` or legacy `.fimo.settings.json`) and errors out cleanly otherwise, so it never leaks an agent bundle into a stray cwd. If the template declares capabilities, an install-consent flow runs after the copy (`--quiet` skips it; critical caps still abort).
45
+ - **`list`** — list the agents declared under `<project>/.fimo/agents/` (or legacy root `agents/`), with each one's trigger types and capability count. Local — the bundle list is the source of truth even if the project isn't linked yet.
46
+ - **`validate [name]`** — run the full validation pipeline: parse → capability vocabulary → composition (cycle / missing sub-agents / invalid grants) → semantic + Fimo project config policy checks. Omit `name` to validate every bundle. `--json` emits a structured `ValidationReport` for CI; exit code is non-zero on any failure.
47
+ - **`secrets add/remove/list`** — edit or inspect the agent's requested secret names in `.fimo/agents/<name>/config.yaml` (or legacy root). These commands do not create, rotate, or reveal secret values. Store values with `fimo secrets add`; run `fimo agents validate` to check that required requested secrets exist in the project. See `references/project-vars-and-secrets.md`.
48
+ - **`integrations <name>`** — preview the agent's `integrations` allowlist from `.fimo/agents/<name>/config.yaml` (or legacy root) and, when linked, overlay project integration status. See `references/integrations.md`.
50
49
 
51
- Agent integration access is configured in `agents/<name>/config.yaml` with an allowlist. Omitted integrations and omitted tools are not available to the agent:
50
+ Agent integration access is configured in `.fimo/agents/<name>/config.yaml` (or legacy root). Enable the integration there; omit `tools` to allow all tools that integration exposes, or add a `tools` map to keep the agent on a smaller set:
52
51
 
53
52
  ```yaml
54
53
  integrations:
55
54
  firecrawl:
56
55
  enabled: true
57
- tools:
58
- scrape: true
59
- search: true
56
+ ```
57
+
58
+ An explicit map is restrictive: only entries set to `true` are available. An omitted or disabled integration cannot be
59
+ used. See `references/integrations.md` for project setup, auth, and provider-specific commands.
60
+
61
+ ## Capabilities
62
+
63
+ Capabilities describe the non-integration actions an agent may take. Start with the smallest set that matches the goal.
64
+ If `capabilities.yaml` is absent or empty, the agent gets the read-only defaults: `files:read`, `cms:read`, and
65
+ `assets:read`. Once you add a capabilities file, list every extra capability the agent needs.
66
+ There is no all-capabilities wildcard; keeping the list explicit makes each agent's power reviewable.
67
+
68
+ | Capability | Allows the agent to | Risk |
69
+ | ---------------------------- | ------------------------------------------- | ------------ |
70
+ | `files:read` | Read project files | Low |
71
+ | `files:write` | Write or delete project files | Medium |
72
+ | `cms:read` | Read CMS content | Low |
73
+ | `cms:write` | Create, update, or delete CMS entries | Medium |
74
+ | `cms:schema:read` | Read CMS schemas | Low |
75
+ | `cms:schema:write` | Modify CMS schemas | High |
76
+ | `assets:read` | Read uploaded media | Low |
77
+ | `assets:write` | Upload, replace, or delete media | Medium |
78
+ | `i18n:read` / `i18n:write` | Read / modify translation catalogs | Low / Medium |
79
+ | `forms:read` / `forms:write` | Read / modify form schemas and submissions | Low / Medium |
80
+ | `git:read` | Read git state | Low |
81
+ | `git:branch` | Create an agent branch | Medium |
82
+ | `git:commit` | Commit changes to the agent branch | Medium |
83
+ | `git:push` | Push changes to the project remote | High |
84
+ | `fimo:logs:read` | Read production logs | Low |
85
+ | `fimo:analytics:read` | Read analytics data | Low |
86
+ | `fimo:preview:read` | Read a current preview URL | Low |
87
+ | `fimo:deploy` | Trigger a production deploy | Critical |
88
+ | `net:fetch` | Make outbound HTTP requests | Medium |
89
+ | `shell:exec` | Run arbitrary shell commands in the sandbox | High |
90
+ | `agent:delegate` | Invoke declared sub-agents | Medium |
91
+ | `runtime:long_running` | Run beyond the default time limit | High |
92
+ | `runtime:auto_merge` | Auto-merge trivial proposed branches | Critical |
93
+
94
+ If a capability is missing, the related command is denied and the agent should choose another path or report the
95
+ blocker. Add the capability to `capabilities.yaml`, run `fimo agents validate <name>`, deploy the bundle, and start a
96
+ new run. A denied capability does not grant access to anything else.
97
+
98
+ Example for a content editor that can read and update entries but cannot change schemas or run shell commands:
99
+
100
+ ```yaml
101
+ - files:read
102
+ - cms:read
103
+ - cms:write
60
104
  ```
61
105
 
62
106
  ## Cloud ops (env-aware)
63
107
 
64
108
  ```bash
65
109
  fimo agents run <name> [--env <env>] [--project <id>] [--skip-drift-check] [-C <dir>]
66
- fimo agents activate <name> [--trigger <type>] [--env <env>] [--project <id>] [--quiet] [-C <dir>]
67
- fimo agents deactivate <name> [--trigger <type>] [--env <env>] [--project <id>] [-C <dir>]
68
110
  fimo agents runs <name> [--limit <n>] [--env <env>] [--project <id>] [-C <dir>]
69
111
  fimo agents report <name> [--session <id>] [--env <env>] [--project <id>] [-C <dir>]
70
112
  fimo agents logs <name> [--session <id>] [--project <id>] [-C <dir>]
71
113
  ```
72
114
 
73
- - **`run <name>`** — trigger a real manual run on the server; prints a `sessionId` on success (or a skip reason when the server short-circuits). **Pre-flight drift check**: if `agents/<name>/` has uncommitted git changes, the command refuses — the server would dispatch the _deployed_ version, so deploy first. Pass `--skip-drift-check` to dispatch the deployed bundle anyway. Defaults `--env` to `main`.
74
- - **`activate <name>`** — wire the agent's triggers on an env (writes `agent_activations` rows). A `schedule` trigger creates a cron, a `webhook` trigger reserves a path, and `manual` just enables dispatch. `--trigger <type>` (`schedule` / `webhook` / `manual`) activates only that type; otherwise all declared triggers. **The bundle must be deployed first.** Cloud triggers (`schedule` / `webhook`) require `notifications.email_recipients` in `fimo-config.json` (the dash-form scaffold file; legacy `fimo.config.json` is also accepted). Capability install-consent runs unless `--quiet`.
75
- - **`deactivate <name>`** — remove activation rows on an env. Idempotent. `--trigger <type>` scopes to a single trigger type.
115
+ - **`run <name>`** — fire the agent's `manual` trigger on the server; prints a `sessionId` on success. Skips with `no-manual-trigger` when `config.yaml` declares none, or `trigger-not-wired` when the push-to-main sync recorded the trigger but refused to wire it (see the wiring note below). **Pre-flight drift check**: if `.fimo/agents/<name>/` (or the legacy root bundle) has uncommitted git changes, the command refuses — the server would dispatch the _deployed_ version, so deploy first. Pass `--skip-drift-check` to dispatch the deployed bundle anyway. Defaults `--env` to `main`.
76
116
  - **`runs <name>`** — list past run sessions for the agent in a compact table (id, started, duration, status, trigger, env, cost). Default `--limit 20`; `--env` filters to one env.
77
117
  - **`report <name>`** — print a run's **report**: the agent's final message, captured when the run finishes (for a read-only agent like `seo-audit` this _is_ the audit; for a write agent it's a "what I changed" summary). With no `--session`, the most recent run for `<name>` is used (combine with `--env` to scope); `--session <id>` targets a specific run. Output is raw markdown, so it stays readable in the terminal and pipes cleanly (e.g. `fimo agents report seo-audit | glow`). If the run hasn't finished, or produced no message, it says so (and shows the stop reason when there is one). This is the command to read what a run actually produced — see the `logs` note below.
78
118
  - **`logs <name>`** — stream a run's log (defaults to the latest session; `--session <id>` targets one). **Note:** the log-streaming endpoint is still a server-side stub at time of writing — the command prints a placeholder rather than real log lines. To read a finished run's output today, use `report`.
79
119
 
120
+ ## How triggers get wired
121
+
122
+ Agents are not env-scoped: they belong to the project, are read from `main`, and their triggers are global. A branch env has no agents of its own — Studio's agents view shows main's agents whichever env you are on, and a bundle sitting only on a feature branch appears nowhere until it reaches main.
123
+
124
+ Pushing `.fimo/agents/<name>/config.yaml` (or a legacy root bundle) to `main` is the whole enablement act — `fimo deploy` does it. The server reconciles the file into its trigger rows on every push: a `schedule` trigger gets a cron, a `webhook` trigger gets its path, and `manual` becomes runnable. Removing a trigger from the file deletes it (cron torn down, path released) on the next deploy; deleting the agent's directory removes the whole deployment.
125
+
126
+ Cloud triggers (`schedule` / `webhook`) additionally require `notifications.email_recipients` in `.fimo/config.json` (legacy root `fimo-config.json` and `fimo.config.json` are also accepted). Without it the trigger is recorded but deliberately left **unwired** and will not fire — `fimo agents validate` warns about this before you deploy, and the Studio agents view shows the reason afterwards.
127
+
80
128
  ## `-C, --cwd <dir>`
81
129
 
82
- Every `fimo agents` command accepts `-C, --cwd <dir>` to point at a different project directory. For the cloud-ops commands, `--project <id>` overrides the project id otherwise read from `.fimo.settings.json`.
130
+ Every `fimo agents` command accepts `-C, --cwd <dir>` to point at a different project directory. For the cloud-ops commands, `--project <id>` overrides the project id otherwise read from `.fimo/project.json` or legacy `.fimo.settings.json`.
83
131
 
84
132
  ## Non-interactive use
85
133
 
86
- Authoring commands (`list-templates`, `list`, `validate`) never prompt. `create` and `activate` run an install-consent flow when the bundle declares capabilities — pass `--quiet` to skip it in scripts / CI (critical capabilities still abort).
134
+ No `fimo agents` command prompts — authoring and cloud ops both run unattended.
@@ -41,11 +41,11 @@ All of these accept the global `--env` override. `diff`, `status`, `merge`, and
41
41
 
42
42
  > **`fimo switch` is the ENV switcher, not the org switcher.** To change your active organization, use `fimo orgs switch` — see `references/account.md`.
43
43
 
44
- ## The 7 surfaces
44
+ ## The 6 surfaces
45
45
 
46
46
  `status`, `diff`, and `merge` all reason over the same per-env surfaces, in this order:
47
47
 
48
- `code` · `schemas` · `content` · `translations` · `assets` · `forms` · `activations` (agent activations)
48
+ `code` · `schemas` · `content` · `translations` · `assets` · `forms`
49
49
 
50
50
  `--surface <name>` on `diff` and the per-surface flags on `status` (`--code`, `--content`, `--i18n`, `--agents`, `--assets`, `--forms`) filter to one of them.
51
51
 
@@ -34,6 +34,8 @@ 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/references/content.md` for the complete blocks JSON shape.
38
+
37
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.
38
40
 
39
41
  ## Singles CLI commands
@@ -2,7 +2,7 @@
2
2
 
3
3
  > **Run via `npx fimo@latest <command>`** — always the latest CLI, no install needed.
4
4
 
5
- `fimo credits` is a read-only command for checking the AI credit balance of the organization that owns a Fimo project. It resolves the project from `.fimo.settings.json` unless `--project <project-id>` is provided.
5
+ `fimo credits` is a read-only command for checking the AI credit balance of the organization that owns a Fimo project. It resolves the project from `.fimo/project.json` unless `--project <project-id>` is provided.
6
6
 
7
7
  ```bash
8
8
  fimo credits
@@ -98,7 +98,7 @@ fimo deploy
98
98
  ## Other facts
99
99
 
100
100
  - Source of truth is this git repo.
101
- - **Never** edit `.fimo.settings.json`; it is written once by `fimo init`.
101
+ - **Never** edit `.fimo/project.json`; it is generated by `fimo init`.
102
102
  - Each env deploys to its own branch + preview sandbox; `--publish` and `fimo publish` run from `main` only. See `references/branches.md`.
103
103
 
104
104
  ## After the first successful deploy
@@ -78,4 +78,4 @@ The scoped view still emits the project-level metadata header (name, framework,
78
78
 
79
79
  - The JSON shape is stable; parse it rather than scraping the human output when you need a specific field.
80
80
  - The `framework` field is detected from `package.json#dependencies` (v1 detector). For multi-framework projects or unusual setups, the field may be `null` — fall back to reading `package.json` yourself.
81
- - The command runs in any directory that contains `.fimo.settings.json` or one of its ancestors. If you're not in a Fimo project, `describe` will run against whatever directory you point it at (it doesn't require Fimo credentials).
81
+ - The command runs in any directory that contains `.fimo/project.json` or one of its ancestors. If you're not in a Fimo project, `describe` will run against whatever directory you point it at (it doesn't require Fimo credentials).
@@ -13,7 +13,7 @@ fimo history create "Before content migration"
13
13
  fimo history restore <version-id>
14
14
  ```
15
15
 
16
- Use the global `--env <name>` option to target a different environment. Use `--project <id>` when there is no local `.fimo.settings.json`.
16
+ Use the global `--env <name>` option to target a different environment. Use `--project <id>` when there is no local `.fimo/project.json`.
17
17
 
18
18
  ## Pagination and usage
19
19
 
@@ -13,44 +13,79 @@ fimo init [dir] [options]
13
13
  `fimo init` runs the full onboarding in one shot:
14
14
 
15
15
  1. **Signs in automatically** — if there's no session it opens the browser loopback login. In `--json` / non-TTY with no session it fails with `NOT_AUTHENTICATED` (run `fimo login` first).
16
- 2. **Resolves the project** — with `--project-id <id>` it links an EXISTING project (clones it); without it, it creates a NEW project. An interactive TTY shows a "Create new / Link existing" picker; non-interactive shells default to create-new.
16
+ 2. **Resolves the project** — with `--project-id <id>` it links an EXISTING project (clones it); without it, it creates a NEW project. An interactive TTY shows a "Create new / Link existing" picker; non-interactive shells default to create-new. An optional `--starter fimo-site@1` adds a content-led starter only to a newly created project.
17
17
  3. **Installs dependencies** — prompts for the package manager, or honor `--package-manager <pm>` / `--no-install`.
18
18
  4. **Optionally sets up Fimo skills** — confirm prompt, or `--skills` / `--no-skills`.
19
19
 
20
- | Flag | Required | Purpose |
21
- | ---------------------------- | ----------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------- |
22
- | `[dir]` positional | yes in non-TTY for create-new | Target directory (e.g. `my-site`) |
23
- | `--project-id <id>` | no | Link an EXISTING project instead of creating one (clones it). |
24
- | `--org <id>` | no | Target organization **id** when creating (use the `ID` column from `fimo orgs list`, NOT the slug). Picker shown interactively if omitted and TTY. |
25
- | `--env <name>` | no | Env to check out when linking an existing project (defaults to `main`). |
26
- | `--package-manager <pm>` | no | `npm` \| `pnpm` \| `yarn` \| `bun`. |
27
- | `--install` / `--no-install` | yes in non-TTY | Install deps after checkout (or skip it). |
28
- | `--skills` / `--no-skills` | yes in non-TTY | Install the global Fimo skill (or skip it). |
29
- | `--agents <list>` | no | Comma-separated agent IDs (e.g. `claude-code,cursor`). Pass `none` to skip installing the global skill. |
30
- | `-a, --agent <id>` | alternative | Repeatable form: `-a claude-code -a cursor`. |
31
- | `--template-root <path>` | no | Override the bundled template (development only). |
32
- | `-y, --yes` | no | Run non-interactively using defaults (no prompts). |
20
+ | Flag | Required | Purpose |
21
+ | ---------------------------- | ----------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------- |
22
+ | `[dir]` positional | yes in non-TTY for create-new | Target directory (e.g. `my-site`) |
23
+ | `--project-id <id>` | no | Link an EXISTING project instead of creating one (clones it). |
24
+ | `--org <id>` | no | Target organization **id** when creating (use the `ID` column from `fimo orgs list`, NOT the slug). Picker shown interactively if omitted and TTY. |
25
+ | `--env <name>` | no | Env to check out when linking an existing project (defaults to `main`). |
26
+ | `--starter <id>` | no | Opt-in project starter for create-new (currently `fimo-site@1`). It seeds CMS content, labels, a contact form, and manual-only agents. Rejects `--project-id`. |
27
+ | `--package-manager <pm>` | no | `npm` \| `pnpm` \| `yarn` \| `bun`. |
28
+ | `--install` / `--no-install` | yes in non-TTY | Install deps after checkout (or skip it). |
29
+ | `--skills` / `--no-skills` | yes in non-TTY | Install the global Fimo skill (or skip it). |
30
+ | `--agents <list>` | no | Comma-separated agent IDs (e.g. `claude-code,cursor`). Pass `none` to skip installing the global skill. |
31
+ | `-a, --agent <id>` | alternative | Repeatable form: `-a claude-code -a cursor`. |
32
+ | `--template-root <path>` | no | Override the bundled template (development only). |
33
+ | `-y, --yes` | no | Run non-interactively using defaults (no prompts). |
33
34
 
34
35
  In a non-TTY shell the create-new path requires `[dir]`, `--install` / `--no-install`, and `--skills` / `--no-skills` (and `--org` if you have no active org and belong to multiple orgs). Without them the command exits with `Cannot prompt in a non-interactive shell.`
35
36
 
37
+ ### Non-interactive starter setup
38
+
39
+ Use explicit flags when a script or agent owns the flow. `--json` gives the
40
+ caller one stable result envelope; `--yes` is useful when running in a TTY but
41
+ is not required in a pipe or CI shell. The starter is never selected by default.
42
+
43
+ ```bash
44
+ npx fimo@latest --json init my-site \
45
+ --starter fimo-site@1 \
46
+ --org <organizationId> \
47
+ --no-install \
48
+ --no-skills \
49
+ --agents=none \
50
+ --yes
51
+ ```
52
+
53
+ The command creates the project, copies the starter overlay, seeds its `HomePage`
54
+ singleton, `contact` form, and labels in `main`, writes the form id into
55
+ `src/forms/contact.json`, and commits the starter agents as manual-only bundles.
56
+ `--starter` is create-new only; an existing-project command such as
57
+ `fimo init --project-id <id> --starter fimo-site@1` fails before cloning or
58
+ writing anything. If dependencies were skipped, install them and run
59
+ `fimo validate` before starting the app so generated clients are present.
60
+
36
61
  > **Zero-install:** run `npx fimo@latest init` — no global install needed. `fimo projects create` is also an alias of `fimo init` (create-new path).
37
62
 
38
63
  For `--agents`, pass the AI tool you're running in: `--agents=claude-code` for Claude Code, `--agents=cursor` for Cursor, `--agents=codex` for Codex, etc. When the flag is omitted, env-var detection of the invoking harness (e.g. `CLAUDECODE` / `CLAUDE_CODE_ENTRYPOINT` → claude-code) auto-targets that agent; other agents must be selected explicitly via `--agents`/`-a` or the interactive picker.
39
64
 
40
65
  ## Linking an existing project
41
66
 
42
- Pass `--project-id <id>` to link an EXISTING project instead of creating one. This clones the project's git repo into `[dir]` and writes the local `.fimo.settings.json`, the same as `fimo clone` (init's `--project-id` path reuses it). Use `--env <name>` to check out a specific env (defaults to `main`). Without `--project-id`, `fimo init` creates a new project.
67
+ Pass `--project-id <id>` to link an EXISTING project instead of creating one. This clones the project's git repo into `[dir]` and writes the local `.fimo/project.json`, the same as `fimo clone` (init's `--project-id` path reuses it). Use `--env <name>` to check out a specific env (defaults to `main`). Without `--project-id`, `fimo init` creates a new project.
43
68
 
44
69
  ## What gets written (create-new)
45
70
 
46
71
  `fimo init` (create-new path) scaffolds:
47
72
 
48
73
  - The project template (Vite + React 19 + TypeScript + Tailwind v4 + shadcn/ui + react-router)
49
- - `.fimo.settings.json` — links this directory to the remote project (read-only after creation)
74
+ - `.fimo/project.json` — links this directory to the remote project (read-only after creation)
75
+ - `.fimo/config.json` — project, route, locale, SEO, and agent policy
76
+ - `.fimo/agents/` — versioned agent bundles
50
77
  - `.env` — initial env vars (currently just `VITE_API_URL`)
51
78
  - `AGENTS.md` + `CLAUDE.md` — project rules (from the template) read by AGENTS.md-compatible tools and Claude Code. Both point the agent at `fimo skills get` to load the real skills on demand.
52
79
  - A git repository with `fimo` as the remote, and — after dependencies install — an initial commit (including the lockfile) plus an initial push
53
80
 
81
+ When `--starter fimo-site@1` is supplied, the overlay also includes a
82
+ content-backed homepage, `src/schemas/HomePage.json`, a `contact` form spec,
83
+ nine English labels, and two read-only agent bundles (`site-review` and
84
+ `content-guide`). The seed is opt-in and scoped to the new project; the default
85
+ blank template and all existing-project flows remain unchanged. Starter agents
86
+ declare only a manual trigger so copying them does not create schedules or
87
+ webhooks.
88
+
54
89
  Nothing is written into per-agent skill dirs: the rich skills are fetched on demand via `fimo skills get <name>`, never copied into the project. `fimo init` separately installs the small global `fimo` bootstrap skill for the agents you select (machine-wide, not in the project) unless you pass `--no-skills`. For other agents' rule-file variants (`.cursor/rules/fimo.mdc`, `.windsurfrules`, `GEMINI.md`), run `fimo rules sync`. See `references/agent-setup.md`.
55
90
 
56
91
  Codex, OpenCode, Aider, and similar AGENTS.md-native tools work directly off AGENTS.md.
@@ -31,7 +31,7 @@ fimo integrations connect firecrawl --name client-a --token-stdin
31
31
  fimo integrations enable firecrawl --connection client-a
32
32
  ```
33
33
 
34
- `connect` creates or repairs an organization-level connection. `enable --connection <alias>` lets the current project use that connection. Teammates and agents can use the capability, but Fimo never prints the API key back.
34
+ `connect` creates or repairs an organization-level connection. `enable --connection <alias>` lets the current project use that connection. Teammates and agents can use the integration, but Fimo never prints the API key back.
35
35
 
36
36
  There is no fallback between auth choices. If a named connection is selected and its key is missing or broken, repair the connection. If `fimo` is selected and the backend is not configured, report that Firecrawl needs backend setup.
37
37
 
@@ -155,7 +155,16 @@ For users, describe monitors as website change monitors: create a monitor, list
155
155
 
156
156
  ## Agent Access
157
157
 
158
- Project-level setup makes Firecrawl available to the project. Agent-level policy narrows what a specific agent may use.
158
+ Project-level setup makes Firecrawl available to the project. Add Firecrawl to an agent's `config.yaml` to let that
159
+ agent use it. If you omit `tools`, the agent gets every Firecrawl tool; use a tools map when you want a narrower set.
160
+
161
+ ```yaml
162
+ integrations:
163
+ firecrawl:
164
+ enabled: true
165
+ ```
166
+
167
+ Selective access:
159
168
 
160
169
  ```yaml
161
170
  integrations:
@@ -177,7 +186,7 @@ fimo validate
177
186
  fimo agents integrations seo-researcher
178
187
  ```
179
188
 
180
- For deployed or scheduled agents, deploy the bundle after changing `agents/<name>/config.yaml`:
189
+ For deployed or scheduled agents, deploy the bundle after changing `.fimo/agents/<name>/config.yaml`:
181
190
 
182
191
  ```bash
183
192
  fimo deploy
@@ -14,7 +14,7 @@ fimo integrations status firecrawl
14
14
 
15
15
  `info` shows supported auth choices, required credentials, tools, and recipes. `status` shows the project-specific setup state.
16
16
 
17
- When running inside an autonomous agent session, `fimo integrations list` shows the effective integrations available to that agent runtime, scoped by `agents/<name>/config.yaml`. It lists only usable tools, plus the auth column and the config path that granted access.
17
+ When running inside an autonomous agent session, `fimo integrations list` shows the effective integrations available to that agent runtime, scoped by `.fimo/agents/<name>/config.yaml`. It lists only usable tools, plus the auth column and the config path that granted access.
18
18
 
19
19
  ## Integration References
20
20
 
@@ -89,7 +89,19 @@ For Firecrawl-specific recipes, JSON examples, and agent policy guidance, load `
89
89
 
90
90
  ## Agent Access Policy
91
91
 
92
- Project integrations are enabled at the project level. Agents narrow access in `agents/<name>/config.yaml`:
92
+ Project integrations are enabled at the project level. An agent opts into an integration in
93
+ `.fimo/agents/<name>/config.yaml` (or the legacy root `agents/<name>/config.yaml`):
94
+
95
+ When `tools` is omitted, the agent can use every tool currently exposed by that integration. Add a `tools` map only
96
+ when the agent needs a narrower set:
97
+
98
+ ```yaml
99
+ integrations:
100
+ firecrawl:
101
+ enabled: true
102
+ ```
103
+
104
+ For a narrower allowlist, add the tools explicitly:
93
105
 
94
106
  ```yaml
95
107
  integrations:
@@ -101,7 +113,7 @@ integrations:
101
113
  'monitor.list': true
102
114
  ```
103
115
 
104
- Agent integration access is an allowlist. If an integration is omitted, disabled, or has no `tools` entries set to `true`, the agent cannot use it. New provider tools are not automatically available to old agents.
116
+ If an integration is omitted or disabled, the agent cannot use it. If an explicit `tools` map has no `true` entries, it also grants no tools. With no map, newly available provider tools are included automatically on the next run.
105
117
 
106
118
  Run `fimo validate` after editing agent config to check local shape plus project-level integration setup.
107
119
 
@@ -93,4 +93,4 @@ fimo invite --email "dev@agency.com" --role full
93
93
  - Invited users receive an email with a sign-up link if they don't have an account, or a sign-in link if they do.
94
94
  - Organization invites can be resent with `--resend` if the user didn't receive the original.
95
95
  - Project invites are scoped to a single project; organization invites grant access to all projects in that organization.
96
- - If `--cwd` is set and the directory contains a `.fimo.settings.json`, the project is auto-selected.
96
+ - If `--cwd` is set and the directory belongs to a linked Fimo project, that project is auto-selected.
@@ -29,7 +29,7 @@ There is no `fimo translations` command. Use `fimo labels`.
29
29
 
30
30
  ## Locale config
31
31
 
32
- `fimo-config.json` controls label/content locales:
32
+ `.fimo/config.json` controls label/content locales:
33
33
 
34
34
  ```json
35
35
  {
@@ -6,7 +6,7 @@ This file covers CLI-side locale configuration and validation. For code helpers
6
6
 
7
7
  ## Configure Locales
8
8
 
9
- Edit `fimo-config.json`. Keep one locale unless the user asks for multilingual or localized output:
9
+ Edit `.fimo/config.json`. Keep one locale unless the user asks for multilingual or localized output:
10
10
 
11
11
  ```jsonc
12
12
  {
@@ -40,13 +40,13 @@ Validation checks:
40
40
  - malformed locale tags
41
41
  - `defaultLocale` missing from `locales`
42
42
  - unsupported routing strategies
43
- - canonical routes in `fimo-config.json` that claim reserved locale prefixes, for example `/es`
43
+ - canonical routes in `.fimo/config.json` that claim reserved locale prefixes, for example `/es`
44
44
  - top-level dynamic routes that could capture locale prefixes unless the project uses Fimo's React Router helper
45
45
  - missing default-locale DB labels
46
46
 
47
47
  ## Route Metadata Rule
48
48
 
49
- Keep `fimo-config.json#routes` canonical and unlocalized:
49
+ Keep `.fimo/config.json#routes` canonical and unlocalized:
50
50
 
51
51
  ```json
52
52
  {
@@ -71,7 +71,7 @@ For custom frameworks, the project may implement its own URL scheme, but it stil
71
71
 
72
72
  Inspect the existing locale provider, route table, switcher, redirects, and public URLs before editing configuration. Preserve working URL behavior during the migration.
73
73
 
74
- For React Router projects, prefer one contract based on `fimo-config.json`, `fimoRoutes()`, and `FimoLink`; migrate existing wrappers into the framework root instead of layering a second locale context. If that would change established URLs, keep the custom router temporarily, pass its active locale to `FimoProviders`, and ask the user to choose canonical URLs and redirects before rewriting routes.
74
+ For React Router projects, prefer one contract based on `.fimo/config.json`, `fimoRoutes()`, and `FimoLink`; migrate existing wrappers into the framework root instead of layering a second locale context. If that would change established URLs, keep the custom router temporarily, pass its active locale to `FimoProviders`, and ask the user to choose canonical URLs and redirects before rewriting routes.
75
75
 
76
76
  ## Labels And Content
77
77