Auto-only tracking — Every tracked metric in the chirag127/oriz family must be automatically captured. Manual entry, manual timer, manual journal not allowed for anything that's a system metric. Manual = decay; auto = honest. Applies to METRICS, not content.
Communication is STT-friendly — accept transcription noise, infer intent — The user uses speech-to-text software heavily. STT introduces transcription typos and stitched-word artefacts. Agents must: ask short-labelled options (within the 4-question cap); infer intent from imperfect transcription; when ambiguous, pick the most-likely interpretation, state it explicitly, and proceed; ask only when truly blocked. Avoid asking the user to re-transcribe — offer your best read and ask for a tweak.
Linux/Ubuntu only on CI runners — never Windows or macOS — Every CI workflow in every chirag127/oriz* repo runs on Linux/Ubuntu runners. macOS and Windows runners are forbidden unless explicitly justified for native build that can't be done another way. PWABuilder handles all native packaging from a Linux runner via the deployed PWA URL — no macOS/Windows runner needed.
Match the surrounding code style — When editing existing files, match the file's existing comment density, naming idioms, semicolon use, and import order. Don't impose a new style mid-file.
Never delete an empty placeholder repo without explicit user authorisation — An empty repo in the chirag127/oriz* family is a deliberate slug reservation, NOT a cleanup candidate. Before running gh repo delete (or any destructive remote action) against any family repo, even an empty one, the agent MUST get an explicit, repo-named confirmation from the user.
Never hit a free-tier quota — Architect for headroom. Surprise quota walls are a design failure, not a billing event.
Every AI provider adapter must be OpenAI-compatible (SDK schema) — Every adapter in @chirag127/oriz-ai-providers must use the OpenAI SDK schema (chat.completions.create({model, messages, ...}), completions.create(), etc.) so we have minimum code per provider and a single calling convention. Providers that don't natively support the OpenAI schema (e.g. Ollama Cloud's native API) get a thin shim that translates the OpenAI request shape to the provider's native shape. No bespoke per-provider request shapes.
Always parse 'Other' answers in MCQs for additional context beyond the literal question — When the user selects 'Other' on an AskUserQuestion MCQ and adds free-text, that free-text may carry context unrelated to the specific question being asked — instructions, constraints, requests, new decisions. The agent MUST parse the free-text for ALL meaningful directives, not just answer the literal question. If the free-text contains a new directive or constraint, the agent must (1) acknowledge it explicitly, (2) write it to knowledge if durable, (3) act on it, AND (4) still record an answer to the original question.
Profile README must cross-link chirag127 ↔ chirag127 — The chirag127 GitHub profile README must include a one-line cross-link to chirag127 (the brand org), and the chirag127 profile README must include a 'Founded by Chirag Singhal' line linking back. Both surfaces — personal account and brand org — must lead a visitor to the other in one click.
Recruiter strategy: optimize pinned repos + contribution graph, not the repo list — GitHub recruiters skim a profile in 30–60 seconds: pinned repos (you choose them), contribution graph (greens from any owned/contributed repo), bio. They rarely scroll the Repositories tab. Layout decisions should optimize for that — keep the personal account populated and cross-linked to the brand org, but don't reorganize the world around the assumption that recruiters browse repo lists.
Telegram channels and roles (restored 2026-06-22) — Telegram restored in India 2026-06-22. Four channels in the Oriz namespace: @oriz_announcements (public broadcast), @oriz_drafts (private drafts queue), @oriz_ops (private errors+CI), @oriz_paisa (public India finance). Drafts dual-write to TG + GH Issues for redundancy. Pairs with Substack for long-form newsletter (both used).
User prefers atomic split over consolidation — When given a choice between fewer-bigger-units and more-smaller-units, the user consistently picks more-smaller. Apply as default when the choice is open.
User prefers per-product brand over family chrome — When tools live at dedicated subdomains, the user picks pure per-tool brand over Oriz family chrome. Maximum SEO per category, accept brand fragmentation.
User prefers strict-no-toggle interpretation of locked rules — When a family-wide rule (dark mode, no auth, no card) is offered as 'strict' vs 'with opt-in toggle', user picks strict. No light-mode toggle. No card-on-file even with opt-in. The rule is the rule.
User prefers wider topical coverage over narrow SEO concentration — When a content-site scope question offers narrow-but-deep vs wide-but-shallow, the user picks wide. Cost: more content to write. Benefit: domain owns a category, not a niche. Apply as default.