1
00:00:00,000 --> 00:00:04,639
Okay, now I'm going to press the open button. You can also get to this by going file, I go into

2
00:00:04,639 --> 00:00:13,840
projects, I go into pre-legal, I say open, and now we have our new open VS Code project. We say yes,

3
00:00:13,840 --> 00:00:19,440
I trust the authors. Here we go, we are in here, this is the beginning of our new project.

4
00:00:19,440 --> 00:00:24,559
Okay, so I'm going to bring up a terminal again with command and then the backslash and now,

5
00:00:25,280 --> 00:00:31,360
sorry, the backslash, the backtick, and now we're going to install another MCP server and this time

6
00:00:31,360 --> 00:00:38,479
it's for GitHub. We want to connect to GitHub using GitHub's famous remote MCP server using

7
00:00:39,200 --> 00:00:45,279
the token that we just created and that you're taking great care to preserve exactly as is.

8
00:00:45,279 --> 00:00:49,680
Now you may wonder why are we using MCP servers directly like this when I just told you

9
00:00:49,680 --> 00:00:54,159
that the best place to start is with plugins and the reason is because first of all these are two

10
00:00:54,159 --> 00:01:00,000
very famous MCP servers, Jira and GitHub, that are very well known and very powerful and highly

11
00:01:00,000 --> 00:01:05,440
used in the community and secondly because they have these very particular authorization techniques

12
00:01:05,440 --> 00:01:11,440
and to do it, to go through that proper process, it is best to go directly through the MCP server

13
00:01:11,440 --> 00:01:18,559
and that's why we're doing it that way. Okay, so let's now connect to the GitHub MCP server

14
00:01:18,559 --> 00:01:23,839
using our key. Okay, so I've pasted in here the command which is in the course resources. I'm

15
00:01:23,839 --> 00:01:28,559
going to close that so you can see it all in one line. It's, hang on, let me just delete that,

16
00:01:28,559 --> 00:01:34,800
that's not necessary right there. Here we go. This is the line that will be in the course resources

17
00:01:34,800 --> 00:01:42,800
Claude MCP add. It's another remote MCP server, an HTTP MCP server just like the Jira one was,

18
00:01:42,800 --> 00:01:52,239
the Atlassian one. It's at api.githubcopilot.com.mcp and we're passing in a header and in that header

19
00:01:52,239 --> 00:01:58,319
we're putting the GitHub personal access token but you can see what I've got there is some text and

20
00:01:58,319 --> 00:02:03,760
that's not going to work. I'm going to have to replace this right here with the exact key that

21
00:02:03,760 --> 00:02:10,320
I carefully copied with taking great care from GitHub from that screen we were on just a few

22
00:02:10,320 --> 00:02:15,839
moments ago. So I'm now off camera going to put in my private key in there that we took from there

23
00:02:15,839 --> 00:02:21,520
with these fine-grain permissions, put it in there and install this MCP server by running that just

24
00:02:21,520 --> 00:02:28,960
like this and you should do the same. Okay, I've run that command and now we're going to start

25
00:02:28,960 --> 00:02:34,720
Claude and see what happens. Do we trust this? Yes, we do. Number one, here we go. We're in

26
00:02:35,440 --> 00:02:43,839
pre-legal and we are going to do slash context to see what kinds of tools it has access to.

27
00:02:43,839 --> 00:02:48,960
Let's take a look and you can see it's got access to a whole bunch of GitHub related tools.

28
00:02:48,960 --> 00:02:57,360
Excellent. Okay, let's give this a whirl. Okay, we're going to say please write an issue to GitHub

29
00:02:58,320 --> 00:03:07,520
that the README needs to be updated. Let's see how it does.

30
00:03:10,559 --> 00:03:17,440
It's hopefully going to use the tools. It's first of all just running a local and now it is indeed

31
00:03:17,440 --> 00:03:24,320
trying to use the create or update issue. Let's say yes. We're not going to give it full approval

32
00:03:25,279 --> 00:03:31,119
to do everything. It's doing that. Created issue. All right, let's go and have a look.

33
00:03:31,119 --> 00:03:36,559
Well, here we are in a browser window. I'm going to go to GitHub to the pre-legal and here we are

34
00:03:36,559 --> 00:03:42,800
looking at the repository. It looks very similar to me but wait, there's an issue. Under issues,

35
00:03:42,800 --> 00:03:49,119
it says one. Let's go and check this out. Update README. Let's look at it. The README needs to be

36
00:03:49,119 --> 00:03:55,279
updated to reflect the current state of the project. There we go. Very nice. We've just

37
00:03:55,279 --> 00:04:00,639
used Claude code to connect to GitHub and raise an issue. Okay, well, let's just take it one step

38
00:04:00,639 --> 00:04:12,160
further. Please update the README to reflect that the project is in progress and will be completed

