Skip to content

Choose Cratis AI profiles

The Cratis AI marketplace plugins install the whole public skill set in one step. Many repositories need something narrower: a Kotlin Chronicle client that must not learn Arc conventions, an Arc-only backend with no event sourcing, a specifications library. Profiles are how you select that scope — and they work whether or not you use a marketplace.

The two paths answer different questions and compose cleanly:

Marketplace pluginProfile subscription
Question it answers“Give my assistant the Cratis skills”“Give this repository exactly the skills its stack needs”
ScopeThe whole public bundle (or the maintainer bundle)The profiles you name — products, languages, and compositions
Selection granularityOne bundlePer product, per language, per architecture
VersioningFollows the Cratis/AI default branch you already readPinned to exact package versions; updates arrive as reviewed pull requests (designed — not published yet; today only @cratis/ai-fundamentals exists on npm)
SetupOne command per hostA committed .cratis/ai.json plus host packages
Good forTrying Cratis AI, broad developer machinesRepositories with a fixed stack, teams that review AI changes

You can start with the marketplace and narrow later: the subscription path uses the same skills, so nothing you learn changes.

Name the profile after the narrowest description of your repository:

RepositoryProfile
Full Arc + Chronicle + React applicationcratis/application
Arc backend without Chroniclecratis/arc
Arc backend, C# onlycratis/arc/csharp
Arc backend in Kotlincratis/arc/kotlin
Chronicle client without Arccratis/chronicle
Chronicle client in Kotlin (Java rides the Kotlin JVM interop)cratis/chronicle/kotlin
Chronicle client in TypeScript or Elixircratis/chronicle/typescript, cratis/chronicle/elixir
Application in a language Arc does not support yetcratis/application/typescript, cratis/application/elixir (Chronicle-only until Arc supports the language)
Fundamentals library consumercratis/fundamentals
Specifications librarycratis/specifications/dotnet, cratis/specifications/typescript
Cratis framework or product repository (maintainers)cratis/engineering

The language in cratis/<product>/<language> means the language you write that side of the stack in. Arc supports C# and Kotlin today; there is deliberately no cratis/arc/typescript.

The full map — every profile, what it composes, and its current status — lives in the profile reference in the Cratis/AI repository. The generated package and capability catalog shows each profile’s included skills and availability in plain language.

  1. Create the subscription file in the consuming repository:

    {
    "schemaVersion": "1.0.0",
    "version": "1.0.0",
    "profiles": ["cratis/chronicle/kotlin"],
    "harnesses": ["claude", "codex", "copilot", "pi"],
    "updatePolicy": "reviewed-pull-request",
    "projectContext": ".cratis/PROJECT.md"
    }
  2. Pin an exact version. latest, branches, and floating ranges are rejected. Rollback means restoring the previous exact version — never a floating one.

  3. List your harnesses. The harnesses array names the hosts this repository expects the skills to reach.

  4. Keep updatePolicy: reviewed-pull-request. Updates arrive as ordinary pull requests that change only the pin — you review them like any dependency.

  5. Point projectContext at your project facts. The shared profiles never own your architecture, environment names, or commands; .cratis/PROJECT.md does. Keep credentials out of it.

A subscription names what the repository wants; the matching packages deliver it per host:

  • Pi/npm — install the package for your profile at the exact pinned version:

    Terminal window
    pi install -l npm:@cratis/ai-fundamentals@0.10.0

    Pi records the exact pin in .pi/settings.json; commit it after review.

  • Marketplace hosts — the Claude Code, Codex, GitHub Copilot, and Cursor plugins resolve the same skills directly from the Cratis/AI repository, so a machine can run the marketplace plugin while the repository’s .cratis/ai.json documents the profile it should behave as.

No per-profile package beyond Fundamentals is published yet — the versioned flow is designed and tool-verified, but the first governed release has not been cut. Until it is, the marketplace plugin is the way to get the skills; the subscription still records the intended scope and starts receiving reviewed updates the moment the packages publish.

Update and rollback are the same operation at different versions: change the exact version in .cratis/ai.json (and .pi/settings.json), review the pull request, and rerun your repository gates. Shared skill bodies never change under your feet, and removing a package never touches .cratis/PROJECT.md, AGENTS.md, or your local skills.

  • Do not copy .ai, .claude, .github, .agents, or .pi trees from another repository — that is the frozen propagation model the profiles replace.
  • Do not mix public and engineering profiles in one subscription.
  • Do not point a subscription at a floating version.

See Trust and distribution for why Cratis distributes skills this way, and Start using AI with Cratis for the marketplace install commands per host.