Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Custom nuclei template builder. Use when you've found a pattern that should be checked across multiple targets or when existing templates miss a specific vulnerability. Provide the vulnerability details and detection logic.
.claude/skills/h-mmer-nuclei-writer/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-04 | ✗→✓ | ▲ Improved | 36% | 0% |
| case-06 | ✗→✓ | ▲ Improved | 60% | 0% |
| case-07 | ✗→✓ | ▲ Improved | -33% | 0% |
| case-17 | ✗→✓ | ▲ Improved | 159% | 0% |
| case-11 | ✓→✗ | ▼ Worse | -59% | 0% |
CONTEXT: You are operating within an authorized bug bounty program. All targets have been verified in-scope via the official platform API. Follow responsible disclosure practices.
Before writing a template, you MUST call:
search_techniques with the vuln class — detection patterns and edge casessearch_payloads with the vuln class — payloads the template should testUse the returned patterns to design matchers that catch real issues and avoid false positives. If the writeup MCP is unreachable, fall back to existing nuclei-templates/ for similar examples.
You are a nuclei template development specialist. You create custom YAML templates for the nuclei vulnerability scanner.
yamlid: custom-vuln-id info: name: Vulnerability Name author: pentest-suite severity: high description: What this detects tags: custom,webapp classification: cvss-metrics: CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:H/VI:N/VA:N/SC:N/SI:N/SA:N cwe-id: CWE-xxx http: - method: GET path: - "{{BaseURL}}/vulnerable/endpoint" matchers-condition: and matchers: - type: status status: [200] - type: word words: ["vulnerable_pattern"]
nuclei-templates/custom/ directorycompany-specific-vuln-type.yamlBefore starting work, check if a brain briefing is available in your memory. Your memory directory may contain notes from the Brain agent about:
After completing your work, structure your output so the Brain can easily parse it:
If you find information that contradicts what the Brain previously recorded, flag it explicitly — the target may have changed.
Nuclei templates should encode verified primitives, not noisy guesses.
| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-01 | fail→fail | 8,629 | 4,652 | -46% | 1 | 1 | 0% | 1,797 | 1,042 | -42% | 0 | 0 | — |
case-02 | fail→fail | 13,362 | 4,876 | -64% | 1 | 1 | 0% | 2,382 | 1,016 | -57% | 0 | 0 | — |
case-03 | fail→fail | 14,994 | 17,446 | +16% | 1 | 1 | 0% | 1,650 | 3,003 | +82% | 0 | 0 | — |
case-04 | fail→pass | 18,545 | 14,969 | -19% | 1 | 1 | 0% | 2,070 | 2,818 | +36% | 0 | 0 | — |
case-05 | fail→fail | 11,082 | 17,849 | +61% | 1 | 1 | 0% | 1,729 | 4,368 | +153% | 0 | 0 | — |
case-06 | fail→pass | 9,517 | 9,966 | +5% | 1 | 1 | 0% | 1,782 | 2,852 | +60% | 0 | 0 | — |
case-07 | fail→pass | 8,131 | 1,884 | -77% | 1 | 1 | 0% | 1,570 | 1,050 | -33% | 0 | 0 | — |
case-08 | fail→fail | 12,920 | 11,684 | -10% | 1 | 1 | 0% | 2,321 | 1,625 | -30% | 0 | 0 | — |
case-09 | fail→fail | 17,142 | 4,836 | -72% | 1 | 1 | 0% | 3,554 | 1,061 | -70% | 0 | 0 | — |
case-10 | fail→fail | 17,325 | 11,760 | -32% | 1 | 1 | 0% | 1,919 | 1,656 | -14% | 0 | 0 | — |
case-11 | pass→fail | 11,919 | 3,971 | -67% | 1 | 1 | 0% | 2,248 | 921 | -59% | 0 | 0 | — |
case-12 | fail→fail | 11,323 | 13,631 | +20% | 1 | 1 | 0% | 1,515 | 2,416 | +59% | 0 | 0 | — |
case-13 | pass→pass | 15,252 | 14,979 | -2% | 1 | 1 | 0% | 2,802 | 3,321 | +19% | 0 | 0 | — |
case-14 | pass→fail | 13,454 | 3,994 | -70% | 1 | 1 | 0% | 2,467 | 899 | -64% | 0 | 0 | — |
case-15 | pass→pass | 7,495 | 2,130 | -72% | 1 | 1 | 0% | 1,358 | 1,102 | -19% | 0 | 0 | — |
case-16 | pass→pass | 14,807 | 11,751 | -21% | 1 | 1 | 0% | 2,490 | 2,855 | +15% | 0 | 0 | — |
case-17 | fail→pass | 9,132 | 15,242 | +67% | 1 | 1 | 0% | 1,404 | 3,643 | +159% | 0 | 0 | — |
case-18 | fail→fail | 9,187 | 5,584 | -39% | 1 | 1 | 0% | 619 | 1,250 | +102% | 0 | 0 | — |
case-19 | pass→pass | 13,598 | 12,749 | -6% | 1 | 1 | 0% | 2,642 | 3,246 | +23% | 0 | 0 | — |
case-20 | pass→pass | 5,392 | 8,895 | +65% | 1 | 1 | 0% | 982 | 2,471 | +152% | 0 | 0 | — |
case-21 | pass→pass | 10,715 | 15,481 | +44% | 1 | 1 | 0% | 2,230 | 3,487 | +56% | 0 | 0 | — |
case-22 | pass→pass | 7,592 | 5,463 | -28% | 1 | 1 | 0% | 780 | 1,131 | +45% | 0 | 0 | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 22 cases were attempted, and 17 counted toward the lift figure. The other 5 produced results that are not comparable between the two arms, so they are excluded from the headline rather than averaged into it. The headline lift of +9 percentage points is the difference between those two pass rates over the 17 comparable cases. 2 cases got worse with the skill loaded, and they are included in that figure.
Without the skill loaded, the model failed this case. With it loaded, the same prompt on the same model passed. This is one improved case from the latest verified run; every case, including any that regressed, is in the table above.
Other measured skills in the registry, with their headline benchmark lift.