caveman-discover

Finde jeden LLM-Workflow im aktuellen Repository und kennzeichne ihn, damit Caveman Cloud Ausgaben nach dem gruppiert, was der Code tatsächlich tut (support-reply, nightly-digest), statt in einem anonymen Bucket. Verwende dies, wenn der Benutzer den Caveman-Discovery-Prompt einfügt, „discover workflows“ sagt oder darum bittet, die LLM-Ausgaben nach Workflow aufzuschlüsseln. Das Repository sollte bereits über das Caveman-Gateway laufen (das erledigt die caveman-setup-Skill).

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.

Mehr Skills von juliusbrussee

caveman
juliusbrussee
Ultrakomprimierter Kommunikationsmodus. Reduziert Token-Nutzung um ~75% durch Höhlenmenschen-Sprache bei voller technischer Genauigkeit. Unterstützt Intensitätsstufen: lite, full (Standard), ultra, wenyan-lite, wenyan-full, wenyan-ultra. Verwenden, wenn Benutzer "caveman mode", "talk like caveman", "use caveman", "less tokens", "be brief" sagt oder /caveman aufruft. Wird auch automatisch ausgelöst, wenn Token-Effizienz angefordert wird.
communicationproductivity
caveman-commit
juliusbrussee
Ultra-kompakter Generator für Commit-Nachrichten. Reduziert Rauschen in Commit-Nachrichten, während Absicht und Begründung erhalten bleiben. Conventional Commits-Format. Betreff ≤50 Zeichen, Text nur, wenn das „Warum“ nicht offensichtlich ist. Wird verwendet, wenn der Benutzer „write a commit“, „commit message“, „generate commit“, „/commit“ sagt oder /caveman-commit aufruft. Automatische Auslösung beim Staging von Änderungen.
developmentcode-review
caveman-compress
juliusbrussee
Komprimiere natürliche Sprachspeicherdateien (CLAUDE.md, todos, preferences) in das Höhlenmenschenformat, um Eingabetoken zu sparen. Erhält alle technischen Inhalte, Code, URLs und Struktur. Die komprimierte Version überschreibt die Originaldatei. Ein menschenlesbares Backup wird als DATEI.original.md gespeichert. Auslöser: /caveman-compress DATEIPFAD oder "compress memory file
developmentdocument
caveman-help
juliusbrussee
Schnellreferenzkarte für alle Höhlenmensch-Modi, Fähigkeiten und Befehle. Einmalige Anzeige, kein dauerhafter Modus. Auslöser: /caveman-help, "caveman help", "what caveman commands", "how do I use caveman".
developmentdocumentproductivity
caveman-review
juliusbrussee
Ultrakompakte Code-Review-Kommentare. Reduziert Rauschen aus PR-Feedback, während die umsetzbaren Signale erhalten bleiben. Jeder Kommentar ist eine Zeile: Ort, Problem, Lösung. Wird verwendet, wenn der Benutzer „review this PR“, „code review“, „review the diff“, „/review“ sagt oder /caveman-review aufruft. Wird automatisch ausgelöst, wenn Pull-Requests überprüft werden.
developmentcode-review
caveman-stats
juliusbrussee
Zeigt den tatsächlichen Token-Verbrauch und geschätzte Einsparungen für die aktuelle Sitzung an. Liest direkt aus dem Claude Code-Sitzungsprotokoll – keine KI-Schätzung. Wird durch /caveman-stats ausgelöst. Die Ausgabe wird durch den mode-tracker-Hook eingefügt; das Modell selbst berechnet die Zahlen nicht.
developmentdata-analysis
cavecrew
juliusbrussee
We need to translate the given English text into German, preserving the specified name 'cavecrew' and other technical terms. The text is a description of a decision guide for delegating to subagents. We must not add any extra commentary or labels. The translation should be natural German while keeping the technical terms like 'cavecrew-investigator', 'cavecrew-builder', 'cavecrew-reviewer', 'Explore', 'caveman-compressed', etc. Also preserve numbers like '1-2', '~60%'. The trigger phrases should be translated but the exact trigger words might be kept as is? The instruction says preserve product names, protocol names, URLs, numbers, technical terms. 'cavecrew' is a name, so keep it. The trigger phrases like "delegate to subagent" are not product names, so translate them. But careful: the trigger is given in quotes, so we should translate the quoted text. Also note the text ends with "spawn..." which is incomplete. We'll translate as is. Let me write the
developmentcode-reviewapi
caveman-explore
juliusbrussee
Nur-Lese-Repository-Explorer. Proaktiv für die Erkundung bei kaltem Start, breite dateiübergreifende Lokalisierung oder wenn eine direkte Suche fehlgeschlagen ist und Sie herausfinden müssen, wo etwas liegt. Überspringen Sie es, wenn das Problem bereits die genaue Datei oder das Symbol nennt oder eine vorherige Runde bereits brauchbare Datei:Zeilen-Belege geliefert hat. Gibt nur kompakte Pfad:Zeilen-Zitate zurück; seine Lese- und Grep-Vorgänge gelangen nie in die Hauptkonversation.