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
- Unterordner
<plugin>/mit.claude-plugin/plugin.jsonanlegen, plusskills/,agents/,commands/,hooks/nach Bedarf. - Eintrag ins
plugins-Array von.claude-plugin/marketplace.json:{ "name": "<plugin>", "source": "./<plugin>", "description": "..." }sourceist relativ zur Repo-Wurzel (./<ordner>),namemuss mitplugin.jsonübereinstimmen. - JSON validieren (
jq empty .claude-plugin/marketplace.jsonund jedeplugin.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.