@orderful/droid 0.44.0 → 0.45.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 (100) hide show
  1. package/.github/workflows/claude-issue-agent.yml +238 -0
  2. package/CHANGELOG.md +28 -0
  3. package/dist/bin/droid.js +53 -23
  4. package/dist/commands/tui.d.ts.map +1 -1
  5. package/dist/integrations/granola/index.d.ts +6 -0
  6. package/dist/integrations/granola/index.d.ts.map +1 -0
  7. package/dist/integrations/granola/index.ts +28 -0
  8. package/dist/tools/brain/.claude-plugin/plugin.json +1 -1
  9. package/dist/tools/brain/TOOL.yaml +1 -1
  10. package/dist/tools/brain/skills/brain/SKILL.md +6 -0
  11. package/dist/tools/coach/.claude-plugin/plugin.json +1 -1
  12. package/dist/tools/coach/TOOL.yaml +5 -1
  13. package/dist/tools/coach/skills/coach/SKILL.md +31 -5
  14. package/dist/tools/code-review/.claude-plugin/plugin.json +1 -1
  15. package/dist/tools/code-review/TOOL.yaml +1 -1
  16. package/dist/tools/code-review/skills/code-review/SKILL.md +6 -0
  17. package/dist/tools/codex/.claude-plugin/plugin.json +1 -1
  18. package/dist/tools/codex/TOOL.yaml +1 -1
  19. package/dist/tools/codex/skills/codex/SKILL.md +6 -0
  20. package/dist/tools/comments/.claude-plugin/plugin.json +1 -1
  21. package/dist/tools/comments/TOOL.yaml +1 -1
  22. package/dist/tools/comments/skills/comments/SKILL.md +6 -0
  23. package/dist/tools/meeting/.claude-plugin/plugin.json +1 -1
  24. package/dist/tools/meeting/TOOL.yaml +1 -1
  25. package/dist/tools/meeting/skills/meeting/SKILL.md +6 -0
  26. package/dist/tools/plan/.claude-plugin/plugin.json +1 -1
  27. package/dist/tools/plan/TOOL.yaml +1 -1
  28. package/dist/tools/plan/skills/plan/SKILL.md +6 -0
  29. package/dist/tools/project/.claude-plugin/plugin.json +1 -1
  30. package/dist/tools/project/TOOL.yaml +1 -1
  31. package/dist/tools/project/skills/project/SKILL.md +6 -0
  32. package/dist/tools/project/skills/project/references/loading.md +1 -0
  33. package/dist/tools/release/.claude-plugin/plugin.json +1 -1
  34. package/dist/tools/release/TOOL.yaml +2 -2
  35. package/dist/tools/release/commands/release.md +16 -8
  36. package/dist/tools/release/skills/release/SKILL.md +22 -9
  37. package/dist/tools/release/skills/release/references/templates.md +69 -4
  38. package/dist/tools/release/skills/release/references/workflows.md +149 -13
  39. package/dist/tools/share/.claude-plugin/plugin.json +1 -1
  40. package/dist/tools/share/TOOL.yaml +1 -1
  41. package/dist/tools/share/skills/share/SKILL.md +6 -0
  42. package/dist/tools/status-update/.claude-plugin/plugin.json +1 -1
  43. package/dist/tools/status-update/TOOL.yaml +1 -1
  44. package/dist/tools/status-update/skills/status-update/SKILL.md +6 -0
  45. package/dist/tools/tech-design/.claude-plugin/plugin.json +1 -1
  46. package/dist/tools/tech-design/TOOL.yaml +1 -1
  47. package/dist/tools/tech-design/skills/tech-design/SKILL.md +6 -0
  48. package/dist/tools/wrapup/.claude-plugin/plugin.json +1 -1
  49. package/dist/tools/wrapup/TOOL.yaml +6 -2
  50. package/dist/tools/wrapup/skills/wrapup/SKILL.md +25 -2
  51. package/dist/tools/wrapup/skills/wrapup/references/output-schema.md +5 -3
  52. package/dist/tools/wrapup/skills/wrapup/references/subagent-prompts.md +54 -13
  53. package/package.json +1 -1
  54. package/src/commands/tui.tsx +11 -0
  55. package/src/integrations/granola/index.ts +28 -0
  56. package/src/tools/brain/.claude-plugin/plugin.json +1 -1
  57. package/src/tools/brain/TOOL.yaml +1 -1
  58. package/src/tools/brain/skills/brain/SKILL.md +6 -0
  59. package/src/tools/coach/.claude-plugin/plugin.json +1 -1
  60. package/src/tools/coach/TOOL.yaml +5 -1
  61. package/src/tools/coach/skills/coach/SKILL.md +31 -5
  62. package/src/tools/code-review/.claude-plugin/plugin.json +1 -1
  63. package/src/tools/code-review/TOOL.yaml +1 -1
  64. package/src/tools/code-review/skills/code-review/SKILL.md +6 -0
  65. package/src/tools/codex/.claude-plugin/plugin.json +1 -1
  66. package/src/tools/codex/TOOL.yaml +1 -1
  67. package/src/tools/codex/skills/codex/SKILL.md +6 -0
  68. package/src/tools/comments/.claude-plugin/plugin.json +1 -1
  69. package/src/tools/comments/TOOL.yaml +1 -1
  70. package/src/tools/comments/skills/comments/SKILL.md +6 -0
  71. package/src/tools/meeting/.claude-plugin/plugin.json +1 -1
  72. package/src/tools/meeting/TOOL.yaml +1 -1
  73. package/src/tools/meeting/skills/meeting/SKILL.md +6 -0
  74. package/src/tools/plan/.claude-plugin/plugin.json +1 -1
  75. package/src/tools/plan/TOOL.yaml +1 -1
  76. package/src/tools/plan/skills/plan/SKILL.md +6 -0
  77. package/src/tools/project/.claude-plugin/plugin.json +1 -1
  78. package/src/tools/project/TOOL.yaml +1 -1
  79. package/src/tools/project/skills/project/SKILL.md +6 -0
  80. package/src/tools/project/skills/project/references/loading.md +1 -0
  81. package/src/tools/release/.claude-plugin/plugin.json +1 -1
  82. package/src/tools/release/TOOL.yaml +2 -2
  83. package/src/tools/release/commands/release.md +16 -8
  84. package/src/tools/release/skills/release/SKILL.md +22 -9
  85. package/src/tools/release/skills/release/references/templates.md +69 -4
  86. package/src/tools/release/skills/release/references/workflows.md +149 -13
  87. package/src/tools/share/.claude-plugin/plugin.json +1 -1
  88. package/src/tools/share/TOOL.yaml +1 -1
  89. package/src/tools/share/skills/share/SKILL.md +6 -0
  90. package/src/tools/status-update/.claude-plugin/plugin.json +1 -1
  91. package/src/tools/status-update/TOOL.yaml +1 -1
  92. package/src/tools/status-update/skills/status-update/SKILL.md +6 -0
  93. package/src/tools/tech-design/.claude-plugin/plugin.json +1 -1
  94. package/src/tools/tech-design/TOOL.yaml +1 -1
  95. package/src/tools/tech-design/skills/tech-design/SKILL.md +6 -0
  96. package/src/tools/wrapup/.claude-plugin/plugin.json +1 -1
  97. package/src/tools/wrapup/TOOL.yaml +6 -2
  98. package/src/tools/wrapup/skills/wrapup/SKILL.md +25 -2
  99. package/src/tools/wrapup/skills/wrapup/references/output-schema.md +5 -3
  100. package/src/tools/wrapup/skills/wrapup/references/subagent-prompts.md +54 -13
