@towles/tool 0.0.41 → 0.0.49

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 (53) hide show
  1. package/README.md +67 -109
  2. package/package.json +51 -41
  3. package/src/commands/base.ts +3 -18
  4. package/src/commands/config.ts +9 -8
  5. package/src/commands/doctor.ts +4 -1
  6. package/src/commands/gh/branch-clean.ts +10 -4
  7. package/src/commands/gh/branch.ts +6 -3
  8. package/src/commands/gh/pr.ts +10 -3
  9. package/src/commands/graph-template.html +1214 -0
  10. package/src/commands/graph.test.ts +176 -0
  11. package/src/commands/graph.ts +970 -0
  12. package/src/commands/install.ts +8 -2
  13. package/src/commands/journal/daily-notes.ts +9 -5
  14. package/src/commands/journal/meeting.ts +12 -6
  15. package/src/commands/journal/note.ts +12 -6
  16. package/src/commands/ralph/plan/add.ts +75 -0
  17. package/src/commands/ralph/plan/done.ts +82 -0
  18. package/src/commands/ralph/{task → plan}/list.test.ts +5 -5
  19. package/src/commands/ralph/{task → plan}/list.ts +28 -39
  20. package/src/commands/ralph/plan/remove.ts +71 -0
  21. package/src/commands/ralph/run.test.ts +521 -0
  22. package/src/commands/ralph/run.ts +126 -189
  23. package/src/commands/ralph/show.ts +88 -0
  24. package/src/config/settings.ts +8 -27
  25. package/src/{commands/ralph/lib → lib/ralph}/execution.ts +4 -14
  26. package/src/lib/ralph/formatter.ts +238 -0
  27. package/src/{commands/ralph/lib → lib/ralph}/state.ts +17 -42
  28. package/src/utils/date-utils.test.ts +2 -1
  29. package/src/utils/date-utils.ts +2 -2
  30. package/LICENSE.md +0 -20
  31. package/src/commands/index.ts +0 -55
  32. package/src/commands/observe/graph.test.ts +0 -89
  33. package/src/commands/observe/graph.ts +0 -1640
  34. package/src/commands/observe/report.ts +0 -166
  35. package/src/commands/observe/session.ts +0 -385
  36. package/src/commands/observe/setup.ts +0 -180
  37. package/src/commands/observe/status.ts +0 -146
  38. package/src/commands/ralph/lib/formatter.ts +0 -298
  39. package/src/commands/ralph/lib/marker.ts +0 -108
  40. package/src/commands/ralph/marker/create.ts +0 -23
  41. package/src/commands/ralph/plan.ts +0 -73
  42. package/src/commands/ralph/progress.ts +0 -44
  43. package/src/commands/ralph/ralph.test.ts +0 -673
  44. package/src/commands/ralph/task/add.ts +0 -105
  45. package/src/commands/ralph/task/done.ts +0 -73
  46. package/src/commands/ralph/task/remove.ts +0 -62
  47. package/src/config/context.ts +0 -7
  48. package/src/constants.ts +0 -3
  49. package/src/utils/anthropic/types.ts +0 -158
  50. package/src/utils/exec.ts +0 -8
  51. package/src/utils/git/git.ts +0 -25
  52. /package/src/{commands → lib}/journal/utils.ts +0 -0
  53. /package/src/{commands/ralph/lib → lib/ralph}/index.ts +0 -0
package/README.md CHANGED
@@ -1,142 +1,108 @@
1
1
  # Towles Tool
2
2
 
3
- Collection of quality-of-life tools and Claude Code plugins for daily development workflows.
3
+ Personal CLI toolkit with autonomous task runner and quality-of-life commands for daily development.
4
4
 
5
- ## Overview
5
+ ## Features
6
6
 
7
- **CLI tool** (`tt`) - Distributed as a compiled Bun executable for daily development tasks.
8
-
9
- **Claude Code Plugin Marketplace** - Hosts Claude Code plugins for personal use.
10
-
11
- The project evolved from a private toolbox of personal scripts to a compiled Bun executable and Claude Code plugin marketplace.
7
+ - **Ralph** - Autonomous task runner with session forking and context reuse
8
+ - **Observability** - Token usage visualization with interactive treemaps
9
+ - **Git workflows** - Branch creation, PR generation, and cleanup
10
+ - **Journaling** - Daily notes, meeting notes, and general notes
11
+ - **Claude Code plugins** - Personal plugin marketplace for Claude Code integration
12
12
 
