Diagnostic.nuspec file for the analyzer + code fix template project packages the following files:
<files>
<file src="*.dll" target="tools\analyzers\" exclude="**\Microsoft.CodeAnalysis.*;**\System.Collections.Immutable.*;**\System.Reflection.Metadata.*" />
<file src="tools\*.ps1" target="tools\" />
</files>
The exclude list should be updated to include _"System.Composition.*"_ assemblies, otherwise installing the nuget package also includes these System assemblies as analyzers:

Why are the composition dlls in the tools\analyzers directory? That itself seems like a bug.
By default VSIX and nuget packagers copy everything from the output directory. The fix here is simple, just add the additional filtering logic. Do we now show assemblies even if they have no analyzers? What if an assembly is a dependency only, do we show it in solution explorer?
@jmarolf Yes, analyzer dependencies with no analyzers are also shown in the solution explorer, as the screenshot shows.
@tmeschter can probably confirm if this is the desired behavior...
Two things here:
<file src="{actual assembly name}.dll"/>? If the user adds dependencies that need to be included in the package, updating the .nuspec is straightforward.NuGetManifest item type, and it will package them during the build. You can see how I applied this to the output of a template here: DotNetAnalyzers/AsyncUsageAnalyzers@2b9a4e03fc43cf3a3317d15d631569137741b475 (also included are metadata updates to the NuGet specification, but it should still be clear what's going on. Unlike the post build action, this strategy is fully integrated with cleaning the project, is tracked as a project output, and can report errors during the build.This is the MSBuild output for "Minimal" when you are using the build tasks described in my previous comment for the AsyncUsageAnalyzers project:
1>------ Rebuild All started: Project: AsyncUsageAnalyzers, Configuration: Debug Any CPU ------
1> AsyncUsageAnalyzers -> C:\dev\AsyncUsageAnalyzers\AsyncUsageAnalyzers\AsyncUsageAnalyzers\bin\Debug\AsyncUsageAnalyzers.dll
1> AsyncUsageAnalyzers -> C:\dev\AsyncUsageAnalyzers\AsyncUsageAnalyzers\AsyncUsageAnalyzers\bin\Debug\AsyncUsageAnalyzers.1.0.0-dev.nupkg
========== Rebuild All: 1 succeeded, 0 failed, 0 skipped ==========
@sharwell This particular step: _"If the user adds dependencies that need to be included in the package, updating the .nuspec is straightforward."_ might not be obvious to all analyzer authors, and the end user would end up running against analyzer load failures at runtime. Current behavior is more conservative and hence probably more desirable, but I'd let others comment on their preference.
fixed with internal Changeset 1471973