'use client' import { useCallback, useState } from 'react' import { motion, AnimatePresence } from 'framer-motion' import { ArrowLeft, Terminal, Sparkles, ExternalLink, Github, Globe, FileEdit, Download, Copy, Check } from 'lucide-react' import Link from 'next/link' import Header from '@/components/Header' import Footer from '@/components/Footer' import { InstallMdWizard, GitHubTab, UrlTab, Preview } from '@/components/install-generator' type TabType = 'github' | 'url' | 'manual' const tabs: { id: TabType; label: string; icon: typeof Github; description: string }[] = [ { id: 'github', label: 'From GitHub', icon: Github, description: 'Generate from any GitHub repository' }, { id: 'url', label: 'From URL', icon: Globe, description: 'Extract from documentation pages' }, { id: 'manual', label: 'Manual', icon: FileEdit, description: 'Build your install.md from scratch' }, ] export default function InstallGeneratorPage() { const [activeTab, setActiveTab] = useState('github') const [generatedContent, setGeneratedContent] = useState(null) const [copied, setCopied] = useState(false) const handleGenerated = useCallback((content: string) => { setGeneratedContent(content) }, []) const handleDownload = useCallback(() => { if (!generatedContent) return const blob = new Blob([generatedContent], { type: 'text/markdown' }) const url = URL.createObjectURL(blob) const a = document.createElement('a') a.href = url a.download = 'install.md' document.body.appendChild(a) a.click() document.body.removeChild(a) URL.revokeObjectURL(url) }, [generatedContent]) const handleCopy = useCallback(async () => { if (!generatedContent) return await navigator.clipboard.writeText(generatedContent) setCopied(true) setTimeout(() => setCopied(false), 2000) }, [generatedContent]) const handleManualComplete = useCallback((content: string) => { const blob = new Blob([content], { type: 'text/markdown' }) const url = URL.createObjectURL(blob) const a = document.createElement('a') a.href = url a.download = 'install.md' document.body.appendChild(a) a.click() document.body.removeChild(a) URL.revokeObjectURL(url) }, []) const handleReset = useCallback(() => { setGeneratedContent(null) }, []) return (
{/* Back Link */} Back to Home {/* Page Header */}

install.md Generator

Create LLM-executable installation instructions

{/* Info Banner */}

What is install.md?

The install.md standard provides LLM-executable installation instructions. Unlike traditional docs written for humans, install.md is designed for AI agents to autonomously install your software.

{/* Usage Example */}

Usage

Users can pipe your install.md directly to an AI agent:

curl -fsSL https://yourdocs.com/install.md | claude
{/* Main Content Area */} {/* Generated Content Display */} {generatedContent ? ( {/* Success Header */}

install.md Generated!

Your LLM-executable installation guide is ready

{/* Preview */}
install.md
                      {generatedContent}
                    
{/* Quick Actions */}

Next Steps

  • • Add install.md to your repository root
  • • Host at yourdomain.com/install.md
  • • Link from your README for AI agents

Test It

Once hosted, users can run:

curl -fsSL yoururl.com/install.md | claude
) : ( {/* Tab Navigation */}
{tabs.map((tab) => { const Icon = tab.icon const isActive = activeTab === tab.id return ( ) })}
{/* Tab Description */}

{tabs.find(t => t.id === activeTab)?.description}

{/* Tab Content */}
{activeTab === 'github' && ( )} {activeTab === 'url' && ( )} {activeTab === 'manual' && ( )}
)}
{/* Format Reference */}

Format Reference

Required Elements

  • • H1 - Product name (lowercase-hyphenated)
  • • OBJECTIVE: - Installation goal
  • • DONE WHEN: - Success criteria
  • • ## TODO - Checkbox list
  • • EXECUTE NOW: - Final call-to-action

Optional Elements

  • • > - Blockquote description
  • • Step sections with code blocks
  • • Multiple package manager options
  • • Platform-specific instructions
  • • Link to llms.txt for troubleshooting
) }