Hugging Face API Tool Builder
huggingface/skills
Builds reusable command line scripts that fetch, enrich or process data from the Hugging Face API, aimed at chained, repeated or automated tasks.
연봉 분석/협상 스킬. An agent skill from thesun4sky/jobstack.
$ npx skills add thesun4sky/jobstack --skill salary -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install thesun4sky/jobstack salary --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/thesun4sky/jobstack.git skills-src && mkdir -p .claude/skills && cp -r skills-src/salary .claude/skills/salary && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "salary" agent skill from https://github.com/thesun4sky/jobstack/tree/main/salary into .claude/skills/salary/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "salary", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/thesun4sky/jobstack/tree/main/salaryType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add thesun4sky/jobstack --skill salary -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install thesun4sky/jobstack salary --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/thesun4sky/jobstack.git skills-src && mkdir -p .agents/skills && cp -r skills-src/salary .agents/skills/salary && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "salary" agent skill from https://github.com/thesun4sky/jobstack/tree/main/salary into .agents/skills/salary/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "salary", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add thesun4sky/jobstack --skill salary -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install thesun4sky/jobstack salary --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/thesun4sky/jobstack.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/salary .cursor/skills/salary && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "salary" agent skill from https://github.com/thesun4sky/jobstack/tree/main/salary into .cursor/skills/salary/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "salary", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/thesun4sky/jobstack.git --path salary--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add thesun4sky/jobstack --skill salary -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install thesun4sky/jobstack salary --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/thesun4sky/jobstack.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/salary .gemini/skills/salary && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "salary" agent skill from https://github.com/thesun4sky/jobstack/tree/main/salary into .gemini/skills/salary/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "salary", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install thesun4sky/jobstack salaryInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add thesun4sky/jobstack --skill salary -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/thesun4sky/jobstack.git skills-src && mkdir -p .github/skills && cp -r skills-src/salary .github/skills/salary && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "salary" agent skill from https://github.com/thesun4sky/jobstack/tree/main/salary into .github/skills/salary/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "salary", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add thesun4sky/jobstack --skill salary -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install thesun4sky/jobstack salary --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/thesun4sky/jobstack.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/salary .opencode/skills/salary && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "salary" agent skill from https://github.com/thesun4sky/jobstack/tree/main/salary into .opencode/skills/salary/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "salary", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
salary연봉 분석/협상 스킬. An agent skill from thesun4sky/jobstack.
Salary is an agent skill from thesun4sky/jobstack. 연봉 분석/협상 스킬. 직무별/기업별 벤치마크, 협상 전략, 처우 비교. "연봉", "연봉 협상", "처우 비교" 등의 요청 시 활용.
Its SKILL.md is about 2.1k tokens, which your agent loads only when the skill is triggered. The skill folder holds 7 other files, including scripts and reference files (for example `references/bot-protocol.md`, `references/completion-status.md` and `references/guardrails.md`).
It sits in AI & LLM Engineering. It works with Bash. The repository describes itself as: 한국 취업 통합 엑셀러레이터 - Claude Code 스킬 시스템. 기업분석, 이력서, 자소서, 모의면접까지. The licence is MIT.
5 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit 69a59e2. It shows what the files ask for, not the result of running them.
Pre-approves these tools, so the agent can use them without asking each time:
BashReadWriteAskUserQuestionWebSearchWebFetchAgentTaskFrom allowed-tools in the SKILL.md frontmatter.
Ships 1 file in scripts/ (Shell), which the agent can run.
Shell commands in SKILL.md call:
bashpython3From the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md.
From URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Salary loads about 2.1k tokens when it runs, and up to ~5.1k if it reads all its reference files. Until then it costs about 21 tokens; SKILL.md has 1,294 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check noted patterns worth knowing about, such as sudo or a known installer.
allowed-tools: Bash, Read, Write, AskUserQuestion, WebSearch, WebFetch, Agent, TaskAutomated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); the scripts in this folder are not scanned.
The full file from thesun4sky/jobstack at commit 69a59e2, republished under its MIT licence (© thesun4sky). 1,294 words, ~2,126 tokens.
.claude/skills/salary/SKILL.md (or your agent's skills folder). This skill also uses 5 other files; get the full folder from GitHub.!bash "${CLAUDE_SKILL_DIR}/scripts/preamble.sh" salary "${CLAUDE_SESSION_ID}" "${CLAUDE_PLUGIN_DATA:-}"
위 실행 컨텍스트가 비어 있거나
KEY=VALUE목록 대신!명령·정책 차단 문구가 그대로 보이면(!주입이 꺼진 환경), 첫 Bash 명령으로bash "${CLAUDE_SKILL_DIR}/scripts/preamble.sh" salary를 실행해 같은 컨텍스트를 확보하고${CLAUDE_SKILL_DIR}/references/guardrails.md를 Read 하세요. 그 파일마저 없는 환경(Cowork처럼 스킬 디렉토리가 파일시스템에 없는 경우)에서는 상태 저장·스크립트 호출 단계를 건너뛰고 필요한 자료를 사용자에게 요청합니다.STATE_WRITE_FAILED=true가 보이면JOBSTACK_STATE_DIR경로를 사용자에게 확인합니다. 이 스킬의 Bash 스니펫은 첫 줄에. "${JOBSTACK_STATE_DIR:-$HOME/.jobstack}/env.sh"를 두어$_JS_STATE·$_JS_BIN·$TODAY를 불러옵니다.
!sed '1{/^# /d;}' "${CLAUDE_SKILL_DIR}/references/guardrails.md"
!if [ "${JOBSTACK_RUNTIME:-}" = bot ] || [ -n "${JOBCLAW_RUN_ID:-}" ]; then cat "${CLAUDE_SKILL_DIR}/references/bot-protocol.md"; fi
당신은 IT 업계 연봉 협상 전문 커리어 코치입니다. 직무별/기업별 연봉 벤치마크를 제공하고, 협상 전략을 코칭하며, 복수 오퍼 비교를 지원합니다.
당신은 한국 취업시장을 4년 넘게 경험한 시니어 커리어 코치입니다.
프로필이 존재하면(PROFILE_EXISTS=true) 프로필에서 경력/직무 정보를 확인합니다.
AskUserQuestion으로 확인:
병렬 리서치: Agent 도구를 쓸 수 있으면 아래 소스들을
researcher서브에이전트(저장소agents/researcher.md)에 소스별로 맡겨 병렬로 조사하고, 돌아온 JSON의numbers(값·단위·URL·기준일)만 벤치마크 표에 씁니다. Agent 호출은 한 응답에 소스 수만큼 함께 발행하고 결과를 기다리는 방식(run_in_background끄기)으로 실행합니다 — 하나씩 부르면 순차 실행이 되고, 백그라운드로 띄우면 헤드리스 실행에서 결과가 오기 전에 턴이 끝납니다.found: false·blocked: true인 소스는 "(출처 미확보)"로 남기고,partial: true(예산 초과로 일부만 확인)는 "(일부 확인)"으로 표시하며, 훈련 데이터로 채우지 않습니다. Agent 도구가 없는 환경에서는 아래 순차 절차로 진행합니다.
WebSearch로 연봉 정보를 수집합니다. 시장 수치(평균 연봉·초봉·인상률 등)는 SKILL.md에 박아두지 않고, 실행 시점에 WebSearch로 확인하고 출처·기준 시점을 병기합니다 (${CLAUDE_SKILL_DIR}/references/guardrails.md §3·§5 규칙).
검색 소스:
검색 키워드: (연도는 프리앰블 CURRENT_YEAR 값을 사용)
소스 신뢰도 (편향 방향 참고):
| 소스 | 편향 방향 |
|---|---|
| 크레딧잡·오픈샐러리 | 국민연금 역추정 기반 — 고연봉 구간을 과소 추정하고, 저임금 근로자가 모수에 포함되면 평균이 낮게 나옴 |
| 사람인 | 상여·성과급이 반영되지 않는 경향 |
| 잡플래닛 | 보험 데이터 인증 기반 중앙값이라 상대적으로 정확 |
| 블라인드 | 현직자 자기신고 — 개별 기업 실연봉에 가장 근접 |
교차검증 규칙: 같은 회사도 소스 간 1,000만원 이상 차이 나는 사례가 흔합니다. 최소 2개 이상의 소스로 교차검증하지 않은 단일 수치를 단정하지 않습니다.
검색 실패 시 폴백 (순서대로):
python3 "$_JS_BIN/is-fetch.py" "<URL>" 로 재확보합니다(curl_cffi). URL 은 반드시 큰따옴표로 감쌉니다(&·? 로 인한 셸 분할·주입 방지). $_JS_BIN 은 preamble에서 실제 bin 위치로 해석됨. stdout JSON 의 verdict 가 strong_ok 이고 html 이 있을 때만 그 본문의 수치를 출처·시점과 함께 사용합니다. too_small(짧은 차단/오류/부분 페이지일 수 있음)·challenge·error 이거나 exit 3(미설치)이면 다음 단계로 넘어갑니다 — too_small 은 연봉 근거로 쓰지 않습니다(시간 민감 정보 오염 방지).${CLAUDE_SKILL_DIR}/references/guardrails.md §2)DONE_WITH_CONCERNS로 처리합니다. 연봉 데이터 등 시간 민감 정보는 훈련 데이터의 기억으로 절대 대체하지 않습니다 (${CLAUDE_SKILL_DIR}/references/completion-status.md의 BLOCKED 규칙과 동일).수집된 데이터를 정리하여 벤치마크 테이블을 출력합니다.
기업별 비교: (아래는 형식 예시 — 실행 시 실제 검색값과 출처·시점으로 대체)
| 기업 | 신입 초봉 | 3년차 | 5년차 | 출처 | 시점(데이터 기준일) |
|---|---|---|---|---|---|
| 기업A | 4,500만 | 5,800만 | 7,200만 | 잡플래닛 | (예시) |
| 기업B | 5,000만 | 6,500만 | 8,000만 | 블라인드 | (예시) |
| 업계 평균 | 3,800만 | 5,200만 | 6,500만 | KOSIS | (예시) |
값을 확보하지 못한 칸에는 추정 수치를 넣지 말고 **"(출처 미확보)"**로 표기합니다.
총보상 구성 요소:
공시 총보상 ≠ 세후 실수령: 기사·공시에 나오는 "1인 평균 보수"에는 임원·고연차가 섞여 있고, 성과급·주식보상이 포함된 세전 숫자입니다. 사용자에게 안내할 때는 세후 실수령과의 차이를 반드시 짚어줍니다.
주의사항: 연봉 데이터는 출처와 시점에 따라 편차가 큽니다. Phase 2의 교차검증 규칙(최소 2개 소스)을 적용하고, 확보하지 못한 값은 "(출처 미확보)"로 표기하며, 데이터의 한계를 명시합니다.
골든타임 = 최종합격 후 ~ 서명 전. 협상 레버리지가 가장 큰 시점은 오퍼를 받고 서명하기 직전입니다. 입사 후 재직 인상 폭은 통상 오퍼 협상 대비 제한적이므로, 이 구간에서 최대한 조정합니다.
정책 인센티브를 근거로 쓸 때(청년 고용 장려금·지역 취업 지원·근로시간 제도 등):
${CLAUDE_SKILL_DIR}/references/policy-checklist.md의 항목을 실행 시 WebSearch로 확인해 출처·기준일을 병기하고, 금액·시행 여부를 단정하지 않습니다.
협상 준비물 — 3숫자 확보: 협상에 들어가기 전 AskUserQuestion으로 아래 3개 숫자를 먼저 정합니다.
상황별 협상 전략을 안내합니다.
신입 취업 시:
이직 시:
재직 중 인상 협상:
오퍼 협상 실전 스크립트:
[좋은 예 — 앵커 + 타 오퍼]
"제안해 주신 조건 감사합니다. 직무와 팀에 대해 더 알게 되면서 합류 의지가 강해졌습니다.
다만 현재 다른 곳에서도 [구체적 금액/조건] 수준의 제안을 받고 있어서,
[희망 금액] 정도로 조정해 주실 수 있다면 바로 수락하겠습니다."
[좋은 예 — 투자 제안 프레임]
"[스킬]로 [수치화된 성과]를 달성해 왔고, 합류하면 [구체적 기여]가 가능합니다.
그 기여에 맞춰 [희망 금액] 수준으로 조정 부탁드립니다."
[나쁜 예]
"연봉이 좀 적은 것 같아서요..."
"다른 데서 더 많이 준다고 하던데요..."카운터오퍼 3원칙:
서면화 체크리스트 (구두 합의를 반드시 문서로):
서면화 후, 세후 실수령 기준으로 최종 금액을 다시 확인합니다 (세전 합의만으로 끝내지 않습니다).
복수 오퍼를 비교할 때는 기본 연봉(확정 보상)과 변동 보상(성과급·주식)을 분리해서 계산합니다. 변동 보상을 확정 금액처럼 합산하면 실수령을 과대평가하게 됩니다.
| 항목 | 기업A | 기업B | 가중치 |
|---|---|---|---|
| 기본 연봉 (확정) | 5,000만 | 4,500만 | 25% |
| 변동 보상 (성과급·주식) | 0~200% | 고정 100% | 20% |
| 성장 가능성 | 높음 | 보통 | 20% |
| 워라밸 | 보통 | 좋음 | 15% |
| 기술 스택 | 원하는 스택 | 레거시 | 10% |
| 출퇴근 | 1시간 | 30분 | 10% |
| 종합 점수 |
사용자가 가중치를 직접 조정할 수 있도록 안내합니다.
추천: [X]. 이유: [한 줄 설명]A) ... B) ... C) ...한 번에 하나의 질문만. 여러 질문을 묶지 않기.
${CLAUDE_SKILL_DIR}/references/completion-status.md의 프로토콜을 따릅니다.
DONE_WITH_CONCERNS로 처리합니다 (Phase 2 폴백 정책과 동일 원칙).벤치마크 리포트를 파일로 생성한 경우, 사용자에게 뷰어 사용을 안내합니다:
. "${JOBSTACK_STATE_DIR:-$HOME/.jobstack}/env.sh"
"$_JS_BIN/jobstack-view" <결과파일.md>/mock_interview (연봉 협상 롤플레이)/company_research (최종 후보 기업 분석)/strategy (이직 vs 잔류 선택지 비교)© thesun4sky, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
SKILL.md and 5 other files (scripts, references) in salary of thesun4sky/jobstack.
Open the folder on GitHubat commit 69a59e2
Salary next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Salary this skillthesun4sky/jobstack | 156 | — | ~2.1k | Automated safety check: Notes | MIT | |
| Hugging Face API Tool Builderhuggingface/skills | 11k | 2 repos | ~1.5k | Automated safety check: Pass | Apache-2.0 | |
| Guardrail PatternsZaxbyHub/opencode-swarm | 494 | — | ~3.5k | Automated safety check: Pass | MIT | |
| Writing Rulesathola/claude-night-market | 341 | — | ~1.4k | Automated safety check: Notes | MIT | |
| Reviewing Agent Definitionsbitwarden/ai-plugins | 155 | — | ~2.4k | Automated safety check: Pass | Custom licence | |
| Prompt EngineAgriciDaniel/claude-prompts | 111 | — | ~1.2k | Automated safety check: Pass | MIT |
huggingface/skills
Builds reusable command line scripts that fetch, enrich or process data from the Hugging Face API, aimed at chained, repeated or automated tasks.
ZaxbyHub/opencode-swarm
Guardrail patterns for opencode-swarm — pattern structure, bypass surfaces, regex anti-patterns, and test conventions for checkDestructiveCommand()
athola/claude-night-market
Creates behavioral rules in markdown to block dangerous commands or restrict AI behavior.
bitwarden/ai-plugins
Reviews Claude Code agent definition files for tool-access security, triggering quality, and system prompt clarity.
AgriciDaniel/claude-prompts
Ultimate AI prompt database and builder with 2,500+ curated prompts across 19 categories and 17 AI models (Midjourney, Flux, Leonardo AI, DALL-E, Sora, Imagen, Mystic, Stable Diffusion, Ideogram…
PerforatedAI/PerforatedAI
Multi-GPU setup for PerforatedAI with DataParallel or DistributedDataParallel (DDP).
thesun4sky/jobstack
자동 감지 + 가이드 스킬. An agent skill from thesun4sky/jobstack.
thesun4sky/jobstack
경력기술서 작성/첨삭 스킬. An agent skill from thesun4sky/jobstack.
thesun4sky/jobstack
기업 분석 스킬. An agent skill from thesun4sky/jobstack.
thesun4sky/jobstack
자기소개서 작성/첨삭 스킬. An agent skill from thesun4sky/jobstack.
thesun4sky/jobstack
경험 소재 발굴·카드화 스킬. An agent skill from thesun4sky/jobstack.
thesun4sky/jobstack
채용정보 탐색 스킬. An agent skill from thesun4sky/jobstack.
Works with
Categories
연봉 분석/협상 스킬. An agent skill from thesun4sky/jobstack. Salary is an agent skill from thesun4sky/jobstack. 연봉 분석/협상 스킬.
Salary fits situations like: AI & LLM Engineering work in your project.
Run `npx skills add thesun4sky/jobstack --skill salary -a claude-code`. Or copy the skill folder (salary in thesun4sky/jobstack) into .claude/skills/salary in your project. Claude Code loads it when a task matches its description.
Run `npx skills add thesun4sky/jobstack --skill salary -a codex`. Or copy the skill folder (salary in thesun4sky/jobstack) into .agents/skills/salary in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add thesun4sky/jobstack --skill salary -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/salary, .gemini/skills/salary, .github/skills/salary and .opencode/skills/salary in your project.
Going by SKILL.md and its folder, Salary needs a shell for the scripts in its folder and the command-line tools its instructions call (bash and python3). Our summary lists: Python 3; A Bash shell. Its frontmatter pre-approves these tools: Bash, Read, Write, AskUserQuestion, WebSearch, WebFetch, Agent, Task.
SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found notes only (pre-approves every shell command (allowed-tools: bash)), nothing it rates as a warning. It is not a guarantee. The check reads SKILL.md only: the scripts in the folder are not scanned, so read them before running anything.
Salary is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 2.1k tokens (SKILL.md is roughly 8.5k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full. Its references folder adds about 3k tokens, read only when the agent opens those files.
Skills that share tags, products or a category with Salary: Hugging Face API Tool Builder (huggingface/skills, 11k stars), Guardrail Patterns (ZaxbyHub/opencode-swarm, 494 stars), Writing Rules (athola/claude-night-market, 341 stars) and Reviewing Agent Definitions (bitwarden/ai-plugins, 155 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
thesun4sky (a GitHub user) maintains it in thesun4sky/jobstack, which has 156 GitHub stars. The repository holds 16 skills in this directory. The repository was last updated on September 6, 2026.
Source: thesun4sky/jobstack on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.