Skip to content

Repository files navigation

Kamod CLI

Kamod CLI Kamod CLI

Zentrales Workspace- und Bootstrap-CLI für das Kamod-Ökosystem.

Lokale Entwicklung

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 --global

Falls 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 --global

PNPM_HOME (nicht nur …/bin) muss im PATH stehen — das ist in ~/.zshrc bereits vorkonfiguriert.

Alternativ mit npm:

npm install && npm run build && npm link

Prüfen:

kamod --config kamod.workspace.local.yml doctor
kamod --config kamod.workspace.local.yml status
kamod --config kamod.workspace.local.yml launch --list

Kü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-preview

Ohne globalen Link direkt aus dem Projekt:

pnpm run start:local -- status
pnpm run dev:local -- launch --list

Hinweise für lokal:

  • kamod.workspace.local.yml wird automatisch bevorzugt, wenn vorhanden
  • kamod.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: false in der Local-Config — keine AGENTS.md in bestehenden Projekten

Installation auf der Pi-VM

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-cli

ZIP 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 link

Prüfen:

kamod --help
kamod doctor

GitHub SSH

sudo -iu watzak
ssh-keygen -t ed25519 -C "pi-klaus"
cat ~/.ssh/id_ed25519.pub

Den öffentlichen Schlüssel bei GitHub hinterlegen und testen:

ssh -T git@github.com

Bootstrap

Standard:

kamod bootstrap

Vollständig inklusive Dependencies und Builds:

kamod bootstrap --full

Nur ausgewählte Projekte:

kamod bootstrap otok kamod-ui

Typische Befehle

kamod 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 otok

Release (Push + Publish + Launch)

kamod 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-preview

Schritte:

  1. optional --bump patch|minor|major (Repo-Release-Script)
  2. git push mit --tag (optional --skip-push)
  3. npm publish (optional --skip-publish)
  4. Campaign-YAML aus Version/Changelog vorbereiten (--campaign auto)
  5. Launch-Pack + Content Pack generieren
  6. Kopie nach {repo}/.launch/{version}/
  7. optional --github-release (Draft via gh)

Einzelne Schritte weiterhin möglich:

kamod publish kamod-hooks --with-launch --campaign auto --with-pack
kamod launch kamod-hooks --campaign auto --with-pack

npm publish

kamod publish ruft die Publish-Scripts der anderen Kamod-Repos auf — nicht @kamod/cli (bleibt privat).

Einmalig npm anmelden:

npm login
npm whoami

Dry-Run (Pack-Check, kein Upload):

kamod publish kamod-hooks --dry-run
kamod publish kamod-icons --dry-run --allow-dirty

Verö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

Release-Workflow

# 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.

Launch-Operator (Voraussetzung)

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 install

Prüfen:

kamod launch --list
npm run generate:launch -- otok otok-saas-starter-preview   # im Launch-Operator

Ohne node_modules im Launch-Operator schlagen generate:launch / generate:pack fehl (tsx nicht gefunden). kamod release --dry-run zeigt die Schritte trotzdem an.

Workspace-Config (Launch & Release)

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

Dev-Server / Demos

kamod dev startet den Dev-Server eines Repositories — ohne manuell ins Verzeichnis zu wechseln.

Verfügbare Targets anzeigen:

kamod dev --list

Demo starten:

kamod dev otok
kamod dev kamod-ui
kamod dev kamod-icons
kamod dev kamod-hooks

Alternatives Script (Override):

kamod dev kamod-icons --script dev:icons

In 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 --list

Auto-Erkennung (ohne dev.script): sucht in der Reihenfolge dev:demo, docs:dev, dev:docs, demo, dev.

Release-Optionen (Referenz)

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}

Was bootstrap macht

  • legt /srv/workspace/kamod an
  • legt customers, experiments und playground an
  • klont fehlende Repositories
  • installiert optional Dependencies
  • baut optional alle Projekte
  • erstellt AGENTS.md, PROJECT.md und TASKS.md
  • führt kamod doctor aus
  • 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.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages