@automagik/genie 0.260202.1833 → 0.260203.43

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 (108) hide show
  1. package/.beads/README.md +81 -0
  2. package/.beads/config.yaml +67 -0
  3. package/.beads/interactions.jsonl +0 -0
  4. package/.beads/issues.jsonl +9 -0
  5. package/.beads/metadata.json +4 -0
  6. package/.claude/skills/brainstorm/SKILL.md +53 -0
  7. package/.claude/skills/genie-base/SKILL.md +66 -0
  8. package/.claude/skills/genie-base/assets/workspace/AGENTS.md +191 -0
  9. package/.claude/skills/genie-base/assets/workspace/ENVIRONMENT.md +18 -0
  10. package/.claude/skills/genie-base/assets/workspace/HEARTBEAT.md +4 -0
  11. package/.claude/skills/genie-base/assets/workspace/IDENTITY.md +17 -0
  12. package/.claude/skills/genie-base/assets/workspace/MEMORY.md +16 -0
  13. package/.claude/skills/genie-base/assets/workspace/ROLE.md +14 -0
  14. package/.claude/skills/genie-base/assets/workspace/SOUL.md +36 -0
  15. package/.claude/skills/genie-base/assets/workspace/TOOLS.md +25 -0
  16. package/.claude/skills/genie-base/assets/workspace/USER.md +13 -0
  17. package/.claude/skills/genie-base/assets/workspace/memory/2026-01-30.md +6 -0
  18. package/.claude/skills/genie-base/assets/workspace/memory/2026-01-31.md +16 -0
  19. package/.claude/skills/genie-base/assets/workspace/memory/882c22be-9710-41c1-91f8-ed82947ef6ce.txt +1 -0
  20. package/.claude/skills/genie-base/scripts/install-workspace.sh +107 -0
  21. package/.claude/skills/genie-base/scripts/sanity-sweep.sh +60 -0
  22. package/.claude/skills/genie-blank-init/SKILL.md +37 -0
  23. package/.claude/skills/genie-blank-init/assets/BOOTSTRAP.md +44 -0
  24. package/.claude/skills/genie-blank-init/assets/IDENTITY.md +9 -0
  25. package/.claude/skills/genie-blank-init/assets/SOUL.md +10 -0
  26. package/.claude/skills/genie-blank-init/assets/USER.md +9 -0
  27. package/.claude/skills/genie-blank-init/scripts/apply-blank-init.sh +117 -0
  28. package/.claude/skills/genie-forge/SKILL.md +171 -0
  29. package/.claude/skills/genie-plan-review/CLAUDE.md +11 -0
  30. package/.claude/skills/genie-plan-review/SKILL.md +53 -0
  31. package/.claude/skills/genie-review/SKILL.md +171 -0
  32. package/.claude/skills/genie-wish/SKILL.md +141 -0
  33. package/.claude-plugin/marketplace.json +18 -0
  34. package/.genie/.gitkeep +3 -0
  35. package/.genie/backlog/hooks-v2.md +82 -0
  36. package/.genie/wishes/upgrade-brainstorm-handoff/wish.md +124 -0
  37. package/.gitattributes +3 -0
  38. package/AGENTS.md +75 -0
  39. package/bun.lock +55 -0
  40. package/dist/claudio.js +1 -1
  41. package/dist/genie.js +1 -1
  42. package/dist/term.js +123 -99
  43. package/docs/CO-ORCHESTRATION-GUIDE.md +368 -0
  44. package/package.json +5 -1
  45. package/plugin/.claude-plugin/plugin.json +18 -0
  46. package/plugin/README.md +120 -0
  47. package/plugin/agents/implementor.md +92 -0
  48. package/plugin/agents/quality-reviewer.md +113 -0
  49. package/plugin/agents/spec-reviewer.md +90 -0
  50. package/plugin/hooks/hooks.json +3 -0
  51. package/plugin/references/review-criteria.md +72 -0
  52. package/plugin/references/wish-template.md +92 -0
  53. package/plugin/scripts/genie.cjs +141 -0
  54. package/plugin/scripts/smart-install.js +308 -0
  55. package/plugin/scripts/src/install-genie-cli.sh +120 -0
  56. package/plugin/scripts/src/validate-completion.ts +142 -0
  57. package/plugin/scripts/src/validate-wish.ts +137 -0
  58. package/plugin/scripts/term.cjs +229 -0
  59. package/plugin/scripts/validate-completion.cjs +16 -0
  60. package/plugin/scripts/validate-wish.cjs +17 -0
  61. package/plugin/scripts/worker-service.cjs +28 -0
  62. package/plugin/skills/brainstorm/SKILL.md +106 -0
  63. package/plugin/skills/forge/SKILL.md +171 -0
  64. package/plugin/skills/genie-base/SKILL.md +99 -0
  65. package/plugin/skills/genie-base/assets/workspace/AGENTS.md +191 -0
  66. package/plugin/skills/genie-base/assets/workspace/ENVIRONMENT.md +18 -0
  67. package/plugin/skills/genie-base/assets/workspace/HEARTBEAT.md +4 -0
  68. package/plugin/skills/genie-base/assets/workspace/IDENTITY.md +17 -0
  69. package/plugin/skills/genie-base/assets/workspace/MEMORY.md +16 -0
  70. package/plugin/skills/genie-base/assets/workspace/ROLE.md +14 -0
  71. package/plugin/skills/genie-base/assets/workspace/SOUL.md +36 -0
  72. package/plugin/skills/genie-base/assets/workspace/TOOLS.md +25 -0
  73. package/plugin/skills/genie-base/assets/workspace/USER.md +13 -0
  74. package/plugin/skills/genie-base/scripts/install-workspace.sh +107 -0
  75. package/plugin/skills/genie-base/scripts/sanity-sweep.sh +60 -0
  76. package/plugin/skills/genie-blank-init/SKILL.md +73 -0
  77. package/plugin/skills/genie-blank-init/assets/BOOTSTRAP.md +44 -0
  78. package/plugin/skills/genie-blank-init/assets/IDENTITY.md +9 -0
  79. package/plugin/skills/genie-blank-init/assets/SOUL.md +10 -0
  80. package/plugin/skills/genie-blank-init/assets/USER.md +9 -0
  81. package/plugin/skills/genie-blank-init/scripts/apply-blank-init.sh +117 -0
  82. package/plugin/skills/genie-cli-dev/CLAUDE.md +19 -0
  83. package/plugin/skills/genie-cli-dev/SKILL.md +292 -0
  84. package/plugin/skills/plan-review/SKILL.md +101 -0
  85. package/plugin/skills/review/SKILL.md +221 -0
  86. package/plugin/skills/wish/SKILL.md +110 -0
  87. package/plugin/skills/work-orchestration/SKILL.md +110 -0
  88. package/scripts/build.js +132 -0
  89. package/scripts/smart-install.js +308 -0
  90. package/scripts/sync.js +134 -0
  91. package/src/lib/beads-registry.ts +595 -0
  92. package/src/lib/orchestrator/event-monitor.ts +2 -0
  93. package/src/lib/skill-loader.ts +215 -0
  94. package/src/lib/tmux.ts +30 -11
  95. package/src/lib/version.ts +1 -1
  96. package/src/lib/worker-registry.ts +10 -0
  97. package/src/services/worker-service.ts +351 -0
  98. package/src/term-commands/close.ts +48 -3
  99. package/src/term-commands/create.ts +95 -0
  100. package/src/term-commands/daemon.ts +176 -0
  101. package/src/term-commands/kill.ts +56 -2
  102. package/src/term-commands/orchestrate.ts +3 -2
  103. package/src/term-commands/send.ts +43 -15
  104. package/src/term-commands/spawn.ts +446 -0
  105. package/src/term-commands/split.ts +20 -8
  106. package/src/term-commands/work.ts +279 -37
  107. package/src/term-commands/workers.ts +36 -2
  108. package/src/term.ts +120 -7
