How this skill is triggered — by the user, by Claude, or both
Slash command
/hive-mind:issue-noteThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Fetch a GitHub issue, scan the local codebase for affected areas, and write
Fetch a GitHub issue, scan the local codebase for affected areas, and write a structured investigation brief to the user's Obsidian vault.
The vault path is defined by the HIVE_MIND_PATH environment variable.
The qmd collection name is defined by HIVE_MIND_COLLECTION (default: hive-mind).
The note author is defined by HIVE_MIND_AUTHOR (a wikilink to a people/ entry).
If HIVE_MIND_PATH is unset, abort and tell the user to run ./setup.sh in the vault directory.
gh CLI must be installed and authenticated. If gh is not found, abort with a clear message.
Explicit — /hive-mind:issue-note #42 or /hive-mind:issue-note https://github.com/...
Use the issue number or URL from $ARGUMENTS directly.
Inferred — /hive-mind:issue-note
When $ARGUMENTS is not provided, infer the issue number from the current branch name.
If $ARGUMENTS contains an issue number (e.g., #42, 42) or a GitHub issue URL,
extract the number from it and proceed.
Otherwise, extract the issue number from the current branch name by checking these patterns in order:
<prefix>/<number>-<description> → number (e.g., fix/42-login-bug → 42)<prefix>-<number>-<description> → number (e.g., issue-42-login-bug → 42)<number>-<description> → number (e.g., 42-login-bug → 42)If multiple numbers are found, take the first number appearing after / or at
the start of the branch name. If the result is ambiguous, prompt the user to
provide the issue number explicitly.
Fetch the issue data:
gh issue view <number> --json title,body,labels,comments,assignees
If no issue is found or gh returns an error, abort with a clear message
explaining what was tried.
Determine the target repo directory dynamically from the current working directory and the vault structure.
pwdUse the basename of the current working directory (or its git root) as the repo slug. Use the name exactly as-is — do not strip suffixes or transform it.
Search for the issues directory for the repo slug anywhere under $HIVE_MIND_PATH/projects:
find "$HIVE_MIND_PATH/projects" -type d -path "*/repos/<repo-slug>/issues" | head -1
$ISSUES_DIR).Extract the project name from the resolved issues path:
PROJECT=$(echo "$ISSUES_DIR" | sed 's|.*/projects/||' | cut -d'/' -f1)
The repo slug (from step 1) populates repo:. The extracted project name
populates project:. There is no corresponding tag.
All tags MUST exist in $HIVE_MIND_PATH/TAGS.md. Read that file every
time you generate a note — do not rely on a cached or hardcoded list.
Pull the following fields from gh issue view:
title — used in note title and frontmatterbody — primary source for the Problem sectionlabels — inform tag selectioncomments — supplement problem understanding; look for reproduction steps,
workarounds, or additional contextassignees — used as people entities in the vault context searchAfter fetching the issue, extract keywords from the title and body, then search the local repo for affected files:
grep -r "<keyword>" --include="*.ts" --include="*.js" --include="*.py" \
--include="*.rb" --include="*.go" -l 2>/dev/null | head -20
Keep this scan shallow — collect file paths and a one-line note about why each file is relevant. Do not perform deep analysis. This feeds directly into the Affected Areas body section.
Focus keyword extraction on:
Use the template from $HIVE_MIND_PATH/templates/issue-note.md as the structural
starting point. Populate each section following these guidelines:
Issue #<number>: <issue title> — used in both frontmatter and as the H1Include only sections that have content. Do not include empty sections. No separate Context or Related Notes section — wikilinks are woven into the prose of the body sections above.
YYYY-MM-DD-issue-<number>-<slug>.md
The slug should be 2-4 hyphenated words derived from the issue title.
Examples:
2026-03-20-issue-42-login-redirect-loop.md2026-03-20-issue-107-payment-timeout-error.md2026-03-20-issue-15-dark-mode-contrast.md[[path|Title]] syntax from the linking context.
Do not guess at links — only link to notes confirmed to exist by search.From the fetched issue data, identify every named entity that plausibly exists as its own vault note. Entity types by priority:
| Priority | Entity type | Examples | Always query? |
|---|---|---|---|
| 1 (highest) | People / assignees | person names from issue | Yes — never drop |
| 1 (highest) | Repository | repo slug from step 5 | Yes — never drop |
| 2 | Glossary terms / internal jargon | component names, internal tools | Yes |
| 2 | Named tools / frameworks | libraries, services referenced | Yes |
| 3 | Key technical concepts from issue | error types, feature names | If distinctive |
| 3 | File/component names from scan | modules found in step 7 | If distinctive |
| 4 (lowest) | Generic terms | "bug", "error", "fix" | Drop first |
Soft ceiling: ~6 BM25 queries. If approaching the ceiling, drop priority 4 and 3 entities first. Never drop a person or repo query.
WARNING: BM25 tokenizes on hyphens and slashes. This vault is full of hyphenated content. Failing to de-hyphenate queries will produce poor or empty results.
Always convert hyphens and slashes to spaces before running BM25 queries:
What you want to find Wrong query Correct query Notes about trusted-services-lite trusted-services-litetrusted services liteNotes tagged salesforce/lwc salesforce/lwcsalesforce lwcNotes about jwt-auth jwt-authjwt authNotes about session-token handling session-tokensession tokenThis does NOT apply to semantic search — the embedding model handles hyphens and compound terms naturally.
BM25 (per entity) — One query per named entity:
qmd search "<de-hyphenated entity>" --json -n 5 -c $HIVE_MIND_COLLECTION
Semantic (one pass for problem statement) — One vsearch query phrased
as a natural language description of the issue's core problem:
qmd vsearch "<natural language description of the problem>" --json -n 5 -c $HIVE_MIND_COLLECTION
The semantic query should be a 5–15 word natural language description, not a keyword list. Example: "authentication token not persisted after page reload" rather than "auth token reload bug".
If total BM25 hits across all entity queries already exceed 8 unique notes, the semantic pass may be skipped.
No qmd update here — that runs in step 12 after the note is written.
From combined BM25 + semantic results, deduplicate by path and discard:
index.md)For each remaining result, record:
qmd://vault/ prefix and .md extension)[[<vault-path>|<title>]]qmd get "<filepath>" -l 20
for 2–3 top results to read their frontmatter tags)Note which domain tags recur across related notes — this is a signal (not a directive) for tag selection in step 10.
If any result has a title or topic that closely matches the issue being investigated (same repo, same issue number or overlapping subject matter), flag it:
Potential duplicate detected:
[[path|Title]]covers a similar topic.
Present the warning to the user and ask whether to:
Do NOT silently create a duplicate.
Carry the linking context into step 9. During note generation:
[[path|Title]] wikilinks where the note's content naturally
references a related note's topic. Link on first mention only.type: term), wikilink
to it on first mention using [[glossary/<slug>|<Title>]].HIVE_MIND_PATH, HIVE_MIND_COLLECTION,
and HIVE_MIND_AUTHOR are set; confirm gh is installed and authenticated.
If any check fails, abort with a clear message and tell the user to run
./setup.sh if env vars are missing.$ARGUMENTS or from the current branch name
using the patterns defined in Issue Resolution.$HIVE_MIND_PATH/TAGS.md, $HIVE_MIND_PATH/FRONTMATTER.md, and
$HIVE_MIND_PATH/templates/issue-note.md to load the current valid tag list,
frontmatter conventions, and the note template. Use the template as the
structural starting point for the generated note — it defines the
frontmatter fields and body sections.gh issue view <number> --json title,body,labels,comments,assignees
If the issue is not found, abort with a clear message.pwd (basename of working directory or git root).find "$HIVE_MIND_PATH/projects" -type d -path "*/repos/<repo-slug>/issues" | head -1.
Extract project name from the resolved path.$HIVE_MIND_PATH/TAGS.md.
Apply the three-check protocol for any missing tags. Cross-reference domain
tags observed on related notes in step 8. Use related notes' tags as a
weak signal — do not blindly copy them. Enforce 2-5 tags.$ISSUES_DIR resolved in step 6.
If no repo directory was found, flag to user and do not continue.qmd update 2>/dev/null && qmd embed 2>/dev/null
If qmd is not installed, skip silently.npx claudepluginhub arctype-ventures/arctype-plugins --plugin hive-mindManages full GitHub issue lifecycle: create with conventional commit titles, sub-issues, cross-repo links, edit/view/list, dump trees to markdown/YAML, push from files, comment/label/close.
Creates and edits notes in PKM vault using templates for ADR, research, tasks, meetings; duplicate checks via semantic search, link discovery, annotations, index updates.
Manages Obsidian vault as developer knowledge base: create/search/update notes with standard frontmatter, organize by projects/technologies/Claude Code, auto-capture commits/tasks/components.