FS.GG.Game.Skills
0.9.0
Prefix Reserved
dotnet add package FS.GG.Game.Skills --version 0.9.0
NuGet\Install-Package FS.GG.Game.Skills -Version 0.9.0
<PackageReference Include="FS.GG.Game.Skills" Version="0.9.0" />
<PackageVersion Include="FS.GG.Game.Skills" Version="0.9.0" />
<PackageReference Include="FS.GG.Game.Skills" />
paket add FS.GG.Game.Skills --version 0.9.0
#r "nuget: FS.GG.Game.Skills, 0.9.0"
#:package FS.GG.Game.Skills@0.9.0
#addin nuget:?package=FS.GG.Game.Skills&version=0.9.0
#tool nuget:?package=FS.GG.Game.Skills&version=0.9.0
FS.GG.Game.Skills
FS.GG.Game's owner-authored product skill bytes (owner: fs-gg-game) as one
versioned package.
FS.GG.Game owns a scope: product skill class whose bytes live at
template/product-skills/<id>/SKILL.md. Rendering's ADR-0022 §6 second copies are retired, so this
package is the sole channel that carries every product row to a scaffold.
Why a package (and why a sibling, not .github's FS.GG.Drivers)
fsgg-sdd scaffold runs on an offline inner loop, and generic SDD is contractually barred from
embedding any cross-repo path or source. So the SDD CLI cannot reach into FS.GG.Game at scaffold time.
Instead:
- FS.GG.Game publishes these skill bytes +
skill-manifest.jsonas this versioned package (ADR-0062 substrate, ADR-0063 owner-repo byte source). FS.GG.SDD.Clipins it and restores it at CLI build/publish time — online.- At scaffold time — offline — the CLI materializes each skill into the product tree's skill
roots from the bytes it already carries, verifying each against the manifest
sha256(ADR-0014).
This mirrors .github's FS.GG.Drivers
substrate one repo over. It is deliberately not an expanded .github FS.GG.Drivers: FS.GG.Drivers
is the .github-authored driver bytes, and a fs-gg-game-owned product skill cannot ride it without a
frozen copy of these bytes in .github — the restatement ADR-0058 forbids, ADR-0062 replaces, and
ADR-0063 rules out. So FS.GG.Game publishes its own owner bytes (FS.GG.Game#449, closing the byte-SOURCE
gap under FS.GG.SDD#622 / FS-GG/.github#1308).
What it ships
game-skills/skill-manifest.json the delivered set + closed per-file sha256s (the ADR-0014 record)
game-skills/skills/<id>/SKILL.md the bytes for each product row
build/FS.GG.Game.Skills.props a consumer handle: $(FsggGameSkillsContentDir) → the content root
Every scope: product row carries bytes. The manifest has no mirror classification: each body is
authored here and delivered from this package.
Consuming it
There is no consumer materialize target in this package, by design: the materialize is the SDD CLI's,
at scaffold time. build/FS.GG.Game.Skills.props exposes $(FsggGameSkillsContentDir) so the CLI's
build can locate the packed bytes; the CLI reads skill-manifest.json, and for each product row whose
materializes-when holds, lays skills/<id>/SKILL.md into the scaffold's skill roots
and verifies it against the recorded sha256. See ADR-0063 for the materializer design (FS.GG.SDD#623).
Deriving, not restating
The delivered set lives in exactly one authored place —
template/skill-manifest/skill-manifest.json, emitted by scripts/generate-skill-manifest.fsx from the
authored SKILL.md bodies (ADR-0058). stage-skills.py reads that manifest at pack time and stages
exactly its scope: product rows; a skill added or retired needs no edit to this
package. verify-package.sh proves the packed set derives from the manifest, packs every delivered
member, and fails loud on a byte that does not match its recorded sha256.
Learn more about Target Frameworks and .NET Standard.
This package has no dependencies.
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.