@snarkipus/opencode-beads 0.8.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.
Files changed (48) hide show
  1. package/LICENSE +9 -0
  2. package/README.md +150 -0
  3. package/dist/init/artifacts/beads/SKILL.md +16 -0
  4. package/dist/init/artifacts/beads/references/DEPENDENCIES.md +5 -0
  5. package/dist/init/artifacts/beads/references/ISSUE_CREATION.md +5 -0
  6. package/dist/init/artifacts/beads/references/RESUMABILITY.md +5 -0
  7. package/dist/init/manifest.json +54 -0
  8. package/package.json +82 -0
  9. package/src/init-cli.ts +172 -0
  10. package/src/init.ts +700 -0
  11. package/src/plugin-core.ts +290 -0
  12. package/src/plugin.ts +150 -0
  13. package/src/prime.ts +88 -0
  14. package/src/skill-collision-policy.ts +133 -0
  15. package/src/vendor-adaptations.ts +146 -0
  16. package/src/vendor-provenance.ts +252 -0
  17. package/src/vendor.ts +297 -0
  18. package/vendor/agents/task-agent.md +61 -0
  19. package/vendor/commands/audit.md +28 -0
  20. package/vendor/commands/blocked.md +15 -0
  21. package/vendor/commands/close.md +18 -0
  22. package/vendor/commands/comments.md +30 -0
  23. package/vendor/commands/compact.md +31 -0
  24. package/vendor/commands/create.md +19 -0
  25. package/vendor/commands/decision.md +111 -0
  26. package/vendor/commands/delete.md +32 -0
  27. package/vendor/commands/dep.md +101 -0
  28. package/vendor/commands/epic.md +27 -0
  29. package/vendor/commands/export.md +25 -0
  30. package/vendor/commands/import.md +18 -0
  31. package/vendor/commands/init.md +18 -0
  32. package/vendor/commands/label.md +33 -0
  33. package/vendor/commands/list.md +64 -0
  34. package/vendor/commands/prime.md +10 -0
  35. package/vendor/commands/quickstart.md +13 -0
  36. package/vendor/commands/ready.md +15 -0
  37. package/vendor/commands/rename-prefix.md +24 -0
  38. package/vendor/commands/reopen.md +22 -0
  39. package/vendor/commands/restore.md +27 -0
  40. package/vendor/commands/search.md +103 -0
  41. package/vendor/commands/show.md +17 -0
  42. package/vendor/commands/stats.md +17 -0
  43. package/vendor/commands/sync.md +17 -0
  44. package/vendor/commands/template.md +337 -0
  45. package/vendor/commands/update.md +24 -0
  46. package/vendor/commands/version.md +26 -0
  47. package/vendor/commands/workflow.md +58 -0
  48. package/vendor/manifest.json +168 -0
