[{"data":1,"prerenderedAt":545},["ShallowReactive",2],{"content-query-Xiu8WKMvfH":3,"content-navigation-8C37fagqQL":353},{"_path":4,"_dir":5,"_draft":6,"_partial":6,"_locale":7,"title":8,"description":9,"heading":10,"abstract":11,"year":12,"tags":13,"schemaOrg":17,"body":63,"_type":326,"_id":327,"_source":328,"_file":329,"_stem":330,"_extension":331,"head":332},"/projects/ultrainit","projects",false,"","ultrainit.sh: One command to configure Claude Code for any codebase","A bash script that sends 30-60 Claude Code agents to analyze a codebase in parallel and generates a complete configuration: CLAUDE.md files, skills, hooks, subagents, and MCP server setups.","ultrainit.sh","Sends a swarm of Claude Code agents to analyze any codebase from every angle — architecture, git history, patterns, tooling, security — then synthesizes a production-grade configuration with CLAUDE.md files, skills, hooks, subagents, and MCP servers.","2026",[14,15,16],"On Github","Claude Code","Bash",[18,42],{"@context":19,"@type":20,"name":10,"headline":8,"description":21,"datePublished":22,"dateModified":23,"author":24,"codeRepository":33,"programmingLanguage":16,"license":34,"operatingSystem":35,"applicationCategory":39,"keywords":40,"inLanguage":41},"https://schema.org","SoftwareSourceCode","Bash script that sends 30-60 Claude Code agents to analyze a codebase in parallel and generates a complete Claude Code configuration.","2026-04-01","2026-04-06",{"@type":25,"givenName":26,"familyName":27,"name":28,"url":29,"sameAs":30},"Person","Joel","Barmettler","Joel Barmettler","https://joelbarmettler.xyz",[31,32],"https://www.linkedin.com/in/joel-barmettler-b9ab361b7","https://github.com/joelbarmettlerUZH","https://github.com/joelbarmettlerUZH/ultrainit.sh","https://www.apache.org/licenses/LICENSE-2.0",[36,37,38],"Linux","macOS","Windows (WSL/Git Bash)","DeveloperApplication","Claude Code, CLAUDE.md, skills, hooks, subagents, MCP, codebase analysis, developer tools","en",{"@context":19,"@type":43,"mainEntity":44},"FAQPage",[45,51,55,59],{"@type":46,"name":47,"acceptedAnswer":48},"Question","What is ultrainit.sh?",{"@type":49,"text":50},"Answer","ultrainit.sh is a bash script that automatically generates a complete Claude Code configuration for any codebase. It sends 30-60 focused Claude Code agents to analyze architecture, git history, patterns, tooling, and security in parallel, then synthesizes the findings into CLAUDE.md files, skills, hooks, subagents, and MCP server configurations.",{"@type":46,"name":52,"acceptedAnswer":53},"How much does ultrainit.sh cost to run?",{"@type":49,"text":54},"A typical run costs $10-30 depending on codebase size. With Opus for synthesis, $20-50. The --budget flag sets a spending cap with automatic allocation across phases. Fast analysis agents use Haiku, deep analysis uses Sonnet, and synthesis uses Sonnet with 1M context by default.",{"@type":46,"name":56,"acceptedAnswer":57},"How long does ultrainit.sh take?",{"@type":49,"text":58},"Typically 15-30 minutes depending on codebase size. The run is fully resumable — if interrupted, rerun the same command and completed agents are skipped. Intermediate results are cached in the .ultrainit/ directory.",{"@type":46,"name":60,"acceptedAnswer":61},"How is ultrainit.sh different from asking Claude to read the codebase?",{"@type":49,"text":62},"ultrainit.sh sends 30-60 specialized agents with structured JSON output schemas, scoped tool access, and focused system prompts. Each agent is an expert at one thing: git forensics, security scanning, pattern detection. A single Claude session cannot match this depth because agents run in parallel, cover the codebase hierarchically, and validate their output structurally.",{"type":64,"children":65,"toc":314},"root",[66,74,80,102,147,152,159,166,171,176,182,195,201,206,212,217,223,228,233,239,268,289,308],{"type":67,"tag":68,"props":69,"children":71},"element","h1",{"id":70},"ultrainitsh-one-command-to-configure-claude-code-for-any-codebase",[72],{"type":73,"value":8},"text",{"type":67,"tag":75,"props":76,"children":77},"p",{},[78],{"type":73,"value":79},"Setting up Claude Code properly for a real codebase takes days. A good configuration needs a CLAUDE.md that captures architecture, patterns, and conventions; skills for every major workflow; hooks that enforce formatting and protect sensitive files; subagents for code review and security analysis; and MCP server connections to databases and documentation. Most teams either skip all of this or write a thin CLAUDE.md that barely scratches the surface.",{"type":67,"tag":75,"props":81,"children":82},{},[83,85,92,94,100],{"type":73,"value":84},"ultrainit.sh solves this by sending a swarm of Claude Code agents to analyze the codebase from every angle, then synthesizing everything into a production-grade configuration. One command, 15-30 minutes, no dependencies beyond ",{"type":67,"tag":86,"props":87,"children":89},"code",{"className":88},[],[90],{"type":73,"value":91},"claude",{"type":73,"value":93}," and ",{"type":67,"tag":86,"props":95,"children":97},{"className":96},[],[98],{"type":73,"value":99},"jq",{"type":73,"value":101},".",{"type":67,"tag":103,"props":104,"children":108},"pre",{"className":105,"code":106,"language":107,"meta":7,"style":7},"language-bash shiki shiki-themes github-dark","curl -sL https://github.com/joelbarmettlerUZH/ultrainit.sh/releases/latest/download/ultrainit.sh | bash\n","bash",[109],{"type":67,"tag":86,"props":110,"children":111},{"__ignoreMap":7},[112],{"type":67,"tag":113,"props":114,"children":117},"span",{"class":115,"line":116},"line",1,[118,124,130,136,142],{"type":67,"tag":113,"props":119,"children":121},{"style":120},"--shiki-default:#B392F0",[122],{"type":73,"value":123},"curl",{"type":67,"tag":113,"props":125,"children":127},{"style":126},"--shiki-default:#79B8FF",[128],{"type":73,"value":129}," -sL",{"type":67,"tag":113,"props":131,"children":133},{"style":132},"--shiki-default:#9ECBFF",[134],{"type":73,"value":135}," https://github.com/joelbarmettlerUZH/ultrainit.sh/releases/latest/download/ultrainit.sh",{"type":67,"tag":113,"props":137,"children":139},{"style":138},"--shiki-default:#F97583",[140],{"type":73,"value":141}," |",{"type":67,"tag":113,"props":143,"children":144},{"style":120},[145],{"type":73,"value":146}," bash\n",{"type":67,"tag":75,"props":148,"children":149},{},[150],{"type":73,"value":151},"A typical run on a full-stack web application generates a 200-300 line root CLAUDE.md, 5-15 subdirectory CLAUDE.md files, 15-25 skills, 3-5 hooks, 3-8 subagents, and 2-6 MCP server configurations.",{"type":67,"tag":153,"props":154,"children":156},"h2",{"id":155},"five-phase-pipeline",[157],{"type":73,"value":158},"Five-phase pipeline",{"type":67,"tag":160,"props":161,"children":163},"h3",{"id":162},"phase-1-gather-evidence",[164],{"type":73,"value":165},"Phase 1: Gather evidence",{"type":67,"tag":75,"props":167,"children":168},{},[169],{"type":73,"value":170},"Eight specialist agents run in parallel, each examining the codebase from a different angle. An Identity agent (Haiku) detects the project name, languages, frameworks, and monorepo structure. A Commands agent finds every build, test, lint, and format command from package.json, Makefiles, and CI pipelines. A Git Forensics agent (Sonnet) analyzes commit history for hotspots, bug-fix density, temporal coupling, and ownership patterns. A Patterns agent discovers architectural conventions, error handling, import styles, and state management. Additional agents scan for tooling, documentation, security-sensitive files, and directory structure.",{"type":67,"tag":75,"props":172,"children":173},{},[174],{"type":73,"value":175},"Based on the Structure Scout's map, deep-dive agents spawn — one per important directory, running in parallel batches of 8. A typical project gets 30-50 directories analyzed this way. Each deep-dive agent reads actual source files and reports internal architecture, key files, coding patterns, naming conventions, gotchas, and skill opportunities. This phase produces 500KB-1MB of structured findings.",{"type":67,"tag":160,"props":177,"children":179},{"id":178},"phase-2-ask-the-developer",[180],{"type":73,"value":181},"Phase 2: Ask the developer",{"type":67,"tag":75,"props":183,"children":184},{},[185,187,193],{"type":73,"value":186},"Six interactive questions capture knowledge that code analysis alone cannot provide: project purpose, deployment target, external integrations, things Claude should never do, common mistakes new developers make, and anything else. Skipped with ",{"type":67,"tag":86,"props":188,"children":190},{"className":189},[],[191],{"type":73,"value":192},"--non-interactive",{"type":73,"value":194}," for CI environments.",{"type":67,"tag":160,"props":196,"children":198},{"id":197},"phase-3-research",[199],{"type":73,"value":200},"Phase 3: Research",{"type":67,"tag":75,"props":202,"children":203},{},[204],{"type":73,"value":205},"Two agents search the web in parallel. A Domain Researcher looks up framework-version-specific best practices and common pitfalls for the detected tech stack. An MCP Discoverer searches the MCP registry, GitHub, and the web for MCP servers matching the project's databases, frameworks, and services.",{"type":67,"tag":160,"props":207,"children":209},{"id":208},"phase-4-synthesize",[210],{"type":73,"value":211},"Phase 4: Synthesize",{"type":67,"tag":75,"props":213,"children":214},{},[215],{"type":73,"value":216},"All findings (~1MB) are fed into two synthesis passes using the 1M context model. The first pass generates all CLAUDE.md files. The second generates skills, hooks, subagents, MCP configurations, and settings. Splitting into two passes lets each focus deeply rather than trying to produce everything at once.",{"type":67,"tag":160,"props":218,"children":220},{"id":219},"phase-5-validate-and-write",[221],{"type":73,"value":222},"Phase 5: Validate and write",{"type":67,"tag":75,"props":224,"children":225},{},[226],{"type":73,"value":227},"Generated artifacts go through structural validation. CLAUDE.md files are checked for minimum length, zero generic phrases, command tables, and alternatives for every prohibition. Skills must contain codebase-specific file references and verification sections. Hooks must read JSON from stdin and print actionable error messages. Subagents must have scoped tool access matching their purpose. If validation fails, a revision agent automatically fixes the issues and re-validates.",{"type":67,"tag":75,"props":229,"children":230},{},[231],{"type":73,"value":232},"Artifacts are written with safe merge behavior: CLAUDE.md files are overwritten (with backup), skills and hooks and subagents are merge-only (new files added, existing never touched), and settings.json and mcp.json are deep-merged.",{"type":67,"tag":153,"props":234,"children":236},{"id":235},"resumability-and-cost",[237],{"type":73,"value":238},"Resumability and cost",{"type":67,"tag":75,"props":240,"children":241},{},[242,244,250,252,258,260,266],{"type":73,"value":243},"The script saves all intermediate results to ",{"type":67,"tag":86,"props":245,"children":247},{"className":246},[],[248],{"type":73,"value":249},".ultrainit/",{"type":73,"value":251}," in the project directory. If interrupted, rerun the same command and completed agents are skipped. Use ",{"type":67,"tag":86,"props":253,"children":255},{"className":254},[],[256],{"type":73,"value":257},"--force",{"type":73,"value":259}," to rerun everything from scratch, or ",{"type":67,"tag":86,"props":261,"children":263},{"className":262},[],[264],{"type":73,"value":265},"--overwrite",{"type":73,"value":267}," to remove existing configuration and regenerate cleanly.",{"type":67,"tag":75,"props":269,"children":270},{},[271,273,279,281,287],{"type":73,"value":272},"A typical run costs $10-30. Fast analysis agents use Haiku, deep analysis uses Sonnet, and synthesis uses Sonnet with 1M context. Use ",{"type":67,"tag":86,"props":274,"children":276},{"className":275},[],[277],{"type":73,"value":278},"--model 'opus[1m]'",{"type":73,"value":280}," for maximum quality synthesis ($20-50 total). The ",{"type":67,"tag":86,"props":282,"children":284},{"className":283},[],[285],{"type":73,"value":286},"--budget",{"type":73,"value":288}," flag sets a spending cap with automatic allocation across phases.",{"type":67,"tag":75,"props":290,"children":291},{},[292,298,300],{"type":67,"tag":293,"props":294,"children":295},"strong",{},[296],{"type":73,"value":297},"Repository:",{"type":73,"value":299}," ",{"type":67,"tag":301,"props":302,"children":305},"a",{"href":33,"rel":303},[304],"nofollow",[306],{"type":73,"value":307},"github.com/joelbarmettlerUZH/ultrainit.sh",{"type":67,"tag":309,"props":310,"children":311},"style",{},[312],{"type":73,"value":313},"html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}",{"title":7,"searchDepth":315,"depth":315,"links":316},2,[317,325],{"id":155,"depth":315,"text":158,"children":318},[319,321,322,323,324],{"id":162,"depth":320,"text":165},3,{"id":178,"depth":320,"text":181},{"id":197,"depth":320,"text":200},{"id":208,"depth":320,"text":211},{"id":219,"depth":320,"text":222},{"id":235,"depth":315,"text":238},"markdown","content:3.projects:1.ultrainit.md","content","3.projects/1.ultrainit.md","3.projects/1.ultrainit","md",{"script":333},[334],{"type":335,"key":336,"nodes":337,"data-nuxt-schema-org":352},"application/ld+json","schema-org-graph",[338,342],{"@context":19,"@type":20,"name":10,"headline":8,"description":21,"datePublished":22,"dateModified":23,"author":339,"codeRepository":33,"programmingLanguage":16,"license":34,"operatingSystem":341,"applicationCategory":39,"keywords":40,"inLanguage":41},{"@type":25,"givenName":26,"familyName":27,"name":28,"url":29,"sameAs":340},[31,32],[36,37,38],{"@context":19,"@type":43,"mainEntity":343},[344,346,348,350],{"@type":46,"name":47,"acceptedAnswer":345},{"@type":49,"text":50},{"@type":46,"name":52,"acceptedAnswer":347},{"@type":49,"text":54},{"@type":46,"name":56,"acceptedAnswer":349},{"@type":49,"text":58},{"@type":46,"name":60,"acceptedAnswer":351},{"@type":49,"text":62},true,[354,368,384,400,414,499],{"title":355,"_path":356,"children":357,"icon":367},"About","/about",[358,361,364],{"title":359,"_path":360},"Joel Barmettler - AI Engineer, Researcher, and Entrepreneur","/about/about-me",{"title":362,"_path":363},"What Drives Me - Research Focus and Philosophy on AI Systems","/about/what-drives-me",{"title":365,"_path":366},"Technical Skills and Expertise - AI, ML, Infrastructure, and Web Development","/about/skills","📁",{"title":369,"_path":370,"children":371,"icon":367},"Career","/career",[372,375,378,381],{"title":373,"_path":374},"Building the AI Business Area at bbv Software Services","/career/bbv",{"title":376,"_path":377},"PolygonSoftware: Building a tech company during university","/career/polygon-software",{"title":379,"_path":380},"Machine learning for semiconductor quality control at BESI","/career/besi",{"title":382,"_path":383},"Data engineering for cryptocurrency analytics at CoinPaper","/career/coinpaper",{"title":385,"_path":386,"children":387,"icon":367},"Research","/research",[388,391,394,397],{"title":389,"_path":390},"The Invisible Coalition Partner: How LLMs Vote When Democracy Gets Concrete","/research/invisible-coalition-partner",{"title":392,"_path":393},"ConceptFormer: Graph-native grounding of LLMs via latent concept injection","/research/masters-thesis",{"title":395,"_path":396},"Airspace auction simulator for urban drone traffic","/research/masters-project",{"title":398,"_path":399},"Physical sky rendering engine for appleseed","/research/bachelors-thesis",{"title":401,"_path":402,"children":403,"icon":367},"Projects","/projects",[404,407,408,411],{"title":405,"_path":406},"md-reheader: Restoring heading hierarchy in PDF-extracted markdown","/projects/md-reheader",{"title":8,"_path":4},{"title":409,"_path":410},"Slidev MCP: AI-powered presentation generation with shareable links","/projects/slidev-mcp",{"title":412,"_path":413},"Vue Docs MCP: Live Vue ecosystem documentation for AI assistants","/projects/vue-mcp",{"title":415,"_path":416,"children":417,"icon":367},"Podcast","/podcast",[418,421,424,427,430,433,436,439,442,445,448,451,454,457,460,463,466,469,472,475,478,481,484,487,490,493,496],{"title":419,"_path":420},"Measuring political bias in language models: systematic analysis using Swiss Smart Vote data","/podcast/political-bias-in-language-models",{"title":422,"_path":423},"DeepSeek R1: pure reinforcement learning for reasoning and why distillation changes everything","/podcast/deepseek-r1-reasoning",{"title":425,"_path":426},"DeepSeek V3: how mixture-of-experts and multi-token prediction enable $5.5M training runs","/podcast/deepseek-v3-architecture",{"title":428,"_path":429},"SRF Arena part 3: international regulation, student perspectives, and why the debate structure failed","/podcast/srf-arena-final-analysis",{"title":431,"_path":432},"SRF Arena part 2: the EU AI Act, nationalization demands, and Switzerland's supercomputer strategy","/podcast/srf-arena-regulation-debate",{"title":434,"_path":435},"Deconstructing the SRF Arena AI debate: deepfakes, Swiss GPT, and the job displacement argument","/podcast/srf-arena-ai-debate-analysis",{"title":437,"_path":438},"O3-mini: how a smaller model outperforms its predecessor at a fraction of the cost","/podcast/openai-o3-mini",{"title":440,"_path":441},"OpenAI o3: trading compute time for reasoning capability","/podcast/openai-o3",{"title":443,"_path":444},"ChatGPT o1: reasoning breakthroughs and emergent deception","/podcast/chatgpt-o1-manipulation",{"title":446,"_path":447},"When AI kills: autonomous weapons, drone swarms, and predictive policing","/podcast/when-ai-kills",{"title":449,"_path":450},"Google's AI pivot: 25% AI-generated code and 90% cost reduction","/podcast/google-ai-revolution",{"title":452,"_path":453},"Why AI projects fail: a practitioner's guide to implementation","/podcast/ai-project-implementation",{"title":455,"_path":456},"Deep learning explained: from embedding spaces to few-shot learning","/podcast/deep-learning-explained",{"title":458,"_path":459},"Vision AI: why language models need to see, and how Llama 3.2 gets there","/podcast/vision-ai",{"title":461,"_path":462},"BitNets and the road to AGI: on-device inference and Sam Altman's 1000-day prediction","/podcast/bitnets-and-agi",{"title":464,"_path":465},"OpenAI o1 benchmarks and AGI implications: IQ 120, coding breakthroughs, and what they mean","/podcast/openai-o1-technical-analysis",{"title":467,"_path":468},"OpenAI o1 and the mechanics of self-reflection: how 70,000 hidden tokens change inference","/podcast/openai-o1-self-reflection",{"title":470,"_path":471},"AI utopia 2035: when automation funds a renaissance in human agency (part 2 of 2)","/podcast/ai-utopia-2035",{"title":473,"_path":474},"AI dystopia 2035: when AI becomes the lifeblood of the economy (part 1 of 2)","/podcast/ai-dystopia-2035",{"title":476,"_path":477},"AI hype vs. reality: a technical assessment of where things actually stand","/podcast/ai-hype-vs-reality",{"title":479,"_path":480},"Open-source AI: the infrastructure behind the hype","/podcast/open-source-ai",{"title":482,"_path":483},"Is AI intelligent? Why the question matters less than you think","/podcast/is-ai-intelligent",{"title":485,"_path":486},"AI in education: why bans backfire and what actually needs to change","/podcast/ai-in-education",{"title":488,"_path":489},"Bias in AI systems: how 15 people shape the values of a billion-user product","/podcast/bias-in-ai-systems",{"title":491,"_path":492},"AI and the labor market: autonomous agents and the transformation of knowledge work","/podcast/ai-and-the-labor-market",{"title":494,"_path":495},"AI terminology explained: a technical guide beyond the hype","/podcast/ai-terminology-explained",{"title":497,"_path":498},"AI and democratic manipulation: from Cambridge Analytica to language models","/podcast/ai-and-democracy",{"title":500,"_path":501,"children":502,"icon":367},"Appearances","/appearances",[503,506,509,512,515,518,521,524,527,530,533,536,539,542],{"title":504,"_path":505},"AI trends 2025 and predictions for 2026: model convergence, integration, and sovereignty","/appearances/webinar-2025-rewind-2026-outlook",{"title":507,"_path":508},"Swiss AI Impact Forum 2025: live demos of the Swiss AI Hub","/appearances/swiss-ai-impact-forum-2025",{"title":510,"_path":511},"AI trends 2024 and predictions for 2025: a technical analysis","/appearances/webinar-2024-rewind-2025-outlook",{"title":513,"_path":514},"AI as a development partner: tools, techniques, and team integration","/appearances/webinar-ai-development-partner",{"title":516,"_path":517},"Swiss AI Impact Forum: Panel on the future of AI in Switzerland","/appearances/swiss-ai-impact-forum-2024",{"title":519,"_path":520},"AI in knowledge management: keynote at the SWICO event in Zurich","/appearances/swico",{"title":522,"_path":523},"Swiss AI Conference: hands-on workshop on AI agents in the enterprise","/appearances/swiss-ai-conference",{"title":525,"_path":526},"AI trends 2023: milestones and developments in artificial intelligence","/appearances/webinar-2023-rewind",{"title":528,"_path":529},"KI Revolution: AI first how a digital native thinks about generative AI","/appearances/bbv-ki-revolution",{"title":531,"_path":532},"AI agents: the future of enterprise automation","/appearances/netzwoche",{"title":534,"_path":535},"ChatGPT demystified: technical deep dive into large language models","/appearances/webinar-chatgpt-demystified",{"title":537,"_path":538},"Swarm intelligence and AI: the future of enterprise automation","/appearances/webinar-swarm-intelligence",{"title":540,"_path":541},"Polygon Software our journey to an innovative UZH tech startup","/appearances/readme-polygon",{"title":543,"_path":544},"UZH startup label for Polygon Software","/appearances/uzh-startup-label",1775513714541]