Skip to content
This repository was archived by the owner on Aug 4, 2026. It is now read-only.
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions docs-index.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"repo": "avo-hq/docs.avohq.io",
"docs_path": "docs/4.0",
"commit": "3350dbef7b2da94b410d6a678f9551e16901411e",
"date": "2026-07-28",
"commit": "33872abaa595ee25b25ea82ce1bd3058d883656f",
"date": "2026-08-02",
"note": "The docs commit these skills were last indexed from. Run bin/docs_drift.rb to see what changed since, and --update after a refresh."
}
4 changes: 3 additions & 1 deletion skills/avo-navigation-search/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -363,7 +363,7 @@ end

## Keyboard shortcuts (Community)

All shortcuts are on by default; each bound control shows a small `<kbd>` badge, and `?` opens the reference modal for the current page. Shortcuts never fire while typing in an input/textarea/select/contenteditable.
All shortcuts are on by default; each bound control shows a small `<kbd>` badge, and `?` opens the reference modal for the current page. Shortcuts never fire while typing in an input/textarea/select/contenteditable — with exactly one exception, the assistant's `Cmd/Ctrl+J` (below).

```ruby
# config/initializers/avo.rb
Expand All @@ -384,6 +384,8 @@ Add your own on any control with a `data-hotkey` attribute (re-bound on every Tu

Jump-to-menu-item shortcuts go through the menu `hotkey:` option, or `self.hotkey` on the resource class (see §Menus).

`Cmd/Ctrl+J` opens the assistant, and needs the **Intelligence** add-on (`avo-intelligence`, Beta) — without it the key isn't bound and doesn't appear in the `?` modal. It's the one shortcut that still fires mid-typing (pulling the assistant up while editing a field is the point), and it still obeys `enabled`, so `config.hotkeys = {enabled: false}` turns it off with the rest.

---

## Gotchas
Expand Down
2 changes: 2 additions & 0 deletions skills/avo-setup/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -219,6 +219,8 @@ A license authorizes **one app, one production URL** (`Rails.env.production?`).

Verify at the **status page**: `https://yourapp.com/<mount-path>/avo_private/status` (e.g. `.../avo/avo_private/status` or `.../admin/avo_private/status`). It shows whether the license authenticated and what the checking server returned; the key is masked unless you set `config.exclude_from_status = []`. The viewing user must be an Avo admin. Deep failure diagnosis (unlicensed after deploy, timeouts, test-suite blocking the check host) is the **avo-troubleshoot** skill.

