Repository navigation
Sicherheitshaerte und fachliche Differenzierung - #5
Merged
Merged
Conversation
Der Skill nannte sich an drei Stellen evidenzbasiert und fuehrte keine einzige Quellen-URL und kein Veroeffentlichungsdatum. references/SOURCES.md haelt jetzt fuer jede Aussage fest, worauf sie beruht: sieben Quellen mit URL, Veroeffentlichungs- und Abrufdatum, dazu je Quelle, was sie ausdruecklich nicht belegt. Vier davon sind Primaerquellen von LinkedIn. Elf Zahlen liessen sich nicht belegen und sind ohne Ersatzzahl aus SKILL.md, SCORING.md, TEMPLATES.md, README, Landingpage und Report-Template entfernt, darunter der Plattformdurchschnitt von 3,4 Prozent, die Engagement-Werte je Postformat und die Wirkungsfaktoren fuers Kommentieren. Die Tabelle "Zurueckgezogen" nennt jede davon mit Begruendung. Zwei Sachfehler kamen dabei heraus und sind korrigiert: das goldene Community-Top-Voice-Badge ist seit dem 08.10.2024 zurueckgezogen, das Sub-Kriterium Collaborative Articles entfaellt deshalb; den Creator-Mode- Schalter gibt es seit Maerz 2024 nicht mehr. Top-Voice-Nominierungen prueft LinkedIn quartalsweise, nicht halbjaehrlich. Der Nenner der Engagement-Rate ist in SCORING.md geklaert: das Raster gilt fuer den impressions-basierten Wert, der follower-basierte Schaetzwert wird nur im Zeitverlauf desselben Profils verglichen. scripts/check_sources.py prueft das in der CI und faellt aus, wenn eine zurueckgezogene Zahl zurueckkommt oder eine zitierte Quellen-ID fehlt. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01BL7UoPomBp2Luhg89R6fYk
Nach dem Zuruecknehmen der Benchmark-Zahlen sprachen README, SKILL.md und die Landingpage an fuenf Stellen weiter von Industrie-Benchmarks, und die SSI-Karte nannte die 25-Punkte-Aufteilung als Tatsache, waehrend zwei Bildschirme weiter steht, dass LinkedIn sie nicht bestaetigt. Der README-Anker auf die Engagement-Tabelle zeigte nach der Umbenennung ins Leere und ist korrigiert. check_sources.py faengt beide Rahmungen jetzt mit ab. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01BL7UoPomBp2Luhg89R6fYk
Dieselben zehn Scoring-Kategorien liefen unter drei Benennungen: SCORING.md und SKILL.md nannten sie voll, generate_report.js kuerzte vier davon ab, und in SCORING.md selbst standen im Rechenbeispiel und in der Balkendarstellung noch einmal andere Kurzformen. Ab jetzt gilt eine Schreibweise. tests/ enthaelt drei frei erfundene Profil-Fixtures, je eine Datei mit den erwarteten Baendern und einen Runner. Frei erfunden statt anonymisiert: ein Echtprofil zu erheben und danach zu verfremden waere genau die Verarbeitung, die SECURITY.md einschraenkt. tests/run_eval.py liest das Gewichtsmodell aus SCORING.md und prueft damit: Gewichtssumme 100, wortgleiche Kategorienamen an vier Stellen, Gewicht und Maximalbeitrag im Report-Template, Nachrechnung des Gesamtscores, die Baender je Kategorie und dass die Zahlen der Scoring-Engine auf der Landingpage aus profile_mid stammen. Drei Kategorien werden nicht geglaubt, sondern nachgerechnet: Posting-Frequenz aus Posts pro Woche, Netzwerk & Follower aus der Follower-Zahl, Profil-Vollstaendigkeit aus den 18 Haken. Aendert jemand eine der drei Bewertungstabellen, meldet der Runner, welche Umrechnung nachzuziehen ist. Die offene Frage aus der Gegenpruefung ist entschieden statt umgangen: die Fixtures fuehren Impressions als null und die Rate als engagement_rate_follower_basis. Der Runner erzwingt beides, und die Rate geht in keine Kategoriebewertung ein, weil das Raster in SCORING.md den impressions-basierten Wert meint. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01BL7UoPomBp2Luhg89R6fYk
Der Abschnitt hiess "Live Demo" und zeigte einen Profil-Score, als waere er gemessen. Er heisst jetzt "Beispiel-Dialog", nennt die Herkunft der Zahlen und verweist auf tests/fixtures/profile_mid.json. Neue Zahlen kommen nicht dazu. Die Werte der Scoring-Engine und des Dialogs sind dieselben wie im Rechenbeispiel in SCORING.md, und tests/run_eval.py prueft jetzt beide Stellen gegen das Fixture, auch die Balkenbreiten. Was fehlt, steht auf der Seite und in der README: ein Vorher-Nachher braucht zwei datierte Messungen desselben Profils im Abstand von 60 bis 90 Tagen. Die liegen nicht vor, also steht dort ein nachrechenbares Beispiel statt einer Erfolgszahl. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01BL7UoPomBp2Luhg89R6fYk
Die Entscheidung ist getrennt lassen. Bisher stand die Abgrenzung nur im Orchestrator, und dort in einer Zeile ohne Regel. In diesem Repo kam der Schwester-Skill an keiner Stelle vor. SKILL.md, README und Landingpage nennen jetzt beide Rollen: hier die einmalige Ist-Analyse mit den Profil-Artefakten, dort der laufende Betrieb mit Wochensystem, Community und Analytics. Der eigentliche Punkt ist die Trigger-Ueberschneidung. Beide reagieren auf "Profil optimieren", "Profil verbessern", "Personal Branding", "Content-Strategie" und "Top Voice". SKILL.md loest das mit vier Regeln statt mit einer Tabelle: welche Frage wohin geht, was bei gemischten Anfragen zuerst laeuft und wie mit Top Voice umzugehen ist, das in beiden Skills vorkommt und zweierlei meint. Die Description traegt denselben Hinweis, damit die Auswahl schon vor dem Laden greift. Die Gegenrichtung im Orchestrator ist damit nicht erledigt, das ist ein eigener Vorgang in jenem Repo. Der Hinweis darauf steht in der README. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01BL7UoPomBp2Luhg89R6fYk
Die Aenderungen dieser Welle greifen in den fachlichen Kern ein: elf Zahlen sind aus dem Skill entfernt, zwei Sub-Kriterien geaendert und vier Kategorienamen im Report-Template umbenannt. Das darf nicht unter der bereits veroeffentlichten 2.3.0 stehen. VERSION ist die Quelle, check_versions.py prueft die sechs Kopien dagegen. Der Changelog in SKILL.md nennt, was sich geaendert hat. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01BL7UoPomBp2Luhg89R6fYk
In SCORING.md waren im neuen Eval-Abschnitt ASCII-Umschreibungen stehen geblieben, darunter eine vierte Schreibweise von Profil-Vollstaendigkeit, ausgerechnet in dem Dokument, das die Schreibweise verbindlich macht. SKILL.md verlangt an dieser Stelle ausdruecklich echte Umlaute. SCORING.md sagt jetzt ausserdem, dass das Eval-Set im Repo unter tests/ liegt und nicht im Skill-Paket. Wer nur das Paket hat, sucht sonst nach Dateien, die darin nicht vorkommen. Die Fixtures nannten fuer zwei Headlines eine Zeichenzahl, die nicht zur Zeichenzahl des hinterlegten Textes passte. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01BL7UoPomBp2Luhg89R6fYk
Dieselbe Checkliste lief unter drei Laengen: 15 Elemente in SKILL.md Phase 4.3, 17 in der Audit-Tabelle von scripts/generate_report.js, 18 in der Checkliste in references/SCORING.md. In den ersten beiden standen weiter "Creator Mode" und "Collaborative Articles". Beides ist laut Q3 und Q7 in SOURCES.md hinfaellig, und beides wanderte als Zeile in den DOCX-Report des Kunden. SKILL.md widersprach sich damit selbst: Zeile 281 und 350 sagen richtig, dass Collaborative Articles auf kein Badge mehr einzahlen, Zeile 214 liess danach pruefen. Die Checkliste in SCORING.md Abschnitt 9 ist jetzt die Quelle der Wahrheit. Jede Zeile hat die Form "Kurzname (Kriterium)", der Kurzname ist der Name in den beiden anderen Listen. tests/run_eval.py vergleicht die drei Listen nach Namen und Reihenfolge, prueft die Stueckzahl im Satz in SKILL.md und die beiden Stellen im Report, die "18 Elemente" im Klartext nennen. Kein Textverbot auf die beiden Begriffe: das wuerde die richtigen Verneinungen in SKILL.md mitreissen. Was die Bindung deckt, ist die Elementliste. Ein Fliesstextsatz wie "Collaborative Articles bringen das goldene Badge" faellt ihr nicht auf; das steht so im Docstring von run_eval.py. "Video-Content" faellt aus der Audit-Tabelle. Es ist kein Profil-Element der Vollstaendigkeits-Checkliste, sondern Content-Aktivitaet, und die hat im Report einen eigenen Abschnitt. Die Fixtures tragen die Checklistenpunkte als Schluessel und sind auf den neuen Wortlaut gezogen. Die Werte bleiben, die Score-Baender halten. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01BL7UoPomBp2Luhg89R6fYk
Die VERBOTEN-Liste in scripts/check_sources.py war eine Blockliste woertlicher Schreibweisen neben der Tabelle "Zurückgezogen", nicht aus ihr. 11 von 15 Umgehungsproben endeten mit exit=0: "3.4 %" mit Punkt, "3,4 Prozent" ausgeschrieben, "3,4 %" als Entity, "6.6%", "2,5x mehr" mit ASCII-x, "2,5-faches Gewicht". Zur zurueckgezogenen Aussage ueber Profilaufrufe und Content-Reichweite gab es nur ein Muster fuer die eine Haelfte, "+20 % Content-Reichweite" hatte keines. 12 Tabellenzeilen standen 14 Mustern gegenueber, ohne dass etwas die beiden aneinander band. Die Tabelle hat jetzt die Spalte "Sperrmuster" und ist die Quelle. Das Skript normalisiert die Tokens daraus: Ziffern mit [.,], Prozentzeichen und ausgeschriebenes Wort, ASCII-x und Malzeichen, Leerraum samt , typografische Bindestriche, fuehrendes + oder ~ optional, Gross- und Kleinschreibung egal. Vor und hinter Zahlen steht eine Grenze, damit "20 %" nicht in "220 Zeichen" anschlaegt. Die Tabelle wird gegen sich selbst geprueft: Jede Prozentangabe und jeder Faktor in der Spalte "Frühere Aussage" muss von einem Muster derselben Zeile getroffen werden. Eine neue Zeile ohne Sperrmuster-Spalte, mit leerer Spalte oder mit "keine:" trotz Zahl faellt jetzt auf, statt still durchzugehen. Drei Aussagen sind neu in der Tabelle und damit erstmals gesperrt: die Rahmung als Industrie-Benchmark, die Rahmung der Baender als Engagement-Rate-Benchmarks und die Selbstbeschreibung "Dieser Skill ist evidenzbasiert". Zusaetzlich gesperrt sind jetzt die Werte 3,3 % und 3,2 % aus der Branchenzeile, fuer die es bisher kein Muster gab. Die Quellen-ID-Pruefung sucht nach \bQ\d+\b statt nur nach runden Klammern. "[Q99]", "(Q99, Abruf 2026)" und "siehe Q99" kamen bisher durch. Ein Fehlalarm in Fliesstext ist billiger als eine erfundene Quelle im Paket. Zwei Grenzen stehen jetzt im Skript, in SOURCES.md und in der README, statt verschwiegen zu werden: Die Sperren pruefen Schreibweisen, keine Aussagen, und fuer "Collaborative Articles" gibt es bewusst keine Textsperre, weil sie die richtigen Verneinungen in SKILL.md mit treffen wuerde. Dort ist die Elementliste gebunden, nicht der Fliesstext. Beim Wort "evidenzbasiert" faengt das Muster nur die Selbstbeschreibung, weil das Wort in der Branchentabelle als Tonfall fuer Healthcare legitim steht. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01BL7UoPomBp2Luhg89R6fYk
Die Kommentare ueber den beiden Pruefschritten beschrieben den Stand vor dieser Runde. "Beleglage pruefen" sagt jetzt, dass die Sperren aus der Spalte "Sperrmuster" der Tabelle kommen, dass die Tabelle gegen sich selbst geprueft wird und dass geprueft wird, wie etwas geschrieben ist, nicht was es behauptet. "Eval-Set fahren" nennt die beiden Bindungen, die dazugekommen sind: die 18 Profil-Elemente an drei Stellen und der Wortlaut, mit dem die Landingpage ihren Dialog als Beispiel ausweist. Der zweite Punkt kam mit dem Commit zur Elementliste ins run_eval.py, ohne dass die Commit-Message ihn genannt hat: LANDING_EHRLICHKEIT bindet die Ueberschrift "Beispiel-Dialog", die Statuszeile "Nachgestellter Dialog" und den Satz, der die Fixture nennt. Vorher liessen sich alle drei auf "Live Demo" und "Live-Analyse" zuruecksetzen, ohne dass ein Schritt anschlug. Gebunden waren nur die Zahlen, nicht die Aussage, dass sie nicht gemessen sind. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01BL7UoPomBp2Luhg89R6fYk
SOURCES.md verlangt im Pruefrhythmus, dass Aenderungen an den ausgelieferten Dateien im Changelog stehen. Der Eintrag zu v2.4.0 nannte die Runde davor, aber nicht die Elementliste, die Audit-Tabelle, die Sperrmuster-Spalte und die erweiterte Quellen-ID-Pruefung. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01BL7UoPomBp2Luhg89R6fYk
Die Spalte "Sperrmuster" liess eine Zeile mit "keine:" und einer beliebigen Begruendung von der Sperre frei. Damit hing die einzige Sperre gegen den zurueckgezogenen Creator Mode an einer Tabellenzelle, die jede Begruendung annimmt; dasselbe galt fuer Industrie-Benchmark, Engagement-Rate-Benchmarks, Halbjaehrliche Ueberpruefung und evidenzbasiert. Die Ausnahme ist wieder raus. Die Zeile zu den Collaborative Articles traegt jetzt die Schreibweisen, die in v2.3.0 tatsaechlich im Skill standen. Drei Umgehungen, die das Skript bisher durchliess: - "Creator-Mode" mit Bindestrich ging an "Creator Mode" vorbei. Leerraum in einem Muster faengt jetzt auch den Bindestrich. - "Halbjaehrliche" in ae-Umschrift ging an "Halbjährliche" vorbei. Umlaute in einem Muster fangen jetzt auch ihre Umschrift. - "Umfragen erreichen ~5 %" ging an "Umfragen ~5 %" vorbei, weil das Kontextwort direkt vor der Zahl stehen musste. Drei Punkte im Muster stehen jetzt fuer eine Luecke von bis zu 40 Zeichen. Fuer die Behauptung, die sich nicht ueber eine Schreibweise sperren laesst, steht eine Belegpflicht im Skript statt in der Tabelle: Ein Absatz, der Collaborative Articles und ein Badge in einem Zug nennt, muss Q3 zitieren. Der frei formulierte Satz "Collaborative Articles bringen das goldene Community-Top-Voice-Badge" faellt damit auf. Eine falsche Aussage mit richtiger Quellenangabe kommt weiter durch, das steht so im Docstring, in SOURCES.md und in der README. Dazu die letzte Laengen-Unstimmigkeit: die Beschreibung der Deliverables in SKILL.md nannte weiter 17 Profil-Elemente, waehrend Checkliste, Phase 4.3 und die Audit-Tabelle auf 18 stehen. run_eval.py bindet die Stueckzahl jetzt auch dort und meldet jede abweichende Zahl. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01BL7UoPomBp2Luhg89R6fYk
Die Tabellenzelle liess sich weiter aushebeln, nur leiser als vorher: Wer "Creator Mode" durch ein beliebiges anderes Wort ersetzte, behielt eine Zeile, einen stimmigen Zaehler und eine Sperre, die ins Leere lief. Jetzt muss mindestens ein Muster jeder Zeile den eigenen Wortlaut in der Spalte "Frühere Aussage" treffen. Damit die Zeile zu den Collaborative Articles das erfuellt, traegt ihre Spalte "Frühere Aussage" jetzt den Wortlaut, der bis v2.3.0 in SCORING.md und SKILL.md stand, statt nur den Namen des Sub-Kriteriums. Offen bleibt, und das steht in SOURCES.md und im Docstring: ein Muster laesst sich auf einen Teil des Wortlauts verengen, etwa von "Creator Mode" auf "Creator Mode aktiv". Das faellt der Pruefung nicht auf, steht aber als Aenderung in der Tabelle. Ausserdem trifft die Rueckweisung jetzt nur noch die alte Schreibweise "keine:" und nicht mehr jedes Muster, das mit dem Wort keine beginnt. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01BL7UoPomBp2Luhg89R6fYk
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Welle 5: Beleglage, Eval-Set, ehrliche Landingpage, Abgrenzung
Branch
feat/welle-5, sieben Commits, Version auf 2.4.0.Was umgesetzt ist
Quellen datiert, unbelegte Zahlen zurückgezogen. Der Skill nannte sich an drei Stellen evidenzbasiert und führte keine einzige Quellen-URL.
references/SOURCES.mdhält jetzt für jede Aussage fest, worauf sie beruht: sieben Quellen mit URL, Veröffentlichungs- und Abrufdatum, davon fünf Primärquellen von LinkedIn, und je Quelle ein Absatz, was sie ausdrücklich nicht belegt. Elf Zahlen ließen sich nicht belegen und sind ohne Ersatzzahl aus SKILL.md, SCORING.md, TEMPLATES.md, README, Landingpage und Report-Template entfernt, darunter der Plattformdurchschnitt der Engagement-Rate, die Engagement-Werte je Postformat und die Wirkungsfaktoren fürs Kommentieren. Die Tabelle „Zurückgezogen" nennt jede mit Begründung.Zwei Sachfehler kamen dabei heraus. Das goldene Community-Top-Voice-Badge ist seit dem 08.10.2024 zurückgezogen; das Sub-Kriterium „Collaborative Articles" bewertete also ein Verhalten ohne Wirkung und entfällt, der Punkt liegt bei „Momentum". Den Creator-Mode-Schalter gibt es seit März 2024 nicht mehr; er stand als Punkt 15 in der 18-Punkte-Checkliste, deren Zahl direkt in einen Score übersetzt wird.
Der Nenner der Engagement-Rate ist geklärt. SCORING.md rechnet über Impressions, das Report-Template schätzt aus der Follower-Zahl. SCORING.md sagt jetzt, dass das Raster nur für den impressions-basierten Wert gilt, dass der Schätzwert systematisch höher liegt und nur im Zeitverlauf desselben Profils verglichen wird. Der Report kennzeichnet den Wert entsprechend.
Kategorienamen vereinheitlicht. Dieselben zehn Kategorien liefen unter drei Benennungen:
generate_report.jskürzte vier davon ab, und SCORING.md selbst nutzte im Rechenbeispiel und in der Balkendarstellung weitere Kurzformen. Ab jetzt gilt eine Schreibweise, geprüft an vier Stellen.Eval-Set.
tests/enthält drei frei erfundene Profile, je eine Datei mit erwarteten Bändern undtests/run_eval.py. Der Runner liest das Gewichtsmodell aus SCORING.md, prüft die Gewichtssumme, die wortgleichen Kategorienamen an vier Stellen, Gewicht und Maximalbeitrag im Report-Template, rechnet den Gesamtscore aus den Rohscores nach und prüft die Bänder. Drei Kategorien werden nicht geglaubt, sondern nachgerechnet: Posting-Frequenz aus Posts pro Woche, Netzwerk & Follower aus der Follower-Zahl, Profil-Vollständigkeit aus den 18 Haken. Ändert jemand eine der drei Bewertungstabellen, meldet der Runner, welche Umrechnung nachzuziehen ist.Landingpage. Die Scoring-Engine war schon in einer früheren Welle auf das Modell von SCORING.md gestellt, der gezeigte Gesamtscore 70,0 rechnet sich sauber aus den Einzelwerten. Offen war der Anschein: der Abschnitt hieß „Live Demo". Er heißt jetzt „Beispiel-Dialog", nennt die Herkunft der Zahlen und verlinkt
tests/fixtures/profile_mid.json. Neue Zahlen kommen nicht dazu. Der Runner prüft die zehn Balken samt Balkenbreite, den Ring und die vier Werte im Dialog gegen das Fixture.Abgrenzung zum Orchestrator. Entscheidung: getrennt lassen. SKILL.md, README und Landingpage nennen beide Rollen, hier die einmalige Ist-Analyse mit den Profil-Artefakten, dort der laufende Betrieb. Der eigentliche Punkt ist die Trigger-Überschneidung, weil beide Descriptions auf „Profil optimieren", „Profil verbessern", „Personal Branding", „Content-Strategie" und „Top Voice" greifen. SKILL.md löst das mit vier Regeln: welche Frage wohin geht, dass bei gemischten Anfragen die Ist-Analyse zuerst läuft und danach übergeben wird, und dass „Top Voice" in beiden Skills zweierlei meint. Die Description trägt denselben Hinweis, damit die Auswahl vor dem Laden greift.
Wie geprüft
Zwei neue CI-Schritte,
scripts/check_sources.pyundtests/run_eval.py, beide mit Gegenproben belegt statt nur mit einem grünen Lauf.check_sources.pyprüft Stand- und Prüfdatum, URL und Datum je Quellenzeile, dass jede zitierte Quellen-ID existiert, und dass keine der 14 zurückgezogenen Angaben zurück in den Skill wandert. Gegenproben: eine wieder eingefügte 3,4-Prozent-Angabe und eine unbekannte ID Q99 führen beide zu Exitcode 1 mit Datei und Zeilennummer.run_eval.pyläuft grün über alle drei Fixtures (21,6 / 70,0 / 88,4). Vier Gegenproben führen zu Exitcode 1: ein zurückgedrehter Kategoriename im Report-Template, eine verstellte Follower-Zahl im Fixture, ein verschobenes Gewicht in SCORING.md (Summe 102 Prozent) und ein Ergebnislauf außerhalb der Bänder. Drei weitere Gegenproben decken die Landingpage ab: verstellter Balkenwert, verstellter Wert im Beispiel-Dialog, verstellter Gesamtscore im Dialog.Alle Schritte aus
ci.ymlsind lokal nachgefahren und grün, einschließlich beider Banner-Fälle und der Paketprüfung. Beide Workflow-Dateien wurden zusätzlich als YAML geparst, weilci.ymlper Textersetzung geändert wurde. Das Paket baut reproduzierbar, zwei Läufe liefern identische Bytes, der Inhaltsvergleich gegen die Positivliste ist ohne Unterschied. Die Vorprüfung des Release-Workflows wurde in beide Richtungen getestet:--expect v2.4.0endet mit 0,--expect v2.3.0mit 1. Interne Links und Anker in README, SKILL.md, references/ und index.html sind mit einem Skript geprüft und lösen alle auf.Was bewusst offen bleibt
Ein echtes Vorher-Nachher. Das braucht zwei datierte Messungen desselben Profils im Abstand von 60 bis 90 Tagen, und schon die erste fehlt. Statt eine Erfolgszahl zu bauen, steht auf der Landingpage und in der README, dass es sie nicht gibt.
Die Gegenrichtung im Repo LinkedIn-Orchestrator. Dessen Tabelle beschreibt diesen Skill in einer Zeile ohne Trigger-Regel, und seine Description greift weiter auf „Profil optimieren". Das ist ein eigener Vorgang in jenem Repo.
Die SSI-Aufteilung „4 × 25 Punkte". LinkedIn benennt die vier Säulen, die Punkteverteilung bestätigt es nicht. Sie bleibt im Skill, aber als Konvention gekennzeichnet.
Die Erfahrungswerte. Zeichenlängen für Headline und About, Posting-Kadenz, Postingzeiten, die Formatreihenfolge und die Punktebänder in SCORING.md bleiben unbelegt. Sie stehen gesammelt in einem eigenen Abschnitt von SOURCES.md, damit niemand sie für Messwerte hält.
Sieben der zehn Kategorien sind nur bandgeprüft, drei werden nachgerechnet. Ein LLM-Scoring ist nicht deterministisch; engere Bänder erzeugen rote Läufe ohne Erkenntnisgewinn.
Q6 (Hootsuite) ist eine fortlaufend aktualisierte Seite. Das Abrufdatum trägt dort mehr Gewicht als sonst, und der Prüfrhythmus in SOURCES.md fängt das ab: nächste Prüfung 04.03.2027.
Zwei bewusste Abweichungen von der Aufgabenformulierung: die Fixtures sind frei erfunden statt anonymisiert, weil anonymisieren die Erhebung realer Profile Dritter voraussetzt, die SECURITY.md einschränkt; und die Erwartungsdateien sind JSON statt YAML, damit der CI-Schritt ohne zusätzliche Abhängigkeit läuft.
🤖 Generated with Claude Code
https://claude.ai/code/session_01BL7UoPomBp2Luhg89R6fYk
Wie dieser Branch entstanden ist
Vier Durchgaenge, jeder mit eigener Abnahme, die selbst gemessen hat statt Berichte zu glauben.
Typ: eine Sicherheitsaussage in der Doku, die eine Messung widerlegt, und ein Gate, das
durchlaesst, sobald jemand das richtige Wort hinschreibt.
Probleme eingebaut hatte, darunter eine echte Erkennungsregression.
Aenderung nicht sauber reparieren laesst, wird sie zurueckgebaut. Gemessen wurde gegen den Stand
von
main, nicht gegen den eigenen Zwischenstand.Gepruefte Abnahmekriterien
Vor dem Oeffnen dieses Pull Requests wurde am Branch nachgemessen:
.github/workflows/ci.ymllaufen lokal durchWas offen bleibt, steht in der Beschreibung darueber. Es ist bewusst offen und nicht uebersehen.
Gestapelt. Dieser PR sitzt auf
main. GitHub haengt ihn automatisch aufmainum, sobald der darunterliegende PR gemergt ist. Vorher zeigt der Diff nur die Welle-3-Aenderungen, das ist so gewollt.Teil von Welle 5 des Haerteplans: Sicherheitshaerte. Jede Aenderung wurde von einem zweiten Durchgang abgenommen, der das Artefakt selbst gebaut, entpackt und den Installationsweg durchgegangen ist.