@orderful/droid 0.33.1 → 0.34.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.
Files changed (79) hide show
  1. package/CHANGELOG.md +22 -0
  2. package/dist/bin/droid.js +689 -102
  3. package/dist/commands/config.d.ts.map +1 -1
  4. package/dist/commands/repos.d.ts +21 -0
  5. package/dist/commands/repos.d.ts.map +1 -0
  6. package/dist/commands/tui/components/SettingsDetails.d.ts +2 -1
  7. package/dist/commands/tui/components/SettingsDetails.d.ts.map +1 -1
  8. package/dist/commands/tui/types.d.ts +1 -1
  9. package/dist/commands/tui/types.d.ts.map +1 -1
  10. package/dist/commands/tui/views/ReposManagementScreen.d.ts +6 -0
  11. package/dist/commands/tui/views/ReposManagementScreen.d.ts.map +1 -0
  12. package/dist/commands/tui/views/ReposViewerScreen.d.ts +5 -0
  13. package/dist/commands/tui/views/ReposViewerScreen.d.ts.map +1 -0
  14. package/dist/commands/tui.d.ts.map +1 -1
  15. package/dist/index.js +156 -26
  16. package/dist/lib/config.d.ts +34 -1
  17. package/dist/lib/config.d.ts.map +1 -1
  18. package/dist/lib/types.d.ts +10 -1
  19. package/dist/lib/types.d.ts.map +1 -1
  20. package/dist/tools/brain/skills/brain/SKILL.md +2 -2
  21. package/dist/tools/brain/skills/brain/references/workflows.md +10 -10
  22. package/dist/tools/coach/skills/coach/SKILL.md +6 -6
  23. package/dist/tools/codex/skills/codex/SKILL.md +5 -5
  24. package/dist/tools/codex/skills/codex/references/creating.md +2 -2
  25. package/dist/tools/codex/skills/codex/references/decisions.md +2 -2
  26. package/dist/tools/codex/skills/codex/references/loading.md +1 -1
  27. package/dist/tools/codex/skills/codex/references/topics.md +2 -2
  28. package/dist/tools/codex/skills/codex/scripts/git-finish-write.d.ts +1 -1
  29. package/dist/tools/codex/skills/codex/scripts/git-finish-write.ts +2 -2
  30. package/dist/tools/codex/skills/codex/scripts/git-preamble.d.ts +1 -1
  31. package/dist/tools/codex/skills/codex/scripts/git-preamble.ts +3 -3
  32. package/dist/tools/codex/skills/codex/scripts/git-start-write.d.ts +1 -1
  33. package/dist/tools/codex/skills/codex/scripts/git-start-write.ts +2 -2
  34. package/dist/tools/comments/skills/comments/SKILL.md +9 -9
  35. package/dist/tools/plan/skills/plan/SKILL.md +2 -2
  36. package/dist/tools/plan/skills/plan/references/workflows.md +2 -2
  37. package/dist/tools/project/skills/project/SKILL.md +1 -1
  38. package/dist/tools/project/skills/project/references/creating.md +2 -2
  39. package/dist/tools/project/skills/project/references/loading.md +1 -1
  40. package/dist/tools/tech-design/skills/tech-design/SKILL.md +2 -2
  41. package/dist/tools/tech-design/skills/tech-design/references/publish.md +3 -3
  42. package/dist/tools/tech-design/skills/tech-design/references/start.md +29 -3
  43. package/dist/tools/tech-design/skills/tech-design/references/think.md +1 -1
  44. package/dist/tools/wrapup/skills/wrapup/references/subagent-prompts.md +3 -3
  45. package/package.json +1 -1
  46. package/src/bin/droid.ts +39 -0
  47. package/src/commands/config.ts +14 -1
  48. package/src/commands/repos.ts +185 -0
  49. package/src/commands/tui/components/SettingsDetails.tsx +42 -13
  50. package/src/commands/tui/types.ts +1 -1
  51. package/src/commands/tui/views/ReposManagementScreen.tsx +291 -0
  52. package/src/commands/tui/views/ReposViewerScreen.tsx +49 -0
  53. package/src/commands/tui/views/SkillConfigScreen.tsx +2 -2
  54. package/src/commands/tui.tsx +51 -4
  55. package/src/lib/config.test.ts +228 -1
  56. package/src/lib/config.ts +205 -4
  57. package/src/lib/types.ts +13 -1
  58. package/src/tools/brain/skills/brain/SKILL.md +2 -2
  59. package/src/tools/brain/skills/brain/references/workflows.md +10 -10
  60. package/src/tools/coach/skills/coach/SKILL.md +6 -6
  61. package/src/tools/codex/skills/codex/SKILL.md +5 -5
  62. package/src/tools/codex/skills/codex/references/creating.md +2 -2
  63. package/src/tools/codex/skills/codex/references/decisions.md +2 -2
  64. package/src/tools/codex/skills/codex/references/loading.md +1 -1
  65. package/src/tools/codex/skills/codex/references/topics.md +2 -2
  66. package/src/tools/codex/skills/codex/scripts/git-finish-write.ts +2 -2
  67. package/src/tools/codex/skills/codex/scripts/git-preamble.ts +3 -3
  68. package/src/tools/codex/skills/codex/scripts/git-start-write.ts +2 -2
  69. package/src/tools/comments/skills/comments/SKILL.md +9 -9
  70. package/src/tools/plan/skills/plan/SKILL.md +2 -2
  71. package/src/tools/plan/skills/plan/references/workflows.md +2 -2
  72. package/src/tools/project/skills/project/SKILL.md +1 -1
  73. package/src/tools/project/skills/project/references/creating.md +2 -2
  74. package/src/tools/project/skills/project/references/loading.md +1 -1
  75. package/src/tools/tech-design/skills/tech-design/SKILL.md +2 -2
  76. package/src/tools/tech-design/skills/tech-design/references/publish.md +3 -3
  77. package/src/tools/tech-design/skills/tech-design/references/start.md +29 -3
  78. package/src/tools/tech-design/skills/tech-design/references/think.md +1 -1
  79. package/src/tools/wrapup/skills/wrapup/references/subagent-prompts.md +3 -3
