4 Commits

Author SHA1 Message Date
SyntaxSmith 3c58cace17 feat(skills): layer-4 global pointer ~/.aris/repo in helper resolution chain (#358)
Global copy installs (~/.claude/skills) could not resolve canonical
helpers: no project .aris/tools, no project tools/, no ARIS_REPO env —
paper-writing/review skills aborted with helper-not-found. The chain
gains a 4th layer: when ARIS_REPO is still unset, read the pointer file
~/.aris/repo (one line, absolute repo path) written by every installer
and updater at install/update time.

- integration-contract.md §2 + wiki-helper-resolution.md: canonical
  resolver block and prose updated to the 4-layer chain
- 25 SKILL.md callers: pointer stanza inserted into every resolver
  block; not-resolved error messages now mention the pointer fix
- skills-codex mirror shared-references kept byte-in-step
- tools/ helper docstrings + OPENROUTER guides: chain descriptions
  updated; verify_wiki_coverage.sh gains the runtime pointer check
- tests/test_research_wiki_helper_resolution.py: hermetic $HOME per
  test + new test_layer4_global_pointer_file

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-14 19:46:23 +08:00
thejesh23 e67ae16294 fix: quote argument-hint YAML values so Copilot CLI ≥1.0.65 loads all skills
`argument-hint: [foo]` YAML-parses as a flow sequence (array), not a
string. Downstream slash-command loaders that validate `argument-hint`
as a string — notably GitHub Copilot CLI ≥ 1.0.65 — silently reject
the skill on load, and the command disappears from the CLI menu.

Wrap the value in double quotes so it parses as a string. No behaviour
change on Claude Code.
2026-07-13 10:23:48 +08:00
Ruofeng Yang 0f7d6b93a7 docs(fetchers): migrate 5 fetcher callers + verify_wiki_coverage to canonical resolver (Policy D1/D2/E)
5 fetcher SKILLs migrate from bespoke pre-canonical lookup patterns
(arxiv pathlib candidates, semantic-scholar find tools/, deepxiv
hardcoded tools/, exa-search find tools/, openalex find tools/ +
~/.claude/skills/) to the canonical strict-safe 3-layer chain from
integration-contract.md §2. Each uses a semantic variable name —
$ARXIV_FETCHER, $S2_FETCHER, $DEEPXIV_FETCHER, $EXA_FETCHER,
$OPENALEX_FETCHER — to avoid clobbering when a single SKILL resolves
multiple helpers.

Standalone fetcher SKILLs are Policy D1 (single-source cascade):
- arxiv / semantic-scholar / deepxiv have documented fallbacks
  (inline Python or raw deepxiv CLI). Prose updated to "if unresolved
  (canonical chain exhausted), fall back to ..." — matches actual
  bash behavior (invocation failure is not auto-cascaded).
- exa-search / openalex have no inline fallback (SDKs are required),
  so unresolved helper terminates with explicit remediation error.

/research-lit migrates as a Policy D2 multi-source aggregate:
- Each source's bash block independently re-resolves $ARIS_REPO (SKILL
  bash blocks may run in separate shells; ARIS_REPO state is not
  guaranteed across blocks).
- Each helper invocation wrapped with if/then/else so set -e doesn't
  abort the SKILL when one source fails; success emits a
  `D2 contribution: <name>` log line.
- Source table updated: each row's activation predicate now matches
  the actual bash gate (DeepXiv requires CLI; OpenAlex requires
  `requests`; Exa's exa-py is internal to the fetcher).
- D2 finalization (orchestrator-managed in-context tracking, since
  bash variables don't survive cross-block): helper-backed sources
  contribute on resolver+exit-0; non-helper sources (zotero/obsidian/
  local/WebSearch/Gemini) have their own per-source contribution
  rules (returned results for MCP/local/Gemini; requested+invoked
  for WebSearch).
- D2 empty-aggregate ERROR is raised if zero sources contributed,
  blocking Step 2 from operating on an empty paper set.
- arXiv block's "always runs" prose tightened to clarify it is part
  of the Priority-4 Web tier and gated on `— sources:` containing
  `web`, `all`, or being unset.
- Optional PDF download now re-resolves $ARXIV_FETCHER independently.

/research-wiki/SKILL.md updates the verify_wiki_coverage.sh prose
reference (Policy E diagnostic) to canonical name with §2 reference.

/research-lit/SKILL.md also fixes a critical leftover bug: an
$SCRIPT-named variable from the old code at the Optional PDF download
block — now uses the re-resolved $ARXIV_FETCHER, guarded by
`[ -n "$ARXIV_FETCHER" ]` so it skips silently if the helper is
unresolved.

7 files total. Codex mirror equivalents are deferred to Phase 1.7.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-16 20:05:22 +08:00
young c8784ab466 feat(research-lit): add gemini and openalex as literature search sources
- Add Gemini (MCP/CLI) as source 8: AI-powered broad literature discovery
  with topic decomposition, alias expansion, and variant retrieval
- Add OpenAlex as source 9: open citation graph with institutional
  affiliations, funding data, and 250M+ works (no API key required)
- Add skills/gemini-search/SKILL.md skill definition
- Add skills/openalex/SKILL.md skill definition
- Add tools/openalex_fetch.py for OpenAlex API integration
- Update research-lit source table, source selection docs, and examples
- Document de-duplication rules against arXiv, S2, DeepXiv, and Exa
2026-04-27 22:39:18 +08:00