En guide för dig som kan kod (sedan länge) men behöver färska upp Git + komma igång med AI-coding. Skriven för Windows.
--dangerously-skip-permissions — vad är det?Tre olika saker som hänger ihop:
| Verktyg | Vad det är | Subversion-paritet |
|---|---|---|
| Git | Versionshantering på din egen dator. Spårar ändringar i kod. | Ungefär som SVN, men distribuerat (alla har hela historiken lokalt) |
| GitHub | Web-tjänst som hostar Git-repon. Som SourceForge fast 2020-tal. | Som ett centralt SVN-arkiv, fast med kollaboration ovanpå |
| Claude Code | AI som kör i din terminal och kan läsa/skriva kod, köra kommandon, debugga. | Finns inget motsvarande. Helt nytt paradigm. |
Du behöver alla tre: Git för att spara versioner lokalt, GitHub för att backa upp + dela kod, Claude Code för att skriva koden snabbt.
VS Code är Microsofts kod-editor — gratis, modern, integrerad terminal. Du kommer öppna kod här när du vill se vad Claude har gjort, och själv ändra saker direkt.
Ladda ner: code.visualstudio.com
Kör installern. Default-val är bra, men kolla att följande är ✓:
code . i terminalen för att öppna aktuell mappStarta VS Code. Några tweaks som gör livet bättre:
Vänster-kolumnen → Extensions (fyrkant-ikon, eller Ctrl+Shift+X). Sök och installera:
code . i en mapp för att öppna hela projektet i VS Code. Punkten betyder "denna mapp".
Git är ett program på din dator (versionshantering lokalt). GitHub är en separat web-tjänst där du hostar repon online. Du installerar Git i detta steg. I nästa steg skapar du GitHub-konto och kopplar ihop dem.
Ladda ner: git-scm.com/download/win
Kör installern. Använd default-val överallt utom:
Verifiera installationen i Powershell eller CMD:
git --version
Ska visa något som git version 2.43.0.windows.1.
Nu har du Git på datorn (steg 3) och VS Code (steg 2). Nu skapar vi GitHub-kontot där dina repon ska hostas, och kopplar ihop din lokala Git med GitHub-kontot så de kan prata med varandra.
Gå till github.com/signup.
github.com/anders-juridik)När du gör en git commit sparas ditt namn + email som metadata på commit:en. Detta är BARA för att markera vem som skrev vad — inte autentisering. Använd samma email som ditt GitHub-konto så GitHub kan koppla commits till ditt konto.
I terminalen:
git config --global user.name "Anders Andersson"
git config --global user.email "anders@email.se"
git config --global init.defaultBranch main
Verifiera:
git config --global user.name
git config --global user.email
SSH-nyckeln är det som faktiskt autentiserar dig mot GitHub när du pushar/pullar. Den ersätter lösenord. Två filer skapas: en privat (stannar på din dator) och en publik (uppladdas till GitHub).
I terminalen:
ssh-keygen -t ed25519 -C "anders@email.se"
Tryck Enter på alla frågor (default-path, ingen passphrase för enkelhet).
Två filer skapas i C:\Users\Anders\.ssh\:
id_ed25519 — privat nyckel (DELA ALDRIG)id_ed25519.pub — publik nyckel (säker att dela)~/.ssh/id_ed25519.pub som förkortning. ~ betyder "din hemkatalog" — på Windows är det C:\Users\Anders\. Det funkar i Git Bash men inte i Powershell eller CMD. Om ~/ inte funkar, använd full path C:\Users\Anders\.ssh\id_ed25519.pub istället.
Detta är där din dator + GitHub-kontot kopplas ihop. Du säger till GitHub: "den här datorn (med den här SSH-nyckeln) får agera som mig".
Visa publik nyckel + kopiera output:
cat ~/.ssh/id_ed25519.pub
Output ser ut som ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAA... anders@email.se. Kopiera HELA raden.
I webbläsaren:
ssh-ed25519 AAAA...-radenTesta att din dator kan prata med GitHub:
ssh -T git@github.com
Första gången frågar den "Are you sure you want to continue connecting?" — svara yes. Sen ska du se:
Hi anders-juridik! You've successfully authenticated, but GitHub does not provide shell access.
SVN-Git-översättning:
| SVN-koncept | Git-motsvarighet | Skillnad |
|---|---|---|
svn checkout | git clone | Git hämtar HELA historiken, inte bara senaste |
svn update | git pull | Hämtar + merger |
svn commit | git commit + git push | Git har TVÅ steg: lokal commit + push till server |
svn status | git status | Samma idé |
svn diff | git diff | Samma idé |
svn log | git log | Samma idé |
svn add | git add | Git kräver explicit add för varje commit (staging area) |
| (saknas) | git branch + git checkout -b | Branches är cheap i Git — använd dem! |
| (saknas) | git rebase | Skriv om historiken så den ser ren ut — en av Git:s superkrafter |
git add filer innan git commit — inte automatiskt som SVN.trunk.git rebase finns inte i SVN. Det betyder "ta mina commits och spela upp dem ovanpå någon annan startpunkt". Två vanliga använd-fall:
Du har jobbat på branch feature/login i en vecka. Under tiden har main fått 5 nya commits från någon annan. Du vill ha dessa ändringar i din branch innan du mergar.
Två sätt:
| Approach | Kommando | Resultat |
|---|---|---|
| Merge (SVN-ish) | git merge main | Skapar en "merge commit" som blandar de två historikerna. Historiken blir trädformad. |
| Rebase (Git-way) | git rebase main | Spelar upp dina commits ovanpå senaste main. Historiken blir linjär — ser ut som du jobbade på senaste main från början. |
Rebase ger renare historik men kräver att du löser eventuella konflikter en commit i taget (istället för alla på en gång som vid merge).
Du har 5 små commits ("wip", "fix typo", "actually fix typo", "test", "done") som egentligen är samma feature. Vid merge till main vill du ha det som EN clean commit.
git rebase -i HEAD~5
Öppnar en editor där du kan markera commits som squash (slå ihop) eller pick (behåll). Sen får du skriva en ny commit-message för den hopslagna.
I praktiken: när du är osäker om du ska rebasa eller merga — fråga Claude. Den vet kontexten för ditt projekt och rekommenderar rätt approach.
Gå till github.com/new:
min-forsta-repo (eller vad du vill)På GitHub-sidan, klick "Code" → kopiera SSH-URL (ser ut som git@github.com:anders-juridik/min-forsta-repo.git).
I terminalen:
cd C:\Users\Anders\Documents
git clone git@github.com:anders-juridik/min-forsta-repo.git
cd min-forsta-repo
echo "Hello world" > test.txt
git add test.txt
git commit -m "Min första commit"
git push
Refresha GitHub-sidan — filen är där! 🎉
Claude Code är ett CLI-verktyg som du kör i terminalen. Det kräver Node.js.
Ladda ner LTS-version från nodejs.org. Kör installern, default-val.
Verifiera:
node --version
npm --version
npm install -g @anthropic-ai/claude-code
Verifiera:
claude --version
Officiell dokumentation: docs.claude.com/en/docs/claude-code
| Plan | Pris | Vad du får | Vem passar det? |
|---|---|---|---|
| Free | 0 kr | Begränsad användning av claude.ai (chat). Inte Claude Code. | Bara för att testa chat-versionen |
| Pro | ~200 kr/mån | Tillgång till Claude Code. Både Sonnet och Opus tillgängliga (med daglig kvot). Bra för småprojekt + ibland-användning. | Hobbyist eller jurist som vill experimentera |
| Max 5x | ~1000 kr/mån | 5x Pro-kvoten. Mer Opus-tid innan rate-limit. Bra för regelbundet arbete. | Den som kodar några timmar i veckan |
| Max 20x | ~2000 kr/mån | 20x Pro-kvoten. Massor Opus-tid. Mest för dem som kör hela arbetsdagar i Claude. | Den som kodar dagligen + tunga sessioner |
| API | Pay-per-token | Direktåtkomst via API. Mer flexibilitet, ingen daglig kvot. Du betalar per inputs/outputs. | Utvecklare som bygger egna verktyg eller integrationer |
För Anders: Börja med Pro. Du får tillgång till båda Sonnet (snabbare, vardags-arbete) och Opus (kraftfullare, svårare uppgifter). Skala upp till Max när du märker att Opus-kvoten tar slut innan du är klar med dagens arbete.
/model opus eller /model sonnet. Opus är långsammare men bättre på svåra resonemangs-uppgifter. Sonnet räcker för 80% av kodning.
Skapa konto: claude.ai. Logga in i Claude Code med:
claude
Vid första kommandot ber den dig autentisera — följ länken till webbläsaren, logga in, klar.
Navigera till ditt repo i terminalen:
cd C:\Users\Anders\Documents\min-forsta-repo
claude
Du ser något som:
▐▛███▜▌ Claude Code v2.1.x
▝▜█████▛▘ Sonnet 4.6
▘▘ ▝▝ ~/Documents/min-forsta-repo
❯
Skriv din första prompt. Exempel:
Skapa en Python-fil som räknar ut hur lång tid det är kvar
till nästa svenska helgdag. Lägg till en test-fil också.
Claude kommer:
python script.py för att testa (du får approve)Sen kan du säga:
committa det här till git
Claude vet vad du menar. Den kör git add, git commit -m "..." själv.
Context är allt som Claude "kommer ihåg" i en konversation. Det inkluderar:
Det har en begränsning (ofta 200 000 till 1 miljon tokens — ca 500 sidor text). När du slår i taket går det inte att fortsätta.
/compact — Komprimerar tidigare konversation till en sammanfattning. Du behåller den röda tråden men frigör context. Använd när du är 70-80% in i en lång session.
/clear — Rensar HELA contexten. Som att starta en ny session. Använd när du byter ämne helt (t.ex. från debug till ny feature).
Context (förra sektionen) försvinner när du /clear eller stänger Claude. Memory är persistent — Claude kommer ihåg det till nästa gång du startar Claude i samma projekt.
| Typ | Var lagras | Syfte |
|---|---|---|
| CLAUDE.md | I projekt-roten (committas till git) | Projekt-specifika regler som hela teamet ska följa. T.ex. "använd alltid Python 3.12", "skriv tester med pytest", "deploya via GitHub Actions" |
| Auto-memory | Lokalt på din dator i ~/.claude/projects/<projekt>/memory/ (INTE i git) | Personliga preferenser + lärdomar från tidigare sessioner. T.ex. "Anders gillar koncisa svar", "vi använde sub-paradigm X i förra problemet" |
Skapa en fil CLAUDE.md i ditt projekts rot. Claude läser den automatiskt vid varje session.
Exempel-innehåll:
# Mitt projekt
## Vad är detta
En kalkylator för att räkna ut förfallodagar i mina ärenden.
## Tekniker
- Python 3.12
- pytest för tester
- Inga externa beroenden om möjligt
## Konventioner
- Variabelnamn på engelska, kommentarer på svenska
- Testa alltid edge-cases (skottår, helgdagar)
- Använd type hints
## Vad jag INTE vill
- Ingen pip install av externa libs utan att fråga först
- Inga emoji i kod
Skapa filen själv, eller säg till Claude: "kör /init" — då analyserar Claude projektet och skapar en första CLAUDE.md åt dig.
Claude lär sig saker om dig + ditt projekt över tid och sparar dem automatiskt. Inga manuella steg krävs — det bara händer.
Du kan också be Claude explicit:
Kom ihåg att jag föredrar korta svar utan långa förklaringar.
Notera till framtida sessioner: vi har bestämt att alla SQL-queries
ska gå via prepared statements för att undvika injection.
Eller motsatsen:
Glöm det du sparade om X — det stämmer inte längre.
På din dator finns en katalog som ser ut såhär:
C:\Users\Anders\.claude\projects\<projekt-path>\memory\
I den ligger små markdown-filer med namn som user_preferences.md, project_decisions.md, etc. Du kan öppna dem och läsa själv — Claude skriver dem på engelska eller svenska beroende på hur du pratar.
Plus en MEMORY.md-index-fil som listar alla memory-filer kort.
min-forsta-repo kommer inte synas när du startar Claude i annat-repo. Det är design — du vill inte att projektspecifika beslut läcker mellan helt olika projekt.
Memory-filerna ligger lokalt på din dator. Anthropic ser dem inte direkt. MEN: när Claude läser dem in i en session skickas innehållet med till Anthropic som del av prompten. Så:
--dangerously-skip-permissions — vad är det?Default kör Claude i "ask-mode" — den ber om approval för varje kommando som kan ändra något (skriva fil, köra bash-kommando, etc). Detta är säkert men långsamt.
--dangerously-skip-permissions stänger av approval-flow. Claude kör allt direkt.
claude --dangerously-skip-permissions
rm -rf, etc — utan att fråga dig. För det mesta är det fine. Men:
Toggla mellan modes i Claude Code med Shift+Tab.
'git' is not recognized as an internal or external commandGit är inte i din PATH. Lösning: stäng och öppna terminalen igen efter Git-installationen. Om det fortfarande inte funkar, ominstallera Git och se till att "Git from the command line" är valt.
Permission denied (publickey)Möjliga orsaker:
git@github.com:...-URL (inte https://github.com/...).ssh-add ~/.ssh/id_ed25519claude: command not found efter npm installNode:s globala paket är inte i PATH. Lösning på Windows:
npm config get prefixDu har slagit i din daglig kvot. Claude visar tiden då kvoten reset:as (t.ex. "resets 22:30 Europe/Stockholm"). Vänta tills dess, eller uppgradera till Max-plan.
Tryck Esc för att avbryta nuvarande aktion. Tryck Ctrl+C två gånger för att avsluta Claude helt.
Claude kan vara mitt i en lång tankecykel (visat som "Thinking..." eller "Cogitating..."). Vänta minst 5 minuter innan du avbryter — vid stora uppgifter kan thinking ta tid. Om verkligen hängt: Ctrl+C + starta om.
Anthropic släpper nya versioner ofta. Uppdatera med:
npm update -g @anthropic-ai/claude-code
Verifiera ny version: claude --version. Värt att göra ungefär varje vecka.
Anders — om något krånglar, kopiera felmeddelandet och paste:a det i Claude (antingen webchatt eller Claude Code self-help). 90% av frågor löser sig så.
Dålig: "Fixa buggen"
Bra: "Det här testet failar med AttributeError: 'NoneType' has no attribute 'name'. Kolla varför user-objektet är None i scheduler.py rad 47."
Skapa en fil CLAUDE.md i ditt repo med kontext om projektet: vad det gör, vilka konventioner du använder, vad du INTE vill att Claude ska göra. Den läses automatiskt av Claude vid varje session.
När Claude gör större ändringar, committa direkt efter. Då kan du git reset om något blir tokigt.
Säg "klart, gör inget mer" när Claude verkar vilja iterera oändligt på något du redan är nöjd med.
/init-kommandot analyserar repot och skapar en första CLAUDE.md för dig. Bra start.
Säg "spawna en subagent för att..." — då skapar Claude en separat sub-session som löser den specifika uppgiften och returnerar resultatet. Bra för parallellt arbete eller stora research-tasks som annars skulle fylla din context.
/help visar alla kommandonInuti Claude, skriv /help för att se alla slash-kommandon (/clear, /compact, /model, /init, etc).
Tryck Shift+Tab för att toggla mellan modes. Plan-mode låter Claude planera utan att köra något — bra när du vill granska innan execution.
I terminalen — sök bakåt i shell-historik. Du kommer använda samma claude-kommandon mycket.
Vill du jobba på två projekt samtidigt? Öppna två terminal-fönster, cd in i olika projekt-mappar, starta claude i varje. Memory + context är per-projekt så de stör inte varandra.
Hittills har vi gjort små test-script. När du vill bygga något riktigt — en webbapp, en kalkylator-tjänst, en intern dashboard — finns det två stadier: lokalt (kör på din egen dator) och deployat (kör på en server på internet, andra kan nå).
Allt körs på din Windows-dator. Snabbt att testa, ingen kostnad, ingen internet-koppling krävs.
Statisk site (HTML/CSS/JS — som denna guide):
cd min-projekt
python -m http.server 8000
# Öppna http://localhost:8000 i webbläsaren
Python-webbapp (Flask eller FastAPI):
pip install fastapi uvicorn
# Säg till Claude: "skapa en FastAPI-app som visar dagens datum"
# Sen kör:
uvicorn main:app --reload
# Öppna http://localhost:8000
Node-webbapp (Express):
npm init -y
npm install express
# Säg till Claude: "skapa Express-server med GET / som returnerar Hello"
node server.js
Frontend med React/Vite:
npm create vite@latest min-app -- --template react
cd min-app
npm install
npm run dev
# Öppna http://localhost:5173
| Alternativ | När använda | Setup |
|---|---|---|
| SQLite | Småprojekt, prototyper, ensam-användning. En fil på disk. | Inbyggt i Python — ingen install krävs |
| PostgreSQL (lokalt) | Mer seriösa projekt. Samma DB som du sen kör i prod. | Ladda ner från postgresql.org eller via Docker |
| Docker | Vill köra PostgreSQL/Redis/etc utan att installera direkt på Windows | Docker Desktop för Windows + docker run postgres |
Säg till Claude: "sätt upp SQLite-databas i mitt projekt med tabeller för ärenden och förfallodagar". Den skapar schema, migration-script, och första queries åt dig.
När din app funkar lokalt och du vill att andra ska kunna nå den (via en URL på internet):
| Typ av app | Bästa alternativ | Pris | Krångel |
|---|---|---|---|
| Statisk site (HTML/JS, React-build) | GitHub Pages, Netlify, Vercel, Cloudflare Pages | Gratis (hobby-tier) | Minimalt — pusha till git, deploy automatiskt |
| Frontend + backend-API | Railway, Render, Fly.io | Gratis-tier → ~50-100 kr/mån för småprojekt | Lätt — connect git-repo, definiera kommando, klar |
| Egen Linux-server (full kontroll) | Hetzner Cloud (billigast, EU), DigitalOcean, AWS Lightsail | ~50-200 kr/mån för en server | Mer jobb — SSH, nginx-config, certbot, deploy-script |
| Stora etablerade plattformar | AWS, Google Cloud, Azure | Pay-per-use (kan bli dyrt) | Mycket — kräver kunskap, men powerful |
| Hemma-server | Raspberry Pi, gammal laptop, etc | Hårdvaru-kostnad + el | Kräver lite nätverk-kunskap (port forwarding, dynamisk DNS) |
För Anders första riktiga projekt: Statisk site → GitHub Pages (gratis, 5 min setup). När du behöver backend → Railway eller Render (gratis-tier räcker för start).
Säg till Claude:
Jag har en FastAPI-app som funkar lokalt. Hjälp mig deploya
den till Railway. Förklara stegen.
Claude kommer:
requirements.txt, Procfile eller railway.toml)Samma för andra plattformar — Vercel, Netlify, Fly.io, etc. Claude vet vad varje plattform kräver.
Det viktigaste tipset i hela guiden:
Du behöver inte komma ihåg allt i den här guiden. Du behöver inte googla felmeddelanden. Du behöver inte gissa vilken plattform som passar bäst.
Fråga Claude. Bokstavligen vad som helst:
Claude svarar gärna, även på "dumma" frågor. Det finns inga dumma frågor — det enda dumma är att fastna och inte fråga.
Du är jurist — några overväganden:
Anthropic ger dig rättigheter att använda output kommersiellt. Men: kod genererad av AI har osäker copyright-status i många jurisdiktioner. För klient-arbete: dokumentera vad som är ditt och vad som är AI-genererat.
Allt du skriver i Claude skickas till Anthropic. För:
Passar: Egna projekt, prototyper, lära sig, snabba script, regression-fixes med tydliga tester.
Passar inte: Säkerhets-kritiska system utan extern review, regulatoriskt-bundna deliverables, juridiskt bindande generering (klient-kontrakt — använd specialiserade tools).
För klient-arbete: spara prompts + output som audit-trail. Anders som jurist vet att paper-trail är allt.