first commit

This commit is contained in:
2026-06-11 03:33:14 +08:00
commit 5f555bf342
599 changed files with 142347 additions and 0 deletions

View File

@@ -0,0 +1,104 @@
name: Bug report
description: Report an installation, runtime, compatibility, or behavior bug in Claude Scholar.
title: "[Bug]: "
labels:
- bug
body:
- type: markdown
attributes:
value: |
Thanks for reporting a bug.
Please keep this report concrete. The fastest bug reports for Claude Scholar include:
- the client and branch,
- the exact command or prompt,
- the full warning or traceback,
- and a short reproduction path.
- type: checkboxes
id: preflight
attributes:
label: Before submitting
options:
- label: I checked the README / setup docs for the branch I am using.
required: true
- label: I included the exact error text instead of paraphrasing it.
required: true
- type: dropdown
id: client
attributes:
label: Client
options:
- Claude Code
- Codex
- OpenCode
- Other / unsure
validations:
required: true
- type: dropdown
id: branch
attributes:
label: Branch
options:
- main
- codex
- opencode
- unsure
validations:
required: true
- type: textarea
id: environment
attributes:
label: Environment
description: Include only the details that matter for reproducing the issue.
placeholder: |
OS: macOS 15.4
Shell: zsh
Install mode: scripts/setup.sh
Client version: Claude Code 2.1.42
validations:
required: true
- type: textarea
id: exact_action
attributes:
label: Exact command or exact prompt
placeholder: |
bash scripts/setup.sh
or
Review my Zotero collection on brain foundation models.
validations:
required: true
- type: textarea
id: actual_behavior
attributes:
label: Actual behavior
description: Describe what happened, then paste the full error or terminal output below.
validations:
required: true
- type: textarea
id: error_output
attributes:
label: Full error / terminal output
render: shell
validations:
required: true
- type: textarea
id: reproduction_steps
attributes:
label: Reproduction steps
placeholder: |
1. Clone branch ...
2. Run ...
3. Start client ...
4. Observe ...
validations:
required: true

View File

@@ -0,0 +1,8 @@
blank_issues_enabled: false
contact_links:
- name: Claude Scholar setup docs
url: https://github.com/Galaxy-Dawn/claude-scholar#quick-start
about: Please check the Quick Start section before opening an installation issue.
- name: Claude Scholar branch guide
url: https://github.com/Galaxy-Dawn/claude-scholar#why-claude-scholar
about: Confirm that you are using the correct branch for Claude Code, Codex, or OpenCode.

View File

@@ -0,0 +1,65 @@
name: Documentation problem
description: Report outdated, inconsistent, unclear, or incorrect documentation.
title: "[Docs]: "
labels:
- documentation
body:
- type: markdown
attributes:
value: |
Use this template for documentation issues such as:
- wrong commands or paths,
- branch-specific instructions that drifted,
- unclear wording,
- or setup docs that no longer match actual behavior.
- type: dropdown
id: doc_surface
attributes:
label: Affected document
options:
- README
- MCP_SETUP
- OBSIDIAN_SETUP
- CLAUDE / AGENTS docs
- Skill documentation
- Installer instructions
- Other
validations:
required: true
- type: dropdown
id: branch
attributes:
label: Affected branch
options:
- main
- codex
- opencode
- multiple branches
- unsure
validations:
required: true
- type: textarea
id: location
attributes:
label: Problematic location
description: Quote the current text, command, path, or section title.
validations:
required: true
- type: textarea
id: issue
attributes:
label: What is wrong
validations:
required: true
- type: textarea
id: suggested_fix
attributes:
label: Suggested fix
description: If you already know the corrected wording or command, propose it here.
validations:
required: false

View File

@@ -0,0 +1,60 @@
name: Workflow gap
description: Report a missing, weak, or awkward handoff in a research workflow, even if nothing is technically broken.
title: "[Workflow gap]: "
labels:
- workflow
body:
- type: markdown
attributes:
value: |
Use this template when Claude Scholar technically works, but the workflow is still incomplete.
Examples:
- the workflow stops too early,
- a handoff between stages is weak,
- the current output is not enough for real research use,
- or an expected research step is missing.
- type: dropdown
id: stage
attributes:
label: Workflow stage
options:
- Ideation
- Literature review
- Zotero / paper intake
- Obsidian / project memory
- Experiment tracking
- Results analysis
- Publication artifacts (figures / tables)
- Results reporting
- Paper writing
- Rebuttal / review response
- Post-acceptance
- Cross-stage handoff
validations:
required: true
- type: textarea
id: gap
attributes:
label: Current gap
description: What is missing, awkward, or incomplete in the current workflow?
validations:
required: true
- type: textarea
id: desired_outcome
attributes:
label: Desired outcome
description: What should Claude Scholar help you produce, decide, or hand off here?
validations:
required: true
- type: textarea
id: example
attributes:
label: Concrete example
description: Provide a representative prompt, artifact path, or research situation.
validations:
required: true