package/src/term.ts CHANGED
@@ -20,6 +20,9 @@ import * as workCmd from './term-commands/work.js';
20
20
  import * as workersCmd from './term-commands/workers.js';
21
21
  import * as closeCmd from './term-commands/close.js';
22
22
  import * as killCmd from './term-commands/kill.js';
23
+ import * as daemonCmd from './term-commands/daemon.js';
24
+ import * as spawnCmd from './term-commands/spawn.js';
25
+ import * as createCmd from './term-commands/create.js';
23
26
 
24
27
  const program = new Command();
25
28
 
@@ -35,12 +38,19 @@ Collaborative Usage:
35
38
  Workflow: new → exec → read → rm
36
39
  Full control: window new/ls/rm, pane ls/rm, split, status
37
40
 
41
+ Skill-Based Spawning:
42
+ term spawn - Pick skill interactively
43
+ term spawn <skill> - Spawn Claude with skill loaded
44
+ term skills - List available skills
45
+ term create <title> - Create beads issue
46
+
38
47
  Worker Orchestration:
39
48
  term work <bd-id> - Spawn worker bound to beads issue
40
49
  term work next - Work on next ready issue
41
50
  term workers - List all workers and states
42
51
  term close <bd-id> - Close issue, cleanup worker
43
- term kill <worker> - Force kill a stuck worker`)
52
+ term kill <worker> - Force kill a stuck worker
53
+ term daemon start - Start beads daemon for auto-sync`)
44
54
  .version(VERSION);
