# Claude Code pluginit: mikä on plugin, mistä niitä saa ja näin teet oman

> Claude Coden plugin niputtaa skillit, subagentit, hookit ja MCP-palvelimet yhdeksi paketiksi. Näin asennat pluginin /plugin-komennolla, valitset asennusalueen ja teet oman pluginin ja markkinapaikan tiimillesi.

Lähde: https://vibekoodaus.fi/blogi/claude-code-pluginit
Kirjoittaja: Vibekoodaus
Julkaistu: 2026-11-12
Päivitetty: 2026-11-12

---

# Claude Code pluginit: mikä on plugin, mistä niitä saa ja näin teet oman

Jos olet jo kirjoittanut pari omaa skilliä, hookin ja MCP-asetuksen, tiedät ongelman. Kaikki toimii omalla koneella, mutta kun kollega kysyy "miten saan saman setupin", vastaus on kopioitavien tiedostojen lista ja ohje siitä, mihin mikäkin laitetaan.

Plugin ratkaisee juuri tämän. **Claude Coden plugin on hakemisto, joka niputtaa skillit, subagentit, hookit ja MCP-palvelimet yhdeksi kokonaisuudeksi, jonka Claude Code asentaa ja lataa kerralla.** Pluginit jaetaan markkinapaikkojen (marketplace) kautta, ja ne asennetaan `/plugin`-komennolla.

