Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .claude/skills/commit/SKILL.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
---
name: commit
description: Create git commits with user approval and no Claude attribution
---

Expand Down
1 change: 1 addition & 0 deletions .claude/skills/continuity_ledger/SKILL.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
---
name: continuity-ledger
description: Create or update continuity ledger for state preservation across clears
---

Expand Down
1 change: 1 addition & 0 deletions .claude/skills/create_handoff/SKILL.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
---
name: create-handoff
description: Create handoff document for transferring work to another session
---

Expand Down
1 change: 1 addition & 0 deletions .claude/skills/debug/SKILL.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
---
name: debug
description: Debug issues by investigating logs, database state, and git history
---

Expand Down
1 change: 1 addition & 0 deletions .claude/skills/describe_pr/SKILL.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
---
name: describe-pr
description: Generate comprehensive PR descriptions following repository templates
---

Expand Down
1 change: 1 addition & 0 deletions .claude/skills/discovery-interview/SKILL.md
Original file line number Diff line number Diff line change
@@ -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
Expand Down
4 changes: 4 additions & 0 deletions .claude/skills/loogle-search/SKILL.md
Original file line number Diff line number Diff line change
@@ -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.
Expand Down
1 change: 1 addition & 0 deletions .claude/skills/plan-agent/SKILL.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
---
name: planning-agent
description: Planning agent that creates implementation plans and handoffs from conversation context
---

Expand Down
6 changes: 6 additions & 0 deletions .claude/skills/recall/SKILL.md
Original file line number Diff line number Diff line change
@@ -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.
Expand Down
6 changes: 6 additions & 0 deletions .claude/skills/remember/SKILL.md
Original file line number Diff line number Diff line change
@@ -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.
Expand Down
1 change: 1 addition & 0 deletions .claude/skills/repo-research-analyst/SKILL.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
---
name: repo-research-analyst
description: Analyze repository structure, patterns, conventions, and documentation for understanding a new codebase
---

Expand Down
1 change: 1 addition & 0 deletions .claude/skills/resume_handoff/SKILL.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
---
name: resume-handoff
description: Resume work from handoff document with context analysis and validation
---

Expand Down
5 changes: 5 additions & 0 deletions .claude/skills/system_overview/SKILL.md
Original file line number Diff line number Diff line change
@@ -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.
Expand Down
5 changes: 5 additions & 0 deletions .claude/skills/tldr-deep/SKILL.md
Original file line number Diff line number Diff line change
@@ -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.
Expand Down
5 changes: 5 additions & 0 deletions .claude/skills/tldr-overview/SKILL.md
Original file line number Diff line number Diff line change
@@ -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.
Expand Down
5 changes: 5 additions & 0 deletions .claude/skills/tldr-router/SKILL.md
Original file line number Diff line number Diff line change
@@ -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.
Expand Down
1 change: 1 addition & 0 deletions .claude/skills/tldr-stats/SKILL.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
---
name: tldr-stats
description: Show full session token usage, costs, TLDR savings, and hook activity
---

Expand Down
5 changes: 5 additions & 0 deletions .claude/skills/tour/SKILL.md
Original file line number Diff line number Diff line change
@@ -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.
Expand Down
1 change: 1 addition & 0 deletions .claude/skills/validate-agent/SKILL.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
---
name: validate-agent
description: Validation agent that validates plan tech choices against current best practices
---

Expand Down
5 changes: 3 additions & 2 deletions opc/scripts/setup/math_features.py
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
72 changes: 56 additions & 16 deletions opc/scripts/setup/wizard.py
Original file line number Diff line number Diff line change
Expand Up @@ -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.

Expand Down Expand Up @@ -838,17 +857,20 @@ 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)
# Ensure fish config directory exists (fish creates it lazily)
if shell_config and shell_type == "fish" and not shell_config.exists():
shell_config.parent.mkdir(parents=True, exist_ok=True)
shell_config.touch()
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")
Expand Down Expand Up @@ -1199,18 +1221,19 @@ 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()

# Ensure fish config directory exists (fish creates it lazily)
if shell_config and shell_type == "fish" and not shell_config.exists():
shell_config.parent.mkdir(parents=True, exist_ok=True)
shell_config.touch()
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")
Expand Down Expand Up @@ -1252,6 +1275,23 @@ 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, shell_type = get_shell_config()
if shell_config and shell_type == "fish":
console.print(f" 1. Run: [bold]. {shell_config}[/bold] (or restart your terminal)")
elif 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]")
Expand Down