Guidance for Claude Code (claude.ai/code) working in this repository.
Phase 1 scaffold. The Python package (vibe_sci/) lands in Phase 2 — a port of hermes-sci with the Hermes-runtime coupling stripped out. Until then the CLI doesn't run; only the skill definition is live.
skills/vibe-sci/SKILL.md is the single source of truth. Every host discovers it through a symlink:
.claude/skills/vibe-sci→../../skills/vibe-sci(Claude Code, Copilot CLI, Warp).gemini/skills/vibe-sci→ same (Gemini CLI).agents/skills/vibe-sci→ same (OpenAI Codex + Warp + Cursor-via-AGENTS.md).opencode/skills/vibe-sci→ same (OpenCode)
Plugin-layer manifests at .claude-plugin/plugin.json and .codex-plugin/plugin.json reference the same canonical path — install via npx skills add easyvibecoding/vibe-sci --skill vibe-sci or through either plugin marketplace reaches the same file.
- Edit
skills/vibe-sci/SKILL.mdonly. Every symlinked host sees the change immediately. - Keep the frontmatter to the four agentskills.io-compliant fields only:
name,description,license,compatibility. Non-standard fields (title,version,trigger,dependencies,platforms,metadata) go inmetadata:or are dropped. - Bump the version in
.claude-plugin/plugin.json+.codex-plugin/plugin.jsontogether when the skill body changes materially.
Port target modules from hermes-sci/skills/hermes-sci/package/hermes_sci/:
orchestrator.py,ideation.py,writeup.py,review.py,coder.py,novelty.py,treesearch.py,verify.py— business logic, port with minimal changeconfig.py— rewrite: dropBackend = Literal["minimax", "hybrid"]and~/.hermes/config.yamlreads, replace with provider auto-detection (claude CLI → OpenAI-compat env var → rule-based fallback)llm.py— rewrite: keep the OpenAI-SDK-against-any-endpoint approach, drop MiniMax peak-hour throttle + hybrid claude-proxy, addclaude -psubprocess path as an equal-citizen providersanitize/,prompts/,latex/,data/— port as-ishardware.py,progress.py,results.py— port as-is
npx skills add easyvibecoding/vibe-sci --skill vibe-sci --listShould report 1 skill after push. Pre-push, tests/test_skill_spec.py catches frontmatter drift locally.