ai newsSa., 24. Okt.
EilmeldungMoonshot AI bringt Kim K3.1 Pro mit 3 Billionen Parametern

Praxis-Test von spec-kit: Was vor dem KI-generierten Code zu schreiben ist

Ein zweiteiliger Artikel zeigt, wie sich spec-kit auf einem frischen Rechner in der Praxis einsetzen lässt und welche Spezifikationen Entwickler anlegen müssen, bevor eine KI den Code schreibt. Die Serie gehört zu einer siebenteiligen Reihe über Softwareentwicklung mit AI.

dev.toSamstag 03:30 · 24.10.DE7 Min. Lesezeit
Bild: dev.to

Von Nokka | Teil 2 von 7 der Serie "Software mit KI entwickeln" | Datenstand: 23. Oktober 2026

Dieser Artikel wurde von einer KI verfasst (deepseek-v4.1-flash · Modellanbieter: ollama-cloud) über den Hermes Agent, unter menschlicher Kontrolle und Qualitätsprüfung durch Nokka.

Im letzten Teil hatte ich geplant, dass das Werkzeug dieser Serie aus drei Schichten besteht. Jetzt gehe ich auf die erste Schicht ein, die am häufigsten übersprungen wird.

Ich habe spec-kit auf einem Rechner installiert, der weder Claude Code noch Docker besitzt, und ein Beispielprojekt erstellen lassen, um zu sehen, was es uns tatsächlich generiert.

Das Ergebnis zwang mich, eine eigene Annahme zu korrigieren, was ich im Abschnitt zu den Befehlen erzählen werde.

Der Rechner, den ich verwende, hatte bereits Python 3.11 und uv. Der einzige Befehl lautet:

uv tool install specify-cli specify --version Enter fullscreen mode Exit fullscreen mode Das Ergebnis ist specify 1.2.3, was den Mindestanforderungen laut README entspricht: Python 3.11 oder höher sowie uv.

Ein Punkt, bei dem viele Fehler machen: Der Paketname und der Befehlsname sind nicht identisch. Das Paket heißt specify-cli, der aufzurufende Befehl heißt jedoch specify.

Ich ließ ein Beispielprojekt erstellen und gab dabei an, dass Claude als Agent verwendet werden soll.

specify init se-demo --integration claude Enter fullscreen mode Exit fullscreen mode Was passierte: Es brach sofort ab und meldete claude not found, zusammen mit einem Link zur Installationsanleitung, der auf die Setup-Seite von Anthropic verweist.

Das ist eine Hürde, die ich für sinnvoll halte, denn sie schützt Personen, die glauben, das gesamte Ergebnis der Pipeline zu erhalten, ohne überhaupt einen Agenten installiert zu haben.

Wer diese Hürde überspringen will, um nur die Struktur zu sehen, kann das Flag --ignore-agent-tools verwenden, das ich in der Ausgabe von specify init --help auf diesem Rechner gefunden habe.

Ich habe dieses Flag für meine Experimente genutzt, denn mein Ziel war es, die erzeugten Dateien anzusehen, nicht dass irgendwer Code für mich schreibt.

Die Grundstruktur besteht aus zwei Ordnern (alle Angaben habe ich in den tatsächlichen Dateien des Testprojekts nachgeprüft, und die Quelle jedes Elements steht am Ende der jeweiligen Zeile).

Der Ordner.claude/skills/ enthält zehn Einträge: specify, plan, tasks, implement, clarify, analyze, checklist, constitution, converge und taskstoissues.

Die Datei.specify/init-options.json speichert alle bei der Erstellung verwendeten Werte, was sehr nützlich ist, wenn ein Team wissen möchte, wie dieses Projekt konfiguriert wurde.

{ "ai": "claude", "ai_skills": true, "feature_numbering": "sequential", "integration": "claude", "script": "sh", "speckit_version": "1.2.3" } Enter fullscreen mode Exit fullscreen mode Wie heißen die tatsächlichen Befehle? An dieser Stelle musste ich meine eigene Annahme korrigieren.

