navree
Documentation

Agent skills

Skills that teach coding agents how to build with Navree, one per common task: what each covers, installing them with navree skills:install or npx skills add, how agents use them, and writing skills for your own app.

On this page

Introduction

A coding agent knows Rust. It doesn't know that a Navree route without an access attribute won't compile, that services take the request's &Uow, or that navree make:module registers the module for you. Agent skills teach it, one task at a time.

A skill is a folder with a SKILL.md file: YAML front-matter with a name and a description that says when to use it, then the steps, the commands, a code template, the checks to run and the mistakes to avoid for one task. Agents that support skills, Claude Code and a growing list of others, read every skill's description when a session starts and load a skill's body only when the task matches. A project can carry every Navree skill for the cost of a few lines each.

The skills live in the skills/ directory of the Navree repository. Every API a skill names exists in the framework, and its code templates compile against the current navree crate.

The skills

Start with navree. It explains what a Navree app is, how one is laid out, the rules every change follows, and which skill to load for each task, so an agent that loads it first finds the rest.

SkillUse it to
navreeUnderstand a Navree app, its conventions and commands, and pick the right skill
navree-new-appInstall the CLI, create an app with navree new, set APP_KEY and run navree dev
navree-modules-and-diDefine modules and providers, wire dependencies, use for_root / from_config / for_feature, and fix boot-time graph errors
navree-controllers-and-routingAdd controllers, routes, extractors, responses and access attributes, and debug 401, 403, 404, 405 or 415 on a route
navree-validationValidate bodies and query strings with garde DTOs, unique and exists rules, custom rules and messages
navree-errors-and-responsesReturn errors in Navree's JSON shape, map your error types to statuses, and shape responses, headers and downloads
navree-ormModels with #[derive(Model)], the query builder, records, relationships and eager loading, scopes and soft deletes, casts, events and observers, factories, #[navree::test] databases, route model binding, and workspace and access scoping
navree-migrationsMigrations with the schema builder: tables, columns per database, indexes and foreign keys, migration sets and their order, migrate, --pretend, rollbacks, migrate:fresh and schema:dump
navree-databaseDatabase configuration, the unit of work, transactions in jobs, SeaORM entities and Repo, seeders and db:seed, pagination and TimescaleDB
navree-authSign-in with JWT and rotating refresh tokens, the current user, account flows, two-factor and its policy, sessions and step-up, impersonation, magic links, emailed codes, passkeys, platform sign-in, token exchange and API keys
navree-access-controlRoles, permissions, ability rules, record checks with Authorized and per-user list filters with Accessible
navree-workspacesWorkspaces, members, roles and invitations, CurrentWorkspace, isolation by row, schema or database, shared libraries cloned on use, and demo workspaces
navree-time-zonesZones with CurrentZone, local days and report windows with DayRange, SendWindow and holidays, AT TIME ZONE SQL, in_zone and per_workspace_local schedules, ZonesFake
navree-ssoSingle sign-on per organization or workspace with SAML 2.0 or OpenID Connect: connections, identity provider setup, verified domains and password enforcement, just-in-time provisioning with role mapping, and SsoFake in tests
navree-webhooksSigned outgoing webhooks from events, endpoints, retries and the delivery log, and incoming webhooks verified with VerifiedWebhook (Stripe, GitHub, Paddle, Standard Webhooks, AWS SNS, Google Pub/Sub, Microsoft Graph, Twilio, Slack, Mailgun, Postmark)
navree-integrationsConnections from workspaces and organizations to Microsoft 365 (admin consent), Google Workspace (service accounts), Slack, OAuth 2.0 APIs and API keys: the connect routes, scope sets, Connection<MicrosoftGraph> and the typed clients, health checks with ConnectionUnhealthy, and IntegrationsFake in tests
navree-directoryDirectory sync: SCIM 2.0 provisioning from Microsoft Entra ID and Okta, pull connections to Microsoft Graph, Google Workspace, Okta, LDAP and Active Directory, impl DirectorySink for your model, runs with dry runs and the deactivation limit, events, and DirectoryFake in tests
navree-custom-domainsCustom domains: adding a workspace's domain and its DNS records, verification, the domain resolver and CurrentDomain, on-demand TLS with Caddy or ACME certificates served by the app, managed zones, expiry reports, and DnsFake and AcmeFake in tests
navree-flagsFeature flags as types with #[flag], checks with CurrentFlags, Flags and #[requires_flag], overrides, percentage and plan rollouts, the kill switch, and FlagsFake in tests
navree-search#[derive(Searchable)], search engines, syncing through the queue, queries with access and workspaces, vector search
navree-graphqlGraphQL with #[resolver] fields, field access, ContextExt, dataloaders, subscriptions and graphql:schema
navree-grpcgRPC services from .proto files with #[grpc_service], access rules and extractors on methods, gRPC-Web and Connect, GrpcChannels clients and TestChannel tests
navree-documentsPDF from HTML templates (native engine or Chrome) and PdfDocument, right-to-left documents, Docx, merge, stamps and overlays, saved and queued renders, and DocumentsFake in tests
navree-mediaFiles attached to models with HasMedia and collections, uploads and remote files, image conversions and srcsets, media:regenerate, zip archives, text extraction, video through FFmpeg, and MediaFake in tests
navree-sheetsCSV and Excel exports with #[derive(Exportable)], Download and named exports queued to a disk with a signed link, and imports with #[derive(Importable)] and Import: encoding detection, header mapping, the staging preview, duplicate modes, batched apply and error files
navree-workflowsDurable workflows with #[workflow]: stored steps with retries, sleeps, event waits, versions, cancellation and WorkflowsFake; and end-user automations from #[trigger], #[condition] and #[action] blocks, with versioned definitions, enrollment policies, simulation and templates
navree-billingBill users or workspaces with Stripe or Paddle: BillingModule, plans, checkout, subscriptions, trials, seats, metered usage, invoices, the portal, verified webhooks and BillingFake
navree-mcpExpose tools, resources and prompts to AI clients with #[mcp_server], per-tool access, bearer or OAuth auth, stdio, and test them with McpTestClient
navree-aiThe AI SDK: providers and models, ai.text, ai.structured, ai.stream, failover and budgets, agents with #[tool] methods run as the user, memory and approvals, embeddings, vector stores and RAG, and AiFake in tests
navree-lighthouseMonitor the app with LighthouseModule: issues, reports from code, statuses, alerts and your own channels, the /_lighthouse dashboard, its JSON API and MCP tools, pruning, and LighthouseFake in tests
navree-redisShare the cache, locks, jobs, sessions, rate limits and WebSocket broadcasts between processes with RedisModule, and run Redis commands
navree-logbookThe local debugging timeline at /_logbook: LogbookModule, the filter language, tag and dump, duplicate-query detection, request replay and last_request().queries() in tests
navree-fleetRun queue workers under Fleet: supervisors and balancing, recycling limits, fleet in production, pausing, the /_fleet dashboard and its abilities, metrics and gauges, long-wait alerts, and FakeSpawner tests
navree-helmThe Helm admin panel: make:resource, the Resource trait with fields, filters, actions and metrics, custom pages, the access rules each screen checks, and testing it through /admin/api
navree-queues-and-schedulingJobs, workers, retries and failed jobs, and cron-style schedules
navree-events-and-broadcastingEvents and listeners, and live updates over the Pusher-protocol WebSocket server
navree-mail-and-notificationsMail with templates and transports, and notifications over the database, mail and broadcast channels
navree-mail-deliveryEmail API transports, transports per domain, workspace and organization, the delivery log fed by provider webhooks, suppressions, hold for approval, tracking, DKIM signing and sending-domain checks
navree-inbound-mailMailboxes routed by address with m.mailbox, InboundMail and forwarded messages, signed reply addresses with ReplyTokens, raw .eml files on a disk, the SES, Mailgun, Postmark and raw MIME sources, Microsoft 365 and Gmail mailboxes watched through integration connections, and MailFake::receive in tests
navree-notification-preferencesWhat people and workspaces receive: channels per category with #[notification], digests that batch mail, quiet hours and send windows on the recipient's clock, notify:release, the preference routes and per-workspace mail templates
navree-storageDisks, uploads checked by content, downloads and signed temporary URLs
navree-cache-and-http-clientThe cache and locks, and outgoing HTTP with retries, the SSRF guard and HttpClient::fake()
navree-openapiThe OpenAPI 3.1 document generated from your routes, #[api(..)] on routes, schemas and the docs UI
navree-config.env, config/app.toml and APP_* variables, the application key, and typed configuration sections
navree-testingTestApp, HTTP and database tests, acting as a user, the assertions and the fakes
navree-cli-generatorsThe navree CLI, every make:* generator, the marker comments and console commands
navree-deploymentRelease builds, production settings, the processes to run, systemd units, migrations and health checks
navree-security-checklistA review before release: routes, abilities, input, rate limits, tokens, CORS, CSRF, secrets and the audit log
navree-module-conformityAudit a module: navree check (routes documented, entities classified, workspace data through WorkspaceRepo), cross-workspace isolation suites, custom checks and navree gate
navree-navigatorConnect a coding agent to Navigator (navree mcp), use its tools before changing routes, providers or the schema, and install the skills

