{"id":50454099,"url":"https://github.com/mizcausevic-dev/aeo-linter","last_synced_at":"2026-06-01T01:05:38.819Z","repository":{"id":358387693,"uuid":"1239919657","full_name":"mizcausevic-dev/aeo-linter","owner":"mizcausevic-dev","description":"Rust CLI for validating AEO manifests, entity-link quality, schema hygiene, and answer-surface readiness.","archived":false,"fork":false,"pushed_at":"2026-05-17T05:11:51.000Z","size":701,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-05-17T07:25:34.426Z","etag":null,"topics":["aeo","answer-engine-optimization","clap","cli","generative-engine-optimization","jsonld","linting","portfolio","rust","schema-org"],"latest_commit_sha":null,"homepage":"https://kineticgain.com/","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"agpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/mizcausevic-dev.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-05-15T15:23:14.000Z","updated_at":"2026-05-17T05:11:54.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/mizcausevic-dev/aeo-linter","commit_stats":null,"previous_names":["mizcausevic-dev/aeo-linter"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/mizcausevic-dev/aeo-linter","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mizcausevic-dev%2Faeo-linter","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mizcausevic-dev%2Faeo-linter/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mizcausevic-dev%2Faeo-linter/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mizcausevic-dev%2Faeo-linter/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/mizcausevic-dev","download_url":"https://codeload.github.com/mizcausevic-dev/aeo-linter/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mizcausevic-dev%2Faeo-linter/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33755379,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-05-31T02:00:06.040Z","response_time":95,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["aeo","answer-engine-optimization","clap","cli","generative-engine-optimization","jsonld","linting","portfolio","rust","schema-org"],"created_at":"2026-06-01T01:05:38.744Z","updated_at":"2026-06-01T01:05:38.798Z","avatar_url":"https://github.com/mizcausevic-dev.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"# AEO Linter\r\n\r\nRust CLI for **validating AEO manifests, entity-link quality, schema hygiene, answer-surface depth, and citation readiness**.\r\n\r\n\u003e **What this repo proves**\r\n\u003e\r\n\u003e AEO infrastructure gets much more trustworthy when manifests are linted for retrieval quality, source coverage, and policy posture before they get published.\r\n\r\n## Why this repo exists\r\n\r\nMost AEO documents can be syntactically valid while still being weak for real\r\nanswer-engine use:\r\n\r\n- `llm.txt` is present but stale\r\n- entity identity is too thin for confident citation\r\n- claims do not map cleanly to declared sources\r\n- Schema.org entities are partially orphaned\r\n- answer blocks are too shallow to support extraction\r\n- policy metadata is ambiguous about AI citation\r\n\r\n`aeo-linter` focuses on those gaps directly. It is a narrower tool than a full\r\nSDK or crawler: it exists to tell you whether a manifest is truly ready to\r\nsupport citation-friendly retrieval.\r\n\r\n## Screenshots\r\n\r\n### Ready Manifest\r\n\r\n![Ready Manifest](./screenshots/01-ready-manifest.png)\r\n\r\n### Problem Manifest\r\n\r\n![Problem Manifest](./screenshots/02-problem-manifest.png)\r\n\r\n### JSON Findings\r\n\r\n![JSON Findings](./screenshots/03-json-findings.png)\r\n\r\n### Rule Set\r\n\r\n![Rule Set](./screenshots/04-rule-set.png)\r\n\r\n## What it includes\r\n\r\n- Rust CLI built with `clap`\r\n- manifest linting for:\r\n  - `llm.txt` freshness\r\n  - entity linkage quality\r\n  - claim-to-source coverage\r\n  - Schema.org relationship hygiene\r\n  - answer-surface depth\r\n  - citation depth\r\n  - policy posture\r\n  - authoritative source freshness\r\n- text and JSON output modes\r\n- sample ready and problem manifests\r\n- real screenshot proof generated from command output\r\n- docs, changelog, tests, and CI\r\n\r\n## Local run\r\n\r\n```powershell\r\ncd aeo-linter\r\n$env:Path = \"$env:USERPROFILE\\.cargo\\bin;$env:Path\"\r\ncargo run -- lint .\\samples\\manifest-ready.json\r\n```\r\n\r\nAlso try:\r\n\r\n```powershell\r\ncargo run -- lint .\\samples\\manifest-problem.json\r\ncargo run -- lint .\\samples\\manifest-ready.json --format json\r\ncargo run -- explain\r\n```\r\n\r\n## Validation\r\n\r\n```powershell\r\ncd aeo-linter\r\n$env:Path = \"$env:USERPROFILE\\.cargo\\bin;$env:Path\"\r\ncargo test\r\ncargo build\r\npy -3.11 .\\scripts\\generate_screenshots.py\r\n```\r\n\r\n## Example text output\r\n\r\n```text\r\nREADY samples\\manifest-ready.json — score 100 / 100\r\nEntity:           Kinetic Gain\r\nCanonical URL:    https://kineticgain.com/aeo\r\nFindings:         0 errors / 0 warnings\r\n```\r\n\r\n## Example JSON output\r\n\r\n```json\r\n{\r\n  \"summary\": {\r\n    \"posture\": \"blocked\",\r\n    \"score\": 34\r\n  }\r\n}\r\n```\r\n\r\n## Architecture\r\n\r\n```mermaid\r\nflowchart LR\r\n  A[\"Manifest JSON\"] --\u003e B[\"Rust parser\"]\r\n  B --\u003e C[\"Rule engine\"]\r\n  C --\u003e D[\"Text report\"]\r\n  C --\u003e E[\"JSON report\"]\r\n  C --\u003e F[\"Proof screenshots\"]\r\n```\r\n\r\nMore detail lives in [docs/architecture.md](./docs/architecture.md).\r\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmizcausevic-dev%2Faeo-linter","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmizcausevic-dev%2Faeo-linter","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmizcausevic-dev%2Faeo-linter/lists"}