Review pull requests and diffs in guide — the source of the rios0rios0 engineering standards, its wiki, and the generated AI-assistant rule files — against its own standards, with extra weight on wiki page-name uniqueness, link integrity, and the generator inputs. Use when reviewing a PR, a branch, or staged changes here.
Scanned 9/3/2026
Install to Claude Code
npx -y skills add rios0rios0/guide --skill code-review --agent claude-codeInstalls into .claude/skills of the current project.
Are you the author of Code Review?
Add the live security badge to your README — it updates automatically with every re-scan.
[](https://www.skillsdirectory.com/skills/rios0rios0-code-review)More formats (shields.io, HTML) on the badges page.
---
name: code-review
description: "Review pull requests and diffs in guide — the source of the rios0rios0 engineering standards, its wiki, and the generated AI-assistant rule files — against its own standards, with extra weight on wiki page-name uniqueness, link integrity, and the generator inputs. Use when reviewing a PR, a branch, or staged changes here."
---
# Code review — `guide`
`guide` is the canonical standards documentation: it publishes to the GitHub wiki and generates rule files for Claude Code, Cursor, Codex, and GitHub Copilot onto the `generated` branch. Everything every other repository is reviewed against starts here, so an ambiguous sentence propagates as a misapplied rule everywhere.
## When to use this skill
Use it whenever you are asked to review a pull request, a diff, a branch, or staged changes
in this repository — and before opening a pull request of your own, as a self-check. It is a
**review** skill: it produces findings, not commits.
## Source of truth
The canonical engineering standards live in the
**[rios0rios0/guide wiki](https://github.com/rios0rios0/guide/wiki)**. This file is a
repo-tailored index into that guide plus the rules that only apply here. Precedence, highest
first:
1. This repository's `.github/copilot-instructions.md`, `CLAUDE.md`, and `CONTRIBUTING.md` —
they describe *this* codebase and its load-bearing invariants.
2. The **rios0rios0/guide** wiki — the shared standard.
3. General language idiom.
When the guide and a general convention disagree, the guide wins. When this file and the
guide disagree, the guide wins and this file should be corrected in the same pull request.
### Guide pages that apply here
| Topic | Page |
|-------|------|
| YAML Conventions — `.yaml`, single quotes, unquoted scalars | [YAML](https://github.com/rios0rios0/guide/wiki/YAML) |
| Git Flow — branches, commits, SemVer, breaking changes | [Git-Flow](https://github.com/rios0rios0/guide/wiki/Git-Flow) |
| Documentation & Change Control — changelog and docs discipline | [Documentation-&-Change-Control](https://github.com/rios0rios0/guide/wiki/Documentation-&-Change-Control) |
| CHANGELOG Formatting — capitalisation and backticks | [CHANGELOG-Formatting](https://github.com/rios0rios0/guide/wiki/CHANGELOG-Formatting) |
| Security — OWASP checklist, secret hygiene, SAST | [Security](https://github.com/rios0rios0/guide/wiki/Security) |
| CI & CD — pipeline stages and the local quality gates | [CI-&-CD](https://github.com/rios0rios0/guide/wiki/CI-&-CD) |
| Code Style — baseline naming and the operations vocabulary | [Code-Style](https://github.com/rios0rios0/guide/wiki/Code-Style) |
## How to run the review
1. **Establish the range.** Resolve the default branch with
`git symbolic-ref refs/remotes/origin/HEAD` (strip `refs/remotes/origin/`; fall back to `main`),
then read the diff with `git diff <default>...HEAD` and the file list with
`git diff <default>...HEAD --name-only`.
2. **Read whole files, not just hunks.** A hunk cannot show a layering violation, a missing
test, or a duplicated helper. Open every changed file in full, plus the files it imports
from the layer below.
3. **Check the change set as a unit** — not only the code. A change that alters behaviour,
configuration, or architecture is incomplete without its changelog entry and its
documentation update, and that omission is a finding in its own right.
4. **Map every finding to a rule.** Each finding must name the rule it breaks and link the
guide page (or the repository file) that states it. A comment that cannot be traced to a
rule is a suggestion, not a defect — label it as such.
5. **Report, do not rewrite.** Produce the review in the output format below. Only edit files
when the request explicitly asks for fixes.
## What matters most in `guide`
These are the checks that catch real defects in this repository. Work through
them before the generic ones.
- **Wiki pages are flat — the base file name is the page name, so it must be unique across the whole tree.** `Life-Cycle/Git-Flow.md` publishes as the page `Git-Flow`. Two files sharing a base name collide and one silently overwrites the other. This is a **Critical** finding, and `README.md` says so explicitly.
- **A new page is not done until it is listed in `README.md`, `_Sidebar.md`, and its parent index page.** An orphaned page is unreachable from the wiki navigation.
- **Internal links are flattened by the generator** — it rewrites a link target to the base name. Use a link shape the generator can resolve, and check relative image paths resolve from the file's own directory.
- **The rule text must be actionable.** Every rule states what to do, why, and what a violation looks like. "Prefer clean code" is not a rule; it becomes noise in seventy repositories' reviews.
- **A change to a rule is a change to every repository.** Say in the pull-request description which repositories are already non-compliant and whether they need follow-up — a rule nobody follows is worse than no rule.
- **`.github/workflows/generate-ai-rules/` is the generator's input.** Agents, commands, and skills there become the `generated` branch consumed by [aisync](https://github.com/rios0rios0/aisync) and the Claude Code plugin. A change must keep the frontmatter valid for every target tool.
- **Examples must be correct and idiomatic.** They get copied verbatim; a broken snippet in the guide becomes a broken pattern in production code.
- **Both the TL;DR and the body change together.** The TL;DR is what most readers act on, so a body change that leaves it stale actively misleads.
- Follow the guide's own Markdown and YAML conventions: `.yaml`, single quotes, backticked identifiers, proper nouns capitalised.
### Commands a reviewer should be able to quote
```bash
# the docs themselves have no build step; check that no two Markdown files
# share a base name (a wiki page-name collision):
find . -name '*.md' -not -path './.git/*' -printf '%f\n' | sort | uniq -d
# the two Go tools under .github/workflows/ ARE built and tested — run these
# when a change touches update-wiki/ or generate-ai-rules/ (Go source, config,
# parser, or formatter). There is no Makefile and no sast target:
cd .github/workflows/update-wiki && go build -o update-wiki ./... && go test ./...
cd .github/workflows/generate-ai-rules && go build -o generate-ai-rules ./... && go test ./...
```
### YAML
See [YAML Conventions](https://github.com/rios0rios0/guide/wiki/YAML). The extension is `.yaml`, never `.yml`. String values are
single-quoted; double quotes appear only where interpolation or an escape needs them;
booleans and numbers are never quoted. This applies to workflows, compose files, manifests,
and YAML blocks inside Markdown.
## Tests
The wiki sync and the rule generator are the verification path: `update-wiki.yml` publishes the pages and `generate-ai-rules.yaml` builds the `generated` branch. A structural change should be checked against both workflows before merging. Each Go tool carries `*_test.go` unit tests (`update-wiki`; `generate-ai-rules` splits `config`, `parser`, and `formatter`) — a change to either tool that does not keep `go test ./...` green is a finding.
## Documentation and change control
See [Documentation & Change Control](https://github.com/rios0rios0/guide/wiki/Documentation-&-Change-Control) and
[CHANGELOG Formatting](https://github.com/rios0rios0/guide/wiki/CHANGELOG-Formatting).
This repository uses **chlog fragments**. `CHANGELOG.md` is generated and is never edited by
hand.
- Every change ships a fragment created with `chlog new --kind <Kind> --body "…"`, staged in
the **same commit** as the code. Kinds: `Added`, `Changed`, `Deprecated`, `Removed`,
`Fixed`, `Security`.
- A backward-incompatible change to the public interface additionally carries `--breaking`.
The kind alone never triggers a major bump.
- A hand-edited `CHANGELOG.md`, or a code change with no fragment under
`.changes/unreleased/`, is a **Critical** finding — `chlog check` fails the build for it.
- Fragment bodies start with a lowercase verb in simple past tense, capitalise proper nouns
(GitHub, Go, Docker), and wrap code identifiers and versions in backticks.
- `README.md` is updated whenever usage, setup, configuration, or architecture changes;
`.github/copilot-instructions.md` and `CLAUDE.md` whenever the workflow, commands, or
structure changes. Documentation and code ship in one commit.
## Git Flow and pull-request hygiene
See [Git Flow](https://github.com/rios0rios0/guide/wiki/Git-Flow) and [Merge Guide](https://github.com/rios0rios0/guide/wiki/Merge-Guide).
- Branch names are `feat/`, `fix/`, `refactor/`, `chore/`, `test/`, or `docs/` followed by a
ticket ID or a short slug — `feat/TICKET-000`, `fix/input-mask`.
- Commit subjects are `type(SCOPE): message`: simple past tense (`added`, `fixed`, `changed`,
`removed`), lowercase first word, no trailing period, code identifiers in backticks.
- Branches are synchronised with `git rebase`, never `git merge`. A merge commit from the
default branch inside a feature branch is a finding.
- Breaking changes are flagged in **three** places: the commit footer
(`**BREAKING CHANGE:** …`), the changelog, and the pull-request description. One or two of
the three is not enough.
- Versions follow [SemVer](https://semver.org/): MAJOR for incompatible changes, MINOR for
features, PATCH for fixes.
## Security
See [Security](https://github.com/rios0rios0/guide/wiki/Security).
- **No hard-coded secrets.** API keys, tokens, passwords, and private keys belong in
environment variables or a secret manager — never in source, tests, fixtures, or the
changelog. A secret that reaches a commit must be rotated, not merely deleted.
- **Never write a PEM header sentinel or a realistic key shape into a fixture**
(`ghp_…`, `sk-…`, `AKIA…`, `xoxb-…`, JWT-shaped strings, or the dashed `BEGIN …` banners).
Gitleaks matches the shape, not the value, so a placeholder that merely *looks* like a
credential fails the pipeline. Use inert placeholders such as `fixture-token-placeholder`.
- **Suppressions must be justified.** Entries in `.gitleaksignore`, `.trivyignore`,
`.semgrepignore`, or `.codeql-false-positives` need a fingerprint, a dated comment, and a
reason. A suppression added to silence a real finding is a Critical.
- Validate and sanitise every external input; use parameterised queries; apply least
privilege; keep secrets out of logs.
- Dependency manifest changes are reviewed for new transitive vulnerabilities. When a fix
exists, bump the version rather than suppressing the finding.
## What not to flag
A review that raises noise gets ignored. Do not report these:
- The `_Sidebar.md` and `_Footer.md` naming — those are GitHub wiki conventions.
- Directory nesting in the source tree; the published wiki is flat by design.
- Anything the guide does not require and this file does not list, unless it is a genuine correctness or security defect — say so plainly and label it a Suggestion.
## Review output format
```
## Code review: <branch or PR>
### Critical (must fix before merge)
- `path/to/file.ext:LINE` — <what is wrong> — violates <rule> (<guide page or repo file>)
### Warning (should fix)
- `path/to/file.ext:LINE` — <what is wrong> — violates <rule>
### Suggestion (optional)
- `path/to/file.ext:LINE` — <improvement>
### Change-control checklist
- [ ] Changelog entry present for every behavioural change
- [ ] `README.md` updated if usage, setup, or architecture changed
- [ ] `.github/copilot-instructions.md` and `CLAUDE.md` updated if the workflow, commands, or structure changed
- [ ] Commit messages follow `type(SCOPE): message` in simple past tense
- [ ] Breaking changes flagged in the commit footer, the changelog, and the PR description
### Verdict: APPROVE / REQUEST CHANGES
<one paragraph: the blocking findings, or why the change is ready>
```
## Severity
| Severity | Use for |
|----------------|------------------------------------------------------------------------------------------------------------------------------------|
| **Critical** | Broken dependency direction, a leaked secret, an injection or authentication flaw, a missing changelog entry, a banned mock library, a load-bearing invariant broken, a test deleted rather than fixed. |
| **Warning** | Naming that departs from the guide, a missing test for a new branch of logic, an unexplained magic value, a stale README or instructions file, a `switch` that should be a map. |
| **Suggestion** | Readability, consistency with neighbouring modules, and performance ideas that no rule mandates. |
Rank findings most severe first, and state plainly when nothing blocks the merge — an empty
Critical section is a valid, useful review.
Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.
No comments yet. Be the first to comment!