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 that clearly identifies its niche (jspecify nullability support in Java projects) and provides explicit trigger conditions. The description covers both what the skill does and when to use it, with good natural trigger terms. Minor weaknesses include using second-person voice ('Use this skill when asked') rather than third-person declarative style, and the actions could be slightly more specific about what configuration steps are performed.
| Dimension | Reasoning | Score |
|---|---|---|
Specificity | Names the domain (Java project, jspecify, NullPointerExceptions, Nullability) 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 like adding jspecify support, preventing NullPointerExceptions, handling Nullability). | 3 / 3 |
Trigger Term Quality | Includes strong natural trigger terms users would say: 'jspecify', 'NullPointerExceptions', 'Nullability', 'Maven', 'Gradle', 'Java project'. These cover the key terms a user would naturally use when requesting this kind of help. | 3 / 3 |
Distinctiveness Conflict Risk | Very distinct niche: jspecify nullability annotations in Java projects with Maven/Gradle. Unlikely to conflict with other skills due to the specific technology (jspecify) and narrow use case (nullability checking configuration). | 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 lacks an explicit workflow sequence with validation checkpoints (e.g., compile after configuration to verify setup works), and the opening explanation is unnecessary. The verification step is weakly integrated—it's conditional and lacks error recovery guidance.
Suggestions
Add an explicit numbered workflow (1. Add dependency, 2. Configure compiler plugin, 3. Add @NullMarked annotations, 4. Compile and verify no errors, 5. Run verification script) with validation after the compile step.
Remove the opening sentence explaining what jspecify is—Claude already knows this, and the skill description covers it.
Make the verification step unconditional and add a feedback loop: what to do if verify_nullmarked.py reports missing package-info.java files or if compilation fails with NullAway errors.
Consider splitting Maven and Gradle configurations into separate referenced files to reduce the main skill's token footprint.
| Dimension | Reasoning | Score |
|---|---|---|
Conciseness | The opening sentence explaining what jspecify is is unnecessary for Claude. The XML block is necessarily verbose due to the many compiler args, but the surrounding prose ('If you are using Maven, then add...') is slightly redundant given the section headers already indicate the build tool. | 2 / 3 |
Actionability | The skill provides fully copy-paste-ready XML and Gradle configurations with specific version numbers, exact compiler arguments, and concrete package-info.java examples. Claude can directly apply these configurations without guessing. | 3 / 3 |
Workflow Clarity | The steps are implicitly sequenced (add dependency → configure compiler → add @NullMarked → verify), but there's no explicit numbered workflow, no validation checkpoint after the build configuration step (e.g., compile and check for errors), and the verification step is conditional ('if python is installed') rather than mandatory. Missing feedback loop for fixing issues found by verify_nullmarked.py. | 2 / 3 |
Progressive Disclosure | The content is reasonably structured with clear section headers for Maven vs Gradle, but the large XML block makes it somewhat monolithic. The verification script is referenced but not linked. The Maven and Gradle sections could potentially be split into separate files with a concise overview in the main skill. | 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.
ab6386d
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.