In der Dokumentation und in vielen Artikeln werden die Befehle als /speckit.specify mit Punkt geschrieben, aber das in Version 1.2.3 auf meinem Rechner tatsächlich Installierte erzeugt Ordner mit Bindestrich, also speckit-specify, speckit-plan, speckit-tasks, speckit-implement.

Der verlässlichste Weg ist, wirklich in den Ordner.claude/skills/ im eigenen Projekt zu schauen, statt Artikeln im Internet zu vertrauen oder dem, was ich selbst einmal geschrieben habe.

Wer einen anderen Agenten verwendet, erhält möglicherweise andere Namen und Befehlsformate, da diese aus dem manifest der jeweiligen integration generiert werden.

Öffnet man die Datei.specify/templates/spec-template.md und betrachtet die Abschnitte, sieht man, dass sie drei Hauptteile zwingend vorschreibt.

User Scenarios & Testing (mandatory) gliedert sich in User Stories auf drei Prioritätsstufen von P1 bis P3 samt einem Abschnitt für Edge Cases.

Requirements (mandatory) unterscheidet funktionale Anforderungen und, falls die Funktion datenbezogen ist, die zentralen Daten.

Success Criteria (mandatory) muss messbare Ergebnisse enthalten.

Mir fällt auf, dass das Wort Testing von Anfang an im Pflichtteil steht. Das ist ein wichtiger Unterschied zu klassischen Anforderungsdokumenten.

Es zwingt einen, von Beginn an zu überlegen, wie man erkennt, dass alles korrekt funktioniert, statt das erst beim Schreiben der Tests zu bedenken.

Im letzten Teil hatte ich versprochen, diese Frage klar zu beantworten.

Ein Dokument, das Menschen lesen, erzählt meist Gründe und Kontext, etwa warum wir diesen Ansatz gewählt haben und wer etwas ausprobiert hat, das nicht funktionierte.

Ein spec, mit dem ein Agent arbeitet, braucht etwas anderes: überprüfbare Angaben.

Der Vorlage, die ich mir angesehen habe, zufolge gibt es drei Dinge, die genau diese Aufgabe erfüllen.

Priorisierte User Stories sagen dem Agenten, was zuerst erledigt werden muss und was danach kommen kann.

Edge Cases geben an, welches Verhalten bei ungewöhnlichen Daten erwartet wird.

Messbare Erfolgskriterien sagen, was der Beleg dafür ist, dass die Arbeit abgeschlossen ist.

Meiner Ansicht nach wird der Agent für einen raten, wenn man nur einen schönen Fließtext ohne diese drei Elemente schreibt, und sein Raten wird zu Code, den man später korrigieren muss.

Die Datei plan-template.md enthält zudem einen Abschnitt Constitution Check.

Das bedeutet, dass vor dem eigentlichen planen und implement geprüft wird, ob der Plan den Prinzipien widerspricht, die in memory/constitution.md festgelegt wurden.

Bei einem neuen Projekt ist die constitution-Datei noch eine leere Vorlage mit Beispielen, etwa Prinzipien wie library-first oder CLI interface.

Lässt man sie leer, gibt es an dieser Stelle nichts zu prüfen, wodurch man diesen Vorteil unnötig verschenkt.

Aus der Liste der erhaltenen skills lässt sich diese sinnvolle Reihenfolge ableiten.

Die drei Elemente in der Mitte sind clarify, analyze und checklist, die meiner Einschätzung nach am häufigsten übersprungen werden, obwohl sie viel Zeit sparen können.

OpenSpec hat 72.780 Sterne, steht unter der MIT-Lizenz und wurde zuletzt am 23. Oktober 2026 aktualisiert. Es positioniert sich als spec-driven development für AI coding assistants.

Beide Werkzeuge lösen dasselbe Problem, nämlich dem Agenten vor dem Loslegen eine Spezifikation an die Hand zu geben, verfolgen dabei aber unterschiedliche Ansätze.

spec-kit liefert einen stabileren Rahmen, mit einer Constitution, einem Workflow sowie Skripten, die beim Erzeugen der Dateien helfen.

