Zentrales Workspace- und Bootstrap-CLI für das Kamod-Ökosystem.
Für den Einsatz unter /home/watzak/master/kamod (bestehende Repos, kein erneutes Klonen nötig):
cd /home/watzak/master/kamod/kamod-cli
cp kamod.workspace.local.example.yml kamod.workspace.local.yml
# workspace-Pfad in kamod.workspace.local.yml anpassen, falls nötig
pnpm install
pnpm run build
pnpm link --globalFalls pnpm link --global meldet, dass /home/watzak/.local/share/pnpm nicht im PATH ist:
source ~/.zshrc
# oder einmalig:
export PNPM_HOME="$HOME/.local/share/pnpm"
export PATH="$PNPM_HOME:$PATH"
pnpm link --globalPNPM_HOME (nicht nur …/bin) muss im PATH stehen — das ist in ~/.zshrc bereits vorkonfiguriert.
Alternativ mit npm:
npm install && npm run build && npm linkPrüfen:
kamod --config kamod.workspace.local.yml doctor
kamod --config kamod.workspace.local.yml status
kamod --config kamod.workspace.local.yml launch --listKürzer — Alias in ~/.zshrc:
alias kamod-local='kamod --config /home/watzak/master/kamod/kamod-cli/kamod.workspace.local.yml'Dann:
kamod-local status
kamod-local launch otok --campaign otok-saas-starter-previewOhne globalen Link direkt aus dem Projekt:
pnpm run start:local -- status
pnpm run dev:local -- launch --listHinweise für lokal:
kamod.workspace.local.ymlwird automatisch bevorzugt, wenn vorhandenkamod.workspace.yml→ Pi-VM (/srv/workspace/kamod)kamod.workspace.local.yml→ lokaler Monorepo-Ordner (gitignored, aus Example kopieren)- Vorhandene Repos werden erkannt;
cloneüberspringt sie createAgentFiles: falsein der Local-Config — keine AGENTS.md in bestehenden Projekten
sudo apt-get update
sudo apt-get install -y git ripgrep jq unzip
sudo mkdir -p /opt/kamod-cli
sudo chown -R watzak:watzak /opt/kamod-cliZIP nach /tmp kopieren und dann:
sudo -iu watzak
unzip /tmp/kamod-cli-starter.zip -d /tmp/kamod-cli-unpack
cp -a /tmp/kamod-cli-unpack/kamod-cli/. /opt/kamod-cli/
cd /opt/kamod-cli
pnpm install && pnpm run build && sudo pnpm link --global
# oder: npm install && npm run build && sudo npm linkPrüfen:
kamod --help
kamod doctorsudo -iu watzak
ssh-keygen -t ed25519 -C "pi-klaus"
cat ~/.ssh/id_ed25519.pubDen öffentlichen Schlüssel bei GitHub hinterlegen und testen:
ssh -T git@github.comStandard:
kamod bootstrapVollständig inklusive Dependencies und Builds:
kamod bootstrap --fullNur ausgewählte Projekte:
kamod bootstrap otok kamod-uikamod clone
kamod clone otok kamod-ui
kamod pull
kamod pull --tag preact
kamod push otok
kamod push otok --tag v0.3.0
kamod update
kamod status
kamod install
kamod build
kamod dev --list
kamod dev otok
kamod dev kamod-icons
kamod search useSignal
kamod launch --list
kamod launch otok --campaign otok-saas-starter-preview
kamod publish kamod-hooks --dry-run
kamod publish kamod-ui --with-launch --campaign auto
kamod release kamod-hooks --bump patch --dry-run
kamod release otok --tag v0.3.0 --github-release
kamod ai
kamod ai otokkamod release orchestriert den kompletten Release-Flow:
# Dry-Run: zeigt alle Schritte
kamod release kamod-hooks --bump patch --dry-run
# Vollständiger Release mit Auto-Campaign aus Version
kamod release kamod-hooks --tag v0.2.0
# Mit GitHub Release Draft
kamod release kamod-ui --github-release
# Nur Publish + Launch (ohne Push)
kamod release otok --skip-push --campaign otok-saas-starter-previewSchritte:
- optional
--bump patch|minor|major(Repo-Release-Script) git pushmit--tag(optional--skip-push)npm publish(optional--skip-publish)- Campaign-YAML aus Version/Changelog vorbereiten (
--campaign auto) - Launch-Pack + Content Pack generieren
- Kopie nach
{repo}/.launch/{version}/ - optional
--github-release(Draft viagh)
Einzelne Schritte weiterhin möglich:
kamod publish kamod-hooks --with-launch --campaign auto --with-pack
kamod launch kamod-hooks --campaign auto --with-packkamod publish ruft die Publish-Scripts der anderen Kamod-Repos auf — nicht @kamod/cli (bleibt privat).
Einmalig npm anmelden:
npm login
npm whoamiDry-Run (Pack-Check, kein Upload):
kamod publish kamod-hooks --dry-run
kamod publish kamod-icons --dry-run --allow-dirtyVeröffentlichen (nach Version-Bump im Ziel-Repo):
kamod publish kamod-hooks
kamod publish kamod-ui kamod-signals
kamod publish --tag library| Repo | Script | npm-Paket |
|---|---|---|
| kamod-hooks, icons, signals | publish:core |
@kamod-ch/* |
| kamod-ui, otok | release:publish |
Changesets |
| preactpress | release |
@kamod-ch/preactpress |
| kamod-state | pack:core |
Dry-Run only (noch kein publish:core) |
Blockiert: kamod-cli, kamod-launch-operator, preacthub, syncding
# Empfohlen: alles in einem Schritt
kamod release kamod-hooks --bump patch --dry-run
kamod release kamod-hooks --tag v0.2.0
# Oder manuell Schritt für Schritt:
cd /home/watzak/master/kamod/kamod-hooks
git add . && git commit -m "feat: ..."
kamod push kamod-hooks --tag v0.2.0
kamod publish kamod-hooks --dry-run
kamod publish kamod-hooks --with-launch --campaign auto
# → kamod-launch-operator/dist-launches/kamod-hooks/kamod-hooks-v0-2-0/
# → kamod-hooks/.launch/v0.2.0/Campaigns liegen als YAML in kamod-launch-operator/campaigns/. Bei --campaign auto wird aus package.json + CHANGELOG.md eine Campaign-Datei erzeugt.
kamod launch, kamod release und publish --with-launch rufen Scripts im Repo kamod-launch-operator auf. Vor dem ersten Einsatz:
kamod clone kamod-launch-operator
cd /home/watzak/master/kamod/kamod-launch-operator # Pfad laut workspace-Config
npm installPrüfen:
kamod launch --list
npm run generate:launch -- otok otok-saas-starter-preview # im Launch-OperatorOhne node_modules im Launch-Operator schlagen generate:launch / generate:pack fehl (tsx nicht gefunden). kamod release --dry-run zeigt die Schritte trotzdem an.
In kamod.workspace.yml / kamod.workspace.local.yml:
launch:
operatorRepo: kamod-launch-operator
outputDir: dist-launches
campaignsDir: campaigns
release:
defaultWithLaunch: true # kamod release generiert standardmäßig Launch-Packs
defaultGithubRelease: false # optional: gh release create --draft
repositories:
- name: kamod-hooks
launchProjectId: kamod-hooks
launch:
campaignTemplate: "{name}-v{version}" # für --campaign auto
copyTo: ".launch/{version}" # Ziel im Ziel-Repo
defaultCampaign: otok-saas-starter-preview # optional: für kamod launch ohne --campaign
publish:
script: publish:core| Option | Bedeutung |
|---|---|
launchProjectId |
Projekt-ID im Launch-Operator (projects.ts, campaigns/) |
campaignTemplate |
Slug bei --campaign auto, Platzhalter {name}, {version} |
defaultCampaign |
Feste Campaign für kamod launch <repo> ohne --campaign |
copyTo |
Wohin das generierte Pack ins Ziel-Repo kopiert wird |
kamod dev startet den Dev-Server eines Repositories — ohne manuell ins Verzeichnis zu wechseln.
Verfügbare Targets anzeigen:
kamod dev --listDemo starten:
kamod dev otok
kamod dev kamod-ui
kamod dev kamod-icons
kamod dev kamod-hooksAlternatives Script (Override):
kamod dev kamod-icons --script dev:iconsIn kamod.workspace.yml / kamod.workspace.local.yml pro Repository konfigurierbar:
repositories:
- name: kamod-icons
dev:
script: docs:dev # npm/pnpm-Script (optional — sonst Auto-Erkennung)
directory: packages/docs # Unterverzeichnis (optional)
description: Icon browser # Anzeige in dev --listAuto-Erkennung (ohne dev.script): sucht in der Reihenfolge dev:demo, docs:dev, dev:docs, demo, dev.
| Flag | Befehl | Wirkung |
|---|---|---|
--bump patch|minor|major |
release |
Repo-Release-Script vor Push |
--tag vX.Y.Z |
push, release |
Git-Tag setzen/pushen |
--campaign <slug> / auto |
launch, release, publish |
Campaign-Slug oder aus Version ableiten |
--with-launch |
publish |
Nach Publish Launch-Pack erzeugen |
--without-launch |
release |
Nur Push + Publish |
--with-pack |
launch, release, publish |
Zusätzlich Content Pack |
--skip-push / --skip-publish |
release |
Schritt überspringen |
--github-release |
launch, release, publish |
GitHub Release Draft (gh nötig) |
--output <pfad> |
launch, publish |
Kopie statt Default .launch/{version} |
- legt
/srv/workspace/kamodan - legt
customers,experimentsundplaygroundan - klont fehlende Repositories
- installiert optional Dependencies
- baut optional alle Projekte
- erstellt
AGENTS.md,PROJECT.mdundTASKS.md - führt
kamod doctoraus - zeigt den Repository-Status
Passe vor kamod clone die passende Config an (kamod.workspace.yml für Pi, kamod.workspace.local.yml lokal), besonders optionale Repositories und launchProjectId-Mappings.