llms.txt Manager Skill
Purpose
Manage llms.txt and my-blog.json files across the project, ensuring AI systems have comprehensive, up-to-date content catalogs. Automates synchronization between blog content (query-index.json) and llms.txt files.
When to Use
This skill activates when:
- •Creating or editing llms.txt files
- •Creating or editing my-blog.json files
- •User mentions updating blog catalogs
- •User wants to synchronize content indexes
- •Working with query-index.json data
- •Creating folder-specific content indexes
Core Concepts
File Structure
llms.txt - AI-readable content catalog
- •Location: Root or folder-specific (e.g.,
blogs/ddt/integrations/llms.txt) - •Purpose: Comprehensive list of content for AI systems
- •Format: Markdown with metadata and categorized links
- •Source: URLs from my-blog.json, text/descriptions from existing llms.txt
my-blog.json - Structured blog data
- •Location: Same directory as llms.txt
- •Purpose: Machine-readable catalog of blog posts
- •Format: JSON with categories, posts, metadata
- •Source: query-index.json filtered by folder context
query-index.json - Master content index
- •Location: https://allabout.network/query-index.json
- •Purpose: Single source of truth for all site content
- •Contains: All pages with URLs, titles, descriptions, lastModified dates
- •Updated: Automatically by the site
Folder Context
When llms.txt is in a subfolder (e.g., blogs/ddt/integrations/):
- •The final folder name indicates intent/scope
- •my-blog.json should exist in same folder
- •Content should be filtered to relevant posts only
- •Example:
/integrations/folder focuses on EDS integration tutorials
Update Logic
lastModified Date Comparison:
- •Check lastModified date in llms.txt metadata
- •Fetch query-index.json
- •Filter entries with lastModified > llms.txt date
- •Add only new/updated content
File Templates
llms.txt Template
# [Project/Section Title] [Brief description of what this content covers] **Last updated:** [Month Year] **Authors:** [Author Names] ## [Category Name] ### [Subcategory Name] - [Title](URL): Description - [Title](URL): Description ## Version Information **Version:** [version] (Updated: [date]) **Comprehensive catalog:** [count] posts across [n] categories **Categories:** [List with counts]
my-blog.json Template
{
"metadata": {
"last-updated": "YYYY-MM-DD",
"scope": "folder-name-or-site-wide"
},
"mostVisited": [
{
"title": "Popular Post Title",
"url": "/path/to/post",
"description": "Post description"
}
],
"categoryMap": [
{
"id": "category-id",
"name": "Display Name",
"count": 0,
"description": "Category description"
}
],
"categories": [
{
"id": "category-id",
"name": "Display Name",
"posts": [
{
"title": "Post Title",
"url": "/path/to/post",
"description": "Post description",
"lastModified": "YYYY-MM-DD"
}
]
}
]
}
IMPORTANT: Do NOT include a latestPosts array in my-blog.json files. The view-myblog block automatically generates it from the 3 most recent posts. Including it manually requires maintenance and defeats the purpose of auto-generation.
Key Concepts
Workflows
Creating New llms.txt
Automatic Creation: The sync script now automatically creates llms.txt files if they don't exist:
- •
Detects Missing Files
- •Finds all my-blog.json files
- •Checks for paired llms.txt in same directory
- •Creates missing files automatically
- •
Builds Complete Structure
- •Creates header with title, description, authors
- •Builds organized sections from my-blog.json categories
- •Uses folder name for context (e.g., "ai" → "Ai Resources")
- •
Populates Content
- •Fetches from query-index.json
- •Filters by folder context if applicable
- •Formats posts with titles, URLs, descriptions
- •Updates metadata to current date
Manual Creation: If you need to manually create one:
- •
Determine Scope
- •Root llms.txt: Site-wide catalog
- •Folder llms.txt: Section-specific (use folder name for context)
- •
Check for my-blog.json
- •Look in same directory as llms.txt
- •If missing, create one first
- •Filter query-index.json by folder path if folder-specific
- •
Structure Content
- •Use folder name to determine focus (e.g.,
/integrations/= EDS integrations) - •Organize with subsections for better scannability
- •Include all relevant posts from my-blog.json
- •Add descriptive text for context
- •Use folder name to determine focus (e.g.,
- •
Add Metadata
- •Version number
- •Last updated date
- •Category counts
- •Access guidelines (optional)
Updating Existing llms.txt
- •
Read Current File
- •Extract last-updated date from metadata
- •Note current structure and organization
- •
Fetch New Content
- •Load query-index.json
- •Filter by lastModified > current date
- •Filter by folder context if applicable
- •
Merge New Posts
- •Add new posts to organized sections
- •Update version number and date
- •Maintain text patterns and formatting
- •
Update my-blog.json
- •Add new posts to appropriate categories
- •Update metadata.last-updated
- •Increment category counts
Creating my-blog.json from query-index.json
Automatic Creation: The sync script now automatically creates my-blog.json files if they don't exist:
- •
Detects Missing Files
- •Finds all llms.txt files
- •Checks for paired my-blog.json in same directory
- •Creates missing files automatically
- •
Initializes Structure
- •Creates empty categoryMap with all 6 standard categories
- •Sets metadata with scope (folder name or 'site-wide')
- •Sets last-updated to 2020-01-01 (extreme past, will populate on next update)
- •
Populates Content
- •Fetches from query-index.json
- •Filters by folder context if applicable
- •Categorizes posts automatically
- •Updates metadata to current date
Manual Creation: If you need to manually create one:
- •
Fetch Data
bashcurl https://allabout.network/query-index.json
- •
Filter by Context
- •Root my-blog.json: All content
- •Folder my-blog.json: Filter by path prefix
- •
Categorize Posts
- •Group by topic/category
- •Count posts per category
- •Create categoryMap
- •
Structure Output
- •metadata section with date and scope
- •categoryMap with counts
- •categories with full post arrays
Command Usage
/update-llms
Finds all llms.txt files in the project and updates them with new content:
/update-llms
Or use the script directly:
node scripts/sync-blog-content.js --target=llms
Process:
- •Find all existing llms.txt files:
**/*llms.txt - •Find all my-blog.json files without paired llms.txt
- •For each file (existing or new):
- •If new: Create complete structure from my-blog.json
- •If existing: Read last-updated date from metadata
- •Determine folder context (site-wide or folder-specific)
- •Fetch query-index.json from production
- •Filter by context (folder path matching)
- •Filter new posts (lastModified > last-updated)
- •Add new posts to organized sections (if any)
- •Update version date and metadata
/update-my-blog
Finds all my-blog.json files and updates them with latest content:
/update-my-blog
Process:
- •Find all my-blog.json files:
**/*my-blog.json - •For each file:
- •Read current content and last-updated
- •Determine folder context
- •Fetch query-index.json
- •Filter by context and date
- •Update categories and counts
- •Update metadata
Best Practices
Content Organization
✅ Use subsections - Break large categories into logical groups ✅ Consistent formatting - Use same pattern throughout ✅ Rich descriptions - Include full descriptions from source ✅ Clear hierarchy - Main section → Subsection → Posts ✅ Cross-references - Link between related llms.txt files
URL Management
✅ Source of truth: my-blog.json for URLs ✅ Text source: Existing llms.txt for descriptions/formatting ✅ New content: query-index.json for latest posts ✅ Relative URLs: Use relative paths in my-blog.json ✅ Absolute URLs: Use full URLs in llms.txt
Date Handling
✅ ISO format: YYYY-MM-DD for dates ✅ Comparison: Filter by lastModified > last-updated ✅ Display format: "Month Year" in llms.txt header ✅ Update always: Change date when content changes
Folder Context
✅ Use folder name: Final path segment indicates scope ✅ Filter appropriately: Only relevant content for folder llms.txt ✅ Paired files: Keep my-blog.json with llms.txt ✅ Independent updates: Each folder maintains own files
Examples
Example 1: Root llms.txt
Location: /llms.txt
Scope: Entire site
my-blog.json: /my-blog.json (all content)
Categories: All site categories
Example 2: Integrations llms.txt
Location: /blogs/ddt/integrations/llms.txt
Scope: EDS integration tutorials only
my-blog.json: /blogs/ddt/integrations/my-blog.json
Categories: Filtered to integration-related posts
Example 3: AI Topics llms.txt
Location: /blogs/ddt/ai/llms.txt
Scope: AI/LLM content only
my-blog.json: /blogs/ddt/ai/my-blog.json
Categories: Filtered to AI-related posts
Troubleshooting
my-blog.json Missing
Solution: Create it from query-index.json filtered by folder context
Dates Not Comparing
Solution: Ensure ISO format (YYYY-MM-DD) and proper parsing
Wrong Content Scope
Solution: Check folder context and filter query-index.json properly
Duplicate Entries Within Categories
Solution: Deduplicate by URL before adding to categories
Related Files
- •
.claude/commands/update-llms.md- Slash command for updating llms.txt - •
.claude/commands/update-my-blog.md- Slash command for updating my-blog.json - •
scripts/sync-blog-content.js- Utility script for bulk updates (no dependencies)
Version
Skill Version: 1.0 Last Updated: November 2025 Line Count: < 500 ✅