OpenSpec setzt auf einen leichteren und flexibleren Ansatz und eignet sich eher für alle, die eine Spec-Datei als zentrale verbindliche Grundlage im Repository möchten, statt ein komplettes System.

Keines der beiden ist grundsätzlich besser, es hängt davon ab, wie viel Struktur Ihr Team benötigt.

Erstens: Die Installation über (das Tool) lässt noch keinen Agenten einspringen, was fälschlich den Eindruck erweckt, alles sei einsatzbereit, obwohl die Befehle von speckit den Agenten nicht aufrufen können, wenn dieser nicht tatsächlich auf dem Rechner vorhanden ist.

Zweitens: Leere Vorlagen verwandeln die Prüfstufe in eine bloße Zeremonie.

Drittens: Die Befehlsnamen ändern sich je nach Version und je nach gewähltem Agenten. Verlassen Sie sich nicht auf das, was in einem Artikel steht, sondern schauen Sie in Ihrem eigenen Projekt nach.

Viertens: Nach meiner Erfahrung führen zu lange Spezifikationen dazu, dass der Agent sie nicht vollständig liest, und liefern meist schlechtere Ergebnisse als eine kurze, klare Spec.

Fünftens: Eine Spezifikation erst nach dem Schreiben des Codes zu verfassen, ist eine nachträgliche Dokumentation und keine Planung.

Installieren Sie das Werkzeug mit uv und führen Sie dann init in einem Testordner aus. Sie können dabei zunächst das Flag zum Überspringen der Agenten-Stufe verwenden.

Öffnen Sie anschließend die Datei.specify/templates/spec-template.md, lesen Sie sie einmal vollständig durch und schreiben Sie dann von Hand eine Spezifikation für eine kleine Funktion.

Bevor Sie den Agenten an den Code lassen, prüfen Sie, ob die Spezifikation mindestens ein messbares Erfolgskriterium enthält.

Wenn Sie ein Kriterium nicht formulieren können, bedeutet das, dass Sie noch nicht verstanden haben, woran sich zeigt, dass die Funktion erfolgreich umgesetzt ist, und der Agent wird es ebenfalls nicht verstehen.

GitHub, "github/spec-kit" README, abgerufen am 23. Oktober 2026 (Voraussetzungen: Python 3.11 oder höher, uv, die Befehle uv tool install specify-cli und specify init mit der Option --integration).

GitHub, "Fission-AI/OpenSpec", abgerufen am 23. Oktober 2026 (MIT, 72.780 Sterne, aktualisiert am 23. Oktober 2026, spec-driven development für AI coding assistants).

GitHub, "github/spec-kit: templates/spec-template.md", "templates/plan-template.md" und "scripts/bash/create-new-feature.sh", abgerufen am 23. Oktober 2026 (verpflichtende Abschnitte in den Spec- und Plan-Vorlagen sowie die Liste der Bash-Skripte, die mit dem Werkzeugpaket mitgeliefert werden).

Anthropic, "Claude Code setup", abgerufen am 23. Oktober 2026 (Installationsverweis, den spec-kit angibt, wenn claude auf dem Rechner nicht gefunden wird). GitHub, "github/spec-kit: workflows/speckit/workflow.yml", abgerufen am 23. Oktober 2026 (Definition des Workflows mit dem Namen Full SDD Cycle, der auf der obersten Ebene des Repositorys liegt und nicht im Ordner templates).

Automatisch übersetzt. Das Original auf Englisch ist unten aufklappbar.

Original (Englisch) anzeigen

โดย Nokka (นก-กา) | ตอนที่ 2 จาก 7 ของชุด "สร้างซอฟต์แวร์ด้วย AI" | ตรวจสอบข้อมูล ณ 23 ต.ค. 2026

บทความนี้เขียนโดย AI (deepseek-v4.1-flash · ผู้ให้บริการโมเดล: ollama-cloud) ผ่าน Hermes Agent ภายใต้การควบคุมและตรวจสอบคุณภาพโดยมนุษย์ - Nokka (นก-กา)

ตอนที่แล้วผมวางแผนที่ว่าของกลุ่มนี้มีสามชั้น ตอนนี้ผมจะลงมาที่ชั้นแรกซึ่งคนข้ามมากที่สุด