@@ -49,10 +49,11 @@ plan → AI scaffolds → human implements → AI coaches → iterate → ship
49
49
 
50
50
  ## Configuration
51
51
 
52
- | Setting | Default | Description |
53
- | -------------------- | -------- | ------------------------------------------------------- |
54
- | `scaffold_verbosity` | `medium` | How detailed hints are: `minimal`, `medium`, `detailed` |
55
- | `override` | (none) | User-defined behaviour overrides |
52
+ | Setting | Default | Description |
53
+ | --------------------- | ---------- | ------------------------------------------------------------------------------------------------- |
54
+ | `scaffold_verbosity` | `medium` | How detailed hints are: `minimal`, `medium`, `detailed` |
55
+ | `coaching_intensity` | `moderate` | How Socratic interactions are: `light` (1-2 questions, concise), `moderate` (2-3 questions), `deep` (thorough Socratic exploration) |
56
+ | `override` | (none) | User-defined behaviour overrides |
56
57
 
57
58
  **Overrides:** This skill supports user-defined overrides. See `/droid` skill § Skill Overrides.
58
59
 
@@ -62,6 +63,26 @@ plan → AI scaffolds → human implements → AI coaches → iterate → ship
62
63
 
63
64
  Run `droid config --get tools.coach` to get the merged configuration.