A **trial key is a fully valid license** — every add-on it covers behaves exactly as on a paid one, and nothing in the app is gated or degraded while the trial runs. The status page reports when access stops and whether a payment method is on file; the **Avo Status** indicator in the sidebar footer turns **amber** when a trial needs attention (not a failure — that's orange). Diagnosing amber is **avo-troubleshoot**.

### 7. (Optional) Append your own routes inside the engine

Add custom controllers/actions to Avo's own router — open the engine's routes after `mount_avo`:
Expand Down
8 changes: 6 additions & 2 deletions skills/avo-troubleshoot/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,8 @@ description: >-
Use when an Avo (Rails admin) app is broken or behaving unexpectedly: a
field/resource/filter/action that isn't showing; the admin returning 500 or 404; `bundle install`
failing to fetch `avo`/`avo-*` gems or 401 from packager.dev; the license not validating or the
status page erroring; authorization suddenly denying everything; tests failing after upgrading
status page erroring; the Avo Status dot in the sidebar going amber or orange, or a trial that's
about to lapse; authorization suddenly denying everything; tests failing after upgrading
Avo; `WebMock::NetConnectNotAllowedError` for clerk-1/clerk-2.avohq.io; exploded/missing icons
after an upgrade. Also "why is my Avo field not showing", "my admin broke after bundle update".
allowed-tools: Read, Edit, Write, Glob, Grep, Bash, WebFetch
Expand All @@ -21,6 +22,7 @@ Most "Avo is broken" reports are **not Avo bugs**. They're an app-level config i
**Docs** (fetch on demand — confirm exact option names against the page or the installed gem, never memory):
- Docs map / index: https://docs.avohq.io/4.0/docs-map.md
- License troubleshooting + status page: https://docs.avohq.io/4.0/license-troubleshooting.md
- Licensing (trials, the sidebar status indicator, phone-home): https://docs.avohq.io/4.0/licensing.md
- Testing (license host allow-list): https://docs.avohq.io/4.0/testing.md
- Custom errors / why a save fails: https://docs.avohq.io/4.0/custom-errors.md
- FAQ (URL helpers, hide buttons, filter predicate error): https://docs.avohq.io/4.0/faq.md
Expand Down Expand Up @@ -82,6 +84,7 @@ grep -rn "explicit_authorization" "$(bundle show avo)/lib"
| `No valid predicate for combinator` when filtering | `config.ignore_unknown_conditions` is `false` | [↓](#no-valid-predicate-for-combinator-when-filtering) |
| `undefined method 'xxx_path'` inside an Avo block | Avo is a Rails engine — needs `main_app.` prefix | [↓](#url-helpers-blow-up-inside-avo-blocks) |
| License won't validate / status page errors | Key not set on the server; check the status page | [↓](#license-wont-validate) |
| The sidebar **Avo Status** dot is amber | Not a license failure — a trial with no payment method, or a cancelled subscription behind it | [↓](#license-wont-validate) |
| Tests fail after adding/upgrading Avo (`WebMock::NetConnectNotAllowedError`) | v4's outbound license check to `clerk-*.avohq.io` is blocked | [↓](#tests-fail-after-adding-or-upgrading-avo) |
| `bundle install` can't fetch `avo-*` / 401 / 403 | packager.dev token not seen by Bundler, or a blocked host in sandboxes | [↓](#bundle-install-cant-fetch-avo--gems) |
| Exploded / missing icons, or other odd behavior after a version bump | Silent v4 behavior changes and renames | [↓](#v3--v4-upgrade) |
Expand Down Expand Up @@ -185,8 +188,9 @@ Prefer Rails route helpers (with `main_app.` / `avo.`) over hardcoded paths ever
1. **Key not set on the server.** The most frequent cause. Confirm `config.license_key = ENV["AVO_LICENSE_KEY"]` and that the env var is actually present in **production** (not just locally).
2. **Check the status page.** Every Avo app exposes `https://yourapp.com/<mount>/avo_private/status` — e.g. `/admin/avo_private/status` if you mounted Avo at `admin`. It shows whether the license authenticated and the raw response from the check server. The viewing user must be an Avo admin.
3. **Key hidden on the status page.** The key is redacted by default; set `exclude_from_status = []` in the initializer if you need to see it while debugging.
4. **Read the sidebar indicator's colour before assuming a failure.** The **Avo Status** indicator in the sidebar footer is **green** when everything is in order, **amber** while a *trial* needs attention, and **orange** when the license is genuinely invalid. Amber is not a failure — a trial is a fully valid license and nothing is gated while it runs. It means one of two things, and the status page says which: **no payment method on file** (access stops on the trial's end date — add one on [avohq.io/licenses](https://avohq.io/licenses)), or **the subscription behind the trial was cancelled** (access stops on the cancellation date; adding a payment method does *not* change that — the subscription has to be resumed or restarted). After fixing either, press **Refresh license** on the status page — Avo caches the license response between checks, so the app can report older billing state than avohq.io until it refreshes. Trial state needs `avo-licensing` `4.0.10`+; the amber colour needs Avo `4.0.20`+ (older Avo renders the dot uncoloured rather than breaking).

→ `license-troubleshooting.html`
→ `license-troubleshooting.html`, `licensing.html`

### Tests fail after adding or upgrading Avo

Expand Down
Loading