@@ -9,7 +9,7 @@ Detailed procedures for each brain operation.
9
9
  **Steps:**
10
10
 
11
11
  1. **Read config first (MANDATORY)**
12
- - Run `droid config brain` and parse the JSON output
12
+ - Run `droid config --get tools.brain` and parse the JSON output
13
13
  - Use the `brain_dir` value from the config
14
14
  - If `brain_dir` is not configured, **ask the user** where they want brain docs stored
15
15
  - **Do NOT skip this step or assume defaults**
@@ -48,7 +48,7 @@ Detailed procedures for each brain operation.
48
48
  **Steps:**
49
49
 
50
50
  1. **Read config first (MANDATORY)**
51
- - Run `droid config brain` and parse the JSON output
51
+ - Run `droid config --get tools.brain` and parse the JSON output
52
52
  - Use the `brain_dir` and `inbox_folder` values from the config
53
53
  - If `brain_dir` is not configured, **ask the user** where they want brain docs stored
54
54
  - **Do NOT skip this step or assume defaults**
@@ -78,8 +78,8 @@ Detailed procedures for each brain operation.
78
78
  - Related work or prior decisions?
79
79
 
80
80
  7. **Add placeholder comments** for sections needing user input:
81
- - Get `user_mention` from config: `droid config brain | grep user_mention`
82
- - Use `> @{user_mention}` for placeholders (e.g., `> @fry - Please provide requirements`)
81
+ - Get `user_mention` from config: `droid config --get user_mention`
82
+ - Use `> @{user_mention}` for placeholders (e.g., `> @{user} - Please provide requirements`)
83
83
  - **CRITICAL:** NEVER use `@droid` - that's for user-to-AI comments, not AI-to-user
84
84
 
85
85
  8. **Write the doc** with template structure and initial context
@@ -95,7 +95,7 @@ Detailed procedures for each brain operation.
95
95
  **Steps:**
96
96
 
97
97
  1. **Read config first (MANDATORY)**
98
- - Run `droid config brain` and parse the JSON output
98
+ - Run `droid config --get tools.brain` and parse the JSON output
99
99
  - Use the `brain_dir` and `inbox_folder` values from the config
100
100
  - If `brain_dir` is not configured, **ask the user** where they want brain docs stored
101
101
  - **Do NOT skip this step or assume defaults**
@@ -165,7 +165,7 @@ Detailed procedures for each brain operation.
165
165
  2. **Read active doc**
166
166
 
167
167
  3. **Check preserve_comments setting:**
168
- - Run `droid config comments` and parse the JSON output
168
+ - Run `droid config --get tools.comments` and parse the JSON output
169
169
  - Use the `preserve_comments` value (default: `true`)
170
170
 
171
171
  4. **Find all `> @droid` comments**
@@ -174,9 +174,9 @@ Detailed procedures for each brain operation.
174
174
  5. **For each comment:**
175
175
  - Show the comment and surrounding context
176
176
  - Address the question/request
177
- - Add response as blockquote with user's mention (from `droid config brain`): `> @{user_mention} Your response here`
178
- - Example: `> @fry Yes, the index covers that query pattern.`
179
- - **CRITICAL:** NEVER use `@droid` in your responses. Use `@{user_mention}` from config (e.g., `@fry`)
177
+ - Add response as blockquote with user's mention (from `droid config --get tools.brain`): `> @{user_mention} Your response here`
178
+ - Example: `> @{user} Yes, the index covers that query pattern.`
179
+ - **CRITICAL:** NEVER use `@droid` in your responses. Use `@{user_mention}` from config (e.g., `@{user}`)
180
180
  - **CRITICAL:** Always include the `>` prefix to maintain blockquote formatting
