| Server IP : 103.243.232.44 / Your IP : 216.73.216.250 Web Server : LiteSpeed System : Linux server17213-10344.hostycare.online 5.14.0-687.38.1.el9_8.x86_64 #1 SMP PREEMPT_DYNAMIC Wed Aug 12 17:19:12 EDT 2026 x86_64 User : iamakash ( 1400) PHP Version : 8.1.34 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : OFF | Sudo : OFF | Pkexec : OFF Directory : /home/iamakash/kautuki.co.in/ |
Upload File : |
# CLAUDE.md
All repository conventions live in one file, so there is nothing to keep in sync:
@AGENTS.md
Read it before touching anything. The rules that get broken most often are: **no build step or
dependencies**, **every section is a question on the exam paper** (`.q.body-cell` + `.marginal` +
`.q-head` + `.marks`), **no edtech marketing language**, and **never commit `leads/*.csv`**.
When a page needs something that already exists elsewhere on the site — a banner, a card, a slider —
**open the page that has it and copy the markup**, don't build a lookalike. A page banner assembled
from scratch shipped without the `.hl` highlighter and with an invented `.fig` box instead of `.art`;
it took three rounds of "the alignment is still wrong" before the real answer turned out to be that it
was never the landing page's component at all. Reading `index.php` first would have cost two minutes.
Two more that cost time in practice: **reuse the existing components** in `exam.css` rather than
writing new ones (`.fmt`, `.kit`, `.arc`, `.steps`, `.ticks`, `.books`, `.notice`, `.scheme`,
`.doubts`, `.rough` cover almost everything, and most are already registered for scroll reveals), and
**check a new section's item count against its grid** — `.kit` is 3 columns and `.arc` is 4, so a
four-item `.kit` strands one card until you give it `.kit.four`.
## Working in this repo with Claude Code
- **Windows host, CRLF files.** Every `.php`, `.html`, `.css` and `.js` file here is UTF-8 with CRLF
line endings. Multi-line `sed`/`perl` patterns that match on `\n` will silently find nothing — use
`\r?\n` to match and write `\r\n` back, or use the Edit tool, which preserves endings on its own.
- **Anchor every regex you delete CSS with, and count braces afterwards.** An unanchored
`/ \.slide \.fig \{.*?\n \}/s` matched a *four*-space-indented rule inside a media query (its two
leading spaces matched mid-line), then ran lazily to the block's closing brace and removed most of
the phone layout — `.body-cell` padding, the margin-rule suppression, the whole compact header.
Anchor with `^`, prefer the Edit tool for single rules, and after any bulk CSS edit check
`substr_count($s,"{") === substr_count($s,"}")` and diff the removed lines before moving on.
`git show HEAD:assets/exam.css` is the way back — but it returns LF, so re-apply CRLF after.
- **Verify before claiming.** PHP may not be on PATH, so `php -l` and `php -S` can be unavailable. A
WampServer install usually has one anyway, at `C:\wamp64\bin\php\php8.3.28\php.exe`. If you could not
actually render a page, say the change is unverified rather than implying you saw it.
- **You cannot see the page.** Structural checks — status codes, link sweeps, parsing the served HTML
for unclosed tags or duplicate attributes — catch a lot and are worth running. What they will not
catch is layout: text overflowing a card, a grid stranding one item on its own row, a heading that
wraps to two lines and knocks a row out of alignment. Reason about the CSS by all means, but do not
report a layout as correct on arithmetic alone. Say what you checked, say you have not seen it
rendered, and ask for a screenshot when the answer depends on how type actually reflows.
- **Auditing responsiveness without a browser** is still worth doing, and this is the order that
works: list every `grid-template-columns` and check each against the media queries; confirm each
`auto-fit` grid carries the `min(NNNpx, 100%)` guard; measure every `white-space: nowrap` string
against ~284px of content width at 320px; check flex rows that lack `flex-wrap` (icon-plus-text
pairs are fine — the text child wraps); confirm images are fluid. That sweep found two genuine
overflows the arithmetic-free eye had missed. It is not a substitute for looking.
- **Copy edits ripple.** A fee, a percentage or a promise usually appears on three or four pages plus
the FAQ and the comparison table. After changing one, grep for the old wording across `*.php` and
`*.html` (excluding `index-old.html` and `v2/`) and report anything you deliberately left alone.
- **Headings ripple too.** Before titling a new section, grep the existing `<h2>`s — `index.php#why` is
already "Why Kautuki exists.", and a second page arguing the same thing under the same heading is
worse than either page alone. Cross-link instead of restating.
- **Renaming a page means finding every link.** `contact.html` had eight references across seven files
(both partials, three legacy pages, the sitemap, another page's body copy). Grep for the old
filename across `*.php`, `*.xml` and `.htaccess` — not just the nav. And delete the old `.html`:
the rewrite tries `.html` before `.php`, so a leftover file silently shadows the new page and you
will swear the change didn't deploy.
- **Asset paths in the partials are absolute on purpose** (`/assets/…`, `/logo/…`, `/api/lead.php`).
`404.php` is served for any URL, so relative paths would break the error page at any depth. Don't
"tidy" them back to relative.
- **Leave the dead files alone.** `index-old.html` and `v2/index.html` are abandoned designs. They are
excluded from deploy and must not be updated to match a live page.
- **Branch and commit.** `main` deploys on push — never commit straight to it. Branch, and only commit
or push when asked.