ผมติดตั้ง spec-kit ในเครื่องที่ไม่มี Claude Code และไม่มี Docker แล้วสั่งสร้างโปรเจกต์ตัวอย่างหนึ่งอัน เพื่อดูว่ามันสร้างอะไรให้เราจริง

ผลลัพธ์ที่ได้ทำให้ผมต้องแก้ความเข้าใจของตัวเองหนึ่งจุด ซึ่งจะเล่าในหัวข้อคำสั่ง

เครื่องที่ผมใช้มี Python 3.11 กับ uv อยู่แล้ว คำสั่งเดียวคือ

uv tool install specify-cli specify --version Enter fullscreen mode Exit fullscreen mode ผลที่ได้คือ specify 1.2.3 ซึ่งตรงกับเงื่อนไขขั้นต่ำที่ README ระบุไว้ คือ Python 3.11 ขึ้นไปกับ uv

จุดที่คนพลาดบ่อยคือชื่อแพ็กเกจกับชื่อคำสั่งไม่เหมือนกัน แพ็กเกจชื่อ specify-cli แต่คำสั่งที่เรียกใช้ชื่อ specify

ผมสั่งสร้างโปรเจกต์ตัวอย่างโดยระบุว่าใช้ Claude เป็น agent

specify init se-demo --integration claude Enter fullscreen mode Exit fullscreen mode สิ่งที่เกิดขึ้นคือมันหยุดทันทีและแจ้งว่า claude not found พร้อมลิงก์วิธีติดตั้ง โดยลิงก์นั้นชี้ไปที่หน้า setup ของ Anthropic

นี่คือด่านที่ผมคิดว่าดี เพราะมันกันคนที่คิดว่าจะได้ผลลัพธ์ทั้งไปป์ไลน์โดยยังไม่มี agent สักตัว

ถ้าต้องการข้ามด่านนี้เพื่อดูโครงสร้างเฉย ๆ มีธง --ignore-agent-tools ซึ่งผมเห็นในผลของ specify init --help บนเครื่องนี้

ผมใช้ธงนี้ในการทดลอง เพราะจุดประสงค์คือดูไฟล์ที่มันสร้าง ไม่ใช่ให้ใครเขียนโค้ดให้

โครงสร้างหลักมีสองโฟลเดอร์ (ทั้งหมดนี้ผมเปิดดูไฟล์จริงในโปรเจกต์ทดลอง และที่มาของแต่ละรายการผมระบุไว้ท้ายบรรทัด)

.claude/skills/ มีสิบรายการ ได้แก่ specify, plan, tasks, implement, clarify, analyze, checklist, constitution, converge และ taskstoissues

ไฟล์.specify/init-options.json บันทึกค่าที่ใช้สร้างไว้ทั้งหมด ซึ่งมีประโยชน์มากเวลาทีมอยากรู้ว่าโปรเจกต์นี้ตั้งไว้อย่างไร

{ "ai": "claude", "ai_skills": true, "feature_numbering": "sequential", "integration": "claude", "script": "sh", "speckit_version": "1.2.3" } Enter fullscreen mode Exit fullscreen mode คำสั่งจริงชื่ออะไร ตรงนี้คือจุดที่ผมต้องแก้ความเข้าใจของตัวเอง

ในเอกสารและบทความจำนวนมากเขียนคำสั่งเป็น /speckit.specify แบบมีจุด แต่ของที่ติดตั้งได้จริงในเวอร์ชัน 1.2.3 ในเครื่องผม สร้างโฟลเดอร์ชื่อแบบขีดกลาง คือ speckit-specify, speckit-plan, speckit-tasks, speckit-implement

วิธีที่นับว่าชัวร์คือเปิดดูโฟลเดอร์.claude/skills/ ในโปรเจกต์ของเราจริง ๆ ไม่ใช่เชื่อบทความบนอินเทอร์เน็ต หรือเชื่อสิ่งที่ผมเคยเขียนไว้เอง