181
181
  - **CRITICAL:** If `preserve_comments: true`, keep the original `@droid` comment and add your response below it. Do NOT remove the original comment.
182
182
 
@@ -216,7 +216,7 @@ Detailed procedures for each brain operation.
216
216
  **Steps:**
217
217
 
218
218
  1. **Read config first (MANDATORY)**
219
- - Run `droid config brain` and parse the JSON output
219
+ - Run `droid config --get tools.brain` and parse the JSON output
220
220
  - Use the `brain_dir` value from the config
221
221
  - If `brain_dir` is not configured, **ask the user** where they want brain docs stored
222
222
  - **Do NOT skip this step or assume defaults**
@@ -53,11 +53,11 @@ plan → AI scaffolds → human implements → AI coaches → iterate → ship
53
53
  | -------------------- | -------- | ------------------------------------------------------- |
54
54
  | `scaffold_verbosity` | `medium` | How detailed hints are: `minimal`, `medium`, `detailed` |
55
55
 
56
- <!-- Note: @mention is the target, not author. @fry = AI talking TO user, @droid = user talking TO AI -->
57
- > @fry Not yet - droid currently shows config as free text input. But we could add an `enum` type to the config schema that presents as a select dropdown in the TUI. Good feature request - want me to create an issue for it?
56
+ <!-- Note: @mention is the target, not author. @{user} = AI talking TO user, @droid = user talking TO AI -->
57
+ > @{user} Not yet - droid currently shows config as free text input. But we could add an `enum` type to the config schema that presents as a select dropdown in the TUI. Good feature request - want me to create an issue for it?
58
58
  > @droid yes lets do that
59
59
 
60
- Run `droid config coach` to get the merged configuration.
60
+ Run `droid config --get tools.coach` to get the merged configuration.
61
61
 
62
62
  ---
63
63
 
@@ -136,9 +136,9 @@ Run `droid config coach` to get the merged configuration.
136
136
  **Example inline comments:**
137
137
 
138
138
  ```typescript
139
- // @fry Why did you choose a Map here instead of an object?
140
- // @fry What happens if this promise rejects?
141
- // @fry I notice you're mutating state directly - was that intentional?
139
+ // @{user} Why did you choose a Map here instead of an object?
140
+ // @{user} What happens if this promise rejects?
141
+ // @{user} I notice you're mutating state directly - was that intentional?
142
142
  ```
143
143
 
144
144
  > @droid is it worth mentioning using the correct comment syntax for the file language? We typically use TS but could be others
@@ -59,7 +59,7 @@ The codex skill includes three git scripts. **Always use these instead of raw gi
59
59
  ### Read Operations (search, load, list)
60
60
 
61
61
  ```bash
62
- droid config codex | droid exec codex git-preamble --config -
62
+ droid config --get tools.codex | droid exec codex git-preamble --config -
63
63
  # Then proceed with the read
64
64
  ```
65
65
 
@@ -67,12 +67,12 @@ droid config codex | droid exec codex git-preamble --config -
67
67
 
68
68
  ```bash
69
69
  # 1. Start write (runs preamble + creates branch)
70
- droid config codex | droid exec codex git-start-write --config - --branch codex/{action}-{name}
70
+ droid config --get tools.codex | droid exec codex git-start-write --config - --branch codex/{action}-{name}
71
71
 
72
72
  # 2. Make your changes (write files)
73
73
 
74
74
  # 3. Finish write (commit + PR + return to main)
75
- droid config codex | droid exec codex git-finish-write --config - \
75
+ droid config --get tools.codex | droid exec codex git-finish-write --config - \
76
76
  --message "{commit message}" \
77
77
  --pr-title "{PR title}" \
78
78
  --pr-body "{PR description}"
@@ -141,7 +141,7 @@ fi
141
141
 
142
142
  ## Configuration
143
143
 
144
- **ALWAYS run `droid config codex` first and parse the JSON output.**
144
+ **ALWAYS run `droid config --get tools.codex` first and parse the JSON output.**
145
145
 
146
146
  | Setting | Default | Description |
147
147
  | ---------------- | --------------------------------- | ----------------------------- |
@@ -200,7 +200,7 @@ Parse args by splitting on ` -- `. First part = search terms, second part = inst
200
200
 
201
201
  1. **Run preamble first:**
202
202
  ```bash
