Skip to main content

new-doc

Create Pulumi documentation with proper frontmatter and menu structure.

معلومات المصدر

المستودع
pulumi/docs
آخر نشاط في المصدر
١٨ سبتمبر ٢٠٢٦ في ٢٠:٠٥
لغة SKILL.md المكتشفة
الإنجليزية
النجوم
١٧٩
التفرعات
٢٧٠

خيارات التثبيت

يُحدَّد Prompt الذي يراجع المصدر أولًا بشكل افتراضي. يمكنك التبديل إلى أمر مباشر أو تنزيل نسخة محلية.

مراجعة ملفات المصدر

اقرأ SKILL.md وأي ملفات مرافقة يعرضها SkillsMP قبل أن تقرر التثبيت.

مستكشف الملفات
8 ملفات

عرض SKILL.md

SKILL.md
تعليمات المصدر · معاينة للقراءة فقط
name
new-doc
description
Create Pulumi documentation with proper frontmatter and menu structure.
# new-doc Create documentation pages with proper frontmatter, menu structure, and SEO optimization. ## Core Principles **CRITICAL**: Complete all 7 steps in sequence. Display progress as **[Step X/7]** before each step. **Important**: - **Always display all 7 steps**: Even when skipping a step, display it with an explanation (e.g., "[Step 2/7] Skipped - using suggested location from Step 1") - **Minimize open-ended questions**: Use AskUserQuestion with prepopulated suggestions for nearly all inputs. Always provide smart defaults based on context. - **Store decisions**: Track choices to avoid re-asking - **Check for existing docs first**: Prevent duplication ## Workflow Overview 1. **[Step 1/7]** Gather context, check existing docs, suggest page type/location 2. **[Step 2/7]** Confirm suggestions or navigate manually 3. **[Step 3/7]** Interactive directory navigation (if needed) 4. **[Step 4/7]** Gather content details (title, meta_desc, etc.) 5. **[Step 5/7]** Calculate menu weight 6. **[Step 6/7]** Generate menu metadata (identifier, parent; meta_image optional — generated if omitted) 7. **[Step 7/7]** Create file and validate ## Steps ### [Step 1/7] Gather Context and Check Existing Docs **Ask**: What are you documenting? **Check for existing docs** using Grep with key terms from user's description: ```bash # Extract 2-3 key terms from user's description and search grep -ri "key_terms" /workspaces/src/pulumi/docs/content/docs/ --include="*.md" | head -10 ``` **If existing docs found:** Analyze the results and categorize: - **Nearly identical topic**: Existing page covers the same concept - **Related but distinct**: Existing pages cover adjacent/related topics Then use AskUserQuestion: ```text # If nearly identical: Question: "I found existing documentation on this topic at {path}. What would you like to do?" Options: - "Update existing page (Recommended)" - "Create new page anyway" # If related but distinct: Question: "I found related documentation at {path1}, {path2}. What would you like to do?" Options: - "Create new page (Recommended)" - "Update one of the existing pages" ``` **Actions based on response:** - If update: Use Read to open the existing file, present to user, exit workflow - If create: Continue with new page creation **If not found**: Display "No existing documentation found. Proceeding with new page creation." and continue. **Suggest based on keywords** - See `new-doc:references:directory-hints` for complete keyword mapping. **Present suggestions via AskUserQuestion:** ```text Question: "I've analyzed your description. How would you like to proceed?" Options: - "Use suggested location (Recommended)" - "Choose different location" - "Let me refine my description" ``` Store choice. If "Use suggested location", skip to Step 4. Don't re-ask page type. ### [Step 2/7] Confirm or Navigate **Always display this step**, even if skipping. Based on the user's response to the Step 1 question: - **"Use suggested location"**: - Display: "[Step 2/7] Confirmed - using suggested location: /docs/{path}" - Display: "[Step 3/7] Skipped - location already determined" - Store the suggested path and page type - Skip to Step 4 to gather content details - **"Choose different location"**: - Display: "[Step 2/7] User chose different location, proceeding to interactive navigation" - Proceed to Step 3 for interactive navigation - **"Let me refine my description"**: - Display: "[Step 2/7] User refining description" - Ask user for clarification, then re-run Step 1 analysis **Important**: Page type (regular vs index) is already determined by this point. Don't ask again. ### [Step 3/7] Interactive Navigation (if needed) **CRITICAL**: Display locations by menu weight (NOT alphabetically) to match left-nav order. ```bash bash .claude/commands/new-doc/scripts/list-directories.sh {path} ``` **Display format:** ```text Current location: docs > Infrastructure as Code Available subsections: 1. Get Started (get-started) 2. Guides (guides) 3. Concepts (concepts) ... ``` **Then ask via AskUserQuestion:** ```text Question: "Where should this page be placed?" Options: - "1. Get Started (get-started)" - "2. Guides (guides)" - "3. Concepts (concepts)" - "Place it here in current directory" - "Enter path manually" - "Go up one level" ``` **Navigation flow:** - If number selected: Navigate into that subdirectory, repeat - If "Place it here": Stop navigation - Regular pages: Create `{slug}.md` in current directory - Index pages: Create `_index.md` if it doesn't exist - If "Enter path manually": Prompt for full path, validate, and use it - If "Go up": Move to parent directory, repeat (handle root gracefully) Continue navigation until placement is determined. ### [Step 4/7] Gather Content Details Gather all required metadata using AskUserQuestion with smart suggestions. **For regular pages**, follow all patterns in `new-doc:references:questions-regular`: 1. Title (with sentence-case suggestion) 2. Title tag (with "| Pulumi Docs" format) 3. Meta description (50-160 chars validation) 4. Filename (kebab-case validation) **For index pages**, follow patterns in `new-doc:references:questions-index`: - Part 1: Basic metadata (8 fields with smart suggestions) - Title, Link title, H1, Meta description, Description HTML - Primary button (label + link) - Secondary button (optional) - Part 2: Sections array (iterative builder with card patterns) - Section type, heading, cards - Button cards, logo label cards, or flat text - Continue loop for multiple sections **Ask about content generation (regular pages only):** ```text Question: "Should I generate a rough draft of the content?" Options: - "No, just create a stub with instructions (Recommended)" - "Yes, generate a rough draft" ``` Store the choice. If "Yes", prepare to generate content in Step 7. If "No", use default stub template. Then proceed to Step 4b for index pages, or Step 5 for regular pages. ### [Step 4b/7] Build Sections Array (Index Pages) For index pages only, build the sections array iteratively following the complete patterns in `new-doc:references:questions-index` (Part 2: sections array builder). **For each section:** 1. Select section type (button-cards, cards-logo-label-link, or flat) 2. Gather section heading 3. If button-cards or cards-logo-label-link: - Determine card count (2-4 typical) - For each card: gather emoji/icon, heading, description, link 4. If flat: gather description paragraph 5. Ask if user wants to add another section **Validation**: Ensure at least one section exists before proceeding to Step 5. ### [Step 5/7] Calculate Menu Weight **Display**: "[Step 5/7] Calculating menu weight..." Find the maximum weight in the target directory: ```bash # Find max weight in target directory find {path} -name "*.md" -maxdepth 1 -exec grep -h "weight:" {} \; 2>/dev/null | grep -oE '[0-9]+' | sort -n | tail -1 ``` **Logic:** - No pages: suggest 10 - Pages exist: max weight rounded up to next multiple of 10 - Index pages: top-level suggest 1, subsection suggest 10+ **Display result**: "Calculated weight: {weight}" ### [Step 6/7] Generate Menu Metadata **Display**: "[Step 6/7] Generating menu metadata..." **Identifier**: `{section}-{subsection}-{slug}` or `{section}-{subsection}-home` for index pages **Check uniqueness:** ```bash grep -rh "identifier:" /workspaces/src/pulumi/docs/content/docs/{section}/ | grep "{identifier}" ``` If conflict, append `-2`, `-3`, etc. **Parent**: - Regular pages: identifier of _index.md in same directory - Top-level index: no parent - Subsection index: identifier of parent directory's _index.md **Meta image**: Optional. Leave `meta_image` blank and an on-brand social card is generated at build time. Only set it to override with a custom image (e.g. the cloud-specific docs images). **For override options**: See `new-doc:references:meta-images` **Display result**: "Menu identifier: {identifier}, Parent: {parent}, Meta image: {meta_image or 'generated'}" ### [Step 7/7] Create File and Validate **Display**: "[Step 7/7] Creating file and validating..." Run validation checks from `new-doc:references:validation`: - File doesn't exist - Parent identifier exists - Menu identifier unique - Weight reasonable (0 < w < 1000) - All required frontmatter present - YAML valid - Kebab-case filename (regular pages) - Meta desc 50-160 chars - Links valid (start with `/docs/` or external) - Verify the user is not committing to `master` directly (if so, warn them) Create file using templates from `new-doc:references:frontmatter`: - **Regular pages**: Use regular page template with title, title_tag, meta_desc, menu structure - **If rough draft requested**: Generate initial content sections based on the user's description and context - **If stub only** (default): Use this template after frontmatter: ```markdown ## Overview <!-- TODO: Add overview of this topic --> ## Prerequisites <!-- TODO: List any prerequisites or requirements --> ## Next steps <!-- TODO: Add links to related documentation or next steps --> ``` - **Index pages**: Use index page template with sections array, link_buttons, docs_home flags (no additional content needed) Display success output as defined in `new-doc:references:validation`: ```text ✅ Created at /docs/{path}/{filename}.md ✅ Identifier: {identifier} (unique) ✅ Parent: {parent} (validated) ✅ Weight: {weight} ✅ Meta desc: {length} chars Preview: http://localhost:1313/docs/{path}/ Next: Write content, run /docs-review, run make lint ``` ## Error Handling For complete error handling strategies, see `new-doc:references:validation` (Error Handling section). Common scenarios: - File exists: Suggest alternatives or ask to overwrite - Invalid filename: Auto-suggest kebab-case correction - Missing parent: Warn about navigation issues, offer to create - Duplicate identifier: Auto-append `-2`, `-3` until unique - Empty sections (index pages): Require at least one section before proceeding
عرض على GitHub