diff --git a/.claude/skills/commit/SKILL.md b/.claude/skills/commit/SKILL.md index 1af6551a..1a3c8e35 100644 --- a/.claude/skills/commit/SKILL.md +++ b/.claude/skills/commit/SKILL.md @@ -1,4 +1,5 @@ --- +name: commit description: Create git commits with user approval and no Claude attribution --- diff --git a/.claude/skills/continuity_ledger/SKILL.md b/.claude/skills/continuity_ledger/SKILL.md index b547670d..562b11c6 100644 --- a/.claude/skills/continuity_ledger/SKILL.md +++ b/.claude/skills/continuity_ledger/SKILL.md @@ -1,4 +1,5 @@ --- +name: continuity-ledger description: Create or update continuity ledger for state preservation across clears --- diff --git a/.claude/skills/create_handoff/SKILL.md b/.claude/skills/create_handoff/SKILL.md index 3fe74a67..fdf36339 100644 --- a/.claude/skills/create_handoff/SKILL.md +++ b/.claude/skills/create_handoff/SKILL.md @@ -1,4 +1,5 @@ --- +name: create-handoff description: Create handoff document for transferring work to another session --- diff --git a/.claude/skills/debug/SKILL.md b/.claude/skills/debug/SKILL.md index ced957e0..631b028a 100644 --- a/.claude/skills/debug/SKILL.md +++ b/.claude/skills/debug/SKILL.md @@ -1,4 +1,5 @@ --- +name: debug description: Debug issues by investigating logs, database state, and git history --- diff --git a/.claude/skills/describe_pr/SKILL.md b/.claude/skills/describe_pr/SKILL.md index 37b3b5fb..fbf8c425 100644 --- a/.claude/skills/describe_pr/SKILL.md +++ b/.claude/skills/describe_pr/SKILL.md @@ -1,4 +1,5 @@ --- +name: describe-pr description: Generate comprehensive PR descriptions following repository templates --- diff --git a/.claude/skills/discovery-interview/SKILL.md b/.claude/skills/discovery-interview/SKILL.md index 4f417f8b..ce4ac8c0 100644 --- a/.claude/skills/discovery-interview/SKILL.md +++ b/.claude/skills/discovery-interview/SKILL.md @@ -1,4 +1,5 @@ --- +name: discovery-interview description: Deep interview process to transform vague ideas into detailed specs. Works for technical and non-technical users. user-invocable: true model: claude-opus-4-5-20251101 diff --git a/.claude/skills/loogle-search/SKILL.md b/.claude/skills/loogle-search/SKILL.md index c92d401f..7cc4506c 100644 --- a/.claude/skills/loogle-search/SKILL.md +++ b/.claude/skills/loogle-search/SKILL.md @@ -1,3 +1,7 @@ +--- +name: loogle-search +description: Search Mathlib for lemmas by type signature pattern +--- # Loogle Search - Mathlib Type Signature Search Search Mathlib for lemmas by type signature pattern. diff --git a/.claude/skills/plan-agent/SKILL.md b/.claude/skills/plan-agent/SKILL.md index c7bd6844..2b554e03 100644 --- a/.claude/skills/plan-agent/SKILL.md +++ b/.claude/skills/plan-agent/SKILL.md @@ -1,4 +1,5 @@ --- +name: planning-agent description: Planning agent that creates implementation plans and handoffs from conversation context --- diff --git a/.claude/skills/recall/SKILL.md b/.claude/skills/recall/SKILL.md index 64e70749..c2d3dfab 100644 --- a/.claude/skills/recall/SKILL.md +++ b/.claude/skills/recall/SKILL.md @@ -1,3 +1,9 @@ +--- +name: recall +description: Query the memory system for relevant learnings from past sessions +user-invocable: false +--- + # Recall - Semantic Memory Retrieval Query the memory system for relevant learnings from past sessions. diff --git a/.claude/skills/remember/SKILL.md b/.claude/skills/remember/SKILL.md index f0860118..69faa1d4 100644 --- a/.claude/skills/remember/SKILL.md +++ b/.claude/skills/remember/SKILL.md @@ -1,3 +1,9 @@ +--- +name: remember +description: Store a learning, pattern, or decision in the memory system for future recall +user-invocable: false +--- + # Remember - Store Learning in Memory Store a learning, pattern, or decision in the memory system for future recall. diff --git a/.claude/skills/repo-research-analyst/SKILL.md b/.claude/skills/repo-research-analyst/SKILL.md index 4744cb15..9e0a5fe4 100644 --- a/.claude/skills/repo-research-analyst/SKILL.md +++ b/.claude/skills/repo-research-analyst/SKILL.md @@ -1,4 +1,5 @@ --- +name: repo-research-analyst description: Analyze repository structure, patterns, conventions, and documentation for understanding a new codebase --- diff --git a/.claude/skills/resume_handoff/SKILL.md b/.claude/skills/resume_handoff/SKILL.md index c69fba73..37018379 100644 --- a/.claude/skills/resume_handoff/SKILL.md +++ b/.claude/skills/resume_handoff/SKILL.md @@ -1,4 +1,5 @@ --- +name: resume-handoff description: Resume work from handoff document with context analysis and validation --- diff --git a/.claude/skills/system_overview/SKILL.md b/.claude/skills/system_overview/SKILL.md index 773b00f5..1a3d5eaa 100644 --- a/.claude/skills/system_overview/SKILL.md +++ b/.claude/skills/system_overview/SKILL.md @@ -1,3 +1,8 @@ +--- +name: system-overview +description: Show users how Continuous Claude works - the opinionated setup with hooks, memory, and coordination +--- + # System Overview Show users how Continuous Claude works - the opinionated setup with hooks, memory, and coordination. diff --git a/.claude/skills/tldr-deep/SKILL.md b/.claude/skills/tldr-deep/SKILL.md index 90850559..f09af5da 100644 --- a/.claude/skills/tldr-deep/SKILL.md +++ b/.claude/skills/tldr-deep/SKILL.md @@ -1,3 +1,8 @@ +--- +name: tldr-deep +description: Full 5-layer analysis of a specific function. Use when debugging or deeply understanding code. +--- + # TLDR Deep Analysis Full 5-layer analysis of a specific function. Use when debugging or deeply understanding code. diff --git a/.claude/skills/tldr-overview/SKILL.md b/.claude/skills/tldr-overview/SKILL.md index fc6b235b..80b63466 100644 --- a/.claude/skills/tldr-overview/SKILL.md +++ b/.claude/skills/tldr-overview/SKILL.md @@ -1,3 +1,8 @@ +--- +name: tldr-overview +description: Get a token-efficient overview of any project using the TLDR stack +--- + # TLDR Project Overview Get a token-efficient overview of any project using the TLDR stack. diff --git a/.claude/skills/tldr-router/SKILL.md b/.claude/skills/tldr-router/SKILL.md index 85ff86d0..3848f137 100644 --- a/.claude/skills/tldr-router/SKILL.md +++ b/.claude/skills/tldr-router/SKILL.md @@ -1,3 +1,8 @@ +--- +name: tldr-router +description: Maps questions to the optimal tldr command. Use this to pick the right layer +--- + # TLDR Smart Router Maps questions to the optimal tldr command. Use this to pick the right layer. diff --git a/.claude/skills/tldr-stats/SKILL.md b/.claude/skills/tldr-stats/SKILL.md index 98398229..6c16e4fd 100644 --- a/.claude/skills/tldr-stats/SKILL.md +++ b/.claude/skills/tldr-stats/SKILL.md @@ -1,4 +1,5 @@ --- +name: tldr-stats description: Show full session token usage, costs, TLDR savings, and hook activity --- diff --git a/.claude/skills/tour/SKILL.md b/.claude/skills/tour/SKILL.md index 9c70c453..ff14531a 100644 --- a/.claude/skills/tour/SKILL.md +++ b/.claude/skills/tour/SKILL.md @@ -1,3 +1,8 @@ +--- +name: tour +description: Friendly onboarding when users ask about capabilities +--- + # Tour: What Can I Do? Friendly onboarding when users ask about capabilities. diff --git a/.claude/skills/validate-agent/SKILL.md b/.claude/skills/validate-agent/SKILL.md index a209e8d5..b70ab534 100644 --- a/.claude/skills/validate-agent/SKILL.md +++ b/.claude/skills/validate-agent/SKILL.md @@ -1,4 +1,5 @@ --- +name: validate-agent description: Validation agent that validates plan tech choices against current best practices --- diff --git a/opc/scripts/setup/math_features.py b/opc/scripts/setup/math_features.py index c8afe009..7c807386 100644 --- a/opc/scripts/setup/math_features.py +++ b/opc/scripts/setup/math_features.py @@ -175,8 +175,9 @@ def show_lean_setup(): # Custom LMStudio endpoint (if not using default port) export LMSTUDIO_BASE_URL=http://127.0.0.1:5000 -# Add to your shell profile for persistence: -echo 'export LMSTUDIO_BASE_URL=http://127.0.0.1:1234' >> ~/.zshrc +# Add to your shell profile for persistence (.zshrc, .bashrc, or config.fish): +# For zsh/bash: echo 'export LMSTUDIO_BASE_URL=http://127.0.0.1:1234' >> ~/.zshrc +# For fish: set -gx LMSTUDIO_BASE_URL http://127.0.0.1:1234 (add to config.fish) HOW IT WORKS diff --git a/opc/scripts/setup/wizard.py b/opc/scripts/setup/wizard.py index 3b268f4c..deaa600d 100644 --- a/opc/scripts/setup/wizard.py +++ b/opc/scripts/setup/wizard.py @@ -506,6 +506,25 @@ def generate_env_file(config: dict[str, Any], env_path: Path) -> None: env_path.write_text("\n".join(lines)) +def get_shell_config() -> tuple[Path | None, str]: + """Get the shell config path and type based on current SHELL. + + Returns: + tuple: (config_path, shell_type) + """ + shell = os.environ.get("SHELL", "").lower() + + if "zsh" in shell: + return Path.home() / ".zshrc", "zsh" + if "fish" in shell: + # Standard location for fish config + return Path.home() / ".config" / "fish" / "config.fish", "fish" + if "bash" in shell: + return Path.home() / ".bashrc", "bash" + + return None, "unknown" + + async def run_setup_wizard() -> None: """Run the interactive setup wizard. @@ -838,17 +857,16 @@ async def run_setup_wizard() -> None: # Set CLAUDE_OPC_DIR environment variable for skills to find scripts console.print(" Setting CLAUDE_OPC_DIR environment variable...") - shell_config = None - shell = os.environ.get("SHELL", "") - if "zsh" in shell: - shell_config = Path.home() / ".zshrc" - elif "bash" in shell: - shell_config = Path.home() / ".bashrc" + shell_config, shell_type = get_shell_config() opc_dir = _project_root # Use script location, not cwd (robust if invoked from elsewhere) if shell_config and shell_config.exists(): content = shell_config.read_text() - export_line = f'export CLAUDE_OPC_DIR="{opc_dir}"' + if shell_type == "fish": + export_line = f'set -gx CLAUDE_OPC_DIR "{opc_dir}"' + else: + export_line = f'export CLAUDE_OPC_DIR="{opc_dir}"' + if "CLAUDE_OPC_DIR" not in content: with open(shell_config, "a") as f: f.write(f"\n# Continuous-Claude OPC directory (for skills to find scripts)\n{export_line}\n") @@ -1199,18 +1217,15 @@ async def run_setup_wizard() -> None: # Set LOOGLE_HOME environment variable console.print(" Setting LOOGLE_HOME environment variable...") - shell_config = None - shell = os.environ.get("SHELL", "") - if "zsh" in shell: - shell_config = Path.home() / ".zshrc" - elif "bash" in shell: - shell_config = Path.home() / ".bashrc" - elif sys.platform == "win32": - shell_config = None # Windows uses different mechanism + shell_config, shell_type = get_shell_config() if shell_config and shell_config.exists(): content = shell_config.read_text() - export_line = f'export LOOGLE_HOME="{loogle_home}"' + if shell_type == "fish": + export_line = f'set -gx LOOGLE_HOME "{loogle_home}"' + else: + export_line = f'export LOOGLE_HOME="{loogle_home}"' + if "LOOGLE_HOME" not in content: with open(shell_config, "a") as f: f.write(f"\n# Loogle (Lean 4 type search)\n{export_line}\n") @@ -1252,6 +1267,21 @@ async def run_setup_wizard() -> None: console.print(" Skipped Loogle installation") console.print(" [dim]Install later by re-running the wizard[/dim]") + # Verification step + opc_dir_env = os.environ.get("CLAUDE_OPC_DIR") + if not opc_dir_env: + console.print("\n[yellow]WARNING: CLAUDE_OPC_DIR is not set in your current shell session.[/yellow]") + console.print("Core features like memory and learnings may not function correctly until set.") + console.print("\nTo fix this:") + + shell_config, _ = get_shell_config() + if shell_config: + console.print(f" 1. Run: [bold]source {shell_config}[/bold]") + else: + console.print(" 1. Restart your terminal session") + + console.print(" 2. Then start Claude Code") + # Done! console.print("\n" + "=" * 60) console.print("[bold green]Setup complete![/bold green]")