mirror of
https://github.com/trailofbits/skills-curated
synced 2026-06-21 14:12:04 +00:00
Remove ask-questions-if-underspecified seed plugin
Humanizer and skill-extractor now serve as the reference examples in CLAUDE.md. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -9,17 +9,6 @@
|
|||||||
"description": "Curated, community-vetted Claude Code plugins reviewed for quality and safety"
|
"description": "Curated, community-vetted Claude Code plugins reviewed for quality and safety"
|
||||||
},
|
},
|
||||||
"plugins": [
|
"plugins": [
|
||||||
{
|
|
||||||
"name": "ask-questions-if-underspecified",
|
|
||||||
"version": "1.0.1",
|
|
||||||
"description": "Clarify requirements before implementing. When doubting, ask questions.",
|
|
||||||
"author": {
|
|
||||||
"name": "Kevin Valerio",
|
|
||||||
"email": "opensource@trailofbits.com",
|
|
||||||
"url": "https://github.com/trailofbits"
|
|
||||||
},
|
|
||||||
"source": "./plugins/ask-questions-if-underspecified"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"name": "humanizer",
|
"name": "humanizer",
|
||||||
"version": "1.0.0",
|
"version": "1.0.0",
|
||||||
|
|||||||
@@ -12,8 +12,8 @@
|
|||||||
|
|
||||||
| Complexity | Skill | What It Demonstrates |
|
| Complexity | Skill | What It Demonstrates |
|
||||||
|------------|-------|---------------------|
|
|------------|-------|---------------------|
|
||||||
| **Basic** | [ask-questions-if-underspecified](plugins/ask-questions-if-underspecified/) | Minimal frontmatter, simple guidance |
|
| **Basic** | [humanizer](plugins/humanizer/) | Frontmatter, references/, before/after examples |
|
||||||
| **Intermediate** | [constant-time-analysis](https://github.com/trailofbits/skills/tree/main/plugins/constant-time-analysis) | Python package, references/, language-specific docs |
|
| **Intermediate** | [skill-extractor](plugins/skill-extractor/) | Multiple references/, quality gates, command interface |
|
||||||
| **Advanced** | [culture-index](https://github.com/trailofbits/skills/tree/main/plugins/culture-index) | Scripts, workflows/, templates/, PDF extraction, multiple entry points |
|
| **Advanced** | [culture-index](https://github.com/trailofbits/skills/tree/main/plugins/culture-index) | Scripts, workflows/, templates/, PDF extraction, multiple entry points |
|
||||||
|
|
||||||
**When in doubt, copy one of these and adapt it.**
|
**When in doubt, copy one of these and adapt it.**
|
||||||
|
|||||||
@@ -2,6 +2,5 @@
|
|||||||
* @dguido
|
* @dguido
|
||||||
|
|
||||||
# Plugin-specific owners (alphabetical)
|
# Plugin-specific owners (alphabetical)
|
||||||
/plugins/ask-questions-if-underspecified/ @kevin-valerio @dguido
|
|
||||||
/plugins/humanizer/ @dguido
|
/plugins/humanizer/ @dguido
|
||||||
/plugins/skill-extractor/ @dguido
|
/plugins/skill-extractor/ @dguido
|
||||||
|
|||||||
@@ -43,7 +43,6 @@ cd /path/to/parent # e.g., if repo is at ~/projects/skills-curated, be in ~/pro
|
|||||||
|
|
||||||
| Plugin | Description |
|
| Plugin | Description |
|
||||||
|--------|-------------|
|
|--------|-------------|
|
||||||
| [ask-questions-if-underspecified](plugins/ask-questions-if-underspecified/) | Clarify requirements before implementing |
|
|
||||||
| [skill-extractor](plugins/skill-extractor/) | Extract reusable skills from work sessions |
|
| [skill-extractor](plugins/skill-extractor/) | Extract reusable skills from work sessions |
|
||||||
|
|
||||||
## Trophy Case
|
## Trophy Case
|
||||||
|
|||||||
@@ -1,10 +0,0 @@
|
|||||||
{
|
|
||||||
"name": "ask-questions-if-underspecified",
|
|
||||||
"version": "1.0.1",
|
|
||||||
"description": "Clarify requirements before implementing. Do not use automatically, only when invoked explicitly.",
|
|
||||||
"author": {
|
|
||||||
"name": "Kevin Valerio",
|
|
||||||
"email": "opensource@trailofbits.com",
|
|
||||||
"url": "https://github.com/trailofbits"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,24 +0,0 @@
|
|||||||
# Ask Questions If Underspecified
|
|
||||||
|
|
||||||
Ask the minimum set of clarifying questions needed to avoid wrong work.
|
|
||||||
|
|
||||||
**Author:** Kevin Valerio
|
|
||||||
|
|
||||||
## When to Use
|
|
||||||
|
|
||||||
Use this skill when:
|
|
||||||
- The request has multiple plausible interpretations
|
|
||||||
- Success criteria, scope, constraints, or environment details are unclear
|
|
||||||
- Starting implementation without clarification risks doing the wrong work
|
|
||||||
|
|
||||||
## What It Does
|
|
||||||
|
|
||||||
- Asks 1-5 must-have questions in a scannable, answerable format (multiple choice + defaults)
|
|
||||||
- Pauses before acting until required answers are provided (unless the user approves proceeding on stated assumptions)
|
|
||||||
- Restates confirmed requirements before starting work
|
|
||||||
|
|
||||||
## Installation
|
|
||||||
|
|
||||||
```
|
|
||||||
/plugin install trailofbits/skills-curated/plugins/ask-questions-if-underspecified
|
|
||||||
```
|
|
||||||
-85
@@ -1,85 +0,0 @@
|
|||||||
---
|
|
||||||
name: ask-questions-if-underspecified
|
|
||||||
description: Clarify requirements before implementing. Use when serious doubts arise.
|
|
||||||
---
|
|
||||||
|
|
||||||
# Ask Questions If Underspecified
|
|
||||||
|
|
||||||
## When to Use
|
|
||||||
|
|
||||||
Use this skill when a request has multiple plausible interpretations or key details (objective, scope, constraints, environment, or safety) are unclear.
|
|
||||||
|
|
||||||
## When NOT to Use
|
|
||||||
|
|
||||||
Do not use this skill when the request is already clear, or when a quick, low-risk discovery read can answer the missing details.
|
|
||||||
|
|
||||||
## Goal
|
|
||||||
|
|
||||||
Ask the minimum set of clarifying questions needed to avoid wrong work; do not start implementing until the must-have questions are answered (or the user explicitly approves proceeding with stated assumptions).
|
|
||||||
|
|
||||||
## Workflow
|
|
||||||
|
|
||||||
### 1) Decide whether the request is underspecified
|
|
||||||
|
|
||||||
Treat a request as underspecified if after exploring how to perform the work, some or all of the following are not clear:
|
|
||||||
- Define the objective (what should change vs stay the same)
|
|
||||||
- Define "done" (acceptance criteria, examples, edge cases)
|
|
||||||
- Define scope (which files/components/users are in/out)
|
|
||||||
- Define constraints (compatibility, performance, style, deps, time)
|
|
||||||
- Identify environment (language/runtime versions, OS, build/test runner)
|
|
||||||
- Clarify safety/reversibility (data migration, rollout/rollback, risk)
|
|
||||||
|
|
||||||
If multiple plausible interpretations exist, assume it is underspecified.
|
|
||||||
|
|
||||||
### 2) Ask must-have questions first (keep it small)
|
|
||||||
|
|
||||||
Ask 1-5 questions in the first pass. Prefer questions that eliminate whole branches of work.
|
|
||||||
|
|
||||||
Make questions easy to answer:
|
|
||||||
- Optimize for scannability (short, numbered questions; avoid paragraphs)
|
|
||||||
- Offer multiple-choice options when possible
|
|
||||||
- Suggest reasonable defaults when appropriate (mark them clearly as the default/recommended choice; bold the recommended choice in the list, or if you present options in a code block, put a bold "Recommended" line immediately above the block and also tag defaults inside the block)
|
|
||||||
- Include a fast-path response (e.g., reply `defaults` to accept all recommended/default choices)
|
|
||||||
- Include a low-friction "not sure" option when helpful (e.g., "Not sure - use default")
|
|
||||||
- Separate "Need to know" from "Nice to know" if that reduces friction
|
|
||||||
- Structure options so the user can respond with compact decisions (e.g., `1b 2a 3c`); restate the chosen options in plain language to confirm
|
|
||||||
|
|
||||||
### 3) Pause before acting
|
|
||||||
|
|
||||||
Until must-have answers arrive:
|
|
||||||
- Do not run commands, edit files, or produce a detailed plan that depends on unknowns
|
|
||||||
- Do perform a clearly labeled, low-risk discovery step only if it does not commit you to a direction (e.g., inspect repo structure, read relevant config files)
|
|
||||||
|
|
||||||
If the user explicitly asks you to proceed without answers:
|
|
||||||
- State your assumptions as a short numbered list
|
|
||||||
- Ask for confirmation; proceed only after they confirm or correct them
|
|
||||||
|
|
||||||
### 4) Confirm interpretation, then proceed
|
|
||||||
|
|
||||||
Once you have answers, restate the requirements in 1-3 sentences (including key constraints and what success looks like), then start work.
|
|
||||||
|
|
||||||
## Question templates
|
|
||||||
|
|
||||||
- "Before I start, I need: (1) ..., (2) ..., (3) .... If you don't care about (2), I will assume ...."
|
|
||||||
- "Which of these should it be? A) ... B) ... C) ... (pick one)"
|
|
||||||
- "What would you consider 'done'? For example: ..."
|
|
||||||
- "Any constraints I must follow (versions, performance, style, deps)? If none, I will target the existing project defaults."
|
|
||||||
- Use numbered questions with lettered options and a clear reply format
|
|
||||||
|
|
||||||
```text
|
|
||||||
1) Scope?
|
|
||||||
a) Minimal change (default)
|
|
||||||
b) Refactor while touching the area
|
|
||||||
c) Not sure - use default
|
|
||||||
2) Compatibility target?
|
|
||||||
a) Current project defaults (default)
|
|
||||||
b) Also support older versions: <specify>
|
|
||||||
c) Not sure - use default
|
|
||||||
|
|
||||||
Reply with: defaults (or 1a 2a)
|
|
||||||
```
|
|
||||||
|
|
||||||
## Anti-patterns
|
|
||||||
|
|
||||||
- Don't ask questions you can answer with a quick, low-risk discovery read (e.g., configs, existing patterns, docs).
|
|
||||||
- Don't ask open-ended questions if a tight multiple-choice or yes/no would eliminate ambiguity faster.
|
|
||||||
Reference in New Issue
Block a user