I've been following this thread since I was tagged but personal life circumstances have meant that I couldn't make a post till now. Even now, I doubt I can offer as much of my thoughts as possible.
To me, a captain is best judged by how they make the team work greater than the sum of their parts. Hand such an individual a group of hundred men and they'll make it look like a thousand. There are exceptions like Punter who were considered good because they made a team that was already heavy and on the verge of instability work by making it equal to the sum of their parts but that is exclusively for sides that are all-time great ones.
Now, Virat Kohli to me has almost never done this. The only times he's come close to this is on the back of his own legendary performances and not due to the team performing above their standards. The best RCB side (possibly the best IPL batting side ever) made it to the final and lost to SRH who were not favourites. The worst RCB sides have always been dross under him. Even the good RCB sides have always underperformed with him at the helm.
Contrast that with MS Dhoni. India arrived into the 2015 World Cup on the back of some horrendous form with a group of pacers that wouldn't have made IPL sides quake in fear. Shami was the sole star. And yet, he made that side work till the semis as they remained unbeaten and lost only to the eventual winners who IMO are one of the strongest champions I've seen. Aaron Finch took over an Aussie side with two of it's star batsmen suspended, a team culture in disarray and low on confidence playing ancient ODI style cricket having not won a series in nearly two years. He then made them win two consecutive away series', one of which was against India and got his side to the semis having looked imperiously good during the group stages.
But I don't think anyone would argue that Kohli is a poor white ball captain. The reasons are simple too. You only need to watch a game of his to understand. The Indian setup has always had a solid 'Plan A' that works in most cases due to the team's strength and the solid nature of it. And to his credit, Kohli ensures that it goes by without a hitch. He is a good motivator, especially when things are going well.
However, it is when these plans start to go awry that Kohli's 'tinkerer side' comes online. He makes the wrong calls at the wrong times. Quite simply put, you have blokes like Morgan who frequently make the right decisions under stress just at the right times. People call it gut, but Jarrod Kimber illustrated perfectly in an article that this super-gut is a myth. It is just the experience, tactical acumen and nous that enables these individuals to consistently make the right decisions. Even when they turn out wrong, you can see the reasoning behind it and surmise why it did happen. Case in point was Adil Rashid being the powerplay bowler every time in the recent T20I series. It stopped working eventually but Morgan's reason was that if you could remove Rohit and Kohli who are susceptible to wrist spin, you've already done half the work needed to win the game with the ball. Contrast that with Kohli's reluctance to use Sundar in powerplays despite him being actually decent versus right-handed batsmen and preferring Chahal who only gets smashed nearly every time.
This weakness of Kohli is particularly evident in his white ball career as you need to take decisions on the fly in ODIs and T20s. You'll frequently have to adapt, take many micro-decisions without knowing immediately how likely they are to be successful. Now this doesn't come into focus in tests. You don't need to change plans as frequently in the longer format. Hence why Kohli has never been as bad in tests as in white ball games. Yet, he's got one crucial weakness that still haunts him here. And that is yet again his tinkerer mode.
I think India once went 37-40 games without naming the same test side. I don't remember the exact number but it was ridiculous. Imagine the instability in the side, knowing that if you fail to perform once this might be your last game. Heck, you might get dropped even if you did perform well. And this wasn't fiction. Bhuvi was the highest wicket-taker in the first test versus South Africa on our last away tour there, the third highest run-scorer for India. His reward? Dropped for the next game. The vice-captain Rahane did not play until the third game and the reasoning was that "nobody thought he should have played ahead of Rohit Sharma". The same Rohit who barely looked like a competent batsman in every SENA tour. Dhawan played ahead of KL Rahul for some reason.
And then of course, we had Pujara dropped with Rahul playing out of position at three because the former made a string of poor scores in county cricket and gave an interview to Cricinfo. Edgbaston would have been ours on the back of Kohli's 149 had he not been dropped. The funniest moment was Kohli turning up on Day 2 with overhead clouds at Lord's and proudly announcing that the spinner Yadav would play with Ashwin. England did not bowl a single over of spin in that game. And to cap it off, Lyon won the Man of the Match at Perth versus Australia where India did not play any spinner and opted for the pacer Yadav who gloriously gave away freebies down the leg-side. And there was the whole "let's play Shaw who looks mentally shot and Saha in a day night test at Adelaide" on the last tour there.
If it isn't clear already, Kohli's decisions about the playing XI and team selections have often been poor and sometimes ridiculous. Now, there have been few instances where it has worked. Hardik Pandya won us a test in England despite being a huge question mark throughout the series. Bringing in Pant and dropping DK at that point was seen as risky but it worked out in the series and going forward in the future too (although he was very nearly ousted by the same captain later on). Bumrah was seen as a massive risk for the SA tour as his last FC game was over a year ago and his action was considered to be unsustainable for five days but we might have unearthed potentially our greatest test pacer in him thanks to that. Vihari as a stop-gap opener instead of the out of touch Rahul was also a bold call that helped. Most recently, Axar Patel's success despite him not having featured much in FC cricket was also impressive. But yet again, there are caveats in several of these instances, such as Hardik being generally not useful in other tests in England (barring Edgbaston where he was the only other batsman with a spine) while England's Curran was vital in every game, Pant and DK's mismanagement alongside Rahul playing one too many games before being considered for the axe. I'm not even mentioning instances like Siraj being ignored for years despite being one of the best prospects in the domestic circuit for a weak side.
To add to his positives, Kohli's backed pacers a lot. This means a lot in Indian cricket context. This is the same country that ran Kapil Dev and Srinath to the ground, the same country whose legendary captain Pataudi shunned pacers to an extent rivaling that of current day Bangladesh with Tiny being the only Indian pacer of note in the 60s. His predecessor had a poor history with pace bowlers himself. To go from there to the seemingly endless supply of pacers we have today is a big deal. I don't believe Kohli himself is personally responsible for the successes of Ishant (Indian cricket owes a big debt to Gillespie for him), Shami or even Siraj who had been working effortlessly with Hyderabad but their best work has been possible in this current setup.
The current side's obsession with fitness is also a great improvement IMO. Our pacers last longer these days, they bowl at full pace for far more longer intervals and our players look fit as a fiddle for the most part now. When the current crop of senior players retire, you'll see an even bigger improvement here. Kohli's been highly responsible for this and has led personally from the front. I wish our fielding wasn't hopelessly bad but you can't have it all I guess.
And one other underrated aspect that I like about Kohli's captaincy is that he doesn't give up in several instances when previous captains would have preferred to play for the draw. Every session is marked as one to win or compete and I find that approach refreshing and in line with modern day tests. This aggression and intent however only carries over to the side's propensity to play every ball and risk dismissals rather than defend and ride out the storm sometimes (with the due exception of Pujara who is shunned for his approach in any case). Kohli is a defensive captain with his fields, bowling changes and often changes plans too frequently rather than stick with one and trust in it to deliver. And when he does do the latter, it is in scenarios where success is unlikely. His white ball mode turns up here too inevitably. Contrast that with Rahane who showed a wonderful model of captaincy in Kohli's absence and salvaged what looked like a lost tour and turned it into India's greatest overseas triumph. Kohli in a nutshell makes wrong decisions in moments of impatience, is stubborn over things that he should not be and is abrasive towards people who question him publicly. All three of these are very much unsuited to captaincy.
And finally, captaincy is not something that exists in a vacuum too. You need better options or worse ones to compare a captain or grade them on a standard. For instance, hand Kohli over to Bangladesh and they'll probably grab him up in an instance even if you just offer them the captain version of him (I'd argue that for their team culture, Kohli is the worst fit in terms of personality but that is an argument for another day). And here, India have a much superior option in Rohit Sharma for white ball cricket. His detractors and Kohli's most fervent supporters often bring up isolated instances to point out how Rohit escapes criticism for certain errors and how he is praised for some decisions that the former isn't. Part of it is because the spotlight will always shine brighter on the present captain and a part of it is because Rohit is objectively a better captain on paper and has shown on multiple occasions that he deserved the captaincy spot.
In red ball cricket is where things get murky. Rahane is also a superior option to Kohli but the former's form has been on a nosedive over the last 3-4 years. Partly down to mismanagement and partly down to his own failures and stubborn nature of wanting a LO cricket, it is tough to justify Rahane being captain when his own spot is frequently in question. And this is why Kohli has often escaped criticism in tests despite having won only once in a SENA tour with India's strongest test side ever.
Shastri's role amidst all of this is another issue. He is a motivator first and foremost, he can point out technical flaws and chinks in the armour for players but expecting him to coach and manage the tactical side of the game on a daily basis is unrealistic. Such a coach works well with both of India's deputies as they are tactically strong first and pair up well with a motivator. Kohli on the other hand is a motivator himself who struggles tactically often and as such would be much better with a tactically strong coach. You can see the change in RCB's fortunes in the last two seasons since Hesson and Katich have come over. There is a clear structure and order now despite Kohli's frequent random decisions but with the support of a proper structure, they do not look as terrible as they previously did. Maybe with the support of a good coach rather than a cheerleader, Koach could have done better and have a more positive reputation of his captaincy.