diff --git a/SharepointToolbox.Tests/Auth/MsalClientFactoryTests.cs b/SharepointToolbox.Tests/Auth/MsalClientFactoryTests.cs
new file mode 100644
index 0000000..653fda0
--- /dev/null
+++ b/SharepointToolbox.Tests/Auth/MsalClientFactoryTests.cs
@@ -0,0 +1,7 @@
+namespace SharepointToolbox.Tests.Auth;
+
+public class MsalClientFactoryTests
+{
+ [Fact(Skip = "Wave 0 stub — implemented in plan 01-04")]
+ public void CreateClient_Returns_ConfiguredPublicClientApplication() { }
+}
diff --git a/SharepointToolbox.Tests/Auth/SessionManagerTests.cs b/SharepointToolbox.Tests/Auth/SessionManagerTests.cs
new file mode 100644
index 0000000..77e2f9c
--- /dev/null
+++ b/SharepointToolbox.Tests/Auth/SessionManagerTests.cs
@@ -0,0 +1,7 @@
+namespace SharepointToolbox.Tests.Auth;
+
+public class SessionManagerTests
+{
+ [Fact(Skip = "Wave 0 stub — implemented in plan 01-04")]
+ public void GetContext_Returns_ClientContext_For_ConnectedTenant() { }
+}
diff --git a/SharepointToolbox.Tests/Integration/LoggingIntegrationTests.cs b/SharepointToolbox.Tests/Integration/LoggingIntegrationTests.cs
new file mode 100644
index 0000000..f0f07b9
--- /dev/null
+++ b/SharepointToolbox.Tests/Integration/LoggingIntegrationTests.cs
@@ -0,0 +1,7 @@
+namespace SharepointToolbox.Tests.Integration;
+
+public class LoggingIntegrationTests
+{
+ [Fact(Skip = "Wave 0 stub — implemented in plan 01-05")]
+ public void Serilog_WritesTo_RollingFile_On_Startup() { }
+}
diff --git a/SharepointToolbox.Tests/Localization/TranslationSourceTests.cs b/SharepointToolbox.Tests/Localization/TranslationSourceTests.cs
new file mode 100644
index 0000000..8584da1
--- /dev/null
+++ b/SharepointToolbox.Tests/Localization/TranslationSourceTests.cs
@@ -0,0 +1,7 @@
+namespace SharepointToolbox.Tests.Localization;
+
+public class TranslationSourceTests
+{
+ [Fact(Skip = "Wave 0 stub — implemented in plan 01-05")]
+ public void ChangeLanguage_Updates_Bound_Strings() { }
+}
diff --git a/SharepointToolbox.Tests/Services/ProfileServiceTests.cs b/SharepointToolbox.Tests/Services/ProfileServiceTests.cs
new file mode 100644
index 0000000..7cbb63a
--- /dev/null
+++ b/SharepointToolbox.Tests/Services/ProfileServiceTests.cs
@@ -0,0 +1,7 @@
+namespace SharepointToolbox.Tests.Services;
+
+public class ProfileServiceTests
+{
+ [Fact(Skip = "Wave 0 stub — implemented in plan 01-03")]
+ public void SaveAndLoad_RoundTrips_Profiles() { }
+}
diff --git a/SharepointToolbox.Tests/Services/SettingsServiceTests.cs b/SharepointToolbox.Tests/Services/SettingsServiceTests.cs
new file mode 100644
index 0000000..14a9ad3
--- /dev/null
+++ b/SharepointToolbox.Tests/Services/SettingsServiceTests.cs
@@ -0,0 +1,7 @@
+namespace SharepointToolbox.Tests.Services;
+
+public class SettingsServiceTests
+{
+ [Fact(Skip = "Wave 0 stub — implemented in plan 01-03")]
+ public void SaveAndLoad_RoundTrips_Settings() { }
+}
diff --git a/SharepointToolbox.Tests/SharepointToolbox.Tests.csproj b/SharepointToolbox.Tests/SharepointToolbox.Tests.csproj
new file mode 100644
index 0000000..069a016
--- /dev/null
+++ b/SharepointToolbox.Tests/SharepointToolbox.Tests.csproj
@@ -0,0 +1,27 @@
+
+
+
+ net10.0-windows
+ true
+ enable
+ enable
+ false
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/SharepointToolbox.Tests/ViewModels/FeatureViewModelBaseTests.cs b/SharepointToolbox.Tests/ViewModels/FeatureViewModelBaseTests.cs
new file mode 100644
index 0000000..4cb519b
--- /dev/null
+++ b/SharepointToolbox.Tests/ViewModels/FeatureViewModelBaseTests.cs
@@ -0,0 +1,7 @@
+namespace SharepointToolbox.Tests.ViewModels;
+
+public class FeatureViewModelBaseTests
+{
+ [Fact(Skip = "Wave 0 stub — implemented in plan 01-06")]
+ public void CancelCommand_Cancels_RunningOperation() { }
+}
diff --git a/SharepointToolbox.slnx b/SharepointToolbox.slnx
index 3c0e3f2..4cbec6e 100644
--- a/SharepointToolbox.slnx
+++ b/SharepointToolbox.slnx
@@ -1,3 +1,4 @@
+