Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 3 additions & 3 deletions .claude/CLAUDE.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
@../AGENTS.md

# roanny-site — Claude Code
# roanny.github.io — Claude Code

`AGENTS.md`, imported above, says what the site is, how it is previewed and checked, and the conventions a change respects; this file adds what holds only for a Claude Code session.

Expand All @@ -10,11 +10,11 @@ Two rulesets guard `main`: "Protect main branch" (24806684: no deletion, no forc

## The one coupling

The design tokens mirror `DESIGN.md` of `coabana-site` (checkout `coabana/`); `coabana-site`'s `CLAUDE.md` says the same from its side. Before stating what that file holds now, read it or verify it with the `contract-checker` agent. The JSON-LD names Coabana as the affiliation, and a call to action links to https://coabana.github.io/.
The `DESIGN.md` that `AGENTS.md` § Conventions names is `coabana-site`'s (checkout `coabana/`), whose `CLAUDE.md` says the same from its side. Before stating what that file holds now, read it or verify it with the `contract-checker` agent.

## Index

- `.claude/rules/git-hygiene.md` — linear history, the 72-character subject, the commit author, no force push or remote-ref deletion, landing as a deploy, the two rulesets, Dependabot, the round authorization (every session).
- `.claude/rules/git-hygiene.md` — linear history, the 72-character subject, the commit author, no force push or remote-ref deletion, landing as a deploy, the two rulesets, Dependabot, the round authorization, the deny floor (every session).
- `.claude/rules/rules-discipline.md` — what a rule file may hold (fleet shared block).
- `.claude/rules/markdown-docs.md` — the shape of the Markdown working documents (fleet shared block).
- No commands and no agents: there is no release and no code to review beyond the page's script.
Expand Down
2 changes: 1 addition & 1 deletion .claude/rules/git-hygiene.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ Loads in every session: it carries the authorization clause, which has to be pre
- **Linear history.** A branch lands on `main` by fast-forward, `git push origin <branch>:main`, once `Validate` is green on the pull request's head SHA. No merge commits; `gh pr merge` is denied, because it and the UI button collapse or rewrite the branch's commits.
- **A session never pushes to `main` on its own.** The ruleset "Require Validate" (24807145) requires a green `Validate` but lets the repository admin bypass it, so the operator can push a fix by hand; sessions push with his credentials and inherit that bypass, so for them this rule is the gate, not the server. A session pushes to `main` only the head of a pull request whose `Validate` is green, by the fast-forward above.
- **Commit subjects.** The whole first line at most 72 characters, no trailing period; measure it before the push (`printf '%s' "$subject" | wc -m`), because correcting a pushed subject is a force push. CI's "Commit subjects" step reads every commit a pull request adds.
- **Commit authors.** Every commit is authored as `roannylamaslopez@gmail.com`, which this checkout's local git config carries (`CLAUDE.md` § Git identity); CI's "Commit authors" step refuses any other author but Dependabot's and GitHub's own. The admin bypass of "Require Validate" means a direct push of the operator's with another address is not stopped, only shown red after the push; a session never relies on that.
- **Commit authors.** Every commit is authored as `roannylamaslopez@gmail.com`, which this checkout's local git config carries (`AGENTS.md` § Conventions); CI's "Commit authors" step refuses any other author but Dependabot's and GitHub's own. The admin bypass of "Require Validate" means a direct push of the operator's with another address is not stopped, only shown red after the push; a session never relies on that.
- **No force push, in any spelling** — `--force`, `-f`, `--force-with-lease`, a `+refspec` — on any branch.
- **A landing can be a deploy.** GitHub Pages publishes `main` within minutes of every push to it: a landing that changes what a visitor sees is a deploy of the public site, and Round authorization says whose word that takes.
- **No remote-ref deletion.** Deleting a remote branch or tag is the operator's act. The colon-refspec deletion (`git push origin :<ref>`) has no working deny; the rule is the guard, and the ruleset "Protect main branch" (24806684: deletion, non-fast-forward, linear history; no bypass) is the floor on `main`. There are no tags here.
Expand Down
4 changes: 2 additions & 2 deletions AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -15,12 +15,12 @@ The operator's personal CV and portfolio, served at https://roanny.github.io/ by
- The gates, as CI runs them: `npx --yes html-validate@11.16.0 --config .github/htmlvalidate.json index.html 404.html`, `python3 .github/scripts/check_site.py i18n`, `python3 .github/scripts/check_site.py sitemap`.
- A content change updates `lastmod` in `sitemap.xml`. A changed social card takes a new filename (`og-image-<n>.jpg`) and the three references in `index.html` (`og:image`, `twitter:image`, the JSON-LD `image`), because LinkedIn, WhatsApp and X cache a card by its URL; LinkedIn's Post Inspector refetches it once it is live.

CI (`Validate`, `.github/workflows/ci.yml`) refuses invalid HTML in either page, an `i18n` key missing from either language, a malformed sitemap, a changed shared block under `.claude/`, on pull requests a commit subject over 72 characters or with a trailing period, and a commit author other than the one below.
CI (`Validate`, `.github/workflows/ci.yml`) refuses invalid HTML in either page, an `i18n` key missing from either language, a malformed sitemap, a changed shared block under `.claude/`, on pull requests a commit subject over 72 characters or with a trailing period, and on pull requests and pushes a commit author other than the one below, Dependabot's or GitHub's own.

## Conventions

- **Language.** The content is English by default with Spanish, by audience: the text lives in the `en` and `es` dictionaries of the `i18n` object at the end of `index.html`, with the same keys, and each translatable element carries `data-i18n="<key>"`; the English default in the HTML stays aligned with `en`. The working documents — README, this file, the rules, code comments and commit subjects — are English; Spanish text quoted from the content stays Spanish.
- **Design.** The design tokens (palette, type, chips, buttons, motion) mirror `DESIGN.md` of `Coabana/coabana.github.io`, the canonical source, copied by hand into the `<style>` of `index.html`.
- **Design.** The design tokens (palette, type, chips, buttons, motion) mirror `DESIGN.md` of `Coabana/coabana.github.io`, the canonical source, copied by hand into the `<style>` of `index.html`. The JSON-LD names Coabana as the affiliation, and a call to action links to https://coabana.github.io/.
- **Commits.** The whole subject line at most 72 characters, no trailing period. Authored as `Roanny Lamas <roannylamaslopez@gmail.com>`, set in this checkout's local git config; the employer's address is never used here.
- **Landing.** Work on a branch, open a pull request, and land it on `main` by fast-forward (`git push origin <branch>:main`) once `Validate` is green on its head. No merge commits, no force push, no remote-ref deletion.

Expand Down
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -60,7 +60,7 @@ python3 .github/scripts/check_site.py i18n
python3 .github/scripts/check_site.py sitemap
```

`Validate` (`.github/workflows/ci.yml`) runs on every pull request and every push to `main`: HTML validity of both pages, the `i18n` key parity, the sitemap, the fleet's shared blocks, the commit subjects (at most 72 characters, no trailing period) and the commit authors (`roannylamaslopez@gmail.com`, Dependabot and GitHub's own). Changes land on `main` by fast-forward once `Validate` is green. Two rulesets guard `main`: "Protect main branch" (no deletion, no force push, linear history; nobody bypasses it) and "Require Validate" (a green `Validate` before a push lands; the repository admin may bypass it to push a hand fix, and `Validate` still runs on that push).
`Validate` (`.github/workflows/ci.yml`) runs on every pull request and every push to `main`: HTML validity of both pages, the `i18n` key parity, the sitemap, the fleet's shared blocks, the commit subjects (on pull requests; at most 72 characters, no trailing period) and the commit authors (`roannylamaslopez@gmail.com`, Dependabot and GitHub's own). Changes land on `main` by fast-forward once `Validate` is green. Two rulesets guard `main`: "Protect main branch" (no deletion, no force push, linear history; nobody bypasses it) and "Require Validate" (a green `Validate` before a push lands; the repository admin may bypass it to push a hand fix, and `Validate` still runs on that push).

## Deployment

Expand Down
Loading