@hanzlaa/rcode 3.4.5 → 3.4.6

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.
@@ -32,11 +32,23 @@ const path = require('path');
32
32
  * lifecycle verbs. Internal sub-commands stay slash-only.
33
33
  */
34
34
  const SIDEBAR_COMMANDS = new Set([
35
- 'do', 'status', 'progress', 'next', 'plan', 'execute',
36
- 'council', 'discuss', 'ship', 'audit', 'autonomous',
37
- 'session-report', 'forensics', 'health', 'debug',
38
- 'verify-phase', 'verify-work', 'review', 'code-review',
35
+ // Navigation & status
36
+ 'do', 'status', 'progress', 'next', 'health',
37
+ // Core planning & execution
38
+ 'plan', 'execute', 'add-phase', 'discuss-phase', 'complete-milestone',
39
+ 'plan-milestone-gaps', 'autonomous',
40
+ // Project setup
39
41
  'new-project', 'new-milestone', 'milestone-summary',
42
+ // Sprint workflow
43
+ 'sprint-planning', 'sprint-status', 'execute-sprint', 'dev-story',
44
+ 'create-story', 'create-epics-and-stories',
45
+ // Discussion & council
46
+ 'council', 'discuss', 'prfaq',
47
+ // Quality & review
48
+ 'ship', 'audit', 'verify-phase', 'verify-work', 'review', 'code-review',
49
+ 'feature-drift', 'ui-phase', 'ui-review',
50
+ // Utility
51
+ 'debug', 'session-report', 'forensics', 'map-codebase', 'quick',
40
52
  'note', 'add-todo', 'check-todos', 'pause-work', 'resume-work',
41
53
  ]);
42
54
 
package/cli/install.js CHANGED
@@ -408,7 +408,7 @@ function getPathsForIde(ide, target) {
408
408
  case 'claude':
409
409
  return {
410
410
  agentsDir: path.join(target, '.claude', 'agents'),
411
- commandsDir: path.join(target, '.claude', 'commands', 'rihal'),
411
+ commandsDir: path.join(target, '.claude', 'commands'),
412
412
  workflowsDir: path.join(target, '.rihal', 'workflows'),
413
413
  referencesDir: path.join(target, '.rihal', 'references'),
414
414
  binDir: path.join(target, '.rihal', 'bin'),
@@ -971,10 +971,15 @@ function buildInstallPlan(ide = 'claude', target = process.cwd()) {
971
971
  }
972
972
 
973
973
  // Commands — IDE-specific
974
+ // Claude: output as .claude/commands/rihal-{name}.md (hyphen namespace → /rihal-name)
975
+ // Cursor/Gemini: keep original flat name inside their rihal/ subdirectory
974
976
  for (const f of walkFiles(path.join(SOURCE_ROOT, 'commands'))) {
975
977
  const rel = path.relative(path.join(SOURCE_ROOT, 'commands'), f);
976
978
  const ext = ide === 'cursor' ? '.mdc' : '.md';
977
- const outName = path.basename(f, '.md') + ext;
979
+ const baseName = path.basename(f, '.md');
980
+ const outName = ide === 'claude'
981
+ ? `rihal-${baseName}${ext}`
982
+ : baseName + ext;
978
983
  plan.push({ src: f, rel: path.join(relCommands, path.dirname(rel), outName), ide, cursor: ide === 'cursor' });
979
984
  }
980
985
 
@@ -1050,7 +1055,7 @@ function filterPlanByModules(plan, moduleNames) {
1050
1055
  if (!mod) { console.warn(` ⚠ Unknown module: ${modName}`); continue; }
1051
1056
  for (const a of mod.agents) allowed.add(path.join('.claude', 'agents', a));
1052
1057
  for (const w of mod.workflows) allowed.add(path.join('.rihal', 'workflows', w));
1053
- for (const c of mod.commands) allowed.add(path.join('.claude', 'commands', 'rihal', c));
1058
+ for (const c of mod.commands) allowed.add(path.join('.claude', 'commands', `rihal-${c}`));
1054
1059
  for (const r of mod.references) allowed.add(path.join('.rihal', 'references', r));
1055
1060
  }
1056
1061
  // Always include bin/ (shared infrastructure, not module-specific)
@@ -1858,7 +1863,12 @@ async function install(opts) {
1858
1863
  agentCount = fs.readdirSync(agentsDir).filter(f => (f.startsWith('rihal-') || f.startsWith('rcode-')) && (f.endsWith('.md') || f.endsWith('.mdc'))).length;
1859
1864
  }
1860
1865
  if (fs.existsSync(commandsDir)) {
1861
- commandCount = fs.readdirSync(commandsDir).filter(f => f.endsWith('.md') || f.endsWith('.mdc')).length;
1866
+ commandCount = fs.readdirSync(commandsDir).filter(f => f.startsWith('rihal-') && (f.endsWith('.md') || f.endsWith('.mdc'))).length;
1867
+ }
1868
+ // Clean up legacy .claude/commands/rihal/ colon-namespace directory if it exists
1869
+ const legacyColonDir = path.join(opts.target, '.claude', 'commands', 'rihal');
1870
+ if (primaryIde === 'claude' && fs.existsSync(legacyColonDir)) {
1871
+ fs.rmSync(legacyColonDir, { recursive: true, force: true });
1862
1872
  }
1863
1873
  } catch {}
1864
1874