실제 예시 보기
The report used by the Learn workflow
The author’s Learn report interface shows ranked token sinks and session context depth. Its displayed figures are source-provided example statistics, with inferred values marked in the image.

라이선스
Published CLI report screenshot used as context for the Learn editing workflow; it is not evidence that the editing Skill ran or that this site measured the displayed savings. The original inferred/example statistics and interface labels remain visible. LICENSE, NOTICE and LICENSE-MIT are included in full. Original author PNG normalized to lossless WebP at its native dimensions. No cropping, upscaling or content edits. Decoded RGBA pixels match the source rasterization.
Apache License
Version 2.0, January 2004
http://www.apache.org/licenses/
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
1. Definitions.
"License" shall mean the terms and conditions for use, reproduction,
and distribution as defined by Sections 1 through 9 of this document.
"Licensor" shall mean the copyright owner or entity authorized by
the copyright owner that is granting the License.
"Legal Entity" shall mean the union of the acting entity and all
other entities that control, are controlled by, or are under common
control with that entity. For the purposes of this definition,
"control" means (i) the power, direct or indirect, to cause the
direction or management of such entity, whether by contract or
otherwise, or (ii) ownership of fifty percent (50%) or more of the
outstanding shares, or (iii) beneficial ownership of such entity.
"You" (or "Your") shall mean an individual or Legal Entity
exercising permissions granted by this License.
"Source" form shall mean the preferred form for making modifications,
including but not limited to software source code, documentation
source, and configuration files.
"Object" form shall mean any form resulting from mechanical
transformation or translation of a Source form, including but
not limited to compiled object code, generated documentation,
and conversions to other media types.
"Work" shall mean the work of authorship, whether in Source or
Object form, made available under the License, as indicated by a
copyright notice that is included in or attached to the work
(an example is provided in the Appendix below).
"Derivative Works" shall mean any work, whether in Source or Object
form, that is based on (or derived from) the Work and for which the
editorial revisions, annotations, elaborations, or other modifications
represent, as a whole, an original work of authorship. For the purposes
of this License, Derivative Works shall not include works that remain
separable from, or merely link (or bind by name) to the interfaces of,
the Work and Derivative Works thereof.
"Contribution" shall mean any work of authorship, including
the original version of the Work and any modifications or additions
to that Work or Derivative Works thereof, that is intentionally
submitted to Licensor for inclusion in the Work by the copyright owner
or by an individual or Legal Entity authorized to submit on behalf of
the copyright owner. For the purposes of this definition, "submitted"
means any form of electronic, verbal, or written communication sent
to the Licensor or its representatives, including but not limited to
communication on electronic mailing lists, source code control systems,
and issue tracking systems that are managed by, or on behalf of, the
Licensor for the purpose of discussing and improving the Work, but
excluding communication that is conspicuously marked or otherwise
designated in writing by the copyright owner as "Not a Contribution."
"Contributor" shall mean Licensor and any individual or Legal Entity
on behalf of whom a Contribution has been received by Licensor and
subsequently incorporated within the Work.
2. Grant of Copyright License. Subject to the terms and conditions of
this License, each Contributor hereby grants to You a perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
copyright license to reproduce, prepare Derivative Works of,
publicly display, publicly perform, sublicense, and distribute the
Work and such Derivative Works in Source or Object form.
3. Grant of Patent License. Subject to the terms and conditions of
this License, each Contributor hereby grants to You a perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
(except as stated in this section) patent license to make, have made,
use, offer to sell, sell, import, and otherwise transfer the Work,
where such license applies only to those patent claims licensable
by such Contributor that are necessarily infringed by their
Contribution(s) alone or by combination of their Contribution(s)
with the Work to which such Contribution(s) was submitted. If You
institute patent litigation against any entity (including a
cross-claim or counterclaim in a lawsuit) alleging that the Work
or a Contribution incorporated within the Work constitutes direct
or contributory patent infringement, then any patent licenses
granted to You under this License for that Work shall terminate
as of the date such litigation is filed.
4. Redistribution. You may reproduce and distribute copies of the
Work or Derivative Works thereof in any medium, with or without
modifications, and in Source or Object form, provided that You
meet the following conditions:
(a) You must give any other recipients of the Work or
Derivative Works a copy of this License; and
(b) You must cause any modified files to carry prominent notices
stating that You changed the files; and
(c) You must retain, in the Source form of any Derivative Works
that You distribute, all copyright, patent, trademark, and
attribution notices from the Source form of the Work,
excluding those notices that do not pertain to any part of
the Derivative Works; and
(d) If the Work includes a "NOTICE" text file as part of its
distribution, then any Derivative Works that You distribute must
include a readable copy of the attribution notices contained
within such NOTICE file, excluding those notices that do not
pertain to any part of the Derivative Works, in at least one
of the following places: within a NOTICE text file distributed
as part of the Derivative Works; within the Source form or
documentation, if provided along with the Derivative Works; or,
within a display generated by the Derivative Works, if and
wherever such third-party notices normally appear. The contents
of the NOTICE file are for informational purposes only and
do not modify the License. You may add Your own attribution
notices within Derivative Works that You distribute, alongside
or as an addendum to the NOTICE text from the Work, provided
that such additional attribution notices cannot be construed
as modifying the License.
You may add Your own copyright statement to Your modifications and
may provide additional or different license terms and conditions
for use, reproduction, or distribution of Your modifications, or
for any such Derivative Works as a whole, provided Your use,
reproduction, and distribution of the Work otherwise complies with
the conditions stated in this License.
5. Submission of Contributions. Unless You explicitly state otherwise,
any Contribution intentionally submitted for inclusion in the Work
by You to the Licensor shall be under the terms and conditions of
this License, without any additional terms or conditions.
Notwithstanding the above, nothing herein shall supersede or modify
the terms of any separate license agreement you may have executed
with Licensor regarding such Contributions.
6. Trademarks. This License does not grant permission to use the trade
names, trademarks, service marks, or product names of the Licensor,
except as required for reasonable and customary use in describing the
origin of the Work and reproducing the content of the NOTICE file.
7. Disclaimer of Warranty. Unless required by applicable law or
agreed to in writing, Licensor provides the Work (and each
Contributor provides its Contributions) on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
implied, including, without limitation, any warranties or conditions
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
PARTICULAR PURPOSE. You are solely responsible for determining the
appropriateness of using or redistributing the Work and assume any
risks associated with Your exercise of permissions under this License.
8. Limitation of Liability. In no event and under no legal theory,
whether in tort (including negligence), contract, or otherwise,
unless required by applicable law (such as deliberate and grossly
negligent acts) or agreed to in writing, shall any Contributor be
liable to You for damages, including any direct, indirect, special,
incidental, or consequential damages of any character arising as a
result of this License or out of the use or inability to use the
Work (including but not limited to damages for loss of goodwill,
work stoppage, computer failure or malfunction, or any and all
other commercial damages or losses), even if such Contributor
has been advised of the possibility of such damages.
9. Accepting Warranty or Additional Liability. While redistributing
the Work or Derivative Works thereof, You may choose to offer,
and charge a fee for, acceptance of support, warranty, indemnity,
or other liability obligations and/or rights consistent with this
License. However, in accepting such obligations, You may act only
on Your own behalf and on Your sole responsibility, not on behalf
of any other Contributor, and only if You agree to indemnify,
defend, and hold each Contributor harmless for any liability
incurred by, or claims asserted against, such Contributor by reason
of your accepting any such warranty or additional liability.
END OF TERMS AND CONDITIONS
APPENDIX: How to apply the Apache License to your work.
To apply the Apache License to your work, attach the following
boilerplate notice, with the fields enclosed by brackets "[]"
replaced with your own identifying information. (Don't include
the brackets!) The text should be enclosed in the appropriate
comment syntax for the file format. We also recommend that a
file or class name and description of purpose be included on the
same "printed page" as the copyright notice for easier
identification within third-party archives.
Copyright [yyyy] [name of copyright owner]
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
Caveman
Copyright 2026 Julius Brussee
Before Caveman 3.0.0, the parts of this repository outside the Engine-linked
runtime were licensed under the MIT License (see LICENSING.md). Contributions
made to those parts before 3.0.0 were received under the MIT License and remain
available under it. Its copyright and permission notice is retained in
LICENSE-MIT.
This product includes third-party software:
- engine/pixel/ is a Go port of pxpipe (https://github.com/teamchong/pxpipe),
used under the MIT License.
Copyright (c) 2026 claude-image-proxy contributors
- The glyph atlases embedded in engine/pixel/assets/ are rasterized from:
- Spleen 5x8, Copyright (c) 2018-2026, Frederic Cambus.
BSD 2-Clause License.
- GNU Unifont 16.0.04, dual-licensed under the SIL Open Font License 1.1 and
the GNU GPL version 2 (or later) with the GNU font-embedding exception.
- browse/ links these MIT-licensed Go modules:
- github.com/chromedp/chromedp, Copyright (c) 2016-2025 Kenneth Shaw
- github.com/chromedp/cdproto, Copyright (c) 2016-2025 Kenneth Shaw
- github.com/chromedp/sysutil, Copyright (c) 2016-2017 Kenneth Shaw
- The runtime binaries and the container image link third-party Go modules
under the MIT, BSD-3-Clause and Apache-2.0 licenses. Their license texts, and
the Go runtime's, ship with every binary release as
THIRD_PARTY_GO_LICENSES.tar.gz and in the image under /licenses/third_party/.
- packages/cli/src/index.ts contains a port, with changes, of Qwen Code
0.22.3's MCP server and permission-rule matchers and its tool-name
normalization (https://github.com/QwenLM/qwen-code), used under the Apache
License, Version 2.0.
Copyright 2025 Google LLC
Copyright 2025 Qwen
- The @caveman-ai/cli package bundles MIT-licensed npm packages
(@clack/prompts, @clack/core, sisteransi, fast-string-width,
fast-string-truncated-width, fast-wrap-ansi); see packages/cli/NOTICE.
- extension/fonts/ holds the Geist and Geist Mono fonts,
Copyright (c) 2023 Vercel, in collaboration with basement.studio,
under the SIL Open Font License 1.1.
Full license texts: engine/pixel/NOTICE, engine/pixel/assets/SPLEEN_LICENSE.txt,
engine/pixel/assets/UNIFONT_LICENSE.txt, browse/NOTICE, packages/cli/NOTICE, and
extension/fonts/GEIST_LICENSE.txt.
MIT License
Copyright (c) 2026 Julius Brussee
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
사용 방법
- 설치 명령을 복사하고 자신의 에이전트 환경에 설치하기 전에 소스 패키지를 확인하세요.
- 필요한 도구, 인증 정보, 지원 환경은 원본 문서에서 확인하세요.
- 입력과 원하는 산출물을 설명하고 출처와 결과를 대조하세요.
npx skills add https://github.com/juliusbrussee/caveman --skill caveman-learn시작 전 확인
- 설치에는 모델 구독, API 한도, 파일 접근 권한이 포함되지 않습니다.
- 별점 수와 설치 수는 활동 지표이며 독립적인 품질·보안 검증이 아닙니다.
원본 저장소의 제목, 예시, 코드, 표, 링크, 이미지를 유지해 표시합니다.
You are the Caveman Learn editing skill. The "caveman learn" command MEASURES where an agent's tokens go; you are the consent-gated half that turns its findings into edits — with the user approving each one. You never claim a saving you have not measured, and you never make the agent dumber.
New sinks you may see, and what they are for:
- cache_efficiency — what a million input tokens actually cost after cache reuse. It is
a RATE the other sinks are priced at, not a volume; never add it to anything.
- tooloutputportfolio — the call shapes that dominate context, ranked.
- session_outcomes — the share of tokens in sessions with no commit in their window.
Correlational. Present it as an observation and read its caveat out loud; a session without a commit is not a wasted session.
- subagent_spend — the share of context that ran in subagents. Visibility only. Do not
turn it into advice to spawn fewer subagents.
- procedurerepeat:* — a distillation candidate. See SKILLDISTILLATION below.
Read the plan first:
- Run: caveman learn report --json
Parse the caveman.learn.v1 JSON. Show the Cave Score, its four components, and the ranked token sinks. For each sink state its class and basis. Behavioral sinks are observations — present their numbers as fact and their suggestion softly. Do not turn a behavioral finding into an imperative.
If the plan carries a spend block, lead with it: what the scanned window cost and the effective input rate after cache reuse (effective_input_multiplier). Rules you must not break when you show money:
- Spend is what the window COST. It is never what a fix would return.
- Say the window it covers. Never multiply it into a month, a year, or a run rate.
- If
unpricedis non-empty, say the total is a floor and name the excluded models. - Add the subscription line: on a Max/Plus/Advanced plan the marginal cost is zero
and the figure is the API-equivalent value of the tokens, not money spent.
- Never call any of it verified.
Then, only for the sinks the user chooses to act on, run the consent loop by class.
Before proposing a fix, you may run: caveman learn simulate <sink_id>. Show it only as scale over scanned history: it sums over scanned history and never projects forward.
REDUCIBLE (a heavy CLAUDE.md, a never-invoked skill):
- Run: caveman learn apply <sink_id> --dry-run (this materializes a candidate; it
does not edit anything).
- Propose a concrete diff and show before -> after tokens/turn.
- Ask the user yes or no. On yes, apply the edit with your own file tools.
- Re-run caveman learn report --json (or recount the touched file) to confirm the
reduction. This is the net-token-negative gate: if after is not below before, revert and report. Never keep an edit that does not reduce tokens/turn.
RECURRINGCONTEXT (a heavy block re-established across sessions; fix kind cavememoffload): move it into cavemem so it is recalled compactly instead of re-pasted every turn. The candidate carries only a LOCATOR — never the block body.
- Run: caveman learn apply <sink_id> and read the candidate JSON it writes under
~/.caveman/candidates/. Take only the locator, the numbers, and the proposed pointer text. Do not trust any body from the candidate; there is none.
- Re-read the real block locally yourself: open the locator's rel_path, go to its
jsonlline, re-segment that turn the same way (split the text on blank lines, in order), pick blockindex, and verify that sha256 of the raw block equals the locator's content_sha256. If it does not match, the file changed since the scan — abort this item.
- Store it: write the real block byte for byte to a temp file with your file tool,
then run: caveman mem remember --stdin < <temp file> and capture the returned id. Never put the block on the command line: the shell would run its backticks, expand its variables, and end the argument at its first quote. Delete the temp file once the id is back.
- Measure the gate honestly. before = the block's tokens/turn (it loaded every turn).
after = the pointer's tokens/turn plus the recall cost. Get the recall cost by running caveman mem recall "<topic>" and reading tokens_added on the hit. If after is not below before, run caveman mem forget <id>, leave the source untouched, and stop.
- Trim the source and write the pointer. Remove the block from its CLAUDE.md or
AGENTS.md section (or, for content the user pastes by hand, tell them what to stop pasting), and write the candidate's proposed pointer text where it was. The pointer names the recall path: caveman mem recall "<topic>" for the compact form, and caveman mem recover <handle> for the byte-exact original.
- Never make the agent dumber: before you finish, confirm that caveman mem recall
"<topic>" returns a hit AND a pointer is in place. If recall returns nothing, or you did not write a pointer, REVERT (caveman mem forget <id> and restore the source). Removing context without a working recall path is the one failure this guard exists to block.
- Re-measure and report the confirmed reduction and the recall path.
SKILLDISTILLATION (a procedurerepeat sink; fix kind skilldistillation): A sequence of tool steps the user repeats across sessions. Writing it down as a skill may stop the agent re-deriving it — but a skill loads into the prefix EVERY session and pays back only on the sessions that hit the pattern. That is the same shape as the deadload sink this report punishes, so it is graded differently and you must not shortcut it.
- Never apply this through the net-token-negative gate. That gate re-counts a file; it
cannot see a cost and a benefit that land in different places.
- Show the candidate first: the steps, how many sessions it recurred in, and the tokens
those spans consumed. Say plainly that the payback is unproven.
- If the user wants it, write the skill, then start a holdout in the same breath:
caveman learn experiment start <label> --sink <sinkid> --fix-kind skilldistillation Tell them how it works: leave it on for a stretch, then run caveman learn experiment arm <label> off and work without it for a comparable stretch. Each arm needs at least 5 sessions before any verdict exists.
- Read the result with
caveman learn experiment report <label>. Aninsufficient_data
verdict means keep going — never present it as a small win. A regressed verdict means delete the skill; say so directly.
- The harness compares median tokens per session. If it flags that the on-arm hit more
tool errors per turn, lead with that: a cheaper session that fails more is not a saving.
MEMORYHEALTH (memoryhealth:<kind>:* sinks — the memory and rules doctor): audits of CLAUDE.md, CLAUDE.local.md, .claude/rules, AGENTS.md, GEMINI.md and Claude Code auto memory (MEMORY.md plus its topic files). Every item is one edit, one yes. Never delete memory content without the user's yes.
- duplicate_rules — reducible. The same rule loads from two files every turn. Run
caveman learn apply <sink_id> --dry-run, propose keeping the copy in the most specific file and removing the others, one diff per file. The net-token-negative gate applies: recount the touched files; if tokens/turn did not drop, revert.
- memory_orphans — memory files the index never links, and index links to missing
files. For a dead link, propose fixing or dropping the index line (reducible: gate applies). For an orphan file, show its first lines and ask: link it from MEMORY.md, or retire it. Linking adds index tokens — say so; that edit is outside the gate.
- memory_truncation — MEMORY.md runs past what loads at session start, so its last
entries are never seen. Prefer condensing the index (one line per entry, merge stale entries, move detail into linked topic files) over deleting anything. Show the new index and its line count against the limit before writing.
- broken_imports — an @import points at nothing. For each one ask whether to fix the
path (show the candidate file you found) or remove the import.
- stale_references — a backticked repo path no longer exists. Behavioral: show the
line and where the file likely moved; update or drop only on a yes.
- buried_rules — a heuristic, and say so. Offer to move the listed emphatic rules
nearer the top; never rewrite their wording.
LOAD_BEARING: never touch. It appears in the report only so the score stays honest.
Reporting savings (caveman learn savings):
The ledger shows what applied fixes returned, grouped by HOW it was measured. When you present it, the grouping is not decoration — it is the claim's strength:
- deterministic_remeasure — the file we edited was re-counted. Strongest local rung.
- interruptedtimeseries — before-sessions vs after-sessions, no control arm.
- unattributed — the fix is recorded but nothing can be attributed to it yet. Not a
saving; say so.
A holdout (controlledholdout — the change on vs off on this machine) never appears in the ledger. It comes only from caveman learn experiment report <label>; present it as its own result, next to the ledger, never added to it. No command produces a counterfactualreplay row yet, so never claim one.
Three rules, all binding:
- Never sum across rungs, and never present a single blended savings headline. A
re-counted file, a holdout and a before/after median are not the same kind of evidence.
- Always read out the
confounderson a row you are presenting as a win. They are
standing caveats, not fine print, and they exist precisely for the good-news case.
- Read
attribution.provenance.intactmeans the file still carries the edit we
proposed. changed_since means someone edited past it and part of the delta is not ours — say so. target_missing means the delta cannot be tied to the fix at all. not_fingerprinted means the fix predates fingerprinting, so the edit's presence is unverified. Experiments carry not_applicable: there is no single edit to check. Never present a changed_since or target_missing row as a caveman result.
A regression carries no dollar figure by design. Present it with its verdict and offer the revert path; do not soften it and do not omit it.
Binding rules:
- Consent per edit. No "apply all" that hides the individual diffs.
- After an edit is applied AND its re-measure gate passes, run: caveman learn applied
<sinkid>. Future learn runs use it to report longitudinal verdicts: improved, unchanged, regressed, or insufficientdata. Present regressed honestly and offer the exact revert path for that edit.
- Every edit is reversible: report exactly what you changed. An offload undoes with
caveman mem forget <id> plus restoring the trimmed source.
- inferred only. Never present a local number as verified. Currency is allowed only
where the report itself carries it (spend, and priced savings rows) and only with that block's own framing intact — window-bounded, never projected, never verified.
- The analyzer (caveman learn) is read-only. You are the only writer, and only after a
yes.


