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.
- package/.claude-plugin/plugin.json +4 -2
- package/README.md +150 -103
- package/guides/agent-orchestration.md +1 -0
- package/guides/token-optimization.md +37 -0
- package/index.json +1745 -0
- package/package.json +5 -3
- package/scripts/build-index.js +139 -0
- package/scripts/cli.js +378 -66
- package/skills/backend/java/de/spring-boot.md +333 -0
- package/skills/backend/java/es/spring-boot.md +333 -0
- package/skills/backend/java/fr/spring-boot.md +333 -0
- package/skills/backend/java/nl/spring-boot.md +333 -0
- package/skills/backend/java/spring-boot.md +331 -0
- package/skills/productivity/caveman.md +70 -0
- package/skills/productivity/de/caveman.md +72 -0
- package/skills/productivity/es/caveman.md +72 -0
- package/skills/productivity/fr/caveman.md +72 -0
- package/skills/productivity/nl/caveman.md +72 -0
|
@@ -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/)
|