MicroFish/.claude/onboarding/step3_planning/01_ticket_sync.md

3.0 KiB

Step 3 — Ticket Sync (GitHub Issues + gh CLI)

Date: 2026-05-06

Tooling Decision (vs. the original Notion prompt)

The Notion prompt is Jira/MCP-oriented. For this project we use:

  • Issue tracker: GitHub Issues at https://github.com/salestech-group/MiroFish
  • Transport: the gh CLI (already installed and authenticated as dseemann).
  • No Atlassian MCP usage in these commandsgh is faster, scoped by token, and matches the rest of the team's Git workflow.

Equivalences vs. the prompt:

  • "board.md".ticket/repo.md (stores owner/name).
  • "IN ARBEIT" transition → GitHub doesn't have a built-in in-progress state; we approximate it with self-assignment + an in-progress label (graceful fallback if the label doesn't exist).

What Was Created

.ticket/

  • Directory created. Most contents are gitignored — only repo.md and .gitkeep are tracked, so the local cache of in-progress tickets stays out of the repo.
  • .ticket/repo.md — declares salestech-group/MiroFish as the target repo.
  • .gitignore — added .ticket/* with negations for repo.md and .gitkeep.

.claude/commands/ticket.md

Slash command: /ticket <issue-number>

  • Reads the repo from .ticket/repo.md.
  • gh issue view --json … to fetch the issue.
  • Self-assigns (gh issue edit --add-assignee @me).
  • Tries to add the in-progress label; silently skips if the label doesn't exist on the repo.
  • Snapshots the issue (frontmatter + full body) to .ticket/<n>.md so later planning / implementation steps have the description without re-fetching.

.claude/commands/ticket-list.md

Slash command: /ticket-list (interactive)

  • Reads the repo from .ticket/repo.md.
  • Asks the user for filters before running anything:
    • include closed
    • status (todo / in-progress / all open)
    • assigned to me only
    • milestone
    • labels
  • Builds a single gh issue list invocation from the answers.
  • For "no assignee" filtering, post-processes the JSON locally because gh has no --no-assignee flag.
  • Renders a compact markdown table; ends with a hint to use /ticket <n> to start work.

.claude/settings.json

  • Allow-listed gh issue view/list/edit/comment, gh repo view, gh pr view/list, gh auth status so the slash commands run without permission prompts.

Verification

  • gh issue list --repo salestech-group/MiroFish --state open returned the open issue list (issue #1 currently open).
  • settings.json parses as valid JSON.
  • gh auth status confirmed (token: ghp_…, scopes incl. repo).

Limitations / Notes

  • "In progress" semantics on GitHub Issues is convention-driven. If the team adopts a GitHub Project (v2) with a Status field, update the /ticket command to call gh project item-edit … instead of the label/assignee approximation.
  • Atlassian MCP setup from Step 0 is unused here. Leave it configured for any cross-project Jira lookups.

Next

  • Step 4: Planning (MANDATORY) — /plan command, persistence, hooks.