Skip to content

Add an opt-in fetch for the GemStone manuals, and a skill that consults them - #571

Open
MatiasFernandez wants to merge 1 commit into
mainfrom
gs-docs-fetch
Open

Add an opt-in fetch for the GemStone manuals, and a skill that consults them#571
MatiasFernandez wants to merge 1 commit into
mainfrom
gs-docs-fetch

Conversation

@MatiasFernandez

@MatiasFernandez MatiasFernandez commented Sep 7, 2026

Copy link
Copy Markdown
Collaborator

npm run docs:fetch downloads GemTalk's official manuals (26 PDFs, ~22 MB — ProgGuide, SysAdminGuide, Topaz and GemBuilder for C for 3.6 and 3.7, plus the per-patch Release Notes), and a new gemstone-docs skill teaches an agent to consult them for facts this repo's code does not define: topaz syntax, configuration parameters, transaction semantics, error numbers.

The skill

It never downloads. Its first step is to check whether the manuals are present; if they are not, it stops and answers from the sources it does have. Fetching is a human action — an agent that quietly pulls 22 MB because a question mentioned GemStone is not what anyone wants. It may mention npm run docs:fetch once, only when the manuals were genuinely the right source.

pdfgrep -C 6 is the navigation recipe, but it is recommended, not required. Without it the skill falls back to reading PDF pages directly and is told not to treat that as an error or to install anything.

Two things it encodes because they are easy to get wrong:

  • The four reference manuals are published per minor version only — one GS64-ProgGuide-3.7.pdf covers all of 3.7.x — so they cannot answer "did this change in 3.7.5?". That goes to the per-patch Release Notes, or vendor/gci-headers/ for the C API.
  • They are the weakest of our three sources. Where something is checkable, the checkable source wins: vendor/gci-headers/ for GCI signatures and error numbers (hash-verified against real installs), a live stone via the jasper MCP tools for Smalltalk behaviour — though a stone only reflects the one version running, so it cannot settle cross-version questions alone.

Opt out entirely with { "permissions": { "deny": ["Skill(gemstone-docs)"] } } in the gitignored .claude/settings.local.json. Verified by experiment, not from docs.

Notes

Opt-in throughout: no install, test or build path touches this. The cache sits outside the working tree so our several worktrees share one download. Zero new dependencies; 28 HTTP requests, and an up-to-date re-run costs two.

PDFs rather than the HTML edition GemTalk also publishes: measured on identical queries, pdfgrep and grep-over-converted-markdown land within a factor of two of each other in both directions, so the HTML route bought no token advantage for 193 files, two devDependencies and a conversion step.

lint, format:check, compile clean; npm test green (7,152 + 322 + 92). Two caveats: the Windows path uses a directory junction (needs no elevation) but has not been run on real Windows — if the link fails the skill falls back to $GS_DOCS_DIR and --where

@MatiasFernandez MatiasFernandez changed the title Add an opt-in fetch for the GemStone manuals Add an opt-in fetch for the GemStone manuals, and a skill that consults them Sep 7, 2026
`npm run docs:fetch` downloads GemTalk's official manuals (26 PDFs,
~22 MB: ProgGuide, SysAdminGuide, Topaz, GemBuilder for C for 3.6 and
3.7, plus the per-patch Release Notes) so an agent can answer GemStone
questions from the vendor's text instead of guessing.
@MatiasFernandez
MatiasFernandez marked this pull request as ready for review September 7, 2026 21:54
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant