docs: wiki Development
+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.
|
||||
Reference in New Issue
Block a user