View File

@@ -0,0 +1,29 @@
## Summary
- What changed?
- Why did it change?
## Affected surfaces
- [ ] main
- [ ] codex
- [ ] opencode
- [ ] README / docs
- [ ] installer
- [ ] skills
- [ ] agents
- [ ] hooks
- [ ] MCP / Obsidian docs
## Validation
- [ ] Relevant docs were updated if behavior changed
- [ ] No machine-specific private paths were introduced
- [ ] No branch-specific path or config leaked into the wrong branch
- [ ] Basic validation or smoke test was run
## Behavior change note
If this PR changes user-facing behavior, briefly describe:
- previous behavior
- new behavior
- any migration or manual merge note
## Evidence
Include screenshots, terminal output, example artifacts, or acceptance notes when useful.

View File

@@ -0,0 +1,58 @@
name: installer-smoke
on:
pull_request:
push:
branches:
- main
- codex
- opencode
jobs:
installer-smoke:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Verify installer entrypoints exist
run: |
set -euo pipefail
test -f scripts/setup.sh
test -f scripts/uninstall.sh
test -f scripts/test_install_uninstall.sh
test -f README.md
test -f README.zh-CN.md
test -f README.ja-JP.md
- name: Syntax check installer scripts
run: bash -n scripts/setup.sh
- name: Run install/uninstall smoke tests
run: bash scripts/test_install_uninstall.sh
- name: Verify branch-specific top-level docs exist
run: |
set -euo pipefail
if [ -f CLAUDE.md ]; then
test -f CLAUDE.zh-CN.md
test -f CLAUDE.ja-JP.md
fi
if [ -f AGENTS.md ]; then
test -f AGENTS.md
fi
test -f MCP_SETUP.md
test -f MCP_SETUP.zh-CN.md
test -f MCP_SETUP.ja-JP.md
test -f OBSIDIAN_SETUP.md
test -f OBSIDIAN_SETUP.zh-CN.md
test -f OBSIDIAN_SETUP.ja-JP.md
- name: Verify key skills still exist
run: |
set -euo pipefail
test -f skills/research-ideation/SKILL.md
test -f skills/results-analysis/SKILL.md
test -f skills/results-report/SKILL.md
test -f skills/ml-paper-writing/SKILL.md
test -f skills/publication-chart-skill/SKILL.md

View File

@@ -0,0 +1,65 @@
name: repo-sanity
on:
pull_request:
push:
branches:
- main
- codex
- opencode
jobs:
repo-sanity:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Check tracked top-level docs for obvious machine-specific paths
run: |
set -euo pipefail
python3 - <<'PY'
import re
import subprocess
import sys
from pathlib import Path
tracked = subprocess.check_output(['git', 'ls-files'], text=True).splitlines()
allowed = {
'README.md', 'README.zh-CN.md', 'README.ja-JP.md',
'CLAUDE.md', 'CLAUDE.zh-CN.md', 'CLAUDE.ja-JP.md',
'AGENTS.md',
'MCP_SETUP.md', 'MCP_SETUP.zh-CN.md', 'MCP_SETUP.ja-JP.md',
'OBSIDIAN_SETUP.md', 'OBSIDIAN_SETUP.zh-CN.md', 'OBSIDIAN_SETUP.ja-JP.md',
'settings.json.template',
'.github/PULL_REQUEST_TEMPLATE.md',
'.github/ISSUE_TEMPLATE/bug_report.yml',
'.github/ISSUE_TEMPLATE/workflow_gap.yml',
'.github/ISSUE_TEMPLATE/docs_problem.yml',
'.github/ISSUE_TEMPLATE/config.yml',
}
pattern = re.compile(r'/Users/[A-Za-z0-9_.-]+|/home/[A-Za-z0-9_.-]+|[A-Za-z]:\\Users\\[A-Za-z0-9_. -]+')
bad = []
for rel in tracked:
if rel not in allowed:
continue
try:
text = Path(rel).read_text(encoding='utf-8')
except Exception:
continue
if pattern.search(text):
bad.append(rel)
if bad:
print('Found machine-specific paths in:')
for rel in bad:
print(rel)
sys.exit(1)
PY
- name: Check tracked junk files
run: |
set -euo pipefail
if git ls-files | rg '(^|/)(\.DS_Store|Thumbs\.db|desktop\.ini)$'; then
echo "Tracked junk files detected."
exit 1
fi