64
65
 
66
+ ## Custom Instructions
67
+
68
+ Any command accepts a ` -- {instruction}` suffix. Split on the **first** ` -- ` (space-dash-dash-space): left is the command and its args, right is additional context or instruction to carry through the entire execution.
69
+
70
+ Example: `/coach plan add auth endpoint -- treat me as a junior learning OAuth for the first time`
71
+
72
+ ---
73
+
74
+ ## Output Discipline
75
+
76
+ Before each coaching interaction, read `coaching_intensity` from config (`droid config --get tools.coach`):
77
+
78
+ | Intensity | Questions per turn | Response length |
79
+ | ---------- | ------------------ | --------------------------------------- |
80
+ | `light` | 1–2 targeted | Concise — one short paragraph per point |
81
+ | `moderate` | 2–3 focused | Brief — 3–5 points, context per question (default) |
82
+ | `deep` | 3+ | Thorough — current behaviour |
83
+
84
+ **Regardless of intensity:** Prefer one sharp, well-framed question over three surface-level ones. Limit each response to 3–5 focused points rather than exhaustive lists. Quality of challenge over quantity of questions.
85
+
65
86
  ---
66
87
 
67
88
  ## /coach plan
@@ -70,7 +91,10 @@ Run `droid config --get tools.coach` to get the merged configuration.
70
91
 
71
92
  **Behaviour:**
72
93
 
73
- - Ratio: ~40% proposing, ~60% questioning
94
+ - Proposing/questioning ratio by intensity:
95
+ - `light` — ~60% proposing, ~40% questioning (lead with concrete guidance)
96
+ - `moderate` — ~50% proposing, ~50% questioning (default)
97
+ - `deep` — ~40% proposing, ~60% questioning (current Socratic-heavy behaviour)
74
98
  - Ask questions that probe requirements, edge cases, and design tradeoffs
75
99
  - Propose structure but let human refine
76
100
  - Offer to create a brain doc: "Would you like me to create a brain doc to capture this plan?"
@@ -135,6 +159,7 @@ Run `droid config --get tools.coach` to get the merged configuration.
135
159
  - Add inline `// @{user} {question}` comments using the comments skill pattern
136
160
  - Questions should probe reasoning, not just confirm choices
137
161
  - Focus on: design decisions, edge cases, potential issues, alternatives
162
+ - Question density follows `coaching_intensity`: `light` → 1–2 comments per changed block; `moderate` → 2–3; `deep` → as many as warranted
138
163
 
139
164
  **Example inline comments:**
140
165
 
@@ -179,6 +204,7 @@ Run `droid config --get tools.coach` to get the merged configuration.
179
204
 
180
205
  - Identify alternative approaches the human might not have considered
181
206
  - Use Socratic prompting to guide discovery
207
+ - Question density follows `coaching_intensity`: `light` → 1–2 sharp challenges; `moderate` → 2–3 challenges; `deep` → thorough exploration
182
208
  - Ask questions like:
183
209
  - "What if I told you there's a potential issue here? Can you find it?"
184
210
  - "I can think of another way to implement this. What might it be?"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "droid-code-review",
3
- "version": "0.2.3",
3
+ "version": "0.2.4",
4
4
  "description": "Comprehensive code review using specialized agents. Reviews PRs, staged changes, branches, or specific files with confidence scoring.",
