docs: wiki Development

2026-06-02 15:10:46 +02:00
parent 7d51c19afa
commit 948654039d
+75
@@ -0,0 +1,75 @@
# 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`:
```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.