claudient 0.1.0 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,331 @@
1
+ # Spring Boot Skill
2
+
3
+ ## When to activate
4
+ - Building a Spring Boot REST API or microservice
5
+ - Setting up Spring Data JPA with Hibernate and PostgreSQL/MySQL
6
+ - Configuring Spring Security (JWT, OAuth2, session-based auth)
7
+ - Writing Spring Boot tests (unit with Mockito, integration with TestRestTemplate or MockMvc)
8
+ - Setting up Spring Cloud (service discovery, config server, API gateway)
9
+ - Implementing async processing with `@Async` or Spring Events
10
+ - Configuring profiles, properties, and externalized configuration
11
+ - Writing custom Spring Boot starters or auto-configurations
12
+
13
+ ## When NOT to use
14
+ - Quarkus or Micronaut projects — different DI and config models
15
+ - Plain Java without Spring — overhead isn't justified for simple scripts
16
+ - Android projects — different ecosystem entirely
17
+ - Jakarta EE/WildFly — different application server model
18
+
19
+ ## Instructions
20
+
21
+ ### Project structure
22
+ ```
23
+ src/
24
+ ├── main/
25
+ │ ├── java/com/example/app/
26
+ │ │ ├── AppApplication.java # @SpringBootApplication entry point
27
+ │ │ ├── config/ # @Configuration beans
28
+ │ │ ├── controller/ # @RestController — HTTP layer only
29
+ │ │ ├── service/ # Business logic — @Service
30
+ │ │ ├── repository/ # @Repository — data access
31
+ │ │ ├── domain/ # @Entity models
32
+ │ │ ├── dto/ # Request/response shapes (records)
33
+ │ │ ├── exception/ # @ControllerAdvice error handling
34
+ │ │ └── security/ # Security config and filters
35
+ │ └── resources/
36
+ │ ├── application.yml # Base config
37
+ │ ├── application-dev.yml # Dev overrides
38
+ │ └── application-prod.yml # Prod overrides
39
+ └── test/
40
+ └── java/com/example/app/
41
+ ├── controller/ # MockMvc / @WebMvcTest
42
+ ├── service/ # Unit tests with Mockito
43
+ └── integration/ # @SpringBootTest full context
44
+ ```
45
+
46
+ ### Application entry point
47
+ ```java
48
+ @SpringBootApplication
49
+ public class AppApplication {
50
+ public static void main(String[] args) {
51
+ SpringApplication.run(AppApplication.class, args);
52
+ }
53
+ }
54
+ ```
55
+
56
+ ### application.yml structure
57
+ ```yaml
58
+ spring:
59
+ application:
60
+ name: my-service
61
+ datasource:
62
+ url: ${DATABASE_URL}
63
+ username: ${DB_USER}
64
+ password: ${DB_PASSWORD}
65
+ jpa:
66
+ hibernate:
67
+ ddl-auto: validate # Never 'create' or 'update' in production
68
+ show-sql: false
69
+ properties:
70
+ hibernate:
71
+ format_sql: true
72
+
73
+ server:
74
+ port: ${PORT:8080}
75
+
76
+ # Custom properties — always use @ConfigurationProperties, never @Value for groups
77
+ app:
78
+ jwt:
79
+ secret: ${JWT_SECRET}
80
+ expiration-ms: 86400000
81
+ ```
82
+
83
+ ### Entity and Repository
84
+ ```java
85
+ // domain/User.java
86
+ @Entity
87
+ @Table(name = "users")
88
+ public class User {
89
+ @Id
90
+ @GeneratedValue(strategy = GenerationType.IDENTITY)
91
+ private Long id;
92
+
93
+ @Column(nullable = false, unique = true, length = 320)
94
+ private String email;
95
+
96
+ @Column(nullable = false)
97
+ private String passwordHash;
98
+
99
+ @CreationTimestamp
100
+ @Column(updatable = false)
101
+ private Instant createdAt;
102
+
103
+ // No-arg constructor required by JPA
104
+ protected User() {}
105
+
106
+ public User(String email, String passwordHash) {
107
+ this.email = email;
108
+ this.passwordHash = passwordHash;
109
+ }
110
+ // getters only — no setters on entities
111
+ }
112
+
113
+ // repository/UserRepository.java
114
+ public interface UserRepository extends JpaRepository<User, Long> {
115
+ Optional<User> findByEmail(String email);
116
+ boolean existsByEmail(String email);
117
+
118
+ // JPQL for complex queries
119
+ @Query("SELECT u FROM User u WHERE u.createdAt > :since")
120
+ List<User> findRecentUsers(@Param("since") Instant since);
121
+ }
122
+ ```
123
+
124
+ ### Service layer
125
+ ```java
126
+ @Service
127
+ @Transactional(readOnly = true) // Default read-only; override for writes
128
+ public class UserService {
129
+ private final UserRepository userRepo;
130
+ private final PasswordEncoder passwordEncoder;
131
+
132
+ public UserService(UserRepository userRepo, PasswordEncoder passwordEncoder) {
133
+ this.userRepo = userRepo;
134
+ this.passwordEncoder = passwordEncoder;
135
+ }
136
+
137
+ @Transactional // Override: this method writes
138
+ public UserDto createUser(CreateUserRequest request) {
139
+ if (userRepo.existsByEmail(request.email())) {
140
+ throw new ConflictException("Email already in use");
141
+ }
142
+ User user = new User(request.email(), passwordEncoder.encode(request.password()));
143
+ return UserDto.from(userRepo.save(user));
144
+ }
145
+
146
+ public UserDto getById(Long id) {
147
+ return userRepo.findById(id)
148
+ .map(UserDto::from)
149
+ .orElseThrow(() -> new NotFoundException("User " + id + " not found"));
150
+ }
151
+ }
152
+ ```
153
+
154
+ ### Controller layer
155
+ ```java
156
+ @RestController
157
+ @RequestMapping("/api/v1/users")
158
+ @Validated
159
+ public class UserController {
160
+ private final UserService userService;
161
+
162
+ public UserController(UserService userService) {
163
+ this.userService = userService;
164
+ }
165
+
166
+ @PostMapping
167
+ @ResponseStatus(HttpStatus.CREATED)
168
+ public UserDto createUser(@RequestBody @Valid CreateUserRequest request) {
169
+ return userService.createUser(request);
170
+ }
171
+
172
+ @GetMapping("/{id}")
173
+ public UserDto getUser(@PathVariable Long id) {
174
+ return userService.getById(id);
175
+ }
176
+
177
+ @GetMapping
178
+ public Page<UserDto> listUsers(Pageable pageable) {
179
+ return userService.findAll(pageable);
180
+ }
181
+ }
182
+ ```
183
+
184
+ ### DTOs with records
185
+ ```java
186
+ // dto/CreateUserRequest.java
187
+ public record CreateUserRequest(
188
+ @NotBlank @Email String email,
189
+ @NotBlank @Size(min = 8) String password
190
+ ) {}
191
+
192
+ // dto/UserDto.java
193
+ public record UserDto(Long id, String email, Instant createdAt) {
194
+ public static UserDto from(User user) {
195
+ return new UserDto(user.getId(), user.getEmail(), user.getCreatedAt());
196
+ }
197
+ }
198
+ ```
199
+
200
+ ### Global exception handler
201
+ ```java
202
+ @RestControllerAdvice
203
+ public class GlobalExceptionHandler {
204
+
205
+ @ExceptionHandler(NotFoundException.class)
206
+ @ResponseStatus(HttpStatus.NOT_FOUND)
207
+ public ProblemDetail handleNotFound(NotFoundException ex) {
208
+ return ProblemDetail.forStatusAndDetail(HttpStatus.NOT_FOUND, ex.getMessage());
209
+ }
210
+
211
+ @ExceptionHandler(ConflictException.class)
212
+ @ResponseStatus(HttpStatus.CONFLICT)
213
+ public ProblemDetail handleConflict(ConflictException ex) {
214
+ return ProblemDetail.forStatusAndDetail(HttpStatus.CONFLICT, ex.getMessage());
215
+ }
216
+
217
+ @ExceptionHandler(MethodArgumentNotValidException.class)
218
+ @ResponseStatus(HttpStatus.BAD_REQUEST)
219
+ public ProblemDetail handleValidation(MethodArgumentNotValidException ex) {
220
+ var detail = ProblemDetail.forStatusAndDetail(HttpStatus.BAD_REQUEST, "Validation failed");
221
+ detail.setProperty("errors", ex.getBindingResult().getFieldErrors().stream()
222
+ .map(e -> e.getField() + ": " + e.getDefaultMessage())
223
+ .toList());
224
+ return detail;
225
+ }
226
+ }
227
+ ```
228
+
229
+ ### Spring Security — JWT
230
+ ```java
231
+ @Configuration
232
+ @EnableWebSecurity
233
+ public class SecurityConfig {
234
+
235
+ @Bean
236
+ public SecurityFilterChain filterChain(HttpSecurity http, JwtAuthFilter jwtFilter) throws Exception {
237
+ return http
238
+ .csrf(AbstractHttpConfigurer::disable)
239
+ .sessionManagement(s -> s.sessionCreationPolicy(SessionCreationPolicy.STATELESS))
240
+ .authorizeHttpRequests(auth -> auth
241
+ .requestMatchers("/api/v1/auth/**", "/actuator/health").permitAll()
242
+ .anyRequest().authenticated()
243
+ )
244
+ .addFilterBefore(jwtFilter, UsernamePasswordAuthenticationFilter.class)
245
+ .build();
246
+ }
247
+
248
+ @Bean
249
+ public PasswordEncoder passwordEncoder() {
250
+ return new BCryptPasswordEncoder();
251
+ }
252
+ }
253
+ ```
254
+
255
+ ### Testing
256
+ ```java
257
+ // @WebMvcTest — controller slice test (no full context)
258
+ @WebMvcTest(UserController.class)
259
+ class UserControllerTest {
260
+ @Autowired MockMvc mockMvc;
261
+ @MockitoBean UserService userService; // Spring Boot 3.4+: @MockitoBean
262
+
263
+ @Test
264
+ void createUser_returnsCreated() throws Exception {
265
+ given(userService.createUser(any())).willReturn(new UserDto(1L, "a@b.com", Instant.now()));
266
+
267
+ mockMvc.perform(post("/api/v1/users")
268
+ .contentType(MediaType.APPLICATION_JSON)
269
+ .content("""{"email":"a@b.com","password":"password123"}"""))
270
+ .andExpect(status().isCreated())
271
+ .andExpect(jsonPath("$.email").value("a@b.com"));
272
+ }
273
+ }
274
+
275
+ // @SpringBootTest — full integration test
276
+ @SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
277
+ @Transactional
278
+ class UserServiceIntegrationTest {
279
+ @Autowired UserService userService;
280
+
281
+ @Test
282
+ void createUser_persistsToDatabase() {
283
+ var user = userService.createUser(new CreateUserRequest("a@b.com", "password123"));
284
+ assertThat(user.email()).isEqualTo("a@b.com");
285
+ assertThat(user.id()).isNotNull();
286
+ }
287
+ }
288
+ ```
289
+
290
+ ### Spring Cloud patterns
291
+ ```yaml
292
+ # Service discovery with Eureka
293
+ spring:
294
+ application:
295
+ name: user-service
296
+ eureka:
297
+ client:
298
+ service-url:
299
+ defaultZone: http://eureka-server:8761/eureka/
300
+
301
+ # Config server client
302
+ spring:
303
+ config:
304
+ import: configserver:http://config-server:8888
305
+ ```
306
+
307
+ ```java
308
+ // Feign client for inter-service calls
309
+ @FeignClient(name = "order-service")
310
+ public interface OrderClient {
311
+ @GetMapping("/api/v1/orders/user/{userId}")
312
+ List<OrderDto> getOrdersByUser(@PathVariable Long userId);
313
+ }
314
+ ```
315
+
316
+ ## Example
317
+
318
+ **User:** Build a Spring Boot REST API for a product catalogue with CRUD endpoints, PostgreSQL via JPA, bean validation, global error handling, and a `@WebMvcTest` for the GET endpoint.
319
+
320
+ **Expected output:**
321
+ - `Product` entity — `id`, `name`, `price` (BigDecimal), `stock`, `createdAt`
322
+ - `ProductDto` record + `CreateProductRequest` record with `@NotBlank` / `@Positive` validation
323
+ - `ProductRepository extends JpaRepository<Product, Long>`
324
+ - `ProductService` — `@Transactional(readOnly = true)` class-level, `@Transactional` on writes
325
+ - `ProductController` — CRUD at `/api/v1/products`, `Pageable` on GET list
326
+ - `GlobalExceptionHandler` — `NotFoundException` → 404, `MethodArgumentNotValidException` → 400 with field errors
327
+ - `ProductControllerTest` using `@WebMvcTest` + `@MockitoBean ProductService`
328
+
329
+ ---
330
+
331
+ > **Work with us:** Claudient is backed by [Uitbreiden](https://uitbreiden.com/) — we build AI products and B2B solutions with developer communities. [uitbreiden.com](https://uitbreiden.com/)
@@ -0,0 +1,70 @@
1
+ # Caveman Mode Skill
2
+
3
+ ## When to activate
4
+ - You want to dramatically reduce token usage across a long session
5
+ - Context window is filling up and you need to extend the session's useful life
6
+ - You're running a cost-sensitive workload (many parallel agents, batch processing)
7
+ - Claude's responses are verbose and you want terse, fragment-style output
8
+ - You want to compress existing memory or CLAUDE.md files to reduce input tokens
9
+
10
+ ## When NOT to use
11
+ - Security warnings or irreversible action confirmations — these need full sentences
12
+ - Multi-step sequences where fragment ambiguity could cause misread actions
13
+ - Onboarding new team members to a codebase — clarity beats brevity here
14
+ - Writing documentation that external people will read
15
+
16
+ ## Instructions
17
+
18
+ Caveman mode is an established token-compression technique with a dedicated implementation at [github.com/JuliusBrussee/caveman](https://github.com/JuliusBrussee/caveman). This skill is a pointer — use the original repo, do not duplicate it.
19
+
20
+ ### What it does
21
+
22
+ Caveman mode instructs Claude to output compressed, fragment-style prose:
23
+
24
+ | Level | Rule | Example |
25
+ |-------|------|---------|
26
+ | `lite` | Drop filler and hedging, keep articles and full sentences | "The function handles edge cases." |
27
+ | `full` | Drop articles, fragments OK, short synonyms | "func handles edge cases" |
28
+ | `ultra` | Abbreviate prose words, strip conjunctions, arrows for causality | "fn→edge cases handled" |
29
+
30
+ Benchmarked results (March 2026, [arxiv.org/abs/2604.00025](https://arxiv.org/abs/2604.00025)):
31
+ - ~65% output token reduction
32
+ - 26-point accuracy improvement on benchmarks (brevity sharpens reasoning)
33
+ - 100% technical accuracy maintained
34
+
35
+ ### caveman-compress sub-skill
36
+ Rewrites `.md` memory and CLAUDE.md files to caveman prose — ~46% input token savings every session because compressed files are re-read on every context load.
37
+
38
+ ### cavecrew subagents
39
+ Haiku-based subagents running in caveman mode — ~60% fewer tokens than vanilla agents for simple classification, extraction, and routing tasks.
40
+
41
+ ### caveman-shrink MCP middleware
42
+ Compresses MCP tool descriptions before they enter Claude's context — reduces MCP overhead by ~30% without changing tool behaviour.
43
+
44
+ ## Example
45
+
46
+ **Activating caveman mode in a session:**
47
+ ```
48
+ Use caveman mode (full level) for this session. Drop articles, use fragments,
49
+ short synonyms. Auto-revert to normal prose for: security warnings,
50
+ irreversible action confirmations, multi-step sequences.
51
+ ```
52
+
53
+ **Using caveman-compress on a memory file:**
54
+ ```
55
+ /caveman-compress .claude/memory/project-context.md
56
+ ```
57
+
58
+ **Using cavecrew for a classification task:**
59
+ ```
60
+ Spawn a cavecrew subagent (Haiku, caveman full) to classify these 200 support
61
+ tickets into 5 categories. Return only: ticket_id, category.
62
+ ```
63
+
64
+ ---
65
+
66
+ **Reference:** [github.com/JuliusBrussee/caveman](https://github.com/JuliusBrussee/caveman) — the authoritative caveman implementation. Claudient references this work; it is not duplicated here.
67
+
68
+ ---
69
+
70
+ > **Work with us:** Claudient is backed by [Uitbreiden](https://uitbreiden.com/) — we build AI products and B2B solutions with developer communities. [uitbreiden.com](https://uitbreiden.com/)
@@ -0,0 +1,72 @@
1
+ > 🇩🇪 Deutsche Version. [Englische Version](../caveman.md).
2
+
3
+ # Caveman Mode Skill
4
+
5
+ ## Wann aktivieren
6
+ - Du möchtest den Token-Verbrauch in einer langen Sitzung deutlich reduzieren
7
+ - Das Kontextfenster füllt sich und du musst die nutzbare Lebensdauer der Sitzung verlängern
8
+ - Du führst eine kostensensible Aufgabe aus (viele parallele Agents, Batch-Verarbeitung)
9
+ - Die Antworten von Claude sind ausführlich und du möchtest knappe, fragmentartige Ausgaben
10
+ - Du möchtest bestehende Memory- oder CLAUDE.md-Dateien komprimieren, um Input-Tokens zu reduzieren
11
+
12
+ ## Wann NICHT verwenden
13
+ - Sicherheitswarnungen oder Bestätigungen für nicht umkehrbare Aktionen — diese benötigen vollständige Sätze
14
+ - Mehrstufige Abläufe, bei denen Fragmentmehrdeutigkeit zu Fehlinterpretationen führen kann
15
+ - Onboarding neuer Teammitglieder in eine Codebasis — hier überwiegt Klarheit gegenüber Kürze
16
+ - Schreiben von Dokumentation, die externe Personen lesen werden
17
+
18
+ ## Anweisungen
19
+
20
+ Caveman Mode ist eine etablierte Token-Kompressionstechnik mit einer dedizierten Implementierung unter [github.com/JuliusBrussee/caveman](https://github.com/JuliusBrussee/caveman). Dieser Skill ist ein Verweis — verwende das originale Repository, dupliziere es nicht.
21
+
22
+ ### Was es bewirkt
23
+
24
+ Caveman Mode weist Claude an, komprimierte, fragmentartige Prosa auszugeben:
25
+
26
+ | Stufe | Regel | Beispiel |
27
+ |-------|-------|---------|
28
+ | `lite` | Füllwörter und Abschwächungen weglassen, Artikel und vollständige Sätze beibehalten | "The function handles edge cases." |
29
+ | `full` | Artikel weglassen, Fragmente erlaubt, kurze Synonyme | "func handles edge cases" |
30
+ | `ultra` | Prosa-Wörter abkürzen, Konjunktionen entfernen, Pfeile für Kausalität | "fn→edge cases handled" |
31
+
32
+ Benchmark-Ergebnisse (März 2026, [arxiv.org/abs/2604.00025](https://arxiv.org/abs/2604.00025)):
33
+ - ~65 % Reduzierung der Output-Tokens
34
+ - 26 Punkte Verbesserung der Genauigkeit in Benchmarks (Kürze schärft das Denken)
35
+ - 100 % technische Genauigkeit beibehalten
36
+
37
+ ### caveman-compress Sub-Skill
38
+ Schreibt `.md` Memory- und CLAUDE.md-Dateien in Caveman-Prosa um — ~46 % Einsparung bei Input-Tokens in jeder Sitzung, da komprimierte Dateien bei jedem Kontextladen neu eingelesen werden.
39
+
40
+ ### cavecrew Subagents
41
+ Haiku-basierte Subagents, die im Caveman Mode laufen — ~60 % weniger Tokens als normale Agents für einfache Klassifizierungs-, Extraktions- und Routing-Aufgaben.
42
+
43
+ ### caveman-shrink MCP Middleware
44
+ Komprimiert MCP-Tool-Beschreibungen, bevor sie in Claudes Kontext gelangen — reduziert den MCP-Overhead um ~30 % ohne das Verhalten der Tools zu verändern.
45
+
46
+ ## Beispiel
47
+
48
+ **Caveman Mode in einer Sitzung aktivieren:**
49
+ ```
50
+ Use caveman mode (full level) for this session. Drop articles, use fragments,
51
+ short synonyms. Auto-revert to normal prose for: security warnings,
52
+ irreversible action confirmations, multi-step sequences.
53
+ ```
54
+
55
+ **caveman-compress auf einer Memory-Datei verwenden:**
56
+ ```
57
+ /caveman-compress .claude/memory/project-context.md
58
+ ```
59
+
60
+ **cavecrew für eine Klassifizierungsaufgabe verwenden:**
61
+ ```
62
+ Spawn a cavecrew subagent (Haiku, caveman full) to classify these 200 support
63
+ tickets into 5 categories. Return only: ticket_id, category.
64
+ ```
65
+
66
+ ---
67
+
68
+ **Referenz:** [github.com/JuliusBrussee/caveman](https://github.com/JuliusBrussee/caveman) — die maßgebliche Caveman-Implementierung. Claudient verweist auf diese Arbeit; sie wird hier nicht dupliziert.
69
+
70
+ ---
71
+
72
+ > **Arbeite mit uns:** Claudient wird von [Uitbreiden](https://uitbreiden.com/) unterstützt — wir entwickeln KI-Produkte und B2B-Lösungen mit Entwickler-Communities. [uitbreiden.com](https://uitbreiden.com/)
@@ -0,0 +1,72 @@
1
+ > 🇪🇸 Versión en español. [Versión en inglés](../caveman.md).
2
+
3
+ # Skill Modo Caveman
4
+
5
+ ## Cuándo activar
6
+ - Quieres reducir drásticamente el uso de tokens en una sesión larga
7
+ - La ventana de contexto se está llenando y necesitas extender la vida útil de la sesión
8
+ - Estás ejecutando una carga de trabajo sensible al costo (muchos agentes en paralelo, procesamiento por lotes)
9
+ - Las respuestas de Claude son verbosas y quieres una salida concisa, estilo fragmento
10
+ - Quieres comprimir archivos de memoria o CLAUDE.md existentes para reducir los tokens de entrada
11
+
12
+ ## Cuándo NO usar
13
+ - Advertencias de seguridad o confirmaciones de acciones irreversibles — estas necesitan oraciones completas
14
+ - Secuencias de varios pasos donde la ambigüedad de fragmentos podría causar lecturas erróneas
15
+ - Incorporación de nuevos miembros del equipo a una base de código — la claridad supera a la brevedad aquí
16
+ - Escritura de documentación que leerán personas externas
17
+
18
+ ## Instrucciones
19
+
20
+ El modo Caveman es una técnica de compresión de tokens consolidada con una implementación dedicada en [github.com/JuliusBrussee/caveman](https://github.com/JuliusBrussee/caveman). Este skill es un apuntador — usa el repositorio original, no lo dupliques aquí.
21
+
22
+ ### Qué hace
23
+
24
+ El modo Caveman instruye a Claude a generar prosa comprimida, estilo fragmento:
25
+
26
+ | Nivel | Regla | Ejemplo |
27
+ |-------|-------|---------|
28
+ | `lite` | Elimina relleno y matices, conserva artículos y oraciones completas | "The function handles edge cases." |
29
+ | `full` | Elimina artículos, fragmentos permitidos, sinónimos cortos | "func handles edge cases" |
30
+ | `ultra` | Abrevia palabras en prosa, elimina conjunciones, flechas para causalidad | "fn→edge cases handled" |
31
+
32
+ Resultados medidos (marzo 2026, [arxiv.org/abs/2604.00025](https://arxiv.org/abs/2604.00025)):
33
+ - ~65% de reducción en tokens de salida
34
+ - Mejora de 26 puntos en benchmarks (la brevedad agudiza el razonamiento)
35
+ - 100% de precisión técnica mantenida
36
+
37
+ ### Sub-skill caveman-compress
38
+ Reescribe archivos de memoria `.md` y CLAUDE.md a prosa caveman — ~46% de ahorro en tokens de entrada en cada sesión, ya que los archivos comprimidos se vuelven a leer en cada carga de contexto.
39
+
40
+ ### Subagentes cavecrew
41
+ Subagentes basados en Haiku ejecutándose en modo caveman — ~60% menos tokens que agentes estándar para tareas simples de clasificación, extracción y enrutamiento.
42
+
43
+ ### Middleware MCP caveman-shrink
44
+ Comprime las descripciones de herramientas MCP antes de que entren al contexto de Claude — reduce la sobrecarga de MCP en ~30% sin cambiar el comportamiento de las herramientas.
45
+
46
+ ## Ejemplo
47
+
48
+ **Activar el modo caveman en una sesión:**
49
+ ```
50
+ Use caveman mode (full level) for this session. Drop articles, use fragments,
51
+ short synonyms. Auto-revert to normal prose for: security warnings,
52
+ irreversible action confirmations, multi-step sequences.
53
+ ```
54
+
55
+ **Usar caveman-compress en un archivo de memoria:**
56
+ ```
57
+ /caveman-compress .claude/memory/project-context.md
58
+ ```
59
+
60
+ **Usar cavecrew para una tarea de clasificación:**
61
+ ```
62
+ Spawn a cavecrew subagent (Haiku, caveman full) to classify these 200 support
63
+ tickets into 5 categories. Return only: ticket_id, category.
64
+ ```
65
+
66
+ ---
67
+
68
+ **Referencia:** [github.com/JuliusBrussee/caveman](https://github.com/JuliusBrussee/caveman) — la implementación caveman de referencia. Claudient hace referencia a este trabajo; no se duplica aquí.
69
+
70
+ ---
71
+
72
+ > **Trabaja con nosotros:** Claudient está respaldado por [Uitbreiden](https://uitbreiden.com/) — construimos productos de IA y soluciones B2B con comunidades de desarrolladores. [uitbreiden.com](https://uitbreiden.com/)
@@ -0,0 +1,72 @@
1
+ > 🇫🇷 Version française. [English version](../caveman.md).
2
+
3
+ # Skill Mode Caveman
4
+
5
+ ## Quand activer
6
+ - Vous souhaitez réduire drastiquement l'utilisation des tokens sur une longue session
7
+ - La fenêtre de contexte se remplit et vous devez prolonger la durée de vie utile de la session
8
+ - Vous exécutez une charge de travail sensible au coût (nombreux agents parallèles, traitement par lots)
9
+ - Les réponses de Claude sont verbeuses et vous voulez une sortie concise en style fragmenté
10
+ - Vous souhaitez compresser des fichiers mémoire ou CLAUDE.md existants pour réduire les tokens d'entrée
11
+
12
+ ## Quand NE PAS utiliser
13
+ - Avertissements de sécurité ou confirmations d'actions irréversibles — ceux-ci nécessitent des phrases complètes
14
+ - Séquences en plusieurs étapes où l'ambiguité des fragments pourrait provoquer des actions mal interprétées
15
+ - Intégration de nouveaux membres d'équipe dans une base de code — la clarté prime sur la brièveté ici
16
+ - Rédaction de documentation destinée à des personnes externes
17
+
18
+ ## Instructions
19
+
20
+ Le mode Caveman est une technique de compression de tokens établie avec une implémentation dédiée sur [github.com/JuliusBrussee/caveman](https://github.com/JuliusBrussee/caveman). Ce skill est un pointeur — utilisez le dépôt original, ne le dupliquez pas.
21
+
22
+ ### Ce qu'il fait
23
+
24
+ Le mode Caveman demande à Claude de produire une prose compressée en style fragmenté :
25
+
26
+ | Niveau | Règle | Exemple |
27
+ |--------|-------|---------|
28
+ | `lite` | Supprimer les mots de remplissage et les formules d'atténuation, garder les articles et les phrases complètes | "The function handles edge cases." |
29
+ | `full` | Supprimer les articles, fragments acceptés, synonymes courts | "func handles edge cases" |
30
+ | `ultra` | Abréger les mots en prose, supprimer les conjonctions, flèches pour la causalité | "fn→edge cases handled" |
31
+
32
+ Résultats mesurés (mars 2026, [arxiv.org/abs/2604.00025](https://arxiv.org/abs/2604.00025)) :
33
+ - ~65 % de réduction des tokens de sortie
34
+ - Amélioration de 26 points sur les benchmarks (la brièveté affine le raisonnement)
35
+ - 100 % de précision technique maintenue
36
+
37
+ ### Sous-skill caveman-compress
38
+ Réécrit les fichiers mémoire `.md` et CLAUDE.md en prose caveman — environ 46 % d'économies de tokens d'entrée à chaque session, car les fichiers compressés sont relus à chaque chargement du contexte.
39
+
40
+ ### Sous-agents cavecrew
41
+ Sous-agents basés sur Haiku fonctionnant en mode Caveman — environ 60 % de tokens en moins que des agents classiques pour les tâches simples de classification, d'extraction et de routage.
42
+
43
+ ### Middleware MCP caveman-shrink
44
+ Compresse les descriptions d'outils MCP avant qu'elles n'entrent dans le contexte de Claude — réduit la surcharge MCP d'environ 30 % sans modifier le comportement des outils.
45
+
46
+ ## Exemple
47
+
48
+ **Activation du mode Caveman dans une session :**
49
+ ```
50
+ Use caveman mode (full level) for this session. Drop articles, use fragments,
51
+ short synonyms. Auto-revert to normal prose for: security warnings,
52
+ irreversible action confirmations, multi-step sequences.
53
+ ```
54
+
55
+ **Utilisation de caveman-compress sur un fichier mémoire :**
56
+ ```
57
+ /caveman-compress .claude/memory/project-context.md
58
+ ```
59
+
60
+ **Utilisation de cavecrew pour une tâche de classification :**
61
+ ```
62
+ Spawn a cavecrew subagent (Haiku, caveman full) to classify these 200 support
63
+ tickets into 5 categories. Return only: ticket_id, category.
64
+ ```
65
+
66
+ ---
67
+
68
+ **Référence :** [github.com/JuliusBrussee/caveman](https://github.com/JuliusBrussee/caveman) — l'implémentation Caveman de référence. Claudient fait référence à ce travail ; il n'est pas dupliqué ici.
69
+
70
+ ---
71
+
72
+ > **Travaillez avec nous :** Claudient est soutenu par [Uitbreiden](https://uitbreiden.com/) — nous construisons des produits IA et des solutions B2B avec des communautés de développeurs. [uitbreiden.com](https://uitbreiden.com/)