45
55
 
46
56
  // Session management
@@ -109,9 +119,11 @@ program
109
119
 
110
120
  program
111
121
  .command('send <session> <keys>')
112
- .description('Send raw keys to a tmux session')
113
- .action(async (session: string, keys: string) => {
114
- await sendCmd.sendKeysToSession(session, keys);
122
+ .description('Send keys to a tmux session (appends Enter by default)')
123
+ .option('--no-enter', 'Send raw keys without appending Enter')
124
+ .option('-p, --pane <id>', 'Target specific pane ID (e.g., %16)')
125
+ .action(async (session: string, keys: string, options: { enter?: boolean; pane?: string }) => {
126
+ await sendCmd.sendKeysToSession(session, keys, options);
115
127
  });
116
128
 
117
129
  // Pane splitting
@@ -124,9 +136,9 @@ program
124
136
  await splitCmd.splitSessionPane(session, direction, options);
125
137
  });
126
138
 
127
- // Status command
139
+ // Info command (renamed from status)
128
140
  program
129
- .command('status <session>')
141
+ .command('info <session>')
130
142
  .description('Check session state (idle/busy, pane count)')
131
143
  .option('--command <id>', 'Check specific command status')
132
144
  .option('--json', 'Output as JSON')
@@ -212,14 +224,79 @@ program
212
224
  await shortcutsCmd.handleShortcuts(options);
213
225
  });
214
226
 
