1
00:00:00,980 --> 00:00:04,880
You ever build a local Claude Code plugin,
test it out, push it live,

2
00:00:05,020 --> 00:00:05,520
and then...

3
00:00:06,820 --> 00:00:07,140
nothing?

4
00:00:07,940 --> 00:00:13,440
Like, it installs completely clean, no
error messages, but the embedded MCP tools

5
00:00:13,500 --> 00:00:15,200
just silently fail to load?

6
00:00:15,578 --> 00:00:17,598
Oh man, that is the ultimate phantom bug.

7
00:00:18,118 --> 00:00:21,758
You think everything is smooth sailing
until your users start reporting that half

8
00:00:21,798 --> 00:00:22,638
the tools are missing.

9
00:00:22,667 --> 00:00:24,107
It is proper frustrating, mate.

10
00:00:24,247 --> 00:00:28,107
But hey, before we dig into how to fix
that, this episode is brought to you by

11
00:00:28,174 --> 00:00:32,347
Jellypod AI, the best way to turn your
content into engaging,

12
00:00:32,395 --> 00:00:34,107
full length podcasts.

13
00:00:34,305 --> 00:00:37,445
Yeah, Jellypod makes audio creation
ridiculously easy!

14
00:00:38,165 --> 00:00:40,045
But back to these ghost tools in Claude
Code.

15
00:00:40,385 --> 00:00:43,285
What actually causes them to just
disappear without an error?

16
00:00:43,413 --> 00:00:47,753
Well, usually it was something like an
unparsed variable or a malformed server entry

17
00:00:47,793 --> 00:00:48,473
in your config.

18
00:00:49,033 --> 00:00:51,913
Claude Code would just drop the entry on
load without telling a soul.

19
00:00:52,000 --> 00:00:55,840
Right, so it fails silently at runtime
instead of blowing up at build time.

20
00:00:55,904 --> 00:00:57,520
That is rough for testing.

21
00:00:57,542 --> 00:00:58,542
Exactly.

22
00:00:58,632 --> 00:01:04,422
But in release 2 point 1 point 2 8 1,
Anthropic upgraded the CLI validation tool.

23
00:01:04,602 --> 00:01:10,582
Now when you run claude plugin validate,
it actually inspects the dot m c p dot j s

24
00:01:10,662 --> 00:01:12,902
o n files inside your plugin bundle.

25
00:01:13,117 --> 00:01:13,997
Oh nice!

26
00:01:14,577 --> 00:01:17,377
So what specific checks is it running now
during validation?

27
00:01:17,417 --> 00:01:21,737
According to the release notes for version
2 point 1 point 2 8 1,

28
00:01:21,804 --> 00:01:28,377
added MCP server checks to claude plugin
validate reports dot m c p dot j s o n

29
00:01:28,457 --> 00:01:31,577
entries that would be silently dropped at
load.

30
00:01:31,817 --> 00:01:38,617
It also flags undeclared user config
template variables and insecure HTTP endpoint

31
00:01:38,777 --> 00:01:39,417
URLs.

32
00:01:39,767 --> 00:01:41,587
Wait, HTTP URLs?

33
00:01:42,427 --> 00:01:47,507
So if someone accidentally points an MCP
server to an unencrypted HTTP link instead

34
00:01:47,527 --> 00:01:50,507
of HTTPS, the validator catches it right
away?

35
00:01:50,583 --> 00:01:51,223
Spot on.

36
00:01:51,410 --> 00:01:55,863
It blocks those insecure endpoints right
at the door before you ship it off to your

37
00:01:55,927 --> 00:01:56,823
team or market.

38
00:01:56,973 --> 00:01:59,073
That is massive for CI pipelines.

39
00:01:59,713 --> 00:02:03,073
You can literally just drop claude plugin
validate into your GitHub Actions

40
00:02:03,153 --> 00:02:07,033
workflow, and it acts as a gatekeeper
against broken plugin releases.

41
00:02:07,083 --> 00:02:11,323
Yeah, though, um, there is a bit of a
catch you have to watch out for if you are

42
00:02:11,353 --> 00:02:13,323
putting this into existing pipelines.

43
00:02:13,453 --> 00:02:14,613
Uh oh, what is the catch?

44
00:02:14,873 --> 00:02:15,953
Is it breaking older setups?

45
00:02:16,000 --> 00:02:16,960
Sort of, yeah!

46
00:02:17,040 --> 00:02:22,400
Because the validation schema is much
stricter now, if you had custom comments or

47
00:02:22,467 --> 00:02:28,640
loose JSON formats in your dot m c p dot j
s o n that used to just get ignored...

48
00:02:28,704 --> 00:02:33,440
well, now the validator considers those
schema violations and fails the build.

49
00:02:33,578 --> 00:02:37,638
So if you were relying on permissive
parsing before, your CI might suddenly turn red

50
00:02:37,678 --> 00:02:39,918
on update until you clean up your JSON
files.

51
00:02:39,958 --> 00:02:40,598
Precisely.

52
00:02:40,691 --> 00:02:43,638
Clean up your schemas first, then automate
it.

53
00:02:43,807 --> 00:02:44,147
Got it.

54
00:02:44,807 --> 00:02:49,727
Hey, while we are on 2 point 1 point 2 8
1, weren't there a few other nice little

55
00:02:49,767 --> 00:02:51,447
quality of life tweaks in this release?

56
00:02:51,542 --> 00:02:52,662
Oh mate, absolutely.

57
00:02:52,742 --> 00:02:57,542
My favorite small tweak is that you can
now cleanly disable automated Git commit and

58
00:02:57,729 --> 00:02:59,382
PR attribution footers.

59
00:02:59,597 --> 00:03:03,097
Oh, you mean those generated by Claude
Code lines that get appended to your commit

60
00:03:03,137 --> 00:03:03,397
messages?

61
00:03:03,417 --> 00:03:04,217
Yeah, those ones!

62
00:03:04,397 --> 00:03:09,337
You can just set attribution to false in
your settings dot j s o n file now,

63
00:03:09,437 --> 00:03:14,137
and it completely suppresses all those
commit and PR footers across the board.

64
00:03:14,587 --> 00:03:18,767
That is awesome for keeping repo history
looking clean and human written.

65
00:03:19,507 --> 00:03:21,107
Small fix, big impact!

66
00:03:21,167 --> 00:03:21,967
Too right!

67
00:03:22,157 --> 00:03:27,807
Alright, update your CLI tools, run your
validations, and keep those builds clean.

68
00:03:27,954 --> 00:03:29,567
Catch ya next time!

