@rvry/mcp 0.8.3 → 0.10.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 (3) hide show
  1. package/README.md +15 -0
  2. package/dist/setup.js +71 -1
  3. package/package.json +1 -1
package/README.md CHANGED
@@ -64,6 +64,21 @@ RVRY supports both **stdio** and **HTTP** transports:
64
64
  | **`RVRY_challenge`** | Adversarial stress-testing. Finds weaknesses, tests assumptions, and surfaces failure modes in a proposal before you commit. | Pro+ |
65
65
  | **`RVRY_meta`** | Sustained metacognitive observation. Examines how your AI is thinking, not just what it's thinking. | Max |
66
66
 
67
+ ## Slash Commands (Claude Code)
68
+
69
+ When you run `npx @rvry/mcp setup` and select Claude Code, the wizard installs 4 slash commands:
70
+
71
+ | Command | Tool | What it does |
72
+ |---------|------|-------------|
73
+ | `/deepthink` | RVRY_deepthink | Deep multi-round analysis |
74
+ | `/problem-solve` | RVRY_problem_solve | Structured decision-making |
75
+ | `/challenge` | RVRY_challenge | Adversarial stress-testing |
76
+ | `/meta` | RVRY_meta | Metacognitive observation |
77
+
78
+ Usage: type `/deepthink [your question]` in Claude Code. Each command routes directly to the corresponding RVRY MCP tool.
79
+
80
+ Commands are installed to `~/.claude/commands/`. Existing files are never overwritten — re-running setup is safe.
81
+
67
82
  ## How it Works
68
83
 
69
84
  Same model. Same question. Different answer.
package/dist/setup.js CHANGED
@@ -707,6 +707,57 @@ function ensureGitignore() {
707
707
  // Non-fatal -- read-only filesystem, permissions, etc.
708
708
  }
709
709
  }
710
+ // ── Slash commands for Claude Code ──────────────────────────────────
711
+ const SLASH_COMMANDS = [
712
+ {
713
+ file: "deepthink.md",
714
+ content: "Use the RVRY_deepthink MCP tool to deeply analyze this question: $ARGUMENTS",
715
+ label: "/deepthink — deep analysis",
716
+ },
717
+ {
718
+ file: "problem-solve.md",
719
+ content: "Use the RVRY_problem_solve MCP tool to work through this problem: $ARGUMENTS",
720
+ label: "/problem-solve — structured decision-making",
721
+ },
722
+ {
723
+ file: "challenge.md",
724
+ content: "Use the RVRY_challenge MCP tool to stress-test this proposal: $ARGUMENTS",
725
+ label: "/challenge — adversarial stress-testing",
726
+ },
727
+ {
728
+ file: "meta.md",
729
+ content: "Use the RVRY_meta MCP tool to reflect on: $ARGUMENTS",
730
+ label: "/meta — metacognitive observation (Max tier)",
731
+ },
732
+ ];
733
+ /**
734
+ * Install RVRY slash commands to ~/.claude/commands/.
735
+ * Only called when Claude Code is the selected client.
736
+ * Skips files that already exist to avoid overwriting user customizations.
737
+ */
738
+ function installSlashCommands() {
739
+ const commandsDir = join(homedir(), ".claude", "commands");
740
+ const installed = [];
741
+ try {
742
+ if (!existsSync(commandsDir)) {
743
+ mkdirSync(commandsDir, { recursive: true });
744
+ }
745
+ for (const cmd of SLASH_COMMANDS) {
746
+ const filePath = join(commandsDir, cmd.file);
747
+ if (existsSync(filePath)) {
748
+ console.log(` Skipping ${cmd.file} — command already exists`);
749
+ continue;
750
+ }
751
+ writeFileSync(filePath, cmd.content + "\n", "utf-8");
752
+ installed.push(cmd.label);
753
+ }
754
+ }
755
+ catch (err) {
756
+ const msg = err instanceof Error ? err.message : String(err);
757
+ console.log(` Could not install slash commands: ${msg}`);
758
+ }
759
+ return installed;
760
+ }
710
761
  // ── Main setup flow ────────────────────────────────────────────────
711
762
  const BANNER = `
712
763
  8888888b. 888 888 8888888b. Y88b d88P
@@ -848,6 +899,20 @@ export async function runSetup() {
848
899
  if (result !== 'error')
849
900
  anyConfigured = true;
850
901
  }
902
+ // Install slash commands if Claude Code was configured
903
+ const claudeCodeConfigured = selectedIndices.some((idx) => detected[idx].client.id === "code") && configuredClients.some((c) => c.name === "Claude Code" && c.status !== "Failed");
904
+ let installedCommands = [];
905
+ if (claudeCodeConfigured) {
906
+ console.log("");
907
+ console.log(" Installing slash commands...");
908
+ installedCommands = installSlashCommands();
909
+ if (installedCommands.length > 0) {
910
+ console.log(` Installed ${installedCommands.length} command(s):`);
911
+ for (const label of installedCommands) {
912
+ console.log(` ${label}`);
913
+ }
914
+ }
915
+ }
851
916
  if (selectedIndices.length === 0) {
852
917
  console.log(' No clients selected.');
853
918
  }
@@ -920,7 +985,12 @@ export async function runSetup() {
920
985
  console.log('');
921
986
  step++;
922
987
  if (hasCodeStyle || hasDesktopStyle) {
923
- console.log(` ${step}. Try: "Use RVRY_deepthink to analyze..." or "Use RVRY_problem_solve for..."`);
988
+ if (installedCommands.length > 0) {
989
+ console.log(` ${step}. Try a slash command: /deepthink [your question]`);
990
+ }
991
+ else {
992
+ console.log(` ${step}. Try: "Use RVRY_deepthink to analyze..." or "Use RVRY_problem_solve for..."`);
993
+ }
924
994
  step++;
925
995
  }
926
996
  if (!anyConfigured) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rvry/mcp",
3
- "version": "0.8.3",
3
+ "version": "0.10.1",
4
4
  "description": "RVRY reasoning depth enforcement (RDE) engine client.",
5
5
  "type": "module",
6
6
  "bin": {