Devdocs Insights
majiayu000/claude-skill-registry
Collect improvement insights from UI/UX reviews, document research, or external references, convert confirmed items into development requirements.
Reviews a local diff, branch diff, or PR with file:line findings in confirmed and plausible tiers, gates any test the diff adds or changes, and in apply mode lands the fixes and diff-scoped…
$ npx skills add mblode/agent-skills --skill tidy -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install mblode/agent-skills tidy --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/mblode/agent-skills.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/tidy .claude/skills/tidy && 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 "tidy" agent skill from https://github.com/mblode/agent-skills/tree/main/skills/tidy into .claude/skills/tidy/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "tidy", 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/mblode/agent-skills/tree/main/skills/tidyType 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 mblode/agent-skills --skill tidy -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install mblode/agent-skills tidy --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/mblode/agent-skills.git skills-src && mkdir -p .agents/skills && cp -r skills-src/skills/tidy .agents/skills/tidy && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "tidy" agent skill from https://github.com/mblode/agent-skills/tree/main/skills/tidy into .agents/skills/tidy/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "tidy", 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 mblode/agent-skills --skill tidy -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install mblode/agent-skills tidy --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/mblode/agent-skills.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/skills/tidy .cursor/skills/tidy && 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 "tidy" agent skill from https://github.com/mblode/agent-skills/tree/main/skills/tidy into .cursor/skills/tidy/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "tidy", 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/mblode/agent-skills.git --path skills/tidy--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 mblode/agent-skills --skill tidy -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install mblode/agent-skills tidy --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/mblode/agent-skills.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/skills/tidy .gemini/skills/tidy && 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 "tidy" agent skill from https://github.com/mblode/agent-skills/tree/main/skills/tidy into .gemini/skills/tidy/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "tidy", 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 mblode/agent-skills tidyInstalls 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 mblode/agent-skills --skill tidy -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/mblode/agent-skills.git skills-src && mkdir -p .github/skills && cp -r skills-src/skills/tidy .github/skills/tidy && 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 "tidy" agent skill from https://github.com/mblode/agent-skills/tree/main/skills/tidy into .github/skills/tidy/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "tidy", 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 mblode/agent-skills --skill tidy -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install mblode/agent-skills tidy --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/mblode/agent-skills.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/skills/tidy .opencode/skills/tidy && 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 "tidy" agent skill from https://github.com/mblode/agent-skills/tree/main/skills/tidy into .opencode/skills/tidy/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "tidy", 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.
tidyReviews a local diff, branch diff, or PR with file:line findings in confirmed and plausible tiers, gates any test the diff adds or changes, and in apply mode lands the fixes and diff-scoped…
Tidy is an agent skill from mblode/agent-skills. Reviews a local diff, branch diff, or PR with file:line findings in confirmed and plausible tiers, gates any test the diff adds or changes, and in apply mode lands the fixes and diff-scoped simplifications. Use when asked to "review my changes", "code review", "tidy this", "simplify my diff", "deslop this", "structural review", "security audit", or "audit these tests in my PR". For the PR itself use pr-creator; for CI and review threads use pr-babysitter; for UI defects use ui-design; for repo architecture use…
Its SKILL.md is about 4.2k tokens, which your agent loads only when the skill is triggered. The skill folder holds 12 other files, including reference files (for example `agents/openai.yaml`, `evals/evals.json` and `references/ai-slop-patterns.md`).
It sits in Frontend & Design, covering UI design, Humanizing AI text and Security review. The repository describes itself as: Nobody ships AI slop on purpose. These skills make sure you don’t. The licence is MIT.
5 steps, taken from the first numbered list in SKILL.md.
Read from SKILL.md and the folder at commit cef4cfa. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
Shell commands in SKILL.md call:
gitghcodexnpmFrom the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md. Its commands use git, gh and npm, which can reach the network depending on how they are called.
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.
Tidy loads about 4.2k tokens when it runs, and up to ~15k if it reads all its reference files. Until then it costs about 150 tokens; SKILL.md has 2,318 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 found no risky patterns in SKILL.md.
Automated 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 mblode/agent-skills at commit cef4cfa, republished under its MIT licence (© mblode). 2,318 words, ~4,182 tokens.
.claude/skills/tidy/SKILL.md (or your agent's skills folder). This skill also uses 9 other files; get the full folder from GitHub.Review the diff, then fix it when asked. One pass produces the report; the same pass, in apply mode, lands the fixes along with the simplifications a clean diff still hides.
file:line evidence; in apply mode, the smallest complete fixes for those findings plus diff-scoped simplification.pr-creator), CI failures and review threads (pr-babysitter), user-facing UX, accessibility, or rendered quality (ui-design Audit mode), library or CLI ergonomics (dx-audit), architecture briefs and repo-wide guardrails (codebase-architecture), reviewing plans (planning), suite-wide test pruning to a measured target (test-audit).Report is the default: "review my changes", "code review", a mode phrase below, or a PR number. Done is the report in the format under Output, carrying the range reviewed, each baseline command's last line, and the references read. The working tree stays as it was. Do not edit a file in report mode, even for a one-character fix; the moment the tree changes the user loses the read-only report they asked for.
Apply when the user says "tidy", "simplify", "fix", "apply the findings", or asks for the changes to be made. Done is the confirmed findings and supported simplifications in the working tree, the affected checks passing or their failures shown to be baseline, and a summary of what changed, what was left and why, and the check results. Apply mode edits any file the diff touches or a fix requires, and runs the repository's documented lint, type, and test commands without asking: they run locally against the working tree, and landing the changes is what was asked for. It does not commit, push, open PRs, add or upgrade dependencies, run migrations, or write outside the working tree. A report from earlier in the session is input, not authority: apply what current evidence supports and say why anything was not applied.
Claude Code bundles /code-review (correctness plus cleanups, with --fix) and /security-review. A typed slash command runs the bundled skill; this one runs when named or when a mode phrase matches, and adds the Structural and Deslop modes, a whole-repo Security audit, the plausible tier the bundled commands filter out, REVIEW.md support, and the same report on any harness with git and the file tools. Findings from a bundled review already run this session enter the verdict step as candidates rather than being re-derived.
Pick one lens from the user's wording. references/severity-rubric.md loads in every mode; the table adds the mode's own rubric.
| Mode | Triggers | Adds | Scope |
|---|---|---|---|
| Standard (default) | /tidy, "review my changes", "code review", "tidy this" | nothing | Local or branch diff |
| Structural | "structural review", "thermo-nuclear review", "deep code quality audit", "harsh maintainability review", "code judo" | references/structural-quality-rubric.md | Local or branch diff |
| Deslop | "deslop this", "clean up AI code", "remove slop", "review for AI patterns" | references/ai-slop-patterns.md | Local or branch diff |
| Security audit | "security audit", "find vulnerabilities", "deepsec", "threat model", "audit for security" | references/security-checklist.md | Named subsystem or whole repo, regardless of diff |
Conditional loads, in any mode:
references/context-errors.md when the diff was agent-written, or adds, changes, or removes a module, system boundary, guard, or fallback.references/security-checklist.md for auth, input handling, external APIs, uploads, dependency or lockfile changes, or environment config.references/performance-checklist.md for fetching, rendering, images, dependencies, or bundle-affecting imports.references/test-gate.md when the diff adds or changes a test. A diff with no test changes loads nothing extra here.agents/openai.yaml only for the optional second-opinion pass in step 3. Otherwise it is launcher metadata for external runners and never loads.Discover target. Staged and unstaged changes first (git diff --stat, git diff --staged --stat); if clean, the branch diff against git merge-base HEAD origin/<default>. For a PR, gh pr diff <n> with the branch checked out. Record the range or ref pair; it goes in the report.
Gather context. Open the mode references and the conditional loads with the file tools. A filename in this skill is a pointer, not loaded content; if a required read fails, report the coverage gap rather than claiming the rubric was applied. Capture intent from the user's words, the commit messages, and the PR description. Load scoped AGENTS.md / CLAUDE.md and a root REVIEW.md where one exists: both override this skill's defaults when they conflict, so a pattern they mandate is not a finding. Reuse checks already run on this revision; when a candidate needs execution, run the documented command and preserve its exit status.
Review. Apply the loaded rubric and the high-signal criteria; shard large diffs. Five passes, because each finds what the others cannot:
references/context-errors.md carries the searches and the evidence each finding needs.Optional: where a different-model CLI is installed (codex exec, droid exec, or equivalent), run it read-only with agents/openai.yaml's default_prompt, then verdict its findings like your own. Its agreement is not corroboration; both instances read the same diff with the same missing context.
Verdict. Every candidate is confirmed (you can name the triggering input or state and the wrong output; quote the line), plausible (the mechanism is real, the trigger uncertain; say what would confirm it), or refuted (factually wrong or already guarded; quote the line that proves it). Plausible is the default: concurrency races, nil on a rare but reachable path, falsy-zero read as missing, an off-by-one on an unexcluded boundary, a regex that lost its anchor are all realistic. Refute only what the code disproves. Drop duplicates, mis-attributions, and pre-existing issues outside any touched function. File references/test-gate.md findings into the same two tiers, not a separate section.
Report or apply. Report per Output, structural blockers under Must fix before push, plausible findings marked. In apply mode, continue below.
Merge findings by root cause. Correctness fixes first, then ownership fixes, then simplification of what remains. Alongside the confirmed findings, sweep the diff on five angles:
| Angle | Question | Evidence for a change |
|---|---|---|
| Reuse | Does this code need to exist, or does a repository helper, stdlib, platform feature, or installed dependency cover it? | The existing contract and call site, including the boundary cases it handles |
| Quality | Does this add a second owner of state, an unused extension point, or unnecessary compatibility? | Actual consumers and state ownership, not line count |
| Efficiency | Does this add repeated work on a real hot path? | Call frequency, duplicate reads, unbounded retention |
| Ownership | Is a caller patch compensating for a shared mechanism, or placed outside the subsystem that owns this behaviour? | Writers, callers, and adjacent implementations; the deeper fix must be smaller than the special case |
| Test value | Can the test fail for a reason someone would act on? | A named regression, reachable branch, or public contract; literal diff mirrors and mock echoes add none |
Constraints:
git restore <path> discards the user's earlier edits in the same file.references/test-gate.md at confirmed tier does not stay in the diff; delete it, or rewrite it at the boundary the gate names. A plausible gate finding is reported, not auto-deleted.Run the checks the changes affect plus repository-required gates, preserving exit codes and distinguishing baseline failures, then write the summary described under Report or apply.
Raise anything that matches one of these and let the verdict step decide; do not pre-filter on confidence, or the filter runs twice and the second pass never sees what the first dropped.
node_modules/<pkg> or the lockfile version's docs).catch, one that logs then falls into the success path, .catch(() => {}) on a promise whose failure changes what the caller should do.file:line.REVIEW.md violation, with the rule quoted.Structural checks fire in every mode, Standard included: a fix bolted on above the level it belongs at (a special case keyed to one caller inside code that serves all of them; a guard at one call site when the callee could return the right shape for every caller); speculative abstraction without a current requirement; a file pushed past ~1000 lines when the new behaviour has a local boundary (a configured max-lines wins); feature-specific conditionals in shared paths; a bespoke helper duplicating a canonical utility or reimplementing stdlib; a new dependency for what is already installed; logic in the wrong layer. references/structural-quality-rubric.md deepens each for Structural mode.
Do not report style preferences, unrelated pre-existing issues, risks without a repro or exploit path, broad rewrites outside the diff's intent, linter-only noise, or explicitly silenced violations.
Every finding carries file:line, a one-line impact, and a committable fix. A plausible finding adds Plausible: <what would confirm it>. A finding resting on something outside the diff adds Context: naming that artifact. A Fix: phrased as "consider refactoring" cannot be applied; write the change. Length follows the findings: a clean diff gets None. twice and the readiness block.
## Local review
### Must fix before push
- [<severity>] `path/to/file.ts:line` <short factual title>
Why: <concrete impact>
Fix: <committable fix>
### Should fix soon
- [<severity>] `path/to/file.ts:line` <short factual title>
Why: <concrete impact>
Fix: <committable fix>
Plausible: <what would confirm it>
### Ready for handoff
- Reviewed: <range or ref pair>, <N> files
- Baseline: `<command>` -> <last line>
- Mode: <selected mode>
- Reference evidence: `<path opened>` -> "<short excerpt>"
- Missing reference coverage: <failed reads, or None>
- Unstated changes: <hunks no claim covers, or None>
- <readiness verdict>For a PR handoff posted through pr-babysitter or gh, use the same finding shape under ## PR handoff summary and prefix minor items with Nit:. In apply mode, follow the report with what was applied, what was left and why, and the check results.
git diff @{u} fails with "no upstream configured" on a fresh branch, and a diff against main on a stale checkout includes everyone else's commits. Diff against git merge-base HEAD origin/<default> and state the range.git diff hunk headers land off by the hunk offset. Take the number from grep -n or the file; a reviewer who cannot find the cited line discards the rest of the report.npm test dumps hundreds of lines re-sent every turn. Run the quiet form and quote the last line.@path line in REVIEW.md is literal text to Claude Code Review, which does not expand imports there. Read the file the same way, or the two reports disagree and the author trusts neither.pr-creator: creates or updates the PR after review; commits and PR creation stay there.pr-babysitter: monitors CI and inbound review comments, and posts the PR handoff format.ui-design Audit mode: UI-level slop, layout, and rendered quality; Deslop mode here covers code-level slop only.test-audit: suite-wide test pruning to a measured coverage target across the whole repo. This skill gates only the tests a diff adds or changes; "prune the suite" or "cut 20% of tests" routes there instead.Maintenance only: evals/evals.json holds the regression scenarios and routing prompts for anyone changing this skill; it never loads during a user task.
© mblode, 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 9 other files (references) in skills/tidy of mblode/agent-skills.
Open the folder on GitHubat commit cef4cfa
Tidy 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 |
|---|---|---|---|---|---|---|
| Tidy this skillmblode/agent-skills | 143 | — | ~4.2k | Automated safety check: Pass | MIT | |
| Devdocs Insightsmajiayu000/claude-skill-registry | 666 | 1 repos | ~1.9k | Automated safety check: Pass | MIT | |
| Deslopforyourhealth111-pixel/Vibe-Skills | 3.6k | — | ~331 | Automated safety check: Pass | Apache-2.0 | |
| Instruction Dashboard Tuningadam-s/intercept | 189 | — | ~4.3k | Automated safety check: Pass | MIT | |
| Omd Slop Auditkwakseongjae/oh-my-design | 531 | — | ~1.1k | Automated safety check: Pass | MIT | |
| Human Gatealirezarezvani/claude-skills | 28k | — | ~1.5k | Automated safety check: Pass | MIT |
majiayu000/claude-skill-registry
Collect improvement insights from UI/UX reviews, document research, or external references, convert confirmed items into development requirements.
foryourhealth111-pixel/Vibe-Skills
Remove AI-generated code slop from a branch: unnecessary comments, redundant defensive checks, boilerplate, style drift, and type casts.
adam-s/intercept
Use sub-agents to iteratively improve dashboard-building instructions.
kwakseongjae/oh-my-design
실제 제품 route의 UI·UX copy를 검사해 제품 맥락 없이 반복된 생성형 기본 패턴, 브랜드 근거 없는 장식, 카드·그라데이션·아이콘 타일 남용, 번역투와 추상 카피를 rule ID와 line ref로 진단한다.
alirezarezvani/claude-skills
Runs the human-verification lane of an agent loop, and proves review happened before work is called done.
modu-ai/moai-adk
UI polish and interface-completion reference: the small visual details — concentric border radius, optical alignment, shadow-vs-border, motion easing, typography smoothing, tabular numbers, icon…
mblode/agent-skills
Implements agent-readiness on public sites and docs from Mintlify Agent Score, AFDocs, Is Agentic, Is It Agent Ready, or url-discovery-bench reports, or from server logs of agents 404ing on guessed…
mblode/agent-skills
Creates and improves portable Agent Skills with a validator, routing scenarios, and evidence-based keep, cut, merge, or retire decisions.
mblode/agent-skills
Recovers decisions, previous fixes, research, and what followed a prompt from past AI conversations, with source evidence.
mblode/agent-skills
Cuts the wait from push to green by measuring a pipeline's critical path from run timestamps, then splitting, sharding, trimming setup and sharing test module state, with a before/after ledger.
mblode/agent-skills
Monitors or repairs an open GitHub PR: CI failures, conflicts, review threads, and merge readiness, reporting state changes.
mblode/agent-skills
Builds and maintains a repo's own verification harness (verify CLI, doctor, worktree isolation, feature map, seed data) and a reproduce-first bug handoff.
Categories
Reviews a local diff, branch diff, or PR with file:line findings in confirmed and plausible tiers, gates any test the diff adds or changes, and in apply mode lands the fixes and diff-scoped…. Tidy is an agent skill from mblode/agent-skills. Reviews a local diff, branch diff, or PR with file:line findings in confirmed and plausible tiers, gates any test the diff adds or changes, and in apply mode lands the fixes and diff-scoped simplifications.
Tidy fits situations like: asked to review my changes; simplify my diff; structural review; audit these tests in my PR.
Run `npx skills add mblode/agent-skills --skill tidy -a claude-code`. Or copy the skill folder (skills/tidy in mblode/agent-skills) into .claude/skills/tidy in your project. Claude Code loads it when a task matches its description.
Run `npx skills add mblode/agent-skills --skill tidy -a codex`. Or copy the skill folder (skills/tidy in mblode/agent-skills) into .agents/skills/tidy 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 mblode/agent-skills --skill tidy -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/tidy, .gemini/skills/tidy, .github/skills/tidy and .opencode/skills/tidy in your project.
Going by SKILL.md and its folder, Tidy needs the command-line tools its instructions call (git, gh, codex and npm).
SKILL.md contains no URLs. Its commands use git, gh and npm, which can reach the network depending on how they are called. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.
Tidy is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 4.2k tokens (SKILL.md is roughly 17k 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 11k tokens, read only when the agent opens those files.
Skills that share tags, products or a category with Tidy: Devdocs Insights (majiayu000/claude-skill-registry, 666 stars), Deslop (foryourhealth111-pixel/Vibe-Skills, 3.6k stars), Instruction Dashboard Tuning (adam-s/intercept, 189 stars) and Omd Slop Audit (kwakseongjae/oh-my-design, 531 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
mblode (a GitHub user) maintains it in mblode/agent-skills, which has 143 GitHub stars. The repository holds 28 skills in this directory. The repository was last updated on October 6, 2026.
Source: mblode/agent-skills on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.