Token-saving Java file reader for Claude Code. Summarizes Java files compactly using tree-sitter, saving 70-80% of input tokens.
Project description
jskim
Token-saving Java file reader for Claude Code, optimized for Spring Boot. Summarizes Java files compactly using tree-sitter, saving 70-80% of input tokens compared to reading files directly.
A human counted the tokens. An AI counted the getters. Both decided life's too short.
Installation
pip install jskim
Requires Python 3.10+.
Usage
jskim auto-detects the mode based on whether you pass a file or directory.
Summarize a Java file
jskim <file.java>
jskim <file.java> --grep <pattern> # filter methods by name/signature
jskim <file.java> --annotation <@Ann> # filter methods by annotation
jskim A.java B.java C.java # multiple files
Project map
Generates a compact map of all Java files in a directory: packages, classes, annotations, field/method counts, Lombok usage, enum constants.
jskim <src_dir>
jskim <src_dir> --deps # import-based dependencies
jskim <src_dir> --endpoints # REST endpoint map
jskim <src_dir> --beans # Spring bean DI graph + @Bean producers + config properties
jskim <src_dir> --package <prefix> # filter by package
jskim <src_dir> --annotation <@Ann> # filter by class annotation
jskim <src_dir> --extends <ClassName> # filter by superclass
jskim <src_dir> --implements <Name> # filter by implemented interface
Spring Boot flags:
--endpoints— lists all REST endpoints: HTTP method, full path (base + method), handler, line number--beans— shows bean DI wiring (via@Autowiredand@RequiredArgsConstructor+ final fields),@Beanfactory method producers, and@ConfigurationPropertieswith prefix + field details--implements— filter classes by implemented interface name
Extract methods
jskim <file.java> --list # list all methods
jskim <file.java> <method_name> # extract one method
jskim <file.java> <method1> <method2> <method3> # extract multiple
Usage as a Claude Code Skill
This project is designed to be used as a Claude Code skill. The SKILL.md file configures the skill behavior, auto-triggering when working with Java files.
Install by adding the skill directory to your Claude Code configuration. Once installed, invoke with /jskim:
/jskim <file.java> # summarize a file
/jskim <src_dir> # project map
/jskim <file.java> <method> # extract a method
Workflow
- Explore —
jskim src/to understand project structure - Narrow —
jskim src/ --package com.example.billingto focus on a package - Spring context —
jskim src/ --endpoints --beansto see REST API + DI wiring - Understand —
jskim File.javato see class structure - Filter —
jskim File.java --grep billingfor large classes - Focus —
jskim File.java methodA methodBto read specific methods - Edit — Use
Readwithoffset/limiton only the lines that matter
Dependencies
- tree-sitter — Incremental parsing library
- tree-sitter-java — Java grammar for tree-sitter
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file jskim-0.1.1.tar.gz.
File metadata
- Download URL: jskim-0.1.1.tar.gz
- Upload date:
- Size: 25.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c8d3798c6e03b2550482da6f5ff0f9323d841cd50f081930f62ad3ef97cbe649
|
|
| MD5 |
8f53023426aa6ece6b69b943a2a0f675
|
|
| BLAKE2b-256 |
cd335e85484d352ba8599e2cd23ee26d3e142558a77d84a2edee7470e3ed88c1
|
Provenance
The following attestation bundles were made for jskim-0.1.1.tar.gz:
Publisher:
publish.yml on garvit-joshi/jskim
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
jskim-0.1.1.tar.gz -
Subject digest:
c8d3798c6e03b2550482da6f5ff0f9323d841cd50f081930f62ad3ef97cbe649 - Sigstore transparency entry: 1089197112
- Sigstore integration time:
-
Permalink:
garvit-joshi/jskim@07d41c4f523eccabf2903d0abdc3b269f464d584 -
Branch / Tag:
refs/tags/v0.1.1 - Owner: https://github.com/garvit-joshi
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@07d41c4f523eccabf2903d0abdc3b269f464d584 -
Trigger Event:
release
-
Statement type:
File details
Details for the file jskim-0.1.1-py3-none-any.whl.
File metadata
- Download URL: jskim-0.1.1-py3-none-any.whl
- Upload date:
- Size: 23.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e20f6d793c3e924197cf5dc692629b6107e42e66df8b2fce2db50080d52d3841
|
|
| MD5 |
b50c65d3914ebb8b0699b3f36d05d64f
|
|
| BLAKE2b-256 |
c3166c6f1ecc47fcb0528998e471ce64de05637365c60ec5ae791beb53096b49
|
Provenance
The following attestation bundles were made for jskim-0.1.1-py3-none-any.whl:
Publisher:
publish.yml on garvit-joshi/jskim
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
jskim-0.1.1-py3-none-any.whl -
Subject digest:
e20f6d793c3e924197cf5dc692629b6107e42e66df8b2fce2db50080d52d3841 - Sigstore transparency entry: 1089197121
- Sigstore integration time:
-
Permalink:
garvit-joshi/jskim@07d41c4f523eccabf2903d0abdc3b269f464d584 -
Branch / Tag:
refs/tags/v0.1.1 - Owner: https://github.com/garvit-joshi
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@07d41c4f523eccabf2903d0abdc3b269f464d584 -
Trigger Event:
release
-
Statement type: