@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.
- package/.github/workflows/claude-issue-agent.yml +238 -0
- package/CHANGELOG.md +28 -0
- package/dist/bin/droid.js +53 -23
- package/dist/commands/tui.d.ts.map +1 -1
- package/dist/integrations/granola/index.d.ts +6 -0
- package/dist/integrations/granola/index.d.ts.map +1 -0
- package/dist/integrations/granola/index.ts +28 -0
- package/dist/tools/brain/.claude-plugin/plugin.json +1 -1
- package/dist/tools/brain/TOOL.yaml +1 -1
- package/dist/tools/brain/skills/brain/SKILL.md +6 -0
- package/dist/tools/coach/.claude-plugin/plugin.json +1 -1
- package/dist/tools/coach/TOOL.yaml +5 -1
- package/dist/tools/coach/skills/coach/SKILL.md +31 -5
- package/dist/tools/code-review/.claude-plugin/plugin.json +1 -1
- package/dist/tools/code-review/TOOL.yaml +1 -1
- package/dist/tools/code-review/skills/code-review/SKILL.md +6 -0
- package/dist/tools/codex/.claude-plugin/plugin.json +1 -1
- package/dist/tools/codex/TOOL.yaml +1 -1
- package/dist/tools/codex/skills/codex/SKILL.md +6 -0
- package/dist/tools/comments/.claude-plugin/plugin.json +1 -1
- package/dist/tools/comments/TOOL.yaml +1 -1
- package/dist/tools/comments/skills/comments/SKILL.md +6 -0
- package/dist/tools/meeting/.claude-plugin/plugin.json +1 -1
- package/dist/tools/meeting/TOOL.yaml +1 -1
- package/dist/tools/meeting/skills/meeting/SKILL.md +6 -0
- package/dist/tools/plan/.claude-plugin/plugin.json +1 -1
- package/dist/tools/plan/TOOL.yaml +1 -1
- package/dist/tools/plan/skills/plan/SKILL.md +6 -0
- package/dist/tools/project/.claude-plugin/plugin.json +1 -1
- package/dist/tools/project/TOOL.yaml +1 -1
- package/dist/tools/project/skills/project/SKILL.md +6 -0
- package/dist/tools/project/skills/project/references/loading.md +1 -0
- package/dist/tools/release/.claude-plugin/plugin.json +1 -1
- package/dist/tools/release/TOOL.yaml +2 -2
- package/dist/tools/release/commands/release.md +16 -8
- package/dist/tools/release/skills/release/SKILL.md +22 -9
- package/dist/tools/release/skills/release/references/templates.md +69 -4
- package/dist/tools/release/skills/release/references/workflows.md +149 -13
- package/dist/tools/share/.claude-plugin/plugin.json +1 -1
- package/dist/tools/share/TOOL.yaml +1 -1
- package/dist/tools/share/skills/share/SKILL.md +6 -0
- package/dist/tools/status-update/.claude-plugin/plugin.json +1 -1
- package/dist/tools/status-update/TOOL.yaml +1 -1
- package/dist/tools/status-update/skills/status-update/SKILL.md +6 -0
- package/dist/tools/tech-design/.claude-plugin/plugin.json +1 -1
- package/dist/tools/tech-design/TOOL.yaml +1 -1
- package/dist/tools/tech-design/skills/tech-design/SKILL.md +6 -0
- package/dist/tools/wrapup/.claude-plugin/plugin.json +1 -1
- package/dist/tools/wrapup/TOOL.yaml +6 -2
- package/dist/tools/wrapup/skills/wrapup/SKILL.md +25 -2
- package/dist/tools/wrapup/skills/wrapup/references/output-schema.md +5 -3
- package/dist/tools/wrapup/skills/wrapup/references/subagent-prompts.md +54 -13
- package/package.json +1 -1
- package/src/commands/tui.tsx +11 -0
- package/src/integrations/granola/index.ts +28 -0
- package/src/tools/brain/.claude-plugin/plugin.json +1 -1
- package/src/tools/brain/TOOL.yaml +1 -1
- package/src/tools/brain/skills/brain/SKILL.md +6 -0
- package/src/tools/coach/.claude-plugin/plugin.json +1 -1
- package/src/tools/coach/TOOL.yaml +5 -1
- package/src/tools/coach/skills/coach/SKILL.md +31 -5
- package/src/tools/code-review/.claude-plugin/plugin.json +1 -1
- package/src/tools/code-review/TOOL.yaml +1 -1
- package/src/tools/code-review/skills/code-review/SKILL.md +6 -0
- package/src/tools/codex/.claude-plugin/plugin.json +1 -1
- package/src/tools/codex/TOOL.yaml +1 -1
- package/src/tools/codex/skills/codex/SKILL.md +6 -0
- package/src/tools/comments/.claude-plugin/plugin.json +1 -1
- package/src/tools/comments/TOOL.yaml +1 -1
- package/src/tools/comments/skills/comments/SKILL.md +6 -0
- package/src/tools/meeting/.claude-plugin/plugin.json +1 -1
- package/src/tools/meeting/TOOL.yaml +1 -1
- package/src/tools/meeting/skills/meeting/SKILL.md +6 -0
- package/src/tools/plan/.claude-plugin/plugin.json +1 -1
- package/src/tools/plan/TOOL.yaml +1 -1
- package/src/tools/plan/skills/plan/SKILL.md +6 -0
- package/src/tools/project/.claude-plugin/plugin.json +1 -1
- package/src/tools/project/TOOL.yaml +1 -1
- package/src/tools/project/skills/project/SKILL.md +6 -0
- package/src/tools/project/skills/project/references/loading.md +1 -0
- package/src/tools/release/.claude-plugin/plugin.json +1 -1
- package/src/tools/release/TOOL.yaml +2 -2
- package/src/tools/release/commands/release.md +16 -8
- package/src/tools/release/skills/release/SKILL.md +22 -9
- package/src/tools/release/skills/release/references/templates.md +69 -4
- package/src/tools/release/skills/release/references/workflows.md +149 -13
- package/src/tools/share/.claude-plugin/plugin.json +1 -1
- package/src/tools/share/TOOL.yaml +1 -1
- package/src/tools/share/skills/share/SKILL.md +6 -0
- package/src/tools/status-update/.claude-plugin/plugin.json +1 -1
- package/src/tools/status-update/TOOL.yaml +1 -1
- package/src/tools/status-update/skills/status-update/SKILL.md +6 -0
- package/src/tools/tech-design/.claude-plugin/plugin.json +1 -1
- package/src/tools/tech-design/TOOL.yaml +1 -1
- package/src/tools/tech-design/skills/tech-design/SKILL.md +6 -0
- package/src/tools/wrapup/.claude-plugin/plugin.json +1 -1
- package/src/tools/wrapup/TOOL.yaml +6 -2
- package/src/tools/wrapup/skills/wrapup/SKILL.md +25 -2
- package/src/tools/wrapup/skills/wrapup/references/output-schema.md +5 -3
- 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
|
|
53
|
-
|
|
|
54
|
-
| `scaffold_verbosity`
|
|
55
|
-
| `
|
|
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
|
-
-
|
|
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?"
|
|
@@ -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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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",
|
|
@@ -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.
|
|
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",
|
package/src/tools/plan/TOOL.yaml
CHANGED
|
@@ -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.
|
|
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.
|
|
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",
|
|
@@ -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
|
name: release
|
|
2
2
|
description: "Release ceremony automation — create release PRs, check status, notify Slack."
|
|
3
|
-
version: 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: "#
|
|
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
|
|
15
|
+
- `/release start` → Create release PR + auto-lock branch
|
|
16
16
|
- `/release start orderful-workspace` → Create release PR for a specific repo
|
|
17
|
-
- `/release
|
|
18
|
-
- `/release
|
|
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]
|
|
24
|
-
/release
|
|
25
|
-
/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', '
|
|
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
|
|
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: `#
|
|
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
|
|
53
|
-
| `/release
|
|
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
|
|
9
|
+
### Release Open for Review
|
|
10
10
|
|
|
11
11
|
```
|
|
12
|
-
:rocket: *Release
|
|
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
|
|
129
|
+
### Release Open for Review (terminal)
|
|
85
130
|
```
|
|
86
|
-
Release
|
|
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}
|