The skills/README.md in the repository lists the same set. It grows with the framework, and navree skills:install always installs the skills of your Navree version.

What a skill looks like

Every skill follows the same shape. This is the beginning of navree-validation:

skills/navree-validation/SKILL.md
  • The description is what the agent sees before it loads the skill. It says what the skill covers and, after "Use when", the situations and the words that should bring it in: "adding a role", "a 403 I don't expect", "database is locked".
  • The body gives the steps in order, then a template that compiles, the response or output to expect, the options, a test, the common mistakes and links to these docs.
  • References. Larger skills keep detail in a references/ folder next to SKILL.md (navree-database/references/migrations.md), which the agent reads only when it needs that part.
skills/
  • README.md
  • navree/
    • SKILL.mdwhat Navree is; which skill for which task
    • references/
      • crates.mdevery facade module, crate and config section
  • navree-database/
    • SKILL.md
    • references/
      • migrations.md
      • seeding-and-pagination.md
  • navree-validation/
    • SKILL.md
  • ...

Installing skills

Install the skills into your project, so every teammate's agent has them, and commit them with your code.

From your app's directory:

Shell

It copies every Navree skill into .claude/skills/ (Claude Code) and .agents/skills/ (the shared folder other agents read) of the current directory, or of the project --path <dir> names. The skills are built into the CLI, so they are always those of its Navree version. Run it again after you upgrade Navree to get the skills of the new version; it replaces the navree and navree-* folders (removing any that the new version no longer has) and leaves your own skills alone.

