Skies.Framework.Testing.InMemory
4.0.2
See the version list below for details.
dotnet add package Skies.Framework.Testing.InMemory --version 4.0.2
NuGet\Install-Package Skies.Framework.Testing.InMemory -Version 4.0.2
<PackageReference Include="Skies.Framework.Testing.InMemory" Version="4.0.2" />
<PackageVersion Include="Skies.Framework.Testing.InMemory" Version="4.0.2" />
<PackageReference Include="Skies.Framework.Testing.InMemory" />
paket add Skies.Framework.Testing.InMemory --version 4.0.2
#r "nuget: Skies.Framework.Testing.InMemory, 4.0.2"
#:package Skies.Framework.Testing.InMemory@4.0.2
#addin nuget:?package=Skies.Framework.Testing.InMemory&version=4.0.2
#tool nuget:?package=Skies.Framework.Testing.InMemory&version=4.0.2
Skies
<p align="center"> <a href="https://skies.build">Website</a> | <a href="https://github.com/lucasrgt/skies/releases">Releases</a> | <a href="docs/CONVENTIONS.md">Conventions</a> | <a href="docs/MIGRATING-TO-SKIES.md">Migration</a> </p>
<p align="center"> <a href="https://www.nuget.org/packages/Skies.Framework"><img src="https://img.shields.io/nuget/v/Skies.Framework?style=flat-square" alt="NuGet"></a> <a href="https://www.npmjs.com/package/skies-frontend-sdk"><img src="https://img.shields.io/npm/v/skies-frontend-sdk?style=flat-square" alt="npm"></a> <a href="LICENSE"><img src="https://img.shields.io/badge/license-MIT-green?style=flat-square" alt="MIT License"></a> </p>
An opinionated .NET convention framework — Rails mindset in C#: minimal decision space, plain stranger-maintainable code, and a "doctor" of Roslyn analyzers that enforce the conventions at build.
- Slices — one operation = one
[Slice](Input/Output/Handle/Map), thin endpoints. - Modular monolith — modules are logical bounded contexts sharing one
AppDb; a module writes only its own entities (SKY0009) and references others by id, so a context stays carvable into its own service. - The doctor — the
SKY####analyzers catch structural drift (slice shape, co-located tests,ctx.mdfreshness, write-ownership, shape-derived write journeys, registry error codes…) at build time. Full catalog indocs/CONVENTIONS.md. - Agent foundations — every scaffold carries five repository-local protocols: AVP proves declared behavior, NYA prevents known failures, WTW preserves governing decisions and invariants, RTW preserves proven implementation patterns, and NWC reactivates obligations when their cue becomes true.
- Generators —
skies new,skies g module / slice / entity / vo / crud / authscaffold exactly the convention.
Two laws hold it together: the output is always stranger-maintainable (plain, idiomatic C#), and the harness is
doctor-removable — dotnet remove the analyzers and the app still compiles and runs; you only lose enforcement.
Getting started
Install the framework — one meta-package brings the whole runtime and the doctor analyzer:
dotnet add package Skies.Framework
A minimal app — Program.cs reads as a thin index:
var builder = WebApplication.CreateBuilder(args);
builder.Services.AddSkies(); // slice-aware OpenAPI + enum-as-name JSON
var app = builder.Build();
app.UseSkies(); // serves the typed contract at /openapi/v1.json
app.Run();
Install the CLI (a .NET global tool) to scaffold the conventions:
dotnet tool install -g skies-framework-cli # the command is `skies`
skies new MyApp # scaffold a project
skies g slice Billing CreateInvoice # a slice + its co-located test
skies g auth # the auth module (register/login/refresh/logout/me)
skies doctor # run the conventions over back + front
Agent foundation stack
The framework composes five independent tools instead of merging their data or responsibilities:
| Foundation | Repository question | Versioned surface | Framework entrypoint |
|---|---|---|---|
| AVP | What behavior must this change prove? | *.spec.toml and co-located executable proofs |
skies criteria, skies gate |
| Not You Again | Which corrected failure must never recur? | .nya/scars/, policy, and skill |
skies nya |
| Why This Way | Which decision or invariant governs this change, and why? | .agent-first/wtw/records/ and skill |
skies wtw |
| Right This Way | How does this repository already implement this kind of work? | .rtw/ways/ and skill |
skies rtw |
| Now We Can | Which previously blocked action can proceed now? | .nwc/deferments/ and skill |
skies nwc |
The primary coding agent orchestrates all five. Skies does not spawn or require one specialist agent per foundation:
| Moment | One command | Result |
|---|---|---|
| Task start or scope change | skies context --task "<goal>" --path <expected-path> |
Bounded decisions, ways, scars, and due work |
| Before commit or completion | skies check --task "<completed work>" |
AVP plus every semantic gate |
| Committed review or pre-push | skies check --task "<review>" --base <revision> |
One receipt over the committed delta |
| Release | skies check --task "<release>" --full |
Exhaustive proof and semantic audit |
Every skies new project includes the complete stack: all four versioned
stores, all five protocols, portable skills, managed agent instructions, and
pre-commit and pre-push checks. There is no reduced scaffold and no
per-foundation opt-out. AVP ships as the native proof protocol. The other four
commands resolve pinned release binaries, verify their embedded SHA-256
checksums, and cache them outside the repository. No Rust toolchain or global
installation is required.
After creating or cloning a Skies project, each developer only selects their personal judge configuration:
dotnet tool run skies nya setup --judge codex
skies foundations init exists for migration, repair, and adoption in an
existing repository. It always initializes NYA, WTW, RTW, and NWC together,
auto-detects existing AGENTS.md, CLAUDE.md, and GEMINI.md files, and is
idempotent. Pass repeated --agent-file <path> options to select other agent
surfaces. skies foundations sync upgrades existing repositories from separate
foundation blocks to the single primary-agent workflow. Each developer or harness can use a different judge without changing
the versioned team protocol. The underlying tools remain independently usable
outside Skies; selective installation belongs to those standalone adoption
flows, not to the Skies project template.
The ordinary workflow stays small:
dotnet tool run skies context --task "Add invoice approval" --path "src/Billing/**"
dotnet tool run skies check --task "Add invoice approval"
Use individual commands only for their explicit record lifecycle or deeper maintenance:
dotnet tool run skies nya spec --file "specs/invoice-approval.md" --task "Design invoice approval" --path "src/Billing/**"
dotnet tool run skies wtw collect
dotnet tool run skies rtw add
dotnet tool run skies nya remember
dotnet tool run skies nwc resolve --id <id> --evidence "<proof>"
dotnet tool run skies nya replay --limit 20
skies pins NYA 1.1.5, WTW 0.1.4, RTW 0.1.3, and NWC 0.3.0 for Windows x64, Linux
x64 and ARM64, and macOS x64 and ARM64. Judge commands, credentials,
disposable SQLite indexes, and local configuration remain unversioned.
skies doctor validates that every shared store, skill, and managed instruction
surface is present and still points through the pinned framework commands.
Packages (nuget.org)
| Package | What it is |
|---|---|
Skies.Framework |
the meta — the whole runtime framework + the doctor analyzer (one reference; Rails-omakase) |
Skies.Framework.Abstractions |
the spine: Result<T>, Error, [Slice], [ValueObject], [Entity], [Module] |
Skies.Framework.AspNetCore |
the ASP.NET wiring: AddSkies/UseSkies, slice-aware OpenAPI, Result→HTTP |
Skies.Framework.Auth / Skies.Framework.Identity / Skies.Framework.Mail / Skies.Framework.Sms / Skies.Framework.Storage |
the standard ports (no vendor SDK in core — the adapter is the app's choice) |
Skies.Framework.Doctor |
the SKY#### Roslyn analyzers (ships with the meta; reference directly for analyzer-only) |
Skies.Framework.Testing / Skies.Framework.Testing.InMemory |
test helpers — add to a test project |
skies-framework-cli |
the skies CLI, as a dotnet tool |
The focused packages are à la carte; the Skies.Framework meta is the front door. (The harness is removable: drop the
Skies.Framework.Doctor analyzer and the app still builds — you only lose the build-time enforcement.)
Docs
docs/CONVENTIONS.md— the constitution: the slice shape + the fullSKY####rule catalog.docs/FRONTEND-CONVENTIONS.md— the React Native + web harness (SKYFE*).docs/MONOREPO-ARCHITECTURE.md— how the pieces fit.docs/MIGRATING-TO-SKIES.md— the complete v3 to v4 rename map.
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net10.0 is compatible. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
-
net10.0
- Microsoft.EntityFrameworkCore.InMemory (>= 10.0.8)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.