@orderful/droid 0.48.0 → 0.50.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/.claude-plugin/marketplace.json +1 -1
- package/.claude-plugin/plugin.json +2 -1
- package/CHANGELOG.md +24 -0
- package/bun.lock +137 -3
- package/dist/bin/droid.js +355 -90
- package/dist/commands/pack.d.ts +5 -0
- package/dist/commands/pack.d.ts.map +1 -0
- package/dist/index.js +11 -0
- package/dist/lib/pack.d.ts +31 -0
- package/dist/lib/pack.d.ts.map +1 -0
- package/dist/lib/types.d.ts +17 -0
- package/dist/lib/types.d.ts.map +1 -1
- package/dist/tools/brain/TOOL.yaml +2 -0
- package/dist/tools/coach/TOOL.yaml +4 -0
- package/dist/tools/code-review/.claude-plugin/plugin.json +3 -2
- package/dist/tools/code-review/TOOL.yaml +4 -1
- package/dist/tools/code-review/agents/codex-context-researcher.md +99 -0
- package/dist/tools/code-review/skills/code-review/SKILL.md +20 -1
- package/dist/tools/codex/.claude-plugin/plugin.json +1 -1
- package/dist/tools/codex/TOOL.yaml +3 -1
- package/dist/tools/codex/skills/codex/SKILL.md +5 -1
- package/dist/tools/codex/skills/codex/scripts/normalize-frontmatter.d.ts +61 -0
- package/dist/tools/codex/skills/codex/scripts/normalize-frontmatter.d.ts.map +1 -0
- package/dist/tools/codex/skills/codex/scripts/normalize-frontmatter.ts +402 -0
- package/dist/tools/comments/TOOL.yaml +2 -0
- package/dist/tools/droid/.claude-plugin/plugin.json +1 -1
- package/dist/tools/droid/TOOL.yaml +3 -1
- package/dist/tools/droid/skills/droid/SKILL.md +48 -2
- package/dist/tools/droid/skills/droid/references/new-tool-workflow.md +234 -0
- package/dist/tools/edi-schema/TOOL.yaml +2 -0
- package/dist/tools/excalidraw/TOOL.yaml +2 -0
- package/dist/tools/meeting/TOOL.yaml +2 -0
- package/dist/tools/pii/TOOL.yaml +2 -0
- package/dist/tools/plan/TOOL.yaml +4 -0
- package/dist/tools/project/TOOL.yaml +2 -0
- package/dist/tools/release/TOOL.yaml +2 -0
- package/dist/tools/share/TOOL.yaml +2 -0
- package/dist/tools/status-update/TOOL.yaml +4 -0
- package/dist/tools/tech-design/TOOL.yaml +2 -0
- package/dist/tools/wrapup/TOOL.yaml +2 -0
- package/package.json +3 -1
- package/scripts/build.ts +3 -2
- package/src/bin/droid.ts +9 -0
- package/src/commands/pack.ts +77 -0
- package/src/lib/pack.test.ts +85 -0
- package/src/lib/pack.ts +293 -0
- package/src/lib/types.ts +19 -0
- package/src/tools/brain/TOOL.yaml +2 -0
- package/src/tools/coach/TOOL.yaml +4 -0
- package/src/tools/code-review/.claude-plugin/plugin.json +3 -2
- package/src/tools/code-review/TOOL.yaml +4 -1
- package/src/tools/code-review/agents/codex-context-researcher.md +99 -0
- package/src/tools/code-review/skills/code-review/SKILL.md +20 -1
- package/src/tools/codex/.claude-plugin/plugin.json +1 -1
- package/src/tools/codex/TOOL.yaml +3 -1
- package/src/tools/codex/skills/codex/SKILL.md +5 -1
- package/src/tools/codex/skills/codex/scripts/normalize-frontmatter.test.ts +331 -0
- package/src/tools/codex/skills/codex/scripts/normalize-frontmatter.ts +402 -0
- package/src/tools/comments/TOOL.yaml +2 -0
- package/src/tools/droid/.claude-plugin/plugin.json +1 -1
- package/src/tools/droid/TOOL.yaml +3 -1
- package/src/tools/droid/skills/droid/SKILL.md +48 -2
- package/src/tools/droid/skills/droid/references/new-tool-workflow.md +234 -0
- package/src/tools/edi-schema/TOOL.yaml +2 -0
- package/src/tools/excalidraw/TOOL.yaml +2 -0
- package/src/tools/meeting/TOOL.yaml +2 -0
- package/src/tools/pii/TOOL.yaml +2 -0
- package/src/tools/plan/TOOL.yaml +4 -0
- package/src/tools/project/TOOL.yaml +2 -0
- package/src/tools/release/TOOL.yaml +2 -0
- package/src/tools/share/TOOL.yaml +2 -0
- package/src/tools/status-update/TOOL.yaml +4 -0
- package/src/tools/tech-design/TOOL.yaml +2 -0
- package/src/tools/wrapup/TOOL.yaml +2 -0
- package/dist/tools/codex/skills/codex/scripts/git-scripts.test.ts +0 -364
- package/dist/tools/pii/skills/pii/scripts/presidio.test.ts +0 -444
|
@@ -0,0 +1,234 @@
|
|
|
1
|
+
# New Tool Workflow
|
|
2
|
+
|
|
3
|
+
Detailed workflow for `/droid new {tool-name}`. Handles both from-scratch scaffolding and importing existing skill/agent files.
|
|
4
|
+
|
|
5
|
+
**Philosophy:** Fix what can be fixed automatically. Only ask the human about things that need judgement (security, audience). The PR should contain a clean, droid-standards-compliant tool — not the raw submission with warnings.
|
|
6
|
+
|
|
7
|
+
## Step 1: Parse Arguments
|
|
8
|
+
|
|
9
|
+
```
|
|
10
|
+
/droid new {tool-name} → scaffold from scratch
|
|
11
|
+
/droid new {tool-name} --from {path} → import existing file(s)
|
|
12
|
+
```
|
|
13
|
+
|
|
14
|
+
Tool name must be kebab-case. If not, convert it.
|
|
15
|
+
|
|
16
|
+
## Step 2: Import (if --from provided)
|
|
17
|
+
|
|
18
|
+
Determine input type by file extension or path type:
|
|
19
|
+
|
|
20
|
+
| Input | Handling |
|
|
21
|
+
|-------|----------|
|
|
22
|
+
| `.skill` or `.zip` | Extract to temp directory, locate SKILL.md and/or agent .md files inside |
|
|
23
|
+
| Directory | Use directly, scan for SKILL.md and agent .md files |
|
|
24
|
+
| Single `.md` file | Determine type: if frontmatter has `name`/`description`/`allowed-tools` → skill. If it has `tools`/`model` → agent. Otherwise → skill. |
|
|
25
|
+
|
|
26
|
+
If no `--from`, scaffold a blank SKILL.md using the template from AGENTS.md:
|
|
27
|
+
|
|
28
|
+
```yaml
|
|
29
|
+
---
|
|
30
|
+
name: {tool-name}
|
|
31
|
+
description: "{Tool description}. Use when {scenarios}. User prompts like {examples}."
|
|
32
|
+
globs: []
|
|
33
|
+
alwaysApply: false
|
|
34
|
+
allowed-tools: [Read, Edit, Write, Glob, Grep, Bash]
|
|
35
|
+
---
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
## Step 3: Transform Imported Content
|
|
39
|
+
|
|
40
|
+
Read imported files, check each rule, and **fix in-place**. Track what was changed for the summary.
|
|
41
|
+
|
|
42
|
+
### Frontmatter Fixes (auto-fix)
|
|
43
|
+
|
|
44
|
+
| Issue | Fix |
|
|
45
|
+
|-------|-----|
|
|
46
|
+
| Multiline description (`>`, `>-`, `\|`) | Rewrite as single-line quoted string |
|
|
47
|
+
| `name` not kebab-case | Convert to kebab-case |
|
|
48
|
+
| Missing `allowed-tools` | Analyse content for tool usage patterns (Bash commands, Read references, MCP tool calls) and generate the list |
|
|
49
|
+
| `allowed-tools` missing tools the content clearly needs | Add them |
|
|
50
|
+
| `globs` missing | Add `globs: []` |
|
|
51
|
+
| `alwaysApply` missing | Add `alwaysApply: false` |
|
|
52
|
+
|
|
53
|
+
### Description Rewrite (auto-fix)
|
|
54
|
+
|
|
55
|
+
The description must follow this pattern:
|
|
56
|
+
```
|
|
57
|
+
"{What it does}. Use when {scenarios}. User prompts like {examples}."
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
If the description doesn't match:
|
|
61
|
+
1. Read the content to understand what it does
|
|
62
|
+
2. Rewrite the description to match the pattern
|
|
63
|
+
3. Keep it as a single-line quoted string (CRITICAL — Claude Code's parser breaks on multiline YAML)
|
|
64
|
+
|
|
65
|
+
### Structure Recommendations (warn only)
|
|
66
|
+
|
|
67
|
+
| Check | Rule | Action |
|
|
68
|
+
|-------|------|--------|
|
|
69
|
+
| `references/` exists | Files should be referenced from SKILL.md | Warn if orphaned |
|
|
70
|
+
| Skill over 100 lines | Progressive disclosure recommended | Suggest extracting to references/ |
|
|
71
|
+
| `argument-hint` field | Recommended for skills with subcommands | Suggest adding |
|
|
72
|
+
|
|
73
|
+
## Step 4: Security Scan
|
|
74
|
+
|
|
75
|
+
Flag these patterns with clear severity levels:
|
|
76
|
+
|
|
77
|
+
### High Severity (block until resolved)
|
|
78
|
+
|
|
79
|
+
| Pattern | Why |
|
|
80
|
+
|---------|-----|
|
|
81
|
+
| Base64-encoded content (`base64`, long alphanumeric strings) | Could hide malicious instructions |
|
|
82
|
+
| System prompt extraction (`system prompt`, `instructions above`, `ignore previous`) | Prompt injection attempt |
|
|
83
|
+
| Encoded/obfuscated content (hex escapes, unicode escapes) | Evasion technique |
|
|
84
|
+
|
|
85
|
+
### Medium Severity (warn, require acknowledgement)
|
|
86
|
+
|
|
87
|
+
| Pattern | Why |
|
|
88
|
+
|---------|-----|
|
|
89
|
+
| `Bash` in allowed-tools without clear justification | Shell access is powerful |
|
|
90
|
+
| External URLs in instructions (http/https links) | Could exfiltrate data or load remote instructions |
|
|
91
|
+
| File system paths outside expected directories | Potential data access |
|
|
92
|
+
| `dangerouslyDisableSandbox` or similar sandbox bypass | Security boundary violation |
|
|
93
|
+
|
|
94
|
+
### Low Severity (informational)
|
|
95
|
+
|
|
96
|
+
| Pattern | Why |
|
|
97
|
+
|---------|-----|
|
|
98
|
+
| Large number of allowed-tools (> 5) | May be over-permissioned |
|
|
99
|
+
| No `references/` for skills over 100 lines | Progressive disclosure recommended |
|
|
100
|
+
|
|
101
|
+
## Step 5: Collect Metadata
|
|
102
|
+
|
|
103
|
+
### Audience (required — always ask)
|
|
104
|
+
|
|
105
|
+
Audience is a droid-specific concept that won't exist on incoming files. Always ask:
|
|
106
|
+
|
|
107
|
+
```
|
|
108
|
+
Who is this tool for? (select all that apply)
|
|
109
|
+
|
|
110
|
+
- all — everyone at Orderful
|
|
111
|
+
- engineering — R&D, CLI users
|
|
112
|
+
- product — product managers
|
|
113
|
+
- design — designers
|
|
114
|
+
- integration-developers — integration specialists
|
|
115
|
+
- customer-support — support team
|
|
116
|
+
- network-operations — network ops
|
|
117
|
+
```
|
|
118
|
+
|
|
119
|
+
### Tool Description
|
|
120
|
+
|
|
121
|
+
If not obvious from the imported content, ask for a one-line tool description for TOOL.yaml.
|
|
122
|
+
|
|
123
|
+
## Step 6: Scaffold and PR
|
|
124
|
+
|
|
125
|
+
### Create tool structure
|
|
126
|
+
|
|
127
|
+
```
|
|
128
|
+
src/tools/{tool-name}/
|
|
129
|
+
├── TOOL.yaml
|
|
130
|
+
├── skills/
|
|
131
|
+
│ └── {skill-name}/
|
|
132
|
+
│ ├── SKILL.md
|
|
133
|
+
│ └── references/ (if present)
|
|
134
|
+
└── agents/
|
|
135
|
+
└── {agent-name}.md (if present)
|
|
136
|
+
```
|
|
137
|
+
|
|
138
|
+
### Generate TOOL.yaml
|
|
139
|
+
|
|
140
|
+
```yaml
|
|
141
|
+
name: {tool-name}
|
|
142
|
+
description: "{tool description}"
|
|
143
|
+
version: 0.1.0
|
|
144
|
+
status: beta
|
|
145
|
+
audience:
|
|
146
|
+
- {selected audiences}
|
|
147
|
+
|
|
148
|
+
includes:
|
|
149
|
+
skills:
|
|
150
|
+
- name: {skill-name}
|
|
151
|
+
required: true
|
|
152
|
+
commands: []
|
|
153
|
+
agents:
|
|
154
|
+
- {agent-name} (if present)
|
|
155
|
+
|
|
156
|
+
dependencies: []
|
|
157
|
+
```
|
|
158
|
+
|
|
159
|
+
### Changeset
|
|
160
|
+
|
|
161
|
+
Create `.changeset/{tool-name}-initial.md`:
|
|
162
|
+
```markdown
|
|
163
|
+
---
|
|
164
|
+
"@orderful/droid": minor
|
|
165
|
+
---
|
|
166
|
+
|
|
167
|
+
Add {tool-name} tool
|
|
168
|
+
```
|
|
169
|
+
|
|
170
|
+
Note: new tools are `minor` version bumps (new capability), not `patch`.
|
|
171
|
+
|
|
172
|
+
### Branch and PR
|
|
173
|
+
|
|
174
|
+
```bash
|
|
175
|
+
git checkout -b contrib/{tool-name}
|
|
176
|
+
git add src/tools/{tool-name}/
|
|
177
|
+
git add .changeset/{tool-name}-initial.md
|
|
178
|
+
git commit -m "feat: add {tool-name} tool"
|
|
179
|
+
git push -u origin contrib/{tool-name}
|
|
180
|
+
```
|
|
181
|
+
|
|
182
|
+
Create PR:
|
|
183
|
+
```
|
|
184
|
+
gh pr create --reviewer frytyler --title "feat: add {tool-name} tool" --body "$(cat <<'EOF'
|
|
185
|
+
### Summary :sparkles:
|
|
186
|
+
|
|
187
|
+
Adds the `{tool-name}` tool to droid, created via `/droid new`.
|
|
188
|
+
|
|
189
|
+
### Changes
|
|
190
|
+
|
|
191
|
+
- New `{tool-name}` tool (v0.1.0, beta)
|
|
192
|
+
- Includes: {list skills and agents}
|
|
193
|
+
- Audience: {audience tags}
|
|
194
|
+
|
|
195
|
+
### Imported From
|
|
196
|
+
|
|
197
|
+
{If --from was used: "Imported from `{original-path}`, transformed to droid standards."}
|
|
198
|
+
{If from scratch: "Scaffolded from scratch."}
|
|
199
|
+
|
|
200
|
+
### Transformations Applied
|
|
201
|
+
|
|
202
|
+
{List what was auto-fixed: description rewrite, allowed-tools added, etc.}
|
|
203
|
+
|
|
204
|
+
🤖 Co-Authored with [Claude Code](https://claude.com/claude-code)
|
|
205
|
+
EOF
|
|
206
|
+
)"
|
|
207
|
+
```
|
|
208
|
+
|
|
209
|
+
## Summary Format
|
|
210
|
+
|
|
211
|
+
Present results after transforming, before asking for metadata:
|
|
212
|
+
|
|
213
|
+
```
|
|
214
|
+
[● ●] New Tool: {tool-name}
|
|
215
|
+
|
|
216
|
+
## Imported
|
|
217
|
+
[from] {original-path}
|
|
218
|
+
[type] skill + 2 reference docs
|
|
219
|
+
|
|
220
|
+
## Auto-fixed
|
|
221
|
+
[fixed] Description rewritten to single-line format
|
|
222
|
+
[fixed] Added allowed-tools: [Read, Bash, MCP]
|
|
223
|
+
[fixed] Added alwaysApply: false, globs: []
|
|
224
|
+
|
|
225
|
+
## Security
|
|
226
|
+
[pass] No high-severity issues
|
|
227
|
+
[warn] Bash in allowed-tools — used for {reason}, looks justified
|
|
228
|
+
|
|
229
|
+
## Needs your input
|
|
230
|
+
[need] audience — who is this for?
|
|
231
|
+
[need] tool description — one-liner for TOOL.yaml
|
|
232
|
+
```
|
|
233
|
+
|
|
234
|
+
After collecting metadata, show the final tool structure and proceed to PR.
|
|
@@ -2,6 +2,8 @@ name: excalidraw
|
|
|
2
2
|
description: "Generate Excalidraw diagrams from conversation context and save them to your Obsidian brain vault. Requires brain tool configured, Obsidian, and the Excalidraw plugin."
|
|
3
3
|
version: 0.1.0
|
|
4
4
|
status: experimental
|
|
5
|
+
audience:
|
|
6
|
+
- all
|
|
5
7
|
|
|
6
8
|
includes:
|
|
7
9
|
skills:
|
|
@@ -2,6 +2,8 @@ name: meeting
|
|
|
2
2
|
description: "Work with meeting notes, summaries, and transcripts. List recent meetings, search content, generate context-aware summaries, export to codex. Backed by Granola MCP."
|
|
3
3
|
version: 0.1.2
|
|
4
4
|
status: beta
|
|
5
|
+
audience:
|
|
6
|
+
- all
|
|
5
7
|
|
|
6
8
|
includes:
|
|
7
9
|
skills:
|
package/src/tools/pii/TOOL.yaml
CHANGED
|
@@ -2,6 +2,8 @@ name: pii
|
|
|
2
2
|
description: "Detect and redact PII (personally identifiable information) in text files. Powered by Microsoft Presidio with a bundled Python venv — zero external dependencies after first run."
|
|
3
3
|
version: 0.1.0
|
|
4
4
|
status: beta
|
|
5
|
+
audience:
|
|
6
|
+
- all
|
|
5
7
|
|
|
6
8
|
includes:
|
|
7
9
|
skills:
|
package/src/tools/plan/TOOL.yaml
CHANGED
|
@@ -2,6 +2,10 @@ 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
3
|
version: 0.1.6
|
|
4
4
|
status: alpha
|
|
5
|
+
audience:
|
|
6
|
+
- engineering
|
|
7
|
+
- product
|
|
8
|
+
- design
|
|
5
9
|
|
|
6
10
|
includes:
|
|
7
11
|
skills:
|
|
@@ -2,6 +2,10 @@ name: status-update
|
|
|
2
2
|
description: "Generate and post project status updates. Aggregates context from codex projects, Jira epics, and manual input. Posts to Slack or prints to terminal."
|
|
3
3
|
version: 0.2.2
|
|
4
4
|
status: beta
|
|
5
|
+
audience:
|
|
6
|
+
- engineering
|
|
7
|
+
- product
|
|
8
|
+
- design
|
|
5
9
|
|
|
6
10
|
includes:
|
|
7
11
|
skills:
|
|
@@ -2,6 +2,8 @@ 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
3
|
version: 0.3.1
|
|
4
4
|
status: beta
|
|
5
|
+
audience:
|
|
6
|
+
- engineering
|
|
5
7
|
|
|
6
8
|
includes:
|
|
7
9
|
skills:
|