@@ -0,0 +1,337 @@
1
+ # bd template
2
+
3
+ Manage issue templates for streamlined issue creation.
4
+
5
+ ## Synopsis
6
+
7
+ Templates provide pre-filled structures for common issue types, making it faster to create well-formed issues with consistent formatting.
8
+
9
+ ```bash
10
+ bd template list
11
+ bd template show <template-name>
12
+ bd template create <template-name>
13
+ ```
14
+
15
+ ## Description
16
+
17
+ Templates can be:
18
+ - **Built-in**: Provided by bd (epic, bug, feature)
19
+ - **Custom**: Stored in `.beads/templates/` directory
20
+
21
+ Each template defines default values for:
22
+ - Description structure with placeholders
23
+ - Issue type (bug, feature, task, epic, chore)
24
+ - Priority (0-4)
25
+ - Labels
26
+ - Design notes structure
27
+ - Acceptance criteria structure
28
+
29
+ ## Commands
30
+
31
+ ### list
32
+
33
+ List all available templates (built-in and custom).
34
+
35
+ ```bash
36
+ bd template list
37
+ bd template list --json
38
+ ```
39
+
40
+ **Examples:**
41
+
42
+ ```bash
43
+ $ bd template list
44
+ Built-in Templates:
45
+ epic
46
+ Type: epic, Priority: P1
47
+ Labels: epic
48
+ bug
49
+ Type: bug, Priority: P1
50
+ Labels: bug
51
+ feature
52
+ Type: feature, Priority: P2
53
+ Labels: feature
54
+ ```
55
+
56
+ ### show
57
+
58
+ Show detailed structure of a specific template.
59
+
60
+ ```bash
61
+ bd template show <template-name>
62
+ bd template show <template-name> --json
63
+ ```
64
+
65
+ **Examples:**
66
+
67
+ ```bash
68
+ $ bd template show bug
69
+ Template: bug
70
+ Type: bug
71
+ Priority: P1
72
+ Labels: bug
73
+
74
+ Description:
75
+ ## Summary
76
+
77
+ [Brief description of the bug]
78
+
79
+ ## Steps to Reproduce
80
+ ...
81
+ ```
82
+
83
+ ### create
84
+
85
+ Create a custom template in `.beads/templates/` directory.
86
+
87
+ ```bash
88
+ bd template create <template-name>
89
+ ```
90
+
91
+ This creates a YAML file with default structure that you can edit to customize.
92
+
93
+ **Examples:**
94
+
95
+ ```bash
96
+ $ bd template create performance
97
+ ✓ Created template: .beads/templates/performance.yaml
98
+ Edit the file to customize your template.
99
+
100
+ $ cat .beads/templates/performance.yaml
101
+ name: performance
102
+ description: |-
103
+ [Describe the issue]
104
+
105
+ ## Additional Context
106
+
107
+ [Add relevant details]
108
+ type: task
109
+ priority: 2
110
+ labels: []
111
+ design: '[Design notes]'
112
+ acceptance_criteria: |-
113
+ - [ ] Acceptance criterion 1
114
+ - [ ] Acceptance criterion 2
115
+
116
+ # Edit the template to customize it
117
+ $ vim .beads/templates/performance.yaml
118
+ ```
119
+
120
+ ## Using Templates with `bd create`
121
+
122
+ Use the `--from-template` flag to create issues from templates:
123
+
124
+ ```bash
125
+ bd create --from-template <template-name> "Issue title"
126
+ ```
127
+
128
+ Template values can be overridden with explicit flags:
129
+
130
+ ```bash
131
+ # Use bug template but override priority
132
+ bd create --from-template bug "Login crashes on special chars" -p 0
133
+
134
+ # Use epic template but add extra labels
135
+ bd create --from-template epic "Q4 Infrastructure" -l infrastructure,ops
136
+ ```
137
+
138
+ **Examples:**
139
+
140
+ ```bash
141
+ # Create epic from template
142
+ $ bd create --from-template epic "Phase 3 Features"
143
+ ✓ Created issue: bd-a3f8e9
144
+ Title: Phase 3 Features
145
+ Priority: P1
146
+ Status: open
147
+
148
+ # Create bug report from template
149
+ $ bd create --from-template bug "Auth token validation fails"
150
+ ✓ Created issue: bd-42bc7a
151
+ Title: Auth token validation fails
152
+ Priority: P1
153
+ Status: open
154
+
155
+ # Use custom template
156
+ $ bd template create security-audit
157
+ $ bd create --from-template security-audit "Review authentication flow"
158
+ ```
159
+
160
+ ## Template File Format
161
+
162
+ Templates are YAML files with the following structure:
163
+
164
+ ```yaml
165
+ name: template-name
166
+ description: |
167
+ Multi-line description with placeholders
168
+
169
+ ## Section heading
170
+
171
+ [Placeholder text]
172
+
173
+ type: bug|feature|task|epic|chore
174
+ priority: 0-4
175
+ labels:
176
+ - label1
177
+ - label2
178
+
179
+ design: |
180
+ Design notes structure
181
+
182
+ acceptance_criteria: |
183
+ - [ ] Acceptance criterion 1
184
+ - [ ] Acceptance criterion 2
185
+ ```
186
+
187
+ ## Built-in Templates
188
+
189
+ ### epic
190
+
191
+ For large features composed of multiple issues.
192
+
193
+ **Structure:**
194
+ - Overview and scope
195
+ - Success criteria checklist
196
+ - Background and motivation
197
+ - In-scope / out-of-scope sections
198
+ - Architecture design notes
199
+ - Component breakdown
200
+
201
+ **Defaults:**
202
+ - Type: epic
203
+ - Priority: P1
204
+ - Labels: epic
205
+
206
+ ### bug
207
+
208
+ For bug reports with consistent structure.
209
+
210
+ **Structure:**
211
+ - Summary
212
+ - Steps to reproduce
213
+ - Expected vs actual behavior
214
+ - Environment details
215
+ - Root cause analysis (design)
216
+ - Proposed fix
217
+ - Impact assessment
218
+
219
+ **Defaults:**
220
+ - Type: bug
221
+ - Priority: P1
222
+ - Labels: bug
223
+
224
+ ### feature
225
+
226
+ For feature requests and enhancements.
227
+
228
+ **Structure:**
229
+ - Feature description
230
+ - Motivation and use cases
231
+ - Proposed solution
232
+ - Alternatives considered
233
+ - Technical design
234
+ - API changes
235
+ - Testing strategy
236
+
237
+ **Defaults:**
238
+ - Type: feature
239
+ - Priority: P2
240
+ - Labels: feature
241
+
242
+ ## Custom Templates
243
+
244
+ Custom templates override built-in templates with the same name. This allows you to customize built-in templates for your project.
245
+
246
+ **Priority:**
247
+ 1. Custom templates in `.beads/templates/`
248
+ 2. Built-in templates
249
+
250
+ **Example - Override bug template:**
251
+
252
+ ```bash
253
+ # Create custom bug template
254
+ $ bd template create bug
255
+
256
+ # Edit to add project-specific fields
257
+ $ cat > .beads/templates/bug.yaml << 'EOF'
258
+ name: bug
259
+ description: |
260
+ ## Bug Report
261
+
262
+ **Severity:** [critical|high|medium|low]
263
+ **Component:** [auth|api|frontend|backend]
264
+
265
+ ## Description
266
+ [Describe the bug]
267
+
268
+ ## Reproduction
269
+ 1. Step 1
270
+ 2. Step 2
271
+
272
+ ## Impact
273
+ [Who is affected? How many users?]
274
+
275
+ type: bug
276
+ priority: 0
277
+ labels:
278
+ - bug
279
+ - needs-triage
280
+
281
+ design: |
282
+ ## Investigation Notes
283
+ [Technical details]
284
+
285
+ acceptance_criteria: |
286
+ - [ ] Bug fixed and verified
287
+ - [ ] Tests added
288
+ - [ ] Monitoring added
289
+ EOF
290
+
291
+ # Now 'bd create --from-template bug' uses your custom template
292
+ ```
293
+
294
+ ## JSON Output
295
+
296
+ All template commands support `--json` flag for programmatic use:
297
+
298
+ ```bash
299
+ $ bd template list --json
300
+ [
301
+ {
302
+ "name": "epic",
303
+ "description": "## Overview...",
304
+ "type": "epic",
305
+ "priority": 1,
306
+ "labels": ["epic"],
307
+ "design": "## Architecture...",
308
+ "acceptance_criteria": "- [ ] All child issues..."
309
+ }
310
+ ]
311
+
312
+ $ bd template show bug --json
313
+ {
314
+ "name": "bug",
315
+ "description": "## Summary...",
316
+ "type": "bug",
317
+ "priority": 1,
318
+ "labels": ["bug"],
319
+ "design": "## Root Cause...",
320
+ "acceptance_criteria": "- [ ] Bug no longer..."
321
+ }
322
+ ```
323
+
324
+ ## Best Practices
325
+
326
+ 1. **Use templates for consistency**: Establish team conventions for common issue types
327
+ 2. **Customize built-ins**: Override built-in templates to match your workflow
328
+ 3. **Version control templates**: Commit `.beads/templates/` to share across team
329
+ 4. **Keep templates focused**: Create specific templates (e.g., `performance`, `security-audit`) rather than generic ones
330
+ 5. **Use placeholders**: Mark sections requiring input with `[brackets]` or `TODO`
331
+ 6. **Include checklists**: Use `- [ ]` for actionable items in description and acceptance criteria
332
+
333
+ ## See Also
334
+
335
+ - [bd create](create.md) - Create issues
336
+ - [bd list](list.md) - List issues
337
+ - [README](../README.md) - Main documentation
@@ -0,0 +1,24 @@
1
+ ---
2
+ description: Update an issue's status, priority, or other fields
3
+ argument-hint: [issue-id] [status]
4
+ ---
5
+
6
+ Update a beads issue.
7
+
8
+ If arguments are provided:
9
+ - $1: Issue ID
10
+ - $2: New status (open, in_progress, blocked, closed)
11
+
12
+ If arguments are missing, ask the user for:
13
+ 1. Issue ID
14
+ 2. What to update (status, priority, assignee, title, description)
15
+ 3. New value
16
+
17
+ Use the beads MCP `update` tool to apply the changes. Show the updated issue to confirm the change.
18
+
19
+ **Note:** Comments are managed separately with `bd comments add`. The `update` command is for singular, versioned properties (title, status, priority, etc.), while comments form a discussion thread that's appended to, not updated.
20
+
21
+ Common workflows:
22
+ - Start work: `bd update <id> --claim` (atomic claim + `in_progress`)
23
+ - Mark blocked: Update status to `blocked`
24
+ - Reprioritize: Update priority (0-4)
@@ -0,0 +1,26 @@
1
+ ---
2
+ description: Check beads and plugin versions
3
+ ---
4
+
5
+ Check the installed versions of beads components and verify compatibility.
6
+
7
+ **Note:** The MCP server automatically checks bd CLI version >= 0.9.0 on startup. This command provides detailed version info and update instructions.
8
+
9
+ Use the beads MCP tools to:
10
+ 1. Run `bd version` via bash to get the CLI version
11
+ 2. Check the plugin version (0.9.2)
12
+ 3. Compare versions and report any mismatches
13
+
14
+ Display:
15
+ - bd CLI version (from `bd version`)
16
+ - Plugin version (0.9.2)
17
+ - MCP server version (0.9.2)
18
+ - MCP server status (from `stats` tool or connection test)
19
+ - Compatibility status (✓ compatible or ⚠️ update needed)
20
+
21
+ If versions are mismatched, provide instructions:
22
+ - Update bd CLI: `curl -fsSL https://raw.githubusercontent.com/gastownhall/beads/main/scripts/install.sh | bash`
23
+ - Update plugin: `/plugin update beads`
24
+ - Restart Claude Code after updating
25
+
26
+ Suggest checking for updates if the user is on an older version.
@@ -0,0 +1,58 @@
1
+ ---
2
+ description: Show the AI-supervised issue workflow guide
3
+ ---
4
+
5
+ Display the beads workflow for AI agents and developers.
6
+
7
+ # Beads Workflow
8
+
9
+ Beads is an issue tracker designed for AI-supervised coding workflows. Here's how to use it effectively:
10
+
11
+ ## 1. Find Ready Work
12
+ Use `/beads:ready` or the `ready` MCP tool to see tasks with no blockers.
13
+
14
+ ## 2. Claim Your Task
15
+ Claim the issue atomically (assignee + `in_progress` in one step):
16
+ - Via command: `/beads:update <id> --claim`
17
+ - Via MCP tool: `claim` with `issue_id: "<id>"`
18
+
19
+ ## 3. Work on It
20
+ Implement, test, and document the feature or fix.
21
+
22
+ ## 4. Discover New Work
23
+ As you work, you'll often find bugs, TODOs, or related work:
24
+ - Create issues: `/beads:create` or `create` MCP tool
25
+ - Link them: Use `dep` MCP tool with `type: "discovered-from"`
26
+ - This maintains context and work history
27
+
28
+ ## 5. Complete the Task
29
+ Close the issue when done:
30
+ - Via command: `/beads:close <id> "Completed: <summary>"`
31
+ - Via MCP tool: `close` with reason
32
+
33
+ ## 6. Check What's Unblocked
34
+ After closing, check if other work became ready:
35
+ - Use `/beads:ready` to see newly unblocked tasks
36
+ - Start the cycle again
37
+
38
+ ## Tips
39
+ - **Priority levels**: 0=critical, 1=high, 2=medium, 3=low, 4=backlog
40
+ - **Issue types**: bug, feature, task, epic, chore
41
+ - **Dependencies**: Use `blocks` for hard dependencies, `related` for soft links
42
+ - **Auto-sync**: Changes are stored in Dolt and synced via `bd dolt push` / `bd dolt pull`
43
+
44
+ ## Available Commands
45
+ - `/beads:ready` - Find unblocked work
46
+ - `/beads:create` - Create new issue
47
+ - `/beads:show` - Show issue details
48
+ - `/beads:update` - Update issue
49
+ - `/beads:close` - Close issue
50
+ - `/beads:workflow` - Show this guide (you are here!)
51
+
52
+ ## MCP Tools Available
53
+ Use these via the beads MCP server:
54
+ - `ready`, `list`, `show`, `create`, `claim`, `update`, `close`
55
+ - `dep` (manage dependencies), `blocked`, `stats`
56
+ - `init` (initialize bd in a project)
57
+
58
+ For more details, see the beads README at: https://github.com/gastownhall/beads
@@ -0,0 +1,168 @@
1
+ {
2
+ "schemaVersion": 1,
3
+ "repository": "https://github.com/gastownhall/beads.git",
4
+ "tag": "v1.1.0",
5
+ "commit": "8e4e59d39f3459a43cf21a3236a13eca4dd874f7",
6
+ "sources": [
7
+ {
8
+ "source": "plugins/beads/agents/task-agent.md",
9
+ "target": "agents/task-agent.md"
10
+ },
11
+ {
12
+ "source": "plugins/beads/skills/beads/commands",
13
+ "target": "commands"
14
+ }
15
+ ],
16
+ "files": [
17
+ {
18
+ "path": "agents/task-agent.md",
19
+ "bytes": 1971,
20
+ "sha256": "d5dd212e4f6324cf9f979eb8ed96ee094174c3e0cda8e217e55643244a7f4a79"
21
+ },
22
+ {
23
+ "path": "commands/audit.md",
24
+ "bytes": 955,
25
+ "sha256": "8a7f942b3b94576f8503cba282c9144953991ab2a76926323ab6ee895d33b9c5"
26
+ },
27
+ {
28
+ "path": "commands/blocked.md",
29
+ "bytes": 561,
30
+ "sha256": "14822b644bb93d9f038107aaccf1eb5112e3e0b1cb0b9c013cb6dffbfe570335"
31
+ },
32
+ {
33
+ "path": "commands/close.md",
34
+ "bytes": 583,
35
+ "sha256": "413946f6210b743398e1510a9806ac1c51c6d6e994d020e7e122062cc69ffd97"
36
+ },
37
+ {
38
+ "path": "commands/comments.md",
39
+ "bytes": 965,
40
+ "sha256": "9680911b297bdf24cb943c5dd7f71812cd60e0f9ef52a57bf1832110e02d5efc"
41
+ },
42
+ {
43
+ "path": "commands/compact.md",
44
+ "bytes": 1081,
45
+ "sha256": "0fc6810f4e4da2d521d747c50c73e3a388bf16a94dc47ddf241a52826071d766"
46
+ },
47
+ {
48
+ "path": "commands/create.md",
49
+ "bytes": 649,
50
+ "sha256": "f70104bd3792e5f005d0d7f2901c2b56da7f0136bf279f6d36e36d89b553bb93"
51
+ },
52
+ {
53
+ "path": "commands/decision.md",
54
+ "bytes": 2662,
55
+ "sha256": "d62efc7e0d0bcd3a080e825b315acbf42c024d937382d8b8cf83b47016d4f908"
56
+ },
57
+ {
58
+ "path": "commands/delete.md",
59
+ "bytes": 959,
60
+ "sha256": "90424c81aac3d2b12379820aa0b6f5e37a60a0da33474d28c66e0422b8361532"
61
+ },
62
+ {
63
+ "path": "commands/dep.md",
64
+ "bytes": 3408,
65
+ "sha256": "2679ab80bfade1f6d4769ecef2575b196592c919cc36912e9fa8f29ab2a7d9f5"
66
+ },
67
+ {
68
+ "path": "commands/epic.md",
69
+ "bytes": 858,
70
+ "sha256": "b31ffcfc2a423684f153042a0cb67b2d0472b63da594691b3c2656ed00cf2d6c"
71
+ },
72
+ {
73
+ "path": "commands/export.md",
74
+ "bytes": 789,
75
+ "sha256": "dc021e36c11c3ad2724f3097c6f461221d77e5bd26296e6db65b8bd5f5190be0"
76
+ },
77
+ {
78
+ "path": "commands/import.md",
79
+ "bytes": 401,
80
+ "sha256": "4f2b270a3f55d5b48f615864c07408bec3b339cd9ccab581e1e3c7c6ecd27e0e"
81
+ },
82
+ {
83
+ "path": "commands/init.md",
84
+ "bytes": 751,
85
+ "sha256": "68413502bcb73f25cbf7505e3951967bffb8e125f6647e98018588558171abae"
86
+ },
87
+ {
88
+ "path": "commands/label.md",
89
+ "bytes": 896,
90
+ "sha256": "82b702f10b31caf1c538119a5ae70603c88a7534de33bec2662b67a039a45572"
91
+ },
92
+ {
93
+ "path": "commands/list.md",
94
+ "bytes": 2626,
95
+ "sha256": "a986fdc0400c5e637f9e2103775f6b0c0297e48f96b0d2d1f8ecd15f14b7c524"
96
+ },
97
+ {
98
+ "path": "commands/prime.md",
99
+ "bytes": 363,
100
+ "sha256": "4b0559e792c2ea8ead359954896eca8518cd311303637b2e1c542e65b9d960b8"
101
+ },
102
+ {
103
+ "path": "commands/quickstart.md",
104
+ "bytes": 469,
105
+ "sha256": "ee1d55aad65e7f5d293a394517964719b1bff1e4d7c92ccf55e2125608473bee"
106
+ },
107
+ {
108
+ "path": "commands/ready.md",
109
+ "bytes": 568,
110
+ "sha256": "48a42cab07b8580b0436bbddf5dd409333ff3b402bb4fee7af39b3aa3b078856"
111
+ },
112
+ {
113
+ "path": "commands/rename-prefix.md",
114
+ "bytes": 599,
115
+ "sha256": "0315a4e4c8ddfd3ec6006f30f80de69c25d1cf3cab43d6bfa3d657b551437b60"
116
+ },
117
+ {
118
+ "path": "commands/reopen.md",
119
+ "bytes": 593,
120
+ "sha256": "db2927072ffbc3dbde644a123f877e4cb9a46df87c1252ab1256f8fa1f75a41e"
121
+ },
122
+ {
123
+ "path": "commands/restore.md",
124
+ "bytes": 712,
125
+ "sha256": "8cda7ebcaa572572cf55e4f1a2b15e028a01f7c373842c941c7f6fabbcecb4d2"
126
+ },
127
+ {
128
+ "path": "commands/search.md",
129
+ "bytes": 3188,
130
+ "sha256": "5d07fd4bd26bd90a31f2d0c58b8e1245234f3a897c2d2fe326b5f372ea2a9ecd"
131
+ },
132
+ {
133
+ "path": "commands/show.md",
134
+ "bytes": 561,
135
+ "sha256": "e170d3d532954aeea5c20eb2b1ea96625f17069d2cd6f9ff81317c05c13dda80"
136
+ },
137
+ {
138
+ "path": "commands/stats.md",
139
+ "bytes": 617,
140
+ "sha256": "f4da8a61fb7922ece1da727f7cfe2e020def6deed7cb2ce807cc6ab6c6d02aca"
141
+ },
142
+ {
143
+ "path": "commands/sync.md",
144
+ "bytes": 493,
145
+ "sha256": "7ac9938d0e5ec0514edefc240971b4a0aade61cffca75efefac4011117d53ebb"
146
+ },
147
+ {
148
+ "path": "commands/template.md",
149
+ "bytes": 6641,
150
+ "sha256": "dd8865a9556ac67c49e83b7db9ad085e3e1ebf2e187fd6c407a0e116dbfb712b"
151
+ },
152
+ {
153
+ "path": "commands/update.md",
154
+ "bytes": 868,
155
+ "sha256": "ff12a4ac6a686a11e2a029aac7070829051662027a868794717b1d3fee255d66"
156
+ },
157
+ {
158
+ "path": "commands/version.md",
159
+ "bytes": 975,
160
+ "sha256": "f994ab7afb0aef464fe0e77e7aad522d5f2d1558415d4ba63aede43a7411a075"
161
+ },
162
+ {
163
+ "path": "commands/workflow.md",
164
+ "bytes": 1987,
165
+ "sha256": "23ce9fbfe8acf49df1b4ddba8f908f4a3ef724c6d9203358c180d019e683978c"
166
+ }
167
+ ]
168
+ }