Skip to content

Stack profiles

Profiles live in src/kiyo/profiles/. They are optional supplements to the shared engineering checks. A profile is selected only after the agent inspects actual versions, configuration, toolchain, and architecture. Having a profile never implies that a project uses that stack. No profile installs packages, upgrades frameworks, or authorizes modernization (KIYO-PROF-001).

Profile Inspects first Explicitly does not force
.NET SDK (global.json), target framework, observed runtime; existing test, mapping, validation, and error patterns xUnit, Mapperly, FluentValidation, and ProblemDetails are recommendations or opt-in preset choices only. No Clean Architecture, CQRS, MediatR, or EF Core imposed on legacy code. Mapperly versus AutoMapper against an approved decision is treated as drift
Angular package.json and lockfile, angular.json, TypeScript, build, and test config; module versus standalone organization No forced signals, zoneless, Spartan, Tailwind, or forms and state architecture migration; includes UI accessibility and state checks
Python Existing package manager, build backend, and test tools No FastAPI forced; unittest or pytest never replaced; file and path, serialization, and process-call checks
PostgreSQL Existing migrations, access patterns, transaction handling Creating a migration file and executing a database operation are separate actions. Parameter binding, allowlisted dynamic identifiers, no rollback promises, no connecting to discover an unknown target

Each profile’s external provenance is recorded as checked 2026-09-29, DOCUMENTED_ONLY. No profile claims fixture execution.

The extension contract includes React, Java, and company-specific examples. These are synthetic proposal outlines, not supported profiles.

A new profile must include six parts:

  1. identity and scope;
  2. evidence-based discovery;
  3. conditional checks and non-goals;
  4. package-contained references;
  5. support status;
  6. scoped maintenance.

See Add a stack profile.