An app with the skills installed
  • .agents/
    • skills/
      • navree/
      • navree-database/
      • ...
  • .claude/
    • skills/
      • navree/
        • SKILL.md
      • navree-database/
        • SKILL.md
      • ...
  • AGENTS.md
  • CLAUDE.md
  • Cargo.toml
  • src/

The site serves the skills too, for agents that fetch them over HTTP: https://navree.com/skills/index.json lists every skill with its name and description, and each one is at https://navree.com/skills/<name>/SKILL.md.

How agents use skills

You don't call a skill; the agent does, when your request matches its description. Ask in your own words:

Text

An agent with the Navree skills reads navree (a Navree app, so the umbrella applies), then navree-controllers-and-routing for the route and navree-access-control for "a manager", and follows their steps: generate, write the route with #[can(Manage, Deal)], take the input through Valid<Json<T>>, write the test with TestApp, then run cargo fmt, cargo clippy --all-targets -- -D warnings and cargo test.

To bring a skill in yourself, name it: "Use the navree-database skill to add a lost_reason column". In Claude Code, you can check which skills are installed by asking "Which skills do you have?".

Skills work best with the other two pieces of Navree's agent support:

  • AGENTS.md, written by navree new, holds the conventions of your app and is read at the start of every session. Skills hold the how-to of each task and are read on demand. See AGENTS.md and CLAUDE.md.
  • Navigator lets the agent check its work against the running app: that the new route is in the route table, that the provider resolves, that the migration ran.

Writing your own skills

The Navree skills know the framework; they don't know your app. Write skills for the tasks your team repeats, in the same folders, next to the Navree ones. A CRM team adds a pipeline stage now and then, and it touches four places:

.claude/skills/crm-pipeline-stages/SKILL.md

What makes a skill work:

  • One task per skill. "Pipeline stages", not "Everything about deals". Small skills load only when needed and stay accurate.
  • A description with the user's words. The agent matches requests against it. List the situations ("a new pipeline stage", "a stage rename") and the symptoms ("deals disappear from the board").
  • Steps in order, with paths. Name the files, types and commands as they are in your code, and grep for each before you write it down. A skill that names an API that doesn't exist teaches the agent to invent.
  • A way to check. End with the commands that prove the change works.
  • Mistakes you have seen. The section agents learn most from is the one that lists what went wrong last time.

Keep project skills in version control and review them like code. When a convention changes, change the skill in the same pull request.