כותבים Script רק אחרי שזה עובד
תכתבו קריאה לא-אינטראקטיבית מוגבלת, תבחרו פורמט פלט ותשאירו CI בלי בקשות אישור. הפלטים להמחשה.
מקורות headless ו-Agent SDK נבדקו ב-30 בספטמבר 2026: claude -p ל-scripts ו-CI, --bare לריצות ניתנות לשחזור ופורמטי JSON למכונות. בקריאת script אין מי שיענה, אז תכנון הרשאות הוא העיצוב.
קודם אינטראקטיבי
פרומפט שעובד פעם בסשן יכול לכשול בשקט ב-CI: תיקייה אחרת, הקשר חסר, אין מי שיענה. הריצו אינטראקטיבית במאגר התרגול, אז המירו עם דגלים מפורשים.
עצב בדיקת כתיב לא-אינטראקטיבית לקבצי תוכן הקורס.
קלט: ה-diff או רשימת קבצים שהמפעיל מספק, לא גישה רחבה למאגר.
פלט: ממצאי filename:line בלבד; פלט ריק פירושו נקי.
בלי עריכות, רשת, hooks או MCP בריצה.
Bare mode לשחזור
--bare מדלג על גילוי אוטומטי של hooks, skills, plugins, MCP, זיכרון ו-CLAUDE.md, כך שהריצה לא קולטת מה שעמית הגדיר. אימות מגיע אז מ-ANTHROPIC_API_KEY או apiKeyHelper בהגדרות מפורשות, לא OAuth.
git diff main | claude --bare -p "you are a typo linter. for each typo in this diff, report filename:line on one line and the issue on the next. return nothing else." --allowedTools "Read"
Piping של ה-diff אומר ש-Claude לא צריך גישת shell לנתונים. stdin ב-pipe מוגבל ל-10MB; קלט גדול שייך לקובץ שמאוזכר בנתיב.
פורמטים לאנשים ומכונות
--output-format json מחזיר metadata כולל total_cost_usd, כך שקריאות script עוקבות אחר הוצאה לכל ריצה. stream-json פולט אירועים בשורות. --json-schema כשקוד downstream מצפה לצורה; format הוא הערה, לא אכיפה.
claude --bare -p "List the chapter titles changed in this diff" --output-format json | jq -r '.result'
תמיד פרסרו: script שעושה grep לפרוזה נשבר כשהניסוח משתנה.
בלי שואל אין בקשות
בריצות -p אין מי שיאשר כלים: הם פועלים לפי כללים מוגדרים, וצורך לא מאושר נכשל או ממתין בלי אדם. --allowedTools מאשר מראש קבוצה צרה; שמרו מינימלית. CI שצריך Write למשימת lint הוא ריח עיצובי.
משימות Bash רקע שהתחילו בריצת -p מסתיימות זמן קצר אחרי התוצאה; subagents ו-workflows מחכים, עם גבול ברירת מחדל. סוכן תקוע לא יחזיק את ה-CI לנצח, אבל יכול לבזבז דקות, אז הגבילו את המשימה.
תרגול מדורג
קל: המרה
פרומפט אינטראקטיבי לקריאת -p. הצלחה: אותו פלט, דגלים מפורשים.
בינוני: פורמט
text, json או stream-json לשלושה צרכנים. הצלחה: מכונות מקבלות פלט מובנה.
מאתגר: כשל
הפרומפט צריך כלי לא מאושר. הצלחה: כשל ברור, לא תשובה שגויה שקטה.
תקלות
עובד מקומית, נכשל ב-CI: bare mode, אימות ותיקיית עבודה.
פלט ריק כהצלחה: הבחינו נקי מול קריסה דרך exit code.
מעל 10MB stdin: הפניה לנתיב קובץ.
תקיעה על משימת רקע: גבול ההמתנה ונחוצות המשימה.
הפתעת עלות: קראו total_cost_usd בפלט JSON לכל ריצה.