203
- droid config codex | droid exec codex git-preamble --config -
203
+ droid config --get tools.codex | droid exec codex git-preamble --config -
204
204
  ```
205
205
  2. **Read `{codex_repo}/index.yaml`** - this contains all entry names and aliases for fast lookup
206
206
  3. Match `{name}` against index keys and aliases (case-insensitive, partial match)
@@ -31,7 +31,7 @@ A project named '{name}' already exists. Did you mean to load it?
31
31
  ### 3. Start Write Operation
32
32
 
33
33
  ```bash
34
- droid config codex | droid exec droid-codex git-start-write --config - --branch codex/new-{name}
34
+ droid config --get tools.codex | droid exec droid-codex git-start-write --config - --branch codex/new-{name}
35
35
  ```
36
36
 
37
37
  This runs the git preamble (ensures clean main + pulls latest) and creates the branch.
@@ -62,7 +62,7 @@ If user provides context, fill in what we know:
62
62
  ### 7. Finish Write Operation
63
63
 
64
64
  ```bash
65
- droid config codex | droid exec droid-codex git-finish-write --config - \
65
+ droid config --get tools.codex | droid exec droid-codex git-finish-write --config - \
66
66
  --message "feat(codex): scaffold {name} project" \
67
67
  --pr-title "New project: {name}" \
68
68
  --pr-body "Scaffold for {name} project"
@@ -42,7 +42,7 @@ I'll add this decision. Can you clarify:
42
42
  ### 3. Start Write Operation
43
43
 
44
44
  ```bash
45
- droid config codex | droid exec droid-codex git-start-write --config - --branch codex/decision-{short-summary}
45
+ droid config --get tools.codex | droid exec droid-codex git-start-write --config - --branch codex/decision-{short-summary}
46
46
  ```
47
47
 
48
48
  ### 4. Read and Update DECISIONS.md
@@ -77,7 +77,7 @@ Update the `updated` field in frontmatter to today's date.
77
77
  ### 5. Finish Write Operation
78
78
 
79
79
  ```bash
80
- droid config codex | droid exec droid-codex git-finish-write --config - \
80
+ droid config --get tools.codex | droid exec droid-codex git-finish-write --config - \
81
81
  --message "decision({active}): {summary}" \
82
82
  --pr-title "Decision: {summary}" \
83
83
  --pr-body "{full decision text}"
@@ -6,7 +6,7 @@ Detailed procedure for loading entries from the codex.
6
6
 
7
7
  **IMPORTANT:** Use the index file for fast lookups. This avoids expensive file-by-file searching.
8
8
 
9
- 1. **Get codex repo path** by running `droid config codex` and parsing the JSON output
9
+ 1. **Get codex repo path** by running `droid config --get tools.codex` and parsing the JSON output
10
10
  2. **Read the index file** at `{codex_repo}/index.yaml`:
11
11
  ```yaml
12
12
  # index.yaml structure
@@ -46,7 +46,7 @@ Ask user or infer:
46
46
  ### 4. Start Write Operation
47
47
 
48
48
  ```bash
49
- droid config codex | droid exec droid-codex git-start-write --config - --branch codex/topic-{name}
49
+ droid config --get tools.codex | droid exec droid-codex git-start-write --config - --branch codex/topic-{name}
50
50
  ```
51
51
 
52
52
  ### 5. Read Template
@@ -124,7 +124,7 @@ codebase_paths:
124
124
  ### 7. Finish Write Operation
125
125
 
