opencode-beads 0.4.0 → 0.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -26,7 +26,7 @@ Optionally, pin to a specific version for stability:
26
26
 
27
27
  ```json
28
28
  {
29
- "plugin": ["opencode-beads@0.4.0"]
29
+ "plugin": ["opencode-beads@0.5.0"]
30
30
  }
31
31
  ```
32
32
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "opencode-beads",
3
- "version": "0.4.0",
3
+ "version": "0.5.0",
4
4
  "type": "module",
5
5
  "description": "A plugin for OpenCode that provides integration with the beads issue tracker.",
6
6
  "author": "Josh Thomas <josh@joshthomas.dev>",
@@ -5,7 +5,7 @@ argument-hint: [title] [type] [priority]
5
5
 
6
6
  Create a new beads issue. If arguments are provided:
7
7
  - $1: Issue title
8
- - $2: Issue type (bug, feature, task, epic, chore)
8
+ - $2: Issue type (bug, feature, task, epic, chore, decision)
9
9
  - $3: Priority (0-4, where 0=critical, 4=backlog)
10
10
 
11
11
  If arguments are missing, ask the user for:
@@ -0,0 +1,111 @@
1
+ ---
2
+ description: Record, list, and manage project decisions with rationale tracking
3
+ argument-hint: record|list|show|supersede
4
+ ---
5
+
6
+ Record and track project decisions as beads issues with structured rationale, alternatives considered, and links to affected work.
7
+
8
+ Decisions use `--type decision`. The description field holds the structured decision record.
9
+
10
+ ## Record a Decision
11
+
12
+ When the user wants to record a decision (or you invoke `bd decision record`):
13
+
14
+ 1. Gather the following (ask if not provided):
15
+ - **Title**: Short summary of what was decided (required)
16
+ - **Rationale**: Why this was chosen (required)
17
+ - **Alternatives**: What else was considered (optional but encouraged)
18
+ - **Affects**: Issue IDs this decision impacts (optional)
19
+ - **Priority**: How important (default P2)
20
+
21
+ 2. Create the issue with structured description:
22
+
23
+ ```bash
24
+ bd create "<title>" --type decision \
25
+ --description "$(cat <<'EOF'
26
+ ## Decision
27
+
28
+ <one-sentence summary of what was decided>
29
+
30
+ ## Rationale
31
+
32
+ <why this was chosen>
33
+
34
+ ## Alternatives Considered
35
+
36
+ - **<alt 1>**: <why rejected>
37
+ - **<alt 2>**: <why rejected>
38
+
39
+ ## Affects
40
+
41
+ - <issue IDs or area descriptions>
42
+ EOF
43
+ )"
44
+ ```
45
+
46
+ 3. If `--affects` issue IDs were provided, link them:
47
+ ```bash
48
+ bd dep add <decision-id> <affected-id> --type related
49
+ ```
50
+
51
+ 4. Show the created decision to the user.
52
+
53
+ ## List Decisions
54
+
55
+ ```bash
56
+ bd list --type decision
57
+ ```
58
+
59
+ To see all decisions including closed/superseded:
60
+ ```bash
61
+ bd list --type decision --all
62
+ ```
63
+
64
+ ## Show a Decision
65
+
66
+ ```bash
67
+ bd show <decision-id>
68
+ ```
69
+
70
+ Include comments for discussion history:
71
+ ```bash
72
+ bd comments <decision-id>
73
+ ```
74
+
75
+ ## Supersede a Decision
76
+
77
+ When a decision is replaced by a new one:
78
+
79
+ 1. Record the new decision (as above)
80
+ 2. Link the new decision to the old one:
81
+ ```bash
82
+ bd dep add <new-id> <old-id> --type related
83
+ ```
84
+ 3. Add a comment on the old decision:
85
+ ```bash
86
+ bd comments add <old-id> "Superseded by <new-id>: <brief reason>"
87
+ ```
88
+ 4. Close the old decision:
89
+ ```bash
90
+ bd close <old-id> --reason "Superseded by <new-id>"
91
+ ```
92
+
93
+ ## Add Context to an Existing Decision
94
+
95
+ Use comments to append discussion, implementation notes, or revisit rationale:
96
+ ```bash
97
+ bd comments add <decision-id> "Implementation note: ..."
98
+ ```
99
+
100
+ ## Search Decisions
101
+
102
+ ```bash
103
+ bd search "keyword" --type decision
104
+ ```
105
+
106
+ ## Conventions
107
+
108
+ - **Status**: `open` = active decision, `closed` = superseded or reversed
109
+ - **Description format**: Use the structured template above for consistency
110
+ - **Linking**: Use `related` dependency type to connect decisions to affected issues
111
+ - **Labels**: Use labels for categorizing decisions (e.g., `architecture`, `tooling`, `process`)
@@ -9,7 +9,7 @@ List beads issues with optional filtering.
9
9
 
10
10
  - **--status, -s**: Filter by status (open, in_progress, blocked, closed)
11
11
  - **--priority, -p**: Filter by priority (0-4: 0=critical, 1=high, 2=medium, 3=low, 4=backlog)
12
- - **--type, -t**: Filter by type (bug, feature, task, epic, chore)
12
+ - **--type, -t**: Filter by type (bug, feature, task, epic, chore, decision)
13
13
  - **--assignee, -a**: Filter by assignee
14
14
  - **--label, -l**: Filter by labels (comma-separated, must have ALL labels)
15
15
  - **--label-any**: Filter by labels (OR semantics, must have AT LEAST ONE)
@@ -29,7 +29,7 @@ Unlike `bd list`, which requires you to specify which field to search, `bd searc
29
29
 
30
30
  - **--status, -s**: Filter by status (open, in_progress, blocked, closed)
31
31
  - **--assignee, -a**: Filter by assignee
32
- - **--type, -t**: Filter by type (bug, feature, task, epic, chore)
32
+ - **--type, -t**: Filter by type (bug, feature, task, epic, chore, decision)
33
33
  - **--label, -l**: Filter by labels (must have ALL specified labels)
34
34
  - **--label-any**: Filter by labels (must have AT LEAST ONE)
35
35
  - **--limit, -n**: Limit number of results (default: 50)