ถ้าคุณใช้ agent อื่น ชื่อและรูปแบบคำสั่งอาจต่างออกไป เพราะมันถูกสร้างจาก manifest ของ integration นั้น

เปิดไฟล์.specify/templates/spec-template.md แล้วดูหัวข้อ จะเห็นว่ามันบังคับสามส่วนหลัก

User Scenarios & Testing (mandatory) แบ่งเป็นเรื่องราวผู้ใช้สามระดับความสำคัญ P1 ถึง P3 พร้อมส่วน Edge Cases

Requirements (mandatory) แยกเป็นความต้องการเชิงหน้าที่ และข้อมูลหลักถ้าฟีเจอร์เกี่ยวกับข้อมูล

Success Criteria (mandatory) ต้องเป็นผลลัพธ์ที่วัดได้

สังเกตว่าคำว่า Testing อยู่ในหัวข้อบังคับตั้งแต่ต้น นี่คือความต่างสำคัญจากเอกสารความต้องการแบบเดิม

มันบังคับให้คุณคิดตั้งแต่แรกว่า "เราจะรู้ได้อย่างไรว่ามันทำงานถูก" ไม่ใช่รอไปคิดตอนเขียนเทสต์

ตอนที่แล้วผมสัญญาไว้ว่าจะตอบคำถามนี้ให้ชัด

เอกสารที่คนอ่านมักเล่าเหตุผลและบริบท เช่น ทำไมเราถึงเลือกแนวทางนี้ และใครเคยลองอะไรแล้วไม่ได้ผล

spec ที่ agent ใช้ทำงานต้องการสิ่งที่ต่างออกไป คือสิ่งที่ตรวจได้

จากแม่แบบที่ผมเปิดดู มีสามอย่างที่ทำหน้าที่นี้โดยตรง

เรื่องราวผู้ใช้ที่จัดลำดับความสำคัญ บอก agent ว่าอะไรต้องทำก่อนและอะไรทำทีหลังได้

เงื่อนไขขอบ บอกว่าอะไรคือพฤติกรรมที่คาดไว้เมื่อข้อมูลผิดปกติ

เกณฑ์ความสำเร็จที่วัดได้ บอกว่าอะไรคือหลักฐานว่าจบงาน

ในมุมมองของผม ถ้าคุณเขียนแค่ความเรียงสวย ๆ ที่ไม่มีสามอย่างนี้ agent จะเดาแทนคุณ และการเดาของมันจะกลายเป็นโค้ดที่คุณต้องมาแก้ทีหลัง

ไฟล์ plan-template.md มีหัวข้อ Constitution Check อยู่ด้วย

แปลว่าก่อนจะลงมือวางแผน implement มันให้ตรวจว่าแผนนั้นขัดกับหลักการที่เราตั้งไว้ใน memory/constitution.md หรือไม่

ในโปรเจกต์ใหม่ ไฟล์ constitution ยังเป็นเทมเพลตเปล่าที่มีตัวอย่างประกอบ เช่น หลักการแบบ library-first หรือ CLI interface

ถ้าปล่อยว่างไว้ ด่านนี้จะไม่มีอะไรให้ตรวจ ซึ่งทำให้คุณเสียประโยชน์ของมันไปฟรี ๆ

จากรายการ skill ที่ได้ ผมเรียงลำดับที่สมเหตุสมผลได้แบบนี้

สามตัวกลางคือ clarify, analyze และ checklist ที่ผมคิดว่าคนมักข้ามมากที่สุด แต่กลับช่วยประหยัดเวลาได้มาก

OpenSpec มี 72,780 ดาว สัญญาอนุญาต MIT และอัปเดตล่าสุด 23 ต.ค. 2026 โดยวางตัวเป็น spec-driven development สำหรับ AI coding assistant

ทั้งสองเครื่องมือแก้ปัญหาเดียวกันคือทำให้ agent มีสเปกก่อนลงมือ แต่แนวทางต่างกัน

spec-kit ให้โครงหนากว่า มี constitution มี workflow และมีสคริปต์ช่วยสร้างไฟล์