39
00:04:13,119 --> 00:04:21,519
in one week. Then raise a PR for this to be merged. I don't know if we have enough permissions for

40
00:04:21,519 --> 00:04:26,399
this. Let's see what happens. Let's see what happens. Give it a try. We can get into some

41
00:04:26,399 --> 00:04:31,279
problem solving if it doesn't work. It's reading a file. It wants to make a change to the README.

42
00:04:31,279 --> 00:04:39,760
That sounds fine. Go for it. I press number two. It should have updated that and now it's going to

43
00:04:40,320 --> 00:04:46,720
check out and make a commit. That's all great. I'm fine with that. This is not using tools yet.

44
00:04:46,720 --> 00:04:51,600
This is just running Git commands. We'll accept that. It's just running that locally to make the

45
00:04:51,600 --> 00:05:04,799
commit. Now it wants to do a push. Let's say yes. Okay. Now it is looking to open a new pull

46
00:05:04,880 --> 00:05:12,399
request. Open a new pull request. This is using the tool. Tool use. Yes. Let's see if it's working.

47
00:05:14,079 --> 00:05:20,799
Done. Created PR number two. There it is. Okay. Let's go check this out. All right. I'm going to

48
00:05:20,799 --> 00:05:26,720
click on this link right here to a pull request on this repo. Click. Up it comes. And here we go.

49
00:05:26,720 --> 00:05:31,279
We do indeed have a pull request. I don't know why it's called number two, but experts will

50
00:05:31,279 --> 00:05:38,320
probably tell me why it's not number one. Here we go. It's got the summary. Add status section

51
00:05:38,320 --> 00:05:44,079
to README. Generated with code. It's put in here, which is really nice that it adds in that

52
00:05:44,079 --> 00:05:50,559
attribution. And then if we go to commits, we'll see that this PR includes the single commit to

53
00:05:50,559 --> 00:05:56,799
update README with project status. There it is. And it's here so that we could check this out.

54
00:05:56,799 --> 00:06:01,679
And should we wish, we could press merge pull request, which will have the effect of updating

55
00:06:01,679 --> 00:06:08,320
this. So hang on. If I go and look into the code right now, you should see that this is the

56
00:06:08,320 --> 00:06:13,440
code that we've got. We now go into pull request. This is just standard GitHub stuff.

57
00:06:13,440 --> 00:06:19,760
We go into this pull request. We press merge pull request. Confirm the merge. This has now been

58
00:06:19,760 --> 00:06:26,239
merged. We go back to the code again. And now you can see the status is updated. That's cool.

59
00:06:26,239 --> 00:06:30,959
Now, if some of that Git stuff went over your head, then honestly, it doesn't matter. It's

60
00:06:30,959 --> 00:06:35,920
standard sort of Git stuff. I'll try and put some good resources for you or let me know if you'd

61
00:06:35,920 --> 00:06:41,279
like more about it. If you're a seasoned Git, GitHub person, then you knew what was going on

62
00:06:41,279 --> 00:06:45,920
and you understand that's part of the typical workflow with a larger team. And it's something

63
00:06:45,920 --> 00:06:50,559
that Cloud Code can do for you. There's one little bit of housekeeping that we have to do now,

64
00:06:50,559 --> 00:06:56,000
and then we can push on. If you bring up a terminal and you do a Git status, you'll see that we are

65
00:06:56,079 --> 00:07:04,239
in a branch, origin slash update readme. And I'm just going to say, Git checkout main. And that

66
00:07:04,239 --> 00:07:10,000
just switches us back to the main branch. We were on a special branch for our PR. We're now back to

67
00:07:10,000 --> 00:07:16,160
main. Again, if you don't know about this kind of Git workflow stuff, then I'll put extra resources

68
00:07:16,160 --> 00:07:22,480
for you. But that's where we are right now. We've got Git status. Here we are. We are now on origin

69
00:07:22,480 --> 00:07:29,839
main. And we have our directory set up with our license and our readme ready for the next step.

70
00:07:29,839 --> 00:07:35,679
Okay, so we're back in Cloud Code again. I'll tap Cloud to bring it up. We have so far installed

71
00:07:35,679 --> 00:07:42,079
two MCP servers, a Atlassian Jira one and a GitHub one. And we've done them by going to the

72
00:07:42,079 --> 00:07:48,480
MCP server configuration directly. We are now going to install a plugin. So do slash plugin

73
00:07:48,480 --> 00:07:53,440
to bring up the plugins and have a look at them. And you can see there is in fact a GitHub

74
00:07:53,440 --> 00:07:58,239
official plugin that you could also use. It's a slightly different auth approach where you have

75
00:07:58,239 --> 00:08:01,839
to put it as an environment variable, but otherwise it would work in much the same way.

76
00:08:01,839 --> 00:08:05,760
That's not what we're going to install. We are going to install a plugin called FeatureDev.

