caveman-discover

โดย juliusbrussee

ค้นหาเวิร์กโฟลว์ LLM ทั้งหมดในรีโพสิทอรีปัจจุบันและติดป้ายกำกับ เพื่อให้ Caveman Cloud จัดกลุ่มค่าใช้จ่ายตามสิ่งที่โค้ดทำจริง (support-reply, nightly-digest) แทนที่จะเป็นกลุ่มที่ไม่ระบุชื่อเดียว ใช้เมื่อผู้ใช้วางพรอมต์การค้นพบของ Caveman พูดว่า "discover workflows" หรือขอให้แยกค่าใช้จ่าย LLM ตามเวิร์กโฟลว์ รีโพสิทอรีควรมีการกำหนดเส้นทางผ่านเกตเวย์ Caveman อยู่แล้ว (สกิล caveman-setup ทำส่วนนั้น)

npx skills add https://github.com/juliusbrussee/caveman --skill caveman-discover

You are labeling this repository's LLM workflows for Caveman Cloud. A workflow is a job the code performs — "answer a support ticket", "build the nightly digest", "run the eval suite" — not a technology. Every gateway request can carry a workflow label; unlabeled traffic all lands in one unlabeled-workflow bucket. Your job: find the workflows, name them well, wire the labels, and verify nothing broke.

This changes code, so it goes through the user's normal review: propose the table first, apply after the user agrees. Re-running on an already-labeled repo must change nothing (idempotent).

This skill is operator-invoked. An unlabeled-traffic Cave Plan observation is review-only and does not create an advisory file, proposal, or Draft PR. Do not infer that telemetry selected a callsite or authorized an edit. Independently inventory the repository, present the labeling table, and wait for the user's approval before changing code.

Step 1 — Inventory the workflows

Walk the repo from its entry points, not from its imports:

  • HTTP/RPC handlers that call an LLM (directly or through layers)
  • Scheduled jobs: cron definitions, queue consumers, workers, GitHub Actions that invoke LLM code
  • CLI commands and scripts (scripts/, bin/, package.json scripts)
  • Eval / test harnesses that burn real tokens
  • Distinct agents or chains inside a framework (each LangGraph graph, each crew, each agent definition is usually its own workflow)

One workflow = one job a human would name. Ten callsites inside the same request handler are one workflow; one shared llm.ts helper used by three jobs is three workflows (label at the callers, never the shared helper).

Step 2 — Name them

