diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
new file mode 100644
index 0000000..abfe972
--- /dev/null
+++ b/.github/workflows/ci.yml
@@ -0,0 +1,34 @@
+name: CI
+
+on:
+ push:
+ branches:
+ - master
+ - develop
+ - feature/**
+ pull_request:
+ branches:
+ - master
+ - develop
+
+jobs:
+ build-and-test:
+ runs-on: ubuntu-latest
+
+ steps:
+ - name: Checkout
+ uses: actions/checkout@v4
+
+ - name: Setup .NET 8
+ uses: actions/setup-dotnet@v4
+ with:
+ dotnet-version: 8.0.x
+
+ - name: Restore
+ run: dotnet restore TaskPipeline.sln
+
+ - name: Build
+ run: dotnet build TaskPipeline.sln --configuration Release --no-restore
+
+ - name: Test
+ run: dotnet test TaskPipeline.sln --configuration Release --no-build --verbosity normal
\ No newline at end of file
diff --git a/.github/workflows/publish-nuget.yml b/.github/workflows/publish-nuget.yml
new file mode 100644
index 0000000..873eb3a
--- /dev/null
+++ b/.github/workflows/publish-nuget.yml
@@ -0,0 +1,37 @@
+name: Publish NuGet
+
+on:
+ push:
+ branches:
+ - master
+
+permissions:
+ contents: read
+
+jobs:
+ publish:
+ runs-on: ubuntu-latest
+
+ steps:
+ - name: Checkout
+ uses: actions/checkout@v4
+
+ - name: Setup .NET 8
+ uses: actions/setup-dotnet@v4
+ with:
+ dotnet-version: 8.0.x
+
+ - name: Restore
+ run: dotnet restore TaskPipeline.sln
+
+ - name: Build
+ run: dotnet build TaskPipeline.sln --configuration Release --no-restore
+
+ - name: Test
+ run: dotnet test TaskPipeline.sln --configuration Release --no-build --verbosity normal
+
+ - name: Pack
+ run: dotnet pack src/TaskPipeline/TaskPipeline.csproj --configuration Release --no-build --output ./artifacts
+
+ - name: Publish to NuGet
+ run: dotnet nuget push "./artifacts/*.nupkg" --api-key "${{ secrets.NUGET_API_KEY }}" --source "https://api.nuget.org/v3/index.json" --skip-duplicate
\ No newline at end of file
diff --git a/COMMIT_MESSAGE.txt b/COMMIT_MESSAGE.txt
deleted file mode 100644
index 0256f6c..0000000
--- a/COMMIT_MESSAGE.txt
+++ /dev/null
@@ -1,10 +0,0 @@
-feat: rewrite TaskPipeline as modern cross-platform v2
-
-- migrate library to net8.0 with optional netstandard2.1 support
-- introduce typed async pipeline abstractions and fluent builder
-- add cancellation support and structured execution results
-- replace dictionary-based execution model with ordered step descriptors
-- improve exception handling with step metadata preservation
-- keep legacy pipeline contracts and implementations for compatibility
-- refresh NUnit test suite for both legacy and modern APIs
-- update README with new architecture and roadmap
diff --git a/Jenkinsfile b/Jenkinsfile
deleted file mode 100644
index 2455796..0000000
--- a/Jenkinsfile
+++ /dev/null
@@ -1,12 +0,0 @@
-node {
- stage 'Checkout'
- checkout scm
-
- stage 'Build'
- bat "\"dotnet\" restore \"${workspace}/TaskPipeline.sln\""
- bat "\"dotnet\" build \"${workspace}/TaskPipeline.sln\""
-
- stage 'UnitTests'
- bat returnStatus: true, script: "\"dotnet\" test \"${workspace}/TaskPipeline.sln\" --logger \"trx;LogFileName=unit_tests.xml\" --no-build"
- step([$class: 'MSTestPublisher', testResultsFile:"**/unit_tests.xml", failOnError: true, keepLongStdio: true])
-}
\ No newline at end of file
diff --git a/TaskPipeline.sln.DotSettings.user b/TaskPipeline.sln.DotSettings.user
deleted file mode 100644
index 25495d7..0000000
--- a/TaskPipeline.sln.DotSettings.user
+++ /dev/null
@@ -1,4 +0,0 @@
-
- <SessionState ContinuousTestingMode="0" Name="All tests from <tests>\<TestPipeline>" xmlns="urn:schemas-jetbrains-com:jetbrains-ut-session">
- <Project Location="D:\Projects\TaskPipeline\tests\TestPipeline" Presentation="<tests>\<TestPipeline>" />
-</SessionState>
\ No newline at end of file
diff --git a/tasks-pipeline.svg b/tasks-pipeline.svg
deleted file mode 100644
index 9863fa5..0000000
--- a/tasks-pipeline.svg
+++ /dev/null
@@ -1,95 +0,0 @@
-
-
-