OpenSpec เน้นเบาและยืดหยุ่นกว่า เหมาะกับคนที่อยากได้ไฟล์ spec เป็นสัญญากลางในรีโปมากกว่าอยากได้ทั้งระบบ

ไม่มีอันไหนดีกว่ากันแต่ขึ้นกับว่าทีมคุณต้องการโครงแค่ไหน

หนึ่ง การติดตั้งผ่านแต่ยังไม่มี agent ทำให้เข้าใจผิดว่าพร้อมใช้แล้ว ทั้งที่คำสั่งของ speckit จะเรียกใช้ agent ไม่ได้ถ้าในเครื่องไม่มีตัวนั้นจริง

สอง เทมเพลตที่ปล่อยว่างจะทำให้ด่านตรวจกลายเป็นพิธีกรรม

สาม ชื่อคำสั่งเปลี่ยนตามเวอร์ชันและตาม agent ที่เลือก อย่าจดจำจากบทความ ให้ดูจากโปรเจกต์ตัวเอง

สี่ ในประสบการณ์ของผม spec ที่ยาวเกินไปจะทำให้ agent อ่านไม่ครบ และมักได้ผลแย่กว่า spec สั้นที่ชัด

ห้า การเขียน spec หลังเขียนโค้ดเสร็จแล้ว เป็นการเขียนเอกสารย้อนหลัง ไม่ใช่การวางแผน

ติดตั้งด้วย uv แล้วสั่ง init ในโฟลเดอร์ทดลอง ใช้ธงข้ามด่าน agent ก่อนก็ได้

จากนั้นเปิด.specify/templates/spec-template.md อ่านให้จบหนึ่งรอบ แล้วเขียนสเปกของฟีเจอร์เล็ก ๆ หนึ่งอันด้วยมือ

ก่อนจะให้ agent แตะโค้ด ขอให้ตรวจว่าสเปกมีเกณฑ์ความสำเร็จที่วัดได้อย่างน้อยหนึ่งข้อ

ถ้าคุณเขียนเกณฑ์ไม่ได้ แปลว่าคุณยังไม่เข้าใจว่าฟีเจอร์นี้สำเร็จหน้าตาเป็นอย่างไร และ agent ก็จะไม่เข้าใจด้วย

GitHub, "github/spec-kit" README, สืบค้น 23 ต.ค. 2026 (เงื่อนไข Python 3.11+, uv, คำสั่ง uv tool install specify-cli และ specify init พร้อมตัวเลือก --integration). https://github.com/github/spec-kit

GitHub, "Fission-AI/OpenSpec", สืบค้น 23 ต.ค. 2026 (MIT, 72,780 ดาว, อัปเดต 23 ต.ค. 2026, spec-driven development สำหรับ AI coding assistant). https://github.com/Fission-AI/OpenSpec

GitHub, "github/spec-kit: templates/spec-template.md", "templates/plan-template.md" และ "scripts/bash/create-new-feature.sh", สืบค้น 23 ต.ค. 2026 (หัวข้อบังคับในแม่แบบ spec และ plan รวมถึงรายการสคริปต์ bash ที่มากับชุดเครื่องมือ). https://github.com/github/spec-kit/tree/main/templates และ https://github.com/github/spec-kit/tree/main/scripts/bash

Anthropic, "Claude Code setup", สืบค้น 23 ต.ค. 2026 (ลิงก์ติดตั้งที่ spec-kit อ้างถึงเมื่อไม่พบ claude ในเครื่อง). https://docs.anthropic.com/en/docs/claude-code/setup GitHub, "github/spec-kit: workflows/speckit/workflow.yml", สืบค้น 23 ต.ค. 2026 (นิยามลำดับงานชื่อ Full SDD Cycle ซึ่งอยู่ที่ระดับบนของ repo ไม่ได้อยู่ในโฟลเดอร์ templates). https://github.com/github/spec-kit/blob/main/workflows/speckit/workflow.yml

Originaltitel: รัน spec-kit จริงในเครื่องเปล่า: ก่อนจะให้ AI เขียนโค้ด ต้องเขียนอะไรก่อน?Quelle: dev.to (dev.to). Original öffnen