Skip to content
Community Documentation: This documentation is provided as-is and may contain errors or become outdated. Always verify information against the actual implementation and test thoroughly before production use.

@25xcodes/llmfeed-action

GitHub Action for automated feed validation in CI/CD pipelines.

Format Support

FormatStatus
LLMFeed JSON (.json)✅ Fully Supported
llm.txt (.txt)🚧 Coming Soon

Current Status

The GitHub Action validates LLMFeed JSON files. Support for llm.txt validation is planned.

Features

  • Automatic Validation - Validate feeds on every push and PR
  • 🔐 Signature Verification - Verify cryptographic signatures
  • 📊 Detailed Reports - Upload validation reports as artifacts
  • ⚙️ Zero Config - Works out of the box with sensible defaults
  • 🎯 Flexible Targeting - Validate specific files or directories

Quick Start

yaml
# .github/workflows/validate-feed.yml
name: Validate LLMFeed

on: [push, pull_request]

jobs:
  validate:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      
      - name: Validate Feed
        uses: 25xcodes/llmfeed-action@v1
        with:
          feed-path: './llmfeed.json'

Multiple Formats

If you serve both llmfeed.json and llm.txt, point the action to your JSON file for full validation support.

Inputs

InputRequiredDefaultDescription
feed-pathYes-Path to feed file or directory
fail-on-errorNotrueFail the workflow on validation errors
verify-signatureNotrueVerify cryptographic signatures
upload-reportNotrueUpload validation report as artifact
report-formatNojsonReport format: json, html, or markdown

Examples

Basic Validation

yaml
- uses: 25xcodes/llmfeed-action@v1
  with:
    feed-path: './llmfeed.json'

Multiple Feeds

yaml
- uses: 25xcodes/llmfeed-action@v1
  with:
    feed-path: './feeds/'  # Validates all .json files

Continue on Error

yaml
- uses: 25xcodes/llmfeed-action@v1
  with:
    feed-path: './llm.txt'
    fail-on-error: false

Skip Signature Verification

yaml
- uses: 25xcodes/llmfeed-action@v1
  with:
    feed-path: './llm.txt'
    verify-signature: false

HTML Report

yaml
- uses: 25xcodes/llmfeed-action@v1
  with:
    feed-path: './llm.txt'
    report-format: html

Complete Workflow

yaml
name: LLMFeed CI

on:
  push:
    branches: [main]
    paths:
      - 'llmfeed.json'
      - '.well-known/llmfeed.json'
  pull_request:
    branches: [main]
    paths:
      - 'llmfeed.json'
      - '.well-known/llmfeed.json'

jobs:
  validate:
    runs-on: ubuntu-latest
    
    steps:
      - name: Checkout
        uses: actions/checkout@v4

      - name: Validate Feed
        uses: 25xcodes/llmfeed-action@v1
        with:
          feed-path: './llmfeed.json'
          fail-on-error: true
          verify-signature: true
          upload-report: true
          report-format: json

      - name: Comment on PR
        if: github.event_name == 'pull_request'
        uses: actions/github-script@v7
        with:
          script: |
            const fs = require('fs');
            const report = JSON.parse(fs.readFileSync('./llmfeed-report.json'));
            
            const status = report.valid ? '✅ Valid' : '❌ Invalid';
            const body = `## LLMFeed Validation ${status}\n\n` +
              `- Structure: ${report.structureValid ? '✅' : '❌'}\n` +
              `- Signature: ${report.signatureValid ? '✅' : '❌'}\n`;
            
            github.rest.issues.createComment({
              ...context.repo,
              issue_number: context.issue.number,
              body
            });

Outputs

OutputDescription
validWhether the feed is valid (true/false)
structure-validWhether the structure is valid
signature-validWhether the signature is valid
report-pathPath to the generated report

Using Outputs

yaml
- name: Validate Feed
  id: validate
  uses: 25xcodes/llmfeed-action@v1
  with:
    feed-path: './llm.txt'

- name: Check Result
  run: |
    if [ "${{ steps.validate.outputs.valid }}" == "true" ]; then
      echo "Feed is valid!"
    else
      echo "Feed validation failed"
    fi

Report Artifacts

When upload-report is enabled, the validation report is uploaded as a workflow artifact:

  1. Navigate to the workflow run
  2. Scroll to "Artifacts"
  3. Download llmfeed-validation-report

Pre-Release Validation

Validate feeds before publishing releases:

yaml
name: Pre-Release Check

on:
  release:
    types: [created]

jobs:
  validate:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      
      - name: Validate Feed
        uses: 25xcodes/llmfeed-action@v1
        with:
          feed-path: './.well-known/llmfeed.json'
          fail-on-error: true
          verify-signature: true

Local Testing

Test the action locally before pushing:

bash
# Install dependencies
npm install @25xcodes/llmfeed-validator

# Run validation
npx llmfeed-validate ./llm.txt

Troubleshooting

"Feed not found" Error

Ensure the feed path is relative to the repository root:

yaml
# ✅ Correct
feed-path: './llm.txt'
feed-path: './.well-known/llm.txt'

# ❌ Incorrect
feed-path: '/llm.txt'
feed-path: 'llm.txt'  # Missing ./

"Signature verification failed"

  1. Ensure the feed is signed correctly
  2. Check that the public key in the feed matches your signing key
  3. Verify the signed blocks match the feed content

Action Timeout

For large feeds or slow networks:

yaml
- uses: 25xcodes/llmfeed-action@v1
  timeout-minutes: 5
  with:
    feed-path: './llm.txt'

Community documentation provided as-is. Not official guidance. Verify before production use.