feat: Erweitere Skill-Beschreibungen mit präziseren Nutzungsrichtlinien

- Verfeinere Description-Felder aller Skills für besseres Triggering
- Neue skill-creator@claude-plugins-official Permission
- /story mit neuer Reference-Struktur (phase-spezifische Detail-Dateien)
- /go, /plan-review, /ship, /workflow-review: klarere Abgrenzungen
- Vereinfachung im Vergleich zu vorigen Versionen

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-04-19 15:44:52 +02:00
co-authored by Claude Sonnet 4.6
parent 6f9079fa5f
commit 2fbb59852e
26 changed files with 1035 additions and 54 deletions
+86
View File
@@ -0,0 +1,86 @@
[
{
"query": "feature ist fertig, bitte committen, pushen und mergen",
"should_trigger": true
},
{
"query": "alles fertig, bitte den branch jetzt mergen und aufräumen",
"should_trigger": true
},
{
"query": "ich bin zufrieden mit den änderungen, bitte jetzt shippen",
"should_trigger": true
},
{
"query": "kannst du die änderungen committen, einen PR erstellen und gleich mergen?",
"should_trigger": true
},
{
"query": "die story ist abgeschlossen, branch in main mergen bitte",
"should_trigger": true
},
{
"query": "wir sind durch, bitte alles aufräumen und in main bringen",
"should_trigger": true
},
{
"query": "/ship bitte",
"should_trigger": true
},
{
"query": "ok ich hab noch fix/login-redirect offen auf dem branch, der ist fertig — kannst du commiten, PR anlegen, mergen und den branch löschen?",
"should_trigger": true
},
{
"query": "erstelle nur einen PR, ich will selbst reviewen bevor ich merge",
"should_trigger": false
},
{
"query": "bitte nur committen, noch nicht pushen",
"should_trigger": false
},
{
"query": "kannst du die änderungen pushen?",
"should_trigger": false
},
{
"query": "tests laufen lassen und PR erstellen",
"should_trigger": false
},
{
"query": "ich will den branch noch offen halten für weitere änderungen",
"should_trigger": false
},
{
"query": "merge bitte nur wenn die CI grün ist — ich check das nochmal selbst",
"should_trigger": false
},
{
"query": "was müssen wir noch machen bevor wir mergen können?",
"should_trigger": false
},
{
"query": "kannst du den alten branch feat/old-feature löschen?",
"should_trigger": false
},
{
"query": "bitte nur git push, kein PR",
"should_trigger": false
},
{
"query": "die PR-beschreibung stimmt nicht, kannst du sie anpassen?",
"should_trigger": false
},
{
"query": "führe den plan-review durch bevor wir weitermachen",
"should_trigger": false
},
{
"query": "workflow review bitte",
"should_trigger": false
},
{
"query": "/ship",
"should_trigger": true
}
]
+22
View File
@@ -0,0 +1,22 @@
[
{"query": "feature ist fertig, bitte committen, pushen und mergen", "should_trigger": true},
{"query": "alles fertig, bitte den branch jetzt mergen und aufräumen", "should_trigger": true},
{"query": "ich bin zufrieden mit den änderungen, bitte jetzt shippen", "should_trigger": true},
{"query": "kannst du die änderungen committen, einen PR erstellen und gleich mergen?", "should_trigger": true},
{"query": "die story ist abgeschlossen, branch in main mergen bitte", "should_trigger": true},
{"query": "wir sind durch, bitte alles aufräumen und in main bringen", "should_trigger": true},
{"query": "/ship bitte", "should_trigger": true},
{"query": "ok ich hab noch fix/login-redirect offen auf dem branch, der ist fertig — kannst du commiten, PR anlegen, mergen und den branch löschen?", "should_trigger": true},
{"query": "erstelle nur einen PR, ich will selbst reviewen bevor ich merge", "should_trigger": false},
{"query": "bitte nur committen, noch nicht pushen", "should_trigger": false},
{"query": "kannst du die änderungen pushen?", "should_trigger": false},
{"query": "tests laufen lassen und PR erstellen", "should_trigger": false},
{"query": "ich will den branch noch offen halten für weitere änderungen", "should_trigger": false},
{"query": "merge bitte nur wenn die CI grün ist — ich check das nochmal selbst", "should_trigger": false},
{"query": "was müssen wir noch machen bevor wir mergen können?", "should_trigger": false},
{"query": "kannst du den alten branch feat/old-feature löschen?", "should_trigger": false},
{"query": "bitte nur git push, kein PR", "should_trigger": false},
{"query": "die PR-beschreibung stimmt nicht, kannst du sie anpassen?", "should_trigger": false},
{"query": "führe den plan-review durch bevor wir weitermachen", "should_trigger": false},
{"query": "workflow review bitte", "should_trigger": false}
]
+82
View File
@@ -0,0 +1,82 @@
Split: 14 train, 7 test (holdout=0.4)
============================================================
Iteration 1/5
Description: Finales Commit → Push → PR erstellen → Mergen → Aufräumen. Explizit vom User aufzurufen wenn ein Feature abgeschlossen ist.
============================================================
Train: 24/42 correct, precision=100% recall=0% accuracy=57% (51.1s)
[FAIL] rate=0/3 expected=True: die story ist abgeschlossen, branch in main mergen bitte
[FAIL] rate=0/3 expected=True: ich bin zufrieden mit den änderungen, bitte jetzt shippen
[FAIL] rate=0/3 expected=True: wir sind durch, bitte alles aufräumen und in main bringen
[FAIL] rate=0/3 expected=True: /ship
[FAIL] rate=0/3 expected=True: feature ist fertig, bitte committen, pushen und mergen
[FAIL] rate=0/3 expected=True: alles fertig, bitte den branch jetzt mergen und aufräumen
[PASS] rate=0/3 expected=False: die PR-beschreibung stimmt nicht, kannst du sie anpassen?
[PASS] rate=0/3 expected=False: workflow review bitte
[PASS] rate=0/3 expected=False: erstelle nur einen PR, ich will selbst reviewen bevor ich me
[PASS] rate=0/3 expected=False: kannst du den alten branch feat/old-feature löschen?
[PASS] rate=0/3 expected=False: was müssen wir noch machen bevor wir mergen können?
[PASS] rate=0/3 expected=False: bitte nur committen, noch nicht pushen
[PASS] rate=0/3 expected=False: bitte nur git push, kein PR
[PASS] rate=0/3 expected=False: führe den plan-review durch bevor wir weitermachen
Test : 12/21 correct, precision=100% recall=0% accuracy=57% (0.0s)
[FAIL] rate=0/3 expected=True: kannst du die änderungen committen, einen PR erstellen und g
[FAIL] rate=0/3 expected=True: /ship bitte
[FAIL] rate=0/3 expected=True: ok ich hab noch fix/login-redirect offen auf dem branch, der
[PASS] rate=0/3 expected=False: tests laufen lassen und PR erstellen
[PASS] rate=0/3 expected=False: merge bitte nur wenn die CI grün ist — ich check das nochmal
[PASS] rate=0/3 expected=False: kannst du die änderungen pushen?
[PASS] rate=0/3 expected=False: ich will den branch noch offen halten für weitere änderungen
Improving description...
Traceback (most recent call last):
File "<frozen runpy>", line 198, in _run_module_as_main
File "<frozen runpy>", line 88, in _run_code
File "/home/martin/.claude/plugins/cache/claude-plugins-official/skill-creator/unknown/skills/skill-creator/scripts/run_loop.py", line 332, in <module>
main()
~~~~^^
File "/home/martin/.claude/plugins/cache/claude-plugins-official/skill-creator/unknown/skills/skill-creator/scripts/run_loop.py", line 297, in main
output = run_loop(
eval_set=eval_set,
...<11 lines>...
log_dir=log_dir,
)
File "/home/martin/.claude/plugins/cache/claude-plugins-official/skill-creator/unknown/skills/skill-creator/scripts/run_loop.py", line 202, in run_loop
new_description = improve_description(
client=client,
...<7 lines>...
iteration=iteration,
)
File "/home/martin/.claude/plugins/cache/claude-plugins-official/skill-creator/unknown/skills/skill-creator/scripts/improve_description.py", line 114, in improve_description
response = client.messages.create(
model=model,
...<5 lines>...
messages=[{"role": "user", "content": prompt}],
)
File "/home/martin/.local/lib/python3.13/site-packages/anthropic/_utils/_utils.py", line 283, in wrapper
return func(*args, **kwargs)
File "/home/martin/.local/lib/python3.13/site-packages/anthropic/resources/messages/messages.py", line 1000, in create
return self._post(
~~~~~~~~~~^
"/v1/messages",
^^^^^^^^^^^^^^^
...<30 lines>...
stream_cls=Stream[RawMessageStreamEvent],
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
)
^
File "/home/martin/.local/lib/python3.13/site-packages/anthropic/_base_client.py", line 1368, in post
return cast(ResponseT, self.request(cast_to, opts, stream=stream, stream_cls=stream_cls))
~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/martin/.local/lib/python3.13/site-packages/anthropic/_base_client.py", line 1062, in request
request = self._build_request(options, retries_taken=retries_taken)
File "/home/martin/.local/lib/python3.13/site-packages/anthropic/_base_client.py", line 521, in _build_request
headers = self._build_headers(options, retries_taken=retries_taken)
File "/home/martin/.local/lib/python3.13/site-packages/anthropic/_base_client.py", line 451, in _build_headers
self._validate_headers(headers_dict, custom_headers)
~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/martin/.local/lib/python3.13/site-packages/anthropic/_client.py", line 196, in _validate_headers
raise TypeError(
'"Could not resolve authentication method. Expected either api_key or auth_token to be set. Or for one of the `X-Api-Key` or `Authorization` headers to be explicitly omitted"'
)
TypeError: "Could not resolve authentication method. Expected either api_key or auth_token to be set. Or for one of the `X-Api-Key` or `Authorization` headers to be explicitly omitted"