From f5ef23b2afc914458f2a88ff8a54522bdf3c475d Mon Sep 17 00:00:00 2001 From: John Ogle Date: Sat, 10 Jan 2026 12:56:33 -0800 Subject: [PATCH] feat(skills): Add import_gitea_issues skill for bead creation Add a Claude Code skill that imports open Gitea issues as beads: - Uses 'tea issues' to list open issues - Checks existing beads to avoid duplicates - Detects issue type (bug/feature/task) from content - Creates beads with P2 priority and Gitea issue URL in notes - Reports summary of imported vs skipped issues Implements bead: nixos-configs-tdf --- .claude/commands/import_gitea_issues.md | 130 ++++++++++++++++++++++++ 1 file changed, 130 insertions(+) create mode 100644 .claude/commands/import_gitea_issues.md diff --git a/.claude/commands/import_gitea_issues.md b/.claude/commands/import_gitea_issues.md new file mode 100644 index 0000000..d6214b6 --- /dev/null +++ b/.claude/commands/import_gitea_issues.md @@ -0,0 +1,130 @@ +--- +description: Import open Gitea issues as beads, skipping already-imported ones +--- + +# Import Gitea Issues as Beads + +This skill imports open Gitea issues as beads, checking for duplicates to avoid re-importing already tracked issues. + +## Prerequisites + +- `tea` CLI must be installed and configured for the repository +- `bd` (beads) CLI must be installed +- Must be in a git repository with a Gitea/Forgejo remote + +## Workflow + +### Step 1: Get open Gitea issues + +List all open issues using `tea`: + +```bash +tea issues +``` + +This returns a table with columns: INDEX, TITLE, LABELS, MILESTONE + +### Step 2: Get existing beads + +List all current beads to check what's already imported: + +```bash +bd list +``` + +Also check bead notes for issue URLs to identify imports: + +```bash +bd list --json | jq -r '.[] | select(.notes != null) | .notes' | grep -oP 'issues/\K\d+' +``` + +### Step 3: Check for already-linked PRs + +Check if any open PRs reference beads (skip these issues as they're being worked on): + +```bash +tea pr list +``` + +Look for PRs with: +- Bead ID in title: `[nixos-configs-xxx]` +- Bead reference in body: `Implements bead:` or `Bead ID:` + +### Step 4: For each untracked issue, create a bead + +For each issue not already tracked: + +1. **Get full issue details**: + ```bash + tea issue [ISSUE_NUMBER] + ``` + +2. **Determine bead type** based on issue content: + - "bug" - if issue mentions bug, error, broken, fix, crash + - "feature" - if issue mentions feature, add, new, enhancement + - "task" - default for other issues + +3. **Create the bead**: + ```bash + bd add "[ISSUE_TITLE]" \ + --type=[TYPE] \ + --priority=P2 \ + --notes="Gitea issue: [ISSUE_URL] + + Original issue description: + [ISSUE_BODY]" + ``` + + Note: The `--notes` flag accepts multi-line content. + +### Step 5: Report results + +Present a summary: + +``` +## Gitea Issues Import Summary + +### Imported as Beads +| Issue | Title | Bead ID | Type | +|-------|-------|---------|------| +| #5 | Add dark mode | nixos-configs-abc | feature | +| #3 | Config broken on reboot | nixos-configs-def | bug | + +### Skipped (Already Tracked) +| Issue | Title | Reason | +|-------|-------|--------| +| #4 | Update flake | Existing bead: nixos-configs-xyz | +| #2 | Refactor roles | PR #7 references bead | + +### Skipped (Other) +| Issue | Title | Reason | +|-------|-------|--------| +| #1 | Discussion: future plans | No actionable work | +``` + +## Type Detection Heuristics + +Keywords to detect issue type: + +**Bug indicators** (case-insensitive): +- bug, error, broken, fix, crash, fail, issue, problem, wrong, not working + +**Feature indicators** (case-insensitive): +- feature, add, new, enhancement, implement, support, request, want, would be nice + +**Task** (default): +- Anything not matching bug or feature patterns + +## Error Handling + +- **tea not configured**: Report error and exit +- **bd not available**: Report error and exit +- **Issue already has bead**: Skip and report in summary +- **Issue is a PR**: Skip (tea shows PRs and issues separately) + +## Notes + +- Default priority is P2; adjust manually after import if needed +- Issue labels from Gitea are not automatically mapped to bead tags +- Run this periodically to catch new issues +- After import, use `bd ready` to see which beads can be worked on