126
126
  ```bash
127
- droid config codex | droid exec droid-codex git-finish-write --config - \
127
+ droid config --get tools.codex | droid exec droid-codex git-finish-write --config - \
128
128
  --message "topic: add {name}" \
129
129
  --pr-title "Topic: {name}" \
130
130
  --pr-body "New topic from codebase exploration"
@@ -6,7 +6,7 @@
6
6
  * and returning to main.
7
7
  *
8
8
  * Usage:
9
- * droid config codex | droid exec droid-codex git-finish-write --config - \
9
+ * droid config --get tools.codex | droid exec droid-codex git-finish-write --config - \
10
10
  * --message "feat: add new topic" \
11
11
  * --pr-title "New topic: caching" \
12
12
  * --pr-body "Added exploration of caching patterns"
@@ -6,7 +6,7 @@
6
6
  * and returning to main.
7
7
  *
8
8
  * Usage:
9
- * droid config codex | droid exec droid-codex git-finish-write --config - \
9
+ * droid config --get tools.codex | droid exec droid-codex git-finish-write --config - \
10
10
  * --message "feat: add new topic" \
11
11
  * --pr-title "New topic: caching" \
12
12
  * --pr-body "Added exploration of caching patterns"
@@ -194,7 +194,7 @@ const { config, message, prTitle, prBody } = parseArgs(args);
194
194
  if (!config) {
195
195
  console.log(JSON.stringify({
196
196
  success: false,
197
- error: 'Missing --config. Usage: droid config codex | droid exec droid-codex git-finish-write --config - --message "..." --pr-title "..."',
197
+ error: 'Missing --config. Usage: droid config --get tools.codex | droid exec droid-codex git-finish-write --config - --message "..." --pr-title "..."',
198
198
  }));
199
199
  process.exit(1);
200
200
  }
@@ -6,7 +6,7 @@
6
6
  * Run this before ANY codex operation (read or write).
7
7
  *
8
8
  * Usage:
9
- * droid config codex | droid exec droid-codex git-preamble --config -
9
+ * droid config --get tools.codex | droid exec droid-codex git-preamble --config -
10
10
  *
11
11
  * What it does:
12
12
  * 1. Checkout main (abort any stuck merge/rebase)
@@ -6,7 +6,7 @@
6
6
  * Run this before ANY codex operation (read or write).
7
7
  *
8
8
  * Usage:
9
- * droid config codex | droid exec droid-codex git-preamble --config -
9
+ * droid config --get tools.codex | droid exec droid-codex git-preamble --config -
10
10
  *
11
11
  * What it does:
12
12
  * 1. Checkout main (abort any stuck merge/rebase)
@@ -135,7 +135,7 @@ const { config } = parseArgs(args);
135
135
  if (!config) {
136
136
  console.log(JSON.stringify({
137
137
  success: false,
138
- error: 'Missing --config. Usage: droid config codex | droid exec droid-codex git-preamble --config -',
138
+ error: 'Missing --config. Usage: droid config --get tools.codex | droid exec droid-codex git-preamble --config -',
139
139
  }));
140
140
  process.exit(1);
141
141
  }
@@ -143,7 +143,7 @@ if (!config) {
143
143
  if (!config.codex_repo) {
144
144
  console.log(JSON.stringify({
145
145
  success: false,
146
- error: 'Missing codex_repo in config. Run: droid config codex --set codex_repo=~/path/to/codex',
146
+ error: 'Missing codex_repo in config. Run: droid config --get tools.codex --set codex_repo=~/path/to/codex',
147
147
  }));
148
148
  process.exit(1);
149
149
  }
@@ -6,7 +6,7 @@
6
6
  * and creating a new branch.
7
7
  *
8
8
  * Usage:
9
- * droid config codex | droid exec droid-codex git-start-write --config - --branch codex/new-feature
9
+ * droid config --get tools.codex | droid exec droid-codex git-start-write --config - --branch codex/new-feature
10
10
  *
11
11
  * Options:
12
12
  * --config <json> Config with codex_repo path (required)
@@ -6,7 +6,7 @@
6
6
  * and creating a new branch.
7
7
  *
8
8
  * Usage:
9
- * droid config codex | droid exec droid-codex git-start-write --config - --branch codex/new-feature
9
+ * droid config --get tools.codex | droid exec droid-codex git-start-write --config - --branch codex/new-feature
10
10
  *
11
11
  * Options:
12
12
  * --config <json> Config with codex_repo path (required)
@@ -143,7 +143,7 @@ const { config, branch } = parseArgs(args);
143
143
  if (!config) {
144
144
  console.log(JSON.stringify({
145
145
  success: false,
146
- error: 'Missing --config. Usage: droid config codex | droid exec droid-codex git-start-write --config - --branch <name>',
146
+ error: 'Missing --config. Usage: droid config --get tools.codex | droid exec droid-codex git-start-write --config - --branch <name>',
147
147
  }));
148
148
  process.exit(1);
149
149
  }
@@ -19,10 +19,10 @@ Leave comments for the AI using `> @droid`:
19
19
  > @droid Can you add error handling here?
20
20
  ```
21
21
 
22
- The AI will respond with `> @{user_mention}` (configured in droid setup, e.g., `@fry`):
22
+ The AI will respond with `> @{user_mention}` (configured in droid setup, e.g., `@{user}`):
23
23
 
24
24
  ```markdown
25
- > @fry I think this approach is solid. One consideration...
25
+ > @{user} I think this approach is solid. One consideration...
26
26
  ```
27
27
 
28
28
  ## Tag Convention
@@ -39,19 +39,19 @@ The directionality can be confusing. The @mention is the **target**, not the aut
39
39
  Think of it like addressing someone in conversation:
40
40
 
41
41
  - "Hey @droid, what do you think?" → User talking TO the AI
42
- - "Good point @fry, here's my take..." → AI talking TO the user
42
+ - "Good point @{user}, here's my take..." → AI talking TO the user
43
43
 
44
44
  **Examples:**
45
45
 
46
46
  ```markdown
47
47
  > @droid Can you explain this function? ← User asking AI
48
- > @fry This function calculates the hash... ← AI responding to user
48
+ > @{user} This function calculates the hash... ← AI responding to user
49
49
 
50
50
  > @droid Should we refactor this? ← User asking AI
51
- > @fry Yes, I'd suggest extracting... ← AI responding to user
51
+ > @{user} Yes, I'd suggest extracting... ← AI responding to user
52
52
  ```
