Use this skill when asked to perform any of the following actions in a Java project: - To add jspecify support - To prevent NullPointerExceptions - To better handle Nullability This skill will add jspecify dependency, configure Maven or Gradle build to automatically use jspecify for checking Nullability issues.
85
77%
Does it follow best practices?
Impact
100%
3.03xAverage score across 3 eval scenarios
Passed
No known issues
Optimize this skill with Tessl
npx tessl skill review --optimize ./skills/jspecify/SKILL.mdQuality
Discovery
89%Based on the skill's description, can an agent find and select it at the right time? Clear, specific descriptions lead to better discovery.
This is a solid skill description with clear trigger guidance and a well-defined niche. It explicitly states when to use the skill and what it does, with good natural trigger terms. The main weakness is that it uses second-person voice ('Use this skill when asked to') rather than third-person, and the specific capabilities could be slightly more detailed (e.g., what kind of configuration changes are made).
| Dimension | Reasoning | Score |
|---|---|---|
Specificity | The description names the domain (Java project, jspecify) and some actions (add dependency, configure Maven/Gradle build), but doesn't list comprehensive concrete actions beyond adding a dependency and configuring a build tool. | 2 / 3 |
Completeness | Clearly answers both 'what' (add jspecify dependency, configure Maven/Gradle for nullability checking) and 'when' (explicit 'Use this skill when asked to...' clause with specific trigger scenarios). | 3 / 3 |
Trigger Term Quality | Includes strong natural trigger terms users would say: 'jspecify', 'NullPointerExceptions', 'Nullability', 'Java project', 'Maven', 'Gradle'. These cover the key terms a user would naturally use when needing this skill. | 3 / 3 |
Distinctiveness Conflict Risk | Very specific niche: jspecify nullability support in Java projects. The combination of 'jspecify', 'NullPointerExceptions', and 'Nullability' in a Java/Maven/Gradle context is highly distinctive and unlikely to conflict with other skills. | 3 / 3 |
Total | 11 / 12 Passed |
Implementation
64%Reviews the quality of instructions and guidance provided to agents. Good implementation is clear, handles edge cases, and produces reliable results.
The skill provides highly actionable, copy-paste ready build configurations for both Maven and Gradle, which is its primary strength. However, it could be more concise by removing explanatory filler, and the workflow would benefit from explicit validation checkpoints and a feedback loop after the verification step. The reference to `scripts/verify_nullmarked.py` without it being present in the bundle is a gap.
Suggestions
Remove the opening explanatory sentence and transitional phrases like 'If you are using Maven, then add the jspecify dependency in pom.xml' — Claude already understands these concepts from context.
Add explicit validation checkpoints: after modifying pom.xml/build.gradle, instruct to run a build to verify configuration is correct before proceeding to add @NullMarked annotations.
Include the `scripts/verify_nullmarked.py` script in the bundle or provide inline verification logic, and add a feedback loop (e.g., 'If verification fails, check that all non-empty packages have package-info.java and re-run').
Consider noting what to do if the project uses a Java version other than 25, since `release=25` is hardcoded in both configurations.
| Dimension | Reasoning | Score |
|---|---|---|
Conciseness | The opening sentence explaining what jSpecify is is unnecessary for Claude. The XML block is very long due to the many --add-exports args, but those are genuinely needed configuration. Some minor verbosity in transitional sentences like 'If you are using Maven, then add the jspecify dependency in pom.xml' could be tightened. | 2 / 3 |
Actionability | Provides fully copy-paste ready XML and Gradle configurations with specific version numbers, exact plugin configurations, and concrete package-info.java examples. The instructions are directly executable. | 3 / 3 |
Workflow Clarity | The steps are presented in a logical sequence (add dependency → configure build → add @NullMarked → verify), but there are no explicit validation checkpoints between steps. The verification step at the end references a script `scripts/verify_nullmarked.py` conditionally ('if python is installed') without a fallback, and there's no feedback loop for fixing issues found during verification. | 2 / 3 |
Progressive Disclosure | The content is reasonably structured with clear section headers for Maven vs Gradle vs package-info. However, the large XML configuration block makes the document quite long, and the referenced verification script `scripts/verify_nullmarked.py` is not provided in the bundle, making it unclear if it exists. No bundle files are provided to support the reference. | 2 / 3 |
Total | 9 / 12 Passed |
Validation
100%Checks the skill against the spec for correct structure and formatting. All validation checks must pass before discovery and implementation can be scored.
Validation — 11 / 11 Passed
Validation for skill structure
No warnings or errors.
383e41d
Table of Contents
If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.