Daily
sickn33/agentic-awesome-skills
Documentation and capabilities reference for Daily. An agent skill from sickn33/agentic-awesome-skills.
Resolve Japan sightseeing places, inspect tenki.jp daily/hourly forecasts, compare user weather thresholds, or check mountain and sakura/foliage evidence with source time and year.
$ npx skills add mvanhorn/printing-press-library --skill pp-tenki -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install mvanhorn/printing-press-library pp-tenki --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/mvanhorn/printing-press-library.git skills-src && mkdir -p .claude/skills && cp -r skills-src/cli-skills/pp-tenki .claude/skills/pp-tenki && 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 "pp-tenki" agent skill from https://github.com/mvanhorn/printing-press-library/tree/main/cli-skills/pp-tenki into .claude/skills/pp-tenki/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "pp-tenki", 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/mvanhorn/printing-press-library/tree/main/cli-skills/pp-tenkiType 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 mvanhorn/printing-press-library --skill pp-tenki -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install mvanhorn/printing-press-library pp-tenki --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/mvanhorn/printing-press-library.git skills-src && mkdir -p .agents/skills && cp -r skills-src/cli-skills/pp-tenki .agents/skills/pp-tenki && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "pp-tenki" agent skill from https://github.com/mvanhorn/printing-press-library/tree/main/cli-skills/pp-tenki into .agents/skills/pp-tenki/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "pp-tenki", 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 mvanhorn/printing-press-library --skill pp-tenki -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install mvanhorn/printing-press-library pp-tenki --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/mvanhorn/printing-press-library.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/cli-skills/pp-tenki .cursor/skills/pp-tenki && 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 "pp-tenki" agent skill from https://github.com/mvanhorn/printing-press-library/tree/main/cli-skills/pp-tenki into .cursor/skills/pp-tenki/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "pp-tenki", 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/mvanhorn/printing-press-library.git --path cli-skills/pp-tenki--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 mvanhorn/printing-press-library --skill pp-tenki -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install mvanhorn/printing-press-library pp-tenki --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/mvanhorn/printing-press-library.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/cli-skills/pp-tenki .gemini/skills/pp-tenki && 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 "pp-tenki" agent skill from https://github.com/mvanhorn/printing-press-library/tree/main/cli-skills/pp-tenki into .gemini/skills/pp-tenki/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "pp-tenki", 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 mvanhorn/printing-press-library pp-tenkiInstalls 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 mvanhorn/printing-press-library --skill pp-tenki -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/mvanhorn/printing-press-library.git skills-src && mkdir -p .github/skills && cp -r skills-src/cli-skills/pp-tenki .github/skills/pp-tenki && 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 "pp-tenki" agent skill from https://github.com/mvanhorn/printing-press-library/tree/main/cli-skills/pp-tenki into .github/skills/pp-tenki/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "pp-tenki", 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 mvanhorn/printing-press-library --skill pp-tenki -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install mvanhorn/printing-press-library pp-tenki --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/mvanhorn/printing-press-library.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/cli-skills/pp-tenki .opencode/skills/pp-tenki && 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 "pp-tenki" agent skill from https://github.com/mvanhorn/printing-press-library/tree/main/cli-skills/pp-tenki into .opencode/skills/pp-tenki/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "pp-tenki", 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.
pp-tenkiResolve Japan sightseeing places, inspect tenki.jp daily/hourly forecasts, compare user weather thresholds, or check mountain and sakura/foliage evidence with source time and year.
Pp Tenki is an agent skill from mvanhorn/printing-press-library. Resolve Japan sightseeing places, inspect tenki.jp daily/hourly forecasts, compare user weather thresholds, or check mountain and sakura/foliage evidence with source time and year.
Its SKILL.md is about 2.9k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.
The repository describes itself as: Official library of CLIs generated by the CLI Printing Press. Endorsed, tested, and community-contributed. The licence is Apache-2.0.
3 steps, taken from the first numbered list in SKILL.md.
Read from SKILL.md and the folder at commit 76de244. 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:
ReadBashFrom allowed-tools in the SKILL.md frontmatter.
Shell commands in SKILL.md call:
gonpxFrom the folder's file list and the shell code blocks in SKILL.md.
Hosts in commands or code, which the agent is likely to contact:
tenki.jpFrom 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.
Pp Tenki loads about 2.9k tokens when it runs. Until then it costs about 47 tokens; SKILL.md has 1,148 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: Read, BashAutomated 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); files beside SKILL.md are not scanned.
The full file from mvanhorn/printing-press-library at commit 76de244, republished under its Apache-2.0 licence (© mvanhorn). 1,148 words, ~2,914 tokens.
.claude/skills/pp-tenki/SKILL.md (or your agent's skills folder).<!-- GENERATED FILE — DO NOT EDIT.
This file is a verbatim mirror of library/travel/tenki/SKILL.md,
regenerated post-merge by tools/generate-skills/. Hand-edits here are
silently overwritten on the next regen. Edit the library/ source instead.
See the repository agent guide, section "Generated artifacts: registry.json, cli-skills/". -->
This skill drives the tenki-pp-cli binary. You must verify the CLI is installed before invoking any command from this skill. If it is missing, install it first:
$HOME/.local/bin on macOS/Linux and %LOCALAPPDATA%\Programs\PrintingPress\bin on Windows:npx -y @mvanhorn/printing-press-library install tenki --cli-onlytenki-pp-cli --version$PATH for the agent/runtime that will invoke this skill.If the npx install fails (no Node, offline, etc.), fall back to a direct Go install (requires Go 1.26.6 or newer). This installs into $GOPATH/bin (default $HOME/go/bin), so add that directory to $PATH instead:
go install github.com/mvanhorn/printing-press-library/library/travel/tenki/cmd/tenki-pp-cli@latestIf --version reports "command not found" after install, the runtime cannot see the binary directory on $PATH. Do not proceed with skill commands until verification succeeds.
Before a public-library merge and catalog refresh, build the checkout with Go 1.26.6 or newer:
go build -o bin/tenki-pp-cli ./cmd/tenki-pp-cli
bin/tenki-pp-cli --versionUse bin/tenki-pp-cli instead of the bare command prefix in examples when that verified local binary is not on $PATH.
Use command --help for current flags and bounds. Product commands read public HTML and write only local cache. Do not use this CLI for summit or route safety, historical weather observations, or unpublished future seasons.
places search; select the canonical URL explicitly. Leisure searches cover the reported bounded directory, with optional --directory, rather than nationwide keyword search.places show.forecast daily; add --detail for separate six-hour intervals and instants.forecast hourly --date YYYY-MM-DD --hours HH:00-HH:00.compare; require at least one criterion and choose its deterministic --sort key when ranking.mountain show; --level matches an actual source altitude.seasonal list or seasonal show --kind sakura|kouyou --year YYYY. For ended Sakura name discovery, choose a retained prefecture --directory; a miss covers the reported scan.tenki-pp-cli places search --query 金閣寺 --kind leisure --directory https://tenki.jp/leisure/6/29/ --limit 5 --agent --select results.places.name,results.places.url,results.search_scope
tenki-pp-cli places show --place https://tenki.jp/leisure/6/29/189/7327/ --agent
tenki-pp-cli forecast daily --place https://tenki.jp/forecast/3/16/4410/13101/ --days 3 --agent --select results.periods.date,results.periods.weather,results.periods.precip_probability_pct,results.source
tenki-pp-cli forecast hourly --place https://tenki.jp/forecast/3/16/4410/13101/ --hours 09:00-17:00 --agent --select results.periods.valid_at,results.periods.kind,results.periods.precip_rate_mm_h,results.periods.temperature_c
tenki-pp-cli compare --place https://tenki.jp/forecast/3/16/4410/13101/ --days 3 --max-pop 30 --max-temp 30 --sort max-pop --agent
tenki-pp-cli mountain show --place https://tenki.jp/mountain/famous100/5/25/150.html --level 3000 --limit 8 --agent
tenki-pp-cli seasonal show --kind kouyou --place https://tenki.jp/kouyou/3/13/30139.html --agent --select results.spot,results.source,results.status,results.year
tenki-pp-cli seasonal list --kind sakura --directory https://tenki.jp/sakura/3/16/ --query 上野 --year 2026 --limit 5 --agent
tenki-pp-cli seasonal show --kind sakura --place https://tenki.jp/sakura/3/16/54401.html --year 2026 --agentRead the source timestamps, freshness, actual coverage and destination's forecast_reference_url before interpreting values. meta.source is the actual transport (live/local, or mixed/unavailable for comparisons); meta.metrics counts HTTP requests, cache hits and decoded source-response bytes, not network transfer bytes. Comparison decisions carry meta.data_origin: computed, a separate axis from acquisition. Missing numeric values are null; an explicit provider zero stays zero.
Weather dates/times use Asia/Tokyo. Hourly precipitation describes the preceding start–end hour; temperature/wind belong to valid_at. A 09:00–17:00 comparison uses eight complete rain intervals ending 10:00–17:00 and temperature/wind instants from 09:00 through 17:00, inclusive. The hourly inspection command also shows the 09:00 endpoint and its preceding rain interval. Probabilities are per source interval: their maximum is not the probability of any rain over the outing. Rain thresholds use daily amount in mm or hourly rate in mm/h; wind uses m/s; temperature uses °C. Estimated past hours are estimated_actual, not forecasts or municipal station observations.
Daily temperature minima are morning lows and maxima are daytime highs. Today's temperature fields can mix forecasts with estimated actual values; their per-field type stays explicit and cannot certify a forecast-only criterion. Today's daily period can be partial, with remaining weather/probability coverage beginning at issuance. Four six-hour rain intervals coexist with five instant labels; keep their boundaries distinct. Daily values cannot certify an hourly window. Daily wind is max_of_five_source_instants at 00/06/12/18/24; it is not a continuous daily maximum. Days 12–14 may contain confidence letters and fewer fields; retain unknown values and source confidence letters as supplied.
Municipal weather refers to the government-office vicinity; leisure and seasonal weather refers to the linked municipality. Preserve requested destination identity separately. Mountain main weather is foothill weather. Altitude tables are nearby_model_guidance, with their own model_initial_at; they do not establish summit weather, trail condition or ascent safety. A mountain destination cannot earn a summit suitability result from municipal/foothill evidence.
Seasonal spot reports, predictions and normal periods are distinct evidence. Keep requested_year, actual year, update state, report date and weather issue time separate. A fresh forecast does not refresh seasonal facts. Ended Sakura, a year mismatch or future-date current foliage cannot be positive seasonal evidence. --season pairs evidence without a hidden peak-quality criterion. With no condition preference, report that explicitly and retain the raw condition. --season-condition supplies an exact raw state preference. If the source supplies no applicable exact-date prediction, future seasonal suitability remains unknown while weather criteria can still be evaluated.
Comparison returns meets_criteria, fails_criteria or insufficient_data, with per-criterion pass/fail/unknown, thresholds, source values and coverage. Missing, stale, unknown-freshness, past-estimated, partial or out-of-horizon evidence cannot produce meets_criteria. A definite failed criterion can produce fails_criteria while other criteria remain explicitly unknown. Ties are shown; there is no universal sightseeing score. Thresholds describe the user's preferences.
Serialize source calls, including MCP command calls. Pacing is capped at one request per second per provider client/CLI or MCP invocation. Separate concurrent invocations do not coordinate; --rate-limit only lowers the per-invocation ceiling and does not enforce an aggregate or global limit.
--agent sets JSON, compact, noninteractive defaults. Product stdout is one compact {meta,results} document; diagnostics use stderr. --select projects comma-separated dotted paths, including array fields. A wholly absent path is an error. Required-input --dry-run --json succeeds without inputs/network; real invalid inputs exit 2, source errors 5, exhausted rate limits 7. Structured unavailable statuses are ordinary product outcomes.
Search returns at most 50 candidates across at most two pages. Compare accepts up to five places, fourteen dates and seventy cells; hourly output caps at 72 source rows. Daily unsupported_dates identifies absent requested dates before the output limit; partial_horizon distinguishes mixed coverage and truncated identifies row limiting. Dates outside returned source coverage stay unavailable. --refresh/--data-source live fetch again; --data-source local reads cache only; --allow-stale explicitly permits marked stale cache without positive suitability. --timeout bounds the whole command. --cache-dir selects a local page cache. Cache TTL is one hour for weather/seasonal/model pages and seven days for directories, a CLI policy rather than a verified seasonal/model provider cadence.
No credentials are needed for public HTML. There is no verified supported public tenki.jp API. Terms Article 8(6) restrict non-browser/RSS acquisition. Successful HTTP access and public distribution do not establish provider authorization. Respect source denials and propagate rate limits. Preserve missing evidence instead of substituting another provider, invented future-season facts or zero-valued failed fetches.
compare — Compare selected Japan destinations and dates against explicit weather thresholds.
Compare selected Japan destinations and dates against explicit weather thresholds.
tenki-pp-cli compare --place https://tenki.jp/forecast/3/16/4410/13101/ --days 2 --max-pop 40 --agentcompare — Evaluate a specific JST outing window with complete hourly evidence.
Evaluate a specific JST outing window with complete hourly evidence.
tenki-pp-cli compare --place https://tenki.jp/forecast/3/16/4410/13101/ --hours 09:00-17:00 --max-pop 40 --agentcompare — Pair seasonal spot status with its actual forecast municipality.
Pair seasonal spot status with its actual forecast municipality.
tenki-pp-cli compare --place https://tenki.jp/kouyou/4/19/30314.html --season kouyou --max-pop 40 --agentcompare — Explain missing, stale, unsupported or mismatched evidence before recommending.
Explain missing, stale, unsupported or mismatched evidence before recommending.
tenki-pp-cli compare --place https://tenki.jp/forecast/3/16/4410/13101/ --days 14 --max-wind 8 --agentNo credentials are required for public HTML pages. Access is undocumented and subject to tenki.jp terms; there is no verified supported public API.
Run tenki-pp-cli doctor to verify setup.
© mvanhorn, Apache-2.0. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
Just SKILL.md in cli-skills/pp-tenki of mvanhorn/printing-press-library.
Open the folder on GitHubat commit 76de244
Pp Tenki 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 |
|---|---|---|---|---|---|---|
| Pp Tenki this skillmvanhorn/printing-press-library | 2.1k | — | ~2.9k | Automated safety check: Notes | Apache-2.0 | |
| Dailysickn33/agentic-awesome-skills | 47k | 3 repos | ~3.6k | Automated safety check: Pass | MIT | |
| Node Inspect Debuggeropenclaw/openclaw | 392k | 1 repos | ~894 | Automated safety check: Pass | MIT | |
| Daily Giftsickn33/agentic-awesome-skills | 47k | 1 repos | ~1.4k | Automated safety check: Pass | MIT-0 | |
| Blender Motion State Inspectionaffaan-m/ECC | 276k | 1 repos | ~2k | Automated safety check: Pass | MIT | |
| Inspect Diskfelixrieseberg/windows95 | 24k | — | ~1.3k | Automated safety check: Pass | Custom licence |
sickn33/agentic-awesome-skills
Documentation and capabilities reference for Daily. An agent skill from sickn33/agentic-awesome-skills.
openclaw/openclaw
Debug Node.js with node inspect, --inspect, breakpoints, CDP, heap, and CPU profiles.
sickn33/agentic-awesome-skills
Relationship-aware daily gift engine with five-stage creative pipeline — editorial judgment, synthesis, concept generation, visual strategy, and rendering in H5, image, or video
affaan-m/ECC
A skill your agent uses when inspecting Blender characters, rigs, poses, animation retargeting, ground contact, facing direction, or model-vs-motion alignment where screenshots alone are not enough.
felixrieseberg/windows95
Inspect or modify the Windows 95 disk image offline with mtools — no QEMU, no Electron, no boot.
penpot/penpot
Conflict resolution flow — understand the local git conflicts, present a resolution plan, and resolve them after the user approves it.
mvanhorn/printing-press-library
Desktop automation through the real Rust agent-desktop CLI, published in Printing Press through a small bridge.
mvanhorn/printing-press-library
Search, browse, and download Google Fonts from the terminal via the gfonts CLI.
mvanhorn/printing-press-library
The free, offline Trigger phrases: search 1688 for, find a factory on 1688 for, wholesale price on 1688 for, who is the cheapest supplier on 1688 for, compare 1688 suppliers for, use 1688, run 1688.
mvanhorn/printing-press-library
Inspect known Activity Japan plan IDs or URLs, compare dated prices and sessions, check language-sitemap coverage, and hand off to canonical booking pages.
mvanhorn/printing-press-library
Every Admin By Request portal action, plus a local SQLite mirror of audit, events, inventory and requests for ad-hoc...
mvanhorn/printing-press-library
macOS screen capture, window recording, GIF conversion, and agent evidence bundles from the terminal.
Resolve Japan sightseeing places, inspect tenki.jp daily/hourly forecasts, compare user weather thresholds, or check mountain and sakura/foliage evidence with source time and year. Pp Tenki is an agent skill from mvanhorn/printing-press-library.jp daily/hourly forecasts, compare user weather thresholds, or check mountain and sakura/foliage evidence with source time and year.
Run `npx skills add mvanhorn/printing-press-library --skill pp-tenki -a claude-code`. Or copy the skill folder (cli-skills/pp-tenki in mvanhorn/printing-press-library) into .claude/skills/pp-tenki in your project. Claude Code loads it when a task matches its description.
Run `npx skills add mvanhorn/printing-press-library --skill pp-tenki -a codex`. Or copy the skill folder (cli-skills/pp-tenki in mvanhorn/printing-press-library) into .agents/skills/pp-tenki 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 mvanhorn/printing-press-library --skill pp-tenki -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/pp-tenki, .gemini/skills/pp-tenki, .github/skills/pp-tenki and .opencode/skills/pp-tenki in your project.
Going by SKILL.md and its folder, Pp Tenki needs the command-line tools its instructions call (go and npx). Our summary lists: Node.js. Its frontmatter pre-approves these tools: Read, Bash.
SKILL.md names 1 domain. In commands or code: tenki.jp; the agent is likely to contact it when it follows the instructions. 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. Review the folder before installing.
Pp Tenki is published under the Apache-2.0 licence (declared in SKILL.md). It allows redistribution, so the full SKILL.md is shown on this page.
About 2.9k tokens (SKILL.md is roughly 12k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with Pp Tenki: Daily (sickn33/agentic-awesome-skills, 47k stars), Node Inspect Debugger (openclaw/openclaw, 392k stars), Daily Gift (sickn33/agentic-awesome-skills, 47k stars) and Blender Motion State Inspection (affaan-m/ECC, 276k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
mvanhorn (a GitHub user) maintains it in mvanhorn/printing-press-library, which has 2,056 GitHub stars. The repository holds 506 skills in this directory. The repository was last updated on October 9, 2026.
Source: mvanhorn/printing-press-library on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.