microsoft/setup-integration-test-config
Create SQL Tools Service integration test connection settings by generating SQLConnectionInstances XML, then running Microsoft.SqlTools.ServiceLayer.TestEnvConfig to write sqlConnectionSettings.json in the user profile. Use when: setting up local integration tests, configuring SQL test credentials, preparing SQLConnectionInstances xml, generating sqlConnectionSettings.json, or setting up test/Microsoft.SqlTools.ServiceLayer.TestEnvConfig.
npx skills add https://github.com/microsoft/sqltoolsservice --skill setup-integration-test-config
Set up local integration-test connection settings for SQL Tools Service by:
Microsoft.SqlTools.ServiceLayer.TestEnvConfig project with that XML.sqlConnectionSettings.json at the user profile root and storing SQL passwords in credential storage.sqlConnectionSettings.json for integration tests.SQLConnectionInstancesTemplate.xml or TestEnvConfig.This workflow is implemented and exercised in:
test/Microsoft.SqlTools.ServiceLayer.TestEnvConfig/Program.cstest/Microsoft.SqlTools.ServiceLayer.Test.Common/TestConfigPersistenceHelper.cs.github/workflows/integration-tests.yml and azure-pipelines/integration-tests.ymlKey behavior:
TestEnvConfig.<Instance> must include VersionKey and DataSource.UserId and Password are optional.<VersionKey>_password exists, it overrides <Password> from XML.sqlConnectionSettings.json.Always ask this first:
If they already have credentials:
sqlOnPrem and sqlAzure or separate servers.If they want T-SQL:
Use this when user asks for SQL to create credentials. Replace placeholders first.
USE [master];
GO
IF NOT EXISTS (SELECT 1 FROM sys.sql_logins WHERE name = N'testAccount')
BEGIN
CREATE LOGIN [testAccount] WITH PASSWORD = N'<StrongPasswordHere>', CHECK_POLICY = OFF;
END
GO
-- CI currently grants sysadmin for broad integration test coverage.
-- If your environment requires least privilege, scope permissions accordingly.
ALTER SERVER ROLE [sysadmin] ADD MEMBER [testAccount];
GO
Create a local file (for example test/Microsoft.SqlTools.ServiceLayer.TestEnvConfig/SQLConnectionInstances.local.xml):
<?xml version="1.0" encoding="utf-8"?>
<Instances>
<Instance VersionKey="sqlOnPrem">
<DataSource>localhost</DataSource>
<UserId>testAccount</UserId>
<Password></Password>
</Instance>
<Instance VersionKey="sqlAzure">
<DataSource>localhost</DataSource>
<UserId>testAccount</UserId>
<Password></Password>
</Instance>
</Instances>
Notes:
VersionKey values as sqlOnPrem and sqlAzure unless tests are explicitly changed.UserId and Password.sqlOnPrem_password, sqlAzure_password) over plaintext passwords.From repo root (all platforms):
dotnet run --project test/Microsoft.SqlTools.ServiceLayer.TestEnvConfig/Microsoft.SqlTools.ServiceLayer.TestEnvConfig.csproj -- test/Microsoft.SqlTools.ServiceLayer.TestEnvConfig/SQLConnectionInstances.local.xml
Optional password override via env vars (recommended):
PowerShell:
$env:sqlOnPrem_password = '<password>'
$env:sqlAzure_password = '<password>'
bash/zsh:
export sqlOnPrem_password='<password>'
export sqlAzure_password='<password>'
$env:USERPROFILE/sqlConnectionSettings.json$HOME/sqlConnectionSettings.jsonVersionKey on an <Instance>.<VersionKey>_password).TestEnvConfig.dotnet run ... TestEnvConfig.csproj -- <xml path>.sqlConnectionSettings.json path and what was generated.Take microsoft/setup-integration-test-config from the repository into ~/.claude/skills for personal
use, or into .claude/skills inside a project.
The agent identifies a skill by the name field in its header. Two skills with the
same name cannot sit side by side — one of them will be ignored.