Clone
3
Development
l.kirchner edited this page 2026-06-02 15:10:46 +02:00

Development

Repo-Layout

.claude-plugin/marketplace.json     # Marketplace-Manifest (name "luki-net" + plugins[])
knowledge-curator/                  # Plugin
├── .claude-plugin/plugin.json
├── skills/knowledge-curator/SKILL.md
├── agents/{kg-graph-auditor,kg-entity-deduplicator,kg-relation-miner,kg-taxonomy-architect}.md
├── commands/{kg-curate,kg-apply}.md
├── hooks/{hooks.json,backup-memory.sh}
└── README.md
venture/                            # Plugin
├── .claude-plugin/plugin.json
└── skills/{pitch-deck-builder,investor-materials,saas-financial-projections,market-research,executive-summary-writer}/SKILL.md
install.sh                          # local | marketplace (Installer)
push-to-gitea.sh                    # diesen Baum signiert ins Repo pushen
marketplace-entry.json              # Snippet für einen fremden Marketplace
README.md

Neues Plugin / Skill / Agent anlegen

  1. Unterordner <plugin>/ mit .claude-plugin/plugin.json anlegen, plus skills/, agents/, commands/, hooks/ nach Bedarf.
  2. Eintrag ins plugins-Array von .claude-plugin/marketplace.json:
    { "name": "<plugin>", "source": "./<plugin>", "description": "..." }
    
    source ist relativ zur Repo-Wurzel (./<ordner>), name muss mit plugin.json übereinstimmen.
  3. JSON validieren (jq empty .claude-plugin/marketplace.json und jede plugin.json).

Signierter Commit-Workflow

Das Repo ist lokal auf SSH-Signing konfiguriert (gpg.format=ssh, user.signingkey=~/.ssh/id_ed25519.pub, commit.gpgsign=true, gpg.ssh.allowedSignersFile in .git/). Damit:

git add -A
git commit -S -m "feat: <plugin> hinzufügen"
git log --show-signature -1   # MUSS: Good "git" signature for lukirch1984@gmail.com

Erst nach bestätigter „Good signature" pushen.

Push: SSH vs. HTTPS

origin zeigt auf SSH (ssh://git@gitea.luki-net.org:2222/...). Ist der Gitea-SSH-Port 2222 nicht erreichbar, über HTTPS pushen — die Signatur sitzt am Commit und bleibt erhalten:

git push https://gitea.luki-net.org/l.kirchner/claude-marketplace.git main

Credentials dabei nur transient verwenden (kein credential.helper store, kein ~/.git-credentials). Das Hilfsskript push-to-gitea.sh automatisiert Init/Remote/Commit/Push (respektiert die lokale Signing-Config) und akzeptiert REMOTE_URL= zum Umschalten auf HTTPS.

Verifikation in Gitea

Der SSH-Public-Key luki-dev@luki-dev liegt im Profil l.kirchner, daher zeigt Gitea signierte Commits als Verified. Prüfen per API:

tea api -X GET /repos/l.kirchner/claude-marketplace/branches/main \
  | jq '.commit.verification'

Änderungen ausspielen

Nach dem Push in Claude Code:

/plugin marketplace update luki-net
/plugin install <plugin>@luki-net

Schnelltest ohne Marketplace

./install.sh local kopiert Skill/Agents/Commands direkt nach ~/.claude/; ./install.sh marketplace /pfad/zum/repo fügt das Plugin in ein bestehendes Marketplace-Repo ein (braucht jq) und gibt die git-//plugin-Befehle aus — pusht aber nicht selbst.