77
00:08:06,399 --> 00:08:13,760
FeatureDev is an official plugin from Anthropic to guide Cloud Code through a disciplined seven

78
00:08:13,760 --> 00:08:19,200
stage process to build a new feature for your product. In some ways, I think of this as like

79
00:08:19,200 --> 00:08:26,079
the polar opposite of Ralph loops. Ralph loops are all about chaos and just total autonomy and just

80
00:08:26,079 --> 00:08:32,799
go for it 10 times, see what happens. The FeatureDev is a rigorous disciplined, keep you on

81
00:08:32,799 --> 00:08:38,640
rails, take you through a process. That's what FeatureDev is all about. That's what we're going

82
00:08:38,640 --> 00:08:44,479
to use. It's something which Anthropic themselves use internally for their own software development.

83
00:08:44,479 --> 00:08:47,840
So it must be good. It sounds like I was saying that as a joke. It's like, so it must be good,

84
00:08:47,840 --> 00:08:53,520
but no, it really must be good if Anthropic uses it themselves. So we select it and then press

85
00:08:53,520 --> 00:09:00,159
enter to look at it. Comprehensive FeatureDev workflow with specialized agents for code base

86
00:09:00,159 --> 00:09:04,719
exploration, architecture design, and quality review. I know we haven't yet talked about

87
00:09:04,719 --> 00:09:08,799
having specialized agents, but I think you probably guess what it's all about. And now,

88
00:09:08,799 --> 00:09:14,640
if you look down below, we can choose to install just for you, have the scope just for this user.

89
00:09:14,640 --> 00:09:21,840
For all collaborators on this repo, have project scope. And that is what we want. We want project

90
00:09:21,840 --> 00:09:28,719
scope. And so we select this and I press enter. And now it has been installed and you can see it

91
00:09:28,719 --> 00:09:36,799
just created a .clawd file right there. We have everything here. We are ready to be using a

92
00:09:36,799 --> 00:09:41,840
disciplined development process. But just before we get started, just some final housekeeping.

93
00:09:41,840 --> 00:09:47,599
We've now created this .clawd folder that got created for us, which has turned on this plugin

94
00:09:47,599 --> 00:09:51,200
for all people in this repo. So we've got something to check in and we might as well

95
00:09:51,200 --> 00:09:55,679
take this opportunity to create some other useful or another useful file for our repo,

96
00:09:55,679 --> 00:09:59,840
which would be a .gitignore file, which is an important one to have. So we'll get

97
00:09:59,840 --> 00:10:08,640
Claude to do all that for us. I'm going to say, please create a boilerplate .gitignore

98
00:10:09,440 --> 00:10:23,599
for this new project for a typical Python fast API next JS web app development

99
00:10:25,359 --> 00:10:34,880
and then commit and push to GitHub. All of that. All of that. We'll let it do its thing. It

100
00:10:34,880 --> 00:10:41,520
shouldn't need to use any plugins for that. This is just about doing some files. There we go. We

101
00:10:41,520 --> 00:10:48,159
can see it's made a .gitignore file. We will let it make its edits and do more edits. And

102
00:10:48,799 --> 00:10:56,799
hopefully it is now going to run. It is doing a .gitstatus. It's committing.

103
00:10:56,799 --> 00:11:06,568
And it's doing a .gitpush. And it's doing a .gitpull because we merged the PR that needs to be done.

104
00:11:06,568 --> 00:11:16,141
It's doing all that for us. It's handling all the .git stuff for us. And it's all been done. Okay,

105
00:11:16,141 --> 00:11:24,444
that sounds exciting. Let's see if this actually worked. We'll go over to GitHub now.

106
00:11:24,640 --> 00:11:30,799
And we can see here we are in GitHub. Sure enough, we've got ourselves set up with the full, the new

107
00:11:32,799 --> 00:11:36,880
readme that says we're going to complete it in a week. Well, let's hope we do it in a day.

108
00:11:37,760 --> 00:11:43,760
And we've got a .gitignore. And that .gitignore, if we click into it, it looks like it's got all

109
00:11:43,760 --> 00:11:48,799
sorts of sensible things, including a .env. You should check that your version has that .env.

110
00:11:48,799 --> 00:11:56,719
And very standard stuff for a JavaScript and Python project that has been successfully created.

111
00:11:56,719 --> 00:12:03,039
It's obviously on our local disk. It's also now been committed to GitHub as well. And so we are

112
00:12:03,039 --> 00:12:08,880
ready for primetime. We are ready to build a feature using a proper disciplined workflow,

113
00:12:08,880 --> 00:12:15,200
taking advantage of our integrations with both Atlassian JIRA for issues, for work, for tasks,

114
00:12:15,200 --> 00:12:18,320
and also GitHub for managing PRs.