Issue Reporting and Templates
Issue Reporting and Templates
Relevant source files
Purpose and Scope
This document explains how to report bugs, request features, and ask questions in the WSHawk project using GitHub's structured issue templates. It covers the three issue templates available in the repository, their required fields, and the appropriate scenarios for each template type.
For reporting security vulnerabilities, see Security Policy and Vulnerability Disclosure, which describes the private disclosure process via email rather than public GitHub issues.
For broader contribution guidelines including code contributions and pull requests, see the CONTRIBUTING.md documentation referenced throughout this page.
GitHub Issue Template System
WSHawk implements a structured issue reporting system through GitHub's issue template feature. The project provides three distinct templates, each designed for specific interaction types:
| Template | File Location | Labels | Use Case |
| --- | --- | --- | --- |
| Bug Report | .github/ISSUE_TEMPLATE/bug_report.md | bug | Software defects, errors, unexpected behavior |
| Feature Request | .github/ISSUE_TEMPLATE/feature_request.md | enhancement | New capabilities, improvements, functionality additions |
| Question/Discussion | .github/ISSUE_TEMPLATE/-question-or-discussion.md | question | Usage questions, clarifications, general discussion |
All templates are YAML front-matter formatted Markdown files that render as interactive forms in GitHub's issue creation interface. This structure ensures consistent information gathering across all community interactions.
Sources: .github/ISSUE_TEMPLATE/bug_report.md L1-L88
.github/ISSUE_TEMPLATE/feature_request.md L1-L55
.github/ISSUE_TEMPLATE/-question-or-discussion.md L1-L37
Bug Report Template Structure
The bug report template is the most comprehensive, collecting eight categories of information to enable efficient debugging and reproduction.
Template Fields and Validation
flowchart TD
User["User Encounters Bug"]
GitHub["GitHub Issue Creation"]
Template["bug_report.md Template"]
Version["wshawk Version<br>type: input<br>required: true<br>placeholder: 2.0.x"]
Description["Bug Description<br>type: textarea<br>required: true<br>clear description"]
Steps["Steps to Reproduce<br>type: textarea<br>required: true<br>numbered steps"]
Expected["Expected Behavior<br>type: textarea<br>required: true"]
Actual["Actual Behavior<br>type: textarea<br>required: true"]
Logs["Logs/Screenshots<br>type: textarea<br>optional<br>render: shell"]
OS["Operating System<br>type: dropdown<br>required: true<br>options: Linux/macOS/Windows/Docker"]
Python["Python Version<br>type: input<br>optional<br>placeholder: 3.11"]
Validation["Validation Pass"]
Issue["GitHub Issue Created<br>Title: [BUG]<br>Label: bug"]
Template -.-> Version
Template -.-> Description
Template -.-> Steps
Template -.-> Expected
Template -.-> Actual
Template -.-> Logs
Template -.-> OS
Template -.-> Python
Version -.-> Validation
Description -.-> Validation
Steps -.-> Validation
Expected -.-> Validation
Actual -.-> Validation
OS -.-> Validation
Logs -.-> Validation
Python -.-> Validation
Validation -.-> Issue
User -.-> GitHub
GitHub -.-> Template
Diagram: Bug Report Template Field Structure and Validation Flow
Required vs Optional Fields
The template enforces five mandatory fields through GitHub's validation system:
Required Fields:
- wshawk Version [
line 19-25](https://github.com/noobforanonymous/wshawk/blob/0eebedf4/line 19-25) - Version identification for reproducibility - Bug Description [
line 27-34](https://github.com/noobforanonymous/wshawk/blob/0eebedf4/line 27-34) - Clear problem statement - Steps to Reproduce [
line 36-46](https://github.com/noobforanonymous/wshawk/blob/0eebedf4/line 36-46) - Actionable reproduction steps - Expected Behavior [
line 48-54](https://github.com/noobforanonymous/wshawk/blob/0eebedf4/line 48-54) - Expected outcome - Actual Behavior [
line 56-62](https://github.com/noobforanonymous/wshawk/blob/0eebedf4/line 56-62) - Observed outcome - Operating System [
line 71-81](https://github.com/noobforanonymous/wshawk/blob/0eebedf4/line 71-81) - Environment context via dropdown (Linux/macOS/Windows/Docker)
Optional Fields:
- Logs/Screenshots [
line 64-69](https://github.com/noobforanonymous/wshawk/blob/0eebedf4/line 64-69) - Supporting evidence with shell rendering - Python Version [
line 83-87](https://github.com/noobforanonymous/wshawk/blob/0eebedf4/line 83-87) - Interpreter version
Field Type Specifications
The template uses three GitHub form field types:
| Field Type | Usage | Validation Capability |
| --- | --- | --- |
| input | Single-line text entry | required: true/false, placeholder |
| textarea | Multi-line text entry | required: true/false, placeholder, render |
| dropdown | Pre-defined options | required: true/false, options: [] |
The render: shell attribute on the Logs/Screenshots field [line 69](https://github.com/noobforanonymous/wshawk/blob/0eebedf4/line 69)
enables syntax highlighting for pasted terminal output.
Sources: .github/ISSUE_TEMPLATE/bug_report.md L1-L88
Feature Request Template Structure
The feature request template focuses on problem-solution articulation and implementation willingness assessment.
Template Field Hierarchy
flowchart TD
User["User Identifies Need"]
Template["feature_request.md Template"]
Problem["Problem Statement<br>type: textarea<br>required: true<br>What problem does this solve?"]
Solution["Proposed Solution<br>type: textarea<br>required: true<br>How should this work?"]
Alternatives["Alternatives Considered<br>type: textarea<br>optional<br>Other solutions?"]
Examples["Examples<br>type: textarea<br>optional<br>render: shell"]
Contribution["Contribution Checkbox<br>type: checkboxes<br>optional<br>Willing to implement?"]
CoreInfo["Core Information Complete"]
EnhancedInfo["Enhanced Context"]
Issue["GitHub Issue Created<br>Title: [FEATURE]<br>Label: enhancement"]
Template -.-> Problem
Template -.-> Solution
Template -.-> Alternatives
Template -.-> Examples
Template -.-> Contribution
Problem -.-> CoreInfo
Solution -.-> CoreInfo
Alternatives -.-> EnhancedInfo
Examples -.-> EnhancedInfo
Contribution -.-> EnhancedInfo
CoreInfo -.-> Issue
EnhancedInfo -.-> Issue
User -.-> Template
Diagram: Feature Request Template Structure and Information Flow
Required Components
Mandatory Fields:
- Problem Statement [
line 18-25](https://github.com/noobforanonymous/wshawk/blob/0eebedf4/line 18-25) - Describes the user pain point or limitation - Proposed Solution [
line 27-34](https://github.com/noobforanonymous/wshawk/blob/0eebedf4/line 27-34) - Articulates the desired functionality
Optional Enhancements:
- Alternatives Considered [
line 36-41](https://github.com/noobforanonymous/wshawk/blob/0eebedf4/line 36-41) - Shows exploration of other approaches - Examples [
line 43-47](https://github.com/noobforanonymous/wshawk/blob/0eebedf4/line 43-47) - Provides concrete usage examples with shell rendering - Contribution Checkbox [
line 49-54](https://github.com/noobforanonymous/wshawk/blob/0eebedf4/line 49-54) - Indicates contributor willingness
Contribution Signaling
The template includes a unique checkboxes field type [line 49-54](https://github.com/noobforanonymous/wshawk/blob/0eebedf4/line 49-54)
that allows feature requesters to signal implementation interest:
- type: checkboxes
id: contribution
attributes:
label: Contribution
options:
- label: I'm willing to implement this feature
This checkbox serves dual purposes:
- Prioritization signal - Maintainers can prioritize features with committed implementers
- Contribution funnel - Converts feature requests into potential pull requests
Sources: .github/ISSUE_TEMPLATE/feature_request.md L1-L55
Question and Discussion Template
The simplest template, designed for open-ended inquiries and discussions.
Minimal Field Structure
flowchart TD
User["User Has Question"]
Template["-question-or-discussion.md"]
Question["Your Question<br>type: textarea<br>required: true<br>What would you like to know?"]
Context["Context<br>type: textarea<br>optional<br>Additional context?"]
Version["wshawk Version<br>type: input<br>optional<br>placeholder: 2.0.x"]
Issue["GitHub Issue Created<br>Title: [QUESTION]<br>Label: question"]
Template -.-> Question
Template -.-> Context
Template -.-> Version
Question -.-> Issue
Context -.-> Issue
Version -.-> Issue
User -.-> Template
Diagram: Question/Discussion Template Minimal Structure
Field Specifications
Required:
- Your Question [
line 18-24](https://github.com/noobforanonymous/wshawk/blob/0eebedf4/line 18-24) - The core inquiry
Optional:
- Context [
line 26-31](https://github.com/noobforanonymous/wshawk/blob/0eebedf4/line 26-31) - Situational background - wshawk Version [
line 32-36](https://github.com/noobforanonymous/wshawk/blob/0eebedf4/line 32-36) - Version context for usage questions
This template intentionally minimizes friction for community engagement. Unlike the bug report template's mandatory environment fields, questions only require the question text itself, acknowledging that many inquiries are conceptual rather than environment-specific.
Sources: .github/ISSUE_TEMPLATE/-question-or-discussion.md L1-L37
Issue Template File Structure
All three templates follow GitHub's YAML-based issue form specification:
flowchart TD
FrontMatter["YAML Front Matter<br>---<br>name: Template Name<br>about: Description<br>title: Prefix<br>labels: [label]<br>assignees: ''<br>---"]
FormBody["Form Body<br>body: array of field definitions"]
Field1["Field Definition<br>- type: markdown/input/textarea/dropdown/checkboxes<br> id: unique_id<br> attributes:<br> label: Field Label<br> description: Help text<br> placeholder: Example<br> validations:<br> required: true/false"]
UIForm["Interactive Web Form<br>Field validation<br>Auto-labeling<br>Title prefixing"]
Field1 -.-> UIForm
subgraph subGraph1 ["Rendered in GitHub"]
UIForm
end
subgraph subGraph0 ["Template File Structure"]
FrontMatter
FormBody
Field1
FrontMatter -.-> FormBody
FormBody -.-> Field1
end
Diagram: GitHub Issue Template File Structure to Rendered Form
Common Template Elements
All templates share structural patterns:
Front Matter Structure (Lines 1-8 in each file):
name: Display Name
about: Description
title: '[PREFIX] '
labels: label_name
assignees: ''
Body Array Pattern:
- Starts with
body:key after front matter - Contains array of field objects
- Each field has
type,id,attributes, and optionalvalidations
Field Type Distribution:
| Field Type | Bug Report | Feature Request | Question |
| --- | --- | --- | --- |
| markdown | 1 | 1 | 1 |
| input | 2 | 0 | 1 |
| textarea | 5 | 4 | 2 |
| dropdown | 1 | 0 | 0 |
| checkboxes | 0 | 1 | 0 |
Sources: .github/ISSUE_TEMPLATE/bug_report.md L1-L12
.github/ISSUE_TEMPLATE/feature_request.md L1-L12
.github/ISSUE_TEMPLATE/-question-or-discussion.md L1-L12
Issue Reporting Workflow
Complete Issue Lifecycle
flowchart TD
Start["User Identifies Issue/Need"]
Decision["Issue Type?"]
BugPath["Select Bug Report Template"]
FeaturePath["Select Feature Request Template"]
QuestionPath["Select Question Template"]
SecurityPath["DO NOT USE GITHUB<br>Email security@rothackers.com<br>See SECURITY.md"]
BugForm["Complete Bug Report Form<br>- wshawk version (required)<br>- Description (required)<br>- Reproduction steps (required)<br>- Expected/Actual behavior (required)<br>- OS selection (required)<br>- Logs/screenshots (optional)<br>- Python version (optional)"]
FeatureForm["Complete Feature Request Form<br>- Problem statement (required)<br>- Proposed solution (required)<br>- Alternatives (optional)<br>- Examples (optional)<br>- Contribution willingness (optional)"]
QuestionForm["Complete Question Form<br>- Your question (required)<br>- Context (optional)<br>- Version (optional)"]
Submit["Submit Issue<br>Auto-labeled: bug<br>Title: [BUG] ..."]
Submit2["Submit Issue<br>Auto-labeled: enhancement<br>Title: [FEATURE] ..."]
Submit3["Submit Issue<br>Auto-labeled: question<br>Title: [QUESTION] ..."]
Triage["Maintainer Triage<br>- Validate reproducibility<br>- Assign priority<br>- Request additional info"]
Respond["Community Response<br>- Answer question<br>- Point to documentation<br>- Close or convert to discussion"]
Action["Action Taken<br>- Bug fix PR<br>- Feature implementation<br>- Documentation update<br>- Close as won't fix"]
SecureChannel["Private Email Channel<br>Responsible disclosure<br>See page 9.1"]
Start -.->|"Usage Question"| Decision
Decision -.->|"New Capability"| BugPath
Decision -.-> FeaturePath
Decision -.-> QuestionPath
Decision -.->|"Security Vulnerability"| SecurityPath
BugPath -.->|"Software Defect"| BugForm
FeaturePath -.-> FeatureForm
QuestionPath -.-> QuestionForm
BugForm -.-> Submit
FeatureForm -.-> Submit2
QuestionForm -.-> Submit3
Submit -.-> Triage
Submit2 -.-> Triage
Submit3 -.-> Respond
Triage -.-> Action
SecurityPath -.-> SecureChannel
Diagram: Complete Issue Reporting Workflow from Identification to Resolution
Template Selection Decision Tree
Use Bug Report Template when:
- WSHawk produces an error or exception
- Functionality works differently than documented
- Commands exit with unexpected codes
- Reports contain incorrect information
- Scanner fails to detect known vulnerabilities
Use Feature Request Template when:
- Requesting new vulnerability detection modules
- Suggesting new CLI options or commands
- Proposing new mutation strategies
- Requesting output format additions
- Suggesting payload collection expansions
Use Question Template when:
- Unclear about usage patterns
- Need clarification on documentation
- Want to discuss best practices
- Seeking guidance on configuration
- Exploring integration approaches
Never use public templates for:
- Security vulnerabilities in WSHawk itself
- Exploitable bugs that could harm users
- Authentication bypass issues
- Any vulnerability requiring responsible disclosure
Sources: CONTRIBUTING.md L115-L127
.github/ISSUE_TEMPLATE/bug_report.md
.github/ISSUE_TEMPLATE/feature_request.md
.github/ISSUE_TEMPLATE/-question-or-discussion.md
Best Practices for Issue Reporting
Bug Report Best Practices
Version Specification:
- Use exact version numbers (e.g.,
2.0.5, not "latest") - For Docker deployments, specify image tag:
rothackers/wshawk:2.0.5 - Include commit hash if testing development builds
Reproduction Steps:
- Provide complete command line invocations
- Include all relevant CLI flags (
--playwright,--rate, etc.) - Specify target WebSocket URL format (ws:// vs wss://)
- Attach authentication configuration files if applicable
- Number steps sequentially for clarity
Log Inclusion:
- Use the
render: shellfield [bug_report.md L69](https://github.com/noobforanonymous/wshawk/blob/0eebedf4/bug_report.md#L69-L69) for proper formatting - Include full stack traces, not truncated output
- Capture DEBUG level logs if available
- Include timestamps for timing-related issues
Environment Details:
- OS selection dropdown handles Linux/macOS/Windows/Docker [
bug_report.md L72-L79](https://github.com/noobforanonymous/wshawk/blob/0eebedf4/bug_report.md#L72-L79) - For Docker: specify host OS AND container environment
- Python version helps diagnose dependency issues [
bug_report.md L84-L87](https://github.com/noobforanonymous/wshawk/blob/0eebedf4/bug_report.md#L84-L87)
Feature Request Best Practices
Problem Statement Articulation:
- Focus on the "why" before the "what"
- Describe user impact, not technical implementation
- Reference existing WSHawk capabilities that fall short
- Quantify problem scope when possible
Solution Proposal:
- Describe desired behavior, not code changes
- Provide example command invocations showing intended usage
- Consider integration with existing features
- Account for backward compatibility
Example Provision:
- Use the
render: shellfield [feature_request.md L47](https://github.com/noobforanonymous/wshawk/blob/0eebedf4/feature_request.md#L47-L47) for command examples - Show before/after scenarios
- Include expected output formats
- Demonstrate edge cases
Contribution Signal:
- Check the contribution box [
feature_request.md L50-L54](https://github.com/noobforanonymous/wshawk/blob/0eebedf4/feature_request.md#L50-L54) if willing to implement - Increases likelihood of feature acceptance
- Maintainers can provide implementation guidance
- Streamlines pull request review process
Question Best Practices
Question Formulation:
- Be specific about the uncertain behavior
- Separate multiple distinct questions into separate issues
- Search existing issues/discussions before posting
- Include version context [
-question-or-discussion.md L32-L36](https://github.com/noobforanonymous/wshawk/blob/0eebedf4/-question-or-discussion.md#L32-L36) for usage questions
Context Provision:
- Describe what you're trying to accomplish
- Explain what you've already tried
- Reference documentation sections that are unclear
- Include relevant configuration snippets
Sources: CONTRIBUTING.md L115-L127
Integration with CONTRIBUTING.md
The issue templates are one component of WSHawk's contribution system, which is comprehensively documented in CONTRIBUTING.md:
Relationship to Contribution Workflow
flowchart TD
IssueTemplates["Issue Templates<br>bug_report.md<br>feature_request.md<br>-question-or-discussion.md"]
Fork["Fork Repository<br>CONTRIBUTING.md:17-22"]
Branch["Create Branch<br>CONTRIBUTING.md:36-39"]
Develop["Code Changes<br>PEP 8, type hints, docstrings<br>CONTRIBUTING.md:42-48"]
Test["Run Tests<br>test_modules_quick.py<br>CONTRIBUTING.md:50-60"]
PR["Submit Pull Request<br>CONTRIBUTING.md:70-90"]
VulnModule["New Vulnerability Module<br>wshawk/*.py"]
Mutator["New Mutator<br>wshawk/mutators/"]
Payloads["New Payloads<br>payloads/*.txt"]
Closes["Closes Original Issue"]
IssueTemplates -.->|"Bug Report Leads To"| Fork
IssueTemplates -.->|"Feature Request With ContributionCheckbox Checked"| Fork
Develop -.-> VulnModule
Develop -.-> Mutator
Develop -.-> Payloads
VulnModule -.-> Test
Mutator -.-> Test
Payloads -.-> Test
PR -.-> Closes
subgraph subGraph2 ["Extension Points (CONTRIBUTING.md:92-114)"]
VulnModule
Mutator
Payloads
end
subgraph subGraph1 ["Development Workflow (CONTRIBUTING.md)"]
Fork
Branch
Develop
Test
PR
Fork -.-> Branch
Branch -.-> Develop
Test -.->|"After Merge"| PR
end
subgraph subGraph0 ["Community Interaction (Page 9.2)"]
IssueTemplates
end
Diagram: Issue Template Integration with Development Contribution Workflow
Contribution Path Matrix
| Starting Point | Next Steps | Documentation | | --- | --- | --- | | Bug Report Issue | 1. Issue triage2. Fork repo3. Create fix4. Submit PR | CONTRIBUTING.md L17-L90 | | Feature Request (Checkbox Unchecked) | 1. Community discussion2. Maintainer evaluation3. Roadmap consideration | Issue comments | | Feature Request (Checkbox Checked) | 1. Fork repo2. Follow extension guides3. Submit PR | CONTRIBUTING.md L92-L114 | | Question Issue | 1. Community answers2. Documentation improvement3. Issue closure | Issue comments |
Cross-Reference to CONTRIBUTING.md Sections
- Bug Reporting Details: CONTRIBUTING.md L115-L127
- Code Style Guidelines: CONTRIBUTING.md L42-L48
- Testing Requirements: CONTRIBUTING.md L50-L60
- Pull Request Guidelines: CONTRIBUTING.md L85-L90
- Extension Point Documentation: CONTRIBUTING.md L92-L114
- Security Issue Handling: CONTRIBUTING.md L129-L133
Sources: CONTRIBUTING.md L1-L155
Template Maintenance and Evolution
Template File Locations
flowchart TD
Root[".github/"]
IssueTemplate["ISSUE_TEMPLATE/"]
Bug["bug_report.md<br>Lines: 88<br>Fields: 8<br>Required: 5"]
Feature["feature_request.md<br>Lines: 55<br>Fields: 5<br>Required: 2"]
Question["-question-or-discussion.md<br>Lines: 37<br>Fields: 3<br>Required: 1"]
BugLabel["Auto-labels: bug<br>Title prefix: [BUG]"]
FeatureLabel["Auto-labels: enhancement<br>Title prefix: [FEATURE]"]
QuestionLabel["Auto-labels: question<br>Title prefix: [QUESTION]"]
Root -.-> IssueTemplate
IssueTemplate -.-> Bug
IssueTemplate -.-> Feature
IssueTemplate -.-> Question
Bug -.-> BugLabel
Feature -.-> FeatureLabel
Question -.-> QuestionLabel
Diagram: Issue Template File Organization and Metadata
GitHub Integration Points
The templates integrate with GitHub's issue system through several mechanisms:
- Automatic Labeling:
labels: ["label_name"]in front matter applies labels on issue creation - Title Prefixing:
title: "[PREFIX] "prepends text to issue titles - Form Validation:
validations: required: trueenforces mandatory fields - Field Rendering:
render: shellenables syntax highlighting for logs/code - Dropdown Options:
options: []restricts values to predefined choices
These integrations eliminate manual triage work and ensure consistent issue metadata.
Sources: .github/ISSUE_TEMPLATE/bug_report.md L1-L88
.github/ISSUE_TEMPLATE/feature_request.md L1-L55
.github/ISSUE_TEMPLATE/-question-or-discussion.md L1-L37
Summary
WSHawk's issue reporting system provides three structured pathways for community interaction:
| Template | Fields | Mandatory | Auto-Label | Use Case |
| --- | --- | --- | --- | --- |
| bug_report.md | 8 | 5 | bug | Software defects, errors |
| feature_request.md | 5 | 2 | enhancement | New capabilities, improvements |
| -question-or-discussion.md | 3 | 1 | question | Usage questions, clarifications |
All templates leverage GitHub's YAML form specification to enforce structured information gathering, reducing back-and-forth during issue triage. The bug report template is the most comprehensive, requiring version, reproduction steps, and environment details. The feature request template balances problem articulation with optional contribution signaling. The question template minimizes friction for community engagement.
Security vulnerabilities must never use these public templates; instead, they require private disclosure via email as documented in Security Policy and Vulnerability Disclosure.
For code contributions following issue creation, consult CONTRIBUTING.md for development workflow, coding standards, and extension point documentation.