From jaan-to
Reports bugs, feature requests, skill issues to jaan-to GitHub repo or saves locally. Use for Claude Code plugin issue reporting.
npx claudepluginhub parhumm/jaan-to --plugin jaan-toThis skill is limited to using the following tools:
> Report issues to the jaan-to GitHub repo or save locally for manual submission.
Creates isolated Git worktrees for feature branches with prioritized directory selection, gitignore safety checks, auto project setup for Node/Python/Rust/Go, and baseline verification.
Executes implementation plans in current session by dispatching fresh subagents per independent task, with two-stage reviews: spec compliance then code quality.
Dispatches parallel agents to independently tackle 2+ tasks like separate test failures or subsystems without shared state or dependencies.
Report issues to the jaan-to GitHub repo or save locally for manual submission.
Read these before execution:
${CLAUDE_PLUGIN_ROOT}/skills/jaan-issue-report/LEARN.md - Plugin-side seed lessons$JAAN_LEARN_DIR/jaan-to-jaan-issue-report.learn.md - Project-side learned lessons${CLAUDE_PLUGIN_ROOT}/skills/jaan-issue-report/template.md - Issue body templates per type${CLAUDE_PLUGIN_ROOT}/.claude-plugin/plugin.json - Plugin version${CLAUDE_PLUGIN_ROOT}/docs/extending/language-protocol.md - Language resolutionArguments: $ARGUMENTS
Parse from arguments:
bug, feature, skill, docs. Default: auto-detect from description or session context.If neither --submit nor --no-submit is provided, submit mode is resolved in Step 1 via saved preference or smart detection.
If no arguments provided, proceed to session context scan (Step 0) or ask: "What issue would you like to report?"
MANDATORY — Read and execute ALL steps in: ${CLAUDE_PLUGIN_ROOT}/docs/extending/pre-execution-protocol.md
Skill name: jaan-issue-report
Execute: Step 0 (Init Guard) → A (Load Lessons) → B (Resolve Template) → C (Offer Template Seeding)
MANDATORY FIRST ACTION — Before any other step, use the Read tool to read:
$JAAN_LEARN_DIR/jaan-to-jaan-issue-report.learn.md
If the file exists, apply its lessons throughout this execution:
If the file does not exist, continue without it.
Also read the plugin-side seed lessons:
${CLAUDE_PLUGIN_ROOT}/skills/jaan-issue-report/LEARN.md
Read and apply language protocol: ${CLAUDE_PLUGIN_ROOT}/docs/extending/language-protocol.md
Override field for this skill: language_jaan-issue-report
CRITICAL LANGUAGE RULE:
Keep in English always: technical terms, file paths, variable names, skill names, code snippets, error messages.
Reference: See
${CLAUDE_PLUGIN_ROOT}/docs/extending/jaan-issue-report-reference.mdsection "Tone and Framing Guidance" for problem-focused, suggestive tone principles (gathering, drafting, reviewing).
This step runs ONLY when the skill is invoked mid-session (not as the first command). If no useful session context is found, skip to Step 1.
Scan the current conversation history silently:
Look for /jaan-to:* invocations in the conversation. Identify which skill(s) were used this session and what they produced.
Search for patterns:
From the conversation, extract:
If signals were found:
bug if errors found, feature if user expressed a wish, skill if skill-specific[Type] description)Present to user using AskUserQuestion (in their conversation language):
Show the draft context first:
"Based on this session, it looks like you experienced an issue with
/jaan-to:{skill-name}:Observed issue: {draft title} {draft description — 2-3 sentences describing what went wrong}"
Then ask:
AskUserQuestion:
question: "Is this what you'd like to report?"
header: "Draft"
options:
- label: "Yes, report this"
description: "Continue with this draft. Only deepening questions will be asked."
- label: "No, something else"
description: "Discard this draft and start fresh."
- label: "Close, let me adjust"
description: "Edit the draft before continuing."
Determine submit mode using this priority order:
--submit flag is present: set submit mode = submit. Proceed to 1.4.--no-submit flag is present: set submit mode = local-only. Skip to Step 2.Read jaan-to/config/settings.yaml and look for the issue_report_submit key.
issue_report_submit: true: set submit mode = submit. Proceed to 1.4.issue_report_submit: false: set submit mode = local-only. Skip to Step 2."ask": proceed to 1.3.gh auth status silently.gh is not available or not authenticated:
"GitHub CLI is not installed or not authenticated. Issues will be saved locally. You can submit them manually later." Set submit mode = local-only. Skip to Step 2. Do NOT save this as a preference (user may install gh later).
gh is authenticated: Set submit mode = submit. Proceed to 1.4.
No question asked — submit is the default. Users can opt out with --no-submit or by setting issue_report_submit: false in jaan-to/config/settings.yaml.If submit mode is submit (from any source):
gh auth status to verify GitHub CLI is still installed and authenticated."GitHub CLI is not installed or not authenticated. Your issue will be saved locally instead. You can submit it manually later." Override to local-only mode.
Determine issue type using this priority order:
--type flag (if provided): use directlyReference: See
${CLAUDE_PLUGIN_ROOT}/docs/extending/jaan-issue-report-reference.mdsection "Keyword Detection Table (Step 2)" for keyword-to-type mapping and type-to-label mapping.
Reference: See
${CLAUDE_PLUGIN_ROOT}/docs/extending/jaan-issue-report-reference.mdsection "Tone and Framing Guidance" for problem-focused question framing and smart auto-conversion.
Ask targeted clarifying questions to build a complete, detailed issue. If a session draft was accepted in Step 0, only ask deepening questions — don't re-ask what's already captured from the conversation.
bug type:Smart synthesis: Focus bug description on the problem (broken functionality, unexpected behavior) and impact (workflow blocked, wrong results) rather than just error text.
feature type:Smart auto-conversion: If user describes a solution ("Add support for X"), extract the problem:
skill type:Smart synthesis: Frame skill issues around the gap (missing capability, unexpected behavior) and its impact, not the solution (new skill, modified output).
docs type:Smart synthesis: Focus on the knowledge gap (what was unclear, what was missing) and the user's goal, not the specific documentation fix.
Always ask (for all types): "Is there anything else that would help understand this issue?"
Skip questions the user already answered in their initial description or session context.
Auto-collect without user interaction:
${CLAUDE_PLUGIN_ROOT}/.claude-plugin/plugin.json — extract version fielduname -s -r -m — extract OS type and architecture (do NOT include hostname)Store as environment data for the issue body.
Scan accumulated issue content (title draft + gathered details) for threat patterns. Strip hidden characters.
Reference: See
${CLAUDE_PLUGIN_ROOT}/docs/extending/threat-scan-reference.mdfor pattern tables and verdict actions.
Craft a clear, descriptive title. Always in English. Pattern: [{Type}] {concise description} (under 80 chars).
Reference: See
${CLAUDE_PLUGIN_ROOT}/docs/extending/jaan-issue-report-reference.mdsection "Issue Title Format (Step 5)" for full rules and examples.
Read the template from ${CLAUDE_PLUGIN_ROOT}/skills/jaan-issue-report/template.md.
Select the matching type template (bug / feature / skill / docs) and fill all {{field}} variables using:
Merge all sources into a coherent, well-structured issue body. All issue body content must be in English.
Reference: See
${CLAUDE_PLUGIN_ROOT}/docs/extending/jaan-issue-report-reference.mdsection "Variable Mapping (Tone-Aware)" for complete field mapping per issue type (bug, feature, skill, docs), smart auto-conversion rules, and tone reminders.
MANDATORY before HARD STOP preview. Scan the generated issue body for private information:
Reference: See
${CLAUDE_PLUGIN_ROOT}/docs/extending/jaan-issue-report-reference.mdsection "Privacy Sanitization Rules" for path, credential, and personal info sanitization rules, safe-to-keep list, and counting requirements.
Apply all sanitization rules. Track the number of sanitized items for HARD STOP display.
Present the complete issue preview:
ISSUE PREVIEW
──────────────────────────────────────────
Repo: parhumm/jaan-to
Type: {type}
Label: {label}
Title: {title}
Mode: {Submit to GitHub / Save locally}
BODY:
──────────────────────────────────────────
{full issue body — every line}
──────────────────────────────────────────
If items were sanitized in Step 7, flag:
"For privacy, {N} path(s)/value(s) have been sanitized with placeholders. Please review the preview carefully to ensure the issue description remains clear and complete."
Ask using AskUserQuestion (in the user's conversation language):
AskUserQuestion:
question: "Does this look correct?"
header: "Approve"
options:
- label: "Yes, looks good"
description: "Proceed to save and/or submit the issue"
- label: "No, abort"
description: "Cancel — nothing will be saved or submitted"
- label: "Edit"
description: "Make changes to the issue before proceeding"
Do NOT proceed to Phase 2 without explicit approval.
Generate NEXT_ID, SLUG, OUTPUT_FOLDER, and MAIN_FILE for potential local save.
Reference: See
${CLAUDE_PLUGIN_ROOT}/docs/extending/jaan-issue-report-reference.mdsection "Output Path Generation (Step 8)" for the full bash script and variable definitions.
If submit mode is local-only (as resolved in Step 1), skip this step entirely and proceed to Step 10.
If submit mode is submit:
Write the sanitized issue body (without YAML frontmatter) directly to a temp file:
cat > /tmp/jaan-issue-body-clean.md <<'EOF'
{full issue body content — generated in Step 6, sanitized in Step 7}
EOF
gh label create "{label}" --repo parhumm/jaan-to --description "{description}" 2>/dev/null || true
gh issue create --repo parhumm/jaan-to \
--title "{title}" \
--label "{label}" \
--body-file /tmp/jaan-issue-body-clean.md
rm -f /tmp/jaan-issue-body-clean.md
If successful:
https://github.com/parhumm/jaan-to/issues/123)If failed (authentication error, network issue, API error):
This step is reached in two scenarios:
This step is SKIPPED if:
Present the issue title and body in a copy-paste ready format with contextual message (different for GitHub failure vs. local-only mode).
Reference: See
${CLAUDE_PLUGIN_ROOT}/docs/extending/jaan-issue-report-reference.mdsection "Copy-Paste Ready Template (Step 10.1)" for the exact format and contextual messages.
Use AskUserQuestion (in the user's conversation language):
AskUserQuestion:
question: "Would you like to save a local copy of this issue as a file?"
header: "Save file"
options:
- label: "Yes, save local copy"
description: "Save the issue as a .md file with metadata for future reference"
- label: "No, skip"
description: "Don't create a file — use the copy-paste version above instead"
If user selected "Yes, save local copy":
mkdir -p "$OUTPUT_FOLDER"
Write to $MAIN_FILE (the path generated in Step 8) with YAML frontmatter (metadata) followed by the full issue body.
Reference: See
${CLAUDE_PLUGIN_ROOT}/docs/extending/jaan-issue-report-reference.mdsection "Local Issue File Template (Step 10.3.2)" for the complete file format and frontmatter fields.
source "${CLAUDE_PLUGIN_ROOT}/scripts/lib/index-updater.sh"
add_to_index \
"$SUBDOMAIN_DIR/README.md" \
"$NEXT_ID" \
"${NEXT_ID}-${SLUG}" \
"{title}" \
"{one-line summary}"
Confirm:
"Local copy saved to:
$JAAN_OUTPUTS_DIR/jaan-issues/{NEXT_ID}-{SLUG}/{NEXT_ID}-{SLUG}.md"
If user selected "No, skip":
Show the appropriate result message in the user's conversation language.
Reference: See
${CLAUDE_PLUGIN_ROOT}/docs/extending/jaan-issue-report-reference.mdsection "Result Scenario Templates (Step 11)" for all 5 scenarios (A: GitHub success, B: Local+file, C: Local+no file, D: GitHub fail+file, E: GitHub fail+no file).
AskUserQuestion:
question: "Any feedback on this issue reporting experience?"
header: "Feedback"
options:
- label: "No feedback"
description: "All good, skip feedback"
- label: "Yes, I have feedback"
description: "Share feedback to improve this skill"
If Yes, I have feedback: ask for details, then run /jaan-to:learn-add jaan-issue-report "{feedback}"
Reference: See
${CLAUDE_PLUGIN_ROOT}/docs/extending/jaan-issue-report-reference.mdsection "Definition of Done" for the full checklist.