53
53
 
54
- **Never flip this.** When responding to a `@droid` comment, always use `@{user}` (e.g., `@fry`) because you're addressing the user, not yourself.
54
+ **Never flip this.** When responding to a `@droid` comment, always use `@{user}` (e.g., `@{user}`) because you're addressing the user, not yourself.
55
55
 
56
56
  ## When NOT to Use
57
57
 
@@ -84,7 +84,7 @@ When you find a `@droid` marker:
84
84
 
85
85
  #### Pass 1: Read & Analyse
86
86
 
87
- 1. **Read config first:** Run `droid config comments` and check `preserve_comments` setting (default: `true`)
87
+ 1. **Read config first:** Run `droid config --get tools.comments` and check `preserve_comments` setting (default: `true`)
88
88
  2. Search for ALL `> @droid` comments (and any configured `ai_mentions`) in the specified scope
89
89
  3. If there's a `git diff`, check those files first for relevant context
90
90
  4. **Read all comments before responding** - understand the full picture
@@ -109,11 +109,11 @@ When you find a `@droid` marker:
109
109
 
110
110
  ## Configuration
111
111
 
112
- Configured via `droid config comments` (merges global config with skill overrides):
112
+ Configured via `droid config --get tools.comments` (merges global config with skill overrides):
113
113
 
114
114
  ```yaml
115
115
  # Override the user mention (default: from global config)
116
- user_mention: "@fry"
116
+ user_mention: "@{user}"
117
117
 
118
118
  # Additional AI mentions to recognize (e.g., if you're used to @claude)
119
119
  ai_mentions: "@claude"
@@ -24,8 +24,8 @@ Task-scoped planning for PRs, tickets, and small features. Lighter than `/tech-d
24
24
  ## Configuration
25
25
 
26
26
  Uses config from dependencies:
27
- - `droid config brain` → `brain_dir`, `inbox_dir`
28
- - `droid config comments` → `user_mention`
27
+ - `droid config --get tools.brain` → `brain_dir`, `inbox_dir`
28
+ - `droid config --get tools.comments` → `user_mention`
29
29
 
30
30
  ## Commands
31
31
 
@@ -7,8 +7,8 @@ Detailed command flows for the plan skill.
7
7
  ### Step 1: Read Configuration
8
8
 
9
9
  ```bash
10
- droid config brain # → brain_dir, inbox_dir
11
- droid config comments # → user_mention
10
+ droid config --get tools.brain # → brain_dir, inbox_dir
11
+ droid config --get tools.comments # → user_mention
12
12
  ```
13
13
 
14
14
  If brain not configured, ask user for `brain_dir` location.
@@ -26,7 +26,7 @@ Chat history disappears. Projects persist.
26
26
 
27
27
  ## Configuration
28
28
 
29
- **IMPORTANT:** Run `droid config project` first to get the merged configuration.
29
+ **IMPORTANT:** Run `droid config --get tools.project` first to get the merged configuration.
30
30
 
31
31
  | Setting | Default | Description |
32
32
  | -------------- | ------------ | -------------------------------------------------- |
@@ -5,7 +5,7 @@
5
5
  ## Procedure
6
6
 
7
7
  1. **Read config first**
8
- - Run `droid config project` and parse the JSON output
8
+ - Run `droid config --get tools.project` and parse the JSON output
9
9
  - Use `projects_dir` (required - if not configured, inform user to set it up)
10
10
  - Use `preset` if configured (markdown or obsidian)
11
11
 
