alvin-bot 4.18.1 → 4.18.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/AEC-PLUGINS-SOURCES.md +53 -0
- package/CHANGELOG.md +23 -0
- package/DESIGN-SKILLS-SOURCES.md +81 -0
- package/dist/providers/claude-sdk-provider.js +32 -1
- package/package.json +1 -1
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
# AEC Plugin Skills — Installed 22.04.2026
|
|
2
|
+
|
|
3
|
+
54 Skills aus 3 Claude-Code-Plugins, erstellt von **Abhinav Bhardwaj** (GitHub: `Amanbh997`).
|
|
4
|
+
Installiert via direkte Kopie in `~/.claude/skills/` — Claude Code auto-discovered via SKILL.md frontmatter.
|
|
5
|
+
|
|
6
|
+
Vorher: 89 Skills. Nachher: **143 Skills** (+54).
|
|
7
|
+
|
|
8
|
+
## Quellen
|
|
9
|
+
|
|
10
|
+
| Plugin | Repo | Skills | Stars |
|
|
11
|
+
|---|---|---|---|
|
|
12
|
+
| **Urban Design** | [Amanbh997/Urban-Design-Skills-Claude](https://github.com/Amanbh997/Urban-Design-Skills-Claude) | 18 | ⭐ 76 |
|
|
13
|
+
| **Architecture** | [Amanbh997/Skills-Architects](https://github.com/Amanbh997/Skills-Architects) | 18 | ⭐ 118 |
|
|
14
|
+
| **Computational Design** | [Amanbh997/Claude-skills-for-Computational-Designers](https://github.com/Amanbh997/Claude-skills-for-Computational-Designers) | 18 | ⭐ 127 |
|
|
15
|
+
|
|
16
|
+
Jedes Plugin: 35.000+ Zeilen, 7 Python-Calculators, 50+ Theorists, 30+ Tools, hunderte numerische Benchmarks.
|
|
17
|
+
|
|
18
|
+
## Skill-Inventar
|
|
19
|
+
|
|
20
|
+
### Urban Design (18)
|
|
21
|
+
block-and-density · climate-responsive-design · cost-estimation · design-brief · design-evaluation · masterplan-design · mixed-use-programming · mobility-and-transport · precedent-study · public-space-design · site-analysis · street-design · sustainability-scoring · tod-design · urban-calculator · urban-design-foundations · urban-regeneration · zoning-and-codes
|
|
22
|
+
|
|
23
|
+
### Architecture (18)
|
|
24
|
+
accessibility-design · acoustic-design · architect-calculator · architect-foundations · building-codes · building-envelope · building-programming · building-services · building-sustainability · building-typology · concept-design · construction-documentation · daylighting-design · design-theory · fire-life-safety · material-selection · spatial-planning · structural-systems
|
|
25
|
+
|
|
26
|
+
### Computational Design (18)
|
|
27
|
+
algorithmic-patterns · bim-scripting · cd-calculator · cd-foundations · computational-geometry · data-driven-design · design-automation · digital-fabrication · environmental-simulation · facade-computation · generative-design · interoperability · mesh-processing · ml-for-aec · optimization-methods · parametric-modeling · scripting-reference · structural-computation
|
|
28
|
+
|
|
29
|
+
## Update ziehen
|
|
30
|
+
|
|
31
|
+
```bash
|
|
32
|
+
cd /tmp && rm -rf aec-skills && mkdir aec-skills && cd aec-skills
|
|
33
|
+
git clone --depth 1 https://github.com/Amanbh997/Urban-Design-Skills-Claude.git
|
|
34
|
+
git clone --depth 1 https://github.com/Amanbh997/Skills-Architects.git
|
|
35
|
+
git clone --depth 1 https://github.com/Amanbh997/Claude-skills-for-Computational-Designers.git
|
|
36
|
+
cp -R Urban-Design-Skills-Claude/skills/* ~/.claude/skills/
|
|
37
|
+
cp -R Skills-Architects/skills/* ~/.claude/skills/
|
|
38
|
+
cp -R Claude-skills-for-Computational-Designers/skills/* ~/.claude/skills/
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
## Wie die Skills ausgelöst werden
|
|
42
|
+
|
|
43
|
+
Jeder Skill hat im SKILL.md frontmatter eine `description`-Zeile die spezifische User-Anfragen matcht. Beispiele:
|
|
44
|
+
|
|
45
|
+
- „Design a mixed-use quarter" → Urban Design Plugin (masterplan-design, tod-design, mixed-use-programming, zoning-and-codes, mobility-and-transport …)
|
|
46
|
+
- „Check if this floor plan meets fire code" → Architecture Plugin (fire-life-safety, building-codes, accessibility-design, construction-documentation …)
|
|
47
|
+
- „Generate a parametric facade pattern in Grasshopper" → Computational Design Plugin (parametric-modeling, facade-computation, algorithmic-patterns, digital-fabrication …)
|
|
48
|
+
|
|
49
|
+
Laut Creator: *"Ask Claude to design a mixed-use quarter and all three plugins kick in working together."*
|
|
50
|
+
|
|
51
|
+
## Quelle
|
|
52
|
+
Reel vom Creator: https://www.instagram.com/reel/DXXhJS2kqAf/
|
|
53
|
+
Uploader: Abhinav Bhardwaj / "Claude for AEC!"
|
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,29 @@
|
|
|
2
2
|
|
|
3
3
|
All notable changes to Alvin Bot are documented here.
|
|
4
4
|
|
|
5
|
+
## [4.18.3] — 2026-04-23
|
|
6
|
+
|
|
7
|
+
### 🐛 Hotfix: 4.18.2 triggered unwanted failover to Ollama
|
|
8
|
+
|
|
9
|
+
**Bug in 4.18.2:** The empty-stream detector yielded an `error` chunk, which the registry's `queryWithFallback()` interprets as "primary provider failed" and immediately switches to the fallback (Ollama/Gemma 4). User saw `⚡ Claude (Agent SDK) unavailable — switching to Gemma 4 E4B` after every token rotation — the opposite of the intended behavior.
|
|
10
|
+
|
|
11
|
+
**Fix:** yield a `text` chunk instead of `error`. Same user-visible message, same cache-invalidation, but no failover cascade. The next CLI subprocess spawns with the fresh Keychain token automatically, and claude-sdk stays selected.
|
|
12
|
+
|
|
13
|
+
## [4.18.2] — 2026-04-23
|
|
14
|
+
|
|
15
|
+
### 🐛 Fix: silent empty-stream after OAuth-token rotation
|
|
16
|
+
|
|
17
|
+
**Problem:** After running `/extra-usage`, `/login`, or any other flow that rotates the Claude OAuth token in the macOS Keychain, the Alvin-Bot silently broke for long-lived sessions. The in-memory Claude SDK client held the old token, the CLI subprocess emitted no text chunks (the 401 was swallowed upstream), the stream terminated normally with zero output tokens, and the user saw the fallback `"(Keine Antwort)"` — with no indication that a token refresh was needed.
|
|
18
|
+
|
|
19
|
+
**Fix** (`src/providers/claude-sdk-provider.ts`): In the `result` branch of the SDK stream loop, detect the empty-stream signature (`accumulatedText === ""` and `outputTokens === 0`). When that fires:
|
|
20
|
+
|
|
21
|
+
1. Invalidate the `isAvailable()` cache so the next heartbeat probe spawns a fresh CLI subprocess that reads the current Keychain entry.
|
|
22
|
+
2. Yield an explicit `error` chunk with actionable text so the user sees *"…token rotation — please resend your message"* instead of a silent `"(Keine Antwort)"`.
|
|
23
|
+
|
|
24
|
+
**Applies to:** every token-rotation flow — extra-usage activation, extra-usage expiry, weekly-reset (no rotation → unaffected), manual `claude login`.
|
|
25
|
+
|
|
26
|
+
**Net effect:** Bot self-heals after token changes. A single resend on the user side is enough; no manual restart required.
|
|
27
|
+
|
|
5
28
|
## [4.18.1] — 2026-04-20
|
|
6
29
|
|
|
7
30
|
### 🔒 Privacy-Guard: pre-publish check blocks PII leaks in shipped files
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
# Design Skills — Installed 22.04.2026
|
|
2
|
+
|
|
3
|
+
19 neue Skills aus 2 Repos + Bestätigung dass Frontend Design bereits via Anthropic Plugin installiert ist.
|
|
4
|
+
|
|
5
|
+
## Quellen
|
|
6
|
+
|
|
7
|
+
| Skill | Repo | Stars | Status |
|
|
8
|
+
|---|---|---|---|
|
|
9
|
+
| **Impeccable** (18 commands) | [pbakaus/impeccable](https://github.com/pbakaus/impeccable) | ⭐ 21.419 | ✅ Neu installiert |
|
|
10
|
+
| **Design Motion Principles** | [kylezantos/design-motion-principles](https://github.com/kylezantos/design-motion-principles) | ⭐ 293 | ✅ Neu installiert |
|
|
11
|
+
| **Frontend Design** | [anthropics/skills/frontend-design](https://github.com/anthropics/skills) | — | ℹ️ War bereits aktiv (Plugin `frontend-design:frontend-design`) |
|
|
12
|
+
|
|
13
|
+
## Reel-Quelle
|
|
14
|
+
Marc Cleroux auf Instagram — https://www.instagram.com/reel/DXdVUiOjKUv/ (22.04.2026)
|
|
15
|
+
|
|
16
|
+
## Impeccable-Commands (18)
|
|
17
|
+
|
|
18
|
+
Vokabular um Claude bei frontend-design zu steuern wenn dir die richtigen Worte fehlen.
|
|
19
|
+
|
|
20
|
+
| Command | Funktion |
|
|
21
|
+
|---|---|
|
|
22
|
+
| `/impeccable` | Core skill mit 18 commands + 7 Referenz-Domänen |
|
|
23
|
+
| `/adapt` | Responsive / Breakpoints / Touch-Targets |
|
|
24
|
+
| `/animate` | Purposeful motion + micro-interactions |
|
|
25
|
+
| `/audit` | Technische Quality Checks (a11y, perf, responsive) + scored report |
|
|
26
|
+
| `/bolder` | Bland → visuell interessanter |
|
|
27
|
+
| `/clarify` | Unklare UX-Copy verbessern |
|
|
28
|
+
| `/colorize` | Strategische Farbe einführen |
|
|
29
|
+
| `/critique` | UX Design Review (Hierarchie, Klarheit, Resonanz) |
|
|
30
|
+
| `/delight` | Joy-Momente, Personality, Memorable Touches |
|
|
31
|
+
| `/distill` | Auf Essenz reduzieren, Complexity weg |
|
|
32
|
+
| `/harden` | Error Handling, Empty States, Onboarding, i18n, Edge Cases |
|
|
33
|
+
| `/layout` | Layout / Spacing / Visual Rhythm fixen |
|
|
34
|
+
| `/optimize` | Performance (Bundle, Rendering, Images) |
|
|
35
|
+
| `/overdrive` | Technisch ambitioniert — Shaders, Spring Physics, 60fps |
|
|
36
|
+
| `/polish` | Final Quality Pass pre-shipping |
|
|
37
|
+
| `/quieter` | Overstimulating Design beruhigen |
|
|
38
|
+
| `/shape` | UX/UI-Plan vor Code |
|
|
39
|
+
| `/typeset` | Typografie fixen |
|
|
40
|
+
|
|
41
|
+
### 7 Referenz-Domänen in `impeccable`
|
|
42
|
+
typography · color-and-contrast · spatial-design · motion-design · interaction-design · responsive-design · ux-writing
|
|
43
|
+
|
|
44
|
+
## Design Motion Principles
|
|
45
|
+
|
|
46
|
+
Motion-Audit-Skill basierend auf den Philosophien von:
|
|
47
|
+
- **Emil Kowalski** — iOS-native UI polish
|
|
48
|
+
- **Jakub Krehel** — smooth interaction design
|
|
49
|
+
- **Jhey Tompkins** — creative web animation
|
|
50
|
+
|
|
51
|
+
Use case: *"Audit the hover states and transitions on my landing page"* → strukturierter Motion-Report.
|
|
52
|
+
|
|
53
|
+
## Installation
|
|
54
|
+
|
|
55
|
+
Geklont + direkt in `~/.claude/skills/` einzeln kopiert (Impeccable folgt dem Pattern aus ihrer README: `cp -r dist/claude-code/.claude/* ~/.claude/`).
|
|
56
|
+
|
|
57
|
+
## Update ziehen
|
|
58
|
+
|
|
59
|
+
```bash
|
|
60
|
+
cd /tmp && rm -rf design-skills && mkdir design-skills && cd design-skills
|
|
61
|
+
git clone --depth 1 https://github.com/pbakaus/impeccable.git
|
|
62
|
+
git clone --depth 1 https://github.com/kylezantos/design-motion-principles.git
|
|
63
|
+
cp -R impeccable/.claude/skills/. ~/.claude/skills/
|
|
64
|
+
cp -R design-motion-principles/skills/design-motion-principles ~/.claude/skills/
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
## Stand Skills-Inventar (22.04.2026)
|
|
68
|
+
- Vorher: 143 (nach AEC-Installation)
|
|
69
|
+
- Nachher: **162** (+19)
|
|
70
|
+
|
|
71
|
+
## Nebenbaustelle
|
|
72
|
+
Impeccable bringt zusätzlich eine `.claude/agents/anti-patterns.md` mit — nicht installiert (würde Permission für `~/.claude/agents/` brauchen). Das ist optional: Die 18 Skills funktionieren unabhängig vom Anti-Patterns-Agent. Falls später gewünscht: `cp -R /tmp/design-skills/impeccable/.claude/agents/. ~/.claude/agents/`
|
|
73
|
+
|
|
74
|
+
## Empfohlene Workflow-Kombination
|
|
75
|
+
|
|
76
|
+
Laut Marc Cleroux im Reel ist das Power-Trio:
|
|
77
|
+
1. **shape** (plan before code) — Teil von Impeccable
|
|
78
|
+
2. **frontend-design** (implement mit Geschmack) — schon installiert
|
|
79
|
+
3. **audit** + **critique** + **polish** (iterieren) — Impeccable
|
|
80
|
+
|
|
81
|
+
Bei jedem neuen Frontend-Build: `/shape` → `/impeccable craft` → `/audit` → `/critique` → `/polish` → shippen.
|
|
@@ -309,9 +309,40 @@ export class ClaudeSDKProvider {
|
|
|
309
309
|
? (usage.input_tokens || 0) + (usage.cache_creation_input_tokens || 0) + (usage.cache_read_input_tokens || 0)
|
|
310
310
|
: 0;
|
|
311
311
|
const outputTok = usage?.output_tokens || 0;
|
|
312
|
+
// v4.18.3 — Silent-empty-stream detection (replaces 4.18.2 approach).
|
|
313
|
+
//
|
|
314
|
+
// If the stream terminated cleanly but produced ZERO text chunks,
|
|
315
|
+
// something went wrong that the SDK didn't surface as an error.
|
|
316
|
+
// Most common cause: the OAuth token in the Keychain was rotated
|
|
317
|
+
// (e.g. right after /extra-usage or /login) while our in-memory
|
|
318
|
+
// SDK client still held the old one — the CLI subprocess silently
|
|
319
|
+
// gets a 401, emits no text, and we complete with
|
|
320
|
+
// accumulatedText === "".
|
|
321
|
+
//
|
|
322
|
+
// CRITICAL: we must NOT yield an "error" chunk here — the registry's
|
|
323
|
+
// queryWithFallback() treats that as "primary failed" and kicks off
|
|
324
|
+
// a full failover to the next provider (Ollama). That's exactly
|
|
325
|
+
// wrong: the next CLI subprocess would have picked up the fresh
|
|
326
|
+
// token by itself. Instead we:
|
|
327
|
+
// 1. Invalidate the availability cache so the next heartbeat
|
|
328
|
+
// re-probes `claude auth status` with a fresh subprocess.
|
|
329
|
+
// 2. Return a friendly "text" chunk explaining what happened,
|
|
330
|
+
// so the user sees a clear message (not "(Keine Antwort)")
|
|
331
|
+
// and knows to resend — without tripping the failover.
|
|
332
|
+
if (accumulatedText === "" && outputTok === 0) {
|
|
333
|
+
this.invalidateAvailabilityCache();
|
|
334
|
+
const hint = "⚠️ Claude antwortete mit leerem Stream (meist nach /extra-usage, /login oder Token-Refresh). " +
|
|
335
|
+
"Der SDK-Token-Cache wurde geleert — bitte schick die Nachricht einfach nochmal.";
|
|
336
|
+
yield {
|
|
337
|
+
type: "text",
|
|
338
|
+
text: hint,
|
|
339
|
+
delta: hint,
|
|
340
|
+
sessionId: resultMsg.session_id || capturedSessionId,
|
|
341
|
+
};
|
|
342
|
+
}
|
|
312
343
|
yield {
|
|
313
344
|
type: "done",
|
|
314
|
-
text: accumulatedText,
|
|
345
|
+
text: accumulatedText || "",
|
|
315
346
|
sessionId: resultMsg.session_id || capturedSessionId,
|
|
316
347
|
costUsd: "total_cost_usd" in resultMsg ? resultMsg.total_cost_usd : 0,
|
|
317
348
|
inputTokens: inputTok,
|