@orderful/droid 0.44.1 → 0.45.1
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/.claude-plugin/marketplace.json +1 -1
- package/.claude-plugin/plugin.json +5 -2
- package/.github/workflows/claude-issue-agent.yml +237 -0
- package/CHANGELOG.md +30 -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/droid/.claude-plugin/plugin.json +1 -1
- package/dist/tools/droid/TOOL.yaml +1 -1
- package/dist/tools/droid/skills/droid/SKILL.md +1 -0
- package/dist/tools/droid/skills/droid-bootstrap/SKILL.md +1 -0
- package/dist/tools/edi-schema/.claude-plugin/plugin.json +25 -0
- package/dist/tools/edi-schema/TOOL.yaml +29 -0
- package/dist/tools/edi-schema/agents/edi-schema-agent.md +97 -0
- package/dist/tools/edi-schema/commands/edi-schema.md +33 -0
- package/dist/tools/edi-schema/skills/edi-schema/SKILL.md +86 -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 +1 -1
- package/dist/tools/release/skills/release/SKILL.md +7 -0
- package/dist/tools/release/skills/release/references/templates.md +22 -0
- package/dist/tools/release/skills/release/references/workflows.md +28 -4
- 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/droid/.claude-plugin/plugin.json +1 -1
- package/src/tools/droid/TOOL.yaml +1 -1
- package/src/tools/droid/skills/droid/SKILL.md +1 -0
- package/src/tools/droid/skills/droid-bootstrap/SKILL.md +1 -0
- package/src/tools/edi-schema/.claude-plugin/plugin.json +25 -0
- package/src/tools/edi-schema/TOOL.yaml +29 -0
- package/src/tools/edi-schema/agents/edi-schema-agent.md +97 -0
- package/src/tools/edi-schema/commands/edi-schema.md +33 -0
- package/src/tools/edi-schema/skills/edi-schema/SKILL.md +86 -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 +1 -1
- package/src/tools/release/skills/release/SKILL.md +7 -0
- package/src/tools/release/skills/release/references/templates.md +22 -0
- package/src/tools/release/skills/release/references/workflows.md +28 -4
- 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
|
@@ -46,10 +46,21 @@ Create a release PR, auto-lock the release branch, and notify Slack.
|
|
|
46
46
|
# Get commits in release_branch that aren't in production_branch
|
|
47
47
|
gh api repos/{owner}/{repo}/compare/{production_branch}...{release_branch} --jq '.commits[].commit.message'
|
|
48
48
|
```
|
|
49
|
-
Extract PR numbers from commit messages (e.g. `(#1234)`)
|
|
49
|
+
Extract PR numbers from commit messages (e.g. `(#1234)`). For each extracted PR number, fetch metadata including labels:
|
|
50
|
+
```bash
|
|
51
|
+
gh pr view {pr_number} --json number,title,author,labels --repo {owner}/{repo}
|
|
52
|
+
```
|
|
53
|
+
Build the PR list for the body from the results. Collect `HIGH_RISK_PRS` — an array of `{number, title, author}` for any PR whose `labels` array includes an entry with `name: "high-risk"`.
|
|
50
54
|
|
|
51
55
|
**Do NOT use** `gh pr list --base {release_branch} --state merged` — that returns ALL historically merged PRs, not just the ones since the last release.
|
|
52
56
|
|
|
57
|
+
3.5. **Warn if high-risk PRs found** — if `HIGH_RISK_PRS` is non-empty, print a terminal warning:
|
|
58
|
+
```
|
|
59
|
+
⚠️ {n} high-risk PR(s) detected in this release:
|
|
60
|
+
- #{number} {title} (@{author})
|
|
61
|
+
...
|
|
62
|
+
```
|
|
63
|
+
|
|
53
64
|
4. **Ask risk level** — use AskUserQuestion:
|
|
54
65
|
- Low Risk (routine release, no breaking changes)
|
|
55
66
|
- High Risk (breaking changes, data migrations, or high-traffic feature)
|
|
@@ -64,6 +75,11 @@ Create a release PR, auto-lock the release branch, and notify Slack.
|
|
|
64
75
|
--body "{release_pr_body}" \
|
|
65
76
|
--repo {owner}/{repo}
|
|
66
77
|
```
|
|
78
|
+
If `HIGH_RISK_PRS` is non-empty, also add `--label "high-risk"` to the command above. If the `high-risk` label does not exist on the repo, `gh pr create` will fail — in that case, retry without `--label "high-risk"` and warn the user:
|
|
79
|
+
```
|
|
80
|
+
⚠️ Could not apply 'high-risk' label — label does not exist on {repo_name}. Create it in GitHub Labels settings, then add it manually to PR #{number}.
|
|
81
|
+
```
|
|
82
|
+
|
|
67
83
|
See `templates.md` for the PR body template.
|
|
68
84
|
|
|
69
85
|
6. **Auto-lock branch** (unless `--no-lock`):
|
|
@@ -105,7 +121,7 @@ Merge the release PR if all checks are green, then notify Slack.
|
|
|
105
121
|
|
|
106
122
|
2. **Find the open release PR:**
|
|
107
123
|
```bash
|
|
108
|
-
gh pr list --search "[RELEASE]" --state open --base {production_branch} --head {release_branch} --json number,title,url,statusCheckRollup --repo {owner}/{repo}
|
|
124
|
+
gh pr list --search "[RELEASE]" --state open --base {production_branch} --head {release_branch} --json number,title,url,statusCheckRollup,labels --repo {owner}/{repo}
|
|
109
125
|
```
|
|
110
126
|
If no open release PR found, error: "No open release PR found. Run `/release start` first."
|
|
111
127
|
|
|
@@ -115,7 +131,10 @@ Merge the release PR if all checks are green, then notify Slack.
|
|
|
115
131
|
If any checks are pending: "CI checks are still running on PR #{number}. Wait for them to finish."
|
|
116
132
|
If any checks are failing: "CI checks are failing on PR #{number}. Fix them before merging." Show the failing checks.
|
|
117
133
|
|
|
118
|
-
4. **Confirm with user** —
|
|
134
|
+
4. **Confirm with user** — if the release PR's `labels` includes `"high-risk"`, first show an extra AskUserQuestion confirmation:
|
|
135
|
+
"⚠️ This release includes high-risk PRs. Confirm you have coordinated with the contributors and are ready to proceed."
|
|
136
|
+
|
|
137
|
+
Then (regardless of high-risk) show the standard AskUserQuestion:
|
|
119
138
|
"All checks are green on PR #{number}. Merge `{release_branch}` → `{production_branch}`?"
|
|
120
139
|
|
|
121
140
|
5. **Merge the PR:**
|
|
@@ -216,7 +235,7 @@ Check release status across all configured release repos.
|
|
|
216
235
|
|
|
217
236
|
**Open release PRs:**
|
|
218
237
|
```bash
|
|
219
|
-
gh pr list --search "[RELEASE]" --state open --json number,title,url,statusCheckRollup --repo {owner}/{repo}
|
|
238
|
+
gh pr list --search "[RELEASE]" --state open --json number,title,url,statusCheckRollup,labels --repo {owner}/{repo}
|
|
220
239
|
```
|
|
221
240
|
|
|
222
241
|
**Lock state:**
|
|
@@ -232,6 +251,11 @@ Check release status across all configured release repos.
|
|
|
232
251
|
Branch lock: {release_branch} — locked/unlocked
|
|
233
252
|
```
|
|
234
253
|
|
|
254
|
+
If the release PR's `labels` includes `"high-risk"`, append to the repo's status block:
|
|
255
|
+
```
|
|
256
|
+
⚠️ High-risk PRs included
|
|
257
|
+
```
|
|
258
|
+
|
|
235
259
|
If no open release PR: "No active release"
|
|
236
260
|
If no release repos configured: "No release repos configured"
|
|
237
261
|
|
|
@@ -26,6 +26,12 @@ Share content to external platforms. Two modes:
|
|
|
26
26
|
| Confluence | Atlassian MCP (`mcp__claude_ai_Atlassian__*`) | Publish document as page |
|
|
27
27
|
| Slack | `droid integrations slack post` | Process + post message |
|
|
28
28
|
|
|
29
|
+
## Custom Instructions
|
|
30
|
+
|
|
31
|
+
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. For the Slack flow specifically, the `--` instruction becomes the formatting directive (step S3).
|
|
32
|
+
|
|
33
|
+
Example: `/share slack #eng -- summarise the action items and tag owners`
|
|
34
|
+
|
|
29
35
|
## Procedure
|
|
30
36
|
|
|
31
37
|
### 1. Resolve Platform
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "droid-status-update",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.2",
|
|
4
4
|
"description": "Generate and post project status updates. Aggregates context from codex projects, Jira epics, and manual input. Posts to Slack or prints to terminal.",
|
|
5
5
|
"author": {
|
|
6
6
|
"name": "Orderful",
|
|
@@ -30,6 +30,12 @@ Generate formatted project status updates from multiple sources and post to Slac
|
|
|
30
30
|
|-------------|----------------|----------|
|
|
31
31
|
| **Slack** | If slack.channel configured + SLACK_USER_TOKEN set | Print to terminal |
|
|
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: `/status-update droid -- emphasise the auth refactor milestone we shipped`
|
|
38
|
+
|
|
33
39
|
## Procedure
|
|
34
40
|
|
|
35
41
|
### 1. Resolve Project Context
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "droid-tech-design",
|
|
3
|
-
"version": "0.3.
|
|
3
|
+
"version": "0.3.1",
|
|
4
4
|
"description": "Technical design authoring tool for engineers. Create structured tech design docs with /tech-design start, iterate in brain, publish to codex. Three-document approach: research doc (codebase discoveries) + thought doc (design workspace) + roll-up (clean summary for review).",
|
|
5
5
|
"author": {
|
|
6
6
|
"name": "Orderful",
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
name: tech-design
|
|
2
2
|
description: "Technical design authoring tool for engineers. Create structured tech design docs with /tech-design start, iterate in brain, publish to codex. Three-document approach: research doc (codebase discoveries) + thought doc (design workspace) + roll-up (clean summary for review)."
|
|
3
|
-
version: 0.3.
|
|
3
|
+
version: 0.3.1
|
|
4
4
|
status: beta
|
|
5
5
|
|
|
6
6
|
includes:
|
|
@@ -47,6 +47,12 @@ Tech-design has no configuration of its own. It delegates to:
|
|
|
47
47
|
|
|
48
48
|
**Overrides:** This skill supports user-defined overrides. See `/droid` skill § Skill Overrides.
|
|
49
49
|
|
|
50
|
+
## Custom Instructions
|
|
51
|
+
|
|
52
|
+
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 `--from` and similar flags use `--flag` syntax (no surrounding spaces) and are distinct from this separator.
|
|
53
|
+
|
|
54
|
+
Example: `/tech-design draft rollout -- keep it concise, we have limited Ops bandwidth`
|
|
55
|
+
|
|
50
56
|
## Four-Document Approach
|
|
51
57
|
|
|
52
58
|
| Document | Created When | Purpose | Location | Audience | Length |
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
name: wrapup
|
|
2
2
|
description: "Session wrap-up that captures decisions, learnings, and open items to persistent docs."
|
|
3
|
-
version: 0.1.
|
|
3
|
+
version: 0.1.5
|
|
4
4
|
status: alpha
|
|
5
5
|
|
|
6
6
|
includes:
|
|
@@ -13,4 +13,8 @@ includes:
|
|
|
13
13
|
|
|
14
14
|
dependencies: []
|
|
15
15
|
|
|
16
|
-
config_schema:
|
|
16
|
+
config_schema:
|
|
17
|
+
persist_recaps:
|
|
18
|
+
type: string
|
|
19
|
+
default: 'false'
|
|
20
|
+
description: 'Persist session recap files to brain vault wrapups folder'
|
|
@@ -10,16 +10,25 @@ Session wrap-up that captures decisions, learnings, and open items before closin
|
|
|
10
10
|
|
|
11
11
|
## Configuration
|
|
12
12
|
|
|
13
|
-
Wrapup
|
|
13
|
+
Wrapup reads config from other installed tools, plus its own settings:
|
|
14
14
|
|
|
15
15
|
- **Project skill** (optional): `droid config --get tools.project` → `projects_dir` to update project files
|
|
16
|
-
- **Brain skill** (optional): `droid config --get tools.brain` → `brain_dir` to update brain docs
|
|
16
|
+
- **Brain skill** (optional): `droid config --get tools.brain` → `brain_dir` and `inbox_folder` to update brain docs
|
|
17
17
|
- **Codex skill** (optional): `droid config --get tools.codex` → `codex_repo` to suggest codex entries
|
|
18
|
+
- **Wrapup own config** (optional): `droid config --get tools.wrapup` → `persist_recaps` (`'true'` / `'false'`, default `'false'`)
|
|
18
19
|
|
|
19
20
|
If these tools aren't configured, wrapup skips those artifacts and focuses on git state and conversation summary.
|
|
20
21
|
|
|
22
|
+
When `persist_recaps` is `'true'` and brain is configured, session briefs are saved to the brain vault in Phase 4 (see below).
|
|
23
|
+
|
|
21
24
|
**Overrides:** This skill supports user-defined overrides. See `/droid` skill § Skill Overrides.
|
|
22
25
|
|
|
26
|
+
## Custom Instructions
|
|
27
|
+
|
|
28
|
+
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.
|
|
29
|
+
|
|
30
|
+
Example: `/wrapup -- also capture the tech debt items we discussed`
|
|
31
|
+
|
|
23
32
|
## Context Lifeboat Pattern
|
|
24
33
|
|
|
25
34
|
This skill runs at the END of sessions when context pressure is highest.
|
|
@@ -98,3 +107,17 @@ Present options using AskUserQuestion:
|
|
|
98
107
|
- **"Skip"** → Close without updating
|
|
99
108
|
|
|
100
109
|
On approval, write updates using appropriate format for each destination.
|
|
110
|
+
|
|
111
|
+
**Session recap persistence (if `persist_recaps` is `'true'`):**
|
|
112
|
+
|
|
113
|
+
After writing all other updates, check whether session briefs should be persisted:
|
|
114
|
+
|
|
115
|
+
1. Run `droid config --get tools.wrapup` and check if `persist_recaps` equals `'true'`. If not, skip.
|
|
116
|
+
2. Run `droid config --get tools.brain` and parse `brain_dir` and `inbox_folder`.
|
|
117
|
+
- If `brain_dir` is not set, skip.
|
|
118
|
+
3. Construct the destination path:
|
|
119
|
+
- If `inbox_folder` is non-empty: `{brain_dir}/{inbox_folder}/wrapups/{session-id}.md`
|
|
120
|
+
- If `inbox_folder` is empty or absent: `{brain_dir}/wrapups/{session-id}.md`
|
|
121
|
+
- Avoid double slashes — do not append `inbox_folder` when it is an empty string.
|
|
122
|
+
4. Create the `wrapups/` directory if it does not exist, then copy the Phase 1 brief from `/tmp/wrapup-{session-id}.md` to the constructed path.
|
|
123
|
+
5. Inform the user the recap was saved and where.
|
|
@@ -28,7 +28,7 @@ Structured format for subagent findings. Main agent uses this to synthesise the
|
|
|
28
28
|
],
|
|
29
29
|
"suggested_actions": [
|
|
30
30
|
{
|
|
31
|
-
"type": "commit | codex_topic | file_bug | update_docs",
|
|
31
|
+
"type": "commit | codex_topic | codex_update | file_bug | update_docs",
|
|
32
32
|
"content": "description of suggested action",
|
|
33
33
|
"priority": "high | medium | low"
|
|
34
34
|
}
|
|
@@ -63,7 +63,8 @@ Item categories:
|
|
|
63
63
|
|
|
64
64
|
Actions that need user judgment:
|
|
65
65
|
- `commit`: Git changes ready to commit
|
|
66
|
-
- `codex_topic`:
|
|
66
|
+
- `codex_topic`: Net-new knowledge worth codifying as a new codex entry
|
|
67
|
+
- `codex_update`: Update to an existing codex entry (distinct from `codex_topic` which suggests net-new content)
|
|
67
68
|
- `file_bug`: Bug discovered but not filed
|
|
68
69
|
- `update_docs`: Documentation that needs updating
|
|
69
70
|
|
|
@@ -87,7 +88,8 @@ Actions that need user judgment:
|
|
|
87
88
|
],
|
|
88
89
|
"suggested_actions": [
|
|
89
90
|
{"type": "commit", "content": "4 files ready: TOOL.yaml, SKILL.md, wrapup.md, changeset", "priority": "high"},
|
|
90
|
-
{"type": "codex_topic", "content": "Context lifeboat pattern for end-of-session tooling", "priority": "medium"}
|
|
91
|
+
{"type": "codex_topic", "content": "Context lifeboat pattern for end-of-session tooling", "priority": "medium"},
|
|
92
|
+
{"type": "codex_update", "content": "Update 'droid' codex entry: add context-lifeboat pattern and subagent parallelisation decision from today's session", "priority": "low"}
|
|
91
93
|
]
|
|
92
94
|
}
|
|
93
95
|
```
|
|
@@ -76,20 +76,61 @@ Output:
|
|
|
76
76
|
**Subagent type:** Explore
|
|
77
77
|
|
|
78
78
|
```
|
|
79
|
-
Read {session_brief_path} for session context.
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
If
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
-
|
|
79
|
+
Read {session_brief_path} for session context. Pay particular attention to the
|
|
80
|
+
"Decisions Made" and "Key Learnings" sections — these are the primary signals
|
|
81
|
+
for both new codex topics and updates to existing entries.
|
|
82
|
+
|
|
83
|
+
Run `droid config --get tools.codex` and parse the JSON output for `codex_repo`.
|
|
84
|
+
If `codex_repo` is not set, output "No codex suggestions (codex not configured)" and stop.
|
|
85
|
+
|
|
86
|
+
--- Discover existing codex content ---
|
|
87
|
+
|
|
88
|
+
1. Attempt to read `{codex_repo}/.codex/manifest.yaml` to get an inventory of
|
|
89
|
+
existing entries and projects.
|
|
90
|
+
- If the manifest does not exist, fall back: list the top-level directories
|
|
91
|
+
inside `{codex_repo}` to infer project names.
|
|
92
|
+
2. Skim entry names, titles, and tags — you do NOT need to read full entry bodies
|
|
93
|
+
at this stage. Goal is a compact list of what already exists.
|
|
94
|
+
|
|
95
|
+
--- Compare session against existing codex content ---
|
|
96
|
+
|
|
97
|
+
3. For each decision or learning in the session brief, check whether it relates
|
|
98
|
+
to an existing codex entry or project:
|
|
99
|
+
- A decision "relates to" an entry if the topic, technology, or system name
|
|
100
|
+
overlaps (e.g., a decision about the droid project file format relates to
|
|
101
|
+
a codex entry named "droid" or "tool-configuration").
|
|
102
|
+
- Threshold: if 2 or more session decisions/learnings relate to the same
|
|
103
|
+
existing codex entry, emit a `codex_update` suggestion for that entry.
|
|
104
|
+
- For a single related decision/learning, use your judgment — only suggest
|
|
105
|
+
an update if the insight is clearly additive and not already captured.
|
|
106
|
+
|
|
107
|
+
4. Read the full content of any existing entries flagged in step 3 to confirm
|
|
108
|
+
the insight is genuinely new (avoid duplicate suggestions).
|
|
109
|
+
|
|
110
|
+
--- Identify net-new codex topics ---
|
|
111
|
+
|
|
112
|
+
5. For decisions/learnings that do NOT relate to any existing entry, consider
|
|
113
|
+
whether they merit a brand-new codex topic:
|
|
114
|
+
- Deep research findings
|
|
115
|
+
- Discovered patterns or best practices
|
|
116
|
+
- Non-trivial problems solved with reusable insights
|
|
117
|
+
|
|
118
|
+
--- Output ---
|
|
119
|
+
|
|
120
|
+
Produce two buckets:
|
|
121
|
+
|
|
122
|
+
**Suggested updates to existing codex entries (codex_update):**
|
|
123
|
+
For each:
|
|
124
|
+
- Entry name (as it appears in the codex)
|
|
125
|
+
- What to add or amend (specific content, not vague)
|
|
126
|
+
- Which session decisions/learnings drove this suggestion
|
|
127
|
+
- Why the existing entry is incomplete without this update
|
|
128
|
+
|
|
129
|
+
**Suggested new codex topics (codex_topic):**
|
|
130
|
+
For each:
|
|
131
|
+
- Proposed topic name
|
|
91
132
|
- Brief description of what to capture
|
|
92
133
|
- Why it's worth codifying (reusable, non-obvious, hard-won knowledge)
|
|
93
134
|
|
|
94
|
-
|
|
135
|
+
If neither bucket has entries, output "No codex suggestions".
|
|
95
136
|
```
|
package/package.json
CHANGED
package/src/commands/tui.tsx
CHANGED
|
@@ -39,6 +39,7 @@ import { ReposViewerScreen } from './tui/views/ReposViewerScreen';
|
|
|
39
39
|
import { useAppUpdate } from './tui/hooks/useAppUpdate';
|
|
40
40
|
import { useToolUpdates } from './tui/hooks/useToolUpdates';
|
|
41
41
|
import { checkGhAuth } from '../integrations/github';
|
|
42
|
+
import { checkGranolaAuth } from '../integrations/granola';
|
|
42
43
|
|
|
43
44
|
// Module-level variable to store exit message (printed after leaving alternate screen)
|
|
44
45
|
let exitMessage: string | null = null;
|
|
@@ -203,6 +204,16 @@ function App() {
|
|
|
203
204
|
}
|
|
204
205
|
}, []);
|
|
205
206
|
|
|
207
|
+
// Detect Granola MCP server on first mount by reading Claude Code settings
|
|
208
|
+
useEffect(() => {
|
|
209
|
+
if (!getConfigValue('integrations.granola.configured')) {
|
|
210
|
+
const isConfigured = checkGranolaAuth();
|
|
211
|
+
if (isConfigured) {
|
|
212
|
+
setConfigValue('integrations.granola.configured', true);
|
|
213
|
+
}
|
|
214
|
+
}
|
|
215
|
+
}, []);
|
|
216
|
+
|
|
206
217
|
useInput(
|
|
207
218
|
(input, key) => {
|
|
208
219
|
if (message) setMessage(null);
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { join } from 'path';
|
|
2
|
+
import { homedir } from 'os';
|
|
3
|
+
import { existsSync, readFileSync } from 'fs';
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* Check if a Granola MCP server is registered in Claude Code's settings.
|
|
7
|
+
* Returns true if any mcpServers entry key contains "granola" (case-insensitive).
|
|
8
|
+
*/
|
|
9
|
+
export function checkGranolaAuth(): boolean {
|
|
10
|
+
try {
|
|
11
|
+
const settingsPath = join(homedir(), '.claude', 'settings.json');
|
|
12
|
+
if (!existsSync(settingsPath)) {
|
|
13
|
+
return false;
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
const raw = readFileSync(settingsPath, 'utf-8');
|
|
17
|
+
const settings = JSON.parse(raw) as Record<string, unknown>;
|
|
18
|
+
|
|
19
|
+
const mcpServers = settings['mcpServers'];
|
|
20
|
+
if (!mcpServers || typeof mcpServers !== 'object') {
|
|
21
|
+
return false;
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
return Object.keys(mcpServers).some((key) => key.toLowerCase().includes('granola'));
|
|
25
|
+
} catch {
|
|
26
|
+
return false;
|
|
27
|
+
}
|
|
28
|
+
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "droid-brain",
|
|
3
|
-
"version": "0.4.
|
|
3
|
+
"version": "0.4.1",
|
|
4
4
|
"description": "Your scratchpad (or brain) - a collaborative space for planning and research. Create docs with /brain plan, /brain research, or /brain review. Use @mentions for async discussion. Docs persist across sessions.",
|
|
5
5
|
"author": {
|
|
6
6
|
"name": "Orderful",
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
name: brain
|
|
2
2
|
description: "Your scratchpad (or brain) - a collaborative space for planning and research. Create docs with /brain plan, /brain research, or /brain review. Use @mentions for async discussion. Docs persist across sessions."
|
|
3
|
-
version: 0.4.
|
|
3
|
+
version: 0.4.1
|
|
4
4
|
status: beta
|
|
5
5
|
|
|
6
6
|
includes:
|
|
@@ -47,6 +47,12 @@ droid config --set tools.brain.brain_dir="{user's choice}"
|
|
|
47
47
|
|
|
48
48
|
**Overrides:** This skill supports user-defined overrides. See `/droid` skill § Skill Overrides for how to create, register, and use overrides.
|
|
49
49
|
|
|
50
|
+
## Custom Instructions
|
|
51
|
+
|
|
52
|
+
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.
|
|
53
|
+
|
|
54
|
+
Example: `/brain research caching -- focus on Redis patterns`
|
|
55
|
+
|
|
50
56
|
## Commands
|
|
51
57
|
|
|
52
58
|
**Reserved keywords:** `search`, `add`, `check`, `cleanup`, `done`
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "droid-coach",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.3.0",
|
|
4
4
|
"description": "Learning-mode AI assistance - AI as coach, not crutch. Use /coach plan for co-authored planning, /coach scaffold for structure with hints, /coach review for Socratic questions.",
|
|
5
5
|
"author": {
|
|
6
6
|
"name": "Orderful",
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
name: coach
|
|
2
2
|
description: "Learning-mode AI assistance - AI as coach, not crutch. Use /coach plan for co-authored planning, /coach scaffold for structure with hints, /coach review for Socratic questions."
|
|
3
|
-
version: 0.
|
|
3
|
+
version: 0.3.0
|
|
4
4
|
status: beta
|
|
5
5
|
|
|
6
6
|
includes:
|
|
@@ -20,3 +20,7 @@ config_schema:
|
|
|
20
20
|
type: string
|
|
21
21
|
description: "How detailed scaffold hints should be: minimal (signatures only), medium (hints), detailed (pseudocode)"
|
|
22
22
|
default: "medium"
|
|
23
|
+
coaching_intensity:
|
|
24
|
+
type: string
|
|
25
|
+
description: "How Socratic coaching interactions are: light (1-2 targeted questions, concise), moderate (2-3 questions, brief context), deep (thorough exploration, current behaviour)"
|
|
26
|
+
default: "moderate"
|
|
@@ -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:
|