@@ -77,7 +77,7 @@ Bridge shared organizational knowledge (codex) to personal working memory (proje
77
77
  - If `{name} --from codex:{codex-name}` → use custom project name
78
78
 
79
79
  2. **Load codex entry**
80
- - Run `droid config codex` and get `codex_repo` from the JSON output
80
+ - Run `droid config --get tools.codex` and get `codex_repo` from the JSON output
81
81
  - Sync: `git -C {codex_repo} pull --rebase --quiet`
82
82
  - Locate `{codex_repo}/projects/{name}/`
83
83
  - If not found → error with suggestions from available projects
@@ -7,7 +7,7 @@
7
7
  ## Procedure
8
8
 
9
9
  1. **Determine projects directory**
10
- - Run `droid config project` and parse the JSON output
10
+ - Run `droid config --get tools.project` and parse the JSON output
11
11
  - Use the `projects_dir` value
12
12
  - If not configured → inform user to create `~/.droid/skills/project/overrides.yaml` with `projects_dir: /path/to/projects`
13
13
 
@@ -28,8 +28,8 @@ The `/tech-design` skill brings tech design authoring into the same AI-augmented
28
28
 
29
29
  Before using tech-design, verify:
30
30
 
31
- 1. **Brain skill configured:** Run `droid config brain` and check if `brain_dir` is set
32
- 2. **Codex skill configured:** Run `droid config codex` and check if `codex_repo` is set
31
+ 1. **Brain skill configured:** Run `droid config --get tools.brain` and check if `brain_dir` is set
32
+ 2. **Codex skill configured:** Run `droid config --get tools.codex` and check if `codex_repo` is set
33
33
  3. **gh CLI:** Required for PR workflows
34
34
 
35
35
  If prerequisites fail, guide user to configure:
@@ -25,7 +25,7 @@ if [ ! -f "$research_doc_path" ]; then
25
25
  fi
26
26
 
27
27
  # Codex repo must be configured (read from codex skill config)
28
- codex_repo=$(droid config codex | grep -o '"codex_repo": *"[^"]*"' | cut -d'"' -f4)
28
+ codex_repo=$(droid config --get tools.codex | grep -o '"codex_repo": *"[^"]*"' | cut -d'"' -f4)
29
29
  if [ -z "$codex_repo" ]; then
30
30
  echo "Error: Codex not configured."
31
31
  echo "Set up with: /codex"
@@ -134,7 +134,7 @@ Use codex git scripts for safety:
134
134
 
135
135
  ```bash
136
136
  # Use codex skill's git-start-write script
137
- droid config codex | droid exec droid-codex git-start-write \
137
+ droid config --get tools.codex | droid exec droid-codex git-start-write \
138
138
  --config - \
139
139
  --branch "codex/tech-design-$project"
140
140
  ```
@@ -232,7 +232,7 @@ After approval:
232
232
  - [ ] Begin implementation"
233
233
 
234
234
  # Use codex skill's git-finish-write script
235
- droid config codex | droid exec droid-codex git-finish-write \
235
+ droid config --get tools.codex | droid exec droid-codex git-finish-write \
236
236
  --config - \
237
237
  --message "$commit_msg" \
238
238
  --pr-title "$pr_title" \
@@ -12,8 +12,8 @@
12
12
 
13
13
  Check that required tools are configured:
14
14
 
15
- - **Brain skill:** Run `droid config brain` and check if `brain_dir` is set
16
- - **Codex skill:** Run `droid config codex` and check if `codex_repo` is set
15
+ - **Brain skill:** Run `droid config --get tools.brain` and check if `brain_dir` is set
16
+ - **Codex skill:** Run `droid config --get tools.codex` and check if `codex_repo` is set
17
17
 
18
18
  If prerequisites fail, guide user to configure:
19
19
 
@@ -92,7 +92,33 @@ Research for tech design: {brief description from PRD}
92
92
 
93
93
  Explore code repositories to discover patterns, similar features, integration points, and dependencies.
94
94
 
95
- **Note:** The specific repositories to search should be discovered from the project context or user's workspace. Common patterns to look for:
95
+ **Note:** The specific repositories to search should be discovered from the project context or user's workspace.
96
+
97
+ #### Unknown Repo Handling
98
+
99
+ When exploring and user mentions a repo not in the repos registry:
100
+
101
+ 1. Check available repos: `droid config --get repos`
102
+ 2. If repo not found in the list, prompt the user:
103
+ - "I don't have '{repo-name}' in your repos registry. Would you like to add it?"
104
+ 3. If user confirms, ask for the repository path:
105
+ - Suggest common patterns: `~/src/github.com/{repo-name}` or `~/code/{repo-name}`
106
+ 4. Add the repo: `droid repos add {repo-name} --path {path} --description "{optional description}"`
107
+ 5. Proceed with exploration using the newly registered repo
108
+
109
+ **Example:**
110
+
111
+ ```
112
+ User: "Check the orderful-workspace repo for similar patterns"
113
+ Assistant: I don't have 'orderful-workspace' in your repos registry. Would you like to add it?
114
+ User: Yes
115
+ Assistant: What's the path to orderful-workspace? (e.g., ~/src/github.com/orderful-workspace)
116
+ User: ~/src/github.com/orderful-workspace
117
+ Assistant: [Runs: droid repos add orderful-workspace --path ~/src/github.com/orderful-workspace --description "Main monorepo"]
118
+ Added orderful-workspace to your repos. Now exploring for similar patterns...
119
+ ```
120
+
121
+ **Common patterns to look for:**
96
122
 
97
123
  - **Existing similar features:**
98
124
  - Search for related functionality
@@ -227,7 +227,7 @@ Which would you prefer?
227
227
  **If option 3 (create comment):**
228
228
 
229
229
  ```bash
230
- # Get user_mention from: droid config tech-design
230
+ # Get user_mention from: droid config --get user_mention
231
231
  # Add comment to thought doc:
232
232
 
233
233
  > @{user} Explored events vs polling for status updates
@@ -31,7 +31,7 @@ Output format:
31
31
  ```
32
32
  Read {session_brief_path} for session context.
33
33
 
34
- First, run `droid config project` to get the project skill configuration.
34
+ First, run `droid config --get tools.project` to get the project skill configuration.
35
35
  Parse the JSON output to find the `projects_dir` value.
36
36
 
37
37
  If `projects_dir` is not set, skip project file analysis.
@@ -56,7 +56,7 @@ If no active project found, note that and skip.
56
56
  ```
57
57
  Read {session_brief_path} for session context.
58
58
 
59
- First, run `droid config brain` and parse the JSON output for the `brain_dir` setting.
59
+ First, run `droid config --get tools.brain` and parse the JSON output for the `brain_dir` setting.
60
60
  If not configured, skip brain doc analysis.
61
61
 
62
62
  If configured:
@@ -78,7 +78,7 @@ Output:
78
78
  ```
79
79
  Read {session_brief_path} for session context.
80
80
 
81
- Run `droid config codex` and check if `codex_repo` is set.
81
+ Run `droid config --get tools.codex` and check if `codex_repo` is set.
82
82
  If not configured, skip codex analysis.
83
83
 
84
84
  If the session involved:
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@orderful/droid",
3
- "version": "0.33.1",
3
+ "version": "0.34.1",
4
4
  "description": "AI workflow toolkit for sharing skills, commands, and agents across the team",
5
5
  "type": "module",
6
6
  "bin": {
package/src/bin/droid.ts CHANGED
@@ -9,6 +9,12 @@ import { uninstallCommand } from '../commands/uninstall';
9
9
  import { updateCommand } from '../commands/update';
10
10
  import { tuiCommand } from '../commands/tui';
11
11
  import { execCommand } from '../commands/exec';
12
+ import {
13
+ reposListCommand,
14
+ reposAddCommand,
15
+ reposRemoveCommand,
16
+ reposGetCommand,
17
+ } from '../commands/repos';
12
18
  import { getVersion } from '../lib/version';
13
19
 
14
20
  const version = getVersion();
@@ -32,6 +38,39 @@ program
32
38
  .option('-s, --set <key=value>', 'Set a config value')
33
39
  .action(configCommand);
34
40
 
41
+ // Repos command with subcommands
42
+ const repos = program
43
+ .command('repos')
44
+ .description('Manage repository registry');
45
+
46
+ repos
47
+ .command('list')
48
+ .description('List all registered repos')
49
+ .option('--json', 'Output as JSON')
50
+ .action((options) => reposListCommand(options));
51
+
52
+ repos
53
+ .command('add [name]')
54
+ .description('Add a repo to the registry')
55
+ .option('-p, --path <path>', 'Repository path')
56
+ .option('-d, --description <desc>', 'Repository description')
57
+ .action((name, options) =>
58
+ reposAddCommand(name, options.path, options.description),
59
+ );
60
+
61
+ repos
62
+ .command('remove [name]')
63
+ .description('Remove a repo from the registry')
64
+ .action((name) => reposRemoveCommand(name));
65
+
66
+ repos
67
+ .command('get <name>')
68
+ .description('Get a specific repo (JSON output for scripts)')
69
+ .action((name) => reposGetCommand(name));
70
+
71
+ // Default: list repos if no subcommand
72
+ repos.action(() => reposListCommand());
73
+
35
74
  program
36
75
  .command('tools')
37
76
  .description('Browse and manage available tools')
@@ -42,8 +42,14 @@ export function getToolConfig(toolName: string): ToolConfig {
42
42
  }
43
43
 
44
44
  export async function configCommand(tool?: string, options?: ConfigOptions): Promise<void> {
45
- // If tool provided, return merged config as JSON
45
+ // DEPRECATED: If tool provided, return merged config as JSON
46
+ // TODO: Remove in v1.0 - use `droid config --get tools.<tool>` instead
46
47
  if (tool) {
48
+ console.log(
49
+ chalk.yellow(
50
+ `Warning: 'droid config <tool>' is deprecated. Use 'droid config --get tools.${tool}' instead.`,
51
+ ),
52
+ );
47
53
  const toolConfig = getToolConfig(tool);
48
54
  console.log(JSON.stringify(toolConfig, null, 2));
49
55
  return;
@@ -94,6 +100,13 @@ export async function configCommand(tool?: string, options?: ConfigOptions): Pro
94
100
 
95
101
  const [, key, rawValue] = match;
96
102
 
103
+ // Guard repos key - should use `droid repos add/remove` instead
104
+ if (key === 'repos' || key.startsWith('repos.')) {
105
+ console.error(chalk.red('Cannot set repos via --set.'));
106
+ console.log(chalk.gray('Use: droid repos add/remove'));
107
+ process.exit(1);
108
+ }
109
+
97
110
  // Try to parse as JSON, otherwise use as string
98
111
  let value: unknown;
99
112
  try {