Skip to content

feat: add /missive skill for GitHub issue context#51

Merged
justinjdev merged 11 commits intomainfrom
45-missive
Mar 8, 2026
Merged

feat: add /missive skill for GitHub issue context#51
justinjdev merged 11 commits intomainfrom
45-missive

Conversation

@justinjdev
Copy link
Copy Markdown
Owner

@justinjdev justinjdev commented Mar 8, 2026

Summary

  • Adds /missive skill that fetches GitHub issue context via gh CLI — title, body, labels, comments — and returns structured packages with branch name suggestions and PR closing keywords (Closes #N)
  • Gandalf automatically detects #N references in quest descriptions and invokes /missive before spawning
  • Quest skill uses missive-provided branch names and includes closing keywords in PRs
  • New issues.autoClose config key (default true) controls whether Closes #N is included

Closes #45

Test plan

  • Invoke /missive 45 standalone — verify it fetches issue context and displays structured output
  • Start a fellowship with quest: implement #45 — verify Gandalf detects the reference, invokes /missive, and passes enriched context to the quest
  • Verify branch name includes issue number (e.g., fellowship/45-create-quests-from-github-issues)
  • Verify PR body includes Closes #45
  • Set issues.autoClose: false in config — verify closing keyword is omitted
  • Test with invalid issue number — verify graceful error handling

🤖 Generated with Claude Code

Summary by CodeRabbit

  • New Features

    • /missive skill provides GitHub issue context (title, body, labels, comments, assignees, milestone) and branch suggestions.
    • Quest spawning auto-detects issue references (e.g., feat: scout-to-quest promotion with research validation #42), spawns one quest per referenced issue, and injects issue context into spawn prompts.
    • New issues.autoClose setting (default true) adds PR-closing keywords when enabled; branch name resolution prefers missive-provided names.
  • Documentation

    • Added user-facing Missive docs, UI listing, and audit-plugin documentation.

justinjdev and others added 8 commits March 8, 2026 16:14
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…ution row

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
@coderabbitai
Copy link
Copy Markdown

coderabbitai Bot commented Mar 8, 2026

Caution

Review failed

Pull request was closed or merged during review

📝 Walkthrough

Walkthrough

Detects GitHub/Jira-style issue references in fellowship spawn requests, invokes a new /missive skill to fetch issue context (title, body, labels, comments), and uses that context to spawn one quest per referenced issue with suggested branch names and optional PR-closing keywords. Adds an issues.autoClose setting.

Changes

Cohort / File(s) Summary
Fellowship skill (behavior & prompts)
plugin/skills/fellowship/SKILL.md, plugin/skills/fellowship/resources/lead-behavior.md, plugin/skills/fellowship/resources/spawn-prompts.md
Detect issue references (e.g., #42, ticket patterns) in spawn text, invoke /missive to fetch per-issue context, spawn one quest per referenced issue, and add {issue_context} placeholder to spawn prompt templates.
Missive skill docs
plugin/skills/missive/SKILL.md
New Missive skill documentation describing parsing of issue IDs, fetching issue data via gh, branch suggestion/slug rules, PR keyword generation, output format, and respect for issues.autoClose.
Quest skill docs
plugin/skills/quest/SKILL.md
Branch-name resolution now prefers missive-supplied names when present; expands {slug}, {ticket}, {author} placeholder rules; documents propagating PR-closing keywords into PR bodies when provided by missive.
Configuration / Settings docs
plugin/commands/settings.md
Adds new config key issues.autoClose (boolean, default true) to settings schema/docs to control whether generated PR bodies include issue-closing keywords.
Site registry
site/src/routes/skills/+page.svelte
Registers the new /missive skill entry in the public skills listing.
Tooling / audit docs
.claude/commands/audit-plugin.md
Adds a new audit-plugin lint workflow doc covering file collection, frontmatter rules, line-count checks, name-collision checks, and reporting format.

Sequence Diagram

sequenceDiagram
    actor User
    participant Fellowship
    participant Detector as Issue Detector
    participant Missive
    participant GitHub as GitHub CLI/API
    participant QuestSystem as Quest Spawner
    participant PRSystem as PR Creator

    User->>Fellowship: "implement issues `#42`, `#51` with fellowship"
    Fellowship->>Detector: extract issue refs
    Detector-->>Fellowship: ["#42","#51"]

    loop per issue
      Fellowship->>Missive: request context for `#N`
      Missive->>GitHub: gh issue view --json `#N`
      GitHub-->>Missive: issue metadata (title, body, labels, comments)
      Missive-->>Fellowship: {issue_context}, branch suggestion, PR keywords
      Fellowship->>QuestSystem: spawn quest with {issue_context} and branch
      QuestSystem-->>Fellowship: quest spawned
    end

    Note right of QuestSystem: on completion
    QuestSystem->>PRSystem: open PR with body (includes PR keywords)
    PRSystem->>GitHub: merge PR -> auto-closes issues if keywords present
Loading

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~20 minutes

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title accurately describes the primary change: introducing a new /missive skill for fetching GitHub issue context.
Linked Issues check ✅ Passed The PR implements GitHub issue context fetching and quest spawning from GitHub issues (#45), covering natural language commands, context pulldown, branch naming, and PR closing keywords.
Out of Scope Changes check ✅ Passed All changes align with issue #45 scope: GitHub detection/invocation, branch naming, PR keywords, and config additions. Jira integration is deferred as documented in the issue open questions.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch 45-missive

Comment @coderabbitai help to get the list of available commands and usage tips.

Copy link
Copy Markdown

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🧹 Nitpick comments (1)
plugin/skills/missive/SKILL.md (1)

79-83: Minor clarification on default branch pattern.

The default branch format here (fellowship/<number>-<slugified-title>, e.g., fellowship/42-fix-auth-bug) differs intentionally from the quest skill's default (fellowship/{slug}) because missive incorporates the issue number for traceability. This is the correct behavior since missive output overrides quest's default branch naming when present, as documented in quest/SKILL.md. The distinction is clear in context but could benefit from a brief note explaining why the issue number is included (traceability back to the GitHub issue).


ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: 6582c78d-13ea-46e6-8fa3-94cfafb707f8

📥 Commits

Reviewing files that changed from the base of the PR and between f510c6e and 165f951.

📒 Files selected for processing (7)
  • plugin/commands/settings.md
  • plugin/skills/fellowship/SKILL.md
  • plugin/skills/fellowship/resources/lead-behavior.md
  • plugin/skills/fellowship/resources/spawn-prompts.md
  • plugin/skills/missive/SKILL.md
  • plugin/skills/quest/SKILL.md
  • site/src/routes/skills/+page.svelte

justinjdev and others added 3 commits March 8, 2026 16:54
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
@justinjdev justinjdev merged commit bcd18d8 into main Mar 8, 2026
1 of 2 checks passed
@justinjdev justinjdev deleted the 45-missive branch March 8, 2026 22:00
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

feat: create quests from GitHub issues and Jira tickets

1 participant