13
13
  ## Installation
14
14
 
15
- ### CLI Tool
16
-
17
- Download the pre-built executable for your platform from [Releases](https://github.com/ChrisTowles/towles-tool/releases), or build from source:
15
+ ### Claude Code Plugin
18
16
 
19
17
  ```bash
20
- # Clone and build
21
- git clone https://github.com/ChrisTowles/towles-tool.git
22
- cd towles-tool
23
- bun install
24
- bun run build
25
-
26
- # The executable is at dist/tt
27
- # Move it somewhere in your PATH
28
- mv dist/tt ~/.local/bin/tt
18
+ claude plugin marketplace add ChrisTowles/towles-tool
19
+ claude plugin install tt@towles-tool
29
20
  ```
30
21
 
31
- ### Claude Code Plugins
32
-
33
- Install plugins from this marketplace:
22
+ ### From Source
34
23
 
35
24
  ```bash
36
- /plugins marketplace add ChrisTowles/towles-tool
37
- /plugin install tt@ChrisTowles/towles-tool
25
+ git clone https://github.com/ChrisTowles/towles-tool.git
26
+ cd towles-tool
27
+ pnpm install
28
+ pnpm start # Run directly with tsx
38
29
  ```
39
30
 
40
- I do find myself editing `~/.claude/settings.json` a lot to directly modify settings around plugins.
31
+ ## CLI Commands
41
32
 
42
- ### Shell Completions
33
+ ### Ralph (autonomous runner)
43
34
 
44
- Generate shell completions for tab completion support:
35
+ | Command | Description |
36
+ | --------------------------- | --------------------------------------------- |
37
+ | `tt ralph plan add <desc>` | Add task to plan |
38
+ | `tt ralph plan list` | View tasks |
39
+ | `tt ralph plan done <id>` | Mark task complete |
40
+ | `tt ralph plan remove <id>` | Remove task |
41
+ | `tt ralph run` | Run autonomous loop (auto-commits by default) |
42
+ | `tt ralph show` | Show plan with mermaid graph |
45
43
 
46
- ```bash
47
- # Bash - add to ~/.bashrc
48
- tt completion >> ~/.bashrc
44
+ ### Observability
49
45
 
50
- # Zsh - add to ~/.zshrc
51
- tt completion >> ~/.zshrc
46
+ | Command | Description |
47
+ | ------------------------- | ------------------------------------- |
48
+ | `tt graph` | Generate HTML treemap of all sessions |
49
+ | `tt graph --session <id>` | Single session treemap |
50
+ | `tt graph --open` | Auto-open in browser |
52
51
 
53
- # Fish
54
- tt completion > ~/.config/fish/completions/tt.fish
55
- ```
52
+ Treemap colors indicate input/output token ratio: green <2:1, yellow 2-5:1, red >5:1.
56
53
 
57
- ## Development
54
+ ### Git
58
55
 
59
- ### Setup
56
+ | Command | Alias | Description |
57
+ | -------------------- | ------- | ------------------------------- |
58
+ | `tt gh branch` | | Create branch from GitHub issue |
59
+ | `tt gh pr` | `tt pr` | Create pull request |
60
+ | `tt gh branch-clean` | | Delete merged branches |
60
61
 
61
- ```bash
62
- # Clone the repository
63
- git clone https://github.com/ChrisTowles/towles-tool.git
64
- cd towles-tool
65
- bun install
66
- ```
62
+ ### Journaling
67
63
 
68
- ### Commands
69
-
70
- ```bash
71
- bun run start # Run the CLI directly
72
- bun run build # Build executable for current platform
73
- bun run build:all # Build for all platforms (Linux, macOS, Windows)
74
- bun run test # Run tests
75
- bun run lint # Run linter
76
- bun run typecheck # Type check
77
- ```
64
+ | Command | Alias | Description |
65
+ | ------------------------ | ---------- | -------------------------------- |
66
+ | `tt journal daily-notes` | `tt today` | Weekly files with daily sections |
67
+ | `tt journal meeting` | `tt m` | Meeting notes |
68
+ | `tt journal note` | `tt n` | General notes |
78
69
 
79
- ### Plugin Validation
70
+ ### Utilities
80
71
 
81
- ```bash
82
- claude plugin validate . # Validate Claude Code plugins before publishing
83
- ```
72
+ | Command | Alias | Description |
73
+ | ------------ | -------- | ------------------------------ |
74
+ | `tt config` | `tt cfg` | Show configuration |
75
+ | `tt doctor` | | Check dependencies |
76
+ | `tt install` | | Configure Claude Code settings |
84
77
 
85
- **Plugin Marketplace**: `.claude-plugin/marketplace.json`
78
+ ## Claude Code Plugin Skills
86
79
 
87
- - Defines available plugins for installation
80
+ Available via `/tt:<command>`:
88
81
 
89
- ### Releasing
82
+ | Command | Description |
83
+ | ------------- | --------------------------------------------- |
84
+ | `/tt:commit` | AI-powered conventional commit messages |
85
+ | `/tt:plan` | Interview user and create implementation plan |
86
+ | `/tt:improve` | Explore codebase and suggest improvements |
87
+ | `/tt:refine` | Fix grammar/spelling in files |
90
88
 
91
- See [docs/releasing.md](./docs/releasing.md) for full details.
89
+ ## Development
92
90
 
93
91
  ```bash
94
- gh workflow run release.yml -f bump_type=patch # or minor/major
95
- gh run watch # monitor progress
92
+ pnpm start # Run CLI with tsx
93
+ pnpm test # Run tests
94
+ pnpm lint # Run oxlint
95
+ pnpm format # Format with oxfmt
96
+ pnpm typecheck # Type check
96
97
  ```
97
98
 
98
- ## Reminders for me
99
-
100
- - Use plan mode!
101
- - in plan mode tell claude your problems.
102
- - in edit mode tell claude its problems.
103
- - use `/context` to see what is using context and if you need to trim anything down.
104
- - Only add context Claude doesn't already have but needs
105
- - Always write in third person for prompts
106
- - use a tool to write your prompts and evaluate them.
107
- - These models are smart. Less is more. don't be too verbose
108
- - https://console.anthropic.com/workbench/
109
- - read source code from primary sources like:
110
- - [anthropic repos](https://github.com/anthropics)
111
- - [Skills best practices](https://docs.claude.com/en/docs/agents-and-tools/agent-skills/best-practices#core-principles)
112
- - gerund form (verb + -ing) for skill names
113
- - [claude cookbook skills section](https://github.com/anthropics/claude-cookbooks/tree/main/skills)
114
- - https://github.com/anthropics/skills
115
- - installed as a plugin, has examples and skill-creator
99
+ ### Releasing
116
100
 
117
101
  ```bash
118
- /plugin marketplace add anthropics/skills
102
+ gh workflow run release.yml -f bump_type=patch # or minor/major
103
+ gh run watch
119
104
  ```
120
105
 
121
- ## Roadmap
122
-
123
- ### Planned Features
124
-
125
- **Journal Type System**:
126
-
127
- - [ ] daily-notes
128
- - [ ] meeting
129
- - [ ] note
130
- - [ ] task (todo)
131
-
132
- **Git Tools**:
133
-
134
- - [ ] commit-message-generator
135
- - [ ] pull-request-generator
136
- - [ ] issue-generator
137
- - [ ] pull-request-reviewer
138
- - [ ] branch-from-issue
139
-
140
106
  ## Resources
141
107
 
142
108
  ### Claude Code Plugin Development
@@ -146,14 +112,6 @@ gh run watch # monitor progress
146
112
  - [Skills Guide](https://docs.claude.com/en/api/skills-guide)
147
113
  - [Best Practices](https://docs.claude.com/en/docs/agents-and-tools/agent-skills/best-practices)
148
114
 
149
- ### Project Documentation
150
-
151
- - [Node Package](./docs/node-package.md) - How the repo worked when it was a node package
152
-
153
- ## History
154
-
155
- This project started as a collection of personal scripts and utilities built up over time in a private toolbox. It was initially published as an npm package, but has since evolved to be distributed as a compiled Bun executable. With the release of Claude Code Skills and plugins, the project also serves as a Claude Code plugin marketplace.
156
-
157
115
  ## License
158
116
 
159
117
  [MIT](./LICENSE) License © [Chris Towles](https://github.com/ChrisTowles)
package/package.json CHANGED
@@ -1,7 +1,16 @@
1
1
  {
2
2
  "name": "@towles/tool",
3
- "version": "0.0.41",
4
- "description": "One off quality of life scripts that I use on a daily basis.",
3
+ "version": "0.0.49",
4
+ "description": "CLI tool with autonomous task runner (ralph), observability, and quality-of-life commands for daily development.",
5
+ "keywords": [
6
+ "autonomic",
7
+ "claude",
8
+ "cli",
9
+ "git",
10
+ "journal",
11
+ "oclif",
12
+ "ralph"
13
+ ],
5
14
  "homepage": "https://github.com/ChrisTowles/towles-tool#readme",
6
15
  "bugs": {
7
16
  "url": "https://github.com/ChrisTowles/towles-tool/issues"
@@ -25,77 +34,78 @@
25
34
  "src"
26
35
  ],
27
36
  "type": "module",
28
- "publishConfig": {
29
- "access": "public"
30
- },
37
+ "main": "bin/run.ts",
31
38
  "scripts": {
32
- "version:sync": "pnpm tsx scripts/sync-versions.ts",
33
- "prepublishOnly": "pnpm run version:sync",
34
- "start": "tsx bin/run.ts",
35
- "format": "oxfmt --write .",
36
- "format:check": "oxfmt --check .",
39
+ "start": "tsx ./bin/run.ts",
40
+ "typecheck": "tsc --noEmit",
37
41
  "lint": "oxlint",
38
42
  "lint:fix": "oxlint --fix",
43
+ "format": "oxfmt --write",
44
+ "format:check": "oxfmt --check",
39
45
  "test": "vitest run",
40
- "test:watch": "CI=DisableCallingClaude vitest watch",
41
- "typecheck": "tsgo --noEmit --incremental",
42
- "prepare": "simple-git-hooks"
46
+ "test:watch": "vitest watch",
47
+ "prepare": "simple-git-hooks",
48
+ "version:sync": "tsx scripts/sync-versions.ts"
43
49
  },
44
50
  "dependencies": {
45
- "@anthropic-ai/claude-code": "^2.1.4",
46
- "@anthropic-ai/sdk": "^0.56.0",
47
- "@oclif/core": "^4.3.2",
51
+ "@oclif/core": "^4.3.16",
48
52
  "consola": "^3.4.2",
49
53
  "d3-hierarchy": "^3.1.2",
50
54
  "fzf": "^0.5.2",
51
- "luxon": "^3.7.1",
52
- "neverthrow": "^8.2.0",
55
+ "globby": "^14.1.0",
56
+ "luxon": "^3.5.0",
57
+ "open": "^10.1.1",
53
58
  "picocolors": "^1.1.1",
54
59
  "prompts": "^2.4.2",
55
- "strip-ansi": "^7.1.0",
56
- "tinyexec": "^0.3.2",
57
- "zod": "^4.0.5"
60
+ "strip-ansi": "^7.1.2",
61
+ "tinyexec": "^1.0.2",
62
+ "zod": "^3.25.67"
58
63
  },
59
64
  "devDependencies": {
60
- "@oclif/test": "^4.1.10",
65
+ "@oclif/test": "^4.1.13",
66
+ "@total-typescript/tsconfig": "^1.0.4",
67
+ "@tsconfig/strictest": "^2.0.5",
61
68
  "@types/d3-hierarchy": "^3.1.7",
62
- "@types/luxon": "^3.6.2",
63
- "@types/node": "^22.16.3",
69
+ "@types/luxon": "^3.4.2",
70
+ "@types/node": "^22.10.10",
64
71
  "@types/prompts": "^2.4.9",
65
- "@typescript/native-preview": "^7.0.0-dev.20260111.1",
66
72
  "bumpp": "^10.4.0",
67
- "lint-staged": "^15.5.2",
73
+ "lint-staged": "^15.5.1",
68
74
  "oxfmt": "^0.24.0",
69
- "oxlint": "^1.7.0",
70
- "simple-git-hooks": "^2.13.0",
71
- "tsx": "^4.19.4",
75
+ "oxlint": "^1.2.0",
76
+ "simple-git-hooks": "^2.11.1",
77
+ "tsx": "^4.19.2",
72
78
  "typescript": "^5.8.3",
73
- "vitest": "^4.0.17"
79
+ "vitest": "^3.1.3"
74
80
  },
75
81
  "simple-git-hooks": {
76
- "pre-commit": "pnpm exec lint-staged -q && claude plugin validate ."
82
+ "pre-commit": "pnpm lint-staged && pnpm typecheck"
77
83
  },
78
84
  "lint-staged": {
79
- "*.{js,ts,jsx,tsx,json,md}": "oxfmt --write",
80
- "*": "oxlint --quiet --fix"
85
+ "package.json": "oxfmt --write",
86
+ "*.{ts,tsx,mts,cts,js,cjs,mjs}": [
87
+ "oxfmt --write",
88
+ "oxlint --fix"
89
+ ],
90
+ "*.{json,md,yaml,yml}": "oxfmt --write"
81
91
  },
82
92
  "oclif": {
83
93
  "bin": "tt",
84
94
  "commands": {
85
- "identifier": "default",
86
- "strategy": "explicit",
87
- "target": "./src/commands/index.ts"
95
+ "strategy": "pattern",
96
+ "target": "./src/commands"
88
97
  },
89
98
  "dirname": "towles-tool",
99
+ "plugins": [],
90
100
  "topicSeparator": " "
91
101
  },
92
- "packageManager": "pnpm@10.27.0",
102
+ "engines": {
103
+ "node": ">=18.0.0"
104
+ },
105
+ "packageManager": "pnpm@10.11.0",
93
106
  "pnpm": {
94
107
  "patchedDependencies": {
95
108
  "prompts@2.4.2": "patches/prompts.patch"
96
109
  }
97
- },
98
- "trustedDependencies": [
99
- "@anthropic-ai/claude-code"
100
- ]
110
+ }
101
111
  }
@@ -1,5 +1,6 @@
1
1
  import { Command, Flags } from "@oclif/core";
2
- import { LoadedSettings, loadSettings } from "../config/settings.js";
2
+ import type { SettingsFile } from "../config/settings.js";
3
+ import { loadSettings } from "../config/settings.js";
3
4
 
4
5
  /**
5
6
  * Base command that all towles-tool commands extend.
@@ -14,7 +15,7 @@ export abstract class BaseCommand extends Command {
14
15
  }),
15
16
  };
16
17
 
17
- protected settings!: LoadedSettings;
18
+ protected settings!: SettingsFile;
18
19
 
19
20
  /**
20
21
  * Called before run(). Loads user settings.
@@ -23,20 +24,4 @@ export abstract class BaseCommand extends Command {
23
24
  await super.init();
24
25
  this.settings = await loadSettings();
25
26
  }
26
-
27
- /**
28
- * Helper to log debug messages when --debug flag is set.
29
- */
30
- protected logDebug(message: string, ...args: unknown[]): void {
31
- // Access flags via parse() - oclif guarantees flags exist after init()
32
- void (this.parse as () => Promise<{ flags: { debug?: boolean } }>)()
33
- .then((parsed) => {
34
- if (parsed.flags?.debug) {
35
- this.log(`[DEBUG] ${message}`, ...args);
36
- }
37
- })
38
- .catch(() => {
39
- /* ignore parse errors in debug logging */
40
- });
41
- }
42
27
  }
@@ -7,7 +7,10 @@ import { BaseCommand } from "./base.js";
7
7
  export default class Config extends BaseCommand {
8
8
  static override description = "Display current configuration settings";
9
9
 
10
- static override examples = ["<%= config.bin %> <%= command.id %>", "<%= config.bin %> cfg"];
10
+ static override examples = [
11
+ { description: "Display configuration", command: "<%= config.bin %> <%= command.id %>" },
12
+ { description: "Use alias", command: "<%= config.bin %> cfg" },
13
+ ];
11
14
 
12
15
  async run(): Promise<void> {
13
16
  await this.parse(Config);
@@ -15,20 +18,18 @@ export default class Config extends BaseCommand {
15
18
  consola.info("Configuration");
16
19
  consola.log("");
17
20
 
18
- consola.info(`Settings File: ${this.settings.settingsFile.path}`);
21
+ consola.info(`Settings File: ${this.settings.path}`);
19
22
  consola.log("");
20
23
 
21
24
  consola.warn("User Config:");
22
25
  consola.log(
23
- ` Daily Path Template: ${this.settings.settingsFile.settings.journalSettings.dailyPathTemplate}`,
26
+ ` Daily Path Template: ${this.settings.settings.journalSettings.dailyPathTemplate}`,
24
27
  );
25
28
  consola.log(
26
- ` Meeting Path Template: ${this.settings.settingsFile.settings.journalSettings.meetingPathTemplate}`,
29
+ ` Meeting Path Template: ${this.settings.settings.journalSettings.meetingPathTemplate}`,
27
30
  );
28
- consola.log(
29
- ` Note Path Template: ${this.settings.settingsFile.settings.journalSettings.notePathTemplate}`,
30
- );
31
- consola.log(` Editor: ${this.settings.settingsFile.settings.preferredEditor}`);
31
+ consola.log(` Note Path Template: ${this.settings.settings.journalSettings.notePathTemplate}`);
32
+ consola.log(` Editor: ${this.settings.settings.preferredEditor}`);
32
33
  consola.log("");
33
34
 
34
35
  consola.warn("Working Directory:");
@@ -17,7 +17,10 @@ interface CheckResult {
17
17
  export default class Doctor extends BaseCommand {
18
18
  static override description = "Check system dependencies and environment";
19
19
 
20
- static override examples = ["<%= config.bin %> <%= command.id %>"];
20
+ static override examples = [
21
+ { description: "Check system dependencies", command: "<%= config.bin %> <%= command.id %>" },
22
+ { description: "Verify environment after setup", command: "<%= config.bin %> doctor" },
23
+ ];
21
24
 
22
25
  async run(): Promise<void> {
23
26
  await this.parse(Doctor);
@@ -12,10 +12,16 @@ export default class BranchClean extends BaseCommand {
12
12
  static override description = "Delete local branches that have been merged into main";
13
13
 
14
14
  static override examples = [
15
- "<%= config.bin %> gh branch-clean",
16
- "<%= config.bin %> gh branch-clean --dry-run",
17
- "<%= config.bin %> gh branch-clean --force",
18
- "<%= config.bin %> gh branch-clean --base develop",
15
+ { description: "Clean merged branches", command: "<%= config.bin %> <%= command.id %>" },
16
+ {
17
+ description: "Preview without deleting",
18
+ command: "<%= config.bin %> <%= command.id %> --dry-run",
19
+ },
20
+ { description: "Skip confirmation", command: "<%= config.bin %> <%= command.id %> --force" },
21
+ {
22
+ description: "Check against develop",
23
+ command: "<%= config.bin %> <%= command.id %> --base develop",
24
+ },
19
25
  ];
20
26
 
21
27
  static override flags = {
@@ -18,9 +18,12 @@ export default class GhBranch extends BaseCommand {
18
18
  static override description = "Create a git branch from a GitHub issue";
19
19
 
20
20
  static override examples = [
21
- "<%= config.bin %> gh branch",
22
- "<%= config.bin %> gh branch --assignedToMe",
23
- "<%= config.bin %> gh branch -a",
21
+ { description: "Browse all open issues", command: "<%= config.bin %> <%= command.id %>" },
22
+ {
23
+ description: "Only issues assigned to me",
24
+ command: "<%= config.bin %> <%= command.id %> --assignedToMe",
25
+ },
26
+ { description: "Short flag for assigned", command: "<%= config.bin %> <%= command.id %> -a" },
24
27
  ];
25
28
 
26
29
  static override flags = {
@@ -14,14 +14,21 @@ export default class Pr extends BaseCommand {
14
14
  static override description = "Create a pull request from the current branch";
15
15
 
16
16
  static override examples = [
17
- "<%= config.bin %> gh pr",
18
- "<%= config.bin %> gh pr --draft",
19
- "<%= config.bin %> gh pr --base develop",
17
+ {
18
+ description: "Create PR from current branch",
19
+ command: "<%= config.bin %> <%= command.id %>",
20
+ },
21
+ { description: "Create draft PR", command: "<%= config.bin %> <%= command.id %> --draft" },
22
+ {
23
+ description: "PR against develop branch",
24
+ command: "<%= config.bin %> <%= command.id %> --base develop",
25
+ },
20
26
  ];
21
27
 
22
28
  static override flags = {
23
29
  ...BaseCommand.baseFlags,
24
30
  draft: Flags.boolean({
31
+ char: "D",
25
32
  description: "Create as draft PR",
26
33
  default: false,
27
34
  }),