227
+ // Skill-based spawning
228
+ program
229
+ .command('spawn [skill]')
230
+ .description('Spawn Claude with a skill (interactive picker if no skill specified)')
231
+ .option('-s, --session <name>', 'Target tmux session')
232
+ .option('--no-worktree', 'Skip worktree creation when taskId provided')
233
+ .option('--no-focus', 'Don\'t focus the new pane')
234
+ .option('-p, --prompt <message>', 'Additional context for the skill')
235
+ .option('-t, --task-id <id>', 'Bind to beads issue')
236
+ .action(async (skill: string | undefined, options: spawnCmd.SpawnOptions) => {
237
+ await spawnCmd.spawnCommand(skill, options);
238
+ });
239
+
240
+ program
241
+ .command('skills')
242
+ .description('List available skills')
243
+ .action(async () => {
244
+ await spawnCmd.listSkillsCommand();
245
+ });
246
+
247
+ program
248
+ .command('brainstorm')
249
+ .description('Spawn Claude with brainstorm skill (idea → design → spec)')
250
+ .option('-s, --session <name>', 'Target tmux session')
251
+ .option('--no-focus', 'Don\'t focus the new pane')
252
+ .option('-p, --prompt <message>', 'Additional context')
253
+ .action(async (options: spawnCmd.SpawnOptions) => {
254
+ await spawnCmd.spawnCommand('brainstorm', options);
255
+ });
256
+
257
+ // Watch session events (promoted from orc watch)
258
+ program
259
+ .command('watch <session>')
260
+ .description('Watch session events in real-time')
261
+ .option('-p, --pane <id>', 'Target specific pane ID (e.g., %16)')
262
+ .option('--json', 'Output events as JSON')
263
+ .option('--poll <ms>', 'Poll interval in milliseconds')
264
+ .action(async (session: string, options: orchestrateCmd.WatchOptions) => {
265
+ await orchestrateCmd.watchSession(session, options);
266
+ });
267
+
268
+ // Run task with monitoring (promoted from orc run)
269
+ program
270
+ .command('run <session> <message>')
271
+ .description('Send task and auto-approve until idle (fire-and-forget)')
272
+ .option('-p, --pane <id>', 'Target specific pane ID (e.g., %16)')
273
+ .option('-a, --auto-approve', 'Auto-approve permissions and plans')
274
+ .option('-t, --timeout <ms>', 'Timeout in milliseconds (default: 300000)')
275
+ .option('--json', 'Output final state as JSON')
276
+ .action(async (session: string, message: string, options: orchestrateCmd.RunOptions) => {
277
+ await orchestrateCmd.runTask(session, message, options);
278
+ });
279
+
280
+ // Create beads issue command
281
+ program
282
+ .command('create <title>')
283
+ .description('Create a new beads issue')
284
+ .option('-d, --description <text>', 'Issue description')
285
+ .option('-p, --parent <id>', 'Parent issue ID (creates dependency)')
286
+ .option('--json', 'Output as JSON')
287
+ .action(async (title: string, options: createCmd.CreateOptions) => {
288
+ await createCmd.createCommand(title, options);
289
+ });
290
+
215
291
  // Worker management commands (beads + Claude orchestration)
216
292
  program
217
293
  .command('work <target>')
218
294
  .description('Spawn worker bound to beads issue (target: bd-id, "next", or "wish")')
219
295
  .option('--no-worktree', 'Use shared repo instead of worktree')
220
296
  .option('-s, --session <name>', 'Target tmux session')
221
- .option('--no-focus', 'Don\'t focus the worker pane')
297
+ .option('--focus', 'Focus the worker pane after spawning')
222
298
  .option('-p, --prompt <message>', 'Custom initial prompt')
299
+ .option('--no-resume', 'Start fresh session even if previous exists')
223
300
  .action(async (target: string, options: workCmd.WorkOptions) => {
224
301
  await workCmd.workCommand(target, options);
225
302
  });
@@ -297,6 +374,42 @@ program
297
374
  });
298
375
  });
299
376
 
377
+ // Daemon management (beads auto-sync)
378
+ const daemonProgram = program.command('daemon').description('Manage beads daemon for auto-sync');
379
+
380
+ daemonProgram
381
+ .command('start')
382
+ .description('Start beads daemon (auto-commit, auto-sync)')
383
+ .option('--no-auto-commit', 'Disable auto-commit')
384
+ .option('--auto-push', 'Enable auto-push to remote')
385
+ .action(async (options: daemonCmd.DaemonStartOptions) => {
386
+ await daemonCmd.startCommand(options);
387
+ });
388
+
389
+ daemonProgram
390
+ .command('stop')
391
+ .description('Stop beads daemon')
392
+ .action(async () => {
393
+ await daemonCmd.stopCommand();
394
+ });
395
+
396
+ daemonProgram
397
+ .command('status')
398
+ .description('Show daemon status')
399
+ .option('--json', 'Output as JSON')
400
+ .action(async (options: daemonCmd.DaemonStatusOptions) => {
401
+ await daemonCmd.statusCommand(options);
402
+ });
403
+
404
+ daemonProgram
405
+ .command('restart')
406
+ .description('Restart beads daemon')
407
+ .option('--no-auto-commit', 'Disable auto-commit')
408
+ .option('--auto-push', 'Enable auto-push to remote')
409
+ .action(async (options: daemonCmd.DaemonStartOptions) => {
410
+ await daemonCmd.restartCommand(options);
411
+ });
412
+
300
413
  // Orchestration commands (Claude Code automation)
301
414
  const orcProgram = program.command('orc').description('Orchestrate Claude Code sessions');
302
415