{"id":"3c86943f-d59b-4753-969e-62e772a96443","shortId":"CukBMh","kind":"skill","title":"creating-claude-md","tagline":"Use when the user wants to create a new CLAUDE.md from scratch for a repository, bootstrap project memory for a new repo, set up a repo for Claude Code for the first time, or completely rewrite an existing CLAUDE.md deemed unsalvageable. Produces a lean, high-signal file under 80","description":"# Creating a CLAUDE.md From Scratch\n\nGenerate a lean, high-signal CLAUDE.md for a repository by combining an autonomous repo scan with a focused 6-question user interview.\n\n**Core principle:** Every line must earn its place. If removing a line would not cause Claude to make a specific mistake, it does not belong in the file.\n\n## When to Use vs. Not Use\n\n**Use when:**\n- Repo has no CLAUDE.md and user wants one.\n- Repo has a CLAUDE.md that the user considers unsalvageable and wants rewritten from scratch.\n- User says \"set this repo up for Claude Code\", \"bootstrap project memory\", \"write me a CLAUDE.md\".\n\n**Do NOT use when:**\n- User wants to audit, improve, or incrementally fix an existing CLAUDE.md. Route to `claude-md-improver` instead.\n- User wants to add a single rule / gotcha to an existing file. Edit directly.\n- Repo is a scratch directory with no meaningful content yet.\n\n## The Iron Rule\n\n**Target ≤ 80 lines. Hard cap 120.** This is a forcing function. Bloat triggers the harness to uniformly down-weight all instructions in the file (not just the tail). If the draft exceeds 80 lines, split oversized sections into `agent_docs/*.md` before writing anything to disk.\n\n## 4-Phase Workflow\n\nFollow in order. Do not skip phases.\n\n### Phase 1: Scan the Repo (Autonomous)\n\nGather mechanical content the repo can tell you:\n\n- **Manifests** — read whichever exist: `package.json`, `pyproject.toml`, `Cargo.toml`, `go.mod`, `pom.xml`, `build.gradle`, `Gemfile`, `composer.json`, `Makefile`. Extract: language, framework, versions, scripts.\n- **Structure** — `ls` top-level + one level deep. Detect monorepo via `workspaces` in `package.json`, `pnpm-workspace.yaml`, `lerna.json`, `turbo.json`, `nx.json`, or `packages/` / `apps/` directories.\n- **Enforced conventions** — read `.editorconfig`, `.eslintrc*`, `biome.json`, `.prettierrc*`, `ruff.toml`, `pyproject.toml` (`[tool.ruff]` / `[tool.black]`), `rustfmt.toml`, `.golangci.yml`. **Record these — the corresponding rules are BANNED from CLAUDE.md** (linter does the job).\n- **Existing docs** — `README.md`, any `agent_docs/`, `.claude/rules/`, subdirectory `CLAUDE.md` files. Do not overwrite auxiliary files that already exist without asking.\n- **Git** — `git log --oneline -20` to detect commit conventions (Conventional Commits, prefix patterns).\n- **Boundary check** — look for existing `CLAUDE.md`, `AGENTS.md`, `CLAUDE.local.md`. If `CLAUDE.md` exists with meaningful content (> 20 lines, not just a stub), STOP and ask user: `[rewrite / run claude-md-improver / cancel]`. Proceed only if they confirm rewrite.\n- **Auto-memory** — check `~/.claude/projects/<path-hash>/memory/` if it exists. Note what Claude has already auto-learned so you do not duplicate it.\n- **External-doc MCPs** — check which MCPs are configured in this session for external docs. Common names include `confluence-dc`, `confluence`, `notion`, `atlassian`. Record the exact MCP name (e.g., `confluence-dc`) so Phase 3 can reference it by the same name in the generated `## External Docs` section. If none are configured but the user references external docs in Q6, record that as plain URLs without MCP instructions.\n\n### Phase 2: Interview the User\n\nAsk all questions in a **single numbered list**. User answers all together. Do not ask one at a time.\n\n**Fixed 6 (always ask):**\n\n1. **WHY** — In one sentence, what does this project do and who uses it?\n2. **Gotchas** — What has tripped up new contributors or Claude in this repo? Non-obvious traps, modules with weird behavior, required setup steps not in the README.\n3. **Out of scope** — Any files, directories, or areas Claude should NEVER modify autonomously? (auto-generated files, migrations, infra, other teams' code)\n4. **Approval gates** — Any actions that require your explicit approval before Claude runs them? (destructive git, DB schema changes, deploys, production-adjacent changes)\n5. **Testing philosophy** — How do you verify changes work? Is there any check that must always pass before shipping?\n6. **External docs** — Are there Confluence pages (or Notion / wiki / Google Docs) that document parts of this repo? For each, paste: (a) the URL, (b) a one-line description of what it covers, (c) policy — `read` (reference only, never modify) or `update` (keep in sync when related code changes). Leave blank if none.\n\n**Adaptive follow-ups (add up to 3, only when the scan surfaced ambiguity):**\n\n- Monorepo detected → \"I see N packages: X, Y, Z. Which ones does Claude frequently confuse or work across incorrectly?\"\n- `migrations/` directory found → \"Any rules around creating or running migrations?\"\n- Multiple lockfiles (`package-lock.json` + `yarn.lock` + `pnpm-lock.yaml`) → \"Which package manager is authoritative?\"\n- CI config present but no local check script → \"Any CI checks that must pass locally before pushing?\"\n- External infra configs present (`docker-compose.yml`, `terraform/`, k8s manifests) → \"Which of these does Claude own versus another team?\"\n\nAsk at most 9 total questions (6 fixed + up to 3 adaptive). If the user's answers are vague, re-ask once; do not invent content.\n\n### Phase 3: Draft (In-Memory Only)\n\nCompose the file against the Output Spec below. Before writing anything to disk:\n\n1. Count lines.\n2. If > 80: pick the section(s) that contributed most (typically Gotchas or Architecture detail) and extract them into `agent_docs/*.md` stubs. Replace with a 1-line pointer under `## References`.\n3. If still > 120 after aux-file splits: drop the least-load-bearing rules. The file must fit.\n4. Run the Red Flag Self-Check (below). Fix every flag before writing.\n\n### Phase 4: Write\n\n- Write `CLAUDE.md` to repo root.\n- Write any auxiliary files to `agent_docs/*.md`.\n- Do NOT commit to git.\n- Report to the user:\n  - Files written, with line counts.\n  - Brief summary of what lives where.\n  - Reminder: \"Add `CLAUDE.local.md` to `.gitignore` if you want personal overrides. Do not create it here — that is your personal concern.\"\n\n## Output Spec\n\n### Section Set\n\nInclude a section **only** if the scan or interview produced real content for it. Empty sections are worse than missing ones.\n\n| # | Section | Source | When |\n|---|---|---|---|\n| 1 | `# <Project>` + 1-line WHY | Interview Q1 | Always |\n| 2 | `## Stack` | Scan: manifests | Always |\n| 3 | `## Project Structure` | Scan: ls | If > 3 top-level dirs or monorepo |\n| 4 | `## Commands` | Scan: scripts | Always |\n| 5 | `## Conventions` | Scan: git log + interview | Only non-default conventions |\n| 6 | `## Gotchas` | Interview Q2 | Only if user surfaced any |\n| 7 | `## Out of Scope` | Interview Q3 | Only if user surfaced any |\n| 8 | `## Approval Required` | Interview Q4 + Q6 policy | Only if user surfaced any |\n| 9 | `## Testing` | Scan + Q5 | Always |\n| 10 | `## External Docs` | Interview Q6 + scan (MCP availability) | Only if Q6 surfaced any pages |\n| 11 | `## References` | Aux files created | Only if aux files exist |\n\n### Formatting Rules\n\n- Max 3 heading levels (`#`, `##`, `###`).\n- Commands in fenced ` ```bash ` blocks with inline `# ...` comments for flags. Never in prose.\n- Every rule in **imperative** form: \"Use X\", \"Never Y; instead do Z\".\n- **Every negative rule paired with a positive alternative.** \"Never force-push\" alone leaves Claude stuck; \"Never force-push; rebase locally then push normally\" gives it a path.\n- Max 2 `IMPORTANT:` or `YOU MUST` markers in the entire file. Reserved for security or data-integrity rules only. More than 2 makes emphasis invisible.\n- No pasted code blocks > 10 lines. Use `path/to/file.ts:42` pointers instead.\n- No `@path/to/doc.md` import syntax. Use plain `see path/to/doc.md` references — plain references load only when Claude decides they are relevant; `@` imports load immediately and burn context.\n\n### The `## External Docs` Section (Confluence / Notion / Wiki)\n\nEmit this section only if Q6 produced at least one page. One bullet per page. Each bullet has three parts: URL + one-line purpose + policy (read vs. update) + which MCP name to use.\n\nTemplate (substitute the MCP name recorded in Phase 1; if no external-doc MCP is configured, drop the MCP clause and leave the URL as a plain reference):\n\n```markdown\n## External Docs\n\n- **<One-line purpose>** — <URL>\n  - READ via `<mcp-name>` MCP when working on <specific code area, e.g., `app/api/**`>. Prefer reading this page over inferring behavior from code.\n  - UPDATE via `<mcp-name>` MCP before pushing any change that <specific trigger, e.g., adds/removes/modifies endpoints, changes request/response shapes>.\n\n- **<One-line purpose>** — <URL>\n  - READ-ONLY. Never modify this page. If content here conflicts with code, flag the discrepancy to the user.\n```\n\nRules for the section:\n- Pages with policy `read` → emit only the READ or READ-ONLY bullet.\n- Pages with policy `update` → emit both READ and UPDATE bullets. The UPDATE bullet MUST specify a concrete trigger (what kind of code change forces a doc update), sourced from the user's Q6 answer or the file globs most relevant to the page. Never emit a generic \"update when things change\".\n- Never paste Confluence page content into CLAUDE.md. URL + purpose + policy only.\n- If the user lists > 5 external doc pages, emit only the top 3 most-referenced and move the rest into `agent_docs/external-docs.md` with the same format.\n\n**Automatic rule when Q6 surfaces any `update` pages:** append one line to `## Approval Required`:\n\n```markdown\n- Before `git push`, if any change touches code referenced by an `update`-policy page in `## External Docs`, update that page (or confirm with me first).\n```\n\nThis is the forcing function that makes per-page update rules actually fire. Do not add it if all Q6 pages are `read`-only.\n\n### Banned Content\n\nDelete from the draft on sight:\n\n- Personality instructions: \"be a senior engineer\", \"think step by step\", \"approach this carefully\".\n- Style rules already enforced by linter configs detected in Phase 1 (indentation, quote style, semicolons, import order, etc.).\n- Standard language idioms Claude already knows (use `async/await`, use `pathlib`, prefer `const` over `var`).\n- Pasted architecture essays. Summarize in two sentences, link the doc.\n- Secrets, tokens, connection strings, API keys.\n- Descriptive prose (\"we generally prefer…\", \"try to…\"). Rewrite as imperative or delete.\n- Contributor names, roadmap items, sprint-specific notes.\n- Version numbers inside descriptive prose (stale within weeks). Put versions in the Stack section only, sourced from manifests.\n- Pasted content from Confluence / Notion / wiki pages. CLAUDE.md is not a cache. URL + purpose + policy only.\n\n### Auxiliary Files (Moderate Progressive Disclosure)\n\nTrigger aux-file splits only when the root file exceeds 80 lines after drafting. Do not scaffold them speculatively.\n\nTypical splits:\n- `agent_docs/architecture.md` — layered architectures with > 3 components worth describing.\n- `agent_docs/testing.md` — when the test workflow has > 3 commands or non-trivial patterns.\n- `agent_docs/<domain>.md` — when gotchas cluster around one domain (e.g., `agent_docs/auth.md`).\n\nEach aux file follows the same rules as root: imperative, no pasted code, pointers not copies, no linter-replaceable style rules.\n\nRoot references them via a `## References` section:\n```markdown\n## References\n\n- `agent_docs/architecture.md` — service boundaries and data flow\n- `agent_docs/testing.md` — how to run and write tests\n```\n\nFor monorepos with packages that have materially different conventions, **offer** (do not force) to stub `packages/<name>/CLAUDE.md` files. These are loaded on demand only when Claude works in that directory.\n\n## Red Flag Self-Check (Before Writing)\n\nRun every item before writing to disk. Fix any flag or start that section over.\n\n- [ ] File > 120 lines → split to aux file.\n- [ ] Empty section with a stub header → delete the section.\n- [ ] Any rule duplicated in a linter/formatter config detected in Phase 1 → delete.\n- [ ] Any rule phrased as \"we generally…\" / \"try to…\" / \"it is preferred that…\" → rewrite imperative or delete.\n- [ ] Any negative rule without a positive alternative → fix or delete.\n- [ ] More than 2 `IMPORTANT:` / `YOU MUST` markers → reduce to the 2 most critical.\n- [ ] Pasted code block > 10 lines that is not a verbatim command → replace with `path:line` pointer.\n- [ ] Personality instruction present → delete.\n- [ ] `@` import syntax used → replace with plain reference.\n- [ ] Rule covers a hypothetical rather than a real incident the user described → delete.\n\n## Boundary: Handling an Existing CLAUDE.md\n\nIf Phase 1 finds an existing `CLAUDE.md` with meaningful content (> 20 lines, not an auto-generated stub):\n\n> Existing CLAUDE.md found (N lines). This skill rewrites from scratch; it does not preserve content. Choose:\n> - `rewrite` — overwrite with a fresh one\n> - `improver` — exit and run the `claude-md-improver` skill to audit and improve what's there\n> - `cancel` — do nothing\n\nProceed only on `rewrite`. On `improver`, exit and tell the user to invoke that skill. On `cancel`, exit.\n\nStub / near-empty existing files (< 20 lines, clearly auto-generated) can be overwritten without prompting.\n\n## Anti-Pattern Rationalizations\n\nCapture these so the model cannot rationalize around the rules under pressure:\n\n| Rationalization | Reality |\n|---|---|\n| \"This repo has no manifest, I'll infer the stack from file extensions\" | No. Halt and ask the user. Guessed commands are worse than no commands. |\n| \"The user's answer to Q2 was vague, I'll flesh it out with likely gotchas\" | No. Invented content is how bad CLAUDE.md files are born. Re-ask once, then skip the section. |\n| \"I'm at 95 lines, let me cram in 25 more — still under 120\" | No. 80 is the target; 120 is the ceiling only after aux-file splits. Split first. |\n| \"The user did not pick a commit convention, I'll recommend Conventional Commits\" | No. If the repo's `git log` shows no pattern, the user does not care. Omit the section. |\n| \"The existing CLAUDE.md has a few good rules, I'll keep those\" | No. This skill is from-scratch. If the user wants to preserve, route them to `claude-md-improver`. |\n| \"Let me add 'be a senior engineer' to set the tone\" | No. Zero behavioral effect. Banned. |\n| \"I'll add the style rules the user mentioned even though `.eslintrc` already enforces them\" | No. Tell the user which linter rule covers it. Keep CLAUDE.md for things tools cannot enforce. |\n| \"The user gave vague out-of-scope answers, I'll write generic warnings\" | No. Skip the section entirely if Q3 did not surface specifics. |\n| \"The Confluence page content might be stale, let me paste a snapshot into CLAUDE.md as a backup\" | No. CLAUDE.md is not a cache. URL + purpose + policy only. If staleness is a concern, flag it to the user so they update the page. |\n| \"The user just said 'update the Confluence page when things change' — I'll write that as a generic update rule\" | No. Generic triggers do not fire. Re-ask for specifics: which code areas trigger an update to which page. |\n\n## Example Output (Reference, Not Template)\n\nHere is what a well-shaped CLAUDE.md looks like for a mid-size Next.js app. Do not copy verbatim — generate based on actual scan + interview results.\n\n````markdown\n# ShopFront\n\nNext.js 14 e-commerce site with Stripe payments, served to retail customers.\n\n## Stack\n\n- Next.js 14 (App Router), TypeScript 5.4, Node 20\n- Prisma ORM + Postgres 15\n- Tailwind CSS 3, shadcn/ui components\n\n## Project Structure\n\n- `app/` — Next.js App Router pages and API routes\n- `components/` — reusable UI (shadcn-based)\n- `lib/` — shared utilities and DB client\n- `prisma/` — schema and migrations\n\n## Commands\n\n```bash\npnpm install              # Install deps (pnpm only — do not use npm/yarn)\npnpm dev                  # Dev server on :3000\npnpm test                 # Vitest unit tests\npnpm test:e2e             # Playwright end-to-end\npnpm lint                 # Biome check\npnpm db:migrate           # Prisma migrate dev\n```\n\n## Gotchas\n\n- Stripe webhooks in `app/api/webhooks/stripe/route.ts:14` require `stripe-signature` validation — never short-circuit it.\n- Product images live in Cloudinary, not the repo. Never commit binary assets under `public/`.\n- `lib/auth.ts:42` has custom retry logic; do not \"simplify\" it — it handles a known race with our identity provider.\n\n## Out of Scope\n\n- `prisma/migrations/` — never edit existing migration files; create a new one via `pnpm db:migrate`.\n- `infra/` — owned by platform team; ask before changing.\n\n## Approval Required\n\n- Any schema change (Prisma migration).\n- `git push --force` on any branch (rebase locally then push normally instead).\n- Touching `app/api/webhooks/stripe/route.ts` (payment-critical).\n- Before `git push`, if any change touches code referenced by an `update`-policy page in `## External Docs`, update that page (or confirm with me first).\n\n## Testing\n\nRun `pnpm test && pnpm test:e2e` before any PR. IMPORTANT: Stripe webhook changes require running the signature verification test suite (`pnpm test -- webhooks`).\n\n## External Docs\n\n- **REST API reference** — https://confluence.example.com/display/ENG/ShopFront+API\n  - READ via `confluence-dc` MCP when working on any `app/api/**` route. Prefer reading this page over inferring behavior from code.\n  - UPDATE via `confluence-dc` MCP before pushing any change that adds/removes/modifies endpoints, request/response shapes, or auth requirements.\n\n- **Payments runbook** — https://confluence.example.com/display/ENG/ShopFront+Payments+Runbook\n  - READ-ONLY. Never modify this page. If content here conflicts with code, flag the discrepancy to the user.\n````\n\nNotice what is NOT there: no indentation rules (Biome enforces), no \"be careful\" prose, no contributor list, no roadmap, no `@imports`, no pasted code, no personality instructions, no pasted Confluence content. Every line prevents a specific mistake.\n\n## After Writing\n\nReport to the user with:\n- Files written (paths + line counts).\n- One-line summary of what each aux file covers (if any).\n- Reminder: \"For personal overrides (editor preferences, verbose logging, etc.), create `CLAUDE.local.md` and add it to `.gitignore`. That is a personal file and this skill does not generate it.\"\n- Suggestion: \"Review the file — every line should prevent a real mistake. Delete anything that does not.\"","tags":["creating","claude","sruthik27","agent-skills","claude-code","llm-skills","skill-md"],"capabilities":["skill","source-sruthik27","skill-creating-claude-md","topic-agent-skills","topic-claude-code","topic-llm-skills","topic-skill-md"],"categories":["creating-claude-md"],"synonyms":[],"warnings":[],"endpointUrl":"https://skills.sh/sruthik27/creating-claude-md","protocol":"skill","transport":"skills-sh","auth":{"type":"none","details":{"cli":"npx skills add sruthik27/creating-claude-md","source_repo":"https://github.com/sruthik27/creating-claude-md","install_from":"skills.sh"}},"qualityScore":"0.459","qualityRationale":"deterministic score 0.46 from registry signals: · indexed on github topic:agent-skills · 18 github stars · SKILL.md body (18,331 chars)","verified":false,"liveness":"unknown","lastLivenessCheck":null,"agentReviews":{"count":0,"score_avg":null,"cost_usd_avg":null,"success_rate":null,"latency_p50_ms":null,"narrative_summary":null,"summary_updated_at":null},"enrichmentModel":"deterministic:skill-github:v1","enrichmentVersion":1,"enrichedAt":"2026-05-18T19:05:56.252Z","embedding":null,"createdAt":"2026-05-18T13:12:28.831Z","updatedAt":"2026-05-18T19:05:56.252Z","lastSeenAt":"2026-05-18T19:05:56.252Z","tsv":"'-20':367 '/.claude/projects':417 '/claude.md':1751 '/display/eng/shopfront+api':2607 '/display/eng/shopfront+payments+runbook':2651 '/memory':418 '1':264,533,829,858,981,982,1254,1535,1813,1901 '10':1059,1173,1857 '11':1073 '120':211,866,1788,2085,2091 '14':2356,2370,2458 '15':2380 '2':506,547,832,988,1144,1165,1843,1851 '20':390,1909,1983,2376 '25':2081 '3':471,575,702,792,810,863,993,999,1086,1424,1659,1670,2383 '3000':2429 '4':253,598,883,898,1006 '42':1177,2484 '5':622,1011,1416 '5.4':2374 '6':79,530,641,788,1022 '7':1031 '8':1042 '80':54,207,239,834,1643,2087 '9':785,1054 '95':2075 'across':726 'action':602 'actual':1491,2349 'adapt':695,793 'add':182,699,934,1495,2168,2184,2744 'adds/removes/modifies':1309,2640 'adjac':620 'agent':245,347,851,910,1433,1654,1663,1677,1687,1720,1727 'agents.md':382 'alon':1126 'alreadi':359,426,1527,1547,2194 'altern':1121,1837 'alway':531,637,987,992,1010,1058 'ambigu':708 'anoth':780 'answer':519,798,1383,2041,2221 'anti':1995 'anti-pattern':1994 'anyth':250,826,2772 'api':1571,2394,2603 'app':315,2341,2371,2388,2390 'app/api':1288,2618 'app/api/webhooks/stripe/route.ts':2457,2547 'append':1447 'approach':1522 'approv':599,607,1043,1451,2527 'architectur':845,1558,1657 'area':583,1286,2313 'around':733,1683,2005 'ask':362,398,510,524,532,782,803,2028,2066,2308,2524 'asset':2480 'async/await':1550 'atlassian':459 'audit':164,1950 'auth':2645 'authorit':747 'auto':414,428,590,1914,1987 'auto-gener':589,1913,1986 'auto-learn':427 'auto-memori':413 'automat':1439 'autonom':73,268,588 'aux':869,1075,1080,1634,1690,1792,2098,2727 'aux-fil':868,1633,2097 'auxiliari':356,907,1627 'avail':1066 'b':665 'backup':2254 'bad':2059 'ban':336,1504,2181 'base':2347,2401 'bash':1092,2413 'bear':877 'behavior':567,1295,2179,2626 'belong':107 'binari':2479 'biom':2445,2679 'biome.json':322 'blank':692 'bloat':217 'block':1093,1172,1856 'bootstrap':20,150 'born':2063 'boundari':376,1723,1894 'branch':2539 'brief':927 'build.gradle':286 'bullet':1224,1228,1349,1359,1362 'burn':1203 'c':675 'cach':1622,2260 'cancel':406,1956,1975 'cannot':2003,2211 'cap':210 'captur':1998 'care':1524,2130,2683 'cargo.toml':283 'caus':97 'ceil':2094 'chang':616,621,629,690,1304,1311,1372,1400,1459,2290,2526,2531,2556,2589,2638 'check':377,416,440,634,754,758,890,1769,2446 'choos':1932 'ci':748,757 'circuit':2467 'claud':3,32,98,148,175,403,424,556,584,609,721,777,1128,1194,1546,1760,1945,2163 'claude-md-improv':174,402,1944,2162 'claude.local.md':383,935,2742 'claude.md':14,43,57,66,122,130,156,171,338,351,381,385,901,1407,1618,1898,1905,1918,2060,2136,2207,2251,2256,2332 'claude/rules':349 'claus':1266 'clear':1985 'client':2407 'cloudinari':2473 'cluster':1682 'code':33,149,597,689,1171,1285,1297,1326,1371,1461,1701,1855,2312,2558,2628,2664,2694 'combin':71 'command':1007,1089,1671,1864,2032,2037,2412 'comment':1096 'commerc':2359 'commit':370,373,915,2109,2115,2478 'common':451 'complet':39 'compon':1660,2385,2396 'compos':816 'composer.json':288 'concern':952,2269 'concret':1366 'config':749,767,1531,1809 'configur':444,488,1262 'confirm':411,1475,2572 'conflict':1324,2662 'confluenc':455,457,467,646,1209,1403,1614,2239,2286,2611,2632,2700 'confluence-dc':454,466,2610,2631 'confluence.example.com':2606,2650 'confluence.example.com/display/eng/shopfront+api':2605 'confluence.example.com/display/eng/shopfront+payments+runbook':2649 'confus':723 'connect':1569 'consid':134 'const':1554 'content':201,271,389,808,968,1322,1405,1505,1612,1908,1931,2056,2241,2660,2701 'context':1204 'contribut':840 'contributor':554,1585,2686 'convent':318,371,372,1012,1021,1743,2110,2114 'copi':1704,2344 'core':83 'correspond':333 'count':830,926,2719 'cover':674,1882,2204,2729 'cram':2079 'creat':2,11,55,734,945,1077,2511,2741 'creating-claude-md':1 'critic':1853,2550 'css':2382 'custom':2367,2486 'data':1159,1725 'data-integr':1158 'db':614,2406,2448,2517 'dc':456,468,2612,2633 'decid':1195 'deem':44 'deep':302 'default':1020 'delet':1506,1584,1800,1814,1830,1840,1873,1893,2771 'demand':1757 'dep':2417 'deploy':617 'describ':1662,1892 'descript':670,1573,1596 'destruct':612 'detail':846 'detect':303,369,710,1532,1810 'dev':2425,2426,2452 'differ':1742 'dir':1003 'direct':192 'directori':197,316,581,729,1764 'disclosur':1631 'discrep':1329,2667 'disk':252,828,1778 'doc':246,344,348,438,450,483,494,643,652,852,911,1061,1207,1259,1277,1375,1418,1470,1566,1678,2567,2601 'docker-compose.yml':769 'docs/architecture.md':1655,1721 'docs/auth.md':1688 'docs/external-docs.md':1434 'docs/testing.md':1664,1728 'document':654 'domain':1685 'down-weight':223 'draft':237,811,1509,1646 'drop':872,1263 'duplic':434,1805 'e':2358 'e-commerc':2357 'e.g':465,1287,1308,1686 'e2e':2437,2582 'earn':88 'edit':191,2507 'editor':2736 'editorconfig':320 'effect':2180 'emit':1212,1341,1354,1394,1420 'emphasi':1167 'empti':971,1794,1980 'end':2440,2442 'end-to-end':2439 'endpoint':1310,2641 'enforc':317,1528,2195,2212,2680 'engin':1517,2172 'entir':1152,2231 'eslintrc':321,2193 'essay':1559 'etc':1542,2740 'even':2191 'everi':85,893,1102,1114,1773,2702,2764 'exact':462 'exampl':2320 'exceed':238,1642 'exist':42,170,189,280,343,360,380,386,421,1082,1897,1904,1917,1981,2135,2508 'exit':1940,1965,1976 'explicit':606 'extens':2024 'extern':437,449,482,493,642,765,1060,1206,1258,1276,1417,1469,2566,2600 'external-doc':436,1257 'extract':290,848 'fenc':1091 'file':52,110,190,230,352,357,580,592,818,870,880,908,922,1076,1081,1153,1386,1628,1635,1641,1691,1752,1787,1793,1982,2023,2061,2099,2510,2715,2728,2752,2763 'find':1902 'fire':1492,2305 'first':36,1478,2102,2575 'fit':882 'fix':168,529,789,892,1779,1838 'flag':887,894,1098,1327,1766,1781,2270,2665 'flesh':2048 'flow':1726 'focus':78 'follow':256,697,1692 'follow-up':696 'forc':215,1124,1132,1373,1482,1747,2536 'force-push':1123,1131 'form':1106 'format':1083,1438 'found':730,1919 'framework':292 'frequent':722 'fresh':1937 'from-scratch':2150 'function':216,1483 'gate':600 'gather':269 'gave':2215 'gemfil':287 'general':1576,1820 'generat':60,481,591,1915,1988,2346,2758 'generic':1396,2225,2297,2301 'git':363,364,613,917,1014,1455,2121,2534,2552 'gitignor':937,2747 'give':1139 'glob':1387 'go.mod':284 'golangci.yml':329 'good':2140 'googl':651 'gotcha':186,548,843,1023,1681,2053,2453 'guess':2031 'halt':2026 'handl':1895,2494 'har':220 'hard':209 'head':1087 'header':1799 'high':50,64 'high-sign':49,63 'hypothet':1884 'ident':2500 'idiom':1545 'imag':2470 'immedi':1201 'imper':1105,1582,1698,1828 'import':1145,1182,1199,1540,1844,1874,2586,2691 'improv':165,177,405,1939,1947,1952,1964,2165 'in-memori':812 'incid':1889 'includ':453,957 'incorrect':727 'increment':167 'indent':1536,2677 'infer':1294,2019,2625 'infra':594,766,2519 'inlin':1095 'insid':1595 'instal':2415,2416 'instead':178,1111,1179,2545 'instruct':227,504,1513,1871,2697 'integr':1160 'interview':82,507,965,985,1016,1024,1035,1045,1062,2351 'invent':807,2055 'invis':1168 'invok':1971 'iron':204 'item':1588,1774 'job':342 'k8s':771 'keep':684,2144,2206 'key':1572 'kind':1369 'know':1548 'known':2496 'languag':291,1544 'layer':1656 'lean':48,62 'learn':429 'least':875,1220 'least-load-bear':874 'leav':691,1127,1268 'lerna.json':310 'let':2077,2166,2245 'level':299,301,1002,1088 'lib':2402 'lib/auth.ts':2483 'like':2052,2334 'line':86,94,208,240,391,669,831,859,925,983,1174,1235,1449,1644,1789,1858,1868,1910,1921,1984,2076,2703,2718,2722,2765 'link':1564 'lint':2444 'linter':339,1530,1707,2202 'linter-replac':1706 'linter/formatter':1808 'list':517,1415,2687 'live':931,2471 'll':2018,2047,2112,2143,2183,2223,2292 'load':876,1191,1200,1755 'local':753,762,1135,2541 'lockfil':739 'log':365,1015,2122,2739 'logic':2488 'look':378,2333 'ls':296,997 'm':2073 'make':100,1166,1485 'makefil':289 'manag':745 'manifest':277,772,991,1610,2016 'markdown':1275,1453,1718,2353 'marker':1149,1847 'materi':1741 'max':1085,1143 'mcp':463,503,1065,1242,1249,1260,1265,1280,1300,2613,2634 'mcps':439,442 'md':4,176,247,404,853,912,1679,1946,2164 'meaning':200,388,1907 'mechan':270 'memori':22,152,415,814 'mention':2190 'mid':2338 'mid-siz':2337 'might':2242 'migrat':593,728,737,2411,2449,2451,2509,2518,2533 'miss':976 'mistak':103,2707,2770 'model':2002 'moder':1629 'modifi':587,681,1318,2656 'modul':564 'monorepo':304,709,1005,1736 'most-referenc':1425 'move':1429 'multipl':738 'must':87,636,760,881,1148,1363,1846 'n':713,1920 'name':452,464,478,1243,1250,1586 'near':1979 'near-empti':1978 'negat':1115,1832 'never':586,680,1099,1109,1122,1130,1317,1393,1401,2464,2477,2506,2655 'new':13,25,553,2513 'next.js':2340,2355,2369,2389 'node':2375 'non':561,1019,1674 'non-default':1018 'non-obvi':560 'non-trivi':1673 'none':486,694 'normal':1138,2544 'note':422,1592 'noth':1958 'notic':2671 'notion':458,649,1210,1615 'npm/yarn':2423 'number':516,1594 'nx.json':312 'obvious':562 'offer':1744 'omit':2131 'one':126,300,525,536,668,719,977,1221,1223,1234,1448,1684,1938,2514,2721 'one-lin':667,1233,2720 'onelin':366 'order':258,1541 'orm':2378 'out-of-scop':2217 'output':821,953,2321 'overrid':942,2735 'overs':242 'overwrit':355,1934 'overwritten':1991 'own':2520 'packag':314,714,744,1738,1750 'package-lock.json':740 'package.json':281,308 'page':647,1072,1222,1226,1292,1320,1337,1350,1392,1404,1419,1446,1467,1473,1488,1500,1617,2240,2279,2287,2319,2392,2564,2570,2623,2658 'pair':1117 'part':655,1231 'pass':638,761 'past':661,1170,1402,1557,1611,1700,1854,2247,2693,2699 'path':1142,1867,2717 'path/to/doc.md':1181,1187 'path/to/file.ts':1176 'pathlib':1552 'pattern':375,1676,1996,2125 'payment':2363,2549,2647 'payment-crit':2548 'per':1225,1487 'per-pag':1486 'person':941,951,1512,1870,2696,2734,2751 'phase':254,262,263,470,505,809,897,1253,1534,1812,1900 'philosophi':624 'phrase':1817 'pick':835,2107 'place':90 'plain':500,1185,1189,1273,1879 'platform':2522 'playwright':2438 'pnpm':2414,2418,2424,2430,2435,2443,2447,2516,2578,2580,2597 'pnpm-lock.yaml':742 'pnpm-workspace.yaml':309 'pointer':860,1178,1702,1869 'polici':676,1048,1237,1339,1352,1410,1466,1625,2263,2563 'pom.xml':285 'posit':1120,1836 'postgr':2379 'pr':2585 'prefer':1289,1553,1577,1825,2620,2737 'prefix':374 'present':750,768,1872 'preserv':1930,2158 'pressur':2009 'prettierrc':323 'prevent':2704,2767 'principl':84 'prisma':2377,2408,2450,2532 'prisma/migrations':2505 'proceed':407,1959 'produc':46,966,1218 'product':619,2469 'production-adjac':618 'progress':1630 'project':21,151,541,994,2386 'prompt':1993 'prose':1101,1574,1597,2684 'provid':2501 'public':2482 'purpos':1236,1409,1624,2262 'push':764,1125,1133,1137,1302,1456,2535,2543,2553,2636 'put':1601 'pyproject.toml':282,325 'q1':986 'q2':1025,2043 'q3':1036,2233 'q4':1046 'q5':1057 'q6':496,1047,1063,1069,1217,1382,1442,1499 'question':80,512,787 'quot':1537 'race':2497 'rather':1885 'ration':1997,2004,2010 're':802,2065,2307 're-ask':801,2064,2306 'read':278,319,677,1238,1278,1290,1315,1340,1344,1347,1356,1502,2608,2621,2653 'read-on':1314,1346,2652 'readm':574 'readme.md':345 'real':967,1888,2769 'realiti':2011 'rebas':1134,2540 'recommend':2113 'record':330,460,497,1251 'red':886,1765 'reduc':1848 'refer':473,492,678,862,1074,1188,1190,1274,1712,1716,1719,1880,2322,2604 'referenc':1427,1462,2559 'relat':688 'relev':1198,1389 'remind':933,2732 'remov':92 'replac':855,1708,1865,1877 'repo':26,30,74,119,127,145,193,267,273,559,658,903,2013,2119,2476 'report':918,2710 'repositori':19,69 'request/response':1312,2642 'requir':568,604,1044,1452,2459,2528,2590,2646 'reserv':1154 'rest':1431,2602 'result':2352 'retail':2366 'retri':2487 'reusabl':2397 'review':2761 'rewrit':40,400,412,1580,1827,1924,1933,1962 'rewritten':138 'roadmap':1587,2689 'root':904,1640,1697,1711 'rout':172,2159,2395,2619 'router':2372,2391 'ruff.toml':324 'rule':185,205,334,732,878,1084,1103,1116,1161,1333,1440,1490,1526,1695,1710,1804,1816,1833,1881,2007,2141,2187,2203,2299,2678 'run':401,610,736,884,1731,1772,1942,2577,2591 'runbook':2648 'rustfmt.toml':328 'said':2283 'say':142 'scaffold':1649 'scan':75,265,706,963,990,996,1008,1013,1056,1064,2350 'schema':615,2409,2530 'scope':578,1034,2220,2504 'scratch':16,59,140,196,1926,2152 'script':294,755,1009 'secret':1567 'section':243,484,837,955,959,972,978,1208,1214,1336,1606,1717,1785,1795,1802,2071,2133,2230 'secur':1156 'see':712,1186 'self':889,1768 'self-check':888,1767 'semicolon':1539 'senior':1516,2171 'sentenc':537,1563 'serv':2364 'server':2427 'servic':1722 'session':447 'set':27,143,956,2174 'setup':569 'shadcn':2400 'shadcn-bas':2399 'shadcn/ui':2384 'shape':1313,2331,2643 'share':2403 'ship':640 'shopfront':2354 'short':2466 'short-circuit':2465 'show':2123 'sight':1511 'signal':51,65 'signatur':2462,2593 'simplifi':2491 'singl':184,515 'site':2360 'size':2339 'skill':1923,1948,1973,2148,2755 'skill-creating-claude-md' 'skip':261,2069,2228 'snapshot':2249 'sourc':979,1377,1608 'source-sruthik27' 'spec':822,954 'specif':102,1284,1306,1591,2237,2310,2706 'specifi':1364 'specul':1651 'split':241,871,1636,1653,1790,2100,2101 'sprint':1590 'sprint-specif':1589 'stack':989,1605,2021,2368 'stale':1598,2244,2266 'standard':1543 'start':1783 'step':570,1519,1521 'still':865,2083 'stop':396 'string':1570 'stripe':2362,2454,2461,2587 'stripe-signatur':2460 'structur':295,995,2387 'stub':395,854,1749,1798,1916,1977 'stuck':1129 'style':1525,1538,1709,2186 'subdirectori':350 'substitut':1247 'suggest':2760 'suit':2596 'summar':1560 'summari':928,2723 'surfac':707,1029,1040,1052,1070,1443,2236 'sync':686 'syntax':1183,1875 'tail':234 'tailwind':2381 'target':206,2090 'team':596,781,2523 'tell':275,1967,2198 'templat':1246,2324 'terraform':770 'test':623,1055,1667,1734,2431,2434,2436,2576,2579,2581,2595,2598 'thing':1399,2209,2289 'think':1518 'though':2192 'three':1230 'time':37,528 'togeth':521 'token':1568 'tone':2176 'tool':2210 'tool.black':327 'tool.ruff':326 'top':298,1001,1423 'top-level':297,1000 'topic-agent-skills' 'topic-claude-code' 'topic-llm-skills' 'topic-skill-md' 'total':786 'touch':1460,2546,2557 'trap':563 'tri':1578,1821 'trigger':218,1307,1367,1632,2302,2314 'trip':551 'trivial':1675 'turbo.json':311 'two':1562 'typescript':2373 'typic':842,1652 'ui':2398 'uniform':222 'unit':2433 'unsalvag':45,135 'up':698 'updat':683,1240,1298,1353,1358,1361,1376,1397,1445,1465,1471,1489,2277,2284,2298,2316,2562,2568,2629 'url':501,664,1232,1270,1408,1623,2261 'use':5,113,116,117,159,545,1107,1175,1184,1245,1549,1551,1876,2422 'user':8,81,124,133,141,161,179,399,491,509,518,796,921,1028,1039,1051,1332,1380,1414,1891,1969,2030,2039,2104,2127,2155,2189,2200,2214,2274,2281,2670,2713 'util':2404 'vagu':800,2045,2216 'valid':2463 'var':1556 'verbatim':1863,2345 'verbos':2738 'verif':2594 'verifi':628 'version':293,1593,1602 'versus':779 'via':305,1279,1299,1714,2515,2609,2630 'vitest':2432 'vs':114,1239 'want':9,125,137,162,180,940,2156 'warn':2226 'webhook':2455,2588,2599 'week':1600 'weight':225 'weird':566 'well':2330 'well-shap':2329 'whichev':279 'wiki':650,1211,1616 'within':1599 'without':361,502,1834,1992 'work':630,725,1282,1761,2615 'workflow':255,1668 'workspac':306 'wors':974,2034 'worth':1661 'would':95 'write':153,249,825,896,899,900,905,1733,1771,1776,2224,2293,2709 'written':923,2716 'x':715,1108 'y':716,1110 'yarn.lock':741 'yet':202 'z':717,1113 'zero':2178","prices":[{"id":"16db14b7-d84b-4673-822e-1cc97490144d","listingId":"3c86943f-d59b-4753-969e-62e772a96443","amountUsd":"0","unit":"free","nativeCurrency":null,"nativeAmount":null,"chain":null,"payTo":null,"paymentMethod":"skill-free","isPrimary":true,"details":{"org":"sruthik27","category":"creating-claude-md","install_from":"skills.sh"},"createdAt":"2026-05-18T13:12:28.831Z"}],"sources":[{"listingId":"3c86943f-d59b-4753-969e-62e772a96443","source":"github","sourceId":"sruthik27/creating-claude-md","sourceUrl":"https://github.com/sruthik27/creating-claude-md","isPrimary":false,"firstSeenAt":"2026-05-18T13:12:28.831Z","lastSeenAt":"2026-05-18T19:05:56.252Z"}],"details":{"listingId":"3c86943f-d59b-4753-969e-62e772a96443","quickStartSnippet":null,"exampleRequest":null,"exampleResponse":null,"schema":null,"openapiUrl":null,"agentsTxtUrl":null,"citations":[],"useCases":[],"bestFor":[],"notFor":[],"kindDetails":{"org":"sruthik27","slug":"creating-claude-md","github":{"repo":"sruthik27/creating-claude-md","stars":18,"topics":["agent-skills","claude-code","llm-skills","skill-md"],"license":"mit","html_url":"https://github.com/sruthik27/creating-claude-md","pushed_at":"2026-05-17T21:12:15Z","description":"Claude Code / Codex skill: generate a lean, high-signal CLAUDE.md from scratch via repo scan + focused user interview.","skill_md_sha":"a4449d219b745ca75c0ccea51a3dd65088752219","skill_md_path":"SKILL.md","default_branch":"main","skill_tree_url":"https://github.com/sruthik27/creating-claude-md"},"layout":"root","source":"github","category":"creating-claude-md","frontmatter":{"name":"creating-claude-md","description":"Use when the user wants to create a new CLAUDE.md from scratch for a repository, bootstrap project memory for a new repo, set up a repo for Claude Code for the first time, or completely rewrite an existing CLAUDE.md deemed unsalvageable. Produces a lean, high-signal file under 80 lines (120 hard cap) by scanning the repo for mechanical content (stack, commands, structure) and interviewing the user for judgment content (WHY, gotchas, out-of-scope, approval gates, testing philosophy, external docs like Confluence pages). NOT for auditing or incrementally improving an existing CLAUDE.md — that is the claude-md-improver skill's role."},"skills_sh_url":"https://skills.sh/sruthik27/creating-claude-md"},"updatedAt":"2026-05-18T19:05:56.252Z"}}