Release v0.3.0
Three skills move out of the legacy .ai/skills tree into the canonical trees that profiles actually ship from, and the catalog stops describing them as unclassified placeholders. The legacy twins stay in place — retiring them is sequenced by #256.
Added
cratis-specifications-csharp— C# Specification by Example withCratis.Specifications: theEstablish/Because/should_pattern, thefor_/when_/and_hierarchy, reusablegiven/contexts, the four in-process scenario helpers, and out-of-process Chronicle integration. Available throughpublic-specifications-dotnet(#174)cratis-specifications-typescript— TypeScript specifications with thegiven()helper, context classes, Sinon stubbing, and the Chai.shouldinterface. Available throughpublic-specifications-typescript(#174)cratis-engineering-csharp-conventions— the Cratis C# house conventions: formatting, naming, records and primary constructors, nullable handling, XML documentation, custom exceptions, structured logging, dependency injection and service lifetimes, and the CUPID/domain-based philosophy. Available throughengineering-base, and inherited byengineering-specifications(#174)
Changed
- The three skills are self-contained. The rule content they previously linked to under
.ai/rulesisrepository-onlyand cannot ship through a profile, so the folder and naming philosophy, the never-sleep discipline, the scenario family, the singleton/tenant lifetime rule, and the implementation-discovery rule are carried in the skills and their references instead of linked (#174) - Package versions are stated from the published
Cratis.Specifications,Cratis.Arc.Testing, andCratis.Chronicle.Testingreleases rather than inherited from the legacy text (#174) public-specifications-dotnet,public-specifications-typescript, andengineering-basecarry real content and move topreview-source-candidate, with gap summaries describing what is still missing rather than everything (#174)- The three catalog targets are classified: capability kind, invocation, applicability, trust effects, dependency edges, source contracts, and authoring contract. Security disposition stays
pendingand evaluation statuses staymissing, because no review or evaluation has been run for them (#174) - Each source record and distribution component points at the canonical tree with matching repository-snapshot provenance, so the digest, the revision, and the shipped bytes agree. Each retained legacy twin is modeled as its own repository-only component, and the
.claude/.agents/.githubskill projections move onto it — those folder symlinks resolve into.ai/skillsand never exposed the canonical tree (#174) public-skill-sources-and-resourcesmoves fromblocked-by-distribution-decisiontoretire-after-evidence, andmcp-generated-guidance-referencestoretain. #266 replaced the generated distribution with direct installation frommain, so nothing about how content ships blocks them; what remains is retirement sequencing (#174)