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.
Marketplace or profiles?
Section titled “Marketplace or profiles?”The two paths answer different questions and compose cleanly:
| Marketplace plugin | Profile subscription | |
|---|---|---|
| Question it answers | “Give my assistant the Cratis skills” | “Give this repository exactly the skills its stack needs” |
| Scope | The whole public bundle (or the maintainer bundle) | The profiles you name — products, languages, and compositions |
| Selection granularity | One bundle | Per product, per language, per architecture |
| Versioning | Follows the Cratis/AI default branch you already read | Pinned to exact package versions; updates arrive as reviewed pull requests (designed — not published yet; today only @cratis/ai-fundamentals exists on npm) |
| Setup | One command per host | A committed .cratis/ai.json plus host packages |
| Good for | Trying Cratis AI, broad developer machines | Repositories 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.
Choose the profile
Section titled “Choose the profile”Name the profile after the narrowest description of your repository:
| Repository | Profile |
|---|---|
| Full Arc + Chronicle + React application | cratis/application |
| Arc backend without Chronicle | cratis/arc |
| Arc backend, C# only | cratis/arc/csharp |
| Arc backend in Kotlin | cratis/arc/kotlin |
| Chronicle client without Arc | cratis/chronicle |
| Chronicle client in Kotlin (Java rides the Kotlin JVM interop) | cratis/chronicle/kotlin |
| Chronicle client in TypeScript or Elixir | cratis/chronicle/typescript, cratis/chronicle/elixir |
| Application in a language Arc does not support yet | cratis/application/typescript, cratis/application/elixir (Chronicle-only until Arc supports the language) |
| Fundamentals library consumer | cratis/fundamentals |
| Specifications library | cratis/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.
Subscribe in .cratis/ai.json
Section titled “Subscribe in .cratis/ai.json”-
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"} -
Pin an exact version.
latest, branches, and floating ranges are rejected. Rollback means restoring the previous exact version — never a floating one. -
List your harnesses. The
harnessesarray names the hosts this repository expects the skills to reach. -
Keep
updatePolicy: reviewed-pull-request. Updates arrive as ordinary pull requests that change only the pin — you review them like any dependency. -
Point
projectContextat your project facts. The shared profiles never own your architecture, environment names, or commands;.cratis/PROJECT.mddoes. Keep credentials out of it.
Install the matching packages
Section titled “Install the matching packages”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.0Pi 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/AIrepository, so a machine can run the marketplace plugin while the repository’s.cratis/ai.jsondocuments 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 roll back
Section titled “Update and roll back”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.
What not to do
Section titled “What not to do”- Do not copy
.ai,.claude,.github,.agents, or.pitrees 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.