From 2879ebea90db2677fc450a91c89024e3779b38cb Mon Sep 17 00:00:00 2001 From: Jonas Ha Date: Fri, 17 Apr 2026 08:42:53 -0400 Subject: [PATCH 01/12] chore(repo): remove CHANGELOG.md and update solution file - Deleted `CHANGELOG.md` as part of repository cleanup. - Removed reference to the `CHANGELOG.md` file from `MinimalLambda.sln`. --- CHANGELOG.md | 312 ---------------------------------------------- MinimalLambda.sln | 1 - 2 files changed, 313 deletions(-) delete mode 100644 CHANGELOG.md diff --git a/CHANGELOG.md b/CHANGELOG.md deleted file mode 100644 index 67d235d1..00000000 --- a/CHANGELOG.md +++ /dev/null @@ -1,312 +0,0 @@ -# Changelog - -All notable changes to this project will be documented in this file. -See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. - -## [Unreleased](https://github.com/j-d-ha/minimal-lambda/compare/v2.3.1...HEAD) - -## [v2.3.1](https://github.com/j-d-ha/minimal-lambda/compare/v2.3.0...v2.3.1) - 2026-03-23 - -### ๐Ÿ› Bug Fixes - -* fix(deps): downgrade Microsoft.CodeAnalysis packages to 5.0.0 (#316) @j-d-ha -* fix(ci): use GitHub App token in changelog update workflow (#312) @j-d-ha - -### ๐Ÿ”ง Maintenance - -* chore(deps): Bump go-task/setup-task from 1 to 2 (#313) @dependabot -* chore(deps): Bump actions/create-github-app-token from 2 to 3 (#314) @dependabot - -## [v2.3.0](https://github.com/j-d-ha/minimal-lambda/compare/v2.2.0...v2.3.0) - 2026-03-20 - -## ๐Ÿš€ Features - -* feat(testing): migrate test infrastructure to Microsoft Testing Platform (#288) @j-d-ha - -## ๐Ÿ› Bug Fixes - -* fix(deps): switch xunit to mtp-v2 and fix Scriban build error (#309) @j-d-ha - -## ๐Ÿ”„ Refactoring - -* refactor: consolidate code style and improve readability (#291) @j-d-ha - -## โœ… Tests - -* github: rewrite PR guide for clarity and detail (#294) @j-d-ha - -## ๐Ÿ”ง Maintenance - -* chore: Bump the minor-and-patch group with 20 updates (#307) @dependabot -* chore: Bump jetbrains.resharper.globaltools from 2025.3.1 to 2025.3.3 (#310) @dependabot -* chore(deps-dev): bump the minor-and-patch group with 2 updates (#299) @dependabot -* chore(deps): bump dotnet-sdk from 10.0.101 to 10.0.201 (#306) @dependabot -* chore(deps-dev): bump the minor-and-patch group with 2 updates (#296) @dependabot -* chore: bump urllib3 from 2.5.0 to 2.6.3 in the uv group across 1 directory (#286) @dependabot -* chore: Bump the minor-and-patch group with 16 updates (#287) @dependabot -* chore(deps): bump dotnet-sdk from 10.0.101 to 10.0.102 (#285) @dependabot - -## [v2.2.0](https://github.com/j-d-ha/minimal-lambda/compare/v2.1.1...v2.2.0) - 2026-01-12 - -### ๐Ÿš€ Features - -* feat(ci): add auto-approval to automated PR workflows (#283) @j-d-ha -* feat(tests): add multi-targeting and source generator improvements (#274) @j-d-ha -* feat(tests): add scrubbers for dynamic snapshot values (#273) @j-d-ha - -### ๐Ÿ”„ Refactoring - -* refactor(source-generators): modularize code generation and improve generated file organization ( - #280) @j-d-ha -* refactor(source-generators): simplify and restructure code generation logic (#279) @j-d-ha - -### ๐Ÿ”ง Maintenance - -* chore: bump the minor-and-patch group with 6 updates (#281) @dependabot -* chore(deps-dev): Bump the minor-and-patch group with 2 updates (#277) @dependabot -* chore: Bump the minor-and-patch group with 4 updates (#275) @dependabot - -## [v2.1.1](https://github.com/j-d-ha/minimal-lambda/compare/v2.0.0...v2.1.1) - 2025-12-22 - -### ๐Ÿš€ Features - -* feat(build): add comprehensive AOT compatibility support (#267) @j-d-ha -* feat(host): add factory-based middleware creation support (#266) @j-d-ha -* feat(source-generators): add class-based middleware support with UseMiddleware() (#257) @j-d-ha - -### ๐Ÿ› Bug Fixes - -* fix: prevent validation project from being packaged (#270) @j-d-ha -* fix(ci): add Task installation step to main-build pipeline (#268) @j-d-ha - -### ๐Ÿ”ง Maintenance - -* fix(ci): add Task installation step to main-build pipeline (#268) @j-d-ha -* chore: migrate InternalsVisibleTo declarations to project files (#265) @j-d-ha -* chore(deps): migrate to LayeredCraft.SourceGeneratorTools.Generator v0.1.0-beta.10 (#264) @j-d-ha -* chore: update changelog for v2.0.0 (#256) @github-actions - -## [v2.0.0](https://github.com/j-d-ha/minimal-lambda/compare/v1.3.1...v2.0.0) - 2025-12-18 - -### ๐Ÿš€ Features - -* feat(host): add ILambdaLifecycleContext for lifecycle handlers (#252) @j-d-ha -* feat(testing): add customizable JSON serializer options to LambdaTestServer (#251) @j-d-ha -* feat(envelopes): support multiple response types with shared extension methods (#213) @j-d-ha -* feat(testing): add MinimalLambda.Testing package (#233) @j-d-ha -* feat(docs): refine messaging to emphasize Lambda-first design (#228) @j-d-ha - -### ๐Ÿ› Bug Fixes - -* fix(testing): prevent DI container disposal during test execution (#234) @j-d-ha -* fix(build): add build targets for packaging (#231) @j-d-ha -* fix(core): adjust default timeout values and update documentation (#226) @j-d-ha - -### ๐Ÿ“š Documentation - -* docs: document MinimalLambda.Testing package and enhance testing guide (#235) @j-d-ha - -### ๐Ÿ”„ Refactoring - -* refactor(source-generators): improve type casting and output generation (#254) @j-d-ha -* refactor(abstractions): rename ILambdaHostContext to ILambdaInvocationContext (#253) @j-d-ha -* refactor(core): replace [Event] attribute with [FromEvent] (#250) @j-d-ha -* refactor: rename framework from AwsLambda.Host to MinimalLambda (#227) @j-d-ha - -### ๐Ÿ”ง Maintenance - -* chore(deps): bump dotnet-sdk from 10.0.100 to 10.0.101 (#239) @dependabot -* chore(deps): bump actions/checkout from 4 to 6 (#241) @dependabot -* chore(deps): bump the minor-and-patch group with 2 updates (#242) @dependabot -* chore(deps): bump actions/setup-python from 5 to 6 (#245) @dependabot -* chore(deps): bump actions/upload-pages-artifact from 3 to 4 (#246) @dependabot -* chore(github): add pip ecosystem and ignore release-drafter (#248) @j-d-ha -* chore(deps): Bump the minor-and-patch group with 12 updates (#247) @dependabot -* chore(deps): update Microsoft.Extensions.Hosting from RC to stable (#232) @j-d-ha -* chore: remove obsolete code and deprecated features (#229) @j-d-ha - -### โš ๏ธ Breaking Changes - -* refactor(abstractions): rename ILambdaHostContext to ILambdaInvocationContext (#253) @j-d-ha -* feat(host): add ILambdaLifecycleContext for lifecycle handlers (#252) @j-d-ha -* refactor: rename framework from AwsLambda.Host to MinimalLambda (#227) @j-d-ha - -## [v1.3.1](https://github.com/j-d-ha/minimal-lambda/compare/v1.3.0...v1.3.1) - 2025-12-10 - -### ๐Ÿ› Bug Fixes - -* fix(core): add missing TenantId and TraceId properties to DefaultLambdaHostContext (#224) @j-d-ha -* fix(ci): remove sign-commits from changelog workflow (#223) @j-d-ha - -## [v1.3.0](https://github.com/j-d-ha/minimal-lambda/compare/v1.2.1...v1.3.0) - 2025-12-10 - -## ๐Ÿš€ Features - -* feat(source-generators): support multiple MapHandler invocations with custom feature providers ( - #214) @j-d-ha -* docs: update MkDocs palette toggle configuration (#211) @j-d-ha - -## ๐Ÿ› Bug Fixes - -* fix: update third-party license attributions (#217) @j-d-ha - -## ๐Ÿ“š Documentation - -* docs: add comprehensive getting started guide and restructure documentation (#209) @j-d-ha - -## ๐Ÿ”„ Refactoring - -* refactor(host): migrate BootstrapHttpClient from options to dependency injection (#219) @j-d-ha -* refactor(docs): replace ASPNETCORE_ENVIRONMENT with DOTNET_ENVIRONMENT (#216) @j-d-ha - -## ๐Ÿ”ง Maintenance - -* ci(github): optimize workflow triggers for draft PRs (#215) @j-d-ha - -## [v1.2.1](https://github.com/j-d-ha/minimal-lambda/compare/v1.2.0...v1.2.1) - 2025-11-30 - -## ๐Ÿ› Bug Fixes - -* fix: update build versioning (#206) @j-d-ha -* feat(ci): fixed interceptor namespace (#205) @ncipollina -* feat(ci): add transitive builds (#202) @ncipollina - -## ๐Ÿ“š Documentation - -* docs: add GitHub Pages landing page with MkDocs (#203) @j-d-ha - -## ๐Ÿ”ง Maintenance - -* ci: skip build workflows for docs-only changes (#204) @j-d-ha -* chore(github): enhance changelog update workflow (#201) @j-d-ha - -## [v1.2.0](https://github.com/j-d-ha/minimal-lambda/compare/v1.1.0...v1.2.0) - 2025-11-29 - -## ๐Ÿš€ Features - -* feat(envelopes): add SqsSnsEnvelope for SNS-to-SQS subscription pattern (#196) @j-d-ha -* feat(envelopes): add CloudWatch Logs envelope support (#195) @j-d-ha -* feat(envelopes): add Kafka envelope support (#194) @j-d-ha -* feat(envelopes): add Kinesis Firehose envelope support (#193) @j-d-ha -* feat(envelopes): add Kinesis envelope for strongly-typed message handling (#192) @j-d-ha -* feat(envelopes): add Application Load Balancer envelope support (#187) @j-d-ha -* feat(envelopes): expand envelope options for multiple serialization formats (#184) @j-d-ha - -## ๐Ÿ› Bug Fixes - -* fix(ci): add explicit token to checkout and create-pull-request actions (#183) @j-d-ha - -## ๐Ÿ“š Documentation - -* docs: standardize README documentation across all packages (#200) @j-d-ha -* feat(envelopes): add SNS envelope for strongly-typed message handling (#190) @j-d-ha - -## ๐Ÿ”„ Refactoring - -* refactor(abstractions): replace Lazy implementation with property for JSON options (#199) @j-d-ha - -## ๐Ÿ”ง Maintenance - -* chore: cleanup repository formatting and documentation (#197) @j-d-ha -* chore(ci): pinned release-drafter action to 6.0.0 (#182) @j-d-ha - -## [v1.1.0](https://github.com/j-d-ha/minimal-lambda/compare/v1.0.0...v1.1.0) - 2025-11-27 - -## ๐Ÿš€ Features - -* feat(host): add stream feature abstraction layer (#181) @j-d-ha -* feat(core): add ILambdaHostContextAccessor and context factory integration (#178) @j-d-ha -* feat(source-generators): add GeneratedCodeAttribute to all generated code classes (#174) @j-d-ha - -## ๐Ÿ› Bug Fixes - -* fix(ci): update changelog workflow to create pull request instead of direct commit (#172) @j-d-ha -* fix(ci): add write permissions for release asset uploads (#171) @j-d-ha - -## ๐Ÿ“š Documentation - -* docs: add GitHub issue and discussion templates (#176) @j-d-ha - -## ๐Ÿ”ง Maintenance - -* chore(github): update changelog for v1.0.0 release (#170) @j-d-ha - -## [v1.0.0](https://github.com/j-d-ha/minimal-lambda/compare/v0.1.3...v1.0.0) - 2025-11-24 - -## ๐Ÿš€ Features - -* feat(host): refactor builder entrypoint and improve configuration (#166) @j-d-ha -* test(source-generators): add comprehensive tests for `HashCode` type (#153) @j-d-ha -* feat(envelopes): add modular envelope system for Lambda event handling (#131) @j-d-ha - -## ๐Ÿ› Bug Fixes - -* fix: resolve Sonar findings in tests and runtime code (#147) @j-d-ha - -## ๐Ÿ“š Documentation - -* docs: enhance package README overviews with detailed feature descriptions (#124) @j-d-ha - -## ๐Ÿ”„ Refactoring - -* refactor(core): refactor lambda application and builder (#163) @j-d-ha -* refactor(host): reorganize folder structure with hierarchical layers (#146) @j-d-ha - -## โœ… Tests - -* test(source-generators): add comprehensive tests for `HashCode` type (#153) @j-d-ha - -## ๐Ÿ”ง Maintenance - -* chore(deps): Bump the minor-and-patch group with 1 update ( - #165) @[dependabot[bot]](https://github.com/apps/dependabot) -* chore(github): configure Dependabot to use conventional commits (#164) @j-d-ha -* chore(deps): bump actions/checkout from 5 to 6 ( - #158) @[dependabot[bot]](https://github.com/apps/dependabot) -* chore(deps-dev): bump husky from 8.0.3 to 9.1.7 ( - #149) @[dependabot[bot]](https://github.com/apps/dependabot) -* chore(deps-dev): bump @commitlint/cli from 18.6.1 to 20.1.0 ( - #150) @[dependabot[bot]](https://github.com/apps/dependabot) -* chore(deps-dev): bump @commitlint/config-conventional from 18.6.3 to 20.0.0 ( - #151) @[dependabot[bot]](https://github.com/apps/dependabot) -* feat(opentelemetry): add OpenTelemetry unit tests and update dependencies (#148) @j-d-ha -* chore(deps-dev): bump js-yaml from 4.1.0 to 4.1.1 in the npm_and_yarn group across 1 directory ( - #132) @[dependabot[bot]](https://github.com/apps/dependabot) -* ci: skip workflows for draft pull requests (#127) @j-d-ha -* ci: skip pr build for draft pull requests (#126) @j-d-ha -* ci(github): replace softprops action with gh release upload command (#123) @j-d-ha -* chore(deps): bump amannn/action-semantic-pull-request from 5.4.0 to 6.1.1 ( - #121) @[dependabot[bot]](https://github.com/apps/dependabot) -* chore(deps): bump peter-evans/create-pull-request from 5 to 7 ( - #119) @[dependabot[bot]](https://github.com/apps/dependabot) -* chore(deps): bump actions/checkout from 4 to 5 ( - #118) @[dependabot[bot]](https://github.com/apps/dependabot) -* chore(deps): bump stefanzweifel/git-auto-commit-action from 5 to 7 ( - #117) @[dependabot[bot]](https://github.com/apps/dependabot) -* chore(deps): bump release-drafter/release-drafter from 6.0.0 to 6.1.0 in the minor-and-patch - group (#116) @[dependabot[bot]](https://github.com/apps/dependabot) - -## โš ๏ธ Breaking Changes - -* feat(host): refactor builder entrypoint and improve configuration (#166) @j-d-ha -* refactor(core): refactor lambda application and builder (#163) @j-d-ha -* refactor(host): reorganize folder structure with hierarchical layers (#146) @j-d-ha -* feat(envelopes): add modular envelope system for Lambda event handling (#131) @j-d-ha - -## [v0.1.3](https://github.com/j-d-ha/minimal-lambda/compare/v0.1.2...v0.1.3) - 2025-11-10 - -### ๐Ÿ› Bug Fixes - -* fix: prevent example projects from being packed during release (#115) @j-d-ha - -## [v0.1.2](https://github.com/j-d-ha/minimal-lambda/compare/v0.1.1...v0.1.2) - 2025-11-10 - -### ๐Ÿ”ง Maintenance - -* ci(github): get NuGet package version from release tag (#113) @j-d-ha - -## [v0.1.1](https://github.com/j-d-ha/minimal-lambda/compare/v0.1.1) - 2025-11-09 - -### ๐Ÿ”ง Maintenance - -* chore(ci): replace release notes workflow with changelog updater (#112) @j-d-ha diff --git a/MinimalLambda.sln b/MinimalLambda.sln index 717b3c4a..1143161b 100644 --- a/MinimalLambda.sln +++ b/MinimalLambda.sln @@ -22,7 +22,6 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution mkdocs.yml = mkdocs.yml .editorconfig = .editorconfig .csharpierignore = .csharpierignore - CHANGELOG.md = CHANGELOG.md EndProjectSection EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "src", "src", "{827E0CD3-B72D-47B6-A68D-7590B98EB39B}" From 06eac9f2f292b4cd8cbdd055fa676d0f4a42fe70 Mon Sep 17 00:00:00 2001 From: Jonas Ha Date: Fri, 17 Apr 2026 08:46:38 -0400 Subject: [PATCH 02/12] chore(ci): remove changelog update workflow - Deleted `.github/workflows/update-changelog.yaml` to clean up unused CI configurations. - The workflow is no longer needed due to the removal of `CHANGELOG.md` from the repository. --- .github/workflows/update-changelog.yaml | 72 ------------------------- 1 file changed, 72 deletions(-) delete mode 100644 .github/workflows/update-changelog.yaml diff --git a/.github/workflows/update-changelog.yaml b/.github/workflows/update-changelog.yaml deleted file mode 100644 index 20948f9f..00000000 --- a/.github/workflows/update-changelog.yaml +++ /dev/null @@ -1,72 +0,0 @@ -name: "Update Changelog" - -on: - release: - types: [released] - workflow_dispatch: - -jobs: - update: - runs-on: ubuntu-latest - - permissions: - # Give the default GITHUB_TOKEN write permission to commit and push the - # updated CHANGELOG back to the repository. - # https://github.blog/changelog/2023-02-02-github-actions-updating-the-default-github_token-permissions-to-read-only/ - contents: write - pull-requests: write - - steps: - - name: Generate GitHub App token - uses: actions/create-github-app-token@v3 - id: app-token - with: - app-id: ${{ secrets.CHANGELOG_UPDATE_ID }} - private-key: ${{ secrets.CHANGELOG_UPDATE_PRIVATE_KEY }} - - - name: Checkout code - uses: actions/checkout@v6 - with: - token: ${{ steps.app-token.outputs.token }} - ref: ${{ github.event.release.target_commitish }} - - - name: Update Changelog - uses: stefanzweifel/changelog-updater-action@v1 - with: - latest-version: ${{ github.event.release.tag_name }} - release-notes: ${{ github.event.release.body }} - - - name: Remove header and summary from CHANGELOG - run: perl -i -pe 'BEGIN{undef $/} s/(## (?:\[)?v[\d.]+(?:\](?:\([^)]+\))?)? - \d{4}-\d{2}-\d{2}\n)[\s\S]*?### Changes\n+/$1\n/g' CHANGELOG.md - - - name: Create Pull Request - id: cpr - uses: peter-evans/create-pull-request@v8 - with: - token: ${{ steps.app-token.outputs.token }} - branch: changelog/${{ github.event.release.tag_name }} - base: ${{ github.event.release.target_commitish }} - title: "chore: update changelog for ${{ github.event.release.tag_name }}" - body: | - ## Automated Changelog Update - - This PR updates the CHANGELOG.md file with entries from the release: ${{ github.event.release.tag_name }} - - The changelog was automatically updated by the release workflow. - commit-message: "chore: update changelog for ${{ github.event.release.tag_name }}" - labels: "automated,changelog,chore" - delete-branch: true - - - name: Approve PR - if: steps.cpr.outputs.pull-request-number - run: gh pr review --approve "$PR_URL" - env: - PR_URL: ${{ steps.cpr.outputs.pull-request-url }} - GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} - - - name: Enable Auto-merge - if: steps.cpr.outputs.pull-request-number - run: gh pr merge --auto --squash "$PR_URL" - env: - PR_URL: ${{ steps.cpr.outputs.pull-request-url }} - GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} From fb0d9f0029146b807186a29f06114fae048f7dc0 Mon Sep 17 00:00:00 2001 From: Jonas Ha Date: Fri, 17 Apr 2026 09:04:00 -0400 Subject: [PATCH 03/12] chore(ci): update PR validation and release draft configurations - Adjusted `validate-pr-title.yaml` to improve PR title validation patterns. - Updated subject pattern to disallow titles starting with uppercase letters. - Simplified `release-drafter.yml` to enhance labeling and version resolution logic. - Added support for detecting breaking changes through title prefixes. --- .github/release-drafter.yml | 38 ++++++++---------------- .github/workflows/validate-pr-title.yaml | 18 ++--------- 2 files changed, 14 insertions(+), 42 deletions(-) diff --git a/.github/release-drafter.yml b/.github/release-drafter.yml index 02d10ea1..2a78ec32 100644 --- a/.github/release-drafter.yml +++ b/.github/release-drafter.yml @@ -4,25 +4,28 @@ tag-template: 'v$RESOLVED_VERSION' autolabeler: - label: 'type: feat' title: - - '/feat(\([^)]*\))?:/i' + - '/^feat(\([^)]*\))?:/i' - label: 'type: fix' title: - - '/fix(\([^)]*\))?:/i' + - '/^fix(\([^)]*\))?:/i' - label: 'type: docs' title: - - '/docs(\([^)]*\))?:/i' + - '/^docs(\([^)]*\))?:/i' - label: 'type: refactor' title: - - '/refactor(\([^)]*\))?:/i' + - '/^refactor(\([^)]*\))?:/i' - label: 'type: test' title: - - '/test(\([^)]*\))?:/i' + - '/^test(\([^)]*\))?:/i' - label: 'type: chore' title: - - '/chore(\([^)]*\))?:/i' + - '/^chore(\([^)]*\))?:/i' - label: 'type: ci' title: - - '/ci(\([^)]*\))?:/i' + - '/^ci(\([^)]*\))?:/i' + - label: 'breaking-change' + title: + - '/^(feat|fix|docs|refactor|test|chore|ci)(\([^)]*\))?!:/i' - label: 'breaking-change' body: - '/BREAKING CHANGE/i' @@ -31,55 +34,41 @@ categories: - title: '๐Ÿš€ Features' labels: - 'type: feat' - - 'feature' - title: '๐Ÿ› Bug Fixes' labels: - 'type: fix' - - 'bug' - - 'bugfix' - title: '๐Ÿ“š Documentation' labels: - 'type: docs' - - 'documentation' - - title: 'โšก Performance' - labels: - - 'type: perf' - - 'performance' - title: '๐Ÿ”„ Refactoring' labels: - 'type: refactor' - - 'refactor' - title: 'โœ… Tests' labels: - 'type: test' - - 'test' - title: '๐Ÿ”ง Maintenance' labels: - 'type: chore' - 'type: ci' - - 'chore' - - 'ci' - title: 'โš ๏ธ Breaking Changes' labels: - - 'breaking' - 'breaking-change' version-resolver: major: labels: - - 'breaking' - 'breaking-change' minor: labels: - 'type: feat' - - 'feature' patch: labels: - 'type: fix' - 'type: docs' + - 'type: refactor' + - 'type: test' - 'type: chore' - 'type: ci' - - 'bug' default: patch template: | @@ -99,9 +88,6 @@ include-labels: - 'type: test' - 'type: chore' - 'type: ci' - - 'feature' - - 'bug' - - 'breaking' - 'breaking-change' exclude-labels: diff --git a/.github/workflows/validate-pr-title.yaml b/.github/workflows/validate-pr-title.yaml index 39a2c76b..c42cf579 100644 --- a/.github/workflows/validate-pr-title.yaml +++ b/.github/workflows/validate-pr-title.yaml @@ -2,7 +2,7 @@ name: Validate PR Title on: pull_request: - types: [opened, edited, synchronize] + types: [ opened, edited, synchronize ] branches: - main @@ -33,20 +33,6 @@ jobs: test chore ci - scopes: | - host - envelopes - abstractions - opentelemetry - source-generators - deps - build - ci - github - core - docs - testing - tests requireScope: false - subjectPattern: ^[a-z].* + subjectPattern: ^(?![A-Z]).+$ subjectPatternError: Subject must start with lowercase letter From 103b6f9c89560bc52da2b21ac1908bf914212ad7 Mon Sep 17 00:00:00 2001 From: Jonas Ha Date: Fri, 17 Apr 2026 09:14:16 -0400 Subject: [PATCH 04/12] chore(ci): remove duplicate breaking-change label from release-drafter - Removed the redundant `breaking-change` label with body regex from `release-drafter.yml`. --- .github/release-drafter.yml | 3 --- 1 file changed, 3 deletions(-) diff --git a/.github/release-drafter.yml b/.github/release-drafter.yml index 2a78ec32..46004b04 100644 --- a/.github/release-drafter.yml +++ b/.github/release-drafter.yml @@ -26,9 +26,6 @@ autolabeler: - label: 'breaking-change' title: - '/^(feat|fix|docs|refactor|test|chore|ci)(\([^)]*\))?!:/i' - - label: 'breaking-change' - body: - - '/BREAKING CHANGE/i' categories: - title: '๐Ÿš€ Features' From cdd6174ef053eaea7e41f7e556f29c765a550267 Mon Sep 17 00:00:00 2001 From: Jonas Ha Date: Fri, 17 Apr 2026 09:14:25 -0400 Subject: [PATCH 05/12] chore(dependabot): add `dependabot` label to all dependency updates - Updated `.github/dependabot.yml` to include a consistent `dependabot` label across all ecosystems: - nuget, github-actions, npm, dotnet-sdk, and pip. - Ensures easier identification and filtering of Dependabot pull requests. --- .github/dependabot.yml | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/.github/dependabot.yml b/.github/dependabot.yml index 4ffaa8e3..ed8d1d6e 100644 --- a/.github/dependabot.yml +++ b/.github/dependabot.yml @@ -2,6 +2,8 @@ version: 2 updates: - package-ecosystem: "nuget" directory: "/" + labels: + - "dependabot" schedule: interval: "weekly" open-pull-requests-limit: 10 @@ -32,7 +34,9 @@ updates: - "5.3.0" - package-ecosystem: "github-actions" - directoSystem.Text.Jsonry: "/" + directory: "/" + labels: + - "dependabot" schedule: interval: "weekly" open-pull-requests-limit: 10 @@ -50,6 +54,8 @@ updates: - package-ecosystem: "npm" directory: "/" + labels: + - "dependabot" schedule: interval: "weekly" open-pull-requests-limit: 10 @@ -65,6 +71,8 @@ updates: - package-ecosystem: "dotnet-sdk" directory: "/" + labels: + - "dependabot" schedule: interval: "weekly" commit-message: @@ -74,6 +82,8 @@ updates: - package-ecosystem: "pip" directory: "/" + labels: + - "dependabot" schedule: interval: "weekly" open-pull-requests-limit: 10 @@ -85,4 +95,4 @@ updates: minor-and-patch: update-types: - "minor" - - "patch" \ No newline at end of file + - "patch" From bfc3f2f9bf755a46a203ff84b9084bb525f1d154 Mon Sep 17 00:00:00 2001 From: Jonas Ha Date: Fri, 17 Apr 2026 10:14:14 -0400 Subject: [PATCH 06/12] chore(commitlint): update commit message linting rules - Added `revert` and `cr` to allowed `type-enum` values. - Modified `subject-case` to disallow `sentence-case`. - Enforced `scope-case` to use `lower-case`. --- commitlint.config.js | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/commitlint.config.js b/commitlint.config.js index f4803dbf..e82473a4 100644 --- a/commitlint.config.js +++ b/commitlint.config.js @@ -1,8 +1,9 @@ module.exports = { extends: ['@commitlint/config-conventional'], rules: { - 'type-enum': [2, 'always', ['feat', 'fix', 'docs', 'refactor', 'test', 'chore', 'ci']], - 'subject-case': [2, 'never', ['start-case', 'pascal-case', 'upper-case']], + 'type-enum': [2, 'always', ['feat', 'fix', 'docs', 'refactor', 'test', 'chore', 'ci', 'revert', 'cr']], + 'subject-case': [2, 'never', ['sentence-case', 'start-case', 'pascal-case', 'upper-case']], + 'scope-case': [2, 'always', 'lower-case'], 'subject-empty': [2, 'never'], 'subject-full-stop': [2, 'never', '.'], 'type-case': [2, 'always', 'lowercase'], From 32e114df2d7fdddc970299fc861186cf9df52e1f Mon Sep 17 00:00:00 2001 From: Jonas Ha Date: Fri, 17 Apr 2026 10:14:59 -0400 Subject: [PATCH 07/12] chore(ci): enhance PR title validation and release-drafter rules - Added `revert` as an allowed type in both PR validation and release-drafter settings. - Enforced lowercase scope validation in `validate-pr-title.yaml`. - Updated `release-drafter.yml` to correctly handle `revert` type and breaking changes. - Improved label handling for better changelog categorization. --- .github/release-drafter.yml | 8 +++++++- .github/workflows/validate-pr-title.yaml | 5 ++++- 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/.github/release-drafter.yml b/.github/release-drafter.yml index 46004b04..66183668 100644 --- a/.github/release-drafter.yml +++ b/.github/release-drafter.yml @@ -23,9 +23,12 @@ autolabeler: - label: 'type: ci' title: - '/^ci(\([^)]*\))?:/i' + - label: 'type: revert' + title: + - '/^revert(\([^)]*\))?:/i' - label: 'breaking-change' title: - - '/^(feat|fix|docs|refactor|test|chore|ci)(\([^)]*\))?!:/i' + - '/^(feat|fix|docs|refactor|test|chore|ci|revert)(\([^)]*\))?!:/i' categories: - title: '๐Ÿš€ Features' @@ -47,6 +50,7 @@ categories: labels: - 'type: chore' - 'type: ci' + - 'type: revert' - title: 'โš ๏ธ Breaking Changes' labels: - 'breaking-change' @@ -66,6 +70,7 @@ version-resolver: - 'type: test' - 'type: chore' - 'type: ci' + - 'type: revert' default: patch template: | @@ -85,6 +90,7 @@ include-labels: - 'type: test' - 'type: chore' - 'type: ci' + - 'type: revert' - 'breaking-change' exclude-labels: diff --git a/.github/workflows/validate-pr-title.yaml b/.github/workflows/validate-pr-title.yaml index c42cf579..4ecc0a64 100644 --- a/.github/workflows/validate-pr-title.yaml +++ b/.github/workflows/validate-pr-title.yaml @@ -33,6 +33,9 @@ jobs: test chore ci + revert requireScope: false - subjectPattern: ^(?![A-Z]).+$ + subjectPattern: ^[a-z].*$ subjectPatternError: Subject must start with lowercase letter + scopePattern: ^[a-z0-9-]+$ + scopePatternError: Scope must be lowercase (letters, numbers, hyphens) From a5cbd15e8fbf29667dda406f7a42a8a02a706e75 Mon Sep 17 00:00:00 2001 From: Jonas Ha Date: Fri, 17 Apr 2026 10:26:30 -0400 Subject: [PATCH 08/12] chore(tasks): add setup task for git commit hooks - Introduced `setup-git-hooks` task in `LocalDevTasks.yml`. - Task installs Husky commit hooks using `npm install` and `npm run prepare`. - Includes descriptive messages for setup progress. --- tasks/LocalDevTasks.yml | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/tasks/LocalDevTasks.yml b/tasks/LocalDevTasks.yml index ea6a1a03..26150a19 100644 --- a/tasks/LocalDevTasks.yml +++ b/tasks/LocalDevTasks.yml @@ -26,6 +26,15 @@ tasks: - dotnet tool restore - echo "โœ… Tools restored" + setup-git-hooks: + desc: Install git commit hooks with Husky + silent: true + cmds: + - echo "๐Ÿช Setting up git commit hooks" + - npm install + - npm run prepare + - echo "โœ… Git commit hooks are ready" + clean-all: desc: Clean all build artifacts and packages silent: true @@ -54,4 +63,4 @@ tasks: silent: true cmds: - uv sync - - uv run mkdocs serve --livereload \ No newline at end of file + - uv run mkdocs serve --livereload From 0af8f5b527028a4776afa1c5a8b7c717c183a4cf Mon Sep 17 00:00:00 2001 From: Jonas Ha Date: Fri, 17 Apr 2026 10:26:55 -0400 Subject: [PATCH 09/12] chore(docs): update contributing guide for git hooks setup - Added instructions to run `task local:setup-git-hooks` for commit message validation. - Ensures contributors properly configure Husky hooks for consistent commit practices. --- CONTRIBUTING.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 482713cd..9aa01d71 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -57,6 +57,9 @@ We are committed to providing a welcoming and inclusive environment for all cont # Install Node dependencies (commitlint & husky for commit validation) npm install +# Set up git commit hooks (commit-msg validation) +task local:setup-git-hooks + # Restore dependencies dotnet restore From a37822409c34c7c02c0e250fbea79337af32be69 Mon Sep 17 00:00:00 2001 From: Jonas Ha Date: Fri, 17 Apr 2026 10:33:50 -0400 Subject: [PATCH 10/12] chore(repo): remove git-workflow skill and related documentation - Deleted all files under `.agents/skills/git-workflow`, including docs, examples, shared references, and templates. - Removed `skills-lock.json` entry referencing the `git-workflow` skill. - Cleaned up repository by removing unused skill implementation and dependencies. --- .agents/skills/git-workflow/SKILL.md | 53 -------- .agents/skills/git-workflow/docs/branch.md | 63 --------- .agents/skills/git-workflow/docs/commit.md | 47 ------- .agents/skills/git-workflow/docs/pr.md | 123 ------------------ .../git-workflow/examples/ci-example.md | 17 --- .../git-workflow/examples/feature-example.md | 52 -------- .../git-workflow/examples/fix-example.md | 17 --- .../git-workflow/shared/conventional-types.md | 36 ----- .../shared/file-inclusion-policy.md | 56 -------- .../git-workflow/shared/safety-rules.md | 13 -- .../git-workflow/shared/scope-detection.md | 20 --- .../templates/pull-request-template.md | 54 -------- .../templates/release-notes-template.md | 17 --- skills-lock.json | 10 -- 14 files changed, 578 deletions(-) delete mode 100644 .agents/skills/git-workflow/SKILL.md delete mode 100644 .agents/skills/git-workflow/docs/branch.md delete mode 100644 .agents/skills/git-workflow/docs/commit.md delete mode 100644 .agents/skills/git-workflow/docs/pr.md delete mode 100644 .agents/skills/git-workflow/examples/ci-example.md delete mode 100644 .agents/skills/git-workflow/examples/feature-example.md delete mode 100644 .agents/skills/git-workflow/examples/fix-example.md delete mode 100644 .agents/skills/git-workflow/shared/conventional-types.md delete mode 100644 .agents/skills/git-workflow/shared/file-inclusion-policy.md delete mode 100644 .agents/skills/git-workflow/shared/safety-rules.md delete mode 100644 .agents/skills/git-workflow/shared/scope-detection.md delete mode 100644 .agents/skills/git-workflow/templates/pull-request-template.md delete mode 100644 .agents/skills/git-workflow/templates/release-notes-template.md delete mode 100644 skills-lock.json diff --git a/.agents/skills/git-workflow/SKILL.md b/.agents/skills/git-workflow/SKILL.md deleted file mode 100644 index 8c1db881..00000000 --- a/.agents/skills/git-workflow/SKILL.md +++ /dev/null @@ -1,53 +0,0 @@ ---- -name: git-workflow -description: >- - Git workflow automation for committing, branching, and opening pull requests. - Use this whenever the user asks to commit their work, create a branch, or - create/open/draft a PR. ---- - -# Git Workflow - -Use this skill whenever the user asks to: - -- commit these changes -- create a commit -- save my work -- stage and commit -- commit current work -- create a branch -- start a feature branch -- make a branch for this work -- start working on a change -- create a PR -- open a PR -- draft a PR -- prepare a pull request -- commit and open a PR -- create a branch and PR -- submit the current work - -______________________________________________________________________ - -## Shared references - -Before executing any workflow, load all four shared references: - -- [Scope Detection](shared/scope-detection.md) -- [File Inclusion Policy](shared/file-inclusion-policy.md) -- [Safety Rules](shared/safety-rules.md) -- [Conventional Types](shared/conventional-types.md) - -______________________________________________________________________ - -## Intent routing - -Based on the user's request, load exactly one workflow doc: - -| User intent | Load | -| ----------------------------------------------- | -------------------------------- | -| Commit work, save changes, stage and commit | [docs/commit.md](docs/commit.md) | -| Create a branch, start a feature branch | [docs/branch.md](docs/branch.md) | -| Create/open/draft a PR, submit the current work | [docs/pr.md](docs/pr.md) | - -When intent is ambiguous, prefer the more complete workflow. If the user says "commit and open a PR", load `docs/pr.md` โ€” it covers the full lifecycle including commit and branch. diff --git a/.agents/skills/git-workflow/docs/branch.md b/.agents/skills/git-workflow/docs/branch.md deleted file mode 100644 index 77641a69..00000000 --- a/.agents/skills/git-workflow/docs/branch.md +++ /dev/null @@ -1,63 +0,0 @@ -# Branch Workflow - -## Shared references - -Load before executing: - -- [Scope Detection](../shared/scope-detection.md) -- [Conventional Types](../shared/conventional-types.md) -- [Safety Rules](../shared/safety-rules.md) - -______________________________________________________________________ - -## Goal - -Create a properly named branch for the current work based on inferred change intent, then switch to it. - -## Branch naming format - -``` -/- -``` - -If no scope applies: - -``` -/ -``` - -Rules: - -- lowercase only -- hyphen-separated -- concise and descriptive -- remove punctuation - -Examples: - -- `feat/core-add-pr-automation` -- `fix/github-handle-detached-head` -- `docs/update-readme` -- `ci/github-improve-release-workflow` - -## Workflow - -1. Inspect repository status and changed files -2. Infer change type (see [Conventional Types](../shared/conventional-types.md)) -3. Infer optional scope (see [Scope Detection](../shared/scope-detection.md)) -4. Generate branch name -5. Create the branch -6. Switch to the branch - -## Branch-specific safety - -If a branch with the same name already exists, append a short numeric suffix (e.g. `-2`) rather than overwriting it. - -See also [Safety Rules](../shared/safety-rules.md) for general constraints. - -## Output - -Report: - -- branch name created -- branch switched to diff --git a/.agents/skills/git-workflow/docs/commit.md b/.agents/skills/git-workflow/docs/commit.md deleted file mode 100644 index 07785f7c..00000000 --- a/.agents/skills/git-workflow/docs/commit.md +++ /dev/null @@ -1,47 +0,0 @@ -# Commit Workflow - -## Shared references - -Load before executing: - -- [Scope Detection](../shared/scope-detection.md) -- [File Inclusion Policy](../shared/file-inclusion-policy.md) -- [Safety Rules](../shared/safety-rules.md) -- [Conventional Types](../shared/conventional-types.md) - -______________________________________________________________________ - -## Goal - -Create a commit representing the user's current working changes using a conventional commit format. - -## Commit format - -``` -[optional scope]: - -[optional body] - -[optional footer(s)] -``` - -The description must immediately follow the colon and space. Scope is wrapped in parentheses when present: `feat(parser): add CSV support`. - -For breaking changes, append `!` after the type/scope and/or include a `BREAKING CHANGE:` footer. See [Conventional Types](../shared/conventional-types.md) for details. - -## Workflow - -1. Inspect repository status -2. Identify all modified files -3. Stage all user-modified files (see [File Inclusion Policy](../shared/file-inclusion-policy.md)) -4. Exclude only obvious junk artifacts -5. Infer `` and `` (see [Conventional Types](../shared/conventional-types.md) and [Scope Detection](../shared/scope-detection.md)) -6. Generate and create the commit - -## Output - -Report: - -- commit message used -- files committed -- any files excluded and why diff --git a/.agents/skills/git-workflow/docs/pr.md b/.agents/skills/git-workflow/docs/pr.md deleted file mode 100644 index a88e3416..00000000 --- a/.agents/skills/git-workflow/docs/pr.md +++ /dev/null @@ -1,123 +0,0 @@ -# PR Workflow - -## Shared references - -Load before executing: - -- [Scope Detection](../shared/scope-detection.md) -- [File Inclusion Policy](../shared/file-inclusion-policy.md) -- [Safety Rules](../shared/safety-rules.md) -- [Conventional Types](../shared/conventional-types.md) - -______________________________________________________________________ - -## Goal - -Prepare the current work for review and create a pull request that includes: - -- a correctly named branch -- a conventional commit message -- a PR title following the required format -- a reviewable PR body that explains what changed, why, validation, and risk - -Template location: `../templates/pull-request-template.md` - -______________________________________________________________________ - -## PR title format - -``` -[optional scope]: -``` - -For breaking changes, append `!` after the type/scope: `feat(api)!: remove deprecated endpoint` - -Example: `feat(core): add automated PR workflow` - -______________________________________________________________________ - -## Branch rules - -Create a new branch if: - -- the current branch is `main` -- the repository is in detached `HEAD` - -If already on a feature branch, use the current branch. - -Branch naming follows `/-` (or `/` when no scope applies). See [Branch Workflow](branch.md) for full naming rules. - -______________________________________________________________________ - -## Execution flow - -### 1 โ€” Inspect repository - -Determine: current branch, whether HEAD is detached, git status, modified files, diff summary, and commit history against the base branch. - -### 2 โ€” Infer metadata - -Determine: PR type, optional scope, short description, PR title, branch name. - -### 3 โ€” Prepare branch - -If on `main` or detached `HEAD`, create a new branch and switch to it. Otherwise stay on the current branch. - -### 4 โ€” Commit work - -Stage all user-modified files per [File Inclusion Policy](../shared/file-inclusion-policy.md). Exclude only obvious junk. Create commit. Skip if nothing to commit. - -### 5 โ€” Push branch - -Push to origin. Set upstream if necessary. - -### 6 โ€” Generate PR body - -Load `../templates/pull-request-template.md` and adapt it to the actual change. - -Treat the template as a default outline, not a rigid contract. Prioritize reviewer scanability and signal quality over filling every heading. - -Required information: - -- what changed -- why it changed -- how it was validated - -Default outline (adapt as needed): - -- Summary - 2-4 sentences covering what changed and why -- Changes - grouped in the way that makes the diff easiest to review (for example by concern, subsystem, workflow, or user impact) -- Validation - concrete tests, manual verification, and confidence signals -- Breaking Changes - include only when applicable -- Related Issues - include only when applicable; do not invent issue numbers -- Release Notes - include only for user-visible or package-relevant changes -- Notes for Reviewers - include when review guidance, risks, tradeoffs, follow-up context, or requested feedback focus would help; for UI changes, include screenshots/video links when useful - -Review mode: - -- open as draft when implementation is incomplete, checks are pending, or early feedback is requested -- when draft, state what is incomplete and what feedback is being requested - -Rules: - -- omit empty sections entirely (do not include `N/A`, `None`, or `No related issues`) -- prefer fewer, high-signal sections over boilerplate -- use backticks for identifiers, commands, files, and code terms -- keep the Summary concise and focused on intent, not file-by-file trivia - -### 7 โ€” Create PR - -Create the pull request using the generated title and body, as draft or ready-for-review based on the review mode rules above. - -______________________________________________________________________ - -## Output - -Report: - -- branch name and whether it was created -- commit message and whether a commit was created -- PR title -- PR body -- any files excluded and why -- any assumptions or blockers diff --git a/.agents/skills/git-workflow/examples/ci-example.md b/.agents/skills/git-workflow/examples/ci-example.md deleted file mode 100644 index cf033520..00000000 --- a/.agents/skills/git-workflow/examples/ci-example.md +++ /dev/null @@ -1,17 +0,0 @@ -# Example: CI PR - -## Scenario - -Current work updates GitHub Actions and release automation for NuGet publishing. - -## Expected branch - -`ci/github-improve-nuget-release-workflow` - -## Expected commit - -`ci(github): improve NuGet release workflow` - -## Expected PR title - -`ci(github): improve NuGet release workflow` diff --git a/.agents/skills/git-workflow/examples/feature-example.md b/.agents/skills/git-workflow/examples/feature-example.md deleted file mode 100644 index 1cd8a990..00000000 --- a/.agents/skills/git-workflow/examples/feature-example.md +++ /dev/null @@ -1,52 +0,0 @@ -# Example: Feature PR - -## Scenario - -Current work adds automatic PR template loading and branch creation when running from `main`. - -## Expected branch - -`feat/core-automate-pr-workflow` - -## Expected commit - -`feat(core): automate PR workflow from main` - -## Expected PR title - -`feat(core): automate PR workflow from main` - -## Example PR body - -# ๐Ÿš€ Pull Request - -## ๐Ÿ“‹ Summary - -> Adds automation for branch preparation and PR generation when opening a pull request from the current repository state. This removes manual branch setup when starting from `main` and keeps PR metadata generation consistent with inferred change intent. - -______________________________________________________________________ - -## ๐Ÿ“ Changes - -- Branch preparation flow - - Detects `main` and detached `HEAD` before PR creation - - Creates and switches to a generated branch only when needed -- Metadata and PR drafting - - Infers PR metadata (`type`, optional `scope`, short description) - - Loads the local PR template and builds the PR body from current repository state -- Workflow consistency - - Reuses shared scope and inclusion policy logic so commit and PR behavior stay aligned - -______________________________________________________________________ - -## ๐Ÿงช Validation - -- Build/test status: Not explicitly verified by the agent -- Manual verification performed: Reviewed repository status, branch behavior, and generated PR content paths -- Edge cases checked: Existing feature branch path and detached `HEAD` path - -______________________________________________________________________ - -## ๐Ÿ’ฌ Notes for Reviewers - -> Please focus on branch creation guardrails and metadata inference fallbacks, especially when repository state is ambiguous. diff --git a/.agents/skills/git-workflow/examples/fix-example.md b/.agents/skills/git-workflow/examples/fix-example.md deleted file mode 100644 index 1586ac13..00000000 --- a/.agents/skills/git-workflow/examples/fix-example.md +++ /dev/null @@ -1,17 +0,0 @@ -# Example: Fix PR - -## Scenario - -Current work fixes a bug in GitHub workflow handling for detached HEAD repositories. - -## Expected branch - -`fix/github-handle-detached-head` - -## Expected commit - -`fix(github): handle detached HEAD when opening PRs` - -## Expected PR title - -`fix(github): handle detached HEAD when opening PRs` diff --git a/.agents/skills/git-workflow/shared/conventional-types.md b/.agents/skills/git-workflow/shared/conventional-types.md deleted file mode 100644 index e1d40033..00000000 --- a/.agents/skills/git-workflow/shared/conventional-types.md +++ /dev/null @@ -1,36 +0,0 @@ -# Conventional Types - -Valid `` values: - -| Type | Description | SemVer impact | -| ---------- | ----------------------------------------------------------------- | ------------- | -| `feat` | Introduces a new feature | MINOR | -| `fix` | Patches a bug | PATCH | -| `build` | Changes to the build system or external dependencies | โ€” | -| `chore` | Maintenance tasks not modifying src or test files | โ€” | -| `ci` | Changes to CI/CD configuration or scripts | โ€” | -| `docs` | Documentation changes only | โ€” | -| `perf` | A code change that improves performance | โ€” | -| `refactor` | A code change that neither fixes a bug nor adds a feature | โ€” | -| `style` | Changes that do not affect meaning (whitespace, formatting, etc.) | โ€” | -| `test` | Adding or updating tests | โ€” | - -## Breaking changes - -A breaking change correlates with MAJOR in SemVer. Mark it in one of two ways: - -**Append `!` after the type/scope:** - -``` -feat(api)!: remove deprecated endpoint -``` - -**Or include a `BREAKING CHANGE:` footer:** - -``` -feat(api): remove deprecated endpoint - -BREAKING CHANGE: The /v1/users endpoint has been removed. Use /v2/users instead. -``` - -Both forms may be combined. diff --git a/.agents/skills/git-workflow/shared/file-inclusion-policy.md b/.agents/skills/git-workflow/shared/file-inclusion-policy.md deleted file mode 100644 index dd60bfe6..00000000 --- a/.agents/skills/git-workflow/shared/file-inclusion-policy.md +++ /dev/null @@ -1,56 +0,0 @@ -# File Inclusion Policy - -Treat the working tree as the user's intent. - -## Default behavior - -Include **all user-modified files** in the commit: - -- modified files -- staged files -- unstaged files -- untracked files -- deleted files - -If the user changed a file, assume the change is intentional. - -Do **not** exclude files merely because they appear unrelated to the inferred task. - -## Allowed automatic exclusions - -Files may only be excluded if they are clearly not intended for source control: - -- `.DS_Store` -- editor swap files -- temporary files -- build output folders -- cache folders -- machine-local configuration files -- secret files that should never be committed - -Example patterns: - -``` -.DS_Store -*.swp -*.tmp -bin/ -obj/ -node_modules/ -.vscode/* -``` - -## Ambiguity rule - -If there is **any uncertainty** about whether a file should be committed: - -**Include the file.** - -Never silently omit a user-modified file. - -## Transparency rule - -If any files are excluded automatically, explicitly report: - -- which files were excluded -- the reason they were excluded diff --git a/.agents/skills/git-workflow/shared/safety-rules.md b/.agents/skills/git-workflow/shared/safety-rules.md deleted file mode 100644 index 7ba692f5..00000000 --- a/.agents/skills/git-workflow/shared/safety-rules.md +++ /dev/null @@ -1,13 +0,0 @@ -# Safety Rules - -Never: - -- rewrite history -- force push -- silently omit user-modified files -- invent issue numbers -- fabricate test results -- mark checklist items complete without evidence -- overwrite existing branches without confirmation - -If the repository state is ambiguous, choose the safest non-destructive option. diff --git a/.agents/skills/git-workflow/shared/scope-detection.md b/.agents/skills/git-workflow/shared/scope-detection.md deleted file mode 100644 index 95df6d0a..00000000 --- a/.agents/skills/git-workflow/shared/scope-detection.md +++ /dev/null @@ -1,20 +0,0 @@ -# Scope Detection - -Infer scope from the folder containing the majority of the changes. - -| Folder | Scope | -| ----------------------------- | ------------------- | -| `.github/workflows` | `github` | -| `src/Core` | `core` | -| `src/Abstractions` | `abstractions` | -| `src/SourceGenerators` | `source-generators` | -| `src/OpenTelemetry` | `opentelemetry` | -| `tests` | `tests` | -| `test` | `testing` | -| `docs` | `docs` | -| `build` | `build` | -| dependency or package updates | `deps` | - -If multiple folders are involved, prioritize the **primary concern of the change**. - -If no mapping clearly applies, omit the scope. diff --git a/.agents/skills/git-workflow/templates/pull-request-template.md b/.agents/skills/git-workflow/templates/pull-request-template.md deleted file mode 100644 index dbbb7cf2..00000000 --- a/.agents/skills/git-workflow/templates/pull-request-template.md +++ /dev/null @@ -1,54 +0,0 @@ -# ๐Ÿš€ Pull Request - -## ๐Ÿ“‹ Summary - -> 2-4 sentences: what changed, why it changed, and the expected outcome. - -______________________________________________________________________ - -## ๐Ÿ“ Changes - - - - - -______________________________________________________________________ - -## ๐Ÿงช Validation - - - -- Build/test status: -- Manual verification performed: -- Edge cases checked: - -______________________________________________________________________ - -## โš ๏ธ Breaking Changes (Optional) - - - -- What changed: -- Previous behavior: -- New behavior: -- Migration/action needed: - -______________________________________________________________________ - -## ๐Ÿงฉ Related Issues (Optional) - - - - - -______________________________________________________________________ - -## ๐Ÿ“ฆ Release Notes (Optional) - - - -______________________________________________________________________ - -## ๐Ÿ’ฌ Notes for Reviewers (Optional) - - diff --git a/.agents/skills/git-workflow/templates/release-notes-template.md b/.agents/skills/git-workflow/templates/release-notes-template.md deleted file mode 100644 index c37c9c25..00000000 --- a/.agents/skills/git-workflow/templates/release-notes-template.md +++ /dev/null @@ -1,17 +0,0 @@ -## Release Notes - -### Added - -- - -### Changed - -- - -### Fixed - -- - -### Internal - -- diff --git a/skills-lock.json b/skills-lock.json deleted file mode 100644 index 9d98ce1c..00000000 --- a/skills-lock.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "version": 1, - "skills": { - "git-workflow": { - "source": "LayeredCraft/skills", - "sourceType": "github", - "computedHash": "fbd78cda46da7d8753beca0d68ce6532589daa4da0a457aa709fe1e11da468fe" - } - } -} From 0d36c1eec7e9a1bf3ad3b8c6d66d835c41cc8be8 Mon Sep 17 00:00:00 2001 From: Jonas Ha Date: Fri, 17 Apr 2026 10:41:20 -0400 Subject: [PATCH 11/12] feat(git-workflow): add comprehensive Git workflow automation skill - Introduced `git-workflow` skill for automating branching, committing, and creating pull requests. - Included detailed documentation covering workflows for branching, committing, and pull request creation: - `docs/branch.md` - `docs/commit.md` - `docs/pr.md` - Added shared references for scope detection, conventional commit types, and safety rules: - `shared/scope-detection.md` - `shared/conventional-types.md` - `shared/safety-rules.md` - --- .agents/skills/git-workflow/SKILL.md | 54 +++++++ .agents/skills/git-workflow/docs/branch.md | 65 +++++++++ .agents/skills/git-workflow/docs/commit.md | 50 +++++++ .agents/skills/git-workflow/docs/pr.md | 132 ++++++++++++++++++ .../git-workflow/examples/ci-example.md | 17 +++ .../git-workflow/examples/feature-example.md | 56 ++++++++ .../git-workflow/examples/fix-example.md | 17 +++ .../git-workflow/shared/conventional-types.md | 36 +++++ .../shared/file-inclusion-policy.md | 56 ++++++++ .../git-workflow/shared/safety-rules.md | 13 ++ .../git-workflow/shared/scope-detection.md | 20 +++ .../templates/pull-request-template.md | 54 +++++++ .../templates/release-notes-template.md | 17 +++ skills-lock.json | 10 ++ 14 files changed, 597 insertions(+) create mode 100644 .agents/skills/git-workflow/SKILL.md create mode 100644 .agents/skills/git-workflow/docs/branch.md create mode 100644 .agents/skills/git-workflow/docs/commit.md create mode 100644 .agents/skills/git-workflow/docs/pr.md create mode 100644 .agents/skills/git-workflow/examples/ci-example.md create mode 100644 .agents/skills/git-workflow/examples/feature-example.md create mode 100644 .agents/skills/git-workflow/examples/fix-example.md create mode 100644 .agents/skills/git-workflow/shared/conventional-types.md create mode 100644 .agents/skills/git-workflow/shared/file-inclusion-policy.md create mode 100644 .agents/skills/git-workflow/shared/safety-rules.md create mode 100644 .agents/skills/git-workflow/shared/scope-detection.md create mode 100644 .agents/skills/git-workflow/templates/pull-request-template.md create mode 100644 .agents/skills/git-workflow/templates/release-notes-template.md create mode 100644 skills-lock.json diff --git a/.agents/skills/git-workflow/SKILL.md b/.agents/skills/git-workflow/SKILL.md new file mode 100644 index 00000000..19478689 --- /dev/null +++ b/.agents/skills/git-workflow/SKILL.md @@ -0,0 +1,54 @@ +--- +name: git-workflow +description: >- + Git workflow automation for committing, branching, and opening pull requests. + Use this whenever the user asks to commit their work, create a branch, or + create/open/draft a PR. +--- + +# Git Workflow + +Use this skill whenever the user asks to: + +- commit these changes +- create a commit +- save my work +- stage and commit +- commit current work +- create a branch +- start a feature branch +- make a branch for this work +- start working on a change +- create a PR +- open a PR +- draft a PR +- prepare a pull request +- commit and open a PR +- create a branch and PR +- submit the current work + +______________________________________________________________________ + +## Shared references + +Before executing any workflow, load all four shared references: + +- [Scope Detection](shared/scope-detection.md) +- [File Inclusion Policy](shared/file-inclusion-policy.md) +- [Safety Rules](shared/safety-rules.md) +- [Conventional Types](shared/conventional-types.md) + +______________________________________________________________________ + +## Intent routing + +Based on the user's request, load exactly one workflow doc: + +| User intent | Load | +|-------------------------------------------------|----------------------------------| +| Commit work, save changes, stage and commit | [docs/commit.md](docs/commit.md) | +| Create a branch, start a feature branch | [docs/branch.md](docs/branch.md) | +| Create/open/draft a PR, submit the current work | [docs/pr.md](docs/pr.md) | + +When intent is ambiguous, prefer the more complete workflow. If the user says "commit and open a +PR", load `docs/pr.md` โ€” it covers the full lifecycle including commit and branch. diff --git a/.agents/skills/git-workflow/docs/branch.md b/.agents/skills/git-workflow/docs/branch.md new file mode 100644 index 00000000..149f1d68 --- /dev/null +++ b/.agents/skills/git-workflow/docs/branch.md @@ -0,0 +1,65 @@ +# Branch Workflow + +## Shared references + +Load before executing: + +- [Scope Detection](../shared/scope-detection.md) +- [Conventional Types](../shared/conventional-types.md) +- [Safety Rules](../shared/safety-rules.md) + +______________________________________________________________________ + +## Goal + +Create a properly named branch for the current work based on inferred change intent, then switch to +it. + +## Branch naming format + +``` +/- +``` + +If no scope applies: + +``` +/ +``` + +Rules: + +- lowercase only +- hyphen-separated +- concise and descriptive +- remove punctuation + +Examples: + +- `feat/core-add-pr-automation` +- `fix/github-handle-detached-head` +- `docs/update-readme` +- `ci/github-improve-release-workflow` + +## Workflow + +1. Inspect repository status and changed files +2. Infer change type (see [Conventional Types](../shared/conventional-types.md)) +3. Infer optional scope (see [Scope Detection](../shared/scope-detection.md)) +4. Generate branch name +5. Create the branch +6. Switch to the branch + +## Branch-specific safety + +If a branch with the same name already exists, append a short numeric suffix (e.g. `-2`) rather than +overwriting it. + +See also [Safety Rules](../shared/safety-rules.md) for general constraints. + +## Output + +Report: + +- branch name created +- branch switched to diff --git a/.agents/skills/git-workflow/docs/commit.md b/.agents/skills/git-workflow/docs/commit.md new file mode 100644 index 00000000..7685161d --- /dev/null +++ b/.agents/skills/git-workflow/docs/commit.md @@ -0,0 +1,50 @@ +# Commit Workflow + +## Shared references + +Load before executing: + +- [Scope Detection](../shared/scope-detection.md) +- [File Inclusion Policy](../shared/file-inclusion-policy.md) +- [Safety Rules](../shared/safety-rules.md) +- [Conventional Types](../shared/conventional-types.md) + +______________________________________________________________________ + +## Goal + +Create a commit representing the user's current working changes using a conventional commit format. + +## Commit format + +``` +[optional scope]: + +[optional body] + +[optional footer(s)] +``` + +The description must immediately follow the colon and space. Scope is wrapped in parentheses when +present: `feat(parser): add CSV support`. + +For breaking changes, append `!` after the type/scope and/or include a `BREAKING CHANGE:` footer. +See [Conventional Types](../shared/conventional-types.md) for details. + +## Workflow + +1. Inspect repository status +2. Identify all modified files +3. Stage all user-modified files (see [File Inclusion Policy](../shared/file-inclusion-policy.md)) +4. Exclude only obvious junk artifacts +5. Infer `` and `` (see [Conventional Types](../shared/conventional-types.md) + and [Scope Detection](../shared/scope-detection.md)) +6. Generate and create the commit + +## Output + +Report: + +- commit message used +- files committed +- any files excluded and why diff --git a/.agents/skills/git-workflow/docs/pr.md b/.agents/skills/git-workflow/docs/pr.md new file mode 100644 index 00000000..142d3970 --- /dev/null +++ b/.agents/skills/git-workflow/docs/pr.md @@ -0,0 +1,132 @@ +# PR Workflow + +## Shared references + +Load before executing: + +- [Scope Detection](../shared/scope-detection.md) +- [File Inclusion Policy](../shared/file-inclusion-policy.md) +- [Safety Rules](../shared/safety-rules.md) +- [Conventional Types](../shared/conventional-types.md) + +______________________________________________________________________ + +## Goal + +Prepare the current work for review and create a pull request that includes: + +- a correctly named branch +- a conventional commit message +- a PR title following the required format +- a reviewable PR body that explains what changed, why, validation, and risk + +Template location: `../templates/pull-request-template.md` + +______________________________________________________________________ + +## PR title format + +``` +[optional scope]: +``` + +For breaking changes, append `!` after the type/scope: `feat(api)!: remove deprecated endpoint` + +Example: `feat(core): add automated PR workflow` + +______________________________________________________________________ + +## Branch rules + +Create a new branch if: + +- the current branch is `main` +- the repository is in detached `HEAD` + +If already on a feature branch, use the current branch. + +Branch naming follows `/-` (or `/` when no +scope applies). See [Branch Workflow](branch.md) for full naming rules. + +______________________________________________________________________ + +## Execution flow + +### 1 โ€” Inspect repository + +Determine: current branch, whether HEAD is detached, git status, modified files, diff summary, and +commit history against the base branch. + +### 2 โ€” Infer metadata + +Determine: PR type, optional scope, short description, PR title, branch name. + +### 3 โ€” Prepare branch + +If on `main` or detached `HEAD`, create a new branch and switch to it. Otherwise stay on the current +branch. + +### 4 โ€” Commit work + +Stage all user-modified files per [File Inclusion Policy](../shared/file-inclusion-policy.md). +Exclude only obvious junk. Create commit. Skip if nothing to commit. + +### 5 โ€” Push branch + +Push to origin. Set upstream if necessary. + +### 6 โ€” Generate PR body + +Load `../templates/pull-request-template.md` and adapt it to the actual change. + +Treat the template as a default outline, not a rigid contract. Prioritize reviewer scanability and +signal quality over filling every heading. + +Required information: + +- what changed +- why it changed +- how it was validated + +Default outline (adapt as needed): + +- Summary - 2-4 sentences covering what changed and why +- Changes - grouped in the way that makes the diff easiest to review (for example by concern, + subsystem, workflow, or user impact) +- Validation - concrete tests, manual verification, and confidence signals +- Breaking Changes - include only when applicable +- Related Issues - include only when applicable; do not invent issue numbers +- Release Notes - include only for user-visible or package-relevant changes +- Notes for Reviewers - include when review guidance, risks, tradeoffs, follow-up context, or + requested feedback focus would help; for UI changes, include screenshots/video links when useful + +Review mode: + +- open as draft when implementation is incomplete, checks are pending, or early feedback is + requested +- when draft, state what is incomplete and what feedback is being requested + +Rules: + +- omit empty sections entirely (do not include `N/A`, `None`, or `No related issues`) +- prefer fewer, high-signal sections over boilerplate +- use backticks for identifiers, commands, files, and code terms +- keep the Summary concise and focused on intent, not file-by-file trivia + +### 7 โ€” Create PR + +Create the pull request using the generated title and body, as draft or ready-for-review based on +the review mode rules above. + +______________________________________________________________________ + +## Output + +Report: + +- branch name and whether it was created +- commit message and whether a commit was created +- PR title +- PR body +- any files excluded and why +- any assumptions or blockers diff --git a/.agents/skills/git-workflow/examples/ci-example.md b/.agents/skills/git-workflow/examples/ci-example.md new file mode 100644 index 00000000..cf033520 --- /dev/null +++ b/.agents/skills/git-workflow/examples/ci-example.md @@ -0,0 +1,17 @@ +# Example: CI PR + +## Scenario + +Current work updates GitHub Actions and release automation for NuGet publishing. + +## Expected branch + +`ci/github-improve-nuget-release-workflow` + +## Expected commit + +`ci(github): improve NuGet release workflow` + +## Expected PR title + +`ci(github): improve NuGet release workflow` diff --git a/.agents/skills/git-workflow/examples/feature-example.md b/.agents/skills/git-workflow/examples/feature-example.md new file mode 100644 index 00000000..29ebe879 --- /dev/null +++ b/.agents/skills/git-workflow/examples/feature-example.md @@ -0,0 +1,56 @@ +# Example: Feature PR + +## Scenario + +Current work adds automatic PR template loading and branch creation when running from `main`. + +## Expected branch + +`feat/core-automate-pr-workflow` + +## Expected commit + +`feat(core): automate PR workflow from main` + +## Expected PR title + +`feat(core): automate PR workflow from main` + +## Example PR body + +# ๐Ÿš€ Pull Request + +## ๐Ÿ“‹ Summary + +> Adds automation for branch preparation and PR generation when opening a pull request from the +> current repository state. This removes manual branch setup when starting from `main` and keeps PR +> metadata generation consistent with inferred change intent. + +______________________________________________________________________ + +## ๐Ÿ“ Changes + +- Branch preparation flow + - Detects `main` and detached `HEAD` before PR creation + - Creates and switches to a generated branch only when needed +- Metadata and PR drafting + - Infers PR metadata (`type`, optional `scope`, short description) + - Loads the local PR template and builds the PR body from current repository state +- Workflow consistency + - Reuses shared scope and inclusion policy logic so commit and PR behavior stay aligned + +______________________________________________________________________ + +## ๐Ÿงช Validation + +- Build/test status: Not explicitly verified by the agent +- Manual verification performed: Reviewed repository status, branch behavior, and generated PR + content paths +- Edge cases checked: Existing feature branch path and detached `HEAD` path + +______________________________________________________________________ + +## ๐Ÿ’ฌ Notes for Reviewers + +> Please focus on branch creation guardrails and metadata inference fallbacks, especially when +> repository state is ambiguous. diff --git a/.agents/skills/git-workflow/examples/fix-example.md b/.agents/skills/git-workflow/examples/fix-example.md new file mode 100644 index 00000000..1586ac13 --- /dev/null +++ b/.agents/skills/git-workflow/examples/fix-example.md @@ -0,0 +1,17 @@ +# Example: Fix PR + +## Scenario + +Current work fixes a bug in GitHub workflow handling for detached HEAD repositories. + +## Expected branch + +`fix/github-handle-detached-head` + +## Expected commit + +`fix(github): handle detached HEAD when opening PRs` + +## Expected PR title + +`fix(github): handle detached HEAD when opening PRs` diff --git a/.agents/skills/git-workflow/shared/conventional-types.md b/.agents/skills/git-workflow/shared/conventional-types.md new file mode 100644 index 00000000..76a0bd25 --- /dev/null +++ b/.agents/skills/git-workflow/shared/conventional-types.md @@ -0,0 +1,36 @@ +# Conventional Types + +Valid `` values: + +| Type | Description | SemVer impact | +|------------|-------------------------------------------------------------------|---------------| +| `feat` | Introduces a new feature | MINOR | +| `fix` | Patches a bug | PATCH | +| `build` | Changes to the build system or external dependencies | โ€” | +| `chore` | Maintenance tasks not modifying src or test files | โ€” | +| `ci` | Changes to CI/CD configuration or scripts | โ€” | +| `docs` | Documentation changes only | โ€” | +| `perf` | A code change that improves performance | โ€” | +| `refactor` | A code change that neither fixes a bug nor adds a feature | โ€” | +| `style` | Changes that do not affect meaning (whitespace, formatting, etc.) | โ€” | +| `test` | Adding or updating tests | โ€” | + +## Breaking changes + +A breaking change correlates with MAJOR in SemVer. Mark it in one of two ways: + +**Append `!` after the type/scope:** + +``` +feat(api)!: remove deprecated endpoint +``` + +**Or include a `BREAKING CHANGE:` footer:** + +``` +feat(api): remove deprecated endpoint + +BREAKING CHANGE: The /v1/users endpoint has been removed. Use /v2/users instead. +``` + +Both forms may be combined. diff --git a/.agents/skills/git-workflow/shared/file-inclusion-policy.md b/.agents/skills/git-workflow/shared/file-inclusion-policy.md new file mode 100644 index 00000000..dd60bfe6 --- /dev/null +++ b/.agents/skills/git-workflow/shared/file-inclusion-policy.md @@ -0,0 +1,56 @@ +# File Inclusion Policy + +Treat the working tree as the user's intent. + +## Default behavior + +Include **all user-modified files** in the commit: + +- modified files +- staged files +- unstaged files +- untracked files +- deleted files + +If the user changed a file, assume the change is intentional. + +Do **not** exclude files merely because they appear unrelated to the inferred task. + +## Allowed automatic exclusions + +Files may only be excluded if they are clearly not intended for source control: + +- `.DS_Store` +- editor swap files +- temporary files +- build output folders +- cache folders +- machine-local configuration files +- secret files that should never be committed + +Example patterns: + +``` +.DS_Store +*.swp +*.tmp +bin/ +obj/ +node_modules/ +.vscode/* +``` + +## Ambiguity rule + +If there is **any uncertainty** about whether a file should be committed: + +**Include the file.** + +Never silently omit a user-modified file. + +## Transparency rule + +If any files are excluded automatically, explicitly report: + +- which files were excluded +- the reason they were excluded diff --git a/.agents/skills/git-workflow/shared/safety-rules.md b/.agents/skills/git-workflow/shared/safety-rules.md new file mode 100644 index 00000000..7ba692f5 --- /dev/null +++ b/.agents/skills/git-workflow/shared/safety-rules.md @@ -0,0 +1,13 @@ +# Safety Rules + +Never: + +- rewrite history +- force push +- silently omit user-modified files +- invent issue numbers +- fabricate test results +- mark checklist items complete without evidence +- overwrite existing branches without confirmation + +If the repository state is ambiguous, choose the safest non-destructive option. diff --git a/.agents/skills/git-workflow/shared/scope-detection.md b/.agents/skills/git-workflow/shared/scope-detection.md new file mode 100644 index 00000000..6bb4c29c --- /dev/null +++ b/.agents/skills/git-workflow/shared/scope-detection.md @@ -0,0 +1,20 @@ +# Scope Detection + +Infer scope from the folder containing the majority of the changes. + +| Folder | Scope | +|-------------------------------|---------------------| +| `.github/workflows` | `github` | +| `src/Core` | `core` | +| `src/Abstractions` | `abstractions` | +| `src/SourceGenerators` | `source-generators` | +| `src/OpenTelemetry` | `opentelemetry` | +| `tests` | `tests` | +| `test` | `testing` | +| `docs` | `docs` | +| `build` | `build` | +| dependency or package updates | `deps` | + +If multiple folders are involved, prioritize the **primary concern of the change**. + +If no mapping clearly applies, omit the scope. diff --git a/.agents/skills/git-workflow/templates/pull-request-template.md b/.agents/skills/git-workflow/templates/pull-request-template.md new file mode 100644 index 00000000..dbbb7cf2 --- /dev/null +++ b/.agents/skills/git-workflow/templates/pull-request-template.md @@ -0,0 +1,54 @@ +# ๐Ÿš€ Pull Request + +## ๐Ÿ“‹ Summary + +> 2-4 sentences: what changed, why it changed, and the expected outcome. + +______________________________________________________________________ + +## ๐Ÿ“ Changes + + + + + +______________________________________________________________________ + +## ๐Ÿงช Validation + + + +- Build/test status: +- Manual verification performed: +- Edge cases checked: + +______________________________________________________________________ + +## โš ๏ธ Breaking Changes (Optional) + + + +- What changed: +- Previous behavior: +- New behavior: +- Migration/action needed: + +______________________________________________________________________ + +## ๐Ÿงฉ Related Issues (Optional) + + + + + +______________________________________________________________________ + +## ๐Ÿ“ฆ Release Notes (Optional) + + + +______________________________________________________________________ + +## ๐Ÿ’ฌ Notes for Reviewers (Optional) + + diff --git a/.agents/skills/git-workflow/templates/release-notes-template.md b/.agents/skills/git-workflow/templates/release-notes-template.md new file mode 100644 index 00000000..c37c9c25 --- /dev/null +++ b/.agents/skills/git-workflow/templates/release-notes-template.md @@ -0,0 +1,17 @@ +## Release Notes + +### Added + +- + +### Changed + +- + +### Fixed + +- + +### Internal + +- diff --git a/skills-lock.json b/skills-lock.json new file mode 100644 index 00000000..9d98ce1c --- /dev/null +++ b/skills-lock.json @@ -0,0 +1,10 @@ +{ + "version": 1, + "skills": { + "git-workflow": { + "source": "LayeredCraft/skills", + "sourceType": "github", + "computedHash": "fbd78cda46da7d8753beca0d68ce6532589daa4da0a457aa709fe1e11da468fe" + } + } +} From 515771fd712a92d402e31d55cbd6762797727879 Mon Sep 17 00:00:00 2001 From: Jonas Ha Date: Fri, 17 Apr 2026 10:43:23 -0400 Subject: [PATCH 12/12] chore(ci): clean up docs workflow indentation and install commands - Fixed spacing for `pull_request.types` in `docs.yaml`. - Removed trailing spaces in multiple steps for consistent formatting. - Simplified `uv sync` command by removing the `--locked` flag. --- .github/workflows/docs.yaml | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/.github/workflows/docs.yaml b/.github/workflows/docs.yaml index 252ecc29..1b0fab4d 100644 --- a/.github/workflows/docs.yaml +++ b/.github/workflows/docs.yaml @@ -10,7 +10,7 @@ on: - 'pyproject.toml' - 'uv.lock' pull_request: - types: [opened, synchronize, reopened, ready_for_review] + types: [ opened, synchronize, reopened, ready_for_review ] branches: [ main ] paths: - 'docs/**' @@ -38,7 +38,7 @@ jobs: uses: actions/checkout@v6 with: fetch-depth: 0 - + - name: Install pngquant run: sudo apt-get update && sudo apt-get install -y pngquant @@ -46,14 +46,14 @@ jobs: uses: actions/setup-python@v6 with: python-version-file: "pyproject.toml" - + - name: Install uv uses: astral-sh/setup-uv@v7 with: enable-cache: true - + - name: Install the project - run: uv sync --locked --all-extras --dev + run: uv sync --all-extras --dev - name: Setup Pages id: pages