5
5
  "author": {
6
6
  "name": "Orderful",
@@ -1,6 +1,6 @@
1
1
  name: code-review
2
2
  description: "Comprehensive code review using specialized agents. Reviews PRs, staged changes, branches, or specific files with confidence scoring."
3
- version: 0.2.3
3
+ version: 0.2.4
4
4
  status: alpha
5
5
 
6
6
  includes:
@@ -18,6 +18,12 @@ Code-review has no configuration of its own. Optional integration with other too
18
18
 
19
19
  **Overrides:** This skill supports user-defined overrides. See `/droid` skill § Skill Overrides.
20
20
 
21
+ ## Custom Instructions
22
+
23
+ Any command accepts a ` -- {instruction}` suffix. Split on the **first** ` -- ` (space-dash-dash-space): left is the command and its args, right is additional context or instruction to carry through the entire execution.
24
+
25
+ Example: `/code-review #123 -- pay close attention to SQL injection risks`
26
+
21
27
  ## How It Works
22
28
 
23
29
  The `/code-review` command orchestrates multiple specialized agents in parallel:
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "droid-codex",
3
- "version": "0.3.0",
3
+ "version": "0.3.1",
4
4
  "description": "Shared organizational knowledge - PRDs, tech designs, domains, proposals, patterns, and explored topics. Self-describing: structure and workflows defined in codex repo. Use when loading project context, searching codex, capturing decisions, or creating new entries.",
5
5
  "author": {
6
6
  "name": "Orderful",
@@ -1,6 +1,6 @@
1
1
  name: codex
2
2
  description: "Shared organizational knowledge - PRDs, tech designs, domains, proposals, patterns, and explored topics. Self-describing: structure and workflows defined in codex repo. Use when loading project context, searching codex, capturing decisions, or creating new entries."
3
- version: 0.3.0
3
+ version: 0.3.1
4
4
  status: beta
5
5
 
6
6
  includes:
@@ -86,6 +86,12 @@ If prerequisites fail, guide user to fix:
86
86
 
87
87
  **Overrides:** This skill supports user-defined overrides. See `/droid` skill § Skill Overrides.
88
88
 
89
+ ## Custom Instructions
90
+
91
+ Any command accepts a ` -- {instruction}` suffix. Split on the **first** ` -- ` (space-dash-dash-space): left is the command and its args, right is additional context or instruction to carry through the entire execution.
92
+
93
+ Example: `/codex search webhook -- focus on the retry logic patterns`
94
+
89
95
  ## Commands
90
96
 
91
97
  All codex operations follow workflows defined in the codex repo's `.codex/workflows/` folder.
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "droid-comments",
3
- "version": "0.3.5",
3
+ "version": "0.3.6",
4
4
  "description": "Enable inline conversations using @droid/@user markers. Tag @droid to ask the AI, AI responds with @{your-name}. Use /comments check to address markers, /comments cleanup to remove resolved threads. Ideal for code review notes and async collaboration.",
5
5
  "author": {
6
6
  "name": "Orderful",
@@ -1,6 +1,6 @@
1
1
  name: comments
2
2
  description: "Enable inline conversations using @droid/@user markers. Tag @droid to ask the AI, AI responds with @{your-name}. Use /comments check to address markers, /comments cleanup to remove resolved threads. Ideal for code review notes and async collaboration."
3
- version: 0.3.5
3
+ version: 0.3.6
4
4
  status: beta
5
5
 
6
6
  includes:
@@ -63,6 +63,12 @@ Think of it like addressing someone in conversation:
63
63
 
64
64
  Inline comments shine for localized questions and actions within a file. For longer back-and-forth discussions in documents, they work great too - just be mindful that very long threads may be better moved to dedicated docs.
65
65
 
66
+ ## Custom Instructions
67
+
68
+ Any command accepts a ` -- {instruction}` suffix. Split on the **first** ` -- ` (space-dash-dash-space): left is the command and its args, right is additional context or instruction to carry through the entire execution.
69
+
70
+ Example: `/comments check -- keep responses brief, we're in a tight review cycle`
71
+
66
72
  ## Context Gathering
67
73
 
68
74
  When you find a `@droid` marker:
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "droid-meeting",
3
- "version": "0.1.1",
3
+ "version": "0.1.2",
4
4
  "description": "Work with meeting notes, summaries, and transcripts. List recent meetings, search content, generate context-aware summaries, export to codex. Backed by Granola MCP.",
5
5
  "author": {
6
6
  "name": "Orderful",
@@ -1,6 +1,6 @@
1
1
  name: meeting
2
2
  description: "Work with meeting notes, summaries, and transcripts. List recent meetings, search content, generate context-aware summaries, export to codex. Backed by Granola MCP."
3
- version: 0.1.1
3
+ version: 0.1.2
4
4
  status: beta
5
5
 
6
6
  includes:
@@ -35,6 +35,12 @@ If not configured, tell user:
35
35
 
36
36
  If connected, proceed.
37
37
 
38
+ ## Custom Instructions
39
+
40
+ Any command accepts a ` -- {instruction}` suffix. Split on the **first** ` -- ` (space-dash-dash-space): left is the command and its args, right is additional context or instruction to carry through the entire execution. Note: flag-style `--all` uses `--flag` syntax (no surrounding spaces) and is distinct from this separator.
41
+
42
+ Example: `/meeting search partner testing review -- extract action items only`
43
+
38
44
  ## Commands
39
45
 
40
46
  | Command | Action |
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "droid-plan",
3
- "version": "0.1.4",
3
+ "version": "0.1.5",
4
4
  "description": "Task-scoped planning with portable, structured plans. Use when planning implementation for a PR, ticket, or small feature. User prompts like 'let's plan this', 'can we start a plan', 'think through the implementation'.",
5
5
  "author": {
6
6
  "name": "Orderful",
@@ -1,6 +1,6 @@
1
1
  name: plan
2
2
  description: "Task-scoped planning with portable, structured plans. Use when planning implementation for a PR, ticket, or small feature. User prompts like 'let's plan this', 'can we start a plan', 'think through the implementation'."
3
- version: 0.1.4
3
+ version: 0.1.5
4
4
  status: alpha
5
5
 
6
6
  includes:
@@ -30,6 +30,12 @@ Uses config from dependencies:
30
30
 
31
31
  **Overrides:** This skill supports user-defined overrides. See `/droid` skill § Skill Overrides.
32
32
 
33
+ ## Custom Instructions
34
+
35
+ Any command accepts a ` -- {instruction}` suffix. Split on the **first** ` -- ` (space-dash-dash-space): left is the command and its args, right is additional context or instruction to carry through the entire execution.
36
+
37
+ Example: `/plan new auth-refactor -- we must stay backward compatible with v1 clients`
38
+
33
39
  ## Commands
34
40
 
35
41
  | Command | Action |
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "droid-project",
3
- "version": "0.3.4",
3
+ "version": "0.3.6",
4
4
  "description": "Manage project context files for persistent AI memory across sessions. Load, update, or create project context before working on multi-session features.",
5
5
  "author": {
6
6
  "name": "Orderful",
@@ -1,6 +1,6 @@
1
1
  name: project
2
2
  description: "Manage project context files for persistent AI memory across sessions. Load, update, or create project context before working on multi-session features."
3
- version: 0.3.4
3
+ version: 0.3.6
4
4
  status: beta
5
5
 
6
6
  includes:
@@ -36,6 +36,12 @@ Chat history disappears. Projects persist.
36
36
 
37
37
  **Overrides:** This skill supports user-defined overrides. See `/droid` skill § Skill Overrides.
38
38
 
39
+ ## Custom Instructions
40
+
41
+ Any command accepts a ` -- {instruction}` suffix. Split on the **first** ` -- ` (space-dash-dash-space): left is the command and its args, right is additional context or instruction to carry through the entire execution.
42
+
43
+ Example: `/project search droid -- show me what changed last week`
44
+
39
45
  If `projects_dir` is not configured, inform the user they need to set it up:
40
46
  ```bash
41
47
  mkdir -p ~/.droid/skills/project
@@ -32,6 +32,7 @@
32
32
  - Confirm which project was loaded
33
33
  - Summarize key context (2-3 sentences)
34
34
  - Use project contents for all subsequent work in the session
35
+ - **Do NOT read CHANGELOG.md** — it exists for on-demand lookup only. PROJECT.md already references it; that is enough context.
35
36
 
36
37
  7. **If `-- {instruction}` provided:** Execute the follow-up instruction against the loaded project
37
38
 
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "droid-release",
3
- "version": "0.1.0",
3
+ "version": "0.2.2",
4
4
  "description": "Release ceremony automation — create release PRs, check status, notify Slack.",
5
5
  "author": {
6
6
  "name": "Orderful",
@@ -1,6 +1,6 @@
1
1
  name: release
2
2
  description: "Release ceremony automation — create release PRs, check status, notify Slack."
3
- version: 0.1.0
3
+ version: 0.2.2
4
4
  status: alpha
5
5
 
6
6
  includes:
@@ -18,4 +18,4 @@ config_schema:
18
18
  slack_channel:
19
19
  type: string
20
20
  description: "Slack channel for release notifications"
21
- default: "#release-management"
21
+ default: "#release_management"
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  name: release
3
- description: "Release ceremony automation"
4
- argument-hint: "[start [repo] | status | complete [repo]]"
3
+ description: "Release ceremony automation and branch locking"
4
+ argument-hint: "[start [repo] [--no-lock] | merge [repo] | lock [repo] | unlock [repo] | status | complete [repo]]"
5
5
  ---
6
6
 
7
7
  # /release
@@ -12,17 +12,25 @@ argument-hint: "[start [repo] | status | complete [repo]]"
12
12
 
13
13
  ## Examples
14
14
 
15
- - `/release start` → Create release PR for current repo
15
+ - `/release start` → Create release PR + auto-lock branch
16
16
  - `/release start orderful-workspace` → Create release PR for a specific repo
17
- - `/release status` → Check CI state across release repos
18
- - `/release complete` → Post "release complete" to Slack
17
+ - `/release start --no-lock` → Create release PR without locking
18
+ - `/release merge` → Merge release PR (checks must be green)
19
+ - `/release lock` → Manually lock the release branch
20
+ - `/release unlock` → Unlock the release branch
21
+ - `/release status` → Check CI and lock state across release repos
22
+ - `/release complete` → Post "release complete" to Slack, auto-unlock if locked
19
23
 
20
24
  ## Quick Reference
21
25
 
22
26
  ```
23
- /release start [repo] # Create release PR + notify Slack
24
- /release status # CI state across repos
25
- /release complete [repo] # Notify Slack, close out release
27
+ /release start [repo] # Create release PR + auto-lock + notify Slack
28
+ /release start --no-lock # Create release PR without locking
29
+ /release merge [repo] # Merge release PR (checks must pass)
30
+ /release lock [repo] # Manually lock release branch
31
+ /release unlock [repo] # Unlock release branch
32
+ /release status # CI + lock state across repos
33
+ /release complete [repo] # Notify Slack + auto-unlock
26
34
  ```
27
35
 
28
36
  See the **release skill** for complete documentation.
@@ -1,20 +1,21 @@
1
1
  ---
2
2
  name: release
3
- description: "Release ceremony automation for dev-to-master releases. Use when starting a release, merging a release, checking release status, or completing a release. User prompts like 'start a release', 'merge the release', 'release status', 'release complete'."
4
- argument-hint: "[start [repo] | merge [repo] | status | complete [repo]]"
3
+ description: "Release ceremony automation for dev-to-master releases. Use when starting a release, merging a release, locking a branch, checking release status, or completing a release. User prompts like 'start a release', 'merge the release', 'lock dev', 'release status', 'unlock the branch'."
4
+ argument-hint: "[start [repo] | merge [repo] | lock [repo] | unlock [repo] | status | complete [repo]]"
5
5
  allowed-tools: [Read, Write, Glob, Grep, Bash, Edit]
6
6
  ---
7
7
 
8
8
  # Release Skill
9
9
 
10
- Automate dev → master release ceremonies: create release PRs, notify Slack, and track status.
10
+ Automate dev → master release ceremonies: create release PRs, lock branches during CI, notify Slack, and track status.
11
11
 
12
12
  ## When to Use
13
13
 
14
14
  - User wants to start a release (create PR from dev → master)
15
- - User asks about release status (open PRs, CI checks)
15
+ - User wants to lock or unlock a branch during a release
16
+ - User asks about release status (open PRs, lock state, CI checks)
16
17
  - User says "release complete" or wants to close out a release
17
- - Natural language like "start a release", "what's the release status?"
18
+ - Natural language like "start a release", "lock dev", "what's the release status?"
18
19
 
19
20
  ## When NOT to Use
20
21
 
@@ -26,6 +27,7 @@ Automate dev → master release ceremonies: create release PRs, notify Slack, an
26
27
 
27
28
  1. **`gh` CLI** — authenticated with access to target repos
28
29
  2. **Slack integration** — `droid integrations slack post` configured (optional, falls back to terminal)
30
+ 3. **`branch-lock.yml`** — GitHub Action deployed to target repo (required for auto-lock on start + lock/unlock commands)
29
31
 
30
32
  ## Configuration
31
33
 
@@ -37,20 +39,28 @@ droid config --get repos
37
39
  ```
38
40
 
39
41
  - **Repos:** Filter `repos` array for entries with `release_branch` set — these are release repos
40
- - **Slack channel:** From `tools.release.slack_channel` (default: `#release-management`)
42
+ - **Slack channel:** From `tools.release.slack_channel` (default: `#release_management`)
41
43
  - **Repo detection:** Match cwd against repo paths, or ask user if ambiguous
42
44
 
43
45
  If no repos have `release_branch` set, tell user:
44
46
  > "No release repos configured. Run `droid repos add` and set a release branch to get started."
45
47
 
48
+ ## Custom Instructions
49
+
50
+ Any command accepts a ` -- {instruction}` suffix. Split on the **first** ` -- ` (space-dash-dash-space): left is the command and its args, right is additional context or instruction to carry through the entire execution. Note: flag-style `--no-lock` uses `--flag` syntax (no surrounding spaces) and is distinct from this separator.
51
+
52
+ Example: `/release start -- notify #releases-eng channel instead of the default`
53
+
46
54
  ## Commands
47
55
 
48
56
  | Command | Action |
49
57
  |---------|--------|
50
- | `/release start [repo]` | Create release PR + notify Slack |
58
+ | `/release start [repo] [--no-lock]` | Create release PR + auto-lock branch + notify Slack |
51
59
  | `/release merge [repo]` | Merge release PR (only if checks pass) + notify Slack |
52
- | `/release status` | Check open release PRs + CI state |
53
- | `/release complete [repo]` | Post completion to Slack |
60
+ | `/release lock [repo]` | Lock release branch (confirms first) |
61
+ | `/release unlock [repo]` | Unlock release branch |
62
+ | `/release status` | Check open release PRs + CI state + lock state |
63
+ | `/release complete [repo]` | Post completion to Slack + auto-unlock |
54
64
 
55
65
  See `references/workflows.md` for detailed step-by-step procedures and exact `gh` commands.
56
66
 
@@ -69,6 +79,9 @@ See `references/templates.md` for Slack message and PR body templates.
69
79
  |-------|--------|
70
80
  | No release repos configured | Suggest `droid repos add` with release branch |
71
81
  | `gh` CLI not authenticated | Suggest `gh auth login` |
82
+ | `branch-lock.yml` not found in repo | Tell user to add the `branch-lock.yml` workflow to the repo |
72
83
  | Slack not configured | Print message to terminal, suggest `droid integrations setup slack` |
84
+ | Branch already locked | Warn user, offer to unlock first |
73
85
  | Release PR already exists | Show existing PR, ask if user wants to proceed |
74
86
  | CI checks failing | Show status, do not auto-merge |
87
+ | High-risk label present at merge | Show extra confirmation prompt before standard merge confirmation; do not auto-skip |
@@ -6,20 +6,30 @@ Slack mrkdwn and PR body templates for release notifications.
6
6
 
7
7
  All Slack messages are posted via `droid integrations slack post`. Format as Slack mrkdwn (not GitHub markdown).
8
8
 
9
- ### Release Started
9
+ ### Release Open for Review
10
10
 
11
11
  ```
12
- :rocket: *Release started — {repo_name}*
12
+ :rocket: *Release open for review — {repo_name}*
13
13
 
14
14
  *Risk:* {risk_emoji} {risk_level}
15
15
  *PR:* <{pr_url}|#{pr_number}>
16
16
  *Branch:* `{release_branch}` → `{production_branch}`
17
+ :lock: `{release_branch}` is locked — no merges until release completes
17
18
 
18
19
  {pr_summary}
19
20
 
20
21
  Posted with :droid:
21
22
  ```
22
23
 
24
+ If `--no-lock` was used, omit the lock line.
25
+
26
+ If `HIGH_RISK_PRS` is non-empty, append the following block after `{pr_summary}` (before `Posted with :droid:`):
27
+ ```
28
+ ⚠️ *High-risk PRs:*
29
+ - <{pr_url}|#{number}> {title} (@{author})
30
+ ```
31
+ (one line per high-risk PR)
32
+
23
33
  Risk emojis:
24
34
  - Low Risk: `:large_green_circle:`
25
35
  - High Risk: `:warning:`
@@ -37,6 +47,26 @@ Monitoring deployment :eyes:
37
47
  Posted with :droid:
38
48
  ```
39
49
 
50
+ ### Branch Locked
51
+
52
+ ```
53
+ :lock: *Branch locked — {repo_name}*
54
+
55
+ `{branch}` is now read-only. No merges until unlocked.
56
+
57
+ Posted with :droid:
58
+ ```
59
+
60
+ ### Branch Unlocked
61
+
62
+ ```
63
+ :unlock: *Branch unlocked — {repo_name}*
64
+
65
+ `{branch}` is open for merges.
66
+
67
+ Posted with :droid:
68
+ ```
69
+
40
70
  ### Release Complete
41
71
 
42
72
  ```
@@ -48,6 +78,11 @@ Posted with :droid:
48
78
  Posted with :droid:
49
79
  ```
50
80
 
81
+ If auto-unlocked, append:
82
+ ```
83
+ :unlock: Auto-unlocked `{release_branch}`
84
+ ```
85
+
51
86
  ---
52
87
 
53
88
  ## Release PR Body
@@ -75,18 +110,36 @@ Where `{pr_list}` is a bulleted list of merged PRs:
75
110
  - #{number} {title} (@{author})
76
111
  ```
77
112
 
113
+ If `HIGH_RISK_PRS` is non-empty, insert the following section between `{pr_list}` and the `---` divider:
114
+ ```markdown
115
+ ### ⚠️ High-Risk PRs
116
+
117
+ The following PRs in this release are labelled `high-risk`. Coordinate with the authors before deploying.
118
+
119
+ - #{number} {title} (@{author})
120
+ ```
121
+ (one line per high-risk PR)
122
+
78
123
  ---
79
124
 
80
125
  ## Terminal Fallback
81
126
 
82
127
  When Slack is not configured, print a plain-text version to terminal:
83
128
 
84
- ### Release Started (terminal)
129
+ ### Release Open for Review (terminal)
85
130
  ```
86
- Release started — {repo_name}
131
+ Release open for review — {repo_name}
87
132
  Risk: {risk_level}
88
133
  PR: {pr_url}
89
134
  Branch: {release_branch} -> {production_branch}
135
+ Lock: {release_branch} locked (no merges until release completes)
136
+ ```
137
+
138
+ If `--no-lock` was used, omit the Lock line.
139
+
140
+ If `HIGH_RISK_PRS` is non-empty, append:
141
+ ```
142
+ ⚠️ High-risk PRs: #{number} {title} (@{author}), ...
90
143
  ```
91
144
 
92
145
  ### Release Merged (terminal)
@@ -97,6 +150,18 @@ Release merged — {repo_name}
97
150
  Monitoring deployment...
98
151
  ```
99
152
 
153
+ ### Branch Locked (terminal)
154
+ ```
155
+ Branch locked — {repo_name}
156
+ {branch} is now read-only
157
+ ```
158
+
159
+ ### Branch Unlocked (terminal)
160
+ ```
161
+ Branch unlocked — {repo_name}
162
+ {branch} is open for merges
163
+ ```
164
+
100
165
  ### Release Complete (terminal)
101
166
  ```
102
167
  Release complete — {repo_name}