Käydään läpi, mitä pluginin sisällä on, miten sellainen asennetaan, mitä se maksaa kontekstissa ja miten teet oman pluginin ja tiimille oman markkinapaikan. Kaikki komennot ja tiedostopolut ovat [Claude Coden virallisesta dokumentaatiosta](https://code.claude.com/docs/en/plugins).

---

## Mikä on Claude Code plugin?

Plugin on tavallinen hakemisto. Sen juuressa on yleensä manifesti `.claude-plugin/plugin.json`, joka antaa pluginille nimen ja halutessasi version, kuvauksen ja tekijän. Varsinainen sisältö on muissa kansioissa:

- **Skillit** kansiossa `skills/`: `SKILL.md`-ohjeita, jotka Claude lataa tarvittaessa ja jotka voit ajaa myös komentona. Skilleistä enemmän [skillien oppaassa](/blogi/claude-code-skillit).
- **Subagentit** kansiossa `agents/`: agenttimäärittelyjä, joille Claude voi delegoida töitä. Ks. [subagentit](/blogi/claude-code-subagentit).
- **Hookit** tiedostossa `hooks/hooks.json`: komentoja, jotka Claude Code ajaa tietyissä kohdissa, esimerkiksi jokaisen muokkauksen jälkeen. Ks. [Claude Code hooks](/blogi/claude-code-hookit).
- **MCP-palvelimet** tiedostossa `.mcp.json`: työkalupalvelimia, joihin Claude Code yhdistää, kun plugin on päällä. Ks. [Claude Code ja MCP](/blogi/claude-code-mcp-opas).

Mikään osa ei ole pakollinen. Pienin toimiva plugin sisältää yhden skillin.

Yksi asia muuttuu, kun skill siirtyy pluginin sisään: sen nimeen tulee pluginin nimi etuliitteeksi. Jos pluginin nimi on `my-plugin` ja skillin nimi `review`, ajat sen komennolla `/my-plugin:review`. Näin kaksi eri pluginia voi tarjota kumpikin `review`-nimisen skillin ilman törmäystä.

Sekaannusta aiheuttaa usein sana "plugin" itse. VS Coden laajennus ja JetBrainsin plugin ovat tapoja ajaa Claude Codea editorissa, eivät Claude Coden plugineja. Niistä kerrotaan erikseen artikkelissa [Claude Code VS Codessa, JetBrainsissa ja työpöydällä](/blogi/claude-code-vscode-jetbrains-desktop).

## Tarvitsetko pluginia vai riittääkö pelkkä skill?

Skillit, subagentit, hookit ja MCP-palvelimet toimivat kaikki myös ilman pluginia. Kansioon `~/.claude/skills/` tallennettu skill on käytössä jokaisessa projektissa omalla koneellasi, eikä siihen tarvita pakettia.

Dokumentaatio vetää rajan selvästi: pidä erillinen setup niin kauan kuin se palvelee yhtä projektia tai vain sinua. Plugin kannattaa tehdä, kun haluat

- jakaa setupin tiimille,
- asentaa saman kokonaisuuden moneen projektiin tai
- julkaista versioituja päivityksiä.

Toisen tekemän pluginin asentaminen on taas helppo tapa saada valmis kokonaisuus yhdellä komennolla, ja päivitykset tulevat markkinapaikasta.

## Mikä on markkinapaikka?

Markkinapaikka on repositorio tai hakemisto, jossa on tiedosto `.claude-plugin/marketplace.json`. Se luettelee pluginit ja kertoo, mistä kukin haetaan. Kyse on siis luettelosta, ei kaupasta, joka isännöisi tiedostoja.

Claude Code lisää Anthropicin virallisen markkinapaikan `claude-plugins-official` automaattisesti, kun käynnistät ensimmäisen interaktiivisen terminaali-istunnon. Muut markkinapaikat lisäät itse kerran, minkä jälkeen niiden pluginit asentuvat nimellä muodossa `plugin@markkinapaikka`.

Markkinapaikat jaetaan nimen perusteella kolmeen tasoon:

| Taso | Mitä se tarkoittaa |
| :- | :- |
| Official | Anthropicin viralliset nimet, kuten `claude-plugins-official` ja `claude-code-plugins` |
| Community | Anthropicin yhteisönimet, kuten `claude-community` |
| Third-party | Kaikki muut, myös kollegan tai oman organisaatiosi markkinapaikka |

Claude Code hyväksyy virallisen ja yhteisötason nimet vain markkinapaikoille, jotka tulevat `github.com/anthropics/`-repositorioista. Kolmannen osapuolen markkinapaikka ei siis voi esiintyä Anthropicin nimellä. Taso kertoo kuitenkin vain, kuka luetteloa ylläpitää, ei sitä, mitä yksittäinen plugin tekee.

## Näin asennat pluginin /plugin-komennolla

Dokumentaation esimerkkiplugin on `commit-commands` virallisesta markkinapaikasta. Se lisää komennot committaamiseen, pushaamiseen ja pull requestien avaamiseen. Sama polku toimii mille tahansa pluginille.

Käynnistä Claude Code projektissasi komennolla `claude` ja aja:

```text
/plugin install commit-commands@claude-plugins-official
```

Istunnossa komento ei asenna heti. Se avaa `/plugin`-paneelin pluginin tietoihin, jotta voit katsoa sisällön ja valita asennusalueen ensin. Jos haluat selata, aja pelkkä `/plugin`: paneeli aukeaa Discover-välilehdelle, jossa voit hakea kirjoittamalla.

Tietonäkymästä kannattaa lukea ainakin kaksi kohtaa:

- **Will install** listaa komennot, agentit, skillit, hookit sekä MCP- ja LSP-palvelimet, jotka plugin lisää.
- **Context cost** näyttää virallisen markkinapaikan plugineille kaksi token-arviota: mitä plugin lisää jokaiseen viestiin ja mitä sen skillit ja agentit lisäävät, kun Claude lataa ne. Arvio näkyy, kun avaat pluginin nimeämällä markkinapaikan kuten yllä, tai Marketplaces-välilehdeltä. Discover-listan kautta avatussa näkymässä sitä ei ole.

Seuraavaksi valitset asennusalueen, ja Claude Code asentaa pluginin. Yhteenvedon viimeinen lause kertoo, voiko pluginia käyttää heti. Jos siinä lukee `Plugin is now active.`, mitään ei tarvitse tehdä. Jos siinä lukee `Run /reload-plugins to apply.`, Claude Code ajaa uudelleenlatauksen puolestasi, kun paneeli sulkeutuu.

Toimiiko se? Kirjoita `/` ja etsi pluginin skillit sen nimen alta. `commit-commands`-pluginilla listaan ilmestyy `/commit-commands:commit`. Asennetut pluginit näkyvät myös `/plugin`-paneelin Installed-välilehdellä.

## Asennusalueet: user, project ja local

Asennusalue ratkaisee, kenelle plugin on päällä ja mihin asetustiedostoon se kirjataan:

| Alue | Kenelle | Tiedosto |
| :- | :- | :- |
| User | Sinulle kaikissa projekteissa tällä koneella | `~/.claude/settings.json` |
| Project | Kaikille, jotka työskentelevät repositoriossa | `.claude/settings.json` (commitoidaan) |
| Local | Sinulle vain tässä repositoriossa | `.claude/settings.local.json` |

Merkintä menee avaimen `enabledPlugins` alle. Jos sama plugin on asetettu usealla tasolla, local voittaa projectin ja project voittaa userin.

Project-alueessa on yksi kompastuskivi. Commitoitu merkintä kytkee pluginin päälle kollegoille, mutta ei lataa sitä heidän koneelleen. Jokainen ajaa kerran kloonia kohden:

```bash
claude plugin install nimi@markkinapaikka --scope project
```

Tiimin repositorion `.claude/settings.json` voi näyttää tältä. Avain `extraKnownMarketplaces` rekisteröi tiimin markkinapaikan kaikille, jotka avaavat repositorion, ja `enabledPlugins` kytkee pluginit päälle:

```json
{
  "extraKnownMarketplaces": {
    "acme-tools": {
      "source": {
        "source": "github",
        "repo": "acme-corp/claude-plugins"
      }
    }
  },
  "enabledPlugins": {
    "code-formatter@acme-tools": true,
    "commit-commands@claude-plugins-official": true
  }
}
```

Claude Code huomioi repositorion `extraKnownMarketplaces`-merkinnät vasta, kun olet hyväksynyt kansion luottamusdialogin (workspace trust). Asetustiedostojen tasoista ja oikeussäännöistä kerrotaan tarkemmin artikkelissa [Claude Code oikeudet ja asetukset](/blogi/claude-code-oikeudet-ja-asetukset).

## Pluginien hallinta komentoriviltä

Kaiken saa tehtyä myös suoraan shellistä ilman istuntoa, esimerkiksi asennusskriptissä:

```bash
# Asenna (oletuksena user-alueelle)
claude plugin install formatter@your-org --scope project

# Listaa asennetut, mukana Version, Scope ja Status
claude plugin list

# Kytke pois ja takaisin päälle
claude plugin disable formatter@your-org
claude plugin enable formatter@your-org

# Poista project-alueelta
claude plugin uninstall formatter@your-org --scope project
```

Shellistä asennetut pluginit latautuvat seuraavassa istunnossa, tai heti kun ajat avoimessa istunnossa `/reload-plugins`.

Uudella koneella, jolla kukaan ei ole vielä avannut interaktiivista istuntoa, virallista markkinapaikkaa ei ole vielä rekisteröity. Skriptin kannattaa silloin lisätä se ensin:

```bash
claude plugin marketplace add anthropics/claude-plugins-official
```

Muun markkinapaikan lisäät samalla tavalla. Lähteeksi käy GitHub-repositorio muodossa `owner/repo`, mikä tahansa git-osoite `https://`-alkuisena, paikallinen hakemisto (aloita suhteellinen polku `./`) tai `https://`-osoite `marketplace.json`-tiedostoon. Istunnon sisällä sama komento on `/plugin marketplace add`.

## Pluginien päivittäminen ja poistaminen

Plugin päivittyy itsestään, jos sen markkinapaikassa on automaattinen päivitys päällä. Claude Code päivittää silloin levyllä olevat kopiot istunnon alettua, mutta käynnissä oleva istunto pitää jo lataamansa version. Näet viestin `Plugin updated`, ja uusi versio latautuu komennolla `/reload-plugins` tai seuraavassa istunnossa.

Käsin päivität yhden pluginin Installed-välilehdeltä valinnalla **Update now** tai shellissä:

```bash
claude plugin update commit-commands@claude-plugins-official
```

Kaikkia plugineja kerralla päivittävää komentoa ei ole. Yhden markkinapaikan kaikki pluginit saa päivitettyä Marketplaces-välilehden valinnalla **Update marketplace**. Pelkkä `claude plugin marketplace update` ilman nimeä päivittää vain luettelot, ei asennettuja plugineja.

Poistossa on kaksi yksityiskohtaa, jotka on hyvä tietää etukäteen:

- Jos poistat pluginin, jonka repositorion `.claude/settings.json` kytkee päälle, Claude Code kysyy, mitä tarkoitat. Näppäin **y** kytkee sen pois vain sinulta tiedostoon `.claude/settings.local.json`, ja **u** poistaa sen jaetusta tiedostosta kaikilta.
- Jos plugin on asentanut riippuvuuksia, ne jäävät koneelle poiston jälkeen, kunnes ajat `claude plugin prune`.

Kun poistat kokonaisen markkinapaikan, Claude Code poistaa samalla kaikki siitä asennetut pluginit. Marketplaces-välilehti näyttää ne ennen vahvistusta.

## Mitä plugin maksaa kontekstissa

Tämä jää helposti huomaamatta. Päällä oleva plugin on mukana jokaisessa istunnossa, ei vain niissä, joissa käytät sitä.

Jokaisen skillin, agentin ja komennon nimi ja kuvaus, jonka Claude voi kutsua itse, on Clauden kontekstissa joka vuorolla, jotta Claude tietää sen olemassaolosta. Nämä tokenit lasketaan käyttöösi ja vievät tilaa konteksti-ikkunasta silloinkin, kun pluginista ei ajeta mitään. Skillin tai agentin koko teksti latautuu vasta, kun sitä käytetään. Lisäksi pluginin MCP-palvelimet pyörivät istunnon rinnalla ja hookit laukeavat tapahtumissaan.

Jalanjäljen voi tarkistaa kolmessa vaiheessa:

1. **Ennen asennusta** katso tietonäkymän arvio kohdasta Context cost.
2. **Asennuksen jälkeen** aja `claude plugin details nimi`. Rivi `Always-on` kertoo, montako tokenia plugin lisää jokaiseen istuntoon.
3. **Siivotessa** katso Installed-välilehden ryhmää **Not used recently**. Siinä ovat itse asentamasi pluginit, joita et ole käyttänyt hetkeen.

Jos et halua poistaa pluginia, kytke se pois `/plugin`-paneelista tai komennolla `claude plugin disable`. Kontekstin hallinnasta laajemmin kerrotaan artikkelissa [Claude Code konteksti ja muisti](/blogi/claude-code-konteksti-ja-muisti).

## Ovatko pluginit turvallisia?

Dokumentaatio sanoo asian suoraan: asentamasi plugin voi ajaa mitä tahansa koodia koneellasi sinun käyttöoikeuksillasi. Tämä pätee markkinapaikasta riippumatta.

Pluginin hookit ajetaan shell-komentoina. MCP-palvelimet käynnistyvät prosesseina koneellasi, ja pluginin `bin/`-kansio lisätään Bash-työkalun `PATH`-muuttujaan. Tärkein yksityiskohta on tämä: Claude Coden oikeussäännöt ja hiekkalaatikko koskevat Clauden tekemiä työkalukutsuja, eivät koodia, jonka plugin ajaa itse. Hookit, MCP-palvelimet ja LSP-palvelimet ajetaan hiekkalaatikon ulkopuolella.

Myös automaattiset päivitykset kannattaa tuntea. Virallisilla markkinapaikoilla ne ovat oletuksena päällä, yhteisö- ja kolmannen osapuolen markkinapaikoilla pois päältä. Kun automaattinen päivitys on päällä, lukemasi tiedostot voivat vaihtua levyllä taustalla.

Käytännön tarkistuslista ennen asennusta:

- Aja `claude plugin marketplace list` ja katso, mistä markkinapaikka on lisätty.
- Lue tietonäkymän lista kohdassa Will install. Hookit ja MCP-palvelimet ovat ne osat, jotka ajavat koodia.
- Avaa pluginin repositorio ja lue `hooks/hooks.json` ja `.mcp.json`, ennen kuin asennat tuntemattomasta lähteestä.

## Näin teet oman pluginin

Oma plugin syntyy muutamassa minuutissa. Esimerkissä pluginissa on yksi skill.

**1. Luo hakemisto ja manifesti.**

```bash
mkdir -p my-first-plugin/.claude-plugin
mkdir -p my-first-plugin/skills/hello
```

Tallenna tiedostoksi `my-first-plugin/.claude-plugin/plugin.json`:

```json
{
  "name": "my-first-plugin",
  "description": "A greeting plugin to learn the basics",
  "version": "1.0.0",
  "author": {
    "name": "Your Name"
  }
}
```

Vain `name` on pakollinen. Siitä tulee etuliite pluginin jokaiselle skillille ja agentille, eikä siinä saa olla välilyöntejä. Kentällä `version` lukitset käyttäjät tiettyyn versioon, kunnes vaihdat sen.

**2. Lisää skill.** Tiedosto `my-first-plugin/skills/hello/SKILL.md`:

```markdown
---
name: hello
description: Greet the user with a friendly message
disable-model-invocation: true
---

Greet the user warmly and ask how you can help them today.
```

Rivi `disable-model-invocation: true` estää Claudea ajamasta skilliä omasta aloitteestaan. Poista se, jos haluat Clauden käyttävän skilliä itse.

**3. Validoi ja testaa.**

```bash
claude plugin validate ./my-first-plugin
claude --plugin-dir ./my-first-plugin
```

Validointi tarkistaa manifestin ja skillin frontmatterin ja tulostaa onnistuessaan `Validation passed`. Lippu `--plugin-dir` lataa pluginin yhdeksi istunnoksi asentamatta sitä. Aja istunnossa `/my-first-plugin:hello`, niin Claude tervehtii. Kun muokkaat tiedostoja istunnon aikana, `/reload-plugins` lataa muutokset.

Isomman pluginin rakentamiseen virallisessa markkinapaikassa on apuplugin `plugin-dev`. Kun se on asennettu, aja `/plugin-dev:create-plugin` ja kuvaile, millaisen pluginin haluat. Claude käy suunnittelun, tiedostot ja validoinnin läpi kanssasi.

Hakemistorakenteessa yksi virhe on yleisempi kuin muut: vain `plugin.json` kuuluu kansioon `.claude-plugin/`. Jos `skills/` on sen sisällä, plugin latautuu mutta skillit puuttuvat.

| Sijainti | Sisältö |
| :- | :- |
| `.claude-plugin/plugin.json` | Manifesti |
| `skills/` | Yksi `nimi/SKILL.md`-kansio skilliä kohden |
| `agents/` | Yksi Markdown-tiedosto subagenttia kohden |
| `hooks/hooks.json` | Hookit samassa muodossa kuin asetustiedoston `hooks` |
| `.mcp.json` | MCP-palvelimien määrittelyt |

### Olemassa olevan .claude-kansion muuttaminen pluginiksi

Jos skillit, agentit ja hookit ovat jo projektin `.claude/`-kansiossa, niitä ei tarvitse kirjoittaa uudelleen. Luo pluginin hakemisto ja manifesti, kopioi kansiot ja siirrä hookit:

```bash
mkdir -p my-plugin/.claude-plugin my-plugin/hooks
cp -r .claude/skills my-plugin/
cp -r .claude/agents my-plugin/
```

Kopioi sitten asetustiedoston `hooks`-objekti tiedostoon `my-plugin/hooks/hooks.json` avaimen `"hooks"` alle. Muoto on sama.

Testaa `--plugin-dir`-lipulla ja poista alkuperäiset vasta sen jälkeen. Siihen asti molemmat ovat ladattuna. Skillit eivät törmää, koska pluginin versiolla on etuliite, mutta hookeilla etuliitettä ei ole. Sama hook ajetaan silloin kahdesti joka kerta.

## Oma markkinapaikka tiimille

Kun plugin on valmis, sen voi lähettää muutamalle ihmiselle hakemistona tai `.zip`-tiedostona. Tiimille oma markkinapaikka on parempi, koska kollegat lisäävät sen kerran ja saavat päivitykset sen kautta. Huomaa, että kolmannen osapuolen markkinapaikoilla automaattinen päivitys on oletuksena pois päältä. Sen voi kytkeä päälle `/plugin`-paneelin Marketplaces-välilehdeltä.

Markkinapaikka on hakemisto, jossa on `.claude-plugin/marketplace.json` ja listatut pluginit:

```bash
mkdir -p my-marketplace/.claude-plugin my-marketplace/plugins
cp -r my-first-plugin my-marketplace/plugins/
```

Tiedosto `my-marketplace/.claude-plugin/marketplace.json` tarvitsee kentät `name`, `owner` ja `plugins`:

```json
{
  "name": "my-marketplace",
  "description": "Plugins for my team",
  "owner": {
    "name": "Your Name"
  },
  "plugins": [
    {
      "name": "my-first-plugin",
      "source": "./plugins/my-first-plugin",
      "description": "A greeting plugin to learn the basics"
    }
  ]
}
```

Kokeile koko kierros omalla koneellasi ennen jakamista:

```bash
claude plugin validate ./my-marketplace
claude plugin marketplace add ./my-marketplace
claude plugin install my-first-plugin@my-marketplace
claude plugin list
```

Kaksi sääntöä säästää eniten selvittelyä. Kirjoita `source`-polku markkinapaikan juuresta eli siitä hakemistosta, jossa `.claude-plugin/` on, äläkä käytä polussa `..`-osaa. Pidä lisäksi `marketplace.json`-merkinnän `name` samana kuin pluginin oman `plugin.json`-tiedoston `name`. Jos ne eroavat, asennus manifestin nimellä epäonnistuu.

Kun hakemisto on pushattu git-palveluun, kollegat lisäävät sen komennolla `/plugin marketplace add your-org/plugins`. Yksityinen repositorio toimii, kunhan koneen git-tunnukset riittävät kloonaukseen. Claude Code ei kysy tunnuksia itse.

## Pluginit VS Codessa, työpöytäsovelluksessa ja pilvessä

Terminaali ei ole ainoa paikka hallita plugineja:

- **VS Code**: kirjoita Claude-paneelin kehotteeseen `/plugins`, niin aukeaa näkymä Manage plugins, jossa on välilehdet Plugins ja Marketplaces.
- **Työpöytäsovellus**: Code-välilehden paikallisessa tai SSH-istunnossa paina kehotteen vieressä **+** ja valitse **Add plugins**.
- **JetBrains**: plugin ajaa Claude Codea IDE:n terminaalissa, joten käytä samaa `/plugin`-komentoa kuin terminaalissa.
- **`claude -p`**: `/plugin` ei toimi ei-interaktiivisessa ajossa, mutta jo asennetut pluginit latautuvat. Hallitse niitä `claude plugin`-komennoilla. Ks. [Claude Code headless ja automaatio](/blogi/claude-code-headless-automaatio).

Samalla koneella terminaali, työpöytäsovelluksen paikalliset istunnot ja VS Coden laajennus lukevat samoja asetustiedostoja. User-alueelle yhdessä asennettu plugin on siis käytössä kahdessa muussakin.

Pilvi-istunto on poikkeus. Esimerkiksi selaimessa claude.ai/code ei lataa omalle koneellesi asennettuja plugineja eikä niitä, jotka repositorion `.claude/settings.json` kytkee päälle. Jos tarvitset saman toiminnallisuuden pilvessä, commitoi skillit ja agentit repositorion `.claude/`-kansioon, sillä ne tulevat kloonin mukana.

## Mistä kannattaa aloittaa

Aloita yhdellä pluginilla virallisesta markkinapaikasta. Aja `/plugin`, valitse jotain oikeasti tarpeellista ja katso tietonäkymästä, mitä se asentaa. Tarkista viikon päästä Installed-välilehdeltä ryhmä Not used recently ja poista turhat.

Jos sinulla on jo toimiva `.claude/`-setup ja tiimi, joka haluaisi saman, tee siitä plugin ja laita se tiimin markkinapaikkaan. Projektin perussäännöt kuuluvat silti edelleen [CLAUDE.md-tiedostoon](/blogi/miten-kirjoittaa-hyva-claude-md). Plugin tuo työkalut, CLAUDE.md kertoo, miten juuri tässä projektissa toimitaan.

Skillit, hookit ja pluginit ovat yhdessä [Claude Code -oppaiden sivun](/vibekoodaus/claude-code#laajentaminen) laajentamisosiossa.
