chore: add Claude tooling and optimize token efficiency

- .claude/scripts/bump.sh: one-command version bump + commit + push
- .claude/scripts/new-feature.sh: branch creation helper
- .claude/session-context.md: session start context
- CLAUDE.md: reduced to dispatch table, no rule duplication
- docs/project-structure.md: restructured as dense module reference

Version: 0.2.1
This commit is contained in:
Faultier314
2026-04-05 22:32:58 +02:00
parent 80c73595d2
commit 6af5df32f6
8 changed files with 235 additions and 47 deletions

62
.claude/scripts/bump.sh Normal file
View File

@@ -0,0 +1,62 @@
#!/usr/bin/env bash
# bump.sh Version erhöhen, CHANGELOG aktualisieren, committen und pushen
#
# Verwendung:
# bash .claude/scripts/bump.sh patch "Beschreibung der Änderung"
# bash .claude/scripts/bump.sh minor "Beschreibung der Änderung"
# bash .claude/scripts/bump.sh major "Beschreibung der Änderung"
set -euo pipefail
BUMP_TYPE="${1:-patch}"
MESSAGE="${2:-}"
if [[ -z "$MESSAGE" ]]; then
echo "Fehler: Beschreibung fehlt."
echo "Verwendung: bash .claude/scripts/bump.sh [patch|minor|major] \"Beschreibung\""
exit 1
fi
ROOT="$(git rev-parse --show-toplevel)"
VERSION_FILE="$ROOT/VERSION"
CHANGELOG_FILE="$ROOT/CHANGELOG.md"
# Aktuelle Version lesen
CURRENT=$(cat "$VERSION_FILE" | tr -d '[:space:]')
IFS='.' read -r MAJOR MINOR PATCH <<< "$CURRENT"
# Version erhöhen
case "$BUMP_TYPE" in
major) MAJOR=$((MAJOR + 1)); MINOR=0; PATCH=0 ;;
minor) MINOR=$((MINOR + 1)); PATCH=0 ;;
patch) PATCH=$((PATCH + 1)) ;;
*)
echo "Fehler: Ungültiger Typ '$BUMP_TYPE'. Erlaubt: patch, minor, major"
exit 1
;;
esac
NEW_VERSION="$MAJOR.$MINOR.$PATCH"
DATE=$(date +%Y-%m-%d)
echo "Bump: $CURRENT$NEW_VERSION ($BUMP_TYPE)"
# VERSION aktualisieren
echo "$NEW_VERSION" > "$VERSION_FILE"
# CHANGELOG-Eintrag einfügen (nach der ersten ---)
ENTRY="## [$NEW_VERSION] - $DATE\n\n### Changed\n- $MESSAGE\n\n---\n"
# Füge nach der ersten '---' Zeile ein
awk -v entry="$ENTRY" '/^---$/ && !inserted { print; printf "%s", entry; inserted=1; next } { print }' \
"$CHANGELOG_FILE" > "$CHANGELOG_FILE.tmp" && mv "$CHANGELOG_FILE.tmp" "$CHANGELOG_FILE"
# Commit und Push
git -C "$ROOT" add "$VERSION_FILE" "$CHANGELOG_FILE"
git -C "$ROOT" commit -m "chore: bump version to $NEW_VERSION
$MESSAGE
Version: $NEW_VERSION"
git -C "$ROOT" push
echo "Fertig: Version $NEW_VERSION committed und gepusht."

View File

@@ -0,0 +1,41 @@
#!/usr/bin/env bash
# new-feature.sh Feature- oder Fix-Branch aus develop erstellen und pushen
#
# Verwendung:
# bash .claude/scripts/new-feature.sh feature <name>
# bash .claude/scripts/new-feature.sh fix <name>
# bash .claude/scripts/new-feature.sh debug <name>
set -euo pipefail
TYPE="${1:-}"
NAME="${2:-}"
if [[ -z "$TYPE" || -z "$NAME" ]]; then
echo "Verwendung: bash .claude/scripts/new-feature.sh [feature|fix|debug] <name>"
exit 1
fi
case "$TYPE" in
feature|fix|debug) ;;
*)
echo "Fehler: Ungültiger Typ '$TYPE'. Erlaubt: feature, fix, debug"
exit 1
;;
esac
BRANCH="$TYPE/$NAME"
ROOT="$(git rev-parse --show-toplevel)"
# Sicherstellen dass develop aktuell ist
echo "Wechsle zu develop und aktualisiere..."
git -C "$ROOT" checkout develop
git -C "$ROOT" pull origin develop
# Branch erstellen und pushen
echo "Erstelle Branch: $BRANCH"
git -C "$ROOT" checkout -b "$BRANCH"
git -C "$ROOT" push -u origin "$BRANCH"
echo "Fertig: Branch '$BRANCH' erstellt und gepusht."
echo "Aktiver Branch: $(git -C "$ROOT" branch --show-current)"

View File

@@ -0,0 +1,42 @@
# Session-Kontext
> Claude liest diese Datei zu Beginn jeder Session.
> Claude aktualisiert sie am Ende jeder Session (Version, Branch, offene Arbeit).
---
## Aktueller Stand
| Feld | Wert |
|---|---|
| **Version** | 0.2.1 |
| **Aktiver Branch** | feature/grundstruktur |
| **Basis-Branch** | develop |
| **Zuletzt geändert** | 2026-04-05 |
## Offene Arbeit
- [ ] Techstack festlegen
- [ ] feature/grundstruktur → develop mergen (wenn Techstack entschieden)
## Zuletzt abgeschlossen
- Repo-Infrastruktur aufgebaut (CLAUDE.md, Standards, Branching, README, PR-Template)
- .gitattributes, bump.sh, new-feature.sh, session-context.md eingeführt
- Branch Protection + Squash-Merge serverseitig konfiguriert
## Schnellreferenz
```bash
# Version bumpen
bash .claude/scripts/bump.sh patch "Was wurde geändert"
# Neuen Branch erstellen
bash .claude/scripts/new-feature.sh feature <name>
# Aktueller Branch
git branch --show-current
# Status
git status
```

View File

@@ -0,0 +1,12 @@
{
"permissions": {
"allow": [
"Bash(curl -s -o /dev/null -w \"%{http_code}\" https://tea.jr-family.de/api/v1/repos/Admin/gartenmanager)",
"Bash(git -C c:/Projekte/Home/gartenmanager config --get credential.helper)",
"Bash(git credential:*)",
"Bash(python3 -m json.tool)",
"Bash(git -C c:/Projekte/Home/gartenmanager credential fill)",
"Bash(python3 -c \"import sys,json; r=json.load\\(sys.stdin\\); print\\('allow_squash_merge:', r.get\\('allow_squash_merge'\\), '| default_merge_style:', r.get\\('default_merge_style'\\)\\)\")"
]
}
}