@@ -24,14 +24,19 @@ function unmanagedClause(count: number): string {
2424}
2525
2626function syncSummary ( result : SkillsSyncResult ) : string {
27- if ( result . agents . length === 0 ) {
28- return "No agents are configured to sync skills for." ;
29- }
30- if ( result . packages . length === 0 ) {
31- return "No Prisma packages with agent skills are installed." ;
32- }
33- if ( result . skills . length === 0 ) {
34- return "No Prisma dependencies in your project ship agent skills to sync." ;
27+ // The empty-state sentences hold only when this run also removed
28+ // nothing; a prune is work done, and its summary must match the
29+ // Removed table rendered beneath it.
30+ if ( result . pruned . length === 0 ) {
31+ if ( result . agents . length === 0 ) {
32+ return "No agents are configured to sync skills for." ;
33+ }
34+ if ( result . packages . length === 0 ) {
35+ return "No Prisma packages with agent skills are installed." ;
36+ }
37+ if ( result . skills . length === 0 ) {
38+ return "No Prisma dependencies in your project ship agent skills to sync." ;
39+ }
3540 }
3641 const refusedDirs = result . refused . reduce (
3742 ( count , skill ) => count + skill . dirs . length ,
@@ -40,6 +45,10 @@ function syncSummary(result: SkillsSyncResult): string {
4045 if ( result . synced . length === 0 && result . pruned . length === 0 ) {
4146 return `Agent skills are up to date${ unmanagedClause ( refusedDirs ) } .` ;
4247 }
48+ const removed = `${ result . pruned . length } skill${ result . pruned . length === 1 ? "" : "s" } ` ;
49+ if ( result . synced . length === 0 && result . pruned . length > 0 ) {
50+ return `Removed ${ removed } ${ unmanagedClause ( refusedDirs ) } .` ;
51+ }
4352 const synced = `${ result . synced . length } skill${ result . synced . length === 1 ? "" : "s" } ` ;
4453 const base =
4554 result . pruned . length === 0
0 commit comments