Slug grammar (the gateway enforces this): lowercase [a-z0-9_-], 1–96 chars. Name the job, not the tech:

  • Good: support-reply, nightly-digest, pr-review, eval-suite, onboarding-email
  • Bad: openai-calls (tech), main (says nothing), SupportReply (invalid), johns-test-3 (won't age)

Names are forever-ish — renaming later splits the spend history. When a job's purpose isn't clear from the code, derive the slug from the file name and mark it review in the table rather than inventing a purpose.

Step 3 — Propose, then apply

Present this table and ask to proceed:

| workflow | job | where | how it gets labeled |
|---|---|---|---|
| support-reply | answers inbound tickets | src/bot/reply.ts:41 | defaultHeaders on the reply client |
| nightly-digest | 02:00 summary job | jobs/digest.ts:12 | header on the digest client |
| eval-suite (review) | scripts/eval.ts:8 — purpose inferred from filename | scripts/eval.ts:8 | env override at invocation |

Then wire each label with the lightest mechanism available at that callsite:

  • @caveman-ai/sdk / caveman_cloud SDK: per-trace workflow option, or defaultWorkflow on the client a single-job service constructs.
  • Raw provider SDKs (OpenAI/Anthropic/LangChain/LiteLLM/Vercel): add "x-cave-workflow": "<slug>" to the same defaultHeaders / default_headers / extra_headers block that already carries x-cave-api-key. Shared client used by several jobs → pass the header per call (every SDK above accepts per-request header overrides), or give each job its own thin client.
  • Wrapped coding agents (caveman wrap): --workflow <slug> flag or CAVE_WORKFLOW=<slug> env at the invocation site (cron line, CI step).
  • Raw HTTP: add the x-cave-workflow header to the request.

Label the callers, keep the diff minimal, match the repo's style. If a callsite is not routed through the Caveman gateway at all, don't label it — list it under "not wired" in the report (labels only travel on gateway traffic; wiring is the caveman-setup skill's job).

Step 4 — Verify

Run whatever the repo already uses to exercise one labeled path (a test, a dev script, one curl). Then confirm: the request still succeeds (the gateway rejects an invalid label with 400 cave_invalid_request_header — fix the slug if so). Labeled spend appears on the dashboard at /activity?tab=workflows as each workflow next runs; jobs on a schedule show up when the schedule fires, and that's worth saying in the report rather than pretending they're live.

Step 5 — Report

## Workflows labeled

| workflow | job | where |
|---|---|---|
| support-reply | answers inbound tickets | src/bot/reply.ts:41 |
| nightly-digest | 02:00 summary job | jobs/digest.ts:12 |

Verified: <the labeled path you actually exercised, and what you observed>
Lands at: <DASHBOARD>/activity?tab=workflows — each row appears as that workflow
next runs. Anything still unlabeled shows as `unlabeled-workflow`.
Not wired (no gateway routing, so no label): <list or "none">
Marked review: <slugs whose purpose was inferred from filenames, or "none">

If you found no LLM entry points at all: say exactly that, and point at the setup skill (<docs origin>/docs/agent-setup.md) instead of manufacturing a table.

Skills เพิ่มเติมจาก juliusbrussee

caveman
juliusbrussee
โหมดสื่อสารแบบบีบอัดสูง ลดการใช้โทเค็นประมาณ 75% โดยพูดแบบมนุษย์ถ้ำ แต่ยังคงความถูกต้องทางเทคนิคครบถ้วน รองรับระดับความเข้มข้น: lite, full (ค่าเริ่มต้น), ultra, wenyan-lite, wenyan-full, wenyan-ultra ใช้เมื่อผู้ใช้พูดว่า "caveman mode", "talk like caveman", "use caveman", "less tokens", "be brief" หรือเรียกใช้ /caveman และจะทำงานอัตโนมัติเมื่อมีการขอประสิทธิภาพการใช้โทเค็น
communicationproductivity
caveman-commit
juliusbrussee
เครื่องมือสร้างข้อความคอมมิตที่บีบอัดอย่างยิ่ง ลดความรกในข้อความคอมมิตขณะคงเจตนาและเหตุผลไว้ รูปแบบ Conventional Commits หัวข้อไม่เกิน 50 ตัวอักษร เนื้อหาเฉพาะเมื่อ "เหตุผล" ไม่ชัดเจน ใช้เมื่อผู้ใช้พูดว่า "write a commit", "commit message", "generate commit", "/commit" หรือเรียก /caveman-commit ทำงานอัตโนมัติเมื่อมีการจัดเตรียมการเปลี่ยนแปลง
developmentcode-review
caveman-compress
juliusbrussee
บีบอัดไฟล์หน่วยความจำภาษาธรรมชาติ (CLAUDE.md, todos, preferences) ให้เป็นรูปแบบ caveman เพื่อประหยัดโทเค็นอินพุต คงไว้ซึ่งเนื้อหาทางเทคนิค โค้ด URL และโครงสร้างทั้งหมด เวอร์ชันที่บีบอัดจะเขียนทับไฟล์ต้นฉบับ สำเนาสำรองที่มนุษย์อ่านได้จะถูกบันทึกเป็น FILE.original.md ทริกเกอร์: /caveman-compress FILEPATH หรือ "compress memory file
developmentdocument
caveman-help
juliusbrussee
บัตรอ้างอิงด่วนสำหรับโหมด ทักษะ และคำสั่งทั้งหมดของ caveman แสดงผลครั้งเดียว ไม่ใช่โหมดถาวร คำสั่งเรียก: /caveman-help, "caveman help", "what caveman commands", "how do I use caveman
developmentdocumentproductivity
caveman-review
juliusbrussee
ความคิดเห็นรีวิวโค้ดแบบบีบอัดสูง ลดสัญญาณรบกวนจากฟีดแบ็ก PR ขณะคงสัญญาณที่นำไปปฏิบัติได้ไว้ แต่ละความคิดเห็นคือหนึ่งบรรทัด: ตำแหน่ง ปัญหา วิธีแก้ไข ใช้เมื่อผู้ใช้พูดว่า "review this PR", "code review", "review the diff", "/review" หรือเรียกใช้ /caveman-review ทำงานอัตโนมัติเมื่อรีวิว pull requests
developmentcode-review
caveman-stats
juliusbrussee
แสดงการใช้งานโทเค็นจริงและประมาณการประหยัดสำหรับเซสชันปัจจุบัน อ่านโดยตรงจากบันทึกเซสชันของ Claude Code — ไม่มีการประมาณด้วย AI เรียกใช้ด้วย /caveman-stats ผลลัพธ์ถูกแทรกโดย mode-tracker hook; ตัวโมเดลไม่ได้คำนวณตัวเลขเอง
developmentdata-analysis
cavecrew
juliusbrussee
We need to translate the given English text into Thai. The text describes a decision guide for delegating to caveman-style subagents. It mentions specific names: cavecrew-investigator, cavecrew-builder, cavecrew-reviewer, and cavecrew. These names should be preserved as is. Also preserve "Explore" (capitalized) and the trigger phrases. The translation should be natural Thai, keeping technical terms like "subagent", "tool-result", "context", "inline", "diff review", etc. The instruction says to preserve URLs, numbers, technical terms. No extra commentary. Just output the translation. Let me translate paragraph by paragraph. First sentence: "Decision guide for delegating to caveman-style subagents." -> "คู่มือการตัดสินใจสำหรับการมอบหมายงานให้กับซับเอเจนต์สไตล์ถ้ำมนุษย์" (caveman-style might be "สไตล์ถ้ำมนุษย์" but careful: "caveman" is a term, but we preserve "caveman-style" as is? The
developmentcode-reviewapi
caveman-explore
juliusbrussee
เครื่องมือสำรวจพื้นที่เก็บข้อมูลแบบอ่านอย่างเดียว ใช้เชิงรุกสำหรับการสำรวจเบื้องต้น การค้นหาข้ามไฟล์ในวงกว้าง หรือเมื่อการค้นหาตรงล้มเหลวและจำเป็นต้องระบุตำแหน่งของสิ่งนั้น ข้ามไปเมื่อประเด็นระบุไฟล์หรือสัญลักษณ์ที่แน่นอนอยู่แล้ว หรือรอบก่อนหน้าให้หลักฐาน file:line ที่ใช้งานได้แล้ว ส่งคืนเฉพาะการอ้างอิง path:line แบบกระชับ การอ่านและการ grep ไม่เคยเข้าไปในบทสนทนาหลัก