Skip to main content

powerforge-library-builder

Build, version, pack, sign, and publish multi-project .NET libraries using Invoke-ProjectBuild and project.build.json. Use for ExpectedVersionMap/X-pattern resolution, NuGet publishing, GitHub release mode/tag strategy, and release troubleshooting.

소스 정보

저장소
EvotecIT/PSPublishModule
최근 소스 활동
2026년 7월 11일 06:33
감지된 SKILL.md 언어
영어
스타
48
포크
16

설치 방법

기본적으로 소스를 먼저 확인하는 Prompt가 선택됩니다. 직접 명령으로 전환하거나 로컬 사본을 다운로드할 수도 있습니다.

소스 파일 검토

설치 여부를 결정하기 전에 SKILL.md와 SkillsMP에 표시된 보조 파일을 읽어 보세요.

파일 탐색기
3 개 파일

SKILL.md 표시 중

SKILL.md
소스 지침 · 읽기 전용 미리보기
name
powerforge-library-builder
description
Build, version, pack, sign, and publish multi-project .NET libraries using Invoke-ProjectBuild and project.build.json. Use for ExpectedVersionMap/X-pattern resolution, NuGet publishing, GitHub release mode/tag strategy, and release troubleshooting.
# PowerForge Library Builder Use this skill for repository/package pipelines (`Invoke-ProjectBuild`), including NuGet + GitHub release workflows. Prefer one entrypoint script: `Build/Build-Project.ps1`. ## Golden Path (Do This In Order) 1. Confirm repository scope and branch hygiene. - Prefer feature branch/worktree. 2. Validate `project.build.json`. - Discovery filters (`IncludeProjects`, `ExcludeProjects`, expected map include mode). - Version expectations and version sources. 3. Generate plan before publishing. - Use `PlanOnly` or cmdlet `-Plan` first. 4. Execute build/pack/sign path. - Ensure staging/output paths are deterministic. - Treat `CleanStaging` as artifact cleanup only; release compilation freshness is enforced by PowerForge. - Require primary managed package assemblies to match the fresh release build before signing or publishing; do not treat native runtime assets or metadata-only packages as managed assembly payloads. - Keep `Build-Project.ps1` minimal (param pass-through + `Invoke-ProjectBuild` call). - Do not keep legacy wrapper scripts (`Build-AllPackages.ps1`, `Publish-*.ps1`, `Update-Version.ps1`) unless explicitly required. 5. Publish NuGet with explicit fail-fast and duplicate policy. 6. Publish GitHub release with explicit tag policy. - Choose `Single` or `PerProject` intentionally. - Set `GitHubPrimaryProject` for single-mode version source. 7. Handle tag conflicts intentionally. - Prefer configurable conflict policy instead of ad-hoc retries. 8. Verify final release state. - Confirm release/tag and attached asset set match plan. - Inspect the published package content when the release adds or changes public APIs; version visibility and a valid signature alone do not prove the payload is current. - If an immutable feed already contains a stale package, publish a corrected higher version and keep consumers off the bad version. 9. Update docs/schema/help for any new config fields. 10. Keep engine boundaries explicit. - Use `Invoke-ProjectBuild` for package/release pipelines. - Use DotNet publish engine (`Invoke-DotNetPublish`, `New-ConfigurationDotNet*`) for service/app publish packaging. ## High-Value Commands ```powershell # Plan-only Invoke-ProjectBuild -ConfigFilePath .\Build\project.build.json -Plan # Full run Invoke-ProjectBuild -ConfigFilePath .\Build\project.build.json # Validate core tests after engine changes dotnet test .\PowerForge.Tests\PowerForge.Tests.csproj -c Release ``` ## Decision Rules - Standard script surface for repos: - Keep `Build/Build-Project.ps1` and `Build/project.build.json`. - Remove obsolete wrapper scripts once migration is complete. - Keep `Build-Project.ps1` simple: - avoid custom coercion/helper blocks when normal nullable bool parameters and splatting are enough. - If projects have mixed versions in `Single` release mode: - set `GitHubPrimaryProject` or use date/timestamp tags by template. - Prefer template-based tags over hardcoded tags: - tokens include `{Project}`, `{Version}`, `{PrimaryProject}`, `{PrimaryVersion}`, `{Repo}`, `{Date}`, `{UtcDate}`, `{DateTime}`, `{UtcDateTime}`, `{Timestamp}`, `{UtcTimestamp}`. - Use explicit conflict policy for existing tags: - `Reuse`, `Fail`, or `AppendUtcTimestamp`. - In plan/what-if mode, avoid hard failures that require produced artefacts on disk. - Never use `CleanStaging` as evidence that project `bin`/`obj` outputs were rebuilt. - Do not publish when PowerForge reports a package payload provenance mismatch. ## Reference Files (Read As Needed) - `references/checklist.md` for quick release-mode and tag-policy decisions. - `Docs/PSPublishModule.ProjectBuild.md` for JSON behavior. - `Docs/PSPublishModule.DotNetPublish.Quickstart.md` when release work also needs app/service publish flows. - `schemas/project.build.schema.json` for allowed fields and enums. - `Module/Docs/Invoke-ProjectBuild.md` for cmdlet behavior.
GitHub에서 보기