Add an opt-in fetch for the GemStone manuals, and a skill that consults them - #571
Open
MatiasFernandez wants to merge 1 commit into
Open
Add an opt-in fetch for the GemStone manuals, and a skill that consults them#571MatiasFernandez wants to merge 1 commit into
MatiasFernandez wants to merge 1 commit into
Conversation
`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
force-pushed
the
gs-docs-fetch
branch
from
September 7, 2026 21:54
792ec8d to
1e86af1
Compare
MatiasFernandez
marked this pull request as ready for review
September 7, 2026 21:54
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
npm run docs:fetchdownloads 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 newgemstone-docsskill 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:fetchonce, only when the manuals were genuinely the right source.pdfgrep -C 6is 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:
GS64-ProgGuide-3.7.pdfcovers all of 3.7.x — so they cannot answer "did this change in 3.7.5?". That goes to the per-patch Release Notes, orvendor/gci-headers/for the C API.vendor/gci-headers/for GCI signatures and error numbers (hash-verified against real installs), a live stone via thejasperMCP 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,
pdfgrepand 